[svn:parrot] r46302 - in branches/ops_pct: . compilers/data_json compilers/imcc compilers/json compilers/ncigen compilers/nqp compilers/opsc compilers/pct compilers/pct/src/PAST compilers/pct/src/PCT compilers/pct/src/POST compilers/pge compilers/pge/PGE compilers/pirc compilers/pirc/src compilers/tge config/auto config/auto/attributes config/auto/cgoto config/auto/crypto config/auto/gdbm config/auto/sizes config/auto/zlib config/gen config/gen/config_h config/gen/config_pm config/gen/crypto config/gen/makefiles config/gen/platform config/gen/platform/ansi config/gen/platform/generic config/gen/platform/win32 config/init config/init/hints config/inter docs docs/book/draft docs/book/pct docs/book/pir docs/dev docs/pdds docs/pdds/draft docs/pmc docs/project editor examples/benchmarks examples/c examples/config/file examples/embed examples/japh examples/json examples/languages/abc examples/languages/squaak examples/languages/squaak/src/parser examples/library examples/n ci examples/pge examples/pir examples/pir/befunge examples/sdl examples/shootout examples/tutorial ext/Parrot-Embed ext/Parrot-Embed/lib/Parrot ext/Parrot-Embed/t ext/SQLite3 ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot include/parrot/oplib lib/Parrot lib/Parrot/Configure/Options lib/Parrot/Configure/Options/Conf lib/Parrot/Configure/Options/Test lib/Parrot/Configure/Step lib/Parrot/Docs/Section lib/Parrot/Harness lib/Parrot/OpTrans lib/Parrot/Ops2c lib/Parrot/Ops2pm lib/Parrot/Pmc2c lib/Parrot/Pmc2c/PMC ports/cpan ports/cygwin ports/debian ports/debian/patches ports/fedora ports/fedora/2.3.0 ports/mandriva ports/mandriva/2.3.0 ports/suse ports/suse/2.2.0 ports/ubuntu runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Archive runtime/parrot/library/CGI runtime/parrot/library/Config runtime/parrot/library/Getopt runtime/parrot/library/HTTP runtime/parrot/library/MIME runtime/parrot/library/Math runtime/parrot/library/ProfTest runtime/parrot/library/Stre am runtime/parrot/library/String runtime/parrot/library/TAP runtime/parrot/library/Test runtime/parrot/library/Test/Builder src src/call src/dynoplibs src/dynpmc src/gc src/interp src/io src/nci src/ops src/packfile src/pmc src/runcore src/string src/string/charset src/string/encoding t t/codingstd t/compilers/data_json t/compilers/imcc/imcpasm t/compilers/imcc/reg t/compilers/imcc/syn t/compilers/json t/compilers/pct t/compilers/pge t/compilers/pge/p5regex t/compilers/pge/perl6regex t/compilers/tge t/configure/testlib t/distro t/dynoplibs t/dynpmc t/examples t/include t/library t/native_pbc t/oo t/op t/pharness t/pir t/pmc t/pmc/testlib t/profiling t/run t/src t/steps/auto t/steps/gen t/steps/init t/steps/init/hints t/steps/inter t/tools/install/testlib t/tools/ops2cutils t/tools/ops2pm tools/build tools/dev tools/docs tools/install tools/util
cotto at svn.parrot.org
cotto at svn.parrot.org
Wed May 5 08:45:57 UTC 2010
Author: cotto
Date: Wed May 5 08:45:29 2010
New Revision: 46302
URL: https://trac.parrot.org/parrot/changeset/46302
Log:
sync branch with trunk, hopefully for real this time
Added:
branches/ops_pct/.gitignore
- copied unchanged from r46301, trunk/.gitignore
branches/ops_pct/config/auto/zlib/
- copied from r46301, trunk/config/auto/zlib/
branches/ops_pct/config/auto/zlib.pm
- copied unchanged from r46301, trunk/config/auto/zlib.pm
branches/ops_pct/config/gen/config_pm/config_lib_pir.in
- copied unchanged from r46301, trunk/config/gen/config_pm/config_lib_pir.in
branches/ops_pct/examples/benchmarks/stress_strings.pir
- copied unchanged from r46301, trunk/examples/benchmarks/stress_strings.pir
branches/ops_pct/include/parrot/platform_interface.h
- copied unchanged from r46301, trunk/include/parrot/platform_interface.h
branches/ops_pct/ports/fedora/2.3.0/
- copied from r46301, trunk/ports/fedora/2.3.0/
branches/ops_pct/ports/mandriva/2.3.0/
- copied from r46301, trunk/ports/mandriva/2.3.0/
branches/ops_pct/ports/suse/2.2.0/
- copied from r46301, trunk/ports/suse/2.2.0/
branches/ops_pct/runtime/parrot/library/Archive/ (props changed)
- copied from r46301, trunk/runtime/parrot/library/Archive/
branches/ops_pct/runtime/parrot/library/ProfTest/ (props changed)
- copied from r46301, trunk/runtime/parrot/library/ProfTest/
branches/ops_pct/runtime/parrot/library/TAP/ (props changed)
- copied from r46301, trunk/runtime/parrot/library/TAP/
branches/ops_pct/runtime/parrot/library/osutils.pir
- copied unchanged from r46301, trunk/runtime/parrot/library/osutils.pir
branches/ops_pct/src/dynpmc/Defines.in
- copied unchanged from r46301, trunk/src/dynpmc/Defines.in
branches/ops_pct/src/dynpmc/Rules.in
- copied unchanged from r46301, trunk/src/dynpmc/Rules.in
branches/ops_pct/src/dynpmc/file.pmc
- copied unchanged from r46301, trunk/src/dynpmc/file.pmc
branches/ops_pct/src/dynpmc/gziphandle.pmc
- copied unchanged from r46301, trunk/src/dynpmc/gziphandle.pmc
branches/ops_pct/src/dynpmc/os.pmc
- copied unchanged from r46301, trunk/src/dynpmc/os.pmc
branches/ops_pct/src/pmc/imageiostrings.pmc
- copied unchanged from r46301, trunk/src/pmc/imageiostrings.pmc
branches/ops_pct/src/pmc/packfiledebug.pmc
- copied unchanged from r46301, trunk/src/pmc/packfiledebug.pmc
branches/ops_pct/src/pmc/threadinterpreter.pmc
- copied unchanged from r46301, trunk/src/pmc/threadinterpreter.pmc
branches/ops_pct/t/compilers/data_json/ (props changed)
- copied from r46301, trunk/t/compilers/data_json/
branches/ops_pct/t/dynpmc/file.t
- copied unchanged from r46301, trunk/t/dynpmc/file.t
branches/ops_pct/t/dynpmc/gziphandle.t
- copied unchanged from r46301, trunk/t/dynpmc/gziphandle.t
branches/ops_pct/t/dynpmc/os.t
- copied unchanged from r46301, trunk/t/dynpmc/os.t
branches/ops_pct/t/harness.pir
- copied unchanged from r46301, trunk/t/harness.pir
branches/ops_pct/t/library/archive_tar.t
- copied unchanged from r46301, trunk/t/library/archive_tar.t
branches/ops_pct/t/library/osutils.t
- copied unchanged from r46301, trunk/t/library/osutils.t
branches/ops_pct/t/library/tap_parser.t
- copied unchanged from r46301, trunk/t/library/tap_parser.t
branches/ops_pct/t/pmc/imageiostrings.t
- copied unchanged from r46301, trunk/t/pmc/imageiostrings.t
branches/ops_pct/t/pmc/namespace-subs.t
- copied unchanged from r46301, trunk/t/pmc/namespace-subs.t
branches/ops_pct/t/profiling/
- copied from r46301, trunk/t/profiling/
branches/ops_pct/t/steps/auto/zlib-01.t
- copied unchanged from r46301, trunk/t/steps/auto/zlib-01.t
branches/ops_pct/tools/dev/faces.pl
- copied unchanged from r46301, trunk/tools/dev/faces.pl
branches/ops_pct/tools/dev/tapir.pir
- copied unchanged from r46301, trunk/tools/dev/tapir.pir
branches/ops_pct/tools/docs/filename_and_chapter.pl
- copied unchanged from r46301, trunk/tools/docs/filename_and_chapter.pl
Replaced:
branches/ops_pct/config/auto/zlib/zlib_c.in
- copied unchanged from r46301, trunk/config/auto/zlib/zlib_c.in
branches/ops_pct/ports/fedora/2.3.0/parrot.desk.in.tar.gz
- copied unchanged from r46301, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz
branches/ops_pct/ports/fedora/2.3.0/parrot.patch
- copied unchanged from r46301, trunk/ports/fedora/2.3.0/parrot.patch
branches/ops_pct/ports/fedora/2.3.0/parrot.spec
- copied unchanged from r46301, trunk/ports/fedora/2.3.0/parrot.spec
branches/ops_pct/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch
- copied unchanged from r46301, trunk/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch
branches/ops_pct/ports/mandriva/2.3.0/parrot.spec
- copied unchanged from r46301, trunk/ports/mandriva/2.3.0/parrot.spec
branches/ops_pct/ports/suse/2.2.0/parrot.diff
- copied unchanged from r46301, trunk/ports/suse/2.2.0/parrot.diff
branches/ops_pct/ports/suse/2.2.0/parrot.spec
- copied unchanged from r46301, trunk/ports/suse/2.2.0/parrot.spec
branches/ops_pct/runtime/parrot/library/Archive/Tar.pir
- copied unchanged from r46301, trunk/runtime/parrot/library/Archive/Tar.pir
branches/ops_pct/runtime/parrot/library/ProfTest/Matcher.nqp
- copied unchanged from r46301, trunk/runtime/parrot/library/ProfTest/Matcher.nqp
branches/ops_pct/runtime/parrot/library/ProfTest/NQPProfile.nqp
- copied unchanged from r46301, trunk/runtime/parrot/library/ProfTest/NQPProfile.nqp
branches/ops_pct/runtime/parrot/library/ProfTest/PIRProfile.nqp
- copied unchanged from r46301, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp
branches/ops_pct/runtime/parrot/library/ProfTest/Want.nqp
- copied unchanged from r46301, trunk/runtime/parrot/library/ProfTest/Want.nqp
branches/ops_pct/runtime/parrot/library/TAP/Formatter.pir
- copied unchanged from r46301, trunk/runtime/parrot/library/TAP/Formatter.pir
branches/ops_pct/runtime/parrot/library/TAP/Harness.pir
- copied unchanged from r46301, trunk/runtime/parrot/library/TAP/Harness.pir
branches/ops_pct/runtime/parrot/library/TAP/Parser.pir
- copied unchanged from r46301, trunk/runtime/parrot/library/TAP/Parser.pir
branches/ops_pct/src/pmc/parrotthread.pmc
- copied unchanged from r46301, trunk/src/pmc/parrotthread.pmc
branches/ops_pct/t/compilers/data_json/from_parrot.t
- copied unchanged from r46301, trunk/t/compilers/data_json/from_parrot.t
branches/ops_pct/t/compilers/data_json/to_parrot.t
- copied unchanged from r46301, trunk/t/compilers/data_json/to_parrot.t
branches/ops_pct/t/profiling/profiling.t
- copied unchanged from r46301, trunk/t/profiling/profiling.t
Deleted:
branches/ops_pct/META.yml
branches/ops_pct/Makefile.PL
branches/ops_pct/compilers/json/
branches/ops_pct/compilers/ncigen/
branches/ops_pct/compilers/nqp/
branches/ops_pct/config/auto/cgoto/
branches/ops_pct/config/auto/cgoto.pm
branches/ops_pct/config/auto/crypto/
branches/ops_pct/config/auto/crypto.pm
branches/ops_pct/config/auto/gdbm/
branches/ops_pct/config/auto/gdbm.pm
branches/ops_pct/config/gen/config_pm/config_lib_pasm.in
branches/ops_pct/config/gen/crypto/
branches/ops_pct/config/gen/crypto.pm
branches/ops_pct/config/gen/makefiles/dynpmc.in
branches/ops_pct/config/gen/platform/platform_interface.h
branches/ops_pct/ext/SQLite3/
branches/ops_pct/ext/nqp-rx/.gitignore
branches/ops_pct/lib/Parrot/OpTrans/CGP.pm
branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm
branches/ops_pct/lib/Parrot/OpTrans/CPrederef.pm
branches/ops_pct/lib/Parrot/OpTrans/CSwitch.pm
branches/ops_pct/ports/cpan/
branches/ops_pct/ports/debian/patches/01_fix_doc_install.patch
branches/ops_pct/ports/debian/patches/02_fix_man_whatis.patch
branches/ops_pct/ports/fedora/parrot.patch
branches/ops_pct/ports/fedora/parrot.spec.fedora
branches/ops_pct/ports/mandriva/parrot.spec.mandriva
branches/ops_pct/ports/suse/parrot.spec.suse
branches/ops_pct/runtime/parrot/library/SQLite3.pir
branches/ops_pct/src/dynpmc/gdbmhash.pmc
branches/ops_pct/src/pmc/cpointer.pmc
branches/ops_pct/src/pmc/file.pmc
branches/ops_pct/src/pmc/os.pmc
branches/ops_pct/src/pmc/parrotrunningthread.pmc
branches/ops_pct/src/pmc/retcontinuation.pmc
branches/ops_pct/t/compilers/json/
branches/ops_pct/t/distro/meta_yml.t
branches/ops_pct/t/dynpmc/gdbmhash.t
branches/ops_pct/t/op/pushaction.t
branches/ops_pct/t/pmc/cpointer.t
branches/ops_pct/t/pmc/file.t
branches/ops_pct/t/pmc/os.t
branches/ops_pct/t/pmc/parrotrunningthread.t
branches/ops_pct/t/pmc/retcontinuation.t
branches/ops_pct/t/steps/auto/cgoto-01.t
branches/ops_pct/t/steps/auto/crypto-01.t
branches/ops_pct/t/steps/auto/gdbm-01.t
Modified:
branches/ops_pct/ (props changed)
branches/ops_pct/CREDITS
branches/ops_pct/ChangeLog
branches/ops_pct/Configure.pl
branches/ops_pct/DEPRECATED.pod
branches/ops_pct/MANIFEST
branches/ops_pct/MANIFEST.SKIP
branches/ops_pct/MANIFEST.generated
branches/ops_pct/NEWS
branches/ops_pct/PBC_COMPAT
branches/ops_pct/README
branches/ops_pct/README_cygwin.pod
branches/ops_pct/README_win32.pod
branches/ops_pct/RESPONSIBLE_PARTIES
branches/ops_pct/VERSION
branches/ops_pct/compilers/data_json/Defines.mak
branches/ops_pct/compilers/data_json/Rules.mak (contents, props changed)
branches/ops_pct/compilers/imcc/Rules.in (contents, props changed)
branches/ops_pct/compilers/imcc/cfg.c
branches/ops_pct/compilers/imcc/imcc.l
branches/ops_pct/compilers/imcc/imcc.y
branches/ops_pct/compilers/imcc/imclexer.c
branches/ops_pct/compilers/imcc/imcparser.c
branches/ops_pct/compilers/imcc/imcparser.h
branches/ops_pct/compilers/imcc/instructions.c
branches/ops_pct/compilers/imcc/main.c
branches/ops_pct/compilers/imcc/optimizer.c
branches/ops_pct/compilers/imcc/parser_util.c
branches/ops_pct/compilers/imcc/pbc.c
branches/ops_pct/compilers/imcc/pcc.c
branches/ops_pct/compilers/imcc/symreg.c
branches/ops_pct/compilers/imcc/symreg.h
branches/ops_pct/compilers/imcc/unit.h
branches/ops_pct/compilers/opsc/Defines.mak (props changed)
branches/ops_pct/compilers/opsc/Rules.mak (props changed)
branches/ops_pct/compilers/pct/Rules.mak (props changed)
branches/ops_pct/compilers/pct/src/PAST/Compiler.pir
branches/ops_pct/compilers/pct/src/PCT/HLLCompiler.pir
branches/ops_pct/compilers/pct/src/POST/Node.pir
branches/ops_pct/compilers/pge/PGE/Exp.pir
branches/ops_pct/compilers/pge/PGE/OPTable.pir
branches/ops_pct/compilers/pge/PGE/Perl6Regex.pir
branches/ops_pct/compilers/pge/PGE/Regex.pir
branches/ops_pct/compilers/pge/Rules.mak (props changed)
branches/ops_pct/compilers/pirc/Rules.mak
branches/ops_pct/compilers/pirc/src/pircompiler.c
branches/ops_pct/compilers/pirc/src/pircompiler.h
branches/ops_pct/compilers/pirc/src/pircompunit.c
branches/ops_pct/compilers/pirc/src/pircompunit.h
branches/ops_pct/compilers/pirc/src/pirlexer.h
branches/ops_pct/compilers/pirc/src/pirparser.c
branches/ops_pct/compilers/pirc/src/pirsymbol.c
branches/ops_pct/compilers/pirc/src/pirsymbol.h
branches/ops_pct/compilers/tge/Rules.mak (props changed)
branches/ops_pct/config/auto/arch.pm
branches/ops_pct/config/auto/attributes.pm
branches/ops_pct/config/auto/attributes/test_c.in
branches/ops_pct/config/auto/sizes/intval_maxmin_c.in (props changed)
branches/ops_pct/config/auto/warnings.pm
branches/ops_pct/config/gen/config_h/config_h.in
branches/ops_pct/config/gen/config_pm.pm
branches/ops_pct/config/gen/config_pm/config_pir.in
branches/ops_pct/config/gen/core_pmcs.pm
branches/ops_pct/config/gen/makefiles.pm
branches/ops_pct/config/gen/makefiles/docs.in
branches/ops_pct/config/gen/makefiles/root.in
branches/ops_pct/config/gen/opengl.pm
branches/ops_pct/config/gen/platform.pm
branches/ops_pct/config/gen/platform/ansi/dl.c
branches/ops_pct/config/gen/platform/generic/dl.c
branches/ops_pct/config/gen/platform/generic/env.c
branches/ops_pct/config/gen/platform/generic/exec.c
branches/ops_pct/config/gen/platform/generic/itimer.c
branches/ops_pct/config/gen/platform/win32/dl.c
branches/ops_pct/config/gen/platform/win32/env.c
branches/ops_pct/config/gen/platform/win32/exec.c
branches/ops_pct/config/init/defaults.pm
branches/ops_pct/config/init/hints.pm
branches/ops_pct/config/init/hints/cygwin.pm
branches/ops_pct/config/init/hints/irix.pm
branches/ops_pct/config/init/optimize.pm
branches/ops_pct/config/inter/progs.pm
branches/ops_pct/docs/ (props changed)
branches/ops_pct/docs/book/draft/README (props changed)
branches/ops_pct/docs/book/draft/appa_glossary.pod (props changed)
branches/ops_pct/docs/book/draft/appb_patch_submission.pod (props changed)
branches/ops_pct/docs/book/draft/appc_command_line_options.pod (contents, props changed)
branches/ops_pct/docs/book/draft/appd_build_options.pod (props changed)
branches/ops_pct/docs/book/draft/appe_source_code.pod (props changed)
branches/ops_pct/docs/book/draft/ch01_introduction.pod (props changed)
branches/ops_pct/docs/book/draft/ch02_getting_started.pod (props changed)
branches/ops_pct/docs/book/draft/ch07_dynpmcs.pod (contents, props changed)
branches/ops_pct/docs/book/draft/ch08_dynops.pod (props changed)
branches/ops_pct/docs/book/draft/ch10_opcode_reference.pod (props changed)
branches/ops_pct/docs/book/draft/ch11_directive_reference.pod (props changed)
branches/ops_pct/docs/book/draft/ch12_operator_reference.pod (props changed)
branches/ops_pct/docs/book/draft/chXX_hlls.pod (contents, props changed)
branches/ops_pct/docs/book/draft/chXX_library.pod (props changed)
branches/ops_pct/docs/book/draft/chXX_testing_and_debugging.pod (props changed)
branches/ops_pct/docs/book/pct/ch01_introduction.pod (props changed)
branches/ops_pct/docs/book/pct/ch02_getting_started.pod (props changed)
branches/ops_pct/docs/book/pct/ch03_compiler_tools.pod (props changed)
branches/ops_pct/docs/book/pct/ch04_pge.pod (props changed)
branches/ops_pct/docs/book/pct/ch05_nqp.pod (props changed)
branches/ops_pct/docs/book/pir/ch04_variables.pod
branches/ops_pct/docs/configuration.pod
branches/ops_pct/docs/dev/c_functions.pod (props changed)
branches/ops_pct/docs/dev/infant.pod
branches/ops_pct/docs/dev/pccmethods.pod
branches/ops_pct/docs/dev/pmc_freeze.pod
branches/ops_pct/docs/dev/pmc_obj_design_meeting_notes.pod
branches/ops_pct/docs/dev/profiling.pod
branches/ops_pct/docs/embed.pod
branches/ops_pct/docs/intro.pod
branches/ops_pct/docs/parrothist.pod
branches/ops_pct/docs/pdds/draft/pdd01_overview.pod
branches/ops_pct/docs/pdds/draft/pdd05_opfunc.pod
branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod
branches/ops_pct/docs/pdds/draft/pdd08_keys.pod
branches/ops_pct/docs/pdds/draft/pdd10_embedding.pod
branches/ops_pct/docs/pdds/draft/pdd11_extending.pod
branches/ops_pct/docs/pdds/draft/pdd14_numbers.pod
branches/ops_pct/docs/pdds/draft/pdd16_native_call.pod
branches/ops_pct/docs/pdds/draft/pdd29_compiler_tools.pod
branches/ops_pct/docs/pdds/draft/pdd31_hll.pod
branches/ops_pct/docs/pdds/draft/pdd31_hll_interop.pod
branches/ops_pct/docs/pdds/pdd00_pdd.pod
branches/ops_pct/docs/pdds/pdd03_calling_conventions.pod
branches/ops_pct/docs/pdds/pdd07_codingstd.pod
branches/ops_pct/docs/pdds/pdd09_gc.pod
branches/ops_pct/docs/pdds/pdd15_objects.pod
branches/ops_pct/docs/pdds/pdd17_pmc.pod
branches/ops_pct/docs/pdds/pdd18_security.pod
branches/ops_pct/docs/pdds/pdd19_pir.pod
branches/ops_pct/docs/pdds/pdd20_lexical_vars.pod
branches/ops_pct/docs/pdds/pdd21_namespaces.pod
branches/ops_pct/docs/pdds/pdd22_io.pod
branches/ops_pct/docs/pdds/pdd23_exceptions.pod
branches/ops_pct/docs/pdds/pdd24_events.pod
branches/ops_pct/docs/pdds/pdd25_concurrency.pod
branches/ops_pct/docs/pdds/pdd26_ast.pod
branches/ops_pct/docs/pdds/pdd27_multiple_dispatch.pod
branches/ops_pct/docs/pdds/pdd28_strings.pod
branches/ops_pct/docs/pdds/pdd30_install.pod (contents, props changed)
branches/ops_pct/docs/pdds/pdd_template.pod
branches/ops_pct/docs/pmc.pod
branches/ops_pct/docs/pmc/documentation.pod
branches/ops_pct/docs/pmc2c.pod
branches/ops_pct/docs/porting_intro.pod
branches/ops_pct/docs/project/debian_packaging_guide.pod
branches/ops_pct/docs/project/metacommitter_guide.pod
branches/ops_pct/docs/project/release_manager_guide.pod
branches/ops_pct/docs/running.pod
branches/ops_pct/editor/pir-mode.el
branches/ops_pct/examples/benchmarks/oo1.pir
branches/ops_pct/examples/benchmarks/oo2.pir
branches/ops_pct/examples/c/test_main.c
branches/ops_pct/examples/config/file/configcompiler
branches/ops_pct/examples/config/file/configwithfatalstep
branches/ops_pct/examples/embed/Makefile
branches/ops_pct/examples/embed/cotorra.c (contents, props changed)
branches/ops_pct/examples/japh/japh3.pasm
branches/ops_pct/examples/json/postalcodes.pir
branches/ops_pct/examples/languages/abc/ (props changed)
branches/ops_pct/examples/languages/abc/setup.pir
branches/ops_pct/examples/languages/squaak/ (props changed)
branches/ops_pct/examples/languages/squaak/setup.pir
branches/ops_pct/examples/languages/squaak/src/parser/actions.pm
branches/ops_pct/examples/library/ncurses_life.pir
branches/ops_pct/examples/nci/Xlib.pir
branches/ops_pct/examples/nci/xlibtest.pir
branches/ops_pct/examples/pge/demo.pir (contents, props changed)
branches/ops_pct/examples/pir/befunge/debug.pir
branches/ops_pct/examples/pir/befunge/io.pir
branches/ops_pct/examples/pir/befunge/load.pir
branches/ops_pct/examples/pir/befunge/setup.pir
branches/ops_pct/examples/pir/io.pir
branches/ops_pct/examples/pir/pirric.pir
branches/ops_pct/examples/pir/quine_ord.pir
branches/ops_pct/examples/pir/substr.pir
branches/ops_pct/examples/sdl/mandel.pir
branches/ops_pct/examples/shootout/ack.pir
branches/ops_pct/examples/shootout/binarytrees.pir
branches/ops_pct/examples/shootout/fasta.pir
branches/ops_pct/examples/shootout/knucleotide.pir
branches/ops_pct/examples/shootout/partialsums.pir
branches/ops_pct/examples/shootout/pidigits.pir
branches/ops_pct/examples/shootout/random.pir
branches/ops_pct/examples/shootout/recursive-2.pir
branches/ops_pct/examples/shootout/recursive.pir
branches/ops_pct/examples/shootout/regexdna.pir
branches/ops_pct/examples/shootout/revcomp.pir
branches/ops_pct/examples/shootout/takfp.pir
branches/ops_pct/examples/tutorial/23_string_ops_substr.pir
branches/ops_pct/examples/tutorial/40_file_ops.pir
branches/ops_pct/examples/tutorial/56_defined.pir
branches/ops_pct/ext/Parrot-Embed/Build.PL
branches/ops_pct/ext/Parrot-Embed/MANIFEST
branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs
branches/ops_pct/ext/Parrot-Embed/t/interp.t
branches/ops_pct/ext/nqp-rx/Rules.mak (props changed)
branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir
branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir
branches/ops_pct/ext/nqp-rx/src/stage0/P6Regex-s0.pir
branches/ops_pct/ext/nqp-rx/src/stage0/Regex-s0.pir
branches/ops_pct/include/parrot/ (props changed)
branches/ops_pct/include/parrot/call.h (contents, props changed)
branches/ops_pct/include/parrot/charset.h
branches/ops_pct/include/parrot/compiler.h
branches/ops_pct/include/parrot/context.h
branches/ops_pct/include/parrot/debugger.h
branches/ops_pct/include/parrot/dynext.h
branches/ops_pct/include/parrot/embed.h
branches/ops_pct/include/parrot/encoding.h
branches/ops_pct/include/parrot/exceptions.h
branches/ops_pct/include/parrot/exit.h
branches/ops_pct/include/parrot/extend.h
branches/ops_pct/include/parrot/gc_api.h (contents, props changed)
branches/ops_pct/include/parrot/global_setup.h
branches/ops_pct/include/parrot/hash.h
branches/ops_pct/include/parrot/imcc.h
branches/ops_pct/include/parrot/interpreter.h
branches/ops_pct/include/parrot/io.h
branches/ops_pct/include/parrot/io_portable.h
branches/ops_pct/include/parrot/io_unix.h
branches/ops_pct/include/parrot/io_win32.h
branches/ops_pct/include/parrot/key.h
branches/ops_pct/include/parrot/misc.h
branches/ops_pct/include/parrot/nci.h
branches/ops_pct/include/parrot/oo.h
branches/ops_pct/include/parrot/op.h
branches/ops_pct/include/parrot/oplib.h
branches/ops_pct/include/parrot/oplib/core_ops.h
branches/ops_pct/include/parrot/packfile.h
branches/ops_pct/include/parrot/pmc.h
branches/ops_pct/include/parrot/pmc_freeze.h
branches/ops_pct/include/parrot/pobj.h
branches/ops_pct/include/parrot/runcore_api.h (contents, props changed)
branches/ops_pct/include/parrot/runcore_profiling.h (contents, props changed)
branches/ops_pct/include/parrot/runcore_trace.h (props changed)
branches/ops_pct/include/parrot/string.h
branches/ops_pct/include/parrot/string_funcs.h
branches/ops_pct/include/parrot/string_primitives.h
branches/ops_pct/include/parrot/sub.h
branches/ops_pct/include/parrot/thr_windows.h
branches/ops_pct/include/parrot/thread.h
branches/ops_pct/include/parrot/vtables.h
branches/ops_pct/lib/Parrot/Configure/Options/Conf.pm
branches/ops_pct/lib/Parrot/Configure/Options/Conf/Shared.pm
branches/ops_pct/lib/Parrot/Configure/Options/Test/Prepare.pm
branches/ops_pct/lib/Parrot/Configure/Step/List.pm
branches/ops_pct/lib/Parrot/Configure/Step/Test.pm (props changed)
branches/ops_pct/lib/Parrot/Distribution.pm
branches/ops_pct/lib/Parrot/Docs/Section/Compilers.pm
branches/ops_pct/lib/Parrot/H2inc.pm (contents, props changed)
branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm
branches/ops_pct/lib/Parrot/Harness/Options.pm
branches/ops_pct/lib/Parrot/Harness/Smoke.pm
branches/ops_pct/lib/Parrot/Headerizer.pm
branches/ops_pct/lib/Parrot/Manifest.pm
branches/ops_pct/lib/Parrot/OpTrans.pm
branches/ops_pct/lib/Parrot/OpTrans/C.pm
branches/ops_pct/lib/Parrot/Ops2c/Auxiliary.pm
branches/ops_pct/lib/Parrot/Ops2c/Utils.pm
branches/ops_pct/lib/Parrot/Ops2pm/Base.pm
branches/ops_pct/lib/Parrot/OpsRenumber.pm
branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm
branches/ops_pct/lib/Parrot/Pmc2c/Dumper.pm
branches/ops_pct/lib/Parrot/Pmc2c/Emitter.pm
branches/ops_pct/lib/Parrot/Pmc2c/Library.pm
branches/ops_pct/lib/Parrot/Pmc2c/MethodEmitter.pm
branches/ops_pct/lib/Parrot/Pmc2c/Object.pm
branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMC/Null.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMC/Object.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMC/ParrotClass.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMC/default.pm
branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm
branches/ops_pct/lib/Parrot/Pmc2c/Parser.pm
branches/ops_pct/lib/Parrot/Pmc2c/Pmc2cMain.pm
branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm
branches/ops_pct/lib/Parrot/Vtable.pm
branches/ops_pct/ports/cygwin/README
branches/ops_pct/ports/cygwin/parrot-1.0.0-1.cygport (props changed)
branches/ops_pct/ports/debian/changelog
branches/ops_pct/ports/debian/control.in
branches/ops_pct/ports/debian/libparrot-dev.install.in (props changed)
branches/ops_pct/ports/debian/libparrot.install.in (props changed)
branches/ops_pct/ports/debian/parrot-doc.install.in (props changed)
branches/ops_pct/ports/debian/parrot.install.in (props changed)
branches/ops_pct/ports/debian/patches/series
branches/ops_pct/ports/ubuntu/control.in
branches/ops_pct/runtime/parrot/languages/ (props changed)
branches/ops_pct/runtime/parrot/library/CGI/QueryHash.pir
branches/ops_pct/runtime/parrot/library/Config/JSON.pir
branches/ops_pct/runtime/parrot/library/Crow.pir
branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir
branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir
branches/ops_pct/runtime/parrot/library/JSON.pir
branches/ops_pct/runtime/parrot/library/MIME/Base64.pir
branches/ops_pct/runtime/parrot/library/Math/Rand.pir (props changed)
branches/ops_pct/runtime/parrot/library/OpenGL.pir
branches/ops_pct/runtime/parrot/library/P6object.pir
branches/ops_pct/runtime/parrot/library/Rules.mak (props changed)
branches/ops_pct/runtime/parrot/library/Stream/Base.pir
branches/ops_pct/runtime/parrot/library/String/Utils.pir
branches/ops_pct/runtime/parrot/library/Test/Builder.pir
branches/ops_pct/runtime/parrot/library/Test/Builder/Output.pir
branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir
branches/ops_pct/runtime/parrot/library/Test/More.pir
branches/ops_pct/runtime/parrot/library/distutils.pir
branches/ops_pct/runtime/parrot/library/pcore.pir
branches/ops_pct/runtime/parrot/library/uuid.pir
branches/ops_pct/src/byteorder.c
branches/ops_pct/src/call/args.c
branches/ops_pct/src/call/context.c
branches/ops_pct/src/call/context_accessors.c
branches/ops_pct/src/call/ops.c (contents, props changed)
branches/ops_pct/src/call/pcc.c (contents, props changed)
branches/ops_pct/src/datatypes.c
branches/ops_pct/src/debug.c
branches/ops_pct/src/dynext.c
branches/ops_pct/src/dynoplibs/Defines.in
branches/ops_pct/src/dynoplibs/Rules.in
branches/ops_pct/src/dynpmc/ (props changed)
branches/ops_pct/src/dynpmc/dynlexpad.pmc
branches/ops_pct/src/dynpmc/foo.pmc
branches/ops_pct/src/dynpmc/pccmethod_test.pmc
branches/ops_pct/src/dynpmc/rational.pmc
branches/ops_pct/src/dynpmc/subproxy.pmc
branches/ops_pct/src/embed.c
branches/ops_pct/src/exceptions.c
branches/ops_pct/src/exit.c
branches/ops_pct/src/extend.c
branches/ops_pct/src/frame_builder.c
branches/ops_pct/src/gc/ (props changed)
branches/ops_pct/src/gc/alloc_memory.c (props changed)
branches/ops_pct/src/gc/alloc_resources.c (contents, props changed)
branches/ops_pct/src/gc/api.c (contents, props changed)
branches/ops_pct/src/gc/gc_inf.c
branches/ops_pct/src/gc/gc_ms.c
branches/ops_pct/src/gc/gc_private.h
branches/ops_pct/src/gc/malloc.c (contents, props changed)
branches/ops_pct/src/gc/malloc_trace.c (contents, props changed)
branches/ops_pct/src/gc/mark_sweep.c (contents, props changed)
branches/ops_pct/src/gc/system.c (contents, props changed)
branches/ops_pct/src/global.c
branches/ops_pct/src/global_setup.c
branches/ops_pct/src/hash.c
branches/ops_pct/src/hll.c
branches/ops_pct/src/interp/inter_cb.c (contents, props changed)
branches/ops_pct/src/interp/inter_create.c (contents, props changed)
branches/ops_pct/src/interp/inter_misc.c (contents, props changed)
branches/ops_pct/src/io/api.c
branches/ops_pct/src/io/buffer.c
branches/ops_pct/src/io/core.c
branches/ops_pct/src/io/filehandle.c
branches/ops_pct/src/io/portable.c
branches/ops_pct/src/io/socket_api.c
branches/ops_pct/src/io/socket_unix.c
branches/ops_pct/src/io/socket_win32.c
branches/ops_pct/src/io/unix.c
branches/ops_pct/src/io/utf8.c
branches/ops_pct/src/io/win32.c
branches/ops_pct/src/key.c
branches/ops_pct/src/library.c
branches/ops_pct/src/longopt.c
branches/ops_pct/src/main.c
branches/ops_pct/src/misc.c
branches/ops_pct/src/multidispatch.c
branches/ops_pct/src/nci/api.c
branches/ops_pct/src/nci/core_thunks.c
branches/ops_pct/src/nci/extra_thunks.c
branches/ops_pct/src/nci_test.c
branches/ops_pct/src/oo.c
branches/ops_pct/src/ops/bit.ops
branches/ops_pct/src/ops/cmp.ops
branches/ops_pct/src/ops/core.ops
branches/ops_pct/src/ops/core_ops.c
branches/ops_pct/src/ops/object.ops
branches/ops_pct/src/ops/ops.num
branches/ops_pct/src/ops/pmc.ops
branches/ops_pct/src/ops/set.ops
branches/ops_pct/src/ops/string.ops
branches/ops_pct/src/ops/var.ops
branches/ops_pct/src/packdump.c
branches/ops_pct/src/packfile.c
branches/ops_pct/src/packfile/pf_items.c
branches/ops_pct/src/packout.c
branches/ops_pct/src/parrot_debugger.c
branches/ops_pct/src/pbc_dump.c
branches/ops_pct/src/pbc_merge.c
branches/ops_pct/src/pmc.c
branches/ops_pct/src/pmc/addrregistry.pmc
branches/ops_pct/src/pmc/arrayiterator.pmc
branches/ops_pct/src/pmc/bigint.pmc
branches/ops_pct/src/pmc/bignum.pmc
branches/ops_pct/src/pmc/boolean.pmc
branches/ops_pct/src/pmc/callcontext.pmc
branches/ops_pct/src/pmc/capture.pmc
branches/ops_pct/src/pmc/class.pmc
branches/ops_pct/src/pmc/codestring.pmc
branches/ops_pct/src/pmc/complex.pmc
branches/ops_pct/src/pmc/continuation.pmc
branches/ops_pct/src/pmc/coroutine.pmc
branches/ops_pct/src/pmc/default.pmc
branches/ops_pct/src/pmc/env.pmc
branches/ops_pct/src/pmc/eval.pmc
branches/ops_pct/src/pmc/eventhandler.pmc
branches/ops_pct/src/pmc/exception.pmc
branches/ops_pct/src/pmc/exceptionhandler.pmc
branches/ops_pct/src/pmc/exporter.pmc
branches/ops_pct/src/pmc/filehandle.pmc
branches/ops_pct/src/pmc/fixedbooleanarray.pmc
branches/ops_pct/src/pmc/fixedfloatarray.pmc
branches/ops_pct/src/pmc/fixedintegerarray.pmc
branches/ops_pct/src/pmc/fixedpmcarray.pmc
branches/ops_pct/src/pmc/fixedstringarray.pmc
branches/ops_pct/src/pmc/float.pmc
branches/ops_pct/src/pmc/handle.pmc
branches/ops_pct/src/pmc/hash.pmc
branches/ops_pct/src/pmc/hashiterator.pmc
branches/ops_pct/src/pmc/hashiteratorkey.pmc
branches/ops_pct/src/pmc/imageio.pmc
branches/ops_pct/src/pmc/imageiosize.pmc
branches/ops_pct/src/pmc/integer.pmc
branches/ops_pct/src/pmc/iterator.pmc
branches/ops_pct/src/pmc/key.pmc
branches/ops_pct/src/pmc/lexinfo.pmc
branches/ops_pct/src/pmc/lexpad.pmc
branches/ops_pct/src/pmc/managedstruct.pmc
branches/ops_pct/src/pmc/multisub.pmc
branches/ops_pct/src/pmc/namespace.pmc
branches/ops_pct/src/pmc/nci.pmc
branches/ops_pct/src/pmc/null.pmc
branches/ops_pct/src/pmc/object.pmc
branches/ops_pct/src/pmc/opcode.pmc
branches/ops_pct/src/pmc/oplib.pmc
branches/ops_pct/src/pmc/orderedhash.pmc
branches/ops_pct/src/pmc/orderedhashiterator.pmc
branches/ops_pct/src/pmc/packfile.pmc
branches/ops_pct/src/pmc/packfileannotation.pmc
branches/ops_pct/src/pmc/packfileannotations.pmc
branches/ops_pct/src/pmc/packfileconstanttable.pmc
branches/ops_pct/src/pmc/packfiledirectory.pmc
branches/ops_pct/src/pmc/packfilefixupentry.pmc
branches/ops_pct/src/pmc/packfilefixuptable.pmc
branches/ops_pct/src/pmc/packfilerawsegment.pmc
branches/ops_pct/src/pmc/packfilesegment.pmc
branches/ops_pct/src/pmc/parrotinterpreter.pmc
branches/ops_pct/src/pmc/parrotlibrary.pmc
branches/ops_pct/src/pmc/pmc.num
branches/ops_pct/src/pmc/pmcproxy.pmc
branches/ops_pct/src/pmc/pointer.pmc
branches/ops_pct/src/pmc/resizablebooleanarray.pmc
branches/ops_pct/src/pmc/resizablefloatarray.pmc
branches/ops_pct/src/pmc/resizableintegerarray.pmc
branches/ops_pct/src/pmc/resizablepmcarray.pmc
branches/ops_pct/src/pmc/resizablestringarray.pmc
branches/ops_pct/src/pmc/role.pmc
branches/ops_pct/src/pmc/scalar.pmc
branches/ops_pct/src/pmc/scheduler.pmc
branches/ops_pct/src/pmc/schedulermessage.pmc
branches/ops_pct/src/pmc/sockaddr.pmc
branches/ops_pct/src/pmc/socket.pmc
branches/ops_pct/src/pmc/string.pmc
branches/ops_pct/src/pmc/stringhandle.pmc
branches/ops_pct/src/pmc/stringiterator.pmc
branches/ops_pct/src/pmc/sub.pmc
branches/ops_pct/src/pmc/task.pmc
branches/ops_pct/src/pmc/timer.pmc
branches/ops_pct/src/pmc/undef.pmc
branches/ops_pct/src/pmc/unmanagedstruct.pmc
branches/ops_pct/src/pmc_freeze.c
branches/ops_pct/src/runcore/cores.c (contents, props changed)
branches/ops_pct/src/runcore/main.c (contents, props changed)
branches/ops_pct/src/runcore/profiling.c (contents, props changed)
branches/ops_pct/src/runcore/trace.c (contents, props changed)
branches/ops_pct/src/scheduler.c
branches/ops_pct/src/spf_render.c
branches/ops_pct/src/spf_vtable.c
branches/ops_pct/src/string/api.c
branches/ops_pct/src/string/charset.c
branches/ops_pct/src/string/charset/ascii.c
branches/ops_pct/src/string/charset/ascii.h
branches/ops_pct/src/string/charset/binary.c
branches/ops_pct/src/string/charset/binary.h
branches/ops_pct/src/string/charset/iso-8859-1.c
branches/ops_pct/src/string/charset/iso-8859-1.h
branches/ops_pct/src/string/charset/unicode.c
branches/ops_pct/src/string/charset/unicode.h
branches/ops_pct/src/string/encoding.c
branches/ops_pct/src/string/encoding/fixed_8.c
branches/ops_pct/src/string/encoding/fixed_8.h
branches/ops_pct/src/string/encoding/ucs2.c
branches/ops_pct/src/string/encoding/ucs2.h
branches/ops_pct/src/string/encoding/utf16.c
branches/ops_pct/src/string/encoding/utf16.h
branches/ops_pct/src/string/encoding/utf8.c
branches/ops_pct/src/string/encoding/utf8.h
branches/ops_pct/src/string/primitives.c
branches/ops_pct/src/sub.c
branches/ops_pct/src/thread.c
branches/ops_pct/src/utils.c
branches/ops_pct/src/vtables.c
branches/ops_pct/t/codingstd/c_function_docs.t
branches/ops_pct/t/codingstd/c_parens.t
branches/ops_pct/t/codingstd/pdd_format.t
branches/ops_pct/t/compilers/imcc/imcpasm/optc.t
branches/ops_pct/t/compilers/imcc/reg/spill.t
branches/ops_pct/t/compilers/imcc/syn/file.t
branches/ops_pct/t/compilers/imcc/syn/labels.t
branches/ops_pct/t/compilers/imcc/syn/objects.t
branches/ops_pct/t/compilers/imcc/syn/op.t
branches/ops_pct/t/compilers/imcc/syn/regressions.t
branches/ops_pct/t/compilers/imcc/syn/scope.t
branches/ops_pct/t/compilers/imcc/syn/subflags.t
branches/ops_pct/t/compilers/imcc/syn/tail.t
branches/ops_pct/t/compilers/imcc/syn/veracity.t
branches/ops_pct/t/compilers/pct/complete_workflow.t
branches/ops_pct/t/compilers/pge/02-match.t
branches/ops_pct/t/compilers/pge/03-optable.t
branches/ops_pct/t/compilers/pge/04-compile.t
branches/ops_pct/t/compilers/pge/p5regex/p5rx.t
branches/ops_pct/t/compilers/pge/perl6regex/01-regex.t
branches/ops_pct/t/compilers/pge/pge-hs.t
branches/ops_pct/t/compilers/tge/NoneGrammar.tg (props changed)
branches/ops_pct/t/compilers/tge/basic.t
branches/ops_pct/t/compilers/tge/parser.t
branches/ops_pct/t/configure/testlib/adefectivefoobar
branches/ops_pct/t/configure/testlib/bdefectivefoobar
branches/ops_pct/t/configure/testlib/cdefectivefoobar
branches/ops_pct/t/configure/testlib/ddefectivefoobar
branches/ops_pct/t/configure/testlib/verbosefoobar
branches/ops_pct/t/distro/file_metadata.t
branches/ops_pct/t/dynoplibs/math.t
branches/ops_pct/t/dynoplibs/obscure.t
branches/ops_pct/t/dynpmc/foo2.t
branches/ops_pct/t/dynpmc/rational.t
branches/ops_pct/t/dynpmc/rotest.t
branches/ops_pct/t/dynpmc/subproxy.t
branches/ops_pct/t/examples/shootout.t
branches/ops_pct/t/examples/tutorial.t
branches/ops_pct/t/harness
branches/ops_pct/t/include/fp_equality.t
branches/ops_pct/t/library/configure.t
branches/ops_pct/t/library/getopt_obj.t
branches/ops_pct/t/library/hllmacros.t
branches/ops_pct/t/library/md5.t
branches/ops_pct/t/library/mime_base64.t
branches/ops_pct/t/library/p6object.t
branches/ops_pct/t/library/parrotlib.t
branches/ops_pct/t/library/pcre.t
branches/ops_pct/t/library/protoobject.t
branches/ops_pct/t/library/rand.t
branches/ops_pct/t/library/range.t
branches/ops_pct/t/library/test_builder_tester.t
branches/ops_pct/t/library/test_class.t
branches/ops_pct/t/library/test_more.t
branches/ops_pct/t/library/uuid.t
branches/ops_pct/t/native_pbc/annotations.pbc
branches/ops_pct/t/native_pbc/integer_1.pbc
branches/ops_pct/t/native_pbc/integer_4.pbc
branches/ops_pct/t/native_pbc/number_1.pbc
branches/ops_pct/t/native_pbc/number_4.pbc
branches/ops_pct/t/native_pbc/string_1.pbc
branches/ops_pct/t/native_pbc/string_4.pbc
branches/ops_pct/t/oo/attributes.t
branches/ops_pct/t/oo/composition.t
branches/ops_pct/t/oo/inheritance.t
branches/ops_pct/t/oo/isa.t
branches/ops_pct/t/oo/metamodel.t
branches/ops_pct/t/oo/methods.t
branches/ops_pct/t/oo/mro-c3.t
branches/ops_pct/t/oo/names.t
branches/ops_pct/t/oo/new.t
branches/ops_pct/t/oo/ops.t
branches/ops_pct/t/oo/proxy.t
branches/ops_pct/t/oo/root_new.t (contents, props changed)
branches/ops_pct/t/oo/subclass.t
branches/ops_pct/t/oo/vtableoverride.t
branches/ops_pct/t/op/00ff-dos.t
branches/ops_pct/t/op/00ff-unix.t
branches/ops_pct/t/op/64bit.t
branches/ops_pct/t/op/annotate-old.t
branches/ops_pct/t/op/annotate.t
branches/ops_pct/t/op/arithmetics.t
branches/ops_pct/t/op/arithmetics_pmc.t
branches/ops_pct/t/op/box.t
branches/ops_pct/t/op/calling.t
branches/ops_pct/t/op/cc_params.t
branches/ops_pct/t/op/cmp-nonbranch.t
branches/ops_pct/t/op/comp.t
branches/ops_pct/t/op/copy.t
branches/ops_pct/t/op/debuginfo.t
branches/ops_pct/t/op/errorson.t
branches/ops_pct/t/op/exceptions.t
branches/ops_pct/t/op/fetch.t
branches/ops_pct/t/op/gc-leaky.t
branches/ops_pct/t/op/gc.t
branches/ops_pct/t/op/globals.t
branches/ops_pct/t/op/ifunless.t
branches/ops_pct/t/op/inf_nan.t
branches/ops_pct/t/op/integer.t
branches/ops_pct/t/op/interp.t
branches/ops_pct/t/op/io.t
branches/ops_pct/t/op/literal.t
branches/ops_pct/t/op/number.t
branches/ops_pct/t/op/sprintf.t
branches/ops_pct/t/op/sprintf2.t
branches/ops_pct/t/op/string.t
branches/ops_pct/t/op/string_cmp.t
branches/ops_pct/t/op/string_cs.t
branches/ops_pct/t/op/stringu.t
branches/ops_pct/t/op/time.t
branches/ops_pct/t/op/trans.t
branches/ops_pct/t/op/vivify.t
branches/ops_pct/t/pharness/02-get_test_prog_args.t
branches/ops_pct/t/pir/macro.t
branches/ops_pct/t/pir/registernames.t
branches/ops_pct/t/pmc/addrregistry.t
branches/ops_pct/t/pmc/arrayiterator.t
branches/ops_pct/t/pmc/bigint.t
branches/ops_pct/t/pmc/boolean.t
branches/ops_pct/t/pmc/callcontext.t
branches/ops_pct/t/pmc/capture.t
branches/ops_pct/t/pmc/class.t
branches/ops_pct/t/pmc/codestring.t
branches/ops_pct/t/pmc/complex.t
branches/ops_pct/t/pmc/config.t
branches/ops_pct/t/pmc/context.t
branches/ops_pct/t/pmc/continuation.t
branches/ops_pct/t/pmc/default.t
branches/ops_pct/t/pmc/env.t
branches/ops_pct/t/pmc/eval.t
branches/ops_pct/t/pmc/eventhandler.t
branches/ops_pct/t/pmc/exception-old.t
branches/ops_pct/t/pmc/exception.t
branches/ops_pct/t/pmc/exceptionhandler.t
branches/ops_pct/t/pmc/fixedbooleanarray.t
branches/ops_pct/t/pmc/fixedfloatarray.t
branches/ops_pct/t/pmc/fixedintegerarray.t
branches/ops_pct/t/pmc/fixedpmcarray.t
branches/ops_pct/t/pmc/fixedstringarray.t
branches/ops_pct/t/pmc/float.t
branches/ops_pct/t/pmc/freeze.t
branches/ops_pct/t/pmc/handle.t
branches/ops_pct/t/pmc/hash.t
branches/ops_pct/t/pmc/hashiterator.t
branches/ops_pct/t/pmc/imageio.t
branches/ops_pct/t/pmc/imageiosize.t
branches/ops_pct/t/pmc/integer.t
branches/ops_pct/t/pmc/io.t
branches/ops_pct/t/pmc/key.t
branches/ops_pct/t/pmc/lexinfo.t
branches/ops_pct/t/pmc/lexpad.t
branches/ops_pct/t/pmc/managedstruct.t
branches/ops_pct/t/pmc/multidispatch.t
branches/ops_pct/t/pmc/namespace-old.t (contents, props changed)
branches/ops_pct/t/pmc/namespace.t
branches/ops_pct/t/pmc/nci.t
branches/ops_pct/t/pmc/null.t
branches/ops_pct/t/pmc/object.t
branches/ops_pct/t/pmc/objects.t
branches/ops_pct/t/pmc/opcode.t
branches/ops_pct/t/pmc/oplib.t
branches/ops_pct/t/pmc/packfile.t
branches/ops_pct/t/pmc/packfileannotation.t
branches/ops_pct/t/pmc/packfileannotations.t
branches/ops_pct/t/pmc/packfileconstanttable.t
branches/ops_pct/t/pmc/packfiledirectory.t
branches/ops_pct/t/pmc/packfilefixupentry.t
branches/ops_pct/t/pmc/packfilefixuptable.t
branches/ops_pct/t/pmc/packfilerawsegment.t
branches/ops_pct/t/pmc/packfilesegment.t
branches/ops_pct/t/pmc/parrotclass.t
branches/ops_pct/t/pmc/parrotinterpreter.t
branches/ops_pct/t/pmc/parrotlibrary.t
branches/ops_pct/t/pmc/parrotobject.t
branches/ops_pct/t/pmc/parrotthread.t
branches/ops_pct/t/pmc/pmcproxy.t
branches/ops_pct/t/pmc/pointer.t
branches/ops_pct/t/pmc/prop.t
branches/ops_pct/t/pmc/resizablebooleanarray.t
branches/ops_pct/t/pmc/resizablefloatarray.t
branches/ops_pct/t/pmc/resizableintegerarray.t
branches/ops_pct/t/pmc/resizablepmcarray.t
branches/ops_pct/t/pmc/ro.t
branches/ops_pct/t/pmc/role.t
branches/ops_pct/t/pmc/scalar.t
branches/ops_pct/t/pmc/scheduler.t
branches/ops_pct/t/pmc/schedulermessage.t
branches/ops_pct/t/pmc/sockaddr.t
branches/ops_pct/t/pmc/socket.t
branches/ops_pct/t/pmc/string.t
branches/ops_pct/t/pmc/stringiterator.t
branches/ops_pct/t/pmc/testlib/packfile_common.pir
branches/ops_pct/t/pmc/threads.t
branches/ops_pct/t/pmc/undef.t
branches/ops_pct/t/pmc/unmanagedstruct.t
branches/ops_pct/t/run/exit.t
branches/ops_pct/t/src/basic.t
branches/ops_pct/t/src/embed.t (contents, props changed)
branches/ops_pct/t/src/extend.t
branches/ops_pct/t/src/warnings.t
branches/ops_pct/t/steps/auto/arch-01.t
branches/ops_pct/t/steps/gen/platform-01.t
branches/ops_pct/t/steps/init/defaults-01.t
branches/ops_pct/t/steps/init/hints/linux-01.t (props changed)
branches/ops_pct/t/steps/inter/progs-04.t
branches/ops_pct/t/tools/install/testlib/README
branches/ops_pct/t/tools/ops2cutils/01-new.t
branches/ops_pct/t/tools/ops2cutils/03-print_c_header_file.t
branches/ops_pct/t/tools/ops2cutils/04-print_c_source_top.t
branches/ops_pct/t/tools/ops2cutils/05-print_c_source_bottom.t
branches/ops_pct/t/tools/ops2cutils/06-dynamic.t
branches/ops_pct/t/tools/ops2cutils/07-make_incdir.t
branches/ops_pct/t/tools/ops2cutils/08-nolines.t
branches/ops_pct/t/tools/ops2cutils/09-dynamic_nolines.t
branches/ops_pct/t/tools/ops2cutils/10-print_c_source_file.t
branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t
branches/ops_pct/tools/build/h2inc.pl (props changed)
branches/ops_pct/tools/build/headerizer.pl
branches/ops_pct/tools/build/ops2c.pl
branches/ops_pct/tools/dev/branch_status.pl
branches/ops_pct/tools/dev/checkdepend.pl
branches/ops_pct/tools/dev/fetch_languages.pl (props changed)
branches/ops_pct/tools/dev/gen_charset_tables.pl
branches/ops_pct/tools/dev/install_files.pl
branches/ops_pct/tools/dev/mk_gitignore.pl (props changed)
branches/ops_pct/tools/dev/mk_inno.pl
branches/ops_pct/tools/dev/mk_manifest_and_skip.pl
branches/ops_pct/tools/dev/mk_native_pbc
branches/ops_pct/tools/dev/nci_thunk_gen.pir
branches/ops_pct/tools/dev/parrot-fuzzer
branches/ops_pct/tools/dev/pbc_to_exe.pir
branches/ops_pct/tools/install/smoke.pl
branches/ops_pct/tools/util/parrot-config.pir
branches/ops_pct/tools/util/perlcritic-cage.conf (props changed)
branches/ops_pct/tools/util/pgegrep
branches/ops_pct/tools/util/release.json
Copied: branches/ops_pct/.gitignore (from r46301, trunk/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/.gitignore Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/.gitignore)
@@ -0,0 +1,581 @@
+# ex: set ro:
+# $Id$
+# generated by tools/dev/mk_gitignore.pl Sat Apr 24 05:11:34 2010 UT
+#
+# This file should contain a transcript of the svn:ignore properties
+# of the directories in the Parrot subversion repository.
+# The .gitignore file is a convenience for developers working with git-svn.
+# See http://www.kernel.org/pub/software/scm/git/docs/gitignore.html for the
+# format of this file.
+#
+# generated from svn:ignore of './'
+/*.core
+/*.def
+/*.exe
+/*.exp
+/*.ilk
+/*.lib
+/*.manifest
+/*.ncb
+/*.o
+/*.obj
+/*.patch
+/*.pdb
+/*.sln
+/*.sto
+/*.suo
+/*.tmp
+/*.vcproj*
+/.git
+/.parrot_current_rev
+/CFLAGS
+/MANIFEST.configure.generated
+/Makefile
+/TAGS
+/all_cstring.str
+/blib
+/config_lib.pir
+/cover_db
+/install_config.fpmc
+/installable*
+/libparrot.def
+/libparrot.dll
+/miniparrot
+/myconfig
+/parrot
+/parrot-nqp
+/parrot-nqp.c
+/parrot-nqp.pbc
+/parrot.ilk
+/parrot.iss
+/parrot.pc
+/parrot.pdb
+/parrot_config
+/parrot_config.c
+/parrot_config.pbc
+/parrot_debugger
+/parrot_nci_thunk_gen
+/parrot_nci_thunk_gen.c
+/parrot_nci_thunk_gen.pbc
+/parrot_test_run.tar.gz
+/pbc_disassemble
+/pbc_dump
+/pbc_info
+/pbc_merge
+/pbc_to_exe
+/pbc_to_exe.*
+/perl6
+/pirc
+/tags
+/tapir
+/tapir.*
+/temp.file
+/test
+/test.c
+/test.cco
+/test.err
+/test.ilk
+/test.ldo
+/test.out
+/test.pdb
+/vc60.pdb
+/vc70.pdb
+/vtable.dump
+# generated from svn:ignore of 'compilers/data_json/'
+/compilers/data_json/data_json.pbc
+# generated from svn:ignore of 'compilers/data_json/data_json/'
+/compilers/data_json/data_json/*.pbc
+/compilers/data_json/data_json/*.pir
+# generated from svn:ignore of 'compilers/imcc/'
+/compilers/imcc/*.flag
+/compilers/imcc/*.o
+/compilers/imcc/*.obj
+/compilers/imcc/*.tmp
+/compilers/imcc/Rules.mak
+/compilers/imcc/imcc
+/compilers/imcc/imclexer.c
+/compilers/imcc/imcparser.c
+/compilers/imcc/imcparser.h
+/compilers/imcc/imcparser.output
+# generated from svn:ignore of 'compilers/pct/src/PAST/'
+/compilers/pct/src/PAST/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/PCT/'
+/compilers/pct/src/PCT/*.pbc
+# generated from svn:ignore of 'compilers/pct/src/POST/'
+/compilers/pct/src/POST/*.pbc
+/compilers/pct/src/POST/Grammar_gen.pir
+# generated from svn:ignore of 'compilers/pge/'
+/compilers/pge/PGE.pbc
+# generated from svn:ignore of 'compilers/pge/PGE/'
+/compilers/pge/PGE/*.dll
+/compilers/pge/PGE/builtins_gen.pir
+# generated from svn:ignore of 'compilers/pirc/'
+/compilers/pirc/*.o
+/compilers/pirc/*.obj
+/compilers/pirc/*.pbd
+/compilers/pirc/pirc
+/compilers/pirc/pirc.exe
+# generated from svn:ignore of 'compilers/pirc/t/'
+/compilers/pirc/t/basic_?.pir
+/compilers/pirc/t/basic_??.pir
+/compilers/pirc/t/heredoc_?.pir
+/compilers/pirc/t/macro_?.pir
+/compilers/pirc/t/stmts_?.pir
+/compilers/pirc/t/subflags_?.pir
+# generated from svn:ignore of 'compilers/tge/'
+/compilers/tge/tgc.pbc
+# generated from svn:ignore of 'compilers/tge/TGE/'
+/compilers/tge/TGE/Parser.pir
+# generated from svn:ignore of 'docs/'
+/docs/*.tmp
+/docs/Makefile
+/docs/doc-prep
+/docs/html
+/docs/packfile-c.pod
+/docs/packfile-perl.pod
+# generated from svn:ignore of 'docs/book/'
+/docs/book/*.html
+# generated from svn:ignore of 'docs/ops/'
+/docs/ops/*.pod
+# generated from svn:ignore of 'editor/'
+/editor/Makefile
+/editor/imc.vim
+/editor/imcc.xml
+/editor/pir.vim
+# generated from svn:ignore of 'examples/languages/abc/'
+/examples/languages/abc/*.c
+/examples/languages/abc/*.exe
+/examples/languages/abc/*.iss
+/examples/languages/abc/*.o
+/examples/languages/abc/*.obj
+/examples/languages/abc/*.pbc
+/examples/languages/abc/MANIFEST
+/examples/languages/abc/abc
+/examples/languages/abc/installable_abc
+/examples/languages/abc/man
+# generated from svn:ignore of 'examples/languages/abc/src/'
+/examples/languages/abc/src/gen_actions.pir
+/examples/languages/abc/src/gen_builtins.pir
+/examples/languages/abc/src/gen_grammar.pir
+# generated from svn:ignore of 'examples/languages/abc/t/'
+/examples/languages/abc/t/*_*.out
+/examples/languages/abc/t/*_*.pir
+# generated from svn:ignore of 'examples/languages/squaak/'
+/examples/languages/squaak/*.c
+/examples/languages/squaak/*.exe
+/examples/languages/squaak/*.iss
+/examples/languages/squaak/*.o
+/examples/languages/squaak/*.obj
+/examples/languages/squaak/*.pbc
+/examples/languages/squaak/MANIFEST
+/examples/languages/squaak/installable_squaak
+/examples/languages/squaak/squaak
+# generated from svn:ignore of 'examples/languages/squaak/src/'
+/examples/languages/squaak/src/gen_*.pir
+# generated from svn:ignore of 'examples/mops/'
+/examples/mops/*.o
+/examples/mops/mops
+# generated from svn:ignore of 'examples/nci/'
+/examples/nci/*.pbc
+# generated from svn:ignore of 'examples/pasm/'
+/examples/pasm/hello
+/examples/pasm/hello.o
+/examples/pasm/hello.pbc
+# generated from svn:ignore of 'examples/pir/befunge/'
+/examples/pir/befunge/*.c
+/examples/pir/befunge/*.exe
+/examples/pir/befunge/*.iss
+/examples/pir/befunge/*.o
+/examples/pir/befunge/*.obj
+/examples/pir/befunge/*.pbc
+/examples/pir/befunge/MANIFEST
+/examples/pir/befunge/befunge
+/examples/pir/befunge/installable_befunge
+# generated from svn:ignore of 'ext/'
+/ext/Makefile
+# generated from svn:ignore of 'ext/Parrot-Embed/'
+/ext/Parrot-Embed/*.bs
+/ext/Parrot-Embed/*.bundle
+/ext/Parrot-Embed/*.c
+/ext/Parrot-Embed/*.def
+/ext/Parrot-Embed/*.dll
+/ext/Parrot-Embed/*.dump
+/ext/Parrot-Embed/*.dylib
+/ext/Parrot-Embed/*.exe
+/ext/Parrot-Embed/*.exp
+/ext/Parrot-Embed/*.h
+/ext/Parrot-Embed/*.ilk
+/ext/Parrot-Embed/*.lib
+/ext/Parrot-Embed/*.manifest
+/ext/Parrot-Embed/*.o
+/ext/Parrot-Embed/*.obj
+/ext/Parrot-Embed/*.old
+/ext/Parrot-Embed/*.pdb
+/ext/Parrot-Embed/*.pdb
+/ext/Parrot-Embed/*.so
+/ext/Parrot-Embed/*.tmp
+/ext/Parrot-Embed/*.xs
+/ext/Parrot-Embed/Build
+/ext/Parrot-Embed/Build.bat
+/ext/Parrot-Embed/Makefile
+/ext/Parrot-Embed/Makefile.PL
+/ext/Parrot-Embed/_build
+/ext/Parrot-Embed/blib
+/ext/Parrot-Embed/dll.base
+/ext/Parrot-Embed/pm_to_blib
+# generated from svn:ignore of 'ext/Parrot-Embed/lib/Parrot/'
+/ext/Parrot-Embed/lib/Parrot/*.c
+/ext/Parrot-Embed/lib/Parrot/*.obj
+# generated from svn:ignore of 'ext/Parrot-Embed/t/'
+/ext/Parrot-Embed/t/*.pbc
+# generated from svn:ignore of 'include/parrot/'
+/include/parrot/*.tmp
+/include/parrot/config.h
+/include/parrot/core_pmcs.h
+/include/parrot/extend_vtable.h
+/include/parrot/feature.h
+/include/parrot/has_header.h
+/include/parrot/opsenum.h
+/include/parrot/pbcversion.h
+/include/parrot/platform.h
+/include/parrot/platform_interface.h
+/include/parrot/platform_limits.h
+/include/parrot/vtable.h
+# generated from svn:ignore of 'include/parrot/oplib/'
+/include/parrot/oplib/*_ops.h
+/include/parrot/oplib/*_ops_cg*.h
+/include/parrot/oplib/*_ops_switch.h
+/include/parrot/oplib/ops.h
+# generated from svn:ignore of 'include/pmc/'
+/include/pmc/*.h
+# generated from svn:ignore of 'lib/'
+/lib/DumbLink.pm
+# generated from svn:ignore of 'lib/Parrot/'
+/lib/Parrot/*.tmp
+/lib/Parrot/Jit.pm
+/lib/Parrot/Makefile
+/lib/Parrot/OpLib
+/lib/Parrot/PMC.pm
+/lib/Parrot/PakFile2.bs
+/lib/Parrot/PakFile2.c
+/lib/Parrot/blib
+/lib/Parrot/pm_to_blib
+# generated from svn:ignore of 'lib/Parrot/Config/'
+/lib/Parrot/Config/Generated.pm
+# generated from svn:ignore of 'lib/Parrot/Pmc2c/'
+/lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm
+# generated from svn:ignore of 'runtime/parrot/dynext/'
+/runtime/parrot/dynext/*.bundle
+/runtime/parrot/dynext/*.def
+/runtime/parrot/dynext/*.dll
+/runtime/parrot/dynext/*.dylib
+/runtime/parrot/dynext/*.exe
+/runtime/parrot/dynext/*.exp
+/runtime/parrot/dynext/*.ilk
+/runtime/parrot/dynext/*.lib
+/runtime/parrot/dynext/*.manifest
+/runtime/parrot/dynext/*.obj
+/runtime/parrot/dynext/*.pdb
+/runtime/parrot/dynext/*.so
+/runtime/parrot/dynext/libnci.*
+# generated from svn:ignore of 'runtime/parrot/include/'
+/runtime/parrot/include/*.fpmc
+/runtime/parrot/include/*.pasm
+/runtime/parrot/include/*.pbc
+# generated from svn:ignore of 'runtime/parrot/languages/'
+/runtime/parrot/languages/data_json
+# generated from svn:ignore of 'runtime/parrot/library/'
+/runtime/parrot/library/*.pbc
+/runtime/parrot/library/OpenGL_funcs.pir
+/runtime/parrot/library/PAST
+/runtime/parrot/library/config.pir
+# generated from svn:ignore of 'runtime/parrot/library/CGI/'
+/runtime/parrot/library/CGI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Config/'
+/runtime/parrot/library/Config/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Configure/'
+/runtime/parrot/library/Configure/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/'
+/runtime/parrot/library/Data/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Data/Dumper/'
+/runtime/parrot/library/Data/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Digest/'
+/runtime/parrot/library/Digest/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Getopt/'
+/runtime/parrot/library/Getopt/Obj.pbc
+# generated from svn:ignore of 'runtime/parrot/library/MIME/'
+/runtime/parrot/library/MIME/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Math/'
+/runtime/parrot/library/Math/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/NCI/'
+/runtime/parrot/library/NCI/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/OpenGL/'
+/runtime/parrot/library/OpenGL/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PCT/'
+/runtime/parrot/library/PCT/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/PGE/'
+/runtime/parrot/library/PGE/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Parrot/'
+/runtime/parrot/library/Parrot/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/ProfTest/'
+/runtime/parrot/library/ProfTest/*.pbc
+/runtime/parrot/library/ProfTest/*.pir
+# generated from svn:ignore of 'runtime/parrot/library/Stream/'
+/runtime/parrot/library/Stream/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/String/'
+/runtime/parrot/library/String/Utils.pbc
+# generated from svn:ignore of 'runtime/parrot/library/TAP/'
+/runtime/parrot/library/TAP/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Tcl/'
+/runtime/parrot/library/Tcl/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/'
+/runtime/parrot/library/Test/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/Test/Builder/'
+/runtime/parrot/library/Test/Builder/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/'
+/runtime/parrot/library/YAML/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Dumper/'
+/runtime/parrot/library/YAML/Dumper/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/YAML/Parser/'
+/runtime/parrot/library/YAML/Parser/*.pbc
+# generated from svn:ignore of 'src/'
+/src/*.o
+/src/*.obj
+/src/*.str
+/src/asmfun.*
+/src/core_pmcs.c
+/src/exec_cpu.c
+/src/exec_dep.c
+/src/exec_dep.h
+/src/extend_vtable.c
+/src/extra_nci_thunks.c
+/src/fingerprint.c
+/src/glut_callbacks.c
+/src/glut_nci_thunks.c
+/src/glut_nci_thunks.nci
+/src/install_config.c
+/src/jit_cpu.c
+/src/jit_defs.c
+/src/jit_emit.h
+/src/null_config.c
+/src/parrot_config.c
+/src/parrot_config.h
+/src/platform.c
+/src/platform_asm.s
+/src/revision.c
+# generated from svn:ignore of 'src/atomic/'
+/src/atomic/*.gcda
+/src/atomic/*.o
+# generated from svn:ignore of 'src/call/'
+/src/call/*.o
+/src/call/*.obj
+/src/call/*.str
+# generated from svn:ignore of 'src/dynoplibs/'
+/src/dynoplibs/*.bundle
+/src/dynoplibs/*.c
+/src/dynoplibs/*.dll
+/src/dynoplibs/*.exp
+/src/dynoplibs/*.h
+/src/dynoplibs/*.ilk
+/src/dynoplibs/*.lib
+/src/dynoplibs/*.manifest
+/src/dynoplibs/*.o
+/src/dynoplibs/*.obj
+/src/dynoplibs/*.pdb
+/src/dynoplibs/*.so
+/src/dynoplibs/Defines.mak
+/src/dynoplibs/Rules.mak
+# generated from svn:ignore of 'src/dynpmc/'
+/src/dynpmc/*.bundle
+/src/dynpmc/*.c
+/src/dynpmc/*.def
+/src/dynpmc/*.dll
+/src/dynpmc/*.dump
+/src/dynpmc/*.dylib
+/src/dynpmc/*.exe
+/src/dynpmc/*.exp
+/src/dynpmc/*.h
+/src/dynpmc/*.ilk
+/src/dynpmc/*.lib
+/src/dynpmc/*.manifest
+/src/dynpmc/*.o
+/src/dynpmc/*.obj
+/src/dynpmc/*.pdb
+/src/dynpmc/*.so
+/src/dynpmc/Makefile
+/src/dynpmc/md2.pmc
+/src/dynpmc/md4.pmc
+/src/dynpmc/md5.pmc
+/src/dynpmc/ripemd160.pmc
+/src/dynpmc/sha.pmc
+/src/dynpmc/sha1.pmc
+/src/dynpmc/sha256.pmc
+/src/dynpmc/sha512.pmc
+# generated from svn:ignore of 'src/gc/'
+/src/gc/*.bundle
+/src/gc/*.def
+/src/gc/*.dll
+/src/gc/*.dump
+/src/gc/*.dylib
+/src/gc/*.exe
+/src/gc/*.exp
+/src/gc/*.h
+/src/gc/*.ilk
+/src/gc/*.lib
+/src/gc/*.manifest
+/src/gc/*.o
+/src/gc/*.obj
+/src/gc/*.pdb
+/src/gc/*.so
+/src/gc/Makefile
+# generated from svn:ignore of 'src/interp/'
+/src/interp/*.o
+/src/interp/*.str
+# generated from svn:ignore of 'src/io/'
+/src/io/*.o
+/src/io/*.obj
+/src/io/*.str
+# generated from svn:ignore of 'src/nci/'
+/src/nci/*.o
+/src/nci/*.obj
+/src/nci/*.str
+# generated from svn:ignore of 'src/ops/'
+/src/ops/*.c
+/src/ops/*.o
+/src/ops/*.obj
+# generated from svn:ignore of 'src/packfile/'
+/src/packfile/*.o
+/src/packfile/*.obj
+# generated from svn:ignore of 'src/pmc/'
+/src/pmc/*.c
+/src/pmc/*.dump
+/src/pmc/*.h
+/src/pmc/*.o
+/src/pmc/*.obj
+/src/pmc/*.str
+/src/pmc/*.tmp
+/src/pmc/Makefile
+# generated from svn:ignore of 'src/runcore/'
+/src/runcore/*.o
+/src/runcore/*.obj
+/src/runcore/*.str
+# generated from svn:ignore of 'src/string/'
+/src/string/*.o
+/src/string/*.obj
+/src/string/*.str
+/src/string/private_cstring.h
+# generated from svn:ignore of 'src/string/charset/'
+/src/string/charset/*.o
+/src/string/charset/*.obj
+# generated from svn:ignore of 'src/string/encoding/'
+/src/string/encoding/*.o
+/src/string/encoding/*.obj
+# generated from svn:ignore of 't/benchmark/'
+/t/benchmark/*.pasm
+/t/benchmark/*.pir
+# generated from svn:ignore of 't/compilers/data_json/'
+/t/compilers/data_json/*.pbc
+/t/compilers/data_json/*.pir
+/t/compilers/data_json/*_pbcexe
+# generated from svn:ignore of 't/compilers/imcc/'
+/t/compilers/imcc/*.pbc
+# generated from svn:ignore of 't/compilers/imcc/imcpasm/'
+/t/compilers/imcc/imcpasm/*.pasm
+/t/compilers/imcc/imcpasm/*.pbc
+/t/compilers/imcc/imcpasm/*.pir
+/t/compilers/imcc/imcpasm/*_pbcexe
+# generated from svn:ignore of 't/compilers/imcc/reg/'
+/t/compilers/imcc/reg/*.pasm
+/t/compilers/imcc/reg/*.pbc
+/t/compilers/imcc/reg/*.pir
+/t/compilers/imcc/reg/*_pbcexe*
+# generated from svn:ignore of 't/compilers/imcc/syn/'
+/t/compilers/imcc/syn/*.pasm
+/t/compilers/imcc/syn/*.pbc
+/t/compilers/imcc/syn/*.pir
+/t/compilers/imcc/syn/*_pbcexe*
+# generated from svn:ignore of 't/compilers/pct/'
+/t/compilers/pct/*.pbc
+/t/compilers/pct/*.pir
+# generated from svn:ignore of 't/compilers/pge/'
+/t/compilers/pge/*.pasm
+/t/compilers/pge/*.pbc
+/t/compilers/pge/*.pir
+/t/compilers/pge/*_pbcexe
+# generated from svn:ignore of 't/compilers/pge/p5regex/'
+/t/compilers/pge/p5regex/*.pir
+# generated from svn:ignore of 't/compilers/pge/perl6regex/'
+/t/compilers/pge/perl6regex/*.pbc
+/t/compilers/pge/perl6regex/*.pir
+# generated from svn:ignore of 't/compilers/tge/'
+/t/compilers/tge/*.pbc
+/t/compilers/tge/*.pir
+/t/compilers/tge/*_pbcexe
+# generated from svn:ignore of 't/dynoplibs/'
+/t/dynoplibs/*.pasm
+/t/dynoplibs/*.pbc
+/t/dynoplibs/*.pir
+# generated from svn:ignore of 't/dynpmc/'
+/t/dynpmc/*.pasm
+/t/dynpmc/*.pbc
+/t/dynpmc/*.pir
+/t/dynpmc/*_pbcexe*
+/t/dynpmc/md2.t
+/t/dynpmc/md4.t
+/t/dynpmc/md5.t
+/t/dynpmc/ripemd160.t
+/t/dynpmc/sha.t
+/t/dynpmc/sha1.t
+/t/dynpmc/sha256.t
+/t/dynpmc/sha512.t
+# generated from svn:ignore of 't/examples/'
+/t/examples/*.pasm
+/t/examples/*.pbc
+/t/examples/*.pir
+/t/examples/*_pbcexe*
+# generated from svn:ignore of 't/library/'
+/t/library/*.out
+/t/library/*.pasm
+/t/library/*.pbc
+/t/library/*.pir
+/t/library/*_pbcexe*
+# generated from svn:ignore of 't/native_pbc/'
+/t/native_pbc/*_pbcexe*
+# generated from svn:ignore of 't/oo/'
+/t/oo/*.pbc
+/t/oo/*.pir
+# generated from svn:ignore of 't/op/'
+/t/op/*.out
+/t/op/*.pasm
+/t/op/*.pbc
+/t/op/*.pir
+/t/op/*_pbcexe*
+# generated from svn:ignore of 't/perl/'
+/t/perl/Parrot_Test_1.pasm
+/t/perl/Parrot_Test_1.pir
+# generated from svn:ignore of 't/pmc/'
+/t/pmc/*.out
+/t/pmc/*.pasm
+/t/pmc/*.pbc
+/t/pmc/*.pir
+/t/pmc/*_pbcexe*
+# generated from svn:ignore of 't/src/'
+/t/src/*_*
+# generated from svn:ignore of 't/stress/'
+/t/stress/*.out
+/t/stress/*.pasm
+/t/stress/*.pbc
+/t/stress/*.pir
+/t/stress/*_pbcexe*
+# generated from svn:ignore of 't/tools/'
+/t/tools/*.pbc
+/t/tools/*.pir
+/t/tools/pdb.t.*
+/t/tools/pmc2c.*.c
+/t/tools/pmc2c.*.dump
+/t/tools/pmc2c.*.h
+/t/tools/pmc2c.*.pmc
+# Local variables:
+# mode: text
+# buffer-read-only: t
+# End:
Modified: branches/ops_pct/CREDITS
==============================================================================
--- branches/ops_pct/CREDITS Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/CREDITS Wed May 5 08:45:29 2010 (r46302)
@@ -402,7 +402,7 @@
N: Gerd Pokorra
E: pokorra at uni-siegen.de
-D: Release manager for 1.9.0
+D: Release manager for 1.9.0 and 2.3.0
N: Goplat
D: Win98 and other fixes.
@@ -509,9 +509,10 @@
E: jesse at fsck.com
N: Jimmy Zhuo
-A: jimmy
+A: JimmyZ
+U: jimmy
E: zhuomingliang at yahoo.com.cn
-D: Bugfixes
+D: Bugfixes, cage cleaning
N: John J. Trammell
E: trammell at el-swifto.com
@@ -573,7 +574,8 @@
D: Getopt/Obj.pir
N: Julian Albo
-U: julianalbo
+U: NotFound
+A: julianalbo
E: julian.notfound at gmail.com
N: Julian Fondren
@@ -767,10 +769,6 @@
N: Nigelsandever
D: Win32 patches
-N: Notfound
-D: Bugfixing and cage cleaning.
-E: julian.notfound at gmail.com
-
N: Nuno 'smash' Carvalho
U: smash
D: PGE/perl6/abc debugging and testing
@@ -922,6 +920,11 @@
N: Stefan Lidman
D: sqrt ops
+N: Stefan O'Rear
+E: stefanor at cox.net
+D: Perl 5 interoperability, Blizkost
+U: sorear
+
N: Stéphane Payrard
D: Various code fixes and improvements
Modified: branches/ops_pct/ChangeLog
==============================================================================
--- branches/ops_pct/ChangeLog Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ChangeLog Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,13 @@
#1 $Id$
+2010.04.20 Gerd
+ * Released 2.3.0
+ See NEWS for more.
+
+2010.03.16 cotto
+ * Released 2.2.0
+ See NEWS for more.
+
2010.02.16 darbelo
* Released 2.1.0
See NEWS for more.
Modified: branches/ops_pct/Configure.pl
==============================================================================
--- branches/ops_pct/Configure.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/Configure.pl Wed May 5 08:45:29 2010 (r46302)
@@ -343,10 +343,6 @@
Use the given ops files.
-=item C<--cgoto=0>
-
-Don't build cgoto core. This is recommended when you are short of memory.
-
=item C<--jitcapable>
Use JIT system.
@@ -623,7 +619,6 @@
auto::jit
auto::frames
auto::cpu
- auto::cgoto
auto::inline
auto::gc
auto::memalign
@@ -632,10 +627,8 @@
auto::env
auto::gmp
auto::readline
- auto::gdbm
auto::pcre
auto::opengl
- auto::crypto
auto::gettext
auto::snprintf
# auto::perldoc
@@ -644,7 +637,6 @@
auto::icu
gen::config_h
gen::core_pmcs
- gen::crypto
gen::opengl
gen::makefiles
gen::platform
Modified: branches/ops_pct/DEPRECATED.pod
==============================================================================
--- branches/ops_pct/DEPRECATED.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/DEPRECATED.pod Wed May 5 08:45:29 2010 (r46302)
@@ -7,8 +7,8 @@
=head1 Experimental Status
-These features are not considered stable, even though they may
-have shipped in a stable release of parrot[2]. Use them at your own
+These features are not considered supported, even though they may
+have shipped in a supported release of parrot[2]. Use them at your own
risk, as they can be removed or changed in any release. These
items are marked below with C<[experimental]>.
@@ -22,27 +22,34 @@
shipped, this feature may be removed in B<any> upcoming release, and
you should no longer rely on it.
-Whenever deprecated items are removed, information
-regarding how to cope with the removal should be added to
-L<https://trac.parrot.org/parrot/wiki/Deprecation>.
+If you find a feature you once used was removed after a deprecation
+cycle, L<https://trac.parrot.org/parrot/wiki/Deprecation>. Otherwise
+please open a documentation ticket via Trac[1].
-When running parrot, you can receive warnings about deprecated opcodes.
+=head1 Are you using any Deprecated Features?
+
+When running parrot, you can receive warnings about deprecations.
Either run parrot with the C<-w> option to enable all warnings, or
-specifically by including this C<PIR> code:
+deprecations specifically by including this snippet:
+
+=begin PIR_FRAGMENT
.include 'warnings.pasm'
warningson .PARROT_WARNINGS_DEPRECATED_FLAG
+=end PIR_FRAGMENT
+
=head1 PMCS
=over 4
-=item moved to dynpmc [eligible in 1.1]
+=item GzipHandle [experimental]
-AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle,
-and Timer.
+L<https://trac.parrot.org/parrot/ticket/1580>
-L<https://trac.parrot.org/parrot/ticket/448>
+=item PackfileDebug [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1599>
=item multiple dispatch within core PMCs [eligible in 1.1]
@@ -60,27 +67,62 @@
L<https://trac.parrot.org/parrot/ticket/103>
-=item CPointer PMC [eligible in 2.1]
+=item NCI without signature ("raw" pointers) [eligible in 2.4]
+
+No equivalent functionality is promised. You shouldn't be using this. Here be
+segfaults.
+
+L<https://trac.parrot.org/parrot/ticket/1549>
+
+=item UnManagedStruct handling nested structure [eligible in 2.4]
+
+UnManagedStruct will be simplified to only support flat structures. This means
+that elements which themselves have structure - struct pointers and function
+pointers will be stored as C<void *> and C<void (*)(void)> respectively. To use
+these, they will need to be cast to the appropriate signature on access.
+
+L<https://trac.parrot.org/parrot/ticket/1551>
+
+=item UnManagedStruct initializer structure [eligible in 2.4]
+
+The initializer structure will cease to be an array of triples. In stead, an
+array of flags (no counts or offsets), or a string representation of the same
+information may be used.
+
+L<https://trac.parrot.org/parrot/ticket/1552>
+
+=item UnManagedStruct get_integer, set_integer_native [eligible in 2.4]
+
+These will no longer refer to the byte length of the buffer, but to the number
+of times the struct is repeated; emulating an array of structs.
+
+L<https://trac.parrot.org/parrot/ticket/1553>
+
+=item ManagedStruct reallocations based on shape changes [eligible in 2.4]
+
+Since shape changes may simply be used for re-interpreting data, and may also
+occur in several steps, re-allocating after any one shape change may be
+undesirable. In stead, an explicit allocate/reallocate method will be provided.
-And all uses in the Parrot calling conventions.
+L<https://trac.parrot.org/parrot/ticket/1554>
-L<https://trac.parrot.org/parrot/ticket/1407>
+=item Auto-vivification of nested aggregates [eligible in 2.4]
-=item Digest dynpmcs [eligible in 2.4]
+E.g.
-The digest dynpmcs are, since the posting of this notice, available on
-http://gitorious.org/digest-dynpmcs and will no longer be distributed
-with parrot after 2.3.
+ $P0 = new ['Hash']
+ $S1 = $P0['foo';'bar';'baz']
-L<https://trac.parrot.org/parrot/ticket/1467>
+will not auto-vivify nested hashes and return PMCNULL early.
-=item gdbmhash dynpmc [eligible in 2.4]
+L<https://trac.parrot.org/parrot/ticket/1561>
-The gdbmhash dynpmc is, since the posting of this notice, available on
-http://gitorious.org/dbm-dynpmcs and will no longer be distributed
-with parrot after 2.3.
+=item Method lower on String [eligible in 3.1]
-L<https://trac.parrot.org/parrot/ticket/1469>
+Use the downcase opcode or subclass with a method name consistent with your
+HLL.
+
+L<http://trac.parrot.org/parrot/ticket/1606>
=back
@@ -122,10 +164,6 @@
=item get_results opcode order and features [eligible in 2.1]
-Move get_results to follow invoke.
-
-L<https://trac.parrot.org/parrot/ticket/1405>
-
get_results no longer used to fetch exception object.
L<https://trac.parrot.org/parrot/ticket/1406>
@@ -135,6 +173,45 @@
Ability to get the string name of the current GC core from the interpinfo_s_i.
See r43900 and r43904 for details.
+L<https://trac.parrot.org/parrot/ticket/1581>
+
+=item NCI_FB_CB and NCI_FB_UD in iglobals [experimental]
+
+Hooks allowing a runtime-loadable dynamic frame builder.
+
+L<https://trac.parrot.org/parrot/ticket/1582>
+
+=item loadlib_p_s_p [experimental]
+
+Ability to use non-default dynamic loading behaviour.
+
+L<https://trac.parrot.org/parrot/ticket/1583>
+
+=item new_callback_p_p_p_s [eligible in 2.4]
+
+To be replaced with new_callback_p_p_p_p_s.
+
+L<https://trac.parrot.org/parrot/ticket/1548>
+
+=item dlfunc and new_callback signature string format [eligible in 2.4]
+
+These will be changed to allow more flexibility in types.
+
+L<https://trac.parrot.org/parrot/ticket/1565>
+
+=item find_lex [eligible in 2.4]
+
+find_lex will not throw exception for non-existing lexicals.
+
+L<https://trac.parrot.org/parrot/ticket/1207>
+
+=item inplace string updates. [eligible in 2.4]
+
+All "inplace" string update ops are deprecated. E.g. "chopn_s", etc.
+Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
=back
=head1 Bytecode
@@ -185,14 +262,6 @@
L<https://trac.parrot.org/parrot/ticket/907>
-=item Subs marked with C<:vtable>/C<:method> aren't in namespace [eligible in 1.1]
-
-Subs marked with C<:vtable> or C<:method> flags are no longer given a
-namespace entry by default. Use the C<:nsentry> flag to cause this
-to happen.
-
-L<https://trac.parrot.org/parrot/ticket/389>
-
=item C API coding standards cleanup [eligible in 1.1]
All C API functions that aren't currently named according to the
@@ -207,24 +276,43 @@
Parrot_gc_free_pmc_attributes
These items and related helper functions are added as experimental support
-for L<https://trac.parrot.org/parrot/ticket/895>
+for L<https://trac.parrot.org/parrot/ticket/1506>
=item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
All STRING modification functions will return a STRING pointer; capture and use
this rather than relying on in-place modification of an existing pointer.
-=item STRING_is_null function [eligible in 2.4]
+L<https://trac.parrot.org/parrot/ticket/1584>
+
+=item STRING COW [eligible in 2.4]
-renamed to Parrot_str_is_null
+COW strings are to be removed. All "inplace" string modification
+functions and all "inplace" string ops are deprecated.
-=item Parrot_string_* [eligible in 2.4]
+L<https://trac.parrot.org/parrot/ticket/1540>
-rename Parrot_string_cstring to Parrot_str_cstring
+=item Parrot_PMC_* in src/extend.c [eligible in 2.4]
-=item STRING functions which don't have Parrot_str_ prefix
+These are duplicates of functions in src/extend_vtable.c. Exceptions:
-The string subsytem is gradually getting an overhaul.
+ Parrot_PMC_new
+ Parrot_PMC_typenum
+ Parrot_PMC_null
+ Parrot_PMC_set_vtable
+ Parrot_PMC_newclass
+
+L<https://trac.parrot.org/parrot/ticket/1587>
+
+=item Parrot_VTABLE, Parrot_get_vtable, Parrot_PMC_set_vtable [eligible in 2.4]
+
+These do not expose any functionality that should be available to code outside
+of parrot core.
+
+These might get revived in some form to allow for creating new types and adding
+vtable-overrides, if that functionality becomes desired.
+
+L<https://trac.parrot.org/parrot/ticket/1588>
=back
@@ -278,23 +366,6 @@
=back
-=head1 Compilers
-
-=over 4
-
-=item json [eligible in 2.4]
-
-The json compiler was dupicated into data_json some time ago. If you're
-using json, just use data_json instead, it's the same code. See TT #1461.
-
-=item nqp [eligible in 2.4]
-
-Replaced by ext/nqp-rx and parrot-nqp.
-
-L<http://trac.parrot.org/parrot/ticket/1462>
-
-=back
-
=head1 Parrot library
=over 4
@@ -306,7 +377,11 @@
A way to provide an equivalent of -L and -I parrot command line options
to language that doesn't support it.
-=item JSON, JSON, and Config;JSON [eligible in 1.5]
+=item Archive::Tar [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1598>
+
+=item JSON and Config;JSON [eligible in 1.5]
L<https://trac.parrot.org/parrot/ticket/508>
@@ -320,6 +395,16 @@
=back
+=head1 Experimental
+
+=over 4
+
+=item Threads and Parallelism [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1601>
+
+=back
+
=head1 Footnotes
=over 4
@@ -331,7 +416,7 @@
=item 2
For an item to be considered experimental, it can B<never> have shipped in
-a stable release without the C<[experimental]> tag; otherwise, it must be
+a supported release without the C<[experimental]> tag; otherwise, it must be
deprecated normally before removal or incompatible change.
=back
Modified: branches/ops_pct/MANIFEST
==============================================================================
--- branches/ops_pct/MANIFEST Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/MANIFEST Wed May 5 08:45:29 2010 (r46302)
@@ -1,12 +1,14 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Sun Mar 14 21:20:56 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue May 4 01:57:56 2010 UT
#
# See below for documentation on the format of this file.
#
-# See docs/submissions.pod on how to recreate this file after SVN
+# See docs/submissions.pod and the documentation in
+# tools/dev/mk_manifest_and_skip.pl on how to recreate this file after SVN
# has been told about new or deleted files.
+.gitignore []
CREDITS [main]doc
ChangeLog []
Configure.pl []
@@ -17,8 +19,6 @@
MANIFEST []
MANIFEST.SKIP []
MANIFEST.generated []
-META.yml []
-Makefile.PL []
NEWS [main]doc
PBC_COMPAT [main]doc
PLATFORMS [devel]doc
@@ -62,98 +62,6 @@
compilers/imcc/symreg.c [imcc]
compilers/imcc/symreg.h [imcc]
compilers/imcc/unit.h [imcc]
-compilers/json/Defines.mak [json]
-compilers/json/JSON.pir [json]
-compilers/json/JSON/grammar.pg [json]
-compilers/json/JSON/pge2pir.tg [json]
-compilers/json/Rules.mak [json]
-compilers/ncigen/MAINTAINER [ncigen]
-compilers/ncigen/NCIGEN.TODO [ncigen]
-compilers/ncigen/NCIGENP6.pm [ncigen]
-compilers/ncigen/README []doc
-compilers/ncigen/config/makefiles/ncigen.in [ncigen]
-compilers/ncigen/lib/Parrot/Test/NCIGENAST.pm [ncigen]
-compilers/ncigen/ncigen.pir [ncigen]
-compilers/ncigen/ncigen.pl [ncigen]
-compilers/ncigen/src/NCIGENAST.pir [ncigen]
-compilers/ncigen/src/NCIPIR.pir [ncigen]
-compilers/ncigen/src/builtins/say.pir [ncigen]
-compilers/ncigen/src/parser/actions.pm [ncigen]
-compilers/ncigen/src/parser/grammar.pg [ncigen]
-compilers/ncigen/t/NCIGENAST/struct_00.t [test]
-compilers/ncigen/t/NCIGENAST/typedef_00.t [test]
-compilers/ncigen/t/harness [test]
-compilers/ncigen/t/parse_00.t [test]
-compilers/ncigen/t/parse_01.t [test]
-compilers/ncigen/t/parse_02.t [test]
-compilers/nqp/Defines.mak [nqp]
-compilers/nqp/README.pod []doc
-compilers/nqp/Rules.mak [nqp]
-compilers/nqp/TODO.pod [nqp]
-compilers/nqp/bootstrap/actions.pm [nqp]
-compilers/nqp/bootstrap/nqp.pir [nqp]
-compilers/nqp/bootstrap/t/harness [test]
-compilers/nqp/nqp.pir [nqp]
-compilers/nqp/src/Grammar.pg [nqp]
-compilers/nqp/src/Grammar/Actions.pir [nqp]
-compilers/nqp/src/builtins.pir [nqp]
-compilers/nqp/t/01-literals.t [test]
-compilers/nqp/t/02-if-else.t [test]
-compilers/nqp/t/02-if.t [test]
-compilers/nqp/t/03-unless.t [test]
-compilers/nqp/t/04-comments.t [test]
-compilers/nqp/t/05-pod.t [test]
-compilers/nqp/t/06-args-pos.t [test]
-compilers/nqp/t/07-boolean.t [test]
-compilers/nqp/t/08-blocks.t [test]
-compilers/nqp/t/09-var.t [test]
-compilers/nqp/t/10-sub.t [test]
-compilers/nqp/t/11-cmp.t [test]
-compilers/nqp/t/12-list.t [test]
-compilers/nqp/t/13-logical.t [test]
-compilers/nqp/t/14-op.t [test]
-compilers/nqp/t/15-module.t [test]
-compilers/nqp/t/16-while.t [test]
-compilers/nqp/t/17-class.t [test]
-compilers/nqp/t/18-inline.t [test]
-compilers/nqp/t/19-hash_access.t [test]
-compilers/nqp/t/20-list_access.t [test]
-compilers/nqp/t/22-optional_args.t [test]
-compilers/nqp/t/23-named_args.t [test]
-compilers/nqp/t/24-scalar_context.t [test]
-compilers/nqp/t/25-list_context.t [test]
-compilers/nqp/t/26-method_ops.t [test]
-compilers/nqp/t/27-ternary.t [test]
-compilers/nqp/t/28-return.t [test]
-compilers/nqp/t/29-self.t [test]
-compilers/nqp/t/30-subclass.t [test]
-compilers/nqp/t/harness [test]
-compilers/opsc/Defines.mak [opsc]
-compilers/opsc/Rules.mak [opsc]
-compilers/opsc/TODO [opsc]
-compilers/opsc/gen/Ops/Compiler/IGNOREME [opsc]
-compilers/opsc/gen/Ops/Trans/IGNOREME [opsc]
-compilers/opsc/ops2c.nqp [opsc]
-compilers/opsc/opsc.pir [opsc]
-compilers/opsc/src/Ops/Compiler.pm [opsc]
-compilers/opsc/src/Ops/Compiler/Actions.pm [opsc]
-compilers/opsc/src/Ops/Compiler/Grammar.pm [opsc]
-compilers/opsc/src/Ops/Emitter.pm [opsc]
-compilers/opsc/src/Ops/File.pm [opsc]
-compilers/opsc/src/Ops/Op.pm [opsc]
-compilers/opsc/src/Ops/OpLib.pm [opsc]
-compilers/opsc/src/Ops/Trans.pm [opsc]
-compilers/opsc/src/Ops/Trans/C.pm [opsc]
-compilers/opsc/src/builtins.pir [opsc]
-compilers/opsc/t/01-parse.t [test]
-compilers/opsc/t/02-parse-all-ops.t [test]
-compilers/opsc/t/03-past.t [test]
-compilers/opsc/t/04-op.t [test]
-compilers/opsc/t/05-oplib.t [test]
-compilers/opsc/t/06-opsfile.t [test]
-compilers/opsc/t/07-emitter.t [test]
-compilers/opsc/t/common.pir [test]
-compilers/opsc/t/harness [test]
compilers/pct/Defines.mak [pct]
compilers/pct/PCT.pir [pct]
compilers/pct/README.pod []doc
@@ -251,8 +159,6 @@
config/auto/backtrace/test_dlinfo_c.in []
config/auto/byteorder.pm []
config/auto/byteorder/test_c.in []
-config/auto/cgoto.pm []
-config/auto/cgoto/test_c.in []
config/auto/cpu.pm []
config/auto/cpu/i386/auto.pm []
config/auto/cpu/i386/test_gcc_cmpxchg_c.in []
@@ -261,8 +167,6 @@
config/auto/cpu/sun4/auto.pm []
config/auto/cpu/sun4/test_atomic_c.in []
config/auto/cpu/x86_64/auto.pm []
-config/auto/crypto.pm []
-config/auto/crypto/crypto_c.in []
config/auto/ctags.pm []
config/auto/env.pm []
config/auto/env/test_setenv_c.in []
@@ -276,8 +180,6 @@
config/auto/gc/test_c.in []
config/auto/gcc.pm []
config/auto/gcc/test_c.in []
-config/auto/gdbm.pm []
-config/auto/gdbm/gdbm_c.in []
config/auto/gettext.pm []
config/auto/gettext/gettext_c.in []
config/auto/glibc.pm []
@@ -329,22 +231,20 @@
config/auto/va_ptr/test_c.in []
config/auto/warnings.pm []
config/auto/warnings/test_c.in []
+config/auto/zlib.pm []
+config/auto/zlib/zlib_c.in []
config/gen/config_h.pm []
config/gen/config_h/config_h.in []
config/gen/config_h/feature_h.in []
config/gen/config_h/has_header_h.in []
config/gen/config_pm.pm []
config/gen/config_pm/Config_pm.in []
-config/gen/config_pm/config_lib_pasm.in []
+config/gen/config_pm/config_lib_pir.in []
config/gen/config_pm/config_pir.in []
config/gen/config_pm/myconfig.in []
config/gen/core_pmcs.pm []
-config/gen/crypto.pm []
-config/gen/crypto/digest_pmc.in []
-config/gen/crypto/digest_t.in []
config/gen/makefiles.pm []
config/gen/makefiles/docs.in []
-config/gen/makefiles/dynpmc.in []
config/gen/makefiles/editor.in []
config/gen/makefiles/ext.in []
config/gen/makefiles/parrot_embed_pl.in []
@@ -386,7 +286,6 @@
config/gen/platform/openbsd/math.c []
config/gen/platform/openbsd/memexec.c []
config/gen/platform/openbsd/misc.h []
-config/gen/platform/platform_interface.h []
config/gen/platform/solaris/math.c []
config/gen/platform/solaris/time.c []
config/gen/platform/win32/begin.c []
@@ -664,6 +563,7 @@
examples/benchmarks/stress2.pl [examples]
examples/benchmarks/stress2.rb [examples]
examples/benchmarks/stress3.pasm [examples]
+examples/benchmarks/stress_strings.pir [examples]
examples/benchmarks/vpm.pir [examples]
examples/benchmarks/vpm.pl [examples]
examples/benchmarks/vpm.py [examples]
@@ -952,22 +852,12 @@
ext/Parrot-Embed/tools/check_embed_coverage.pl []
ext/Parrot-Embed/tools/write_typemap.pl []
ext/Parrot-Embed/typemap []
-ext/SQLite3/DBDI.pm []
-ext/SQLite3/DBDI/Driver/SQLite3.pm []
-ext/SQLite3/Makefile.PL []
-ext/SQLite3/Makefile.in []
-ext/SQLite3/SQLite3.pir []
-ext/SQLite3/gen_sqlite3.pl []
-ext/SQLite3/t/test.p6 [test]
-ext/SQLite3/test.pir []
-ext/nqp-rx/.gitignore []
ext/nqp-rx/CREDITS []
ext/nqp-rx/Defines.mak []
ext/nqp-rx/LICENSE []
ext/nqp-rx/README []doc
ext/nqp-rx/Rules.mak []
ext/nqp-rx/STATUS []
-ext/nqp-rx/src/gen/settings.pm []
ext/nqp-rx/src/stage0/HLL-s0.pir []
ext/nqp-rx/src/stage0/NQP-s0.pir []
ext/nqp-rx/src/stage0/P6Regex-s0.pir []
@@ -1069,9 +959,9 @@
include/parrot/oo_private.h [main]include
include/parrot/op.h [main]include
include/parrot/oplib.h [main]include
-include/parrot/oplib/core_ops.h [main]include
include/parrot/packfile.h [main]include
include/parrot/parrot.h [main]include
+include/parrot/platform_interface.h [main]include
include/parrot/pmc.h [main]include
include/parrot/pmc_freeze.h [main]include
include/parrot/pobj.h [main]include
@@ -1152,10 +1042,6 @@
lib/Parrot/Op.pm [devel]lib
lib/Parrot/OpTrans.pm [devel]lib
lib/Parrot/OpTrans/C.pm [devel]lib
-lib/Parrot/OpTrans/CGP.pm [devel]lib
-lib/Parrot/OpTrans/CGoto.pm [devel]lib
-lib/Parrot/OpTrans/CPrederef.pm [devel]lib
-lib/Parrot/OpTrans/CSwitch.pm [devel]lib
lib/Parrot/Ops2c/Auxiliary.pm [devel]lib
lib/Parrot/Ops2c/Utils.pm [devel]lib
lib/Parrot/Ops2pm.pm [devel]lib
@@ -1238,6 +1124,7 @@
runtime/parrot/include/hllmacros.pir [library]
runtime/parrot/include/test_more.pir [library]
runtime/parrot/languages/parrot/parrot.pir [library]
+runtime/parrot/library/Archive/Tar.pir [library]
runtime/parrot/library/CGI/QueryHash.pir [library]
runtime/parrot/library/Config/JSON.pir [library]
runtime/parrot/library/Configure/genfile.pir [library]
@@ -1267,6 +1154,10 @@
runtime/parrot/library/Parrot/Coroutine.pir [library]
runtime/parrot/library/Parrot/Exception.pir [library]
runtime/parrot/library/Pg.pir [library]
+runtime/parrot/library/ProfTest/Matcher.nqp [library]
+runtime/parrot/library/ProfTest/NQPProfile.nqp [library]
+runtime/parrot/library/ProfTest/PIRProfile.nqp [library]
+runtime/parrot/library/ProfTest/Want.nqp [library]
runtime/parrot/library/Protoobject.pir [library]
runtime/parrot/library/Range.pir [library]
runtime/parrot/library/Rules.mak [library]
@@ -1285,7 +1176,6 @@
runtime/parrot/library/SDL/Sprite.pir [library]
runtime/parrot/library/SDL/StopWatch.pir [library]
runtime/parrot/library/SDL/Surface.pir [library]
-runtime/parrot/library/SQLite3.pir [library]
runtime/parrot/library/Stream/Base.pir [library]
runtime/parrot/library/Stream/Combiner.pir [library]
runtime/parrot/library/Stream/Coroutine.pir [library]
@@ -1296,6 +1186,9 @@
runtime/parrot/library/Stream/Sub.pir [library]
runtime/parrot/library/Stream/Writer.pir [library]
runtime/parrot/library/String/Utils.pir [library]
+runtime/parrot/library/TAP/Formatter.pir [library]
+runtime/parrot/library/TAP/Harness.pir [library]
+runtime/parrot/library/TAP/Parser.pir [library]
runtime/parrot/library/Tcl/Glob.pir [library]
runtime/parrot/library/TclLibrary.pir [library]
runtime/parrot/library/Test/Builder.pir [library]
@@ -1314,6 +1207,7 @@
runtime/parrot/library/ncurses.declarations [library]
runtime/parrot/library/ncurses.pasm [library]
runtime/parrot/library/ncurses.pir [library]
+runtime/parrot/library/osutils.pir [library]
runtime/parrot/library/parrotlib.pir [library]
runtime/parrot/library/pcore.pir [library]
runtime/parrot/library/pcre.pir [library]
@@ -1339,17 +1233,21 @@
src/dynoplibs/Rules.in []
src/dynoplibs/math.ops []
src/dynoplibs/obscure.ops []
+src/dynpmc/Defines.in []
src/dynpmc/README.pod []doc
-src/dynpmc/dynlexpad.pmc [devel]src
+src/dynpmc/Rules.in []
+src/dynpmc/dynlexpad.pmc []
src/dynpmc/ext.pir []
-src/dynpmc/foo.pmc [devel]src
-src/dynpmc/foo2.pmc [devel]src
-src/dynpmc/gdbmhash.pmc [devel]src
+src/dynpmc/file.pmc []
+src/dynpmc/foo.pmc []
+src/dynpmc/foo2.pmc []
+src/dynpmc/gziphandle.pmc []
src/dynpmc/main.pasm []
-src/dynpmc/pccmethod_test.pmc [devel]src
-src/dynpmc/rational.pmc [devel]src
-src/dynpmc/rotest.pmc [devel]src
-src/dynpmc/subproxy.pmc [devel]src
+src/dynpmc/os.pmc []
+src/dynpmc/pccmethod_test.pmc []
+src/dynpmc/rational.pmc []
+src/dynpmc/rotest.pmc []
+src/dynpmc/subproxy.pmc []
src/embed.c []
src/exceptions.c []
src/exit.c []
@@ -1402,7 +1300,6 @@
src/ops/bit.ops []
src/ops/cmp.ops []
src/ops/core.ops []
-src/ops/core_ops.c []
src/ops/debug.ops []
src/ops/experimental.ops []
src/ops/io.ops []
@@ -1424,92 +1321,90 @@
src/pbc_dump.c []
src/pbc_merge.c []
src/pmc.c []
-src/pmc/addrregistry.pmc [devel]src
-src/pmc/arrayiterator.pmc [devel]src
-src/pmc/bigint.pmc [devel]src
-src/pmc/bignum.pmc [devel]src
-src/pmc/boolean.pmc [devel]src
-src/pmc/callcontext.pmc [devel]src
-src/pmc/capture.pmc [devel]src
-src/pmc/class.pmc [devel]src
-src/pmc/codestring.pmc [devel]src
-src/pmc/complex.pmc [devel]src
-src/pmc/continuation.pmc [devel]src
-src/pmc/coroutine.pmc [devel]src
-src/pmc/cpointer.pmc [devel]src
-src/pmc/default.pmc [devel]src
-src/pmc/env.pmc [devel]src
-src/pmc/eval.pmc [devel]src
-src/pmc/eventhandler.pmc [devel]src
-src/pmc/exception.pmc [devel]src
-src/pmc/exceptionhandler.pmc [devel]src
-src/pmc/exporter.pmc [devel]src
-src/pmc/file.pmc [devel]src
-src/pmc/filehandle.pmc [devel]src
-src/pmc/fixedbooleanarray.pmc [devel]src
-src/pmc/fixedfloatarray.pmc [devel]src
-src/pmc/fixedintegerarray.pmc [devel]src
-src/pmc/fixedpmcarray.pmc [devel]src
-src/pmc/fixedstringarray.pmc [devel]src
-src/pmc/float.pmc [devel]src
-src/pmc/handle.pmc [devel]src
-src/pmc/hash.pmc [devel]src
-src/pmc/hashiterator.pmc [devel]src
-src/pmc/hashiteratorkey.pmc [devel]src
-src/pmc/imageio.pmc [devel]src
-src/pmc/imageiosize.pmc [devel]src
-src/pmc/integer.pmc [devel]src
-src/pmc/iterator.pmc [devel]src
-src/pmc/key.pmc [devel]src
-src/pmc/lexinfo.pmc [devel]src
-src/pmc/lexpad.pmc [devel]src
-src/pmc/managedstruct.pmc [devel]src
-src/pmc/multisub.pmc [devel]src
-src/pmc/namespace.pmc [devel]src
-src/pmc/nci.pmc [devel]src
-src/pmc/null.pmc [devel]src
-src/pmc/object.pmc [devel]src
-src/pmc/opcode.pmc [devel]src
-src/pmc/oplib.pmc [devel]src
-src/pmc/orderedhash.pmc [devel]src
-src/pmc/orderedhashiterator.pmc [devel]src
-src/pmc/os.pmc [devel]src
-src/pmc/packfile.pmc [devel]src
-src/pmc/packfileannotation.pmc [devel]src
-src/pmc/packfileannotations.pmc [devel]src
-src/pmc/packfileconstanttable.pmc [devel]src
-src/pmc/packfiledirectory.pmc [devel]src
-src/pmc/packfilefixupentry.pmc [devel]src
-src/pmc/packfilefixuptable.pmc [devel]src
-src/pmc/packfilerawsegment.pmc [devel]src
-src/pmc/packfilesegment.pmc [devel]src
-src/pmc/parrotinterpreter.pmc [devel]src
-src/pmc/parrotlibrary.pmc [devel]src
-src/pmc/parrotrunningthread.pmc [devel]src
-src/pmc/parrotthread.pmc [devel]src
+src/pmc/addrregistry.pmc []
+src/pmc/arrayiterator.pmc []
+src/pmc/bigint.pmc []
+src/pmc/bignum.pmc []
+src/pmc/boolean.pmc []
+src/pmc/callcontext.pmc []
+src/pmc/capture.pmc []
+src/pmc/class.pmc []
+src/pmc/codestring.pmc []
+src/pmc/complex.pmc []
+src/pmc/continuation.pmc []
+src/pmc/coroutine.pmc []
+src/pmc/default.pmc []
+src/pmc/env.pmc []
+src/pmc/eval.pmc []
+src/pmc/eventhandler.pmc []
+src/pmc/exception.pmc []
+src/pmc/exceptionhandler.pmc []
+src/pmc/exporter.pmc []
+src/pmc/filehandle.pmc []
+src/pmc/fixedbooleanarray.pmc []
+src/pmc/fixedfloatarray.pmc []
+src/pmc/fixedintegerarray.pmc []
+src/pmc/fixedpmcarray.pmc []
+src/pmc/fixedstringarray.pmc []
+src/pmc/float.pmc []
+src/pmc/handle.pmc []
+src/pmc/hash.pmc []
+src/pmc/hashiterator.pmc []
+src/pmc/hashiteratorkey.pmc []
+src/pmc/imageio.pmc []
+src/pmc/imageiosize.pmc []
+src/pmc/imageiostrings.pmc []
+src/pmc/integer.pmc []
+src/pmc/iterator.pmc []
+src/pmc/key.pmc []
+src/pmc/lexinfo.pmc []
+src/pmc/lexpad.pmc []
+src/pmc/managedstruct.pmc []
+src/pmc/multisub.pmc []
+src/pmc/namespace.pmc []
+src/pmc/nci.pmc []
+src/pmc/null.pmc []
+src/pmc/object.pmc []
+src/pmc/opcode.pmc []
+src/pmc/oplib.pmc []
+src/pmc/orderedhash.pmc []
+src/pmc/orderedhashiterator.pmc []
+src/pmc/packfile.pmc []
+src/pmc/packfileannotation.pmc []
+src/pmc/packfileannotations.pmc []
+src/pmc/packfileconstanttable.pmc []
+src/pmc/packfiledebug.pmc []
+src/pmc/packfiledirectory.pmc []
+src/pmc/packfilefixupentry.pmc []
+src/pmc/packfilefixuptable.pmc []
+src/pmc/packfilerawsegment.pmc []
+src/pmc/packfilesegment.pmc []
+src/pmc/parrotinterpreter.pmc []
+src/pmc/parrotlibrary.pmc []
+src/pmc/parrotthread.pmc []
src/pmc/pmc.num []
-src/pmc/pmcproxy.pmc [devel]src
-src/pmc/pointer.pmc [devel]src
-src/pmc/resizablebooleanarray.pmc [devel]src
-src/pmc/resizablefloatarray.pmc [devel]src
-src/pmc/resizableintegerarray.pmc [devel]src
-src/pmc/resizablepmcarray.pmc [devel]src
-src/pmc/resizablestringarray.pmc [devel]src
-src/pmc/retcontinuation.pmc [devel]src
-src/pmc/role.pmc [devel]src
-src/pmc/scalar.pmc [devel]src
-src/pmc/scheduler.pmc [devel]src
-src/pmc/schedulermessage.pmc [devel]src
-src/pmc/sockaddr.pmc [devel]src
-src/pmc/socket.pmc [devel]src
-src/pmc/string.pmc [devel]src
-src/pmc/stringhandle.pmc [devel]src
-src/pmc/stringiterator.pmc [devel]src
-src/pmc/sub.pmc [devel]src
-src/pmc/task.pmc [devel]src
-src/pmc/timer.pmc [devel]src
-src/pmc/undef.pmc [devel]src
-src/pmc/unmanagedstruct.pmc [devel]src
+src/pmc/pmcproxy.pmc []
+src/pmc/pointer.pmc []
+src/pmc/resizablebooleanarray.pmc []
+src/pmc/resizablefloatarray.pmc []
+src/pmc/resizableintegerarray.pmc []
+src/pmc/resizablepmcarray.pmc []
+src/pmc/resizablestringarray.pmc []
+src/pmc/role.pmc []
+src/pmc/scalar.pmc []
+src/pmc/scheduler.pmc []
+src/pmc/schedulermessage.pmc []
+src/pmc/sockaddr.pmc []
+src/pmc/socket.pmc []
+src/pmc/string.pmc []
+src/pmc/stringhandle.pmc []
+src/pmc/stringiterator.pmc []
+src/pmc/sub.pmc []
+src/pmc/task.pmc []
+src/pmc/threadinterpreter.pmc []
+src/pmc/timer.pmc []
+src/pmc/undef.pmc []
+src/pmc/unmanagedstruct.pmc []
src/pmc_freeze.c []
src/runcore/cores.c []
src/runcore/main.c []
@@ -1582,6 +1477,8 @@
t/codingstd/svn_id.t [test]
t/codingstd/tabs.t [test]
t/codingstd/trailing_space.t [test]
+t/compilers/data_json/from_parrot.t [test]
+t/compilers/data_json/to_parrot.t [test]
t/compilers/imcc/imcpasm/cfg.t [test]
t/compilers/imcc/imcpasm/opt0.t [test]
t/compilers/imcc/imcpasm/opt1.t [test]
@@ -1611,8 +1508,6 @@
t/compilers/imcc/syn/symbols.t [test]
t/compilers/imcc/syn/tail.t [test]
t/compilers/imcc/syn/veracity.t [test]
-t/compilers/json/from_parrot.t [test]
-t/compilers/json/to_parrot.t [test]
t/compilers/pct/complete_workflow.t [test]
t/compilers/pct/past.t [test]
t/compilers/pct/pct_hllcompiler.t [test]
@@ -1718,13 +1613,14 @@
t/configure/testlib/verbosefoobar [test]
t/distro/file_metadata.t [test]
t/distro/manifest.t [test]
-t/distro/meta_yml.t [test]
t/dynoplibs/math.t [test]
t/dynoplibs/obscure.t [test]
t/dynpmc/dynlexpad.t [test]
+t/dynpmc/file.t [test]
t/dynpmc/foo.t [test]
t/dynpmc/foo2.t [test]
-t/dynpmc/gdbmhash.t [test]
+t/dynpmc/gziphandle.t [test]
+t/dynpmc/os.t [test]
t/dynpmc/pccmethod_test.t [test]
t/dynpmc/rational.t [test]
t/dynpmc/rotest.t [test]
@@ -1743,7 +1639,9 @@
t/examples/subs.t [test]
t/examples/tutorial.t [test]
t/harness [test]
+t/harness.pir [test]
t/include/fp_equality.t [test]
+t/library/archive_tar.t [test]
t/library/cgi_query_hash.t [test]
t/library/configure.t [test]
t/library/coroutine.t [test]
@@ -1753,6 +1651,7 @@
t/library/iter.t [test]
t/library/md5.t [test]
t/library/mime_base64.t [test]
+t/library/osutils.t [test]
t/library/p6object.t [test]
t/library/parrotlib.t [test]
t/library/pcre.t [test]
@@ -1763,6 +1662,7 @@
t/library/range.t [test]
t/library/streams.t [test]
t/library/string_utils.t [test]
+t/library/tap_parser.t [test]
t/library/tcl_glob.t [test]
t/library/tcl_lib.t [test]
t/library/test_builder_tester.t [test]
@@ -1857,7 +1757,6 @@
t/op/literal.t [test]
t/op/load_bytecode.t [test]
t/op/number.t [test]
-t/op/pushaction.t [test]
t/op/say.t [test]
t/op/spawnw.t [test]
t/op/sprintf.t [test]
@@ -1903,7 +1802,6 @@
t/pmc/context.t [test]
t/pmc/continuation.t [test]
t/pmc/coroutine.t [test]
-t/pmc/cpointer.t [test]
t/pmc/default.t [test]
t/pmc/env.t [test]
t/pmc/eval.t [test]
@@ -1912,7 +1810,6 @@
t/pmc/exception.t [test]
t/pmc/exceptionhandler.t [test]
t/pmc/exporter.t [test]
-t/pmc/file.t [test]
t/pmc/filehandle.t [test]
t/pmc/fixedbooleanarray.t [test]
t/pmc/fixedfloatarray.t [test]
@@ -1928,6 +1825,7 @@
t/pmc/hashiteratorkey.t [test]
t/pmc/imageio.t [test]
t/pmc/imageiosize.t [test]
+t/pmc/imageiostrings.t [test]
t/pmc/integer.t [test]
t/pmc/io.t [test]
t/pmc/io_iterator.t [test]
@@ -1940,6 +1838,7 @@
t/pmc/multidispatch.t [test]
t/pmc/multisub.t [test]
t/pmc/namespace-old.t [test]
+t/pmc/namespace-subs.t [test]
t/pmc/namespace.t [test]
t/pmc/nci.t [test]
t/pmc/null.t [test]
@@ -1951,7 +1850,6 @@
t/pmc/oplib.t [test]
t/pmc/orderedhash.t [test]
t/pmc/orderedhashiterator.t [test]
-t/pmc/os.t [test]
t/pmc/packfile.t [test]
t/pmc/packfileannotation.t [test]
t/pmc/packfileannotations.t [test]
@@ -1966,7 +1864,6 @@
t/pmc/parrotio.t [test]
t/pmc/parrotlibrary.t [test]
t/pmc/parrotobject.t [test]
-t/pmc/parrotrunningthread.t [test]
t/pmc/parrotthread.t [test]
t/pmc/pmc.t [test]
t/pmc/pmcproxy.t [test]
@@ -1977,7 +1874,6 @@
t/pmc/resizableintegerarray.t [test]
t/pmc/resizablepmcarray.t [test]
t/pmc/resizablestringarray.t [test]
-t/pmc/retcontinuation.t [test]
t/pmc/ro.t [test]
t/pmc/role.t [test]
t/pmc/scalar.t [test]
@@ -2001,6 +1897,7 @@
t/postconfigure/02-data_get_PConfig.t [test]
t/postconfigure/05-trace.t [test]
t/postconfigure/06-data_get_PConfig_Temp.t [test]
+t/profiling/profiling.t [test]
t/run/README []doc
t/run/exit.t [test]
t/run/options.t [test]
@@ -2015,16 +1912,13 @@
t/steps/auto/attributes-01.t [test]
t/steps/auto/backtrace-01.t [test]
t/steps/auto/byteorder-01.t [test]
-t/steps/auto/cgoto-01.t [test]
t/steps/auto/cpu-01.t [test]
-t/steps/auto/crypto-01.t [test]
t/steps/auto/ctags-01.t [test]
t/steps/auto/env-01.t [test]
t/steps/auto/format-01.t [test]
t/steps/auto/frames-01.t [test]
t/steps/auto/gc-01.t [test]
t/steps/auto/gcc-01.t [test]
-t/steps/auto/gdbm-01.t [test]
t/steps/auto/gettext-01.t [test]
t/steps/auto/glibc-01.t [test]
t/steps/auto/gmp-01.t [test]
@@ -2052,6 +1946,7 @@
t/steps/auto/thread-01.t [test]
t/steps/auto/va_ptr-01.t [test]
t/steps/auto/warnings-01.t [test]
+t/steps/auto/zlib-01.t [test]
t/steps/gen/config_h-01.t [test]
t/steps/gen/config_pm-01.t [test]
t/steps/gen/core_pmcs-01.t [test]
@@ -2178,6 +2073,7 @@
tools/dev/checkdepend.pl []
tools/dev/create_language.pl [devel]
tools/dev/debian_docs.sh []
+tools/dev/faces.pl []
tools/dev/fetch_languages.pl []
tools/dev/gen_charset_tables.pl []
tools/dev/gen_class.pl []
@@ -2219,10 +2115,12 @@
tools/dev/search-ops.pl []
tools/dev/svnclobber.pl []
tools/dev/symlink.pl []
+tools/dev/tapir.pir []
tools/dev/vgp []
tools/dev/vgp_darwin []
tools/dev/vms-patch []
tools/dev/vtablize.pl []
+tools/docs/filename_and_chapter.pl []
tools/docs/mk_chm.pl []
tools/docs/ops_summary.pl []
tools/docs/write_docs.pl []
Modified: branches/ops_pct/MANIFEST.SKIP
==============================================================================
--- branches/ops_pct/MANIFEST.SKIP Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/MANIFEST.SKIP Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
# ex: set ro:
# $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Mar 8 22:07:22 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue May 4 14:32:03 2010 UT
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -65,8 +65,8 @@
^all_cstring\.str/
^blib$
^blib/
-^config_lib\.pasm$
-^config_lib\.pasm/
+^config_lib\.pir$
+^config_lib\.pir/
^cover_db$
^cover_db/
^install_config\.fpmc$
@@ -131,6 +131,10 @@
^pirc/
^tags$
^tags/
+^tapir$
+^tapir/
+^tapir\..*$
+^tapir\..*/
^temp\.file$
^temp\.file/
^test$
@@ -184,37 +188,6 @@
^compilers/imcc/imcparser\.h/
^compilers/imcc/imcparser\.output$
^compilers/imcc/imcparser\.output/
-# generated from svn:ignore of 'compilers/json/'
-^compilers/json/JSON\.pbc$
-^compilers/json/JSON\.pbc/
-# generated from svn:ignore of 'compilers/json/JSON/'
-^compilers/json/JSON/.*\.pbc$
-^compilers/json/JSON/.*\.pbc/
-^compilers/json/JSON/.*\.pir$
-^compilers/json/JSON/.*\.pir/
-# generated from svn:ignore of 'compilers/ncigen/'
-^compilers/ncigen/Makefile$
-^compilers/ncigen/Makefile/
-^compilers/ncigen/ncigen\.pbc$
-^compilers/ncigen/ncigen\.pbc/
-# generated from svn:ignore of 'compilers/ncigen/src/'
-^compilers/ncigen/src/gen_actions\.pir$
-^compilers/ncigen/src/gen_actions\.pir/
-^compilers/ncigen/src/gen_builtins\.pir$
-^compilers/ncigen/src/gen_builtins\.pir/
-^compilers/ncigen/src/gen_grammar\.pir$
-^compilers/ncigen/src/gen_grammar\.pir/
-# generated from svn:ignore of 'compilers/nqp/'
-^compilers/nqp/nqp\.pbc$
-^compilers/nqp/nqp\.pbc/
-# generated from svn:ignore of 'compilers/nqp/bootstrap/'
-^compilers/nqp/bootstrap/gen_actions\.pir$
-^compilers/nqp/bootstrap/gen_actions\.pir/
-^compilers/nqp/bootstrap/nqp\.pbc$
-^compilers/nqp/bootstrap/nqp\.pbc/
-# generated from svn:ignore of 'compilers/nqp/src/'
-^compilers/nqp/src/Grammar_gen\.pir$
-^compilers/nqp/src/Grammar_gen\.pir/
# generated from svn:ignore of 'compilers/pct/src/PAST/'
^compilers/pct/src/PAST/.*\.pbc$
^compilers/pct/src/PAST/.*\.pbc/
@@ -269,6 +242,8 @@
^docs/.*\.tmp/
^docs/Makefile$
^docs/Makefile/
+^docs/build$
+^docs/build/
^docs/doc-prep$
^docs/doc-prep/
^docs/html$
@@ -464,6 +439,8 @@
^include/parrot/feature\.h/
^include/parrot/has_header\.h$
^include/parrot/has_header\.h/
+^include/parrot/opsenum\.h$
+^include/parrot/opsenum\.h/
^include/parrot/pbcversion\.h$
^include/parrot/pbcversion\.h/
^include/parrot/platform\.h$
@@ -548,6 +525,9 @@
^runtime/parrot/include/.*\.pasm/
^runtime/parrot/include/.*\.pbc$
^runtime/parrot/include/.*\.pbc/
+# generated from svn:ignore of 'runtime/parrot/languages/'
+^runtime/parrot/languages/data_json$
+^runtime/parrot/languages/data_json/
# generated from svn:ignore of 'runtime/parrot/library/'
^runtime/parrot/library/.*\.pbc$
^runtime/parrot/library/.*\.pbc/
@@ -557,6 +537,9 @@
^runtime/parrot/library/PAST/
^runtime/parrot/library/config\.pir$
^runtime/parrot/library/config\.pir/
+# generated from svn:ignore of 'runtime/parrot/library/Archive/'
+^runtime/parrot/library/Archive/.*\.pbc$
+^runtime/parrot/library/Archive/.*\.pbc/
# generated from svn:ignore of 'runtime/parrot/library/CGI/'
^runtime/parrot/library/CGI/.*\.pbc$
^runtime/parrot/library/CGI/.*\.pbc/
@@ -599,12 +582,20 @@
# generated from svn:ignore of 'runtime/parrot/library/Parrot/'
^runtime/parrot/library/Parrot/.*\.pbc$
^runtime/parrot/library/Parrot/.*\.pbc/
+# generated from svn:ignore of 'runtime/parrot/library/ProfTest/'
+^runtime/parrot/library/ProfTest/.*\.pbc$
+^runtime/parrot/library/ProfTest/.*\.pbc/
+^runtime/parrot/library/ProfTest/.*\.pir$
+^runtime/parrot/library/ProfTest/.*\.pir/
# generated from svn:ignore of 'runtime/parrot/library/Stream/'
^runtime/parrot/library/Stream/.*\.pbc$
^runtime/parrot/library/Stream/.*\.pbc/
# generated from svn:ignore of 'runtime/parrot/library/String/'
^runtime/parrot/library/String/Utils\.pbc$
^runtime/parrot/library/String/Utils\.pbc/
+# generated from svn:ignore of 'runtime/parrot/library/TAP/'
+^runtime/parrot/library/TAP/.*\.pbc$
+^runtime/parrot/library/TAP/.*\.pbc/
# generated from svn:ignore of 'runtime/parrot/library/Tcl/'
^runtime/parrot/library/Tcl/.*\.pbc$
^runtime/parrot/library/Tcl/.*\.pbc/
@@ -736,6 +727,8 @@
^src/dynpmc/.*\.ilk/
^src/dynpmc/.*\.lib$
^src/dynpmc/.*\.lib/
+^src/dynpmc/.*\.mak$
+^src/dynpmc/.*\.mak/
^src/dynpmc/.*\.manifest$
^src/dynpmc/.*\.manifest/
^src/dynpmc/.*\.o$
@@ -767,8 +760,6 @@
# generated from svn:ignore of 'src/gc/'
^src/gc/.*\.bundle$
^src/gc/.*\.bundle/
-^src/gc/.*\.c$
-^src/gc/.*\.c/
^src/gc/.*\.def$
^src/gc/.*\.def/
^src/gc/.*\.dll$
@@ -878,6 +869,13 @@
^t/benchmark/.*\.pasm/
^t/benchmark/.*\.pir$
^t/benchmark/.*\.pir/
+# generated from svn:ignore of 't/compilers/data_json/'
+^t/compilers/data_json/.*\.pbc$
+^t/compilers/data_json/.*\.pbc/
+^t/compilers/data_json/.*\.pir$
+^t/compilers/data_json/.*\.pir/
+^t/compilers/data_json/.*_pbcexe$
+^t/compilers/data_json/.*_pbcexe/
# generated from svn:ignore of 't/compilers/imcc/'
^t/compilers/imcc/.*\.pbc$
^t/compilers/imcc/.*\.pbc/
@@ -908,13 +906,6 @@
^t/compilers/imcc/syn/.*\.pir/
^t/compilers/imcc/syn/.*_pbcexe.*$
^t/compilers/imcc/syn/.*_pbcexe.*/
-# generated from svn:ignore of 't/compilers/json/'
-^t/compilers/json/.*\.pbc$
-^t/compilers/json/.*\.pbc/
-^t/compilers/json/.*\.pir$
-^t/compilers/json/.*\.pir/
-^t/compilers/json/.*_pbcexe$
-^t/compilers/json/.*_pbcexe/
# generated from svn:ignore of 't/compilers/pct/'
^t/compilers/pct/.*\.pbc$
^t/compilers/pct/.*\.pbc/
Modified: branches/ops_pct/MANIFEST.generated
==============================================================================
--- branches/ops_pct/MANIFEST.generated Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/MANIFEST.generated Wed May 5 08:45:29 2010 (r46302)
@@ -2,16 +2,12 @@
# See tools/dev/install_files.pl for documentation on the
# format of this file.
# Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.2.1.0.dylib [main]lib
+blib/lib/libparrot.2.3.0.dylib [main]lib
blib/lib/libparrot.a [main]lib
blib/lib/libparrot.dylib [main]lib
-blib/lib/libparrot.so.2.1.0 [main]lib
+blib/lib/libparrot.so.2.3.0 [main]lib
blib/lib/libparrot.so [main]lib
compilers/data_json/data_json.pbc [data_json]
-compilers/json/JSON.pbc [json]
-compilers/json/JSON/grammar.pbc [json]
-compilers/json/JSON/pge2pir.pbc [json]
-compilers/nqp/nqp.pbc [nqp]
config/gen/call_list/opengl.in []
docs/ops/bit.pod [doc]
docs/ops/cmp.pod [doc]
@@ -37,14 +33,10 @@
include/parrot/extend_vtable.h [main]include
include/parrot/feature.h [main]include
include/parrot/has_header.h [main]include
-include/parrot/oplib/core_ops_cg.h [main]include
-include/parrot/oplib/core_ops_cgp.h [main]include
include/parrot/oplib/core_ops.h [main]include
-include/parrot/oplib/core_ops_switch.h [main]include
include/parrot/oplib/ops.h [main]include
include/parrot/pbcversion.h [devel]include
include/parrot/platform.h [main]include
-include/parrot/platform_interface.h [main]include
include/parrot/platform_limits.h [devel]include
include/parrot/vtable.h [main]include
install_config.fpmc [main]lib
@@ -67,6 +59,8 @@
installable_pbc_to_exe [main]bin
installable_parrot-nqp.exe [main]bin
installable_parrot-nqp [main]bin
+installable_tapir.exe [main]bin
+installable_tapir [main]bin
lib/Parrot/Config/Generated.pm [devel]lib
libparrot.dll [main]bin
libparrot.lib [main]bin
@@ -74,30 +68,22 @@
lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm [devel]lib
lib/Parrot/PMC.pm [devel]lib
parrot.pc [main]pkgconfig
-runtime/parrot/dynext/digest_group.bundle [library]
-runtime/parrot/dynext/digest_group.dll [library]
-runtime/parrot/dynext/digest_group.dylib [library]
-runtime/parrot/dynext/digest_group.so [library]
runtime/parrot/dynext/dynlexpad.bundle [library]
runtime/parrot/dynext/dynlexpad.dll [library]
runtime/parrot/dynext/dynlexpad.dylib [library]
runtime/parrot/dynext/dynlexpad.so [library]
-runtime/parrot/dynext/gdbmhash.bundle [library]
-runtime/parrot/dynext/gdbmhash.dll [library]
-runtime/parrot/dynext/gdbmhash.dylib [library]
-runtime/parrot/dynext/gdbmhash.so [library]
+runtime/parrot/dynext/file.bundle [library]
+runtime/parrot/dynext/file.dll [library]
+runtime/parrot/dynext/file.dylib [library]
+runtime/parrot/dynext/file.so [library]
+runtime/parrot/dynext/gziphandle.bundle [library]
+runtime/parrot/dynext/gziphandle.dll [library]
+runtime/parrot/dynext/gziphandle.dylib [library]
+runtime/parrot/dynext/gziphandle.so [library]
runtime/parrot/dynext/libglutcb.bundle [library]
runtime/parrot/dynext/libglutcb.dll [library]
runtime/parrot/dynext/libglutcb.dylib [library]
runtime/parrot/dynext/libglutcb.so [library]
-runtime/parrot/dynext/libnci_test.bundle [library]
-runtime/parrot/dynext/libnci_test.dll [library]
-runtime/parrot/dynext/libnci_test.dylib [library]
-runtime/parrot/dynext/libnci_test.so [library]
-runtime/parrot/dynext/match_group.bundle [library]
-runtime/parrot/dynext/match_group.dll [library]
-runtime/parrot/dynext/match_group.dylib [library]
-runtime/parrot/dynext/match_group.so [library]
runtime/parrot/dynext/math_ops.so [library]
runtime/parrot/dynext/math_ops.bundle [library]
runtime/parrot/dynext/math_ops.dll [library]
@@ -106,21 +92,23 @@
runtime/parrot/dynext/obscure_ops.dll [library]
runtime/parrot/dynext/obscure_ops.dylib [library]
runtime/parrot/dynext/obscure_ops.so [library]
+runtime/parrot/dynext/os.bundle [library]
+runtime/parrot/dynext/os.dll [library]
+runtime/parrot/dynext/os.dylib [library]
+runtime/parrot/dynext/os.so [library]
runtime/parrot/dynext/rational.bundle [library]
runtime/parrot/dynext/rational.dll [library]
runtime/parrot/dynext/rational.dylib [library]
runtime/parrot/dynext/rational.so [library]
-runtime/parrot/dynext/subproxy.bundle [library]
-runtime/parrot/dynext/subproxy.dll [library]
-runtime/parrot/dynext/subproxy.dylib [library]
-runtime/parrot/dynext/subproxy.so [library]
runtime/parrot/include/call_bits.pasm [main]
runtime/parrot/include/cclass.pasm [main]
runtime/parrot/include/config.fpmc []
runtime/parrot/include/datatypes.pasm [main]
+runtime/parrot/include/dlopenflags.pasm [main]
runtime/parrot/include/errors.pasm [main]
runtime/parrot/include/except_severity.pasm [main]
runtime/parrot/include/except_types.pasm [main]
+runtime/parrot/include/hash_key_type.pasm [main]
runtime/parrot/include/iglobals.pasm [main]
runtime/parrot/include/interpcores.pasm [main]
runtime/parrot/include/interpdebug.pasm [main]
@@ -144,6 +132,7 @@
runtime/parrot/include/tm.pasm [main]
runtime/parrot/include/vtable_methods.pasm [main]
runtime/parrot/include/warnings.pasm [main]
+runtime/parrot/library/Archive/TAR.pbc [main]
runtime/parrot/library/CGI/QueryHash.pbc [main]
runtime/parrot/library/Config/JSON.pbc [main]
runtime/parrot/library/Configure/genfile.pbc [main]
@@ -171,6 +160,7 @@
runtime/parrot/library/OpenGL_funcs.pir [main]
runtime/parrot/library/OpenGL_funcs.pbc [main]
runtime/parrot/library/OpenGL.pbc [main]
+runtime/parrot/library/osutils.pbc [main]
runtime/parrot/library/P6object.pbc [main]
runtime/parrot/library/P6Regex.pbc [main]
runtime/parrot/library/Parrot/Capture_PIR.pbc [main]
@@ -203,6 +193,9 @@
runtime/parrot/library/Stream/Replay.pbc [main]
runtime/parrot/library/Stream/Sub.pbc [main]
runtime/parrot/library/Stream/Writer.pbc [main]
+runtime/parrot/library/TAP/Formatter.pbc [main]
+runtime/parrot/library/TAP/Harness.pbc [main]
+runtime/parrot/library/TAP/Parser.pbc [main]
runtime/parrot/library/Tcl/Glob.pbc [main]
runtime/parrot/library/TclLibrary.pbc [main]
runtime/parrot/library/Test/Builder/Test.pbc [main]
@@ -222,8 +215,6 @@
src/jit_emit.h []
src/nci.c []
src/null_config.c []
-src/ops/core_ops_cgp.c []
-src/ops/core_ops_switch.c []
src/parrot_config.c []
src/pmc/boolean.dump [devel]src
src/pmc/continuation.dump [devel]src
Deleted: branches/ops_pct/META.yml
==============================================================================
--- branches/ops_pct/META.yml Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,41 +0,0 @@
-# $Id$
-#
-# This file describes the CPAN distribution for Parrot.
-# See http://module-build.sourceforge.net/META-spec-current.html for details.
----
-name: parrot
-version: 2.1.0
-author: parrot-dev at lists.parrot.org
-abstract: a virtual machine designed for dynamic languages
-license: artistic2
-no_index:
- directory:
- - config
- - languages
- - lib
- - lib/Digest
- - lib/File
- - lib/Parse
- - lib/Perl/Critic
- - lib/Pod
- - t
- - tools
- file:
- - lib/IO/CaptureOutput.pm
- - lib/SmartLink.pm
- package:
- - DB
- - Parrot::Test::DB
- - Parrot::Distribution
- - Parrot::Docs::HTMLPage
- - Parrot::OpTrans::CGP
- - Parrot::OpTrans::CSwitch
- - Parrot::OpsFile
-requires:
- Storable: 2.12
- perl: 5.8.4
-resources:
- homepage: 'http://parrot.org/'
- license: 'http://opensource.org/licenses/artistic-license-2.0.php'
- bugtracker: 'https://trac.parrot.org/parrot/'
-generated_by: Humans
Deleted: branches/ops_pct/Makefile.PL
==============================================================================
--- branches/ops_pct/Makefile.PL Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,45 +0,0 @@
-#! perl
-
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Makefile.PL - CPAN installer passthrough to configure Parrot
-
-=head1 DESCRIPTION
-
-This file exists only to allow users of a CPAN shell to configure and build
-Parrot. If you're reading this yourself, use F<Configure.pl>
-
-=cut
-
-use strict;
-use warnings;
-
-BEGIN { require 5.008 }
-
-my %translations =
-(
- INSTALL_BASE => 'prefix',
- LIB => 'lib',
- PREFIX => 'prefix',
-);
-
-my @commands;
-
-for my $arg (@ARGV)
-{
- my ($name, $value) = split /=/, $arg, 2;
- next unless exists $translations{ $name };
- push @commands, "--$name=$value";
-}
-
-system( $^X, 'Configure.pl', @commands );
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/NEWS
==============================================================================
--- branches/ops_pct/NEWS Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/NEWS Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,44 @@
# $Id$
+New in 2.4.0
+- Deprecations
+ + Tools to distribute on CPAN were removed
+
+New in 2.3.0
+- Core
+ + Allow passing parameters to the dynamic linker ('dlopen' improved)
+ + loadlib opcode added
+ + Calling conventions are now much more consistent, and follows natural
+ semantics of handling arguments and return values
+ + Recursive make for src/dynpmc removed
+ + Datatype STRINGNULL for a single Null STRING added
+ + config_lib.pasm replaced with config_lib.pir
+- Platforms
+ + Improved handling of new compilers
+ + Cygwin packages will be updated again with Parrot releases
+ + Fedora packages add desktop files
+ + gzip and bzip2 compressed tar files for releases
+- Tools
+ + tapir executable added; tapir is a TAP test harness
+ + Added TAP options --merge --ignore-exit
+- Miscellaneous
+ + 3 month cycle for supported releases
+ + Review and vote of GSoC applications
+
+New in 2.2.0
+- Core changes
+ + Most internal allocations now use the GC
+ + RNG non-randomnes fixes
+ + Elimination of much dead code
+- API changes
+ + PMCs can now be initialized from an int
+ + Many legacy ops are removed
+- Platforms
+ + Sun cc and Intel icc support have been restored
+ + Compiler invocation no longer goes through a Perl script
+- Tools
+ + NCI thunks are now generated by self-hosted PIR code
+
New in 2.1.0
- Core changes
+ GC performance and encapsulation were greatly improved.
Modified: branches/ops_pct/PBC_COMPAT
==============================================================================
--- branches/ops_pct/PBC_COMPAT Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/PBC_COMPAT Wed May 5 08:45:29 2010 (r46302)
@@ -27,6 +27,15 @@
# please insert tab separated entries at the top of the list
+6.14 2010.05.03 coke remove popaction, pushmark, pushaction ops.
+6.13 2010.05.03 coke move File/OS pmcs to src/dynpmc
+6.12 2010.05.02 plobsing store constant PMC strings as top level constant strings
+6.11 2010.04.29 tewk remove ParrotRunningThread
+6.10 2010.04.29 NotFound packfiledebug.pmc
+6.9 2010.04.27 bacek remove deprecated in-place string ops (bitwise, charset, case change)
+6.8 2010.04.27 bacek remove deprecated in-place substr ops
+6.7 2010.04.22 coke remove RetContinuation PMC
+6.6 2010.04.17 bacek add replace op
6.5 2010.03.09 cotto remove cpu_ret op
6.4 2010.03.02 cotto remove prederef__ and reserved
6.3 2010.02.16 whiteknight Add OpLib and Opcode PMCs
Modified: branches/ops_pct/README
==============================================================================
--- branches/ops_pct/README Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/README Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.1.0
+This is Parrot, version 2.3.0
------------------------------
Parrot is Copyright (C) 2001-2010, Parrot Foundation.
@@ -92,14 +92,6 @@
perldoc -F docs/intro.pod
-NOTES
------
-
-On some older computers with little RAM, the computed-goto dispatch core
-(ops/core_ops_cg.c) may take a while to compile or may fail to compile at all.
-You can pass a flag to Configure.pl (--cgoto=0) to disable the computed-goto
-core, at a slight cost in runtime speed.
-
CHANGES
-------
Modified: branches/ops_pct/README_cygwin.pod
==============================================================================
--- branches/ops_pct/README_cygwin.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/README_cygwin.pod Wed May 5 08:45:29 2010 (r46302)
@@ -25,22 +25,22 @@
Runtime requirements:
- libreadline6 ncurses libintl8 libgmp3 libgdbm4
+ libreadline6 ncurses libintl8 libgmp3
Optional requirements:
- libicu38 libpq5 openssl
+ libicu38 libpq5
for opengl: w32api opengl or libglut3 xorg-x11-base xorg-x11-bin-dlls
Build requirements:
gcc make perl parrot readline libncurses-devel libgmp-devel
- libgdbm-devel pcre-devel
+ pcre-devel
Optional build requirements:
- libicu-devel openssl-devel
+ libicu-devel
for Cygwin/X opengl: freeglut libglut-devel xorg-x11-devel
Modified: branches/ops_pct/README_win32.pod
==============================================================================
--- branches/ops_pct/README_win32.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/README_win32.pod Wed May 5 08:45:29 2010 (r46302)
@@ -85,15 +85,9 @@
The availability of these libraries is checked by Configure.pl.
-B<libcrypto> - a part of libssl / OpenSSL
-L<http://gnuwin32.sourceforge.net/>
-
B<gettext> - library and tools for native language support
L<http://gnuwin32.sourceforge.net/>
-B<gdbm> - GNU database manager
-L<http://gnuwin32.sourceforge.net/>
-
B<GMP> - GNU multiple precision arithmetic library
L<http://developer.berlios.de/projects/win32gmp/>
Modified: branches/ops_pct/RESPONSIBLE_PARTIES
==============================================================================
--- branches/ops_pct/RESPONSIBLE_PARTIES Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/RESPONSIBLE_PARTIES Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2009, Parrot Foundation.
+# Copyright (C) 2002-2010, Parrot Foundation.
# $Id$
This is a list of project roles, with a partial list of the folks who have
@@ -62,6 +62,7 @@
Reini Urban (cygwin)
Will Coleda (MacPorts)
Jerry Gay (Windows)
+ Gerd Pokorra (Fedora)
Patch Monster chromatic
Modified: branches/ops_pct/VERSION
==============================================================================
--- branches/ops_pct/VERSION Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/VERSION Wed May 5 08:45:29 2010 (r46302)
@@ -1 +1 @@
-2.1.0
+2.3.0
Modified: branches/ops_pct/compilers/data_json/Defines.mak
==============================================================================
--- branches/ops_pct/compilers/data_json/Defines.mak Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/data_json/Defines.mak Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
-DATA_JSON_LIB_PBCS = $(LIBRARY_DIR)/data_json.pbc
+DATA_JSON_LIB_PBCS = runtime/parrot/languages/data_json/data_json.pbc
-DATA_JSON_CLEANUPS = $(LIBRARY_DIR)/data_json.pbc \
+DATA_JSON_CLEANUPS = $(DATA_JSON_LIB_PBCS) \
compilers/data_json/data_json.pbc \
compilers/data_json/data_json/grammar.pir \
compilers/data_json/data_json/pge2pir.pir
Modified: branches/ops_pct/compilers/data_json/Rules.mak
==============================================================================
--- branches/ops_pct/compilers/data_json/Rules.mak Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/data_json/Rules.mak Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,5 @@
-$(LIBRARY_DIR)/data_json.pbc: compilers/data_json/data_json.pbc
+runtime/parrot/languages/data_json/data_json.pbc: compilers/data_json/data_json.pbc
+ $(MKPATH) runtime/parrot/languages/data_json
$(CP) compilers/data_json/data_json.pbc $@
compilers/data_json/data_json.pbc : \
Modified: branches/ops_pct/compilers/imcc/Rules.in
==============================================================================
--- branches/ops_pct/compilers/imcc/Rules.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/Rules.in Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,5 @@
compilers/imcc/pcc$(O) : \
+ compilers/imcc/pcc.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -12,6 +13,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/instructions$(O) : \
+ compilers/imcc/instructions.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -25,6 +27,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/pbc$(O) : \
+ compilers/imcc/pbc.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -38,6 +41,7 @@
include/pmc/pmc_sub.h
compilers/imcc/parser_util$(O) : \
+ compilers/imcc/parser_util.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -56,6 +60,7 @@
include/pmc/pmc_sub.h
compilers/imcc/imc$(O) : \
+ compilers/imcc/imc.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -68,6 +73,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/cfg$(O) : \
+ compilers/imcc/cfg.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -80,6 +86,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/debug$(O) : \
+ compilers/imcc/debug.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -126,6 +133,7 @@
$(CC) $(CFLAGS) @optimize::compilers/imcc/imcparser.c@ @ccwarn::compilers/imcc/imcparser.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/imcparser.c
compilers/imcc/main$(O) : \
+ compilers/imcc/main.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -159,6 +167,7 @@
$(CC) $(CFLAGS) @optimize::compilers/imcc/optimizer.c@ @ccwarn::compilers/imcc/optimizer.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c compilers/imcc/optimizer.c
compilers/imcc/reg_alloc$(O) : \
+ compilers/imcc/reg_alloc.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -171,6 +180,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/sets$(O) : \
+ compilers/imcc/sets.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -182,6 +192,7 @@
$(PARROT_H_HEADERS)
compilers/imcc/symreg$(O) : \
+ compilers/imcc/symreg.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
Modified: branches/ops_pct/compilers/imcc/cfg.c
==============================================================================
--- branches/ops_pct/compilers/imcc/cfg.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/cfg.c Wed May 5 08:45:29 2010 (r46302)
@@ -949,18 +949,6 @@
*
* TT #1244: emit warning in propagate_need()
*/
-#if 0
- if (pred->index == 0) {
- Instruction *ins = r->life_info[i]->first_ins;
- int bbi = ins->bbindex;
- for (; ins && ins->bbindex == bbi; ins = ins->next)
- if (instruction_reads(ins, r))
- break;
- IMCC_warning("propagate_need",
- "'%s' might be used uninitialized in %s:%d\n",
- r->name, function, ins->line);
- }
-#endif
propagate_need(pred, r, i);
}
}
Modified: branches/ops_pct/compilers/imcc/imcc.l
==============================================================================
--- branches/ops_pct/compilers/imcc/imcc.l Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/imcc.l Wed May 5 08:45:29 2010 (r46302)
@@ -87,10 +87,14 @@
static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
+static int handle_identifier(PARROT_INTERP, YYSTYPE *valp, ARGIN(const char *id));
+
#define YY_DECL int yylex(YYSTYPE *valp, yyscan_t yyscanner, PARROT_INTERP)
#define YYCHOP() (yytext[--yyleng] = '\0')
+#define SET_LINE_NUMBER (IMCC_INFO(interp)->line = yylineno)
+
#define DUP_AND_RET(valp, token) \
do { \
if (valp) (valp)->s = mem_sys_strdup(yytext); \
@@ -111,6 +115,7 @@
%option reentrant
%option never-interactive
%option stack
+%option yylineno
LETTER [a-zA-Z_@]
DIGIT [0-9]
@@ -133,7 +138,7 @@
STRINGCONSTANT {SQ_STRING}|{DQ_STRING}
SQ_STRING \'[^'\n]*\'
RANKSPEC \[[,]*\]
-EOL \r?\n
+EOL \r?\n
WS [\t\f\r\x1a ]
SP [ ]
@@ -167,7 +172,10 @@
return 0;
}
+<*>^{WS}* { SET_LINE_NUMBER; }
+
<heredoc1>.*{EOL} {
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
BEGIN(heredoc2);
}
@@ -177,7 +185,6 @@
* arrange them before all wildcard state matches */
/* Newline in the heredoc. Realloc and cat on. */
- IMCC_INFO(interp)->line++;
IMCC_INFO(interp)->heredoc_content =
(char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
strlen(IMCC_INFO(interp)->heredoc_content) +
@@ -187,6 +194,7 @@
}
<heredoc2>.* {
+ SET_LINE_NUMBER;
/* Are we at the end of the heredoc? */
if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
/* End of the heredoc. */
@@ -209,7 +217,7 @@
yy_pop_state(yyscanner);
yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest, yyscanner);
- /* the EOF rule will increment the line number; decrement here */
+ /* not sure we need this decrement; more testing needed */
IMCC_INFO(interp)->line--;
return STRINGC;
}
@@ -244,7 +252,7 @@
<*>setline{SP}+ { yy_push_state(cmt1, yyscanner); }
<cmt1>{DIGITS} {
- IMCC_INFO(interp)->line = atoi(yytext);
+ yylineno = IMCC_INFO(interp)->line = atoi(yytext);
yy_pop_state(yyscanner);
yy_push_state(cmt4, yyscanner);
return LINECOMMENT;
@@ -252,7 +260,6 @@
<cmt4>.*{EOL} {
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
<INITIAL,emit>{EOL} {
@@ -260,7 +267,6 @@
BEGIN(INITIAL);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
@@ -276,7 +282,6 @@
yy_pop_state(yyscanner);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
@@ -284,23 +289,24 @@
<INITIAL,emit,macro>^"=cut"{EOL} {
/* this is a stand-alone =cut, but we're not in POD mode, so ignore. */
- IMCC_INFO(interp)->line++;
+ SET_LINE_NUMBER;
}
-<INITIAL,emit,macro>^"=" {
+<INITIAL,emit,macro>^"=".*{EOL} {
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 1;
yy_push_state(pod, yyscanner);
}
<pod>^"=cut"{EOL} {
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 0;
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
-<pod>.* { /*ignore*/ }
+<pod>.* { SET_LINE_NUMBER; }
-<pod>{EOL} { IMCC_INFO(interp)->line++; }
+<pod>{EOL} { /* ignore */ }
<*>".line" return TK_LINE;
<*>".file" return TK_FILE;
@@ -337,7 +343,7 @@
":instanceof" return SUB_INSTANCE_OF;
":subid" return SUBID;
-".get_result" return RESULT;
+".get_result" return RESULT;
".get_results" return GET_RESULTS;
".yield" return YIELDT;
".set_yield" return SET_YIELD;
@@ -447,6 +453,8 @@
}
<emit,INITIAL>".macro" {
+ /* the initial whitespace catcher misses this one */
+ SET_LINE_NUMBER;
return read_macro(valp, interp, yyscanner);
}
@@ -485,7 +493,6 @@
}
<emit,INITIAL>{ID}"$" {
-
if (valp) {
char *label;
size_t len;
@@ -635,34 +642,8 @@
return REG;
}
-<emit,INITIAL>{ID} {
- if (!IMCC_INFO(interp)->is_def) {
- SymReg *r = find_sym(interp, yytext);
-
- if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
- valp->sr = r;
- return VAR;
- }
-
- if (IMCC_INFO(interp)->cur_unit
- && IMCC_INFO(interp)->cur_unit->instructions
- && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
- && r->pcc_sub)
- {
- if (((r->pcc_sub->pragma & P_METHOD)
- || (IMCC_INFO(interp)->cur_unit->is_vtable_method))
- && !strcmp(yytext, "self")) {
- valp->sr = mk_ident(interp, "self", 'P');
- IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
- return VAR;
- }
- }
- }
-
- valp->s = mem_sys_strdup(yytext);
- return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
- }
+<emit,INITIAL>{ID} { return handle_identifier(interp, valp, yytext); }
<emit,INITIAL>{WS}+ /* skip */;
@@ -684,10 +665,13 @@
<INITIAL><<EOF>> yyterminate();
-<macro>".endm" DUP_AND_RET(valp, ENDM);
+<macro>".endm" {
+ /* the initial whitespace catcher misses this one */
+ SET_LINE_NUMBER;
+ DUP_AND_RET(valp, ENDM);
+}
<macro>{WS}*{EOL} {
- IMCC_INFO(interp)->line++;
DUP_AND_RET(valp, '\n');
}
@@ -745,7 +729,6 @@
return IDENTIFIER;
}
-<macro>^{WS}+ /* skip leading ws */;
<macro>{WS}+ DUP_AND_RET(valp, ' ');
<macro>[SNIP]{DIGITS} DUP_AND_RET(valp, REG);
<macro>"$"[SNIP]{DIGITS} DUP_AND_RET(valp, REG);
@@ -814,6 +797,9 @@
frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
IMCC_INFO(interp)->frames = frame;
+ /* start at the effective *starting line* of the macro */
+ IMCC_INFO(interp)->line = frame->s.line - 2;
+
yy_scan_string(expansion, yyscanner);
}
@@ -1069,9 +1055,6 @@
IMCC_INFO(interp)->macro_buffer = NULL;
IMCC_INFO(interp)->cur_macro_name = NULL;
- /* the ENDM rule doesn't set the line number */
- IMCC_INFO(interp)->line--;
-
return MACRO;
}
@@ -1232,8 +1215,6 @@
}
}
- /* let the normal EOF rules match line numbers */
- IMCC_INFO(interp)->line = m->line - 1;
scan_string(frame, m->expansion, yyscanner);
return 1;
@@ -1283,15 +1264,19 @@
scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
{
yyguts_t * const yyg = (yyguts_t *)yyscanner;
+ const int oldline = IMCC_INFO(interp)->line;
frame->buffer = YY_CURRENT_BUFFER;
frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
IMCC_INFO(interp)->frames = frame;
IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
- IMCC_INFO(interp)->line = 1;
+ /* let the start of line rule increment this to 1 */
+ IMCC_INFO(interp)->line = 0;
yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE, yyscanner),
yyscanner);
+
+ IMCC_INFO(interp)->line = oldline;
}
void
@@ -1469,6 +1454,36 @@
return yyg->yy_hold_char == '\0';
}
+static int
+handle_identifier(PARROT_INTERP, YYSTYPE *valp, const char *text)
+{
+ if (!IMCC_INFO(interp)->is_def) {
+ SymReg *r = find_sym(interp, text);
+
+ if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
+ valp->sr = r;
+ return VAR;
+ }
+
+ if (IMCC_INFO(interp)->cur_unit
+ && IMCC_INFO(interp)->cur_unit->instructions
+ && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
+ && r->pcc_sub)
+ {
+ if (((r->pcc_sub->pragma & P_METHOD)
+ || (IMCC_INFO(interp)->cur_unit->is_vtable_method))
+ && !strcmp(text, "self")) {
+ valp->sr = mk_ident(interp, "self", 'P');
+ IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
+ return VAR;
+ }
+ }
+ }
+
+ valp->s = mem_sys_strdup(text);
+ return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
+}
+
/*
* Local variables:
* c-file-style: "parrot"
Modified: branches/ops_pct/compilers/imcc/imcc.y
==============================================================================
--- branches/ops_pct/compilers/imcc/imcc.y Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/imcc.y Wed May 5 08:45:29 2010 (r46302)
@@ -1085,7 +1085,7 @@
%nonassoc '\n'
%nonassoc <t> PARAM
-%token <t> HLL TK_LINE TK_FILE
+%token <t> SOL HLL TK_LINE TK_FILE
%token <t> GOTO ARG IF UNLESS PNULL SET_RETURN SET_YIELD
%token <t> ADV_FLAT ADV_SLURPY ADV_OPTIONAL ADV_OPT_FLAG ADV_NAMED ADV_ARROW
%token <t> NEW ADV_INVOCANT ADV_CALL_SIG
@@ -1494,13 +1494,13 @@
ns_entry_name:
NS_ENTRY
{
- $$ = 0;
+ $$ = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
}
| NS_ENTRY '(' any_string ')'
{
- $$ = 0;
+ $$ = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = $3;
IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
}
@@ -2510,26 +2510,19 @@
* before the newline, and thus, line is the line *after* the
* error. Instead of duplicating code for both cases (the 'newline' and
* non-newline case, do the test twice; efficiency is not important when
- * we have an error anyway.
- */
+ * we have an error anyway. */
if (!at_eof(yyscanner)) {
- if (*chr == '\n') {
- IMCC_INFO(interp)->line--;
- }
-
IMCC_warning(interp, "error:imcc:%s", s);
+
/* don't print the current token if it is a newline */
- if (*chr != '\n') {
+ if (*chr != '\n')
IMCC_warning(interp, " ('%s')", chr);
- }
- IMCC_print_inc(interp);
-
- if (*chr == '\n') {
- IMCC_INFO(interp)->line++;
- }
+ IMCC_print_inc(interp);
}
- else { /* scanner is at end of file; just to be sure, do not print "current" token. */
+
+ /* scanner is at EOF; just to be sure, don't print "current" token */
+ else {
IMCC_warning(interp, "error:imcc:%s", s);
IMCC_print_inc(interp);
}
Modified: branches/ops_pct/compilers/imcc/imclexer.c
==============================================================================
--- branches/ops_pct/compilers/imcc/imclexer.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/imclexer.c Wed May 5 08:45:29 2010 (r46302)
@@ -204,7 +204,20 @@
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
- #define YY_LESS_LINENO(n)
+ /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
+ * access to the local variable yy_act. Since yyless() is a macro, it would break
+ * existing scanners that call yyless() from OUTSIDE yylex.
+ * One obvious solution it to make yy_act a global. I tried that, and saw
+ * a 5% performance hit in a non-yylineno scanner, because yy_act is
+ * normally declared as a register variable-- so it is not worth it.
+ */
+ #define YY_LESS_LINENO(n) \
+ do { \
+ int yyl;\
+ for ( yyl = n; yyl < yyleng; ++yyl )\
+ if ( yytext[yyl] == '\n' )\
+ --yylineno;\
+ }while(0)
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
@@ -385,125 +398,129 @@
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[1062] =
+static yyconst flex_int16_t yy_accept[1095] =
{ 0,
- 0, 0, 0, 0, 0, 0, 16, 16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 3, 149, 135, 134, 10, 134, 135, 135, 11,
- 135, 135, 135, 135, 135, 135, 115, 135, 95, 135,
- 119, 119, 135, 87, 135, 89, 133, 133, 133, 133,
- 133, 133, 133, 133, 135, 135, 14, 134, 134, 135,
- 135, 135, 135, 133, 14, 147, 142, 137, 142, 147,
- 147, 147, 147, 147, 119, 119, 147, 145, 145, 145,
- 141, 141, 14, 16, 17, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 148, 135, 8, 8,
-
- 135, 135, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 5, 135, 9, 135, 135, 135, 135, 135,
- 119, 119, 135, 135, 135, 135, 12, 135, 135, 135,
- 135, 135, 119, 119, 135, 135, 135, 148, 1, 148,
- 148, 148, 148, 148, 119, 119, 148, 148, 148, 3,
- 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 134, 0, 10, 92, 0, 124, 0, 131, 131,
- 131, 131, 131, 100, 84, 103, 0, 93, 98, 0,
- 119, 96, 97, 118, 109, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
-
- 117, 117, 101, 99, 118, 0, 0, 123, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 81, 88, 91, 64, 90, 82, 114, 0,
- 133, 116, 132, 133, 74, 133, 133, 133, 133, 133,
- 133, 104, 85, 105, 86, 0, 134, 117, 117, 117,
- 117, 117, 117, 0, 0, 0, 0, 142, 137, 142,
- 0, 0, 0, 146, 146, 146, 146, 145, 0, 143,
- 145, 141, 141, 16, 17, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 0, 0, 8, 0, 4,
+ 0, 1, 0, 1, 0, 1, 17, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 4, 1, 149, 136, 135, 11, 135, 136, 136, 12,
+ 136, 136, 136, 136, 136, 136, 116, 136, 96, 136,
+ 120, 120, 136, 88, 136, 90, 134, 134, 134, 134,
+ 134, 134, 134, 134, 136, 136, 1, 1, 136, 135,
+ 135, 136, 136, 136, 136, 134, 1, 1, 136, 147,
+ 142, 138, 142, 147, 147, 147, 147, 147, 120, 120,
+ 147, 145, 145, 145, 1, 1, 147, 17, 18, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 1,
+
+ 1, 17, 148, 136, 9, 9, 136, 136, 1, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 1,
+ 6, 136, 10, 136, 136, 136, 136, 136, 120, 120,
+ 136, 136, 136, 1, 1, 136, 13, 136, 136, 136,
+ 136, 136, 120, 120, 136, 136, 136, 1, 1, 148,
+ 2, 148, 148, 148, 148, 148, 120, 120, 148, 148,
+ 148, 1, 1, 4, 3, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 1, 1, 135, 0, 11,
+ 93, 0, 125, 0, 132, 132, 132, 132, 132, 101,
+ 85, 104, 0, 94, 99, 0, 120, 97, 98, 119,
+
+ 110, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 102, 100,
+ 119, 0, 0, 124, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 82, 89,
+ 92, 65, 91, 83, 115, 0, 134, 117, 133, 134,
+ 75, 134, 134, 134, 134, 134, 134, 105, 86, 106,
+ 87, 1, 0, 15, 0, 92, 65, 0, 135, 118,
+ 118, 118, 118, 118, 118, 0, 0, 0, 0, 1,
+ 142, 138, 142, 0, 0, 0, 146, 146, 146, 146,
+ 145, 0, 143, 145, 1, 1, 17, 18, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 1, 17, 0,
+ 0, 9, 0, 1, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 1, 0, 10, 0, 0, 0, 125, 0,
+ 0, 0, 0, 120, 119, 0, 0, 119, 0, 0,
+ 124, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 13, 0, 0, 0, 125, 0, 0, 0, 0, 120,
+ 119, 0, 0, 119, 0, 0, 124, 0, 0, 0,
+ 0, 0, 0, 1, 1, 0, 2, 0, 0, 0,
+
+ 125, 0, 0, 0, 0, 120, 119, 0, 0, 119,
+ 0, 0, 124, 0, 0, 0, 0, 0, 0, 1,
+ 1, 4, 3, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 0, 9, 0,
- 0, 0, 124, 0, 0, 0, 0, 119, 118, 0,
- 0, 118, 0, 0, 123, 0, 0, 0, 0, 0,
- 0, 0, 12, 0, 0, 0, 124, 0, 0, 0,
- 0, 119, 118, 0, 0, 118, 0, 0, 123, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
- 124, 0, 0, 0, 0, 119, 118, 0, 0, 118,
- 0, 0, 123, 0, 0, 0, 0, 0, 0, 3,
- 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 94, 127, 128, 130, 129, 0, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
- 117, 102, 118, 121, 0, 118, 122, 120, 0, 0,
+ 4, 4, 1, 95, 128, 129, 131, 130, 0, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 103, 119, 122, 0, 119, 123,
+ 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 107,
- 106, 83, 113, 0, 0, 132, 133, 77, 133, 78,
- 79, 133, 133, 133, 0, 117, 117, 0, 0, 138,
- 144, 140, 146, 146, 146, 146, 146, 145, 16, 16,
-
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 0, 0, 0, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 0, 0,
- 0, 118, 121, 0, 118, 122, 120, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 121, 0, 118, 122,
- 120, 0, 0, 0, 0, 0, 0, 0, 0, 118,
- 121, 0, 118, 122, 120, 0, 0, 0, 0, 0,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 0, 118, 68, 117, 117, 117,
- 117, 24, 117, 117, 117, 117, 117, 21, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 23,
- 117, 117, 0, 0, 0, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 125, 0, 0, 108, 0, 126,
- 0, 0, 0, 73, 76, 133, 133, 133, 133, 0,
- 140, 146, 146, 146, 146, 145, 145, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 0, 0, 0, 0, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 0, 118, 0,
- 0, 0, 0, 125, 0, 0, 0, 0, 0, 126,
-
- 0, 0, 0, 0, 0, 0, 118, 0, 0, 0,
- 0, 125, 0, 0, 0, 0, 0, 126, 0, 0,
- 0, 0, 0, 0, 118, 0, 0, 0, 0, 125,
- 0, 0, 0, 0, 0, 126, 0, 0, 0, 0,
- 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 117, 117, 27, 117,
- 117, 19, 117, 117, 117, 117, 18, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 43,
- 0, 59, 0, 40, 0, 0, 39, 38, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 108, 107, 84, 114, 0, 0, 133, 134,
+ 78, 134, 79, 80, 134, 134, 134, 0, 118, 118,
+ 0, 0, 139, 144, 141, 146, 146, 146, 146, 146,
+ 145, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 0, 0, 0, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 0, 0, 0, 119, 122, 0, 119, 123, 121,
+ 0, 0, 0, 0, 0, 0, 0, 0, 119, 122,
+ 0, 119, 123, 121, 0, 0, 0, 0, 0, 0,
+ 0, 0, 119, 122, 0, 119, 123, 121, 0, 0,
+
+ 0, 0, 0, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 0, 119, 69,
+ 118, 118, 118, 118, 25, 118, 118, 118, 118, 118,
+ 22, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 24, 118, 118, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 126, 0, 0,
+ 109, 0, 127, 0, 0, 0, 74, 77, 134, 134,
+ 134, 134, 0, 141, 146, 146, 146, 146, 145, 145,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+ 17, 17, 17, 17, 17, 17, 0, 0, 0, 0,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 119, 0, 0, 0, 0, 126, 0, 0, 0,
+ 0, 0, 127, 0, 0, 0, 0, 0, 0, 119,
+ 0, 0, 0, 0, 126, 0, 0, 0, 0, 0,
+ 127, 0, 0, 0, 0, 0, 0, 119, 0, 0,
+ 0, 0, 126, 0, 0, 0, 0, 0, 127, 0,
+ 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 118,
+ 118, 28, 118, 118, 20, 118, 118, 118, 118, 19,
+
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 44, 0, 60, 0, 41, 0, 0, 40,
+ 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 134, 134, 134, 134, 14, 0, 137,
+ 20, 146, 19, 145, 145, 17, 17, 17, 17, 16,
+ 17, 20, 19, 0, 0, 5, 5, 5, 5, 20,
+ 19, 0, 0, 20, 19, 0, 0, 20, 19, 0,
+ 0, 4, 4, 4, 4, 118, 118, 71, 118, 118,
+ 118, 118, 118, 118, 118, 118, 70, 112, 118, 118,
+ 118, 73, 118, 118, 118, 118, 118, 118, 54, 0,
+
+ 0, 0, 0, 0, 38, 64, 0, 0, 0, 45,
+ 0, 0, 51, 0, 0, 134, 134, 81, 76, 146,
+ 145, 145, 17, 17, 0, 0, 5, 5, 0, 0,
+ 0, 0, 0, 0, 4, 4, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 56, 118, 118, 118, 118, 0, 0, 0, 0,
+ 37, 0, 0, 0, 0, 61, 0, 47, 134, 134,
+ 140, 145, 145, 17, 17, 0, 0, 5, 5, 0,
+ 0, 0, 0, 0, 0, 4, 4, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 113, 118, 59, 118,
+
+ 118, 118, 118, 32, 23, 118, 118, 118, 0, 0,
+ 0, 0, 48, 0, 0, 0, 0, 0, 8, 17,
+ 8, 5, 5, 0, 8, 0, 8, 0, 8, 4,
+ 4, 21, 118, 118, 118, 27, 118, 118, 118, 118,
+ 31, 118, 118, 118, 29, 118, 118, 58, 67, 0,
+ 0, 66, 63, 62, 43, 0, 7, 7, 7, 7,
+ 7, 4, 118, 118, 118, 118, 36, 118, 118, 118,
+ 30, 68, 118, 55, 42, 0, 0, 26, 118, 118,
+ 34, 52, 118, 118, 57, 50, 49, 118, 35, 53,
+ 72, 111, 33, 0
- 133, 133, 133, 133, 13, 0, 136, 19, 146, 18,
- 145, 145, 16, 16, 16, 16, 15, 16, 19, 18,
- 0, 0, 4, 4, 4, 4, 19, 18, 0, 0,
- 19, 18, 0, 0, 19, 18, 0, 0, 3, 3,
- 3, 3, 117, 117, 70, 117, 117, 117, 117, 117,
- 117, 117, 117, 69, 111, 117, 117, 117, 72, 117,
- 117, 117, 117, 117, 117, 53, 0, 0, 0, 0,
- 0, 37, 63, 0, 0, 0, 44, 0, 0, 50,
- 0, 0, 133, 133, 80, 75, 146, 145, 145, 16,
- 16, 0, 0, 4, 4, 0, 0, 0, 0, 0,
-
- 0, 3, 3, 117, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 117, 117, 117, 117, 117, 55, 117,
- 117, 117, 117, 0, 0, 0, 0, 36, 0, 0,
- 0, 0, 60, 0, 46, 133, 133, 139, 145, 145,
- 16, 16, 0, 0, 4, 4, 0, 0, 0, 0,
- 0, 0, 3, 3, 117, 117, 117, 117, 117, 117,
- 117, 117, 117, 112, 117, 58, 117, 117, 117, 117,
- 31, 22, 117, 117, 117, 0, 0, 0, 0, 47,
- 0, 0, 0, 0, 0, 7, 16, 7, 4, 4,
- 0, 7, 0, 7, 0, 7, 3, 3, 20, 117,
-
- 117, 117, 26, 117, 117, 117, 117, 30, 117, 117,
- 117, 28, 117, 117, 57, 66, 0, 0, 65, 62,
- 61, 42, 0, 6, 6, 6, 6, 6, 3, 117,
- 117, 117, 117, 35, 117, 117, 117, 29, 67, 117,
- 54, 41, 0, 0, 25, 117, 117, 33, 51, 117,
- 117, 56, 49, 48, 117, 34, 52, 71, 110, 32,
- 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -549,283 +566,289 @@
10, 10, 10, 1, 1
} ;
-static yyconst flex_int16_t yy_base[1213] =
+static yyconst flex_int16_t yy_base[1251] =
{ 0,
- 0, 4304, 64, 4303, 129, 81, 194, 4302, 259, 0,
- 324, 0, 72, 77, 389, 0, 454, 0, 519, 0,
- 584, 0, 4326, 6980, 98, 6980, 106, 4300, 64, 6980,
- 83, 4299, 102, 4311, 82, 633, 6980, 640, 647, 638,
- 694, 724, 729, 48, 100, 645, 703, 741, 711, 769,
- 709, 743, 777, 782, 704, 710, 771, 734, 799, 789,
- 812, 777, 4298, 798, 4277, 6980, 837, 6980, 843, 715,
- 816, 4308, 857, 863, 0, 869, 4291, 726, 885, 797,
- 890, 914, 4270, 0, 6980, 4310, 810, 4300, 903, 907,
- 942, 903, 4285, 1004, 1069, 4243, 6980, 928, 914, 1015,
-
- 4263, 641, 0, 0, 854, 970, 947, 1118, 941, 4261,
- 1180, 1245, 819, 821, 6980, 830, 934, 909, 1021, 1085,
- 1308, 1087, 927, 1370, 1435, 877, 6980, 893, 1050, 940,
- 1043, 1099, 1498, 1171, 996, 1560, 1625, 952, 6980, 979,
- 1156, 1047, 1209, 1273, 1688, 1180, 1093, 1750, 1815, 0,
- 6980, 4281, 933, 4271, 1091, 1123, 1864, 1236, 4258, 1926,
- 1991, 1151, 1096, 6980, 6980, 946, 6980, 0, 0, 1156,
- 1216, 1261, 1267, 6980, 6980, 6980, 4269, 6980, 6980, 1280,
- 1381, 6980, 6980, 1285, 6980, 0, 4246, 4226, 4232, 1013,
- 4224, 4223, 721, 4219, 947, 59, 709, 856, 4225, 671,
-
- 4228, 4219, 4239, 6980, 1313, 1105, 1336, 6980, 1108, 0,
- 4210, 4220, 4210, 1113, 977, 1006, 810, 739, 4206, 16,
- 4206, 4199, 1215, 6980, 6980, 6980, 6980, 1176, 4234, 4233,
- 1330, 4248, 1397, 1398, 1381, 1446, 1455, 1447, 1457, 1456,
- 1473, 6980, 6980, 6980, 6980, 4194, 1213, 4199, 4199, 1267,
- 4209, 4139, 4136, 1214, 4121, 4118, 995, 1361, 6980, 1420,
- 4154, 1409, 0, 0, 4123, 4125, 1049, 1010, 4167, 1526,
- 1451, 1481, 1490, 0, 6980, 1032, 0, 0, 4161, 1534,
- 1571, 1576, 4122, 4121, 1633, 1254, 1588, 0, 1348, 2038,
- 1155, 2085, 2150, 2215, 4110, 4119, 4118, 1639, 1099, 0,
-
- 1311, 0, 1560, 1682, 1750, 4117, 4116, 1762, 1277, 1599,
- 0, 1502, 2262, 1296, 2309, 2374, 2439, 1337, 6980, 1345,
- 1536, 1671, 1357, 1388, 1500, 1526, 1716, 2502, 1832, 1643,
- 1663, 1844, 1677, 1783, 1405, 1726, 2546, 1736, 2593, 2658,
- 2723, 1473, 6980, 1484, 1791, 1803, 1494, 1505, 1547, 1683,
- 1892, 2786, 1942, 1673, 1729, 1964, 1853, 1901, 1522, 1856,
- 2830, 1885, 2877, 2942, 3007, 1532, 6980, 1554, 1842, 1967,
- 1608, 1641, 1797, 1944, 1956, 3070, 2008, 1808, 1866, 2031,
- 1905, 2101, 1679, 2020, 3114, 2066, 3161, 3226, 3291, 0,
- 6980, 1192, 0, 0, 4153, 1960, 2107, 2215, 4114, 4113,
-
- 2227, 1695, 2124, 0, 1934, 3338, 1582, 3385, 3450, 3515,
- 1897, 1999, 2023, 2027, 2043, 2244, 0, 4128, 4108, 4112,
- 4108, 4104, 4111, 4104, 4095, 4099, 1070, 4090, 4098, 1014,
- 4106, 4090, 4096, 4097, 4089, 4101, 4081, 4080, 4095, 4087,
- 4088, 6980, 2232, 1706, 2111, 2248, 2055, 0, 4058, 4060,
- 4068, 4057, 1727, 4046, 4065, 4056, 4046, 4053, 4051, 4056,
- 4039, 4038, 4038, 4035, 4051, 4039, 4046, 1201, 4075, 6980,
- 6980, 4061, 6980, 1681, 4062, 2277, 2457, 2278, 2279, 2280,
- 2320, 2461, 2322, 2451, 4025, 4039, 4040, 4031, 4057, 6980,
- 2331, 0, 0, 4034, 4027, 4034, 4023, 2445, 2341, 3955,
-
- 3952, 2469, 1848, 2320, 2345, 2093, 3562, 1982, 3992, 2094,
- 3609, 3674, 3944, 3951, 3948, 1647, 2519, 3949, 3946, 2507,
- 1938, 2349, 2523, 2223, 3721, 2469, 3768, 3833, 2609, 2068,
- 2272, 2739, 2482, 2551, 2558, 2617, 3896, 2506, 2344, 2761,
- 3943, 4008, 2631, 2295, 2556, 2751, 2623, 2772, 2792, 2806,
- 4071, 2795, 2513, 2814, 4118, 4183, 2825, 2479, 2579, 2893,
- 2636, 2905, 2915, 2901, 4246, 2858, 2741, 3035, 4293, 4358,
- 3029, 3947, 3944, 3007, 2006, 2565, 2758, 2474, 4405, 2099,
- 3984, 2480, 4452, 4517, 2847, 2909, 0, 3941, 3944, 3942,
- 3934, 3950, 3944, 3948, 3945, 3936, 3932, 0, 3939, 3939,
-
- 3940, 3924, 3931, 3933, 3937, 3935, 3935, 3915, 3933, 0,
- 3922, 3921, 3918, 3919, 3906, 3918, 3904, 3903, 3905, 6980,
- 3892, 3883, 3886, 3875, 3887, 3879, 861, 3885, 3871, 3872,
- 3878, 3871, 3880, 2507, 6980, 0, 3910, 6980, 2511, 6980,
- 0, 3898, 3913, 2814, 2815, 3045, 3046, 3054, 2848, 2029,
- 0, 3867, 3868, 3867, 3866, 1821, 2484, 3037, 3059, 3865,
- 3864, 2524, 0, 0, 3897, 2574, 0, 0, 4582, 3901,
- 4647, 3857, 2132, 3860, 3859, 724, 1376, 3063, 3089, 3858,
- 3857, 2904, 0, 4712, 3895, 4777, 3851, 3102, 3109, 3094,
- 3099, 3143, 3148, 2144, 2268, 3032, 3177, 3321, 3323, 2355,
-
- 2455, 4842, 3134, 4907, 3790, 3187, 3191, 3150, 3307, 3329,
- 3331, 2553, 2645, 3211, 3309, 3336, 3338, 2747, 2753, 4972,
- 3195, 5037, 3781, 3200, 3401, 3316, 3319, 3545, 3547, 2763,
- 2780, 3403, 3414, 3553, 3555, 2839, 2852, 5102, 3344, 5167,
- 3780, 3353, 3408, 3783, 3782, 2779, 0, 0, 3815, 2808,
- 0, 0, 5232, 3819, 5297, 3775, 3765, 3770, 0, 3763,
- 3057, 0, 3764, 3778, 3759, 3774, 0, 3766, 3765, 3761,
- 3773, 3755, 3768, 3759, 3752, 3752, 3307, 3763, 3761, 6980,
- 3764, 6980, 3759, 6980, 3757, 3746, 6980, 6980, 3734, 3737,
- 3739, 3716, 3715, 3707, 3701, 3713, 3693, 3702, 3684, 3626,
-
- 3552, 3736, 3554, 3737, 6980, 3669, 0, 0, 3619, 0,
- 3396, 3519, 0, 0, 5362, 1118, 6980, 3661, 6980, 6980,
- 1128, 765, 0, 0, 5427, 1480, 2929, 3037, 3014, 1171,
- 3090, 3122, 3098, 1211, 3189, 3213, 3363, 1266, 0, 0,
- 3381, 1336, 3617, 3616, 0, 3614, 3608, 3602, 3604, 3596,
- 3600, 3596, 3581, 0, 3589, 3581, 3545, 3557, 0, 3534,
- 3535, 3529, 3527, 3519, 3523, 0, 3479, 3484, 3465, 3374,
- 3356, 6980, 6980, 3331, 3326, 3301, 6980, 3292, 3281, 6980,
- 3291, 3283, 3555, 3620, 3425, 3430, 3431, 2847, 3520, 1611,
- 1698, 1299, 1618, 2512, 2595, 1193, 1553, 1622, 1743, 1841,
-
- 1919, 2425, 2754, 3259, 3161, 3149, 3138, 3136, 3081, 3083,
- 3073, 3062, 3056, 3044, 3044, 3034, 3016, 3017, 0, 3004,
- 2987, 2988, 2972, 2860, 2794, 2730, 2709, 6980, 2689, 2697,
- 2612, 2592, 6980, 2511, 6980, 3632, 3635, 3438, 3623, 3637,
- 1400, 1463, 2254, 2817, 2564, 2848, 1937, 3127, 3302, 3374,
- 3526, 3539, 3548, 3562, 2432, 2427, 2409, 2396, 2293, 2277,
- 2277, 2256, 2243, 0, 2226, 0, 2202, 2199, 2187, 2167,
- 0, 0, 2082, 2056, 2037, 2031, 1977, 1967, 1914, 6980,
- 1881, 1868, 1851, 1793, 1609, 1837, 2111, 1829, 2617, 1808,
- 3658, 3542, 3664, 3751, 3793, 3798, 2933, 1786, 0, 1727,
-
- 1707, 1695, 0, 1649, 1655, 1633, 1570, 0, 1534, 1460,
- 1444, 0, 1397, 1388, 0, 6980, 1366, 1282, 6980, 6980,
- 6980, 6980, 1280, 6980, 0, 3434, 3441, 3593, 0, 1233,
- 1218, 1201, 1158, 0, 1128, 1115, 1027, 0, 0, 907,
- 0, 6980, 898, 839, 0, 816, 767, 0, 719, 662,
- 614, 0, 6980, 6980, 598, 0, 0, 0, 0, 0,
- 6980, 5492, 5498, 5508, 5516, 5520, 5528, 5535, 5546, 5557,
- 5568, 5579, 5586, 5597, 5608, 5619, 5630, 5641, 5652, 5663,
- 5674, 5685, 5696, 5707, 5718, 5729, 5740, 5751, 5762, 5773,
- 5784, 5795, 5801, 5811, 5817, 5823, 5828, 5836, 5845, 5851,
-
- 5855, 5861, 5868, 5879, 5890, 5901, 5912, 5923, 5934, 5945,
- 5956, 5967, 5978, 5989, 6000, 6011, 6022, 6033, 6044, 6055,
- 6066, 6077, 6088, 6099, 6110, 6121, 6127, 6132, 6138, 6147,
- 6158, 6169, 6176, 6184, 6190, 6196, 6202, 6209, 6220, 6231,
- 6242, 6253, 6264, 6271, 6282, 6293, 6304, 6315, 6326, 6337,
- 6348, 6359, 6370, 6381, 6392, 6403, 6414, 6425, 6436, 6447,
- 6458, 6469, 6480, 6491, 6502, 6513, 6524, 6530, 6541, 6552,
- 6563, 6570, 6578, 6584, 6590, 6597, 6608, 6619, 6630, 6641,
- 6652, 6659, 6670, 6681, 6692, 6703, 6714, 6725, 6736, 6747,
- 6758, 6769, 6780, 6791, 6802, 6813, 6824, 6835, 6846, 6857,
-
- 6868, 6879, 6890, 6901, 6912, 6918, 6926, 6932, 6939, 6950,
- 6957, 6968
+ 0, 64, 88, 70, 153, 75, 218, 82, 283, 113,
+ 348, 117, 109, 412, 434, 121, 499, 130, 564, 135,
+ 629, 140, 4665, 7097, 693, 7097, 697, 4639, 63, 7097,
+ 385, 4638, 56, 4648, 58, 686, 7097, 696, 703, 60,
+ 750, 780, 785, 72, 83, 124, 703, 797, 767, 825,
+ 765, 759, 769, 833, 63, 766, 848, 856, 851, 422,
+ 864, 862, 871, 838, 4623, 848, 803, 898, 819, 7097,
+ 902, 7097, 906, 84, 898, 4570, 920, 929, 0, 935,
+ 4553, 405, 951, 828, 941, 956, 909, 0, 7097, 4573,
+ 689, 4563, 965, 969, 1004, 965, 4550, 1066, 1131, 991,
+
+ 995, 4529, 7097, 990, 1009, 1077, 4549, 87, 1001, 0,
+ 0, 791, 1032, 1066, 1180, 1003, 4547, 1242, 1307, 1013,
+ 878, 426, 7097, 894, 1111, 1010, 1105, 1160, 1370, 1129,
+ 959, 1432, 1497, 1057, 1098, 974, 7097, 1032, 1163, 1052,
+ 1218, 1276, 1560, 1300, 1149, 1622, 1687, 1157, 1182, 1041,
+ 7097, 1101, 1185, 1116, 1266, 1337, 1750, 1306, 1209, 1812,
+ 1877, 1225, 1259, 0, 7097, 4567, 880, 4557, 1254, 1356,
+ 1926, 1369, 4544, 1988, 2053, 1213, 1287, 1297, 1346, 7097,
+ 7097, 1168, 7097, 0, 0, 1344, 1360, 1374, 1398, 7097,
+ 7097, 7097, 4555, 7097, 7097, 1406, 1443, 7097, 7097, 1448,
+
+ 7097, 0, 4532, 4512, 4518, 1136, 4510, 4512, 658, 4508,
+ 1425, 105, 883, 922, 4514, 727, 4517, 4508, 4532, 7097,
+ 1505, 1174, 1466, 7097, 1185, 0, 4503, 4513, 4502, 1179,
+ 816, 1292, 685, 947, 4498, 22, 4498, 4491, 1109, 7097,
+ 7097, 7097, 7097, 1252, 4526, 4525, 1406, 4540, 1525, 1533,
+ 1443, 1543, 1467, 1544, 1549, 1560, 1562, 7097, 7097, 7097,
+ 7097, 1593, 1290, 7097, 1300, 1366, 1382, 1513, 1449, 4492,
+ 4492, 1482, 4502, 4501, 4498, 1349, 4483, 4476, 1162, 1582,
+ 1616, 7097, 1639, 4512, 1630, 0, 0, 4481, 4483, 1199,
+ 1321, 4523, 1638, 1515, 1661, 1665, 0, 7097, 1265, 0,
+
+ 0, 4505, 1652, 1698, 1704, 4458, 4457, 1716, 1391, 1661,
+ 0, 1472, 2100, 1543, 2147, 2212, 2277, 1607, 4446, 4455,
+ 4454, 1744, 909, 1674, 0, 1736, 0, 1687, 1823, 1828,
+ 4453, 4452, 1885, 1510, 1778, 0, 1710, 2324, 1563, 2371,
+ 2436, 2501, 1753, 1536, 7097, 1597, 1799, 1856, 1601, 1612,
+ 1737, 1756, 1851, 2564, 1905, 1778, 1784, 2004, 1894, 1918,
+ 1652, 1954, 2608, 1964, 2655, 2720, 2785, 1805, 1862, 1681,
+ 7097, 1718, 1926, 1946, 1772, 1828, 1907, 1975, 2016, 2848,
+ 2026, 1960, 1981, 2070, 2013, 2082, 1858, 2091, 2892, 2037,
+ 2939, 3004, 3069, 2078, 2103, 1978, 7097, 2018, 2128, 2134,
+
+ 2039, 2084, 2111, 2121, 2163, 3132, 2293, 2136, 2301, 2387,
+ 2172, 2174, 2123, 2305, 3176, 2194, 3223, 3288, 3353, 2200,
+ 2205, 0, 7097, 1321, 0, 0, 4489, 2299, 2382, 2310,
+ 4450, 4449, 2501, 2160, 2341, 0, 2314, 3400, 1735, 3447,
+ 3512, 3577, 2345, 2416, 2403, 2410, 2513, 2517, 2529, 0,
+ 4464, 4441, 4445, 4441, 4438, 4445, 4367, 4358, 4362, 786,
+ 4353, 4361, 1051, 4369, 4353, 4359, 4360, 4352, 4364, 4348,
+ 4347, 4362, 4354, 4357, 7097, 2533, 2180, 2537, 2550, 2394,
+ 0, 4348, 4350, 4358, 4347, 2249, 4336, 4355, 4346, 4335,
+ 4342, 4340, 4345, 4331, 4330, 4330, 4327, 4343, 4335, 4342,
+
+ 1390, 4371, 7097, 7097, 4357, 7097, 1441, 4354, 2564, 2566,
+ 2579, 2581, 2583, 2584, 2592, 2624, 2600, 2334, 4332, 4333,
+ 4324, 4348, 7097, 2663, 0, 0, 4304, 4297, 4304, 4293,
+ 2598, 2677, 4294, 4291, 2785, 2308, 2668, 2681, 2509, 3624,
+ 1921, 4331, 1937, 3671, 3736, 4283, 4290, 4287, 1754, 2690,
+ 4288, 4282, 2797, 2339, 2694, 2801, 2557, 3783, 2610, 3830,
+ 3895, 2826, 2809, 2622, 2834, 2615, 2854, 2868, 2880, 3958,
+ 2920, 2829, 2926, 4005, 4070, 2888, 2922, 2832, 2955, 2912,
+ 2967, 2977, 3085, 4133, 3104, 2894, 3110, 4180, 4245, 3126,
+ 3087, 2914, 3153, 3096, 3099, 3165, 3173, 4308, 3119, 2979,
+
+ 3160, 4355, 4420, 3193, 4283, 4280, 3223, 2345, 2973, 3169,
+ 2842, 4467, 2011, 4320, 2129, 4514, 4579, 3235, 3239, 0,
+ 4277, 4276, 4274, 4266, 4282, 4276, 4280, 4277, 4268, 4264,
+ 0, 4271, 4271, 4273, 4257, 4264, 4197, 4201, 4199, 4199,
+ 4179, 4197, 0, 4186, 4185, 4182, 4183, 4174, 4186, 4172,
+ 4171, 4175, 7097, 4183, 4174, 4177, 4166, 4178, 4170, 783,
+ 4176, 4162, 4162, 4168, 4161, 4173, 2584, 7097, 0, 4203,
+ 7097, 2637, 7097, 0, 4191, 4206, 2870, 3116, 3364, 3365,
+ 3373, 3194, 2423, 0, 4160, 4165, 4164, 4163, 3108, 3374,
+ 3245, 3251, 4162, 4161, 2794, 0, 0, 4190, 2819, 0,
+
+ 0, 4644, 4193, 4709, 4149, 2558, 4128, 4126, 1733, 1818,
+ 3255, 3259, 4124, 4123, 3158, 0, 4774, 4161, 4839, 4117,
+ 3380, 3388, 3391, 3428, 3475, 3607, 2638, 2704, 3401, 3463,
+ 3609, 3615, 2714, 2965, 4904, 3094, 4969, 4115, 3473, 3477,
+ 3437, 3593, 3617, 3622, 3178, 3198, 3497, 3595, 3624, 3699,
+ 3247, 3279, 5034, 3431, 5099, 4110, 3485, 3688, 3602, 3605,
+ 3811, 3817, 3281, 3382, 3701, 3711, 3862, 3986, 3465, 3481,
+ 5164, 3630, 5229, 4108, 3639, 3679, 4110, 4105, 2921, 0,
+ 0, 4138, 3103, 0, 0, 5294, 4142, 5359, 4098, 4088,
+ 4093, 0, 4086, 1855, 0, 4087, 4101, 4082, 4097, 0,
+
+ 4089, 4088, 4084, 4027, 4009, 4022, 4013, 4005, 4005, 1006,
+ 4017, 4015, 7097, 4018, 7097, 4013, 7097, 4015, 4012, 7097,
+ 7097, 4001, 4000, 3996, 3965, 3950, 3942, 3925, 3931, 3915,
+ 3923, 3906, 3842, 3976, 4148, 4016, 3800, 7097, 3487, 0,
+ 0, 3834, 0, 2580, 3640, 0, 0, 5424, 1059, 7097,
+ 3878, 7097, 7097, 1332, 1986, 0, 0, 5489, 1540, 3499,
+ 3713, 3668, 1097, 3717, 3721, 3676, 1231, 3725, 3727, 3682,
+ 1504, 0, 0, 3756, 3158, 3821, 3796, 0, 3780, 3773,
+ 3767, 3764, 3757, 3689, 3680, 3662, 0, 3649, 3643, 3619,
+ 3623, 0, 3580, 3582, 3566, 3569, 3530, 3468, 0, 3428,
+
+ 3400, 3386, 3394, 3388, 7097, 7097, 3370, 3365, 3358, 7097,
+ 3352, 3340, 7097, 3352, 3329, 3975, 4150, 3851, 3852, 3874,
+ 3836, 3948, 1800, 1908, 1438, 1810, 2247, 2260, 1174, 1745,
+ 1870, 2063, 2494, 2496, 2778, 2831, 3313, 3820, 3318, 3227,
+ 3222, 3181, 3127, 3114, 3102, 3094, 3083, 3070, 3043, 2951,
+ 2947, 0, 2936, 2919, 2926, 2868, 2816, 2797, 2770, 2652,
+ 7097, 2629, 2634, 2629, 2553, 7097, 2533, 7097, 3958, 3960,
+ 3882, 2382, 3857, 1295, 2643, 772, 1490, 3211, 3599, 942,
+ 1965, 2950, 3091, 3458, 3588, 3841, 3990, 2518, 2475, 2462,
+ 2384, 2368, 2350, 2349, 2332, 2324, 0, 2289, 0, 2268,
+
+ 2265, 2236, 2164, 0, 0, 2129, 2130, 2112, 2102, 2075,
+ 2051, 2025, 7097, 2027, 2018, 1972, 1947, 1709, 1986, 2898,
+ 1978, 3418, 1947, 3885, 4030, 4039, 4033, 4044, 4049, 3625,
+ 1931, 0, 1842, 1816, 1765, 0, 1728, 1728, 1694, 1650,
+ 0, 1585, 1556, 1522, 0, 1476, 1429, 0, 7097, 1375,
+ 1360, 7097, 7097, 7097, 7097, 1321, 7097, 0, 3846, 3868,
+ 3969, 0, 1275, 1198, 1185, 1145, 0, 1117, 1071, 1024,
+ 0, 0, 926, 0, 7097, 869, 827, 0, 752, 675,
+ 0, 367, 356, 61, 0, 7097, 7097, 23, 0, 0,
+ 0, 0, 0, 7097, 5554, 5560, 5570, 5578, 5589, 5593,
+
+ 5601, 5608, 5619, 5630, 5641, 5652, 5659, 5670, 5681, 5692,
+ 5703, 5714, 5725, 5736, 5747, 5758, 5769, 5780, 5791, 5802,
+ 5813, 5824, 5835, 5846, 5857, 5868, 5874, 5884, 5890, 5896,
+ 5901, 5909, 5918, 5929, 5935, 5939, 5945, 5952, 5963, 5974,
+ 5985, 5996, 6007, 6018, 6029, 6040, 6051, 6062, 6073, 6084,
+ 6095, 6106, 6117, 6128, 6139, 6150, 6161, 6172, 6183, 6194,
+ 6205, 6211, 6216, 6222, 6231, 6242, 6253, 6260, 6268, 6279,
+ 6285, 6291, 6297, 6304, 6315, 6326, 6337, 6348, 6359, 6366,
+ 6377, 6388, 6399, 6410, 6421, 6432, 6443, 6454, 6465, 6476,
+ 6487, 6498, 6509, 6520, 6531, 6542, 6553, 6564, 6575, 6586,
+
+ 6597, 6608, 6619, 6625, 6636, 6647, 6658, 6665, 6673, 6684,
+ 6690, 6696, 6703, 6714, 6725, 6736, 6747, 6758, 6765, 6776,
+ 6787, 6798, 6809, 6820, 6831, 6842, 6853, 6864, 6875, 6886,
+ 6897, 6908, 6919, 6930, 6941, 6952, 6963, 6974, 6985, 6996,
+ 7007, 7018, 7024, 7032, 7043, 7049, 7056, 7067, 7074, 7085
} ;
-static yyconst flex_int16_t yy_def[1213] =
+static yyconst flex_int16_t yy_def[1251] =
{ 0,
- 1061, 1, 1, 3, 1061, 5, 1061, 7, 1061, 9,
- 1061, 11, 9, 9, 1061, 15, 1061, 17, 1061, 19,
- 1061, 21, 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1061,
- 1063, 1061, 1061, 1064, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1065, 1065, 1065, 1065,
- 1065, 1065, 1065, 1065, 1061, 1061, 1061, 1061, 1061, 1061,
- 39, 1061, 1061, 1065, 1061, 1061, 1061, 1061, 1061, 1062,
- 1066, 1064, 1061, 1067, 41, 1061, 1061, 1068, 1068, 1068,
- 1061, 1061, 1061, 1069, 1061, 1069, 1070, 1071, 1069, 1069,
- 1069, 91, 1069, 1072, 1072, 1069, 1061, 1061, 41, 1061,
-
- 1073, 1073, 1074, 1074, 1075, 1074, 1074, 1074, 108, 1074,
- 1076, 1076, 1062, 1077, 1061, 1077, 1078, 1079, 1077, 1077,
- 1077, 121, 1077, 1080, 1080, 1081, 1061, 1081, 1082, 1083,
- 1081, 1081, 1081, 133, 1081, 1084, 1084, 1085, 1061, 1085,
- 1086, 1087, 1085, 1085, 1085, 145, 1085, 1088, 1088, 1089,
- 1061, 1089, 1090, 1091, 1089, 1089, 1089, 157, 1089, 1092,
- 1092, 1061, 1061, 1061, 1061, 1062, 1061, 1062, 1093, 1093,
- 1093, 1093, 1093, 1061, 1061, 1061, 1094, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095, 1095, 1095,
- 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
-
- 1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1096,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1097,
- 1098, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
- 1098, 1061, 1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095,
- 1095, 1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1100, 1100, 1101, 1102, 1102, 1102, 1102, 1103, 1099, 1103,
- 1103, 1061, 1061, 1104, 1061, 1105, 1104, 1105, 1106, 1104,
- 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
- 1104, 1107, 1061, 1107, 1104, 1061, 1061, 1061, 1097, 1108,
-
- 1109, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1110, 1061, 1110, 1111, 1061, 1111,
- 1112, 1112, 1111, 1112, 1113, 1113, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1114, 1061,
- 1114, 1115, 1061, 1115, 1116, 1116, 1115, 1116, 1117, 1117,
- 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
- 1115, 1115, 1118, 1061, 1118, 1119, 1061, 1119, 1120, 1120,
- 1119, 1120, 1121, 1121, 1119, 1119, 1119, 1119, 1119, 1119,
- 1119, 1119, 1119, 1119, 1119, 1119, 1122, 1061, 1122, 1123,
- 1061, 1124, 1123, 1124, 1125, 1123, 1123, 1123, 1123, 1123,
-
- 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1126, 1061, 1126,
- 1061, 1127, 1127, 1127, 1127, 1061, 1128, 1128, 1128, 1128,
- 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
- 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
- 1128, 1061, 1061, 1061, 1061, 1061, 1061, 1129, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1130, 1131, 1061,
- 1061, 1061, 1061, 1132, 1133, 1134, 1134, 1134, 1134, 1134,
- 1134, 1134, 1134, 1134, 1061, 1128, 1128, 1061, 1135, 1061,
- 1135, 1136, 1137, 1137, 1137, 1137, 1137, 1138, 1139, 1139,
-
- 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1141, 1142,
- 1143, 1061, 1139, 1061, 1061, 1144, 1145, 1145, 1145, 1145,
- 1145, 1145, 1145, 1145, 1145, 1146, 1147, 1061, 1148, 1148,
- 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1150, 1151,
- 1152, 1061, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
- 1153, 1154, 1155, 1156, 1157, 1061, 1158, 1158, 1158, 1158,
- 1158, 1158, 1158, 1158, 1158, 1159, 1160, 1161, 1162, 1061,
- 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1164,
- 1165, 1166, 1167, 1061, 1061, 1061, 1168, 1168, 1168, 1168,
- 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
-
- 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
- 1168, 1168, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1169, 1061, 1169, 1170, 1061, 1171, 1061,
- 1171, 1172, 1061, 1173, 1173, 1173, 1173, 1173, 1173, 1061,
- 1174, 1175, 1175, 1175, 1175, 1176, 1176, 1177, 1177, 1177,
- 1177, 1178, 1177, 1178, 1179, 1180, 1177, 1180, 1181, 1177,
- 1061, 671, 1177, 1061, 1061, 1182, 1182, 1183, 1183, 1183,
- 1183, 1184, 1183, 1185, 1183, 1061, 686, 1186, 1186, 1186,
- 1186, 1187, 1187, 1186, 1187, 1188, 1188, 1189, 1189, 1186,
-
- 1189, 1190, 1186, 1061, 704, 1191, 1191, 1191, 1191, 1192,
- 1192, 1191, 1192, 1193, 1193, 1194, 1194, 1191, 1194, 1195,
- 1191, 1061, 722, 1196, 1196, 1196, 1196, 1197, 1197, 1196,
- 1197, 1198, 1198, 1199, 1199, 1196, 1199, 1200, 1196, 1061,
- 740, 1201, 1201, 1201, 1201, 1202, 1201, 1202, 1203, 1204,
- 1201, 1204, 1205, 1201, 1061, 755, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1207, 1207, 1207, 1207, 1061, 1061, 1208, 1208, 1208, 1208,
- 1209, 1209, 1210, 1210, 1061, 815, 1061, 1210, 1061, 1061,
- 1211, 1211, 1212, 1212, 1061, 825, 1186, 1186, 704, 704,
- 1191, 1191, 722, 722, 1196, 1196, 740, 740, 1201, 1201,
- 755, 755, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1207, 1207, 1207, 1207, 1208, 1209, 1209, 815,
- 815, 1211, 1211, 825, 825, 704, 704, 722, 722, 740,
-
- 740, 755, 755, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1207, 1207, 1061, 1209, 1209,
- 815, 815, 1211, 1211, 825, 825, 704, 704, 722, 722,
- 740, 740, 755, 755, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1210, 1210, 1212, 1212,
- 1186, 1186, 1191, 1191, 1196, 1196, 1201, 1201, 1206, 1206,
-
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1210, 1186, 1191, 1196, 1201, 1206,
- 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1061, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
- 1206, 1206, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
- 0, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061
+ 1094, 1, 1, 3, 1094, 5, 1094, 7, 1094, 9,
+ 1094, 11, 9, 9, 1094, 15, 1094, 17, 1094, 19,
+ 1094, 21, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 1094,
+ 1096, 1094, 1094, 1097, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1098, 1098, 1098, 1098,
+ 1098, 1098, 1098, 1098, 1094, 1094, 1094, 1094, 1099, 1094,
+ 1094, 1094, 39, 1094, 1094, 1098, 1094, 1094, 1099, 1094,
+ 1094, 1094, 1094, 1095, 1100, 1097, 1094, 1101, 41, 1094,
+ 1094, 1102, 1102, 1102, 1094, 1094, 1099, 1103, 1094, 1103,
+ 1104, 1105, 1103, 1103, 1103, 95, 1103, 1106, 1106, 1103,
+
+ 1103, 1103, 1094, 1094, 41, 1094, 1107, 1107, 1094, 1108,
+ 1108, 1109, 1108, 1108, 1108, 115, 1108, 1110, 1110, 1108,
+ 1095, 1111, 1094, 1111, 1112, 1113, 1111, 1111, 1111, 129,
+ 1111, 1114, 1114, 1111, 1111, 1115, 1094, 1115, 1116, 1117,
+ 1115, 1115, 1115, 143, 1115, 1118, 1118, 1115, 1115, 1119,
+ 1094, 1119, 1120, 1121, 1119, 1119, 1119, 157, 1119, 1122,
+ 1122, 1119, 1119, 1123, 1094, 1123, 1124, 1125, 1123, 1123,
+ 1123, 171, 1123, 1126, 1126, 1123, 1123, 1094, 1094, 1094,
+ 1094, 1095, 1094, 1095, 1127, 1127, 1127, 1127, 1127, 1094,
+ 1094, 1094, 1128, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1094, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
+ 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1130, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1131, 1132, 1133, 1132, 1132,
+ 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1094, 1094, 1094,
+ 1094, 1094, 1134, 1094, 1134, 1134, 1134, 1134, 1094, 1129,
+ 1129, 1129, 1129, 1129, 1129, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1135, 1135, 1136, 1137, 1137, 1137, 1137,
+ 1138, 1133, 1138, 1138, 1094, 1094, 1139, 1094, 1140, 1139,
+
+ 1140, 1141, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+ 1139, 1139, 1139, 1139, 1142, 1094, 1142, 1139, 1139, 1094,
+ 1094, 1094, 1131, 1094, 1143, 1144, 1143, 1143, 1143, 1143,
+ 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1145,
+ 1094, 1145, 1143, 1146, 1094, 1146, 1147, 1147, 1146, 1147,
+ 1148, 1148, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+ 1146, 1146, 1146, 1146, 1149, 1094, 1149, 1146, 1146, 1150,
+ 1094, 1150, 1151, 1151, 1150, 1151, 1152, 1152, 1150, 1150,
+ 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
+ 1153, 1094, 1153, 1150, 1150, 1154, 1094, 1154, 1155, 1155,
+
+ 1154, 1155, 1156, 1156, 1154, 1154, 1154, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1154, 1154, 1157, 1094, 1157, 1154,
+ 1154, 1158, 1094, 1159, 1158, 1159, 1160, 1158, 1158, 1158,
+ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1161,
+ 1094, 1161, 1158, 1094, 1162, 1162, 1162, 1162, 1094, 1163,
+ 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+ 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+ 1163, 1163, 1163, 1163, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1164, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1165, 1166, 1094, 1094, 1094, 1094, 1167, 1168, 1169, 1169,
+ 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, 1163, 1163,
+ 1094, 1171, 1094, 1171, 1172, 1173, 1173, 1173, 1173, 1173,
+ 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
+ 1176, 1177, 1178, 1179, 1094, 1175, 1094, 1094, 1180, 1181,
+ 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1183,
+ 1094, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+ 1185, 1186, 1187, 1188, 1094, 1189, 1189, 1189, 1189, 1189,
+ 1189, 1189, 1189, 1189, 1190, 1191, 1192, 1193, 1094, 1194,
+ 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1196,
+
+ 1197, 1198, 1094, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
+ 1199, 1199, 1200, 1201, 1202, 1203, 1094, 1094, 1094, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1205, 1094, 1205, 1206,
+ 1094, 1207, 1094, 1207, 1208, 1094, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1210, 1211, 1212, 1212, 1212, 1212, 1213, 1213,
+ 1214, 1214, 1214, 1214, 1215, 1214, 1215, 1216, 1217, 1214,
+
+ 1217, 1218, 1214, 1094, 704, 1214, 1094, 1094, 1219, 1219,
+ 1220, 1220, 1220, 1220, 1221, 1220, 1222, 1220, 1094, 719,
+ 1223, 1223, 1223, 1223, 1224, 1224, 1223, 1224, 1225, 1225,
+ 1226, 1226, 1223, 1226, 1227, 1223, 1094, 737, 1228, 1228,
+ 1228, 1228, 1229, 1229, 1228, 1229, 1230, 1230, 1231, 1231,
+ 1228, 1231, 1232, 1228, 1094, 755, 1233, 1233, 1233, 1233,
+ 1234, 1234, 1233, 1234, 1235, 1235, 1236, 1236, 1233, 1236,
+ 1237, 1233, 1094, 773, 1238, 1238, 1238, 1238, 1239, 1238,
+ 1239, 1240, 1241, 1238, 1241, 1242, 1238, 1094, 788, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1094, 1245, 1246,
+ 1246, 1246, 1246, 1247, 1247, 1248, 1248, 1094, 848, 1094,
+ 1248, 1094, 1094, 1249, 1249, 1250, 1250, 1094, 858, 1223,
+ 1223, 737, 737, 1228, 1228, 755, 755, 1233, 1233, 773,
+ 773, 1238, 1238, 788, 788, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1244, 1244, 1244, 1244, 1246,
+ 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737, 737,
+ 755, 755, 773, 773, 788, 788, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1244, 1244,
+ 1094, 1247, 1247, 848, 848, 1249, 1249, 858, 858, 737,
+ 737, 755, 755, 773, 773, 788, 788, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248,
+ 1248, 1250, 1250, 1223, 1223, 1228, 1228, 1233, 1233, 1238,
+ 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1248, 1223, 1228,
+ 1233, 1238, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1094, 1094, 1094, 1243, 1243, 1243,
+ 1243, 1243, 1243, 1243, 1243, 1094, 1094, 1243, 1243, 1243,
+ 1243, 1243, 1243, 0, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094
} ;
-static yyconst flex_int16_t yy_nxt[7046] =
+static yyconst flex_int16_t yy_nxt[7163] =
{ 0,
24, 25, 26, 27, 25, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
@@ -833,778 +856,791 @@
47, 47, 48, 47, 48, 47, 48, 48, 47, 24,
47, 47, 47, 47, 47, 47, 47, 49, 47, 50,
47, 47, 51, 47, 52, 47, 47, 53, 47, 54,
- 47, 47, 47, 55, 56, 58, 464, 59, 58, 24,
- 167, 223, 224, 24, 24, 465, 24, 60, 113, 60,
- 61, 24, 81, 113, 82, 81, 62, 63, 24, 24,
- 41, 42, 42, 42, 178, 41, 42, 42, 42, 162,
-
- 431, 162, 162, 168, 432, 83, 179, 162, 164, 162,
- 162, 47, 175, 47, 163, 170, 47, 171, 47, 172,
- 173, 64, 163, 47, 225, 226, 176, 24, 24, 66,
- 67, 68, 69, 67, 66, 70, 66, 71, 66, 66,
- 72, 66, 73, 66, 73, 74, 66, 75, 76, 76,
- 76, 66, 77, 66, 66, 78, 78, 78, 78, 78,
- 78, 79, 78, 79, 78, 79, 79, 78, 66, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 80, 78, 78, 78,
- 78, 78, 66, 66, 84, 84, 85, 86, 84, 84,
-
- 87, 84, 84, 84, 84, 88, 84, 89, 84, 89,
- 90, 84, 91, 92, 92, 92, 84, 93, 84, 84,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 84, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 95, 94, 94, 94, 94, 94, 84, 84, 24,
- 24, 97, 24, 24, 24, 29, 24, 24, 24, 24,
- 34, 24, 60, 24, 60, 98, 24, 99, 100, 100,
- 100, 24, 63, 24, 24, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 101, 24, 101,
-
- 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 102, 101, 101, 101,
- 101, 101, 24, 24, 103, 103, 104, 103, 103, 103,
- 29, 103, 103, 103, 103, 105, 103, 106, 103, 106,
- 107, 103, 108, 109, 109, 109, 103, 110, 103, 103,
- 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
- 111, 111, 111, 103, 111, 111, 111, 111, 111, 111,
- 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
- 111, 112, 111, 111, 111, 111, 111, 103, 103, 114,
- 114, 115, 116, 114, 114, 117, 114, 114, 114, 114,
-
- 118, 114, 119, 114, 119, 120, 114, 121, 122, 122,
- 122, 114, 123, 114, 114, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 124, 124, 124, 114, 124,
- 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 124, 125, 124, 124, 124,
- 124, 124, 114, 114, 126, 126, 127, 128, 126, 126,
- 129, 126, 126, 126, 126, 130, 126, 131, 126, 131,
- 132, 126, 133, 134, 134, 134, 126, 135, 126, 126,
- 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
- 136, 136, 136, 126, 136, 136, 136, 136, 136, 136,
-
- 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
- 136, 137, 136, 136, 136, 136, 136, 126, 126, 138,
- 138, 139, 140, 138, 138, 141, 138, 138, 138, 138,
- 142, 138, 143, 138, 143, 144, 138, 145, 146, 146,
- 146, 138, 147, 138, 138, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 138, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 149, 148, 148, 148,
- 148, 148, 138, 138, 150, 150, 151, 152, 150, 150,
+ 47, 47, 47, 55, 56, 57, 191, 58, 57, 183,
+ 194, 67, 497, 68, 67, 1093, 85, 219, 86, 85,
+ 192, 498, 195, 100, 220, 101, 100, 258, 59, 60,
+ 183, 61, 60, 24, 69, 239, 240, 24, 24, 87,
+
+ 24, 62, 184, 62, 63, 24, 102, 241, 242, 292,
+ 64, 65, 24, 24, 109, 121, 109, 109, 120, 1092,
+ 120, 120, 134, 184, 135, 134, 259, 41, 42, 42,
+ 42, 148, 323, 149, 148, 47, 162, 47, 163, 162,
+ 47, 176, 47, 177, 176, 66, 464, 47, 243, 244,
+ 465, 24, 24, 70, 71, 72, 73, 71, 70, 74,
+ 70, 75, 70, 70, 76, 70, 77, 70, 77, 78,
+ 70, 79, 80, 80, 80, 70, 81, 70, 70, 82,
+ 82, 82, 82, 82, 82, 83, 82, 83, 82, 83,
+ 83, 82, 70, 82, 82, 82, 82, 82, 82, 82,
+
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 84, 82, 82, 82, 82, 82, 70, 70, 88, 88,
+ 89, 90, 88, 88, 91, 88, 88, 88, 88, 92,
+ 88, 93, 88, 93, 94, 88, 95, 96, 96, 96,
+ 88, 97, 88, 88, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 88, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 99, 98, 98, 98, 98,
+ 98, 88, 88, 24, 24, 103, 24, 24, 24, 29,
+ 24, 24, 24, 24, 34, 24, 62, 24, 62, 104,
+
+ 24, 105, 106, 106, 106, 24, 65, 24, 24, 107,
+ 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
+ 107, 107, 24, 107, 107, 107, 107, 107, 107, 107,
+ 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
+ 108, 107, 107, 107, 107, 107, 24, 24, 110, 110,
+ 111, 110, 110, 110, 29, 110, 110, 110, 110, 112,
+ 110, 113, 110, 113, 114, 110, 115, 116, 116, 116,
+ 110, 117, 110, 110, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 110, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
+
+ 118, 118, 118, 118, 118, 119, 118, 118, 118, 118,
+ 118, 110, 110, 109, 1091, 109, 109, 186, 121, 187,
+ 246, 188, 189, 269, 1090, 269, 269, 292, 345, 346,
+ 41, 42, 42, 42, 122, 122, 123, 124, 122, 122,
+ 125, 122, 122, 122, 122, 126, 122, 127, 122, 127,
+ 128, 122, 129, 130, 130, 130, 122, 131, 122, 122,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 122, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 133, 132, 132, 132, 132, 132, 122, 122, 136,
+
+ 136, 137, 138, 136, 136, 139, 136, 136, 136, 136,
+ 140, 136, 141, 136, 141, 142, 136, 143, 144, 144,
+ 144, 136, 145, 136, 136, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 136, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 147, 146, 146, 146,
+ 146, 146, 136, 136, 150, 150, 151, 152, 150, 150,
153, 150, 150, 150, 150, 154, 150, 155, 150, 155,
-
156, 150, 157, 158, 158, 158, 150, 159, 150, 150,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+
160, 160, 160, 150, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
- 160, 161, 160, 160, 160, 160, 160, 150, 150, 180,
- 1060, 181, 181, 181, 181, 203, 180, 182, 181, 181,
- 181, 181, 204, 269, 183, 184, 184, 184, 184, 227,
- 228, 185, 1059, 186, 186, 186, 186, 186, 187, 186,
- 186, 186, 186, 186, 186, 186, 299, 186, 188, 189,
- 190, 186, 191, 192, 193, 186, 194, 195, 196, 197,
-
- 186, 198, 186, 199, 200, 201, 186, 186, 186, 202,
- 205, 229, 181, 181, 181, 181, 438, 229, 230, 229,
- 1058, 167, 206, 207, 230, 232, 230, 208, 242, 209,
- 439, 232, 210, 232, 244, 247, 206, 247, 247, 207,
- 205, 230, 181, 181, 181, 181, 269, 209, 269, 229,
- 433, 229, 434, 207, 168, 210, 230, 208, 230, 233,
- 233, 233, 233, 232, 234, 232, 425, 243, 237, 207,
- 211, 426, 212, 821, 245, 213, 1057, 229, 214, 215,
- 216, 217, 218, 219, 230, 229, 220, 269, 221, 222,
- 229, 232, 230, 461, 238, 225, 226, 230, 462, 232,
-
- 247, 164, 247, 247, 232, 180, 229, 181, 181, 181,
- 181, 1056, 230, 230, 246, 235, 277, 893, 211, 269,
- 232, 236, 239, 319, 320, 167, 254, 215, 216, 255,
- 256, 219, 319, 320, 241, 240, 1061, 222, 258, 259,
- 260, 258, 271, 239, 258, 259, 260, 258, 262, 278,
- 262, 459, 262, 262, 186, 248, 300, 186, 168, 186,
- 177, 249, 250, 251, 252, 302, 253, 460, 186, 186,
- 186, 263, 1055, 180, 186, 181, 181, 181, 181, 343,
- 344, 184, 184, 184, 184, 205, 1054, 181, 181, 181,
- 181, 272, 259, 273, 272, 343, 344, 435, 207, 436,
-
- 230, 793, 208, 270, 270, 270, 270, 269, 265, 266,
- 794, 319, 326, 267, 207, 272, 259, 273, 272, 280,
- 323, 281, 281, 281, 281, 282, 282, 282, 282, 319,
- 320, 274, 298, 298, 298, 298, 319, 322, 274, 393,
- 323, 274, 343, 350, 1053, 274, 184, 184, 184, 184,
- 338, 347, 167, 283, 367, 368, 274, 284, 285, 1052,
- 281, 281, 281, 281, 274, 305, 305, 305, 305, 300,
- 286, 287, 394, 324, 296, 288, 300, 289, 297, 300,
- 290, 367, 368, 300, 286, 168, 303, 287, 304, 304,
- 304, 304, 428, 306, 300, 289, 429, 307, 343, 344,
-
- 430, 468, 300, 290, 274, 274, 469, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 362,
- 274, 274, 454, 319, 320, 230, 293, 274, 274, 274,
- 455, 205, 269, 298, 298, 298, 298, 327, 277, 328,
- 328, 328, 328, 274, 207, 343, 344, 456, 208, 367,
- 374, 457, 343, 346, 421, 600, 347, 601, 371, 351,
- 207, 352, 352, 352, 352, 458, 422, 274, 274, 274,
- 274, 278, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 1051, 274, 274, 319, 320, 348,
- 496, 293, 274, 274, 274, 367, 368, 411, 497, 411,
-
- 411, 343, 344, 329, 329, 329, 329, 396, 274, 397,
- 397, 397, 397, 596, 294, 318, 386, 353, 353, 353,
- 353, 269, 318, 444, 444, 318, 447, 447, 447, 318,
- 597, 330, 274, 274, 308, 331, 304, 304, 304, 304,
- 318, 398, 398, 398, 398, 354, 309, 310, 318, 355,
- 269, 311, 162, 312, 162, 162, 313, 516, 367, 370,
- 309, 508, 371, 310, 452, 453, 509, 163, 292, 399,
- 891, 312, 1050, 400, 412, 412, 412, 412, 892, 313,
- 300, 300, 300, 300, 300, 300, 1049, 300, 300, 300,
- 300, 300, 300, 300, 300, 372, 300, 300, 393, 342,
-
- 471, 472, 316, 300, 300, 300, 342, 635, 366, 342,
- 1048, 367, 368, 342, 247, 366, 247, 247, 366, 300,
- 339, 468, 366, 897, 342, 375, 469, 376, 376, 376,
- 376, 394, 342, 366, 413, 413, 413, 413, 947, 470,
- 636, 366, 339, 300, 300, 300, 300, 300, 300, 300,
- 300, 1047, 300, 300, 300, 300, 300, 300, 300, 300,
- 363, 300, 300, 899, 390, 452, 488, 316, 300, 300,
- 300, 390, 503, 503, 390, 367, 368, 1046, 390, 414,
- 414, 414, 414, 1045, 300, 415, 415, 415, 415, 390,
- 317, 377, 377, 377, 377, 521, 521, 390, 184, 184,
-
- 184, 184, 468, 184, 184, 184, 184, 526, 300, 300,
- 319, 320, 428, 300, 416, 387, 429, 177, 901, 378,
- 487, 269, 302, 379, 332, 1044, 328, 328, 328, 328,
- 416, 443, 443, 443, 443, 1043, 333, 334, 229, 319,
- 320, 335, 416, 336, 943, 230, 337, 319, 320, 445,
- 333, 445, 232, 334, 446, 446, 446, 446, 416, 319,
- 320, 336, 258, 259, 260, 258, 506, 506, 506, 337,
- 318, 318, 319, 320, 318, 318, 318, 318, 318, 318,
- 318, 318, 318, 318, 318, 408, 318, 318, 903, 229,
- 319, 322, 340, 318, 318, 318, 230, 205, 269, 181,
-
- 181, 181, 181, 232, 987, 229, 229, 319, 320, 318,
- 207, 1042, 230, 230, 208, 476, 476, 476, 476, 232,
- 232, 258, 259, 260, 258, 822, 207, 491, 491, 491,
- 491, 490, 1041, 318, 318, 318, 318, 319, 320, 318,
- 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
- 292, 318, 318, 1040, 229, 229, 477, 340, 318, 318,
- 318, 230, 230, 229, 229, 229, 230, 988, 232, 232,
- 230, 230, 230, 269, 318, 343, 344, 232, 232, 232,
- 341, 229, 272, 259, 273, 272, 343, 344, 230, 1039,
- 481, 272, 259, 273, 272, 232, 343, 344, 318, 318,
-
- 343, 344, 319, 326, 478, 479, 480, 343, 346, 498,
- 1038, 323, 483, 292, 356, 482, 352, 352, 352, 352,
- 524, 524, 524, 484, 343, 344, 357, 358, 319, 326,
- 315, 359, 895, 360, 367, 368, 361, 323, 319, 322,
- 357, 230, 323, 358, 270, 270, 270, 270, 269, 343,
- 350, 360, 282, 282, 282, 282, 367, 368, 347, 361,
- 342, 342, 343, 344, 342, 342, 342, 342, 342, 342,
- 342, 342, 342, 342, 342, 324, 342, 342, 305, 305,
- 305, 305, 364, 342, 342, 342, 1037, 285, 580, 281,
- 281, 281, 281, 581, 282, 282, 282, 282, 948, 342,
-
- 287, 504, 339, 504, 288, 499, 505, 505, 505, 505,
- 367, 368, 522, 985, 522, 1024, 287, 523, 523, 523,
- 523, 499, 1036, 342, 342, 342, 342, 343, 344, 342,
- 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 269, 342, 342, 367, 370, 319, 320, 364, 342, 342,
- 342, 502, 502, 502, 502, 205, 941, 298, 298, 298,
- 298, 292, 499, 944, 342, 319, 320, 949, 207, 269,
- 365, 363, 208, 319, 322, 343, 344, 323, 499, 319,
- 320, 367, 368, 1035, 207, 343, 350, 640, 342, 342,
- 367, 368, 530, 676, 347, 533, 533, 677, 308, 1034,
-
- 304, 304, 304, 304, 380, 1033, 376, 376, 376, 376,
- 324, 310, 531, 575, 575, 311, 381, 382, 319, 320,
- 641, 383, 544, 384, 444, 444, 385, 310, 319, 320,
- 381, 343, 344, 382, 329, 329, 329, 329, 319, 320,
- 1032, 384, 538, 942, 536, 536, 536, 539, 292, 385,
- 366, 366, 367, 368, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 1031, 366, 366, 305, 305,
- 305, 305, 388, 366, 366, 366, 617, 1030, 545, 517,
- 520, 520, 520, 520, 618, 319, 320, 619, 950, 366,
- 998, 517, 363, 343, 346, 517, 534, 347, 534, 367,
-
- 374, 535, 535, 535, 535, 343, 346, 517, 371, 347,
- 367, 368, 990, 366, 366, 366, 366, 367, 368, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 348, 366, 366, 988, 319, 320, 230, 388, 366, 366,
- 366, 986, 348, 269, 367, 370, 319, 320, 371, 1023,
- 329, 329, 329, 329, 366, 343, 344, 558, 343, 344,
- 389, 529, 532, 532, 532, 532, 503, 503, 367, 368,
- 811, 547, 547, 529, 550, 550, 550, 529, 366, 366,
- 401, 372, 397, 397, 397, 397, 951, 343, 344, 529,
- 387, 552, 402, 403, 343, 344, 553, 404, 411, 405,
-
- 411, 411, 406, 343, 344, 1022, 402, 367, 368, 403,
- 353, 353, 353, 353, 548, 559, 548, 405, 1021, 549,
- 549, 549, 549, 561, 561, 406, 390, 390, 1020, 390,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 991, 390, 390, 343, 344, 367, 374, 409, 390,
- 390, 390, 578, 578, 578, 371, 521, 521, 367, 368,
- 353, 353, 353, 353, 952, 390, 343, 344, 387, 367,
- 370, 543, 1019, 371, 377, 377, 377, 377, 398, 398,
- 398, 398, 546, 546, 546, 546, 339, 543, 663, 390,
- 390, 390, 390, 543, 390, 390, 390, 390, 390, 390,
-
- 390, 390, 390, 390, 390, 390, 372, 390, 390, 543,
- 367, 368, 1018, 409, 390, 390, 390, 412, 412, 412,
- 412, 664, 367, 368, 575, 575, 377, 377, 377, 377,
- 390, 805, 806, 367, 368, 1017, 410, 557, 564, 564,
- 564, 413, 413, 413, 413, 414, 414, 414, 414, 560,
- 560, 560, 560, 557, 390, 390, 507, 507, 507, 507,
- 557, 415, 415, 415, 415, 507, 507, 507, 367, 368,
- 319, 320, 566, 447, 447, 447, 557, 567, 1016, 507,
- 507, 507, 507, 507, 507, 274, 274, 1015, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
-
- 667, 274, 274, 367, 368, 747, 1014, 293, 274, 274,
- 274, 506, 506, 506, 562, 987, 562, 1025, 690, 563,
- 563, 563, 563, 401, 274, 397, 397, 397, 397, 446,
- 446, 446, 446, 668, 817, 818, 403, 576, 748, 576,
- 404, 1013, 577, 577, 577, 577, 319, 320, 274, 274,
- 274, 274, 403, 274, 274, 274, 510, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 511, 511, 511, 511,
- 511, 511, 511, 511, 511, 511, 511, 511, 511, 274,
- 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
-
- 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
- 511, 511, 511, 274, 274, 274, 274, 1012, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 1011, 274, 274, 398, 398, 398, 398, 293, 274, 274,
- 274, 524, 524, 524, 571, 574, 574, 574, 574, 1010,
- 443, 443, 443, 443, 274, 1009, 571, 585, 985, 585,
- 571, 416, 586, 586, 586, 586, 446, 446, 446, 446,
- 319, 693, 571, 512, 319, 320, 269, 416, 274, 274,
- 525, 525, 525, 525, 1008, 229, 229, 229, 229, 525,
- 525, 525, 230, 230, 230, 230, 1007, 343, 344, 232,
-
- 232, 232, 232, 525, 525, 525, 525, 525, 525, 300,
- 300, 300, 300, 300, 300, 1006, 300, 300, 300, 300,
- 300, 300, 300, 300, 691, 300, 300, 1005, 229, 645,
- 229, 316, 300, 300, 300, 230, 1004, 230, 505, 505,
- 505, 505, 232, 1003, 232, 708, 319, 697, 300, 491,
- 491, 491, 491, 490, 658, 694, 658, 319, 320, 659,
- 659, 659, 659, 505, 505, 505, 505, 523, 523, 523,
- 523, 648, 300, 300, 300, 300, 300, 300, 300, 300,
- 474, 300, 300, 300, 300, 300, 300, 300, 300, 300,
- 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
-
- 527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
- 527, 527, 527, 300, 527, 527, 527, 527, 527, 527,
- 527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
- 527, 527, 527, 527, 527, 527, 527, 300, 300, 300,
- 300, 300, 300, 300, 300, 1002, 300, 300, 300, 300,
- 300, 300, 300, 300, 1001, 300, 300, 319, 699, 229,
- 230, 316, 300, 300, 300, 229, 230, 269, 1000, 229,
- 953, 300, 230, 232, 408, 637, 230, 999, 300, 232,
- 683, 367, 368, 232, 319, 320, 751, 502, 502, 502,
- 502, 656, 578, 578, 578, 657, 649, 528, 499, 230,
-
- 533, 533, 300, 300, 319, 320, 269, 646, 319, 693,
- 644, 647, 694, 635, 499, 343, 715, 640, 332, 752,
- 328, 328, 328, 328, 712, 520, 520, 520, 520, 726,
- 663, 334, 678, 812, 678, 335, 517, 679, 679, 679,
- 679, 523, 523, 523, 523, 695, 636, 334, 319, 320,
- 641, 984, 517, 319, 320, 343, 344, 945, 343, 344,
- 319, 320, 315, 664, 537, 537, 537, 537, 989, 535,
- 535, 535, 535, 537, 537, 537, 535, 535, 535, 535,
- 667, 367, 368, 577, 577, 577, 577, 537, 537, 537,
- 537, 537, 537, 318, 318, 319, 320, 318, 318, 318,
-
- 318, 318, 318, 318, 318, 318, 318, 318, 709, 318,
- 318, 319, 320, 668, 315, 340, 318, 318, 318, 319,
- 320, 989, 688, 1024, 688, 343, 344, 689, 689, 689,
- 689, 727, 318, 343, 344, 536, 536, 536, 367, 368,
- 946, 547, 547, 983, 706, 315, 706, 343, 711, 707,
- 707, 707, 707, 982, 561, 561, 318, 318, 318, 318,
- 319, 320, 318, 318, 540, 318, 318, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
- 318, 318, 318, 318, 541, 541, 541, 541, 541, 541,
- 541, 541, 541, 541, 541, 541, 541, 318, 541, 541,
-
- 541, 541, 541, 541, 541, 541, 541, 541, 541, 541,
- 541, 541, 541, 541, 541, 541, 541, 541, 541, 541,
- 541, 318, 318, 318, 318, 319, 320, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 318, 318, 981, 318,
- 318, 319, 320, 367, 733, 340, 318, 318, 318, 343,
- 344, 980, 730, 343, 344, 343, 717, 532, 532, 532,
- 532, 979, 318, 319, 699, 367, 368, 700, 529, 546,
- 546, 546, 546, 978, 343, 344, 577, 577, 577, 577,
- 543, 542, 367, 729, 529, 747, 318, 318, 343, 344,
- 549, 549, 549, 549, 343, 344, 543, 343, 711, 954,
-
- 701, 712, 356, 408, 352, 352, 352, 352, 343, 344,
- 549, 549, 549, 549, 751, 358, 343, 717, 748, 359,
- 718, 986, 229, 229, 550, 550, 550, 367, 368, 230,
- 230, 358, 343, 344, 713, 977, 232, 232, 724, 269,
- 724, 367, 368, 725, 725, 725, 725, 752, 551, 551,
- 551, 551, 990, 719, 367, 735, 229, 551, 551, 551,
- 367, 729, 230, 230, 730, 586, 586, 586, 586, 269,
- 232, 551, 551, 551, 551, 551, 551, 342, 342, 343,
- 344, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 939, 342, 342, 367, 368, 731, 315, 364,
-
- 342, 342, 342, 367, 368, 804, 300, 367, 368, 976,
- 637, 560, 560, 560, 560, 683, 342, 367, 368, 564,
- 564, 564, 557, 563, 563, 563, 563, 586, 586, 586,
- 586, 319, 320, 563, 563, 563, 563, 997, 557, 1029,
- 342, 342, 342, 342, 343, 344, 342, 342, 554, 342,
- 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 342, 342, 342, 342, 342, 342, 555, 555,
- 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
- 555, 342, 555, 555, 555, 555, 555, 555, 555, 555,
- 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
-
- 555, 555, 555, 555, 555, 342, 342, 342, 342, 343,
- 344, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 975, 342, 342, 574, 574, 574, 574, 364,
- 342, 342, 342, 974, 319, 697, 571, 367, 735, 319,
- 320, 736, 742, 694, 742, 973, 342, 743, 743, 743,
- 743, 972, 571, 229, 229, 659, 659, 659, 659, 971,
- 230, 230, 229, 339, 896, 556, 970, 232, 232, 230,
- 342, 342, 367, 368, 737, 969, 232, 659, 659, 659,
- 659, 679, 679, 679, 679, 968, 380, 967, 376, 376,
- 376, 376, 343, 344, 801, 802, 319, 320, 966, 382,
-
- 846, 319, 320, 383, 319, 320, 803, 679, 679, 679,
- 679, 319, 320, 847, 965, 382, 367, 368, 964, 848,
- 689, 689, 689, 689, 343, 344, 963, 689, 689, 689,
- 689, 992, 565, 565, 565, 565, 319, 320, 962, 827,
- 540, 565, 565, 565, 828, 319, 693, 363, 898, 694,
- 319, 693, 343, 344, 694, 565, 565, 565, 565, 565,
- 565, 366, 366, 367, 368, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 339, 366, 366, 319,
- 697, 961, 695, 388, 366, 366, 366, 695, 694, 343,
- 344, 367, 368, 343, 344, 831, 960, 343, 344, 959,
-
- 366, 554, 367, 368, 956, 707, 707, 707, 707, 707,
- 707, 707, 707, 343, 715, 367, 368, 957, 725, 725,
- 725, 725, 712, 958, 366, 366, 366, 366, 367, 368,
- 366, 366, 568, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 569, 569, 569, 569, 569, 569, 569, 569,
- 569, 569, 569, 569, 569, 366, 569, 569, 569, 569,
- 569, 569, 569, 569, 569, 569, 569, 569, 569, 569,
- 569, 569, 569, 569, 569, 569, 569, 569, 569, 366,
- 366, 366, 366, 367, 368, 366, 366, 366, 366, 366,
-
- 366, 366, 366, 366, 366, 366, 993, 366, 366, 343,
- 344, 343, 715, 388, 366, 366, 366, 955, 367, 368,
- 712, 367, 368, 319, 699, 319, 699, 700, 935, 700,
- 366, 343, 711, 343, 711, 712, 934, 712, 343, 717,
- 343, 717, 718, 933, 718, 932, 367, 368, 862, 570,
- 568, 363, 832, 931, 366, 366, 579, 579, 579, 579,
- 701, 835, 701, 863, 836, 579, 579, 579, 713, 864,
- 713, 743, 743, 743, 743, 719, 930, 719, 994, 579,
- 579, 579, 579, 579, 579, 390, 390, 929, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
-
- 928, 390, 390, 367, 368, 367, 733, 409, 390, 390,
- 390, 230, 387, 900, 730, 927, 367, 733, 269, 725,
- 725, 725, 725, 363, 390, 730, 743, 743, 743, 743,
- 408, 902, 938, 229, 938, 938, 319, 320, 229, 938,
- 230, 938, 938, 343, 344, 230, 888, 232, 390, 390,
- 390, 390, 232, 390, 390, 390, 582, 390, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 390, 390, 390, 390, 390, 583, 583, 583, 583,
- 583, 583, 583, 583, 583, 583, 583, 583, 583, 390,
- 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
-
- 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
- 583, 583, 583, 390, 390, 390, 390, 926, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 995, 390, 390, 925, 230, 230, 924, 409, 390, 390,
- 390, 269, 269, 996, 319, 320, 992, 367, 729, 367,
- 729, 730, 997, 730, 390, 367, 735, 367, 735, 736,
- 229, 736, 229, 229, 923, 940, 998, 230, 922, 230,
- 230, 889, 921, 584, 232, 387, 232, 232, 390, 390,
- 507, 507, 507, 507, 731, 920, 731, 919, 387, 507,
- 507, 507, 737, 918, 737, 367, 368, 408, 917, 916,
-
- 936, 885, 883, 507, 507, 507, 507, 507, 507, 274,
- 274, 408, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 915, 274, 274, 985, 229, 914,
- 913, 670, 274, 274, 274, 230, 985, 912, 230, 986,
- 229, 986, 232, 229, 911, 269, 910, 230, 274, 909,
- 230, 908, 230, 907, 232, 906, 905, 232, 904, 269,
- 319, 320, 991, 817, 1026, 937, 343, 344, 993, 887,
- 1027, 805, 274, 274, 274, 274, 882, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 292,
- 274, 274, 292, 292, 292, 292, 293, 274, 274, 274,
-
- 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 274, 292, 292, 292, 292, 292, 292,
- 671, 292, 292, 292, 672, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 274, 274, 525,
- 525, 525, 525, 881, 229, 229, 880, 879, 525, 525,
- 525, 230, 230, 343, 344, 994, 878, 877, 232, 232,
- 876, 875, 525, 525, 525, 525, 525, 525, 300, 300,
- 300, 300, 300, 300, 874, 300, 300, 300, 300, 300,
- 300, 300, 300, 873, 300, 300, 872, 871, 884, 870,
- 685, 300, 300, 300, 886, 367, 368, 995, 869, 1028,
-
- 367, 368, 996, 868, 867, 866, 865, 300, 861, 860,
- 859, 858, 857, 856, 855, 854, 853, 852, 851, 850,
- 849, 845, 844, 843, 842, 582, 747, 840, 839, 838,
- 834, 300, 300, 300, 300, 300, 300, 300, 300, 830,
- 300, 300, 300, 300, 300, 300, 300, 300, 315, 300,
- 300, 315, 315, 315, 315, 316, 300, 300, 300, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 300, 315, 315, 315, 315, 315, 315, 686,
- 315, 315, 315, 687, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 300, 300, 319, 320,
-
- 826, 474, 824, 823, 820, 819, 816, 510, 663, 814,
- 813, 810, 809, 808, 537, 537, 537, 537, 807, 474,
- 643, 635, 800, 537, 537, 537, 799, 798, 797, 796,
- 795, 792, 791, 790, 789, 788, 787, 537, 537, 537,
- 537, 537, 537, 318, 318, 319, 320, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 318, 318, 786, 318,
- 318, 785, 784, 783, 782, 703, 318, 318, 318, 781,
- 780, 779, 778, 777, 776, 775, 774, 773, 772, 771,
- 770, 769, 318, 768, 767, 766, 765, 764, 763, 762,
- 761, 760, 759, 758, 757, 747, 745, 744, 681, 680,
-
- 675, 674, 673, 663, 661, 660, 318, 318, 318, 318,
- 319, 320, 318, 318, 318, 318, 318, 318, 318, 318,
- 318, 318, 318, 339, 318, 318, 339, 339, 339, 339,
- 340, 318, 318, 318, 339, 339, 339, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 339, 318, 339, 339,
- 339, 339, 339, 339, 704, 339, 339, 339, 705, 339,
- 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
- 339, 318, 318, 343, 344, 655, 654, 653, 652, 490,
- 617, 600, 596, 650, 643, 638, 635, 633, 632, 551,
- 551, 551, 551, 631, 630, 629, 628, 627, 551, 551,
-
- 551, 626, 625, 624, 623, 622, 621, 620, 616, 615,
- 614, 613, 551, 551, 551, 551, 551, 551, 342, 342,
- 343, 344, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 342, 612, 342, 342, 611, 610, 609, 608,
- 721, 342, 342, 342, 607, 606, 605, 604, 603, 602,
- 599, 598, 595, 594, 593, 592, 591, 342, 590, 589,
- 588, 587, 573, 572, 393, 519, 518, 515, 514, 513,
- 501, 500, 277, 474, 495, 494, 490, 462, 460, 436,
- 433, 342, 342, 342, 342, 343, 344, 342, 342, 342,
- 342, 342, 342, 342, 342, 342, 342, 342, 363, 342,
-
- 342, 363, 363, 363, 363, 364, 342, 342, 342, 363,
- 363, 363, 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 342, 363, 363, 363, 363, 363, 363, 722,
- 363, 363, 363, 723, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 342, 342, 367, 368,
- 431, 486, 422, 485, 474, 269, 473, 467, 466, 463,
- 451, 450, 449, 442, 565, 565, 565, 565, 441, 440,
- 437, 427, 424, 565, 565, 565, 423, 420, 419, 418,
- 167, 407, 393, 391, 314, 269, 295, 565, 565, 565,
- 565, 565, 565, 366, 366, 367, 368, 366, 366, 366,
-
- 366, 366, 366, 366, 366, 366, 366, 366, 291, 366,
- 366, 277, 275, 246, 257, 739, 366, 366, 366, 167,
- 246, 257, 167, 174, 165, 1061, 96, 65, 57, 1061,
- 1061, 1061, 366, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 366, 366, 366, 366,
- 367, 368, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 387, 366, 366, 387, 387, 387, 387,
- 388, 366, 366, 366, 387, 387, 387, 387, 387, 387,
- 387, 387, 387, 387, 387, 387, 387, 366, 387, 387,
-
- 387, 387, 387, 387, 740, 387, 387, 387, 741, 387,
- 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
- 387, 366, 366, 579, 579, 579, 579, 1061, 1061, 1061,
- 1061, 1061, 579, 579, 579, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 579, 579, 579, 579,
- 579, 579, 390, 390, 1061, 390, 390, 390, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 1061, 390, 390,
- 1061, 1061, 1061, 1061, 754, 390, 390, 390, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 390, 390, 390, 390, 1061,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 390, 408, 390, 390, 408, 408, 408, 408, 409,
- 390, 390, 390, 408, 408, 408, 408, 408, 408, 408,
- 408, 408, 408, 408, 408, 408, 390, 408, 408, 408,
- 408, 408, 408, 755, 408, 408, 408, 756, 408, 408,
- 408, 408, 408, 408, 408, 408, 408, 408, 408, 408,
- 390, 390, 274, 274, 1061, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 1061, 274, 274,
-
- 1061, 1061, 1061, 1061, 670, 274, 274, 274, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 274, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 274, 274, 274, 274, 1061,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 274, 292, 274, 274, 292, 292, 292, 292, 293,
- 274, 274, 274, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 274, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 815, 292, 292, 292,
-
- 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
- 274, 274, 300, 300, 300, 300, 300, 300, 1061, 300,
- 300, 300, 300, 300, 300, 300, 300, 1061, 300, 300,
- 1061, 1061, 1061, 1061, 685, 300, 300, 300, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 300, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 300, 300, 300, 300, 300,
- 300, 300, 300, 1061, 300, 300, 300, 300, 300, 300,
- 300, 300, 315, 300, 300, 315, 315, 315, 315, 316,
-
- 300, 300, 300, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 300, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 825, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 300, 300, 318, 318, 319, 320, 318, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 318, 1061, 318, 318,
- 1061, 1061, 1061, 1061, 703, 318, 318, 318, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 318, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 318, 318, 318, 318, 319,
- 320, 318, 318, 318, 318, 318, 318, 318, 318, 318,
- 318, 318, 339, 318, 318, 339, 339, 339, 339, 340,
- 318, 318, 318, 339, 339, 339, 339, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 318, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 829, 339, 339, 339,
- 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
- 318, 318, 342, 342, 343, 344, 342, 342, 342, 342,
- 342, 342, 342, 342, 342, 342, 342, 1061, 342, 342,
- 1061, 1061, 1061, 1061, 721, 342, 342, 342, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 342, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 342, 342, 342, 342, 343,
- 344, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 363, 342, 342, 363, 363, 363, 363, 364,
- 342, 342, 342, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 342, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 833, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363, 363, 363,
-
- 342, 342, 366, 366, 367, 368, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 1061, 366, 366,
- 1061, 1061, 1061, 1061, 739, 366, 366, 366, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 366, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 366, 366, 366, 366, 367,
- 368, 366, 366, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 387, 366, 366, 387, 387, 387, 387, 388,
- 366, 366, 366, 387, 387, 387, 387, 387, 387, 387,
-
- 387, 387, 387, 387, 387, 387, 366, 387, 387, 387,
- 387, 387, 387, 387, 387, 387, 837, 387, 387, 387,
- 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
- 366, 366, 390, 390, 1061, 390, 390, 390, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 1061, 390, 390,
- 1061, 1061, 1061, 1061, 754, 390, 390, 390, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 390, 390, 390, 390, 1061,
-
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 390, 408, 390, 390, 408, 408, 408, 408, 409,
- 390, 390, 390, 408, 408, 408, 408, 408, 408, 408,
- 408, 408, 408, 408, 408, 408, 390, 408, 408, 408,
- 408, 408, 408, 408, 408, 408, 841, 408, 408, 408,
- 408, 408, 408, 408, 408, 408, 408, 408, 408, 408,
- 390, 390, 274, 274, 1061, 274, 274, 274, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 292, 274, 274,
- 292, 292, 292, 292, 293, 274, 274, 274, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-
- 292, 274, 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 890, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 274, 274, 300, 300, 300,
- 300, 300, 300, 1061, 300, 300, 300, 300, 300, 300,
- 300, 300, 315, 300, 300, 315, 315, 315, 315, 316,
- 300, 300, 300, 315, 315, 315, 315, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 300, 315, 315, 315,
- 315, 315, 315, 315, 315, 315, 315, 894, 315, 315,
+ 160, 161, 160, 160, 160, 160, 160, 150, 150, 164,
+ 164, 165, 166, 164, 164, 167, 164, 164, 164, 164,
+ 168, 164, 169, 164, 169, 170, 164, 171, 172, 172,
+ 172, 164, 173, 164, 164, 174, 174, 174, 174, 174,
+ 174, 174, 174, 174, 174, 174, 174, 174, 164, 174,
+ 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+ 174, 174, 174, 174, 174, 174, 175, 174, 174, 174,
+ 174, 174, 164, 164, 178, 300, 178, 178, 178, 180,
+
+ 178, 178, 196, 458, 197, 197, 197, 197, 459, 179,
+ 198, 245, 196, 179, 197, 197, 197, 197, 246, 1089,
+ 199, 200, 200, 200, 200, 248, 492, 201, 301, 202,
+ 202, 202, 202, 202, 203, 202, 202, 202, 202, 202,
+ 202, 202, 493, 202, 204, 205, 206, 202, 207, 208,
+ 209, 202, 210, 211, 212, 213, 202, 214, 202, 215,
+ 216, 217, 202, 202, 202, 218, 221, 245, 197, 197,
+ 197, 197, 471, 245, 246, 245, 1018, 245, 222, 223,
+ 246, 248, 246, 224, 246, 225, 472, 248, 226, 248,
+ 260, 248, 222, 325, 292, 223, 221, 193, 197, 197,
+
+ 197, 197, 327, 225, 280, 245, 280, 280, 1088, 223,
+ 254, 226, 246, 224, 255, 249, 249, 249, 249, 248,
+ 250, 264, 265, 826, 253, 223, 227, 256, 228, 629,
+ 261, 229, 827, 245, 230, 231, 232, 233, 234, 235,
+ 246, 245, 236, 246, 237, 238, 630, 248, 246, 262,
+ 292, 262, 262, 264, 265, 248, 245, 262, 180, 262,
+ 262, 487, 268, 246, 179, 269, 180, 269, 269, 488,
+ 248, 251, 179, 294, 1087, 266, 267, 252, 196, 227,
+ 197, 197, 197, 197, 183, 257, 425, 276, 231, 232,
+ 277, 278, 235, 255, 268, 1094, 345, 346, 238, 280,
+
+ 180, 280, 280, 281, 282, 283, 281, 281, 282, 283,
+ 281, 264, 265, 202, 270, 1086, 202, 184, 202, 426,
+ 271, 272, 273, 274, 466, 275, 467, 202, 202, 202,
+ 285, 292, 285, 202, 285, 285, 196, 286, 197, 197,
+ 197, 197, 295, 282, 296, 295, 1024, 200, 200, 200,
+ 200, 221, 268, 197, 197, 197, 197, 295, 282, 296,
+ 295, 345, 346, 468, 223, 469, 246, 549, 224, 293,
+ 293, 293, 293, 292, 288, 289, 371, 372, 1085, 290,
+ 223, 303, 364, 304, 304, 304, 304, 305, 305, 305,
+ 305, 365, 318, 297, 318, 318, 318, 298, 318, 318,
+
+ 297, 494, 324, 297, 324, 324, 495, 297, 200, 200,
+ 200, 200, 345, 352, 343, 306, 343, 343, 297, 307,
+ 308, 349, 304, 304, 304, 304, 297, 322, 322, 322,
+ 322, 325, 309, 310, 371, 372, 320, 311, 325, 312,
+ 321, 325, 313, 397, 398, 325, 309, 895, 328, 310,
+ 329, 329, 329, 329, 371, 378, 325, 312, 368, 345,
+ 369, 368, 896, 375, 325, 313, 297, 297, 897, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 1084, 297, 297, 330, 330, 330, 330, 316, 297,
+ 297, 297, 633, 221, 634, 322, 322, 322, 322, 368,
+
+ 345, 369, 368, 397, 398, 297, 223, 345, 346, 315,
+ 224, 924, 331, 345, 348, 501, 332, 349, 397, 404,
+ 502, 353, 223, 354, 354, 354, 354, 401, 1083, 297,
+ 297, 297, 297, 503, 297, 297, 297, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 365, 297, 297, 930,
+ 350, 371, 372, 316, 297, 297, 297, 344, 394, 371,
+ 395, 394, 345, 346, 344, 371, 374, 344, 501, 375,
+ 297, 344, 390, 502, 183, 1082, 317, 454, 355, 355,
+ 355, 355, 344, 394, 371, 395, 394, 397, 400, 455,
+ 344, 401, 477, 477, 297, 297, 333, 1081, 329, 329,
+
+ 329, 329, 376, 480, 480, 480, 356, 184, 334, 335,
+ 357, 397, 398, 336, 443, 337, 443, 443, 338, 980,
+ 371, 372, 334, 365, 402, 335, 420, 397, 421, 420,
+ 485, 486, 416, 337, 379, 1080, 380, 380, 380, 380,
+ 529, 338, 325, 325, 325, 325, 325, 325, 530, 325,
+ 325, 325, 325, 325, 325, 325, 325, 1079, 325, 325,
+ 420, 397, 421, 420, 341, 325, 325, 325, 397, 398,
+ 428, 300, 429, 429, 429, 429, 504, 505, 371, 372,
+ 391, 325, 405, 932, 406, 406, 406, 406, 443, 423,
+ 443, 443, 264, 265, 381, 381, 381, 381, 178, 1020,
+
+ 178, 178, 264, 265, 301, 325, 325, 325, 325, 325,
+ 325, 325, 325, 179, 325, 325, 325, 325, 325, 325,
+ 325, 325, 382, 325, 325, 1078, 383, 425, 370, 341,
+ 325, 325, 325, 489, 396, 370, 246, 490, 370, 397,
+ 398, 396, 370, 292, 396, 315, 325, 444, 396, 444,
+ 444, 491, 342, 370, 292, 407, 407, 407, 407, 396,
+ 426, 370, 445, 445, 445, 445, 1077, 396, 264, 265,
+ 325, 325, 345, 346, 430, 430, 430, 430, 446, 446,
+ 446, 446, 925, 408, 264, 265, 358, 409, 354, 354,
+ 354, 354, 447, 447, 447, 447, 668, 422, 359, 360,
+
+ 485, 521, 431, 361, 422, 362, 432, 422, 363, 536,
+ 536, 422, 359, 1076, 245, 360, 448, 448, 448, 448,
+ 1075, 246, 422, 362, 200, 200, 200, 200, 248, 669,
+ 422, 363, 344, 344, 345, 346, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 673, 344, 344,
+ 269, 245, 269, 269, 366, 344, 344, 344, 246, 221,
+ 292, 197, 197, 197, 197, 248, 200, 200, 200, 200,
+ 461, 344, 223, 1074, 462, 245, 224, 449, 463, 478,
+ 674, 478, 246, 976, 479, 479, 479, 479, 223, 248,
+ 539, 539, 539, 449, 1019, 344, 344, 344, 344, 345,
+
+ 346, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 292, 344, 344, 264, 265, 512, 513, 366,
+ 344, 344, 344, 476, 476, 476, 476, 461, 554, 554,
+ 246, 462, 1073, 245, 449, 520, 344, 292, 345, 346,
+ 246, 245, 367, 509, 509, 509, 509, 248, 246, 541,
+ 449, 245, 245, 417, 542, 248, 934, 245, 246, 246,
+ 344, 344, 371, 372, 246, 248, 248, 1072, 245, 501,
+ 245, 248, 518, 531, 559, 246, 384, 246, 380, 380,
+ 380, 380, 248, 280, 248, 280, 280, 514, 385, 386,
+ 340, 510, 928, 387, 262, 388, 262, 262, 389, 345,
+
+ 346, 511, 385, 345, 346, 386, 1071, 515, 318, 179,
+ 318, 318, 517, 388, 345, 348, 516, 281, 282, 283,
+ 281, 389, 370, 370, 371, 372, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 370, 370, 1070, 370, 370,
+ 281, 282, 283, 281, 392, 370, 370, 370, 524, 524,
+ 524, 524, 523, 246, 345, 346, 293, 293, 293, 293,
+ 292, 370, 295, 282, 296, 295, 295, 282, 296, 295,
+ 305, 305, 305, 305, 537, 324, 537, 324, 324, 538,
+ 538, 538, 538, 371, 372, 370, 370, 370, 370, 371,
+ 372, 370, 370, 370, 370, 370, 370, 370, 370, 370,
+
+ 370, 370, 1069, 370, 370, 330, 330, 330, 330, 392,
+ 370, 370, 370, 1018, 308, 1057, 304, 304, 304, 304,
+ 371, 372, 305, 305, 305, 305, 370, 310, 557, 557,
+ 557, 311, 393, 532, 535, 535, 535, 535, 325, 345,
+ 352, 613, 193, 310, 1068, 532, 614, 327, 349, 532,
+ 370, 370, 397, 398, 343, 292, 343, 343, 345, 352,
+ 221, 532, 322, 322, 322, 322, 410, 349, 406, 406,
+ 406, 406, 1067, 223, 371, 372, 292, 224, 411, 412,
+ 345, 346, 854, 413, 1066, 414, 345, 346, 415, 223,
+ 981, 555, 411, 555, 365, 412, 556, 556, 556, 556,
+
+ 709, 345, 348, 414, 710, 349, 368, 345, 369, 368,
+ 1065, 415, 396, 396, 397, 398, 396, 396, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 563, 396, 396,
+ 371, 374, 292, 564, 418, 396, 396, 396, 350, 333,
+ 292, 329, 329, 329, 329, 974, 330, 330, 330, 330,
+ 315, 396, 335, 345, 346, 977, 336, 550, 345, 348,
+ 371, 372, 349, 368, 345, 369, 368, 855, 335, 355,
+ 355, 355, 355, 550, 1064, 396, 396, 396, 396, 397,
+ 398, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 396, 396, 1063, 396, 396, 350, 345, 346, 879, 418,
+
+ 396, 396, 396, 553, 553, 553, 553, 345, 346, 371,
+ 378, 880, 566, 566, 550, 982, 396, 881, 375, 391,
+ 345, 346, 419, 355, 355, 355, 355, 696, 371, 374,
+ 550, 567, 375, 567, 562, 1031, 568, 568, 568, 568,
+ 396, 396, 433, 700, 429, 429, 429, 429, 371, 374,
+ 562, 1023, 375, 975, 434, 435, 345, 346, 315, 436,
+ 697, 437, 371, 372, 438, 376, 345, 346, 434, 1025,
+ 571, 435, 569, 569, 569, 572, 701, 371, 378, 437,
+ 397, 398, 1021, 371, 372, 376, 375, 438, 422, 422,
+ 1019, 422, 422, 422, 422, 422, 422, 422, 422, 422,
+
+ 422, 422, 422, 1056, 422, 422, 345, 346, 292, 577,
+ 441, 422, 422, 422, 365, 371, 372, 780, 371, 372,
+ 397, 398, 565, 565, 565, 565, 1055, 422, 371, 372,
+ 578, 580, 580, 562, 381, 381, 381, 381, 926, 371,
+ 372, 397, 398, 585, 381, 381, 381, 381, 586, 562,
+ 781, 422, 422, 422, 422, 576, 422, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 1054, 422,
+ 422, 576, 371, 372, 1053, 441, 422, 422, 422, 394,
+ 371, 395, 394, 1052, 371, 372, 397, 400, 579, 579,
+ 579, 579, 422, 371, 372, 581, 1051, 581, 442, 576,
+
+ 582, 582, 582, 582, 394, 371, 395, 394, 983, 583,
+ 583, 583, 391, 397, 404, 576, 422, 422, 540, 540,
+ 540, 540, 401, 397, 404, 397, 398, 540, 540, 540,
+ 397, 400, 401, 1050, 401, 784, 397, 400, 397, 398,
+ 401, 540, 540, 540, 540, 540, 540, 297, 297, 1049,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 297, 1048, 297, 297, 397, 398, 402, 785, 316,
+ 297, 297, 297, 402, 397, 398, 397, 398, 608, 608,
+ 1047, 407, 407, 407, 407, 591, 297, 595, 1046, 595,
+ 594, 594, 596, 596, 596, 596, 397, 398, 477, 477,
+
+ 599, 420, 397, 421, 420, 600, 420, 397, 421, 420,
+ 297, 297, 297, 297, 1045, 297, 297, 297, 543, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 544, 544,
+ 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
+ 544, 297, 544, 544, 544, 544, 544, 544, 544, 544,
+ 544, 544, 544, 544, 544, 544, 544, 544, 544, 544,
+ 544, 544, 544, 544, 544, 297, 297, 297, 297, 1044,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 297, 978, 297, 297, 397, 398, 340, 650, 316,
+
+ 297, 297, 297, 397, 398, 979, 651, 397, 398, 652,
+ 340, 407, 407, 407, 407, 1043, 297, 430, 430, 430,
+ 430, 1042, 590, 597, 597, 597, 536, 536, 430, 430,
+ 430, 430, 611, 611, 611, 545, 264, 265, 590, 604,
+ 297, 297, 558, 558, 558, 558, 443, 1041, 443, 443,
+ 592, 558, 558, 558, 609, 604, 609, 554, 554, 610,
+ 610, 610, 610, 608, 608, 558, 558, 558, 558, 558,
+ 558, 325, 325, 325, 325, 325, 325, 1040, 325, 325,
+ 325, 325, 325, 325, 325, 325, 1018, 325, 325, 397,
+ 398, 1039, 683, 341, 325, 325, 325, 246, 433, 1038,
+
+ 429, 429, 429, 429, 292, 593, 593, 593, 593, 1037,
+ 325, 435, 480, 480, 480, 436, 590, 444, 1036, 444,
+ 444, 445, 445, 445, 445, 838, 839, 435, 446, 446,
+ 446, 446, 590, 1035, 325, 325, 325, 325, 325, 325,
+ 325, 325, 507, 325, 325, 325, 325, 325, 325, 325,
+ 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
+ 325, 325, 560, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 325, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 325,
+
+ 325, 325, 325, 325, 325, 325, 325, 1034, 325, 325,
+ 325, 325, 325, 325, 325, 325, 1033, 325, 325, 607,
+ 607, 607, 607, 341, 325, 325, 325, 539, 539, 539,
+ 604, 447, 447, 447, 447, 448, 448, 448, 448, 984,
+ 325, 985, 618, 417, 618, 417, 604, 619, 619, 619,
+ 619, 476, 476, 476, 476, 479, 479, 479, 479, 561,
+ 850, 851, 449, 1032, 325, 325, 345, 346, 479, 479,
+ 479, 479, 245, 1017, 245, 557, 557, 557, 449, 246,
+ 358, 246, 354, 354, 354, 354, 248, 245, 248, 245,
+ 668, 245, 245, 360, 246, 246, 246, 361, 246, 246,
+
+ 245, 248, 292, 248, 1016, 248, 248, 246, 245, 360,
+ 345, 346, 325, 246, 248, 246, 670, 345, 346, 677,
+ 292, 716, 248, 669, 345, 346, 570, 570, 570, 570,
+ 921, 678, 245, 566, 566, 570, 570, 570, 679, 246,
+ 345, 346, 680, 673, 689, 682, 248, 1021, 690, 570,
+ 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 1015, 344, 344, 681, 724, 1014, 674, 366, 344, 344,
+ 344, 524, 524, 524, 524, 523, 538, 538, 538, 538,
+ 691, 1013, 691, 315, 344, 692, 692, 692, 692, 538,
+
+ 538, 538, 538, 711, 1012, 711, 345, 726, 712, 712,
+ 712, 712, 556, 556, 556, 556, 345, 346, 344, 344,
+ 344, 344, 345, 346, 344, 344, 573, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 574, 574, 574, 574,
+ 574, 574, 574, 574, 574, 574, 574, 574, 574, 344,
+ 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
+ 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
+ 574, 574, 574, 344, 344, 344, 344, 345, 346, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+
+ 696, 344, 344, 535, 535, 535, 535, 366, 344, 344,
+ 344, 345, 346, 1011, 532, 553, 553, 553, 553, 556,
+ 556, 556, 556, 986, 344, 700, 550, 440, 345, 346,
+ 532, 345, 730, 697, 371, 372, 345, 346, 1010, 721,
+ 727, 721, 550, 575, 722, 722, 722, 722, 344, 344,
+ 371, 372, 565, 565, 565, 565, 345, 346, 701, 723,
+ 611, 611, 611, 562, 384, 1009, 380, 380, 380, 380,
+ 345, 346, 568, 568, 568, 568, 987, 386, 245, 562,
+ 440, 387, 345, 346, 742, 246, 568, 568, 568, 568,
+ 371, 372, 248, 386, 371, 372, 371, 748, 569, 569,
+
+ 569, 739, 1020, 739, 1058, 745, 740, 740, 740, 740,
+ 584, 584, 584, 584, 371, 372, 397, 398, 1008, 584,
+ 584, 584, 345, 726, 371, 372, 727, 780, 345, 732,
+ 580, 580, 733, 584, 584, 584, 584, 584, 584, 370,
+ 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 1026, 370, 370, 371, 372, 728,
+ 781, 392, 370, 370, 370, 734, 760, 345, 732, 371,
+ 372, 1007, 741, 579, 579, 579, 579, 1006, 370, 371,
+ 372, 397, 766, 1005, 576, 582, 582, 582, 582, 1004,
+ 763, 610, 610, 610, 610, 582, 582, 582, 582, 391,
+
+ 576, 1003, 370, 370, 370, 370, 371, 372, 370, 370,
+ 587, 370, 370, 370, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
+ 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
+ 588, 588, 588, 370, 588, 588, 588, 588, 588, 588,
+ 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
+ 588, 588, 588, 588, 588, 588, 588, 370, 370, 370,
+ 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 1002, 370, 370, 371, 372, 397,
+ 398, 392, 370, 370, 370, 1027, 345, 346, 397, 398,
+
+ 573, 397, 398, 583, 583, 583, 371, 744, 370, 784,
+ 745, 1001, 371, 750, 594, 594, 751, 596, 596, 596,
+ 596, 397, 762, 246, 245, 763, 1000, 589, 397, 398,
+ 292, 246, 370, 370, 397, 398, 999, 759, 248, 757,
+ 391, 757, 785, 746, 758, 758, 758, 758, 410, 752,
+ 406, 406, 406, 406, 998, 397, 398, 844, 764, 997,
+ 325, 412, 397, 768, 670, 413, 769, 397, 398, 716,
+ 996, 593, 593, 593, 593, 397, 398, 412, 397, 398,
+ 371, 372, 590, 596, 596, 596, 596, 610, 610, 610,
+ 610, 597, 597, 597, 598, 598, 598, 598, 590, 770,
+
+ 371, 744, 245, 598, 598, 598, 775, 440, 775, 246,
+ 936, 776, 776, 776, 776, 1022, 248, 598, 598, 598,
+ 598, 598, 598, 396, 396, 397, 398, 396, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 995, 396,
+ 396, 607, 607, 607, 607, 418, 396, 396, 396, 371,
+ 372, 837, 604, 619, 619, 619, 619, 619, 619, 619,
+ 619, 340, 396, 692, 692, 692, 692, 994, 604, 692,
+ 692, 692, 692, 712, 712, 712, 712, 712, 712, 712,
+ 712, 371, 750, 397, 398, 993, 396, 396, 396, 396,
+ 397, 398, 396, 396, 601, 396, 396, 396, 396, 396,
+
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 396, 396, 396, 396, 602, 602, 602, 602, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 396, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 396, 396, 396, 396, 397, 398, 396, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 992, 396,
+ 396, 988, 245, 245, 968, 418, 396, 396, 396, 246,
+ 246, 245, 345, 346, 397, 762, 248, 248, 246, 246,
+ 345, 346, 396, 345, 346, 248, 292, 967, 722, 722,
+
+ 722, 722, 966, 345, 730, 965, 722, 722, 722, 722,
+ 964, 603, 727, 834, 835, 963, 396, 396, 612, 612,
+ 612, 612, 1022, 845, 1057, 836, 962, 612, 612, 612,
+ 345, 346, 961, 371, 372, 960, 860, 587, 959, 371,
+ 372, 612, 612, 612, 612, 612, 612, 422, 422, 958,
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 1028, 422, 422, 345, 730, 397, 398, 441,
+ 422, 422, 422, 861, 727, 371, 372, 345, 726, 371,
+ 372, 727, 864, 397, 768, 957, 422, 397, 398, 838,
+ 265, 740, 740, 740, 740, 740, 740, 740, 740, 371,
+
+ 748, 345, 346, 758, 758, 758, 758, 417, 745, 956,
+ 422, 422, 422, 422, 728, 422, 422, 422, 615, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 616, 616,
+ 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
+ 616, 422, 616, 616, 616, 616, 616, 616, 616, 616,
+ 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
+ 616, 616, 616, 616, 616, 422, 422, 422, 422, 955,
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 1029, 422, 422, 371, 372, 371, 748, 441,
+
+ 422, 422, 422, 1023, 397, 398, 745, 397, 398, 345,
+ 726, 345, 732, 727, 954, 733, 422, 345, 732, 371,
+ 744, 733, 953, 745, 371, 744, 371, 750, 745, 1030,
+ 751, 1062, 397, 398, 952, 617, 601, 417, 865, 951,
+ 422, 422, 540, 540, 540, 540, 728, 868, 734, 340,
+ 869, 540, 540, 540, 734, 246, 746, 776, 776, 776,
+ 776, 746, 292, 752, 950, 540, 540, 540, 540, 540,
+ 540, 297, 297, 949, 297, 297, 297, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 948, 297, 297, 947,
+ 397, 398, 922, 703, 297, 297, 297, 776, 776, 776,
+
+ 776, 371, 750, 397, 766, 751, 758, 758, 758, 758,
+ 297, 946, 763, 397, 766, 345, 346, 365, 929, 371,
+ 372, 945, 763, 371, 372, 391, 931, 397, 398, 397,
+ 398, 417, 933, 944, 297, 297, 297, 297, 752, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 315, 297, 297, 315, 315, 315, 315, 316, 297,
+ 297, 297, 315, 315, 315, 315, 315, 315, 315, 315,
+ 315, 315, 315, 315, 315, 297, 315, 315, 315, 315,
+ 315, 315, 704, 315, 315, 315, 705, 315, 315, 315,
+ 315, 315, 315, 315, 315, 315, 315, 315, 315, 297,
+
+ 297, 558, 558, 558, 558, 440, 935, 943, 245, 942,
+ 558, 558, 558, 397, 762, 246, 941, 763, 940, 397,
+ 762, 939, 248, 763, 558, 558, 558, 558, 558, 558,
+ 325, 325, 325, 325, 325, 325, 938, 325, 325, 325,
+ 325, 325, 325, 325, 325, 1030, 325, 325, 345, 346,
+ 764, 246, 718, 325, 325, 325, 764, 919, 292, 245,
+ 245, 1019, 937, 989, 397, 768, 246, 246, 769, 325,
+ 371, 372, 246, 248, 248, 971, 990, 971, 971, 292,
+ 850, 972, 991, 971, 920, 971, 971, 345, 346, 1024,
+ 440, 1059, 915, 325, 325, 325, 325, 325, 325, 325,
+
+ 325, 770, 325, 325, 325, 325, 325, 325, 325, 325,
+ 340, 325, 325, 340, 340, 340, 340, 341, 325, 325,
+ 325, 340, 340, 340, 340, 340, 340, 340, 340, 340,
+ 340, 340, 340, 340, 325, 340, 340, 340, 340, 340,
+ 340, 719, 340, 340, 340, 720, 340, 340, 340, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 325, 325,
+ 345, 346, 1018, 246, 1019, 914, 245, 913, 245, 912,
+ 292, 397, 398, 246, 911, 246, 570, 570, 570, 570,
+ 248, 910, 248, 245, 245, 570, 570, 570, 397, 768,
+ 246, 246, 769, 973, 1031, 909, 908, 248, 248, 570,
+
+ 570, 570, 570, 570, 570, 344, 344, 345, 346, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 969, 344, 344, 907, 245, 770, 916, 736, 344, 344,
+ 344, 246, 345, 346, 1025, 371, 372, 1027, 248, 440,
+ 906, 371, 372, 1026, 344, 1060, 397, 398, 1028, 905,
+ 1061, 397, 398, 1029, 904, 903, 902, 901, 900, 899,
+ 898, 894, 893, 918, 892, 891, 890, 889, 344, 344,
+ 344, 344, 345, 346, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 365, 344, 344, 365, 365,
+ 365, 365, 366, 344, 344, 344, 365, 365, 365, 365,
+
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 344,
+ 365, 365, 365, 365, 365, 365, 737, 365, 365, 365,
+ 738, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 344, 344, 371, 372, 888, 887, 886,
+ 885, 884, 883, 882, 878, 877, 876, 875, 615, 780,
+ 873, 584, 584, 584, 584, 872, 245, 871, 245, 867,
+ 584, 584, 584, 246, 863, 246, 859, 507, 857, 856,
+ 248, 853, 248, 852, 584, 584, 584, 584, 584, 584,
+ 370, 370, 371, 372, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 970, 370, 370, 849, 543,
+
+ 917, 696, 754, 370, 370, 370, 847, 846, 843, 842,
+ 841, 840, 507, 676, 668, 833, 832, 831, 830, 370,
+ 829, 828, 825, 824, 823, 822, 821, 820, 819, 818,
+ 817, 816, 815, 814, 813, 812, 811, 810, 809, 808,
+ 807, 806, 805, 370, 370, 370, 370, 371, 372, 370,
+ 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
+ 391, 370, 370, 391, 391, 391, 391, 392, 370, 370,
+ 370, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 370, 391, 391, 391, 391, 391,
+ 391, 755, 391, 391, 391, 756, 391, 391, 391, 391,
+
+ 391, 391, 391, 391, 391, 391, 391, 391, 370, 370,
+ 397, 398, 804, 803, 802, 801, 800, 799, 798, 797,
+ 796, 795, 794, 793, 792, 791, 598, 598, 598, 598,
+ 790, 780, 778, 777, 714, 598, 598, 598, 713, 708,
+ 707, 706, 696, 694, 693, 688, 687, 686, 685, 598,
+ 598, 598, 598, 598, 598, 396, 396, 397, 398, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 523, 396, 396, 650, 633, 629, 676, 772, 396, 396,
+ 396, 671, 668, 666, 665, 664, 663, 662, 661, 660,
+ 659, 658, 657, 656, 396, 655, 654, 653, 649, 648,
+
+ 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
+ 637, 636, 635, 632, 631, 628, 627, 626, 396, 396,
+ 396, 396, 397, 398, 396, 396, 396, 396, 396, 396,
+ 396, 396, 396, 396, 396, 417, 396, 396, 417, 417,
+ 417, 417, 418, 396, 396, 396, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 396,
+ 417, 417, 417, 417, 417, 417, 773, 417, 417, 417,
+ 774, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 396, 396, 612, 612, 612, 612, 625,
+ 624, 623, 622, 621, 612, 612, 612, 620, 606, 605,
+
+ 425, 552, 551, 548, 547, 546, 534, 533, 612, 612,
+ 612, 612, 612, 612, 422, 422, 300, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 507,
+ 422, 422, 528, 527, 523, 495, 787, 422, 422, 422,
+ 493, 469, 466, 464, 519, 455, 507, 292, 506, 500,
+ 499, 496, 484, 422, 483, 482, 475, 474, 473, 470,
+ 460, 457, 456, 453, 452, 451, 183, 439, 425, 423,
+ 339, 292, 319, 314, 300, 298, 279, 422, 422, 422,
+ 422, 183, 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
+
+ 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
+ 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
+ 440, 440, 440, 440, 440, 788, 440, 440, 440, 789,
+ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
+ 440, 440, 422, 422, 297, 297, 279, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 183,
+ 297, 297, 190, 181, 1094, 1094, 703, 297, 297, 297,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 297, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 297, 297, 297,
+ 297, 1094, 297, 297, 297, 297, 297, 297, 297, 297,
+ 297, 297, 297, 297, 315, 297, 297, 315, 315, 315,
+ 315, 316, 297, 297, 297, 315, 315, 315, 315, 315,
+ 315, 315, 315, 315, 315, 315, 315, 315, 297, 315,
+ 315, 315, 315, 315, 315, 315, 315, 315, 848, 315,
315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 300, 300, 166, 1061, 166, 166, 166, 166, 166, 166,
+ 315, 315, 297, 297, 325, 325, 325, 325, 325, 325,
+ 1094, 325, 325, 325, 325, 325, 325, 325, 325, 1094,
+ 325, 325, 1094, 1094, 1094, 1094, 718, 325, 325, 325,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 325, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 325, 325, 325,
+ 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
+ 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
+ 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 858, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
+
+ 340, 340, 325, 325, 344, 344, 345, 346, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 1094,
+ 344, 344, 1094, 1094, 1094, 1094, 736, 344, 344, 344,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 344, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 344, 344, 344,
+ 344, 345, 346, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 365, 344, 344, 365, 365, 365,
+ 365, 366, 344, 344, 344, 365, 365, 365, 365, 365,
- 166, 166, 166, 169, 1061, 1061, 169, 169, 177, 1061,
- 177, 177, 177, 177, 177, 177, 177, 177, 177, 231,
- 231, 231, 231, 231, 231, 231, 231, 261, 261, 261,
- 261, 264, 1061, 264, 1061, 264, 264, 264, 264, 268,
- 268, 268, 268, 268, 268, 268, 274, 1061, 274, 274,
- 274, 274, 274, 274, 274, 274, 274, 276, 1061, 276,
- 276, 276, 276, 276, 276, 276, 276, 276, 279, 1061,
- 279, 279, 279, 279, 279, 279, 279, 279, 279, 292,
- 1061, 292, 292, 292, 292, 292, 292, 292, 292, 292,
- 230, 230, 230, 230, 230, 230, 230, 300, 300, 1061,
-
- 300, 300, 300, 300, 300, 300, 300, 300, 301, 301,
- 301, 301, 301, 301, 301, 301, 301, 301, 301, 315,
- 315, 1061, 315, 315, 315, 315, 315, 315, 315, 315,
- 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
- 318, 321, 321, 321, 321, 321, 321, 321, 321, 321,
- 321, 321, 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 339, 339, 339, 339, 339, 339, 339,
- 339, 339, 339, 339, 342, 342, 342, 342, 342, 342,
- 342, 342, 342, 342, 342, 345, 345, 345, 345, 345,
- 345, 345, 345, 345, 345, 345, 349, 349, 349, 349,
-
- 349, 349, 349, 349, 349, 349, 349, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363, 366, 366,
- 366, 366, 366, 366, 366, 366, 366, 366, 366, 369,
- 369, 369, 369, 369, 369, 369, 369, 369, 369, 369,
- 373, 373, 373, 373, 373, 373, 373, 373, 373, 373,
- 373, 387, 387, 387, 387, 387, 387, 387, 387, 387,
- 387, 387, 390, 1061, 390, 390, 390, 390, 390, 390,
- 390, 390, 390, 392, 1061, 392, 392, 392, 392, 392,
- 392, 392, 392, 392, 395, 1061, 395, 395, 395, 395,
- 395, 395, 395, 395, 395, 408, 1061, 408, 408, 408,
-
- 408, 408, 408, 408, 408, 408, 169, 1061, 1061, 169,
- 169, 177, 1061, 177, 177, 177, 177, 177, 177, 177,
- 177, 177, 417, 1061, 1061, 417, 417, 417, 448, 1061,
- 1061, 448, 230, 230, 230, 230, 230, 230, 230, 231,
- 231, 231, 231, 231, 231, 231, 231, 475, 1061, 1061,
- 1061, 1061, 475, 475, 475, 475, 489, 489, 489, 489,
- 489, 489, 492, 492, 492, 492, 493, 1061, 493, 493,
- 493, 493, 268, 268, 268, 268, 268, 268, 268, 274,
- 1061, 274, 274, 274, 274, 274, 274, 274, 274, 274,
- 276, 1061, 276, 276, 276, 276, 276, 276, 276, 276,
-
- 276, 279, 1061, 279, 279, 279, 279, 279, 279, 279,
- 279, 279, 292, 1061, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 300, 300, 1061, 300, 300, 300, 300,
- 300, 300, 300, 300, 301, 301, 301, 301, 301, 301,
- 301, 301, 301, 301, 301, 315, 315, 1061, 315, 315,
- 315, 315, 315, 315, 315, 315, 318, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 318, 321, 321, 321,
- 321, 321, 321, 321, 321, 321, 321, 321, 325, 325,
- 325, 325, 325, 325, 325, 325, 325, 325, 325, 339,
- 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
-
- 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 345, 345, 345, 345, 345, 345, 345, 345, 345,
- 345, 345, 349, 349, 349, 349, 349, 349, 349, 349,
- 349, 349, 349, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 369, 369, 369, 369, 369,
- 369, 369, 369, 369, 369, 369, 373, 373, 373, 373,
- 373, 373, 373, 373, 373, 373, 373, 387, 387, 387,
- 387, 387, 387, 387, 387, 387, 387, 387, 390, 1061,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 392,
-
- 1061, 392, 392, 392, 392, 392, 392, 392, 392, 392,
- 395, 1061, 395, 395, 395, 395, 395, 395, 395, 395,
- 395, 408, 1061, 408, 408, 408, 408, 408, 408, 408,
- 408, 408, 169, 1061, 1061, 169, 169, 417, 1061, 1061,
- 417, 417, 417, 448, 1061, 1061, 448, 634, 1061, 634,
- 634, 634, 634, 634, 634, 634, 634, 634, 637, 1061,
- 637, 637, 637, 637, 637, 637, 637, 637, 637, 639,
- 1061, 639, 639, 639, 639, 639, 639, 639, 639, 639,
- 642, 642, 642, 642, 642, 642, 642, 231, 231, 231,
- 231, 231, 231, 231, 231, 489, 489, 489, 489, 489,
-
- 489, 651, 1061, 651, 651, 651, 651, 493, 1061, 493,
- 493, 493, 493, 268, 268, 268, 268, 268, 268, 268,
- 274, 1061, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 662, 1061, 662, 662, 662, 662, 662, 662, 662,
- 662, 662, 665, 1061, 665, 665, 665, 665, 665, 665,
- 665, 665, 665, 666, 1061, 666, 666, 666, 666, 666,
- 666, 666, 666, 666, 669, 1061, 669, 669, 669, 669,
- 669, 669, 669, 669, 669, 230, 230, 230, 230, 230,
- 230, 230, 300, 300, 1061, 300, 300, 300, 300, 300,
- 300, 300, 300, 682, 682, 682, 682, 682, 682, 682,
-
- 682, 682, 682, 682, 684, 684, 1061, 684, 684, 684,
- 684, 684, 684, 684, 684, 318, 318, 318, 318, 318,
- 318, 318, 318, 318, 318, 318, 692, 692, 692, 692,
- 692, 692, 692, 692, 692, 692, 692, 696, 696, 696,
- 696, 696, 696, 696, 696, 696, 696, 696, 698, 698,
- 698, 698, 698, 698, 698, 698, 698, 698, 698, 702,
- 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
- 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
- 342, 710, 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 714, 714, 714, 714, 714, 714, 714, 714,
-
- 714, 714, 714, 716, 716, 716, 716, 716, 716, 716,
- 716, 716, 716, 716, 720, 720, 720, 720, 720, 720,
- 720, 720, 720, 720, 720, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 366, 366, 728, 728, 728, 728,
- 728, 728, 728, 728, 728, 728, 728, 732, 732, 732,
- 732, 732, 732, 732, 732, 732, 732, 732, 734, 734,
- 734, 734, 734, 734, 734, 734, 734, 734, 734, 738,
- 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
- 390, 1061, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 746, 1061, 746, 746, 746, 746, 746, 746, 746,
-
- 746, 746, 749, 1061, 749, 749, 749, 749, 749, 749,
- 749, 749, 749, 750, 1061, 750, 750, 750, 750, 750,
- 750, 750, 750, 750, 753, 1061, 753, 753, 753, 753,
- 753, 753, 753, 753, 753, 417, 1061, 1061, 417, 417,
- 417, 634, 1061, 634, 634, 634, 634, 634, 634, 634,
- 634, 634, 637, 1061, 637, 637, 637, 637, 637, 637,
- 637, 637, 637, 639, 1061, 639, 639, 639, 639, 639,
- 639, 639, 639, 639, 642, 642, 642, 642, 642, 642,
- 642, 231, 231, 231, 231, 231, 231, 231, 231, 651,
- 1061, 651, 651, 651, 651, 493, 1061, 493, 493, 493,
-
- 493, 268, 268, 268, 268, 268, 268, 268, 274, 1061,
- 274, 274, 274, 274, 274, 274, 274, 274, 274, 662,
- 1061, 662, 662, 662, 662, 662, 662, 662, 662, 662,
- 665, 1061, 665, 665, 665, 665, 665, 665, 665, 665,
- 665, 666, 1061, 666, 666, 666, 666, 666, 666, 666,
- 666, 666, 669, 1061, 669, 669, 669, 669, 669, 669,
- 669, 669, 669, 230, 230, 230, 230, 230, 230, 230,
- 300, 300, 1061, 300, 300, 300, 300, 300, 300, 300,
- 300, 682, 682, 682, 682, 682, 682, 682, 682, 682,
- 682, 682, 684, 684, 1061, 684, 684, 684, 684, 684,
-
- 684, 684, 684, 318, 318, 318, 318, 318, 318, 318,
- 318, 318, 318, 318, 692, 692, 692, 692, 692, 692,
- 692, 692, 692, 692, 692, 696, 696, 696, 696, 696,
- 696, 696, 696, 696, 696, 696, 698, 698, 698, 698,
- 698, 698, 698, 698, 698, 698, 698, 702, 702, 702,
- 702, 702, 702, 702, 702, 702, 702, 702, 342, 342,
- 342, 342, 342, 342, 342, 342, 342, 342, 342, 710,
- 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
- 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
- 714, 716, 716, 716, 716, 716, 716, 716, 716, 716,
-
- 716, 716, 720, 720, 720, 720, 720, 720, 720, 720,
- 720, 720, 720, 366, 366, 366, 366, 366, 366, 366,
- 366, 366, 366, 366, 728, 728, 728, 728, 728, 728,
- 728, 728, 728, 728, 728, 732, 732, 732, 732, 732,
- 732, 732, 732, 732, 732, 732, 734, 734, 734, 734,
- 734, 734, 734, 734, 734, 734, 734, 738, 738, 738,
- 738, 738, 738, 738, 738, 738, 738, 738, 390, 1061,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 746,
- 1061, 746, 746, 746, 746, 746, 746, 746, 746, 746,
- 749, 1061, 749, 749, 749, 749, 749, 749, 749, 749,
-
- 749, 750, 1061, 750, 750, 750, 750, 750, 750, 750,
- 750, 750, 753, 1061, 753, 753, 753, 753, 753, 753,
- 753, 753, 753, 417, 1061, 1061, 417, 417, 417, 231,
- 231, 231, 231, 231, 231, 231, 231, 493, 1061, 493,
- 493, 493, 493, 268, 268, 268, 268, 268, 268, 268,
- 274, 1061, 274, 274, 274, 274, 274, 274, 274, 274,
- 274, 230, 230, 230, 230, 230, 230, 230, 300, 300,
- 1061, 300, 300, 300, 300, 300, 300, 300, 300, 23,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061
+ 365, 365, 365, 365, 365, 365, 365, 365, 344, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 862, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 344, 344, 370, 370, 371, 372, 370, 370,
+ 370, 370, 370, 370, 370, 370, 370, 370, 370, 1094,
+ 370, 370, 1094, 1094, 1094, 1094, 754, 370, 370, 370,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 370, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 370, 370, 370,
+
+ 370, 371, 372, 370, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 391, 370, 370, 391, 391, 391,
+ 391, 392, 370, 370, 370, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 370, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 866, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 370, 370, 396, 396, 397, 398, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 1094,
+ 396, 396, 1094, 1094, 1094, 1094, 772, 396, 396, 396,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 396, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 396, 396, 396,
+ 396, 397, 398, 396, 396, 396, 396, 396, 396, 396,
+ 396, 396, 396, 396, 417, 396, 396, 417, 417, 417,
+ 417, 418, 396, 396, 396, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 396, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 870, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 396, 396, 422, 422, 1094, 422, 422, 422,
+
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 1094,
+ 422, 422, 1094, 1094, 1094, 1094, 787, 422, 422, 422,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 422, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 422, 422, 422,
+ 422, 1094, 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 422, 440, 422, 422, 440, 440, 440,
+ 440, 441, 422, 422, 422, 440, 440, 440, 440, 440,
+ 440, 440, 440, 440, 440, 440, 440, 440, 422, 440,
+
+ 440, 440, 440, 440, 440, 440, 440, 440, 874, 440,
+ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
+ 440, 440, 422, 422, 297, 297, 1094, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 297, 315,
+ 297, 297, 315, 315, 315, 315, 316, 297, 297, 297,
+ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+ 315, 315, 315, 297, 315, 315, 315, 315, 315, 315,
+ 315, 315, 315, 315, 923, 315, 315, 315, 315, 315,
+ 315, 315, 315, 315, 315, 315, 315, 297, 297, 325,
+ 325, 325, 325, 325, 325, 1094, 325, 325, 325, 325,
+
+ 325, 325, 325, 325, 340, 325, 325, 340, 340, 340,
+ 340, 341, 325, 325, 325, 340, 340, 340, 340, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 325, 340,
+ 340, 340, 340, 340, 340, 340, 340, 340, 340, 927,
+ 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
+ 340, 340, 325, 325, 182, 1094, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 185, 1094, 1094, 185, 185,
+ 193, 1094, 193, 193, 193, 193, 193, 193, 193, 193,
+ 193, 247, 247, 247, 247, 247, 247, 247, 247, 263,
+ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
+
+ 284, 284, 284, 284, 287, 1094, 287, 1094, 287, 287,
+ 287, 287, 291, 291, 291, 291, 291, 291, 291, 297,
+ 1094, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 299, 1094, 299, 299, 299, 299, 299, 299, 299, 299,
+ 299, 302, 1094, 302, 302, 302, 302, 302, 302, 302,
+ 302, 302, 315, 1094, 315, 315, 315, 315, 315, 315,
+ 315, 315, 315, 246, 246, 246, 246, 246, 246, 246,
+ 325, 325, 1094, 325, 325, 325, 325, 325, 325, 325,
+ 325, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ 326, 326, 340, 340, 1094, 340, 340, 340, 340, 340,
+
+ 340, 340, 340, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 347, 347, 347, 347, 347, 347,
+ 347, 347, 347, 347, 347, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 370, 370, 370,
+ 370, 370, 370, 370, 370, 370, 370, 370, 373, 373,
+ 373, 373, 373, 373, 373, 373, 373, 373, 373, 377,
+ 377, 377, 377, 377, 377, 377, 377, 377, 377, 377,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+
+ 396, 396, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 403, 403, 403, 403, 403, 403, 403,
+ 403, 403, 403, 403, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 422, 1094, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 424, 1094, 424, 424,
+ 424, 424, 424, 424, 424, 424, 424, 427, 1094, 427,
+ 427, 427, 427, 427, 427, 427, 427, 427, 440, 1094,
+ 440, 440, 440, 440, 440, 440, 440, 440, 440, 185,
+ 1094, 1094, 185, 185, 193, 1094, 193, 193, 193, 193,
+ 193, 193, 193, 193, 193, 450, 1094, 1094, 450, 450,
+
+ 450, 481, 1094, 1094, 481, 246, 246, 246, 246, 246,
+ 246, 246, 247, 247, 247, 247, 247, 247, 247, 247,
+ 508, 1094, 1094, 1094, 1094, 508, 508, 508, 508, 263,
+ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
+ 522, 522, 522, 522, 522, 522, 525, 525, 525, 525,
+ 526, 1094, 526, 526, 526, 526, 291, 291, 291, 291,
+ 291, 291, 291, 297, 1094, 297, 297, 297, 297, 297,
+ 297, 297, 297, 297, 299, 1094, 299, 299, 299, 299,
+ 299, 299, 299, 299, 299, 302, 1094, 302, 302, 302,
+ 302, 302, 302, 302, 302, 302, 315, 1094, 315, 315,
+
+ 315, 315, 315, 315, 315, 315, 315, 325, 325, 1094,
+ 325, 325, 325, 325, 325, 325, 325, 325, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 340,
+ 340, 1094, 340, 340, 340, 340, 340, 340, 340, 340,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 347, 347, 347, 347, 347, 347, 347, 347, 347,
+ 347, 347, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 373, 373, 373, 373, 373,
+
+ 373, 373, 373, 373, 373, 373, 377, 377, 377, 377,
+ 377, 377, 377, 377, 377, 377, 377, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 396, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
+ 403, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 422, 1094, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 424, 1094, 424, 424, 424, 424, 424,
+ 424, 424, 424, 424, 427, 1094, 427, 427, 427, 427,
+
+ 427, 427, 427, 427, 427, 440, 1094, 440, 440, 440,
+ 440, 440, 440, 440, 440, 440, 185, 1094, 1094, 185,
+ 185, 450, 1094, 1094, 450, 450, 450, 481, 1094, 1094,
+ 481, 667, 1094, 667, 667, 667, 667, 667, 667, 667,
+ 667, 667, 670, 1094, 670, 670, 670, 670, 670, 670,
+ 670, 670, 670, 672, 1094, 672, 672, 672, 672, 672,
+ 672, 672, 672, 672, 675, 675, 675, 675, 675, 675,
+ 675, 247, 247, 247, 247, 247, 247, 247, 247, 263,
+ 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
+ 522, 522, 522, 522, 522, 522, 684, 1094, 684, 684,
+
+ 684, 684, 526, 1094, 526, 526, 526, 526, 291, 291,
+ 291, 291, 291, 291, 291, 297, 1094, 297, 297, 297,
+ 297, 297, 297, 297, 297, 297, 695, 1094, 695, 695,
+ 695, 695, 695, 695, 695, 695, 695, 698, 1094, 698,
+ 698, 698, 698, 698, 698, 698, 698, 698, 699, 1094,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 702,
+ 1094, 702, 702, 702, 702, 702, 702, 702, 702, 702,
+ 246, 246, 246, 246, 246, 246, 246, 325, 325, 1094,
+ 325, 325, 325, 325, 325, 325, 325, 325, 715, 715,
+ 715, 715, 715, 715, 715, 715, 715, 715, 715, 717,
+
+ 717, 1094, 717, 717, 717, 717, 717, 717, 717, 717,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 725, 725, 725, 725, 725, 725, 725, 725, 725,
+ 725, 725, 729, 729, 729, 729, 729, 729, 729, 729,
+ 729, 729, 729, 731, 731, 731, 731, 731, 731, 731,
+ 731, 731, 731, 731, 735, 735, 735, 735, 735, 735,
+ 735, 735, 735, 735, 735, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 370, 743, 743, 743, 743,
+ 743, 743, 743, 743, 743, 743, 743, 747, 747, 747,
+ 747, 747, 747, 747, 747, 747, 747, 747, 749, 749,
+
+ 749, 749, 749, 749, 749, 749, 749, 749, 749, 753,
+ 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 396, 761, 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 761, 765, 765, 765, 765, 765, 765, 765, 765,
+ 765, 765, 765, 767, 767, 767, 767, 767, 767, 767,
+ 767, 767, 767, 767, 771, 771, 771, 771, 771, 771,
+ 771, 771, 771, 771, 771, 422, 1094, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 779, 1094, 779, 779,
+ 779, 779, 779, 779, 779, 779, 779, 782, 1094, 782,
+
+ 782, 782, 782, 782, 782, 782, 782, 782, 783, 1094,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 786,
+ 1094, 786, 786, 786, 786, 786, 786, 786, 786, 786,
+ 450, 1094, 1094, 450, 450, 450, 667, 1094, 667, 667,
+ 667, 667, 667, 667, 667, 667, 667, 670, 1094, 670,
+ 670, 670, 670, 670, 670, 670, 670, 670, 672, 1094,
+ 672, 672, 672, 672, 672, 672, 672, 672, 672, 675,
+ 675, 675, 675, 675, 675, 675, 247, 247, 247, 247,
+ 247, 247, 247, 247, 263, 263, 263, 263, 263, 263,
+ 263, 263, 263, 263, 263, 684, 1094, 684, 684, 684,
+
+ 684, 526, 1094, 526, 526, 526, 526, 291, 291, 291,
+ 291, 291, 291, 291, 297, 1094, 297, 297, 297, 297,
+ 297, 297, 297, 297, 297, 695, 1094, 695, 695, 695,
+ 695, 695, 695, 695, 695, 695, 698, 1094, 698, 698,
+ 698, 698, 698, 698, 698, 698, 698, 699, 1094, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 702, 1094,
+ 702, 702, 702, 702, 702, 702, 702, 702, 702, 246,
+ 246, 246, 246, 246, 246, 246, 325, 325, 1094, 325,
+ 325, 325, 325, 325, 325, 325, 325, 715, 715, 715,
+ 715, 715, 715, 715, 715, 715, 715, 715, 717, 717,
+
+ 1094, 717, 717, 717, 717, 717, 717, 717, 717, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
+ 725, 729, 729, 729, 729, 729, 729, 729, 729, 729,
+ 729, 729, 731, 731, 731, 731, 731, 731, 731, 731,
+ 731, 731, 731, 735, 735, 735, 735, 735, 735, 735,
+ 735, 735, 735, 735, 370, 370, 370, 370, 370, 370,
+ 370, 370, 370, 370, 370, 743, 743, 743, 743, 743,
+ 743, 743, 743, 743, 743, 743, 747, 747, 747, 747,
+ 747, 747, 747, 747, 747, 747, 747, 749, 749, 749,
+
+ 749, 749, 749, 749, 749, 749, 749, 749, 753, 753,
+ 753, 753, 753, 753, 753, 753, 753, 753, 753, 396,
+ 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
+ 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 765, 765, 765, 765, 765, 765, 765, 765, 765,
+ 765, 765, 767, 767, 767, 767, 767, 767, 767, 767,
+ 767, 767, 767, 771, 771, 771, 771, 771, 771, 771,
+ 771, 771, 771, 771, 422, 1094, 422, 422, 422, 422,
+ 422, 422, 422, 422, 422, 779, 1094, 779, 779, 779,
+ 779, 779, 779, 779, 779, 779, 782, 1094, 782, 782,
+
+ 782, 782, 782, 782, 782, 782, 782, 783, 1094, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 786, 1094,
+ 786, 786, 786, 786, 786, 786, 786, 786, 786, 450,
+ 1094, 1094, 450, 450, 450, 247, 247, 247, 247, 247,
+ 247, 247, 247, 263, 263, 263, 263, 263, 263, 263,
+ 263, 263, 263, 263, 526, 1094, 526, 526, 526, 526,
+ 291, 291, 291, 291, 291, 291, 291, 297, 1094, 297,
+ 297, 297, 297, 297, 297, 297, 297, 297, 246, 246,
+ 246, 246, 246, 246, 246, 325, 325, 1094, 325, 325,
+ 325, 325, 325, 325, 325, 325, 23, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094
} ;
-static yyconst flex_int16_t yy_chk[7046] =
+static yyconst flex_int16_t yy_chk[7163] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1612,582 +1648,560 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 220, 3, 3, 3,
- 29, 44, 44, 3, 3, 220, 3, 3, 13, 3,
- 3, 3, 6, 14, 6, 6, 3, 3, 3, 3,
- 13, 13, 13, 13, 35, 14, 14, 14, 14, 25,
-
- 196, 25, 25, 29, 196, 6, 35, 27, 27, 27,
- 27, 3, 33, 3, 25, 31, 3, 31, 3, 31,
- 31, 3, 27, 3, 45, 45, 33, 3, 3, 5,
+ 1, 1, 1, 1, 1, 2, 33, 2, 2, 29,
+ 35, 4, 236, 4, 4, 1088, 6, 40, 6, 6,
+ 33, 236, 35, 8, 40, 8, 8, 55, 2, 3,
+ 74, 3, 3, 3, 4, 44, 44, 3, 3, 6,
+
+ 3, 3, 29, 3, 3, 3, 8, 45, 45, 108,
+ 3, 3, 3, 3, 10, 13, 10, 10, 12, 1084,
+ 12, 12, 16, 74, 16, 16, 55, 13, 13, 13,
+ 13, 18, 108, 18, 18, 3, 20, 3, 20, 20,
+ 3, 22, 3, 22, 22, 3, 212, 3, 46, 46,
+ 212, 3, 3, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 7, 7, 7, 7, 7, 7,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 11, 11, 11, 11, 11, 11,
+ 9, 9, 9, 9, 9, 9, 9, 9, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 14, 1083, 14, 14, 31, 14, 31,
+ 82, 31, 31, 60, 1082, 60, 60, 82, 122, 122,
+ 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 17, 17, 17, 17, 17, 17,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 17,
+
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 19,
- 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
+
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 21, 21, 21, 21, 21, 21,
+ 19, 19, 19, 19, 19, 19, 19, 19, 19, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
-
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 36,
- 1055, 36, 36, 36, 36, 40, 38, 36, 38, 38,
- 38, 38, 40, 102, 38, 39, 39, 39, 39, 46,
- 46, 39, 1051, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 102, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 25, 91, 25, 25, 27, 27,
+ 27, 27, 36, 209, 36, 36, 36, 36, 209, 25,
+ 36, 47, 38, 27, 38, 38, 38, 38, 47, 1080,
+ 38, 39, 39, 39, 39, 47, 233, 39, 91, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 41, 47, 41, 41, 41, 41, 200, 51, 47, 49,
- 1050, 70, 41, 41, 51, 47, 49, 41, 55, 41,
- 200, 51, 41, 49, 56, 58, 41, 58, 58, 41,
- 42, 78, 42, 42, 42, 42, 676, 41, 78, 48,
- 197, 52, 197, 42, 70, 41, 48, 42, 52, 48,
- 48, 48, 48, 48, 49, 52, 193, 55, 51, 42,
- 43, 193, 43, 676, 56, 43, 1049, 50, 43, 43,
- 43, 43, 43, 43, 50, 53, 43, 822, 43, 43,
- 54, 50, 53, 218, 52, 57, 57, 54, 218, 53,
-
- 59, 59, 59, 59, 54, 60, 64, 60, 60, 60,
- 60, 1047, 80, 64, 57, 50, 87, 822, 62, 80,
- 64, 50, 53, 114, 114, 113, 62, 62, 62, 62,
- 62, 62, 116, 116, 54, 53, 61, 62, 67, 67,
- 67, 67, 80, 64, 69, 69, 69, 69, 71, 87,
- 71, 217, 71, 71, 61, 61, 105, 61, 113, 61,
- 105, 61, 61, 61, 61, 105, 61, 217, 61, 61,
- 61, 74, 1046, 73, 61, 73, 73, 73, 73, 126,
- 126, 74, 74, 74, 74, 76, 1044, 76, 76, 76,
- 76, 81, 81, 81, 81, 128, 128, 198, 76, 198,
-
- 79, 627, 76, 79, 79, 79, 79, 79, 74, 74,
- 627, 118, 118, 74, 76, 82, 82, 82, 82, 89,
- 118, 89, 89, 89, 89, 90, 90, 90, 90, 123,
- 123, 92, 99, 99, 99, 99, 117, 117, 92, 153,
- 117, 92, 130, 130, 1043, 92, 98, 98, 98, 98,
- 123, 130, 166, 90, 138, 138, 92, 90, 91, 1040,
- 91, 91, 91, 91, 92, 107, 107, 107, 107, 109,
- 91, 91, 153, 117, 98, 91, 109, 91, 98, 109,
- 91, 140, 140, 109, 91, 166, 106, 91, 106, 106,
- 106, 106, 195, 107, 109, 91, 195, 107, 135, 135,
-
- 195, 257, 109, 91, 94, 94, 257, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 135,
- 94, 94, 215, 119, 119, 268, 94, 94, 94, 94,
- 215, 100, 268, 100, 100, 100, 100, 119, 276, 119,
- 119, 119, 119, 94, 100, 131, 131, 216, 100, 142,
- 142, 216, 129, 129, 190, 430, 129, 430, 142, 131,
- 100, 131, 131, 131, 131, 216, 190, 94, 94, 95,
- 95, 276, 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 1037, 95, 95, 120, 120, 129,
- 267, 95, 95, 95, 95, 147, 147, 163, 267, 163,
-
- 163, 132, 132, 120, 120, 120, 120, 155, 95, 155,
- 155, 155, 155, 427, 95, 122, 147, 132, 132, 132,
- 132, 299, 122, 206, 206, 122, 209, 209, 209, 122,
- 427, 120, 95, 95, 108, 120, 108, 108, 108, 108,
- 122, 156, 156, 156, 156, 132, 108, 108, 122, 132,
- 821, 108, 162, 108, 162, 162, 108, 299, 141, 141,
- 108, 291, 141, 108, 214, 214, 291, 162, 816, 156,
- 816, 108, 1036, 156, 170, 170, 170, 170, 821, 108,
- 111, 111, 111, 111, 111, 111, 1035, 111, 111, 111,
- 111, 111, 111, 111, 111, 141, 111, 111, 392, 134,
-
- 228, 228, 111, 111, 111, 111, 134, 468, 146, 134,
- 1033, 143, 143, 134, 247, 146, 247, 247, 146, 111,
- 830, 223, 146, 830, 134, 143, 223, 143, 143, 143,
- 143, 392, 134, 146, 171, 171, 171, 171, 896, 223,
- 468, 146, 896, 111, 111, 112, 112, 112, 112, 112,
- 112, 1032, 112, 112, 112, 112, 112, 112, 112, 112,
- 834, 112, 112, 834, 158, 254, 254, 112, 112, 112,
- 112, 158, 286, 286, 158, 144, 144, 1031, 158, 172,
- 172, 172, 172, 1030, 112, 173, 173, 173, 173, 158,
- 112, 144, 144, 144, 144, 309, 309, 158, 180, 180,
-
- 180, 180, 314, 184, 184, 184, 184, 314, 112, 112,
- 121, 121, 250, 301, 184, 838, 250, 301, 838, 144,
- 250, 892, 301, 144, 121, 1023, 121, 121, 121, 121,
- 184, 205, 205, 205, 205, 1018, 121, 121, 231, 318,
- 318, 121, 205, 121, 892, 231, 121, 320, 320, 207,
- 121, 207, 231, 121, 207, 207, 207, 207, 205, 323,
- 323, 121, 258, 258, 258, 258, 289, 289, 289, 121,
- 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 842, 124, 124, 842, 235,
- 324, 324, 124, 124, 124, 124, 235, 181, 677, 181,
-
- 181, 181, 181, 235, 941, 233, 234, 335, 335, 124,
- 181, 1017, 233, 234, 181, 233, 233, 233, 233, 233,
- 234, 260, 260, 260, 260, 677, 181, 262, 262, 262,
- 262, 262, 1014, 124, 124, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 941, 125, 125, 1013, 236, 238, 234, 125, 125, 125,
- 125, 236, 238, 237, 240, 239, 271, 942, 236, 238,
- 237, 240, 239, 271, 125, 342, 342, 237, 240, 239,
- 125, 241, 272, 272, 272, 272, 344, 344, 241, 1011,
- 238, 273, 273, 273, 273, 241, 347, 347, 125, 125,
-
- 133, 133, 325, 325, 236, 237, 237, 348, 348, 271,
- 1010, 325, 240, 942, 133, 239, 133, 133, 133, 133,
- 312, 312, 312, 241, 359, 359, 133, 133, 326, 326,
- 826, 133, 826, 133, 366, 366, 133, 326, 321, 321,
- 133, 270, 321, 133, 270, 270, 270, 270, 270, 349,
- 349, 133, 280, 280, 280, 280, 368, 368, 349, 133,
- 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
- 136, 136, 136, 136, 136, 321, 136, 136, 303, 303,
- 303, 303, 136, 136, 136, 136, 1009, 281, 407, 281,
- 281, 281, 281, 407, 282, 282, 282, 282, 897, 136,
-
- 281, 287, 897, 287, 281, 282, 287, 287, 287, 287,
- 371, 371, 310, 985, 310, 985, 281, 310, 310, 310,
- 310, 282, 1007, 136, 136, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 893, 137, 137, 372, 372, 330, 330, 137, 137, 137,
- 137, 285, 285, 285, 285, 298, 890, 298, 298, 298,
- 298, 890, 285, 893, 137, 331, 331, 898, 298, 516,
- 137, 898, 298, 322, 322, 354, 354, 322, 285, 333,
- 333, 383, 383, 1006, 298, 350, 350, 474, 137, 137,
- 145, 145, 330, 516, 350, 333, 333, 516, 304, 1005,
-
- 304, 304, 304, 304, 145, 1004, 145, 145, 145, 145,
- 322, 304, 331, 402, 402, 304, 145, 145, 327, 327,
- 474, 145, 354, 145, 444, 444, 145, 304, 336, 336,
- 145, 355, 355, 145, 327, 327, 327, 327, 338, 338,
- 1002, 145, 338, 891, 336, 336, 336, 338, 891, 145,
- 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 1001, 148, 148, 305, 305,
- 305, 305, 148, 148, 148, 148, 453, 1000, 355, 305,
- 308, 308, 308, 308, 453, 334, 334, 453, 899, 148,
- 998, 308, 899, 345, 345, 305, 334, 345, 334, 373,
-
- 373, 334, 334, 334, 334, 346, 346, 308, 373, 346,
- 378, 378, 990, 148, 148, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 345, 149, 149, 988, 329, 329, 656, 149, 149, 149,
- 149, 986, 346, 656, 369, 369, 332, 332, 369, 984,
- 329, 329, 329, 329, 149, 357, 357, 378, 360, 360,
- 149, 329, 332, 332, 332, 332, 503, 503, 379, 379,
- 656, 357, 357, 332, 360, 360, 360, 329, 149, 149,
- 157, 369, 157, 157, 157, 157, 900, 362, 362, 332,
- 900, 362, 157, 157, 351, 351, 362, 157, 411, 157,
-
- 411, 411, 157, 358, 358, 983, 157, 381, 381, 157,
- 351, 351, 351, 351, 358, 379, 358, 157, 982, 358,
- 358, 358, 358, 381, 381, 157, 160, 160, 981, 160,
- 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
- 160, 947, 160, 160, 353, 353, 374, 374, 160, 160,
- 160, 160, 405, 405, 405, 374, 521, 521, 375, 375,
- 353, 353, 353, 353, 901, 160, 356, 356, 901, 370,
- 370, 353, 979, 370, 375, 375, 375, 375, 396, 396,
- 396, 396, 356, 356, 356, 356, 947, 353, 508, 160,
- 160, 161, 161, 356, 161, 161, 161, 161, 161, 161,
-
- 161, 161, 161, 161, 161, 161, 370, 161, 161, 356,
- 377, 377, 978, 161, 161, 161, 161, 412, 412, 412,
- 412, 508, 384, 384, 575, 575, 377, 377, 377, 377,
- 161, 650, 650, 380, 380, 977, 161, 377, 384, 384,
- 384, 413, 413, 413, 413, 414, 414, 414, 414, 380,
- 380, 380, 380, 377, 161, 161, 290, 290, 290, 290,
- 380, 415, 415, 415, 415, 290, 290, 290, 386, 386,
- 530, 530, 386, 447, 447, 447, 380, 386, 976, 290,
- 290, 290, 290, 290, 290, 292, 292, 975, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
-
- 510, 292, 292, 382, 382, 580, 974, 292, 292, 292,
- 292, 506, 506, 506, 382, 987, 382, 987, 530, 382,
- 382, 382, 382, 397, 292, 397, 397, 397, 397, 445,
- 445, 445, 445, 510, 673, 673, 397, 403, 580, 403,
- 397, 973, 403, 403, 403, 403, 694, 694, 292, 292,
- 293, 293, 397, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
-
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 294, 294, 970, 294, 294,
- 294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
- 969, 294, 294, 398, 398, 398, 398, 294, 294, 294,
- 294, 524, 524, 524, 398, 401, 401, 401, 401, 968,
- 443, 443, 443, 443, 294, 967, 401, 416, 943, 416,
- 398, 443, 416, 416, 416, 416, 446, 446, 446, 446,
- 695, 695, 401, 294, 531, 531, 943, 443, 294, 294,
- 313, 313, 313, 313, 965, 476, 478, 479, 480, 313,
- 313, 313, 476, 478, 479, 480, 963, 544, 544, 476,
-
- 478, 479, 480, 313, 313, 313, 313, 313, 313, 315,
- 315, 315, 315, 315, 315, 962, 315, 315, 315, 315,
- 315, 315, 315, 315, 531, 315, 315, 961, 481, 479,
- 483, 315, 315, 315, 315, 481, 960, 483, 504, 504,
- 504, 504, 481, 959, 483, 544, 539, 539, 315, 491,
- 491, 491, 491, 491, 499, 539, 499, 700, 700, 499,
- 499, 499, 499, 505, 505, 505, 505, 522, 522, 522,
- 522, 483, 315, 315, 316, 316, 316, 316, 316, 316,
+ 39, 39, 233, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 41, 52, 41, 41,
+ 41, 41, 216, 51, 52, 49, 976, 53, 41, 41,
+ 51, 52, 49, 41, 53, 41, 216, 51, 41, 49,
+ 56, 53, 41, 112, 976, 41, 42, 112, 42, 42,
+
+ 42, 42, 112, 41, 67, 48, 67, 67, 1079, 42,
+ 52, 41, 48, 42, 53, 48, 48, 48, 48, 48,
+ 49, 69, 69, 660, 51, 42, 43, 53, 43, 460,
+ 56, 43, 660, 50, 43, 43, 43, 43, 43, 43,
+ 50, 54, 43, 84, 43, 43, 460, 50, 54, 57,
+ 84, 57, 57, 59, 59, 54, 66, 58, 58, 58,
+ 58, 231, 69, 66, 57, 61, 61, 61, 61, 231,
+ 66, 50, 58, 84, 1077, 59, 59, 50, 62, 64,
+ 62, 62, 62, 62, 121, 54, 167, 64, 64, 64,
+ 64, 64, 64, 66, 59, 63, 124, 124, 64, 68,
+
+ 68, 68, 68, 71, 71, 71, 71, 73, 73, 73,
+ 73, 87, 87, 63, 63, 1076, 63, 121, 63, 167,
+ 63, 63, 63, 63, 213, 63, 213, 63, 63, 63,
+ 75, 323, 75, 63, 75, 75, 77, 78, 77, 77,
+ 77, 77, 85, 85, 85, 85, 980, 78, 78, 78,
+ 78, 80, 87, 80, 80, 80, 80, 86, 86, 86,
+ 86, 131, 131, 214, 80, 214, 83, 323, 80, 83,
+ 83, 83, 83, 83, 78, 78, 136, 136, 1073, 78,
+ 80, 93, 131, 93, 93, 93, 93, 94, 94, 94,
+ 94, 980, 100, 96, 100, 100, 101, 101, 101, 101,
+
+ 96, 234, 109, 96, 109, 109, 234, 96, 104, 104,
+ 104, 104, 126, 126, 120, 94, 120, 120, 96, 94,
+ 95, 126, 95, 95, 95, 95, 96, 105, 105, 105,
+ 105, 116, 95, 95, 138, 138, 104, 95, 116, 95,
+ 104, 116, 95, 150, 150, 116, 95, 810, 113, 95,
+ 113, 113, 113, 113, 140, 140, 116, 95, 134, 134,
+ 134, 134, 810, 140, 116, 95, 98, 98, 810, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 1070, 98, 98, 114, 114, 114, 114, 98, 98,
+ 98, 98, 463, 106, 463, 106, 106, 106, 106, 135,
+
+ 135, 135, 135, 152, 152, 98, 106, 127, 127, 849,
+ 106, 849, 114, 125, 125, 239, 114, 125, 154, 154,
+ 239, 127, 106, 127, 127, 127, 127, 154, 1069, 98,
+ 98, 99, 99, 239, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 863, 99, 99, 863,
+ 125, 145, 145, 99, 99, 99, 99, 130, 148, 148,
+ 148, 148, 128, 128, 130, 139, 139, 130, 279, 139,
+ 99, 130, 145, 279, 182, 1068, 99, 206, 128, 128,
+ 128, 128, 130, 149, 149, 149, 149, 153, 153, 206,
+ 130, 153, 222, 222, 99, 99, 115, 1066, 115, 115,
+
+ 115, 115, 139, 225, 225, 225, 128, 182, 115, 115,
+ 128, 159, 159, 115, 176, 115, 176, 176, 115, 929,
+ 141, 141, 115, 929, 153, 115, 162, 162, 162, 162,
+ 230, 230, 159, 115, 141, 1065, 141, 141, 141, 141,
+ 290, 115, 118, 118, 118, 118, 118, 118, 290, 118,
+ 118, 118, 118, 118, 118, 118, 118, 1064, 118, 118,
+ 163, 163, 163, 163, 118, 118, 118, 118, 155, 155,
+ 169, 299, 169, 169, 169, 169, 244, 244, 142, 142,
+ 867, 118, 155, 867, 155, 155, 155, 155, 177, 177,
+ 177, 177, 263, 263, 142, 142, 142, 142, 178, 974,
+
+ 178, 178, 265, 265, 299, 118, 118, 119, 119, 119,
+ 119, 119, 119, 178, 119, 119, 119, 119, 119, 119,
+ 119, 119, 142, 119, 119, 1063, 142, 424, 144, 119,
+ 119, 119, 119, 232, 158, 144, 291, 232, 144, 156,
+ 156, 158, 144, 291, 158, 974, 119, 179, 158, 179,
+ 179, 232, 119, 144, 854, 156, 156, 156, 156, 158,
+ 424, 144, 186, 186, 186, 186, 1056, 158, 266, 266,
+ 119, 119, 129, 129, 170, 170, 170, 170, 187, 187,
+ 187, 187, 854, 156, 267, 267, 129, 156, 129, 129,
+ 129, 129, 188, 188, 188, 188, 501, 172, 129, 129,
+
+ 276, 276, 170, 129, 172, 129, 170, 172, 129, 309,
+ 309, 172, 129, 1051, 247, 129, 189, 189, 189, 189,
+ 1050, 247, 172, 129, 196, 196, 196, 196, 247, 501,
+ 172, 129, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 507, 132, 132,
+ 269, 251, 269, 269, 132, 132, 132, 132, 251, 197,
+ 925, 197, 197, 197, 197, 251, 200, 200, 200, 200,
+ 211, 132, 197, 1047, 211, 253, 197, 200, 211, 223,
+ 507, 223, 253, 925, 223, 223, 223, 223, 197, 253,
+ 312, 312, 312, 200, 977, 132, 132, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 977, 133, 133, 268, 268, 253, 253, 133,
+ 133, 133, 133, 221, 221, 221, 221, 272, 334, 334,
+ 294, 272, 1046, 249, 221, 272, 133, 294, 344, 344,
+ 249, 250, 133, 249, 249, 249, 249, 249, 250, 314,
+ 221, 252, 254, 871, 314, 250, 871, 255, 252, 254,
+ 133, 133, 143, 143, 255, 252, 254, 1044, 256, 339,
+ 257, 255, 268, 294, 339, 256, 143, 257, 143, 143,
+ 143, 143, 256, 280, 257, 280, 280, 254, 143, 143,
+ 859, 250, 859, 143, 262, 143, 262, 262, 143, 346,
+
+ 346, 252, 143, 349, 349, 143, 1043, 255, 318, 262,
+ 318, 318, 257, 143, 350, 350, 256, 281, 281, 281,
+ 281, 143, 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 1042, 146, 146,
+ 283, 283, 283, 283, 146, 146, 146, 146, 285, 285,
+ 285, 285, 285, 293, 361, 361, 293, 293, 293, 293,
+ 293, 146, 295, 295, 295, 295, 296, 296, 296, 296,
+ 303, 303, 303, 303, 310, 324, 310, 324, 324, 310,
+ 310, 310, 310, 370, 370, 146, 146, 147, 147, 147,
+ 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
+
+ 147, 147, 1040, 147, 147, 328, 328, 328, 328, 147,
+ 147, 147, 147, 1018, 304, 1018, 304, 304, 304, 304,
+ 372, 372, 305, 305, 305, 305, 147, 304, 337, 337,
+ 337, 304, 147, 305, 308, 308, 308, 308, 326, 351,
+ 351, 439, 326, 304, 1039, 308, 439, 326, 351, 305,
+ 147, 147, 157, 157, 343, 709, 343, 343, 352, 352,
+ 322, 308, 322, 322, 322, 322, 157, 352, 157, 157,
+ 157, 157, 1038, 322, 375, 375, 549, 322, 157, 157,
+ 356, 356, 709, 157, 1037, 157, 357, 357, 157, 322,
+ 930, 335, 157, 335, 930, 157, 335, 335, 335, 335,
+
+ 549, 347, 347, 157, 549, 347, 368, 368, 368, 368,
+ 1035, 157, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 356, 160, 160,
+ 376, 376, 926, 357, 160, 160, 160, 160, 347, 329,
+ 710, 329, 329, 329, 329, 923, 330, 330, 330, 330,
+ 923, 160, 329, 353, 353, 926, 329, 330, 348, 348,
+ 387, 387, 348, 369, 369, 369, 369, 710, 329, 353,
+ 353, 353, 353, 330, 1034, 160, 160, 161, 161, 161,
+ 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+ 161, 161, 1033, 161, 161, 348, 359, 359, 794, 161,
+
+ 161, 161, 161, 333, 333, 333, 333, 355, 355, 377,
+ 377, 794, 359, 359, 333, 931, 161, 794, 377, 931,
+ 360, 360, 161, 355, 355, 355, 355, 541, 373, 373,
+ 333, 360, 373, 360, 355, 1031, 360, 360, 360, 360,
+ 161, 161, 171, 543, 171, 171, 171, 171, 374, 374,
+ 355, 1023, 374, 924, 171, 171, 362, 362, 924, 171,
+ 541, 171, 382, 382, 171, 373, 364, 364, 171, 981,
+ 364, 171, 362, 362, 362, 364, 543, 378, 378, 171,
+ 396, 396, 1021, 383, 383, 374, 378, 171, 174, 174,
+ 1019, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+
+ 174, 174, 174, 1017, 174, 174, 358, 358, 855, 382,
+ 174, 174, 174, 174, 981, 385, 385, 613, 379, 379,
+ 398, 398, 358, 358, 358, 358, 1016, 174, 381, 381,
+ 383, 385, 385, 358, 379, 379, 379, 379, 855, 390,
+ 390, 401, 401, 390, 381, 381, 381, 381, 390, 358,
+ 613, 174, 174, 175, 175, 381, 175, 175, 175, 175,
+ 175, 175, 175, 175, 175, 175, 175, 175, 1015, 175,
+ 175, 381, 384, 384, 1014, 175, 175, 175, 175, 394,
+ 394, 394, 394, 1012, 386, 386, 402, 402, 384, 384,
+ 384, 384, 175, 388, 388, 386, 1011, 386, 175, 384,
+
+ 386, 386, 386, 386, 395, 395, 395, 395, 932, 388,
+ 388, 388, 932, 403, 403, 384, 175, 175, 313, 313,
+ 313, 313, 403, 404, 404, 413, 413, 313, 313, 313,
+ 399, 399, 404, 1010, 399, 615, 400, 400, 408, 408,
+ 400, 313, 313, 313, 313, 313, 313, 315, 315, 1009,
+ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
+ 315, 315, 1008, 315, 315, 405, 405, 399, 615, 315,
+ 315, 315, 315, 400, 411, 411, 412, 412, 434, 434,
+ 1007, 405, 405, 405, 405, 408, 315, 412, 1006, 412,
+ 411, 411, 412, 412, 412, 412, 416, 416, 477, 477,
+
+ 416, 420, 420, 420, 420, 416, 421, 421, 421, 421,
+ 315, 315, 316, 316, 1003, 316, 316, 316, 316, 316,
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
-
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
- 316, 316, 316, 316, 316, 316, 316, 316, 316, 317,
- 317, 317, 317, 317, 317, 958, 317, 317, 317, 317,
- 317, 317, 317, 317, 957, 317, 317, 701, 701, 484,
- 498, 317, 317, 317, 317, 477, 484, 498, 956, 482,
- 902, 526, 477, 484, 902, 526, 482, 955, 317, 477,
- 526, 558, 558, 482, 533, 533, 582, 502, 502, 502,
- 502, 498, 578, 578, 578, 498, 484, 317, 502, 657,
-
- 533, 533, 317, 317, 328, 328, 657, 482, 538, 538,
- 477, 482, 538, 634, 502, 553, 553, 639, 328, 582,
- 328, 328, 328, 328, 553, 520, 520, 520, 520, 558,
- 662, 328, 517, 657, 517, 328, 520, 517, 517, 517,
- 517, 523, 523, 523, 523, 538, 634, 328, 337, 337,
- 639, 934, 520, 534, 534, 712, 712, 894, 545, 545,
- 535, 535, 894, 662, 337, 337, 337, 337, 945, 534,
- 534, 534, 534, 337, 337, 337, 535, 535, 535, 535,
- 666, 559, 559, 576, 576, 576, 576, 337, 337, 337,
- 337, 337, 337, 339, 339, 339, 339, 339, 339, 339,
-
- 339, 339, 339, 339, 339, 339, 339, 339, 545, 339,
- 339, 529, 529, 666, 945, 339, 339, 339, 339, 536,
- 536, 989, 529, 989, 529, 547, 547, 529, 529, 529,
- 529, 559, 339, 543, 543, 536, 536, 536, 561, 561,
- 895, 547, 547, 932, 543, 895, 543, 713, 713, 543,
- 543, 543, 543, 931, 561, 561, 339, 339, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
-
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
- 340, 340, 340, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 930, 341,
- 341, 532, 532, 567, 567, 341, 341, 341, 341, 718,
- 718, 929, 567, 546, 546, 719, 719, 532, 532, 532,
- 532, 927, 341, 540, 540, 730, 730, 540, 532, 546,
- 546, 546, 546, 926, 548, 548, 577, 577, 577, 577,
- 546, 341, 731, 731, 532, 746, 341, 341, 352, 352,
- 548, 548, 548, 548, 549, 549, 546, 552, 552, 903,
-
- 540, 552, 352, 903, 352, 352, 352, 352, 550, 550,
- 549, 549, 549, 549, 750, 352, 554, 554, 746, 352,
- 554, 944, 644, 645, 550, 550, 550, 557, 557, 644,
- 645, 352, 361, 361, 552, 925, 644, 645, 557, 944,
- 557, 736, 736, 557, 557, 557, 557, 750, 361, 361,
- 361, 361, 946, 554, 737, 737, 649, 361, 361, 361,
- 566, 566, 888, 649, 566, 585, 585, 585, 585, 888,
- 649, 361, 361, 361, 361, 361, 361, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 888, 363, 363, 560, 560, 566, 946, 363,
-
- 363, 363, 363, 564, 564, 649, 682, 562, 562, 924,
- 682, 560, 560, 560, 560, 682, 363, 563, 563, 564,
- 564, 564, 560, 562, 562, 562, 562, 586, 586, 586,
- 586, 827, 827, 563, 563, 563, 563, 997, 560, 997,
- 363, 363, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
-
- 364, 364, 364, 364, 364, 364, 364, 365, 365, 365,
+ 316, 316, 316, 316, 316, 316, 316, 317, 317, 1002,
+ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
+ 317, 317, 927, 317, 317, 407, 407, 927, 486, 317,
+
+ 317, 317, 317, 409, 409, 928, 486, 414, 414, 486,
+ 928, 407, 407, 407, 407, 1001, 317, 428, 428, 428,
+ 428, 1000, 407, 414, 414, 414, 536, 536, 430, 430,
+ 430, 430, 437, 437, 437, 317, 518, 518, 407, 430,
+ 317, 317, 338, 338, 338, 338, 443, 998, 443, 443,
+ 409, 338, 338, 338, 435, 430, 435, 554, 554, 435,
+ 435, 435, 435, 608, 608, 338, 338, 338, 338, 338,
+ 338, 340, 340, 340, 340, 340, 340, 996, 340, 340,
+ 340, 340, 340, 340, 340, 340, 972, 340, 340, 410,
+ 410, 995, 518, 340, 340, 340, 340, 972, 429, 994,
+
+ 429, 429, 429, 429, 972, 410, 410, 410, 410, 993,
+ 340, 429, 480, 480, 480, 429, 410, 444, 992, 444,
+ 444, 445, 445, 445, 445, 683, 683, 429, 446, 446,
+ 446, 446, 410, 991, 340, 340, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+
+ 341, 342, 342, 342, 342, 342, 342, 990, 342, 342,
+ 342, 342, 342, 342, 342, 342, 989, 342, 342, 433,
+ 433, 433, 433, 342, 342, 342, 342, 539, 539, 539,
+ 433, 447, 447, 447, 447, 448, 448, 448, 448, 933,
+ 342, 934, 449, 933, 449, 934, 433, 449, 449, 449,
+ 449, 476, 476, 476, 476, 478, 478, 478, 478, 342,
+ 706, 706, 476, 988, 342, 342, 354, 354, 479, 479,
+ 479, 479, 509, 967, 510, 557, 557, 557, 476, 509,
+ 354, 510, 354, 354, 354, 354, 509, 511, 510, 512,
+ 667, 513, 514, 354, 511, 844, 512, 354, 513, 514,
+
+ 515, 511, 844, 512, 965, 513, 514, 515, 517, 354,
+ 363, 363, 559, 531, 515, 517, 559, 566, 566, 510,
+ 531, 559, 517, 667, 564, 564, 363, 363, 363, 363,
+ 844, 512, 516, 566, 566, 363, 363, 363, 515, 516,
+ 727, 727, 515, 672, 531, 517, 516, 975, 531, 363,
+ 363, 363, 363, 363, 363, 365, 365, 365, 365, 365,
365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 365, 365, 923, 365, 365, 574, 574, 574, 574, 365,
- 365, 365, 365, 922, 696, 696, 574, 568, 568, 828,
- 828, 568, 571, 696, 571, 921, 365, 571, 571, 571,
- 571, 920, 574, 646, 647, 658, 658, 658, 658, 918,
- 646, 647, 648, 829, 829, 365, 917, 646, 647, 648,
- 365, 365, 376, 376, 568, 916, 648, 659, 659, 659,
- 659, 678, 678, 678, 678, 915, 376, 914, 376, 376,
- 376, 376, 831, 831, 646, 647, 690, 690, 913, 376,
-
- 761, 691, 691, 376, 688, 688, 648, 679, 679, 679,
- 679, 689, 689, 761, 912, 376, 385, 385, 911, 761,
- 688, 688, 688, 688, 832, 832, 910, 689, 689, 689,
- 689, 948, 385, 385, 385, 385, 703, 703, 909, 690,
- 703, 385, 385, 385, 691, 692, 692, 833, 833, 692,
- 693, 693, 708, 708, 693, 385, 385, 385, 385, 385,
- 385, 387, 387, 387, 387, 387, 387, 387, 387, 387,
- 387, 387, 387, 387, 387, 387, 948, 387, 387, 697,
- 697, 908, 692, 387, 387, 387, 387, 693, 697, 706,
- 706, 835, 835, 707, 707, 708, 907, 721, 721, 906,
-
- 387, 721, 724, 724, 905, 706, 706, 706, 706, 707,
- 707, 707, 707, 714, 714, 836, 836, 905, 724, 724,
- 724, 724, 714, 905, 387, 387, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 389, 389, 389, 389, 389, 389, 389, 389, 389,
-
- 389, 389, 389, 389, 389, 389, 949, 389, 389, 709,
- 709, 715, 715, 389, 389, 389, 389, 904, 726, 726,
- 715, 727, 727, 698, 698, 699, 699, 698, 882, 699,
- 389, 710, 710, 711, 711, 710, 881, 711, 716, 716,
- 717, 717, 716, 879, 717, 878, 739, 739, 777, 389,
- 739, 949, 709, 876, 389, 389, 406, 406, 406, 406,
- 698, 726, 699, 777, 727, 406, 406, 406, 710, 777,
- 711, 742, 742, 742, 742, 716, 875, 717, 950, 406,
- 406, 406, 406, 406, 406, 408, 408, 874, 408, 408,
- 408, 408, 408, 408, 408, 408, 408, 408, 408, 408,
-
- 871, 408, 408, 725, 725, 732, 732, 408, 408, 408,
- 408, 811, 837, 837, 732, 870, 733, 733, 811, 725,
- 725, 725, 725, 950, 408, 733, 743, 743, 743, 743,
- 841, 841, 887, 885, 887, 887, 1026, 1026, 886, 938,
- 885, 938, 938, 1027, 1027, 886, 811, 885, 408, 408,
- 409, 409, 886, 409, 409, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
-
- 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 410, 410, 869, 410, 410,
- 410, 410, 410, 410, 410, 410, 410, 410, 410, 410,
- 951, 410, 410, 868, 812, 889, 867, 410, 410, 410,
- 410, 812, 889, 952, 992, 992, 992, 728, 728, 729,
- 729, 728, 953, 729, 410, 734, 734, 735, 735, 734,
- 801, 735, 803, 883, 865, 889, 954, 801, 864, 803,
- 883, 812, 863, 410, 801, 951, 803, 883, 410, 410,
- 507, 507, 507, 507, 728, 862, 729, 861, 952, 507,
- 507, 507, 734, 860, 735, 1028, 1028, 953, 858, 857,
-
- 883, 803, 801, 507, 507, 507, 507, 507, 507, 511,
- 511, 954, 511, 511, 511, 511, 511, 511, 511, 511,
- 511, 511, 511, 511, 856, 511, 511, 939, 884, 855,
- 853, 511, 511, 511, 511, 884, 936, 852, 939, 937,
- 936, 940, 884, 937, 851, 939, 850, 936, 511, 849,
- 937, 848, 940, 847, 936, 846, 844, 937, 843, 940,
- 991, 991, 991, 818, 991, 884, 993, 993, 993, 809,
- 993, 806, 511, 511, 512, 512, 800, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
-
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
- 512, 512, 512, 512, 512, 512, 512, 512, 512, 525,
- 525, 525, 525, 799, 802, 804, 798, 797, 525, 525,
- 525, 802, 804, 994, 994, 994, 796, 795, 802, 804,
- 794, 793, 525, 525, 525, 525, 525, 525, 527, 527,
- 527, 527, 527, 527, 792, 527, 527, 527, 527, 527,
- 527, 527, 527, 791, 527, 527, 790, 789, 802, 786,
- 527, 527, 527, 527, 804, 995, 995, 995, 785, 995,
-
- 996, 996, 996, 783, 781, 779, 778, 527, 776, 775,
- 774, 773, 772, 771, 770, 769, 768, 766, 765, 764,
- 763, 760, 758, 757, 756, 754, 749, 745, 744, 741,
- 723, 527, 527, 528, 528, 528, 528, 528, 528, 705,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528, 528, 528, 528, 528, 528, 528,
- 528, 528, 528, 528, 528, 528, 528, 528, 537, 537,
-
- 687, 685, 681, 680, 675, 674, 672, 670, 665, 661,
- 660, 655, 654, 653, 537, 537, 537, 537, 652, 643,
- 642, 637, 633, 537, 537, 537, 632, 631, 630, 629,
- 628, 626, 625, 624, 623, 622, 621, 537, 537, 537,
- 537, 537, 537, 541, 541, 541, 541, 541, 541, 541,
- 541, 541, 541, 541, 541, 541, 541, 541, 619, 541,
- 541, 618, 617, 616, 615, 541, 541, 541, 541, 614,
- 613, 612, 611, 609, 608, 607, 606, 605, 604, 603,
- 602, 601, 541, 600, 599, 597, 596, 595, 594, 593,
- 592, 591, 590, 589, 588, 581, 573, 572, 519, 518,
-
- 515, 514, 513, 509, 501, 500, 541, 541, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
- 542, 542, 542, 551, 551, 497, 496, 495, 494, 489,
- 488, 487, 486, 485, 475, 472, 469, 467, 466, 551,
- 551, 551, 551, 465, 464, 463, 462, 461, 551, 551,
-
- 551, 460, 459, 458, 457, 456, 455, 454, 452, 451,
- 450, 449, 551, 551, 551, 551, 551, 551, 555, 555,
- 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
- 555, 555, 555, 441, 555, 555, 440, 439, 438, 437,
- 555, 555, 555, 555, 436, 435, 434, 433, 432, 431,
- 429, 428, 426, 425, 424, 423, 422, 555, 421, 420,
- 419, 418, 400, 399, 395, 307, 306, 297, 296, 295,
- 284, 283, 279, 269, 266, 265, 261, 256, 255, 253,
- 252, 555, 555, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
-
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,
- 556, 556, 556, 556, 556, 556, 556, 556, 565, 565,
- 251, 249, 248, 246, 232, 230, 229, 222, 221, 219,
- 213, 212, 211, 203, 565, 565, 565, 565, 202, 201,
- 199, 194, 192, 565, 565, 565, 191, 189, 188, 187,
- 177, 159, 154, 152, 110, 101, 96, 565, 565, 565,
- 565, 565, 565, 569, 569, 569, 569, 569, 569, 569,
-
- 569, 569, 569, 569, 569, 569, 569, 569, 93, 569,
- 569, 88, 86, 83, 77, 569, 569, 569, 569, 72,
- 65, 63, 34, 32, 28, 23, 8, 4, 2, 0,
- 0, 0, 569, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 569, 569, 570, 570,
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
-
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
- 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
- 570, 570, 570, 579, 579, 579, 579, 0, 0, 0,
- 0, 0, 579, 579, 579, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 579, 579, 579, 579,
- 579, 579, 583, 583, 0, 583, 583, 583, 583, 583,
- 583, 583, 583, 583, 583, 583, 583, 0, 583, 583,
- 0, 0, 0, 0, 583, 583, 583, 583, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 583, 0, 0, 0, 0, 0, 0, 0, 0,
+ 964, 365, 365, 516, 564, 963, 672, 365, 365, 365,
+ 365, 524, 524, 524, 524, 524, 537, 537, 537, 537,
+ 532, 962, 532, 975, 365, 532, 532, 532, 532, 538,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 583, 583, 584, 584, 0,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 584, 584, 584, 584, 584, 584, 584, 584,
- 584, 584, 669, 669, 0, 669, 669, 669, 669, 669,
- 669, 669, 669, 669, 669, 669, 669, 0, 669, 669,
+ 538, 538, 538, 550, 960, 550, 728, 728, 550, 550,
+ 550, 550, 555, 555, 555, 555, 733, 733, 365, 365,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
+ 366, 366, 366, 366, 366, 367, 367, 367, 367, 367,
+ 367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
- 0, 0, 0, 0, 669, 669, 669, 669, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 669, 0, 0, 0, 0, 0, 0, 0, 0,
+ 695, 367, 367, 535, 535, 535, 535, 367, 367, 367,
+ 367, 563, 563, 959, 535, 553, 553, 553, 553, 556,
+ 556, 556, 556, 935, 367, 699, 553, 935, 562, 562,
+ 535, 572, 572, 695, 578, 578, 565, 565, 958, 562,
+ 572, 562, 553, 367, 562, 562, 562, 562, 367, 367,
+ 380, 380, 565, 565, 565, 565, 567, 567, 699, 563,
+ 611, 611, 611, 565, 380, 957, 380, 380, 380, 380,
+ 568, 568, 567, 567, 567, 567, 936, 380, 677, 565,
+ 936, 380, 569, 569, 578, 677, 568, 568, 568, 568,
+ 576, 576, 677, 380, 389, 389, 586, 586, 569, 569,
+
+ 569, 576, 1020, 576, 1020, 586, 576, 576, 576, 576,
+ 389, 389, 389, 389, 580, 580, 592, 592, 956, 389,
+ 389, 389, 571, 571, 577, 577, 571, 779, 573, 573,
+ 580, 580, 573, 389, 389, 389, 389, 389, 389, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 982, 391, 391, 579, 579, 571,
+ 779, 391, 391, 391, 391, 573, 592, 734, 734, 581,
+ 581, 955, 577, 579, 579, 579, 579, 954, 391, 582,
+ 582, 600, 600, 953, 579, 581, 581, 581, 581, 951,
+ 600, 609, 609, 609, 609, 582, 582, 582, 582, 982,
+
+ 579, 950, 391, 391, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 392, 392, 393,
+ 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
+ 393, 393, 393, 393, 949, 393, 393, 583, 583, 591,
+ 591, 393, 393, 393, 393, 983, 736, 736, 594, 594,
+
+ 736, 595, 595, 583, 583, 583, 585, 585, 393, 783,
+ 585, 948, 587, 587, 594, 594, 587, 595, 595, 595,
+ 595, 599, 599, 689, 678, 599, 947, 393, 590, 590,
+ 689, 678, 393, 393, 406, 406, 946, 591, 678, 590,
+ 983, 590, 783, 585, 590, 590, 590, 590, 406, 587,
+ 406, 406, 406, 406, 945, 593, 593, 689, 599, 944,
+ 715, 406, 601, 601, 715, 406, 601, 596, 596, 715,
+ 943, 593, 593, 593, 593, 597, 597, 406, 415, 415,
+ 745, 745, 593, 596, 596, 596, 596, 610, 610, 610,
+ 610, 597, 597, 597, 415, 415, 415, 415, 593, 601,
+
+ 746, 746, 682, 415, 415, 415, 604, 875, 604, 682,
+ 875, 604, 604, 604, 604, 978, 682, 415, 415, 415,
+ 415, 415, 415, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 942, 417,
+ 417, 607, 607, 607, 607, 417, 417, 417, 417, 751,
+ 751, 682, 607, 618, 618, 618, 618, 619, 619, 619,
+ 619, 978, 417, 691, 691, 691, 691, 941, 607, 692,
+ 692, 692, 692, 711, 711, 711, 711, 712, 712, 712,
+ 712, 752, 752, 763, 763, 940, 417, 417, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
+ 418, 418, 418, 419, 419, 419, 419, 419, 419, 419,
+ 419, 419, 419, 419, 419, 419, 419, 419, 939, 419,
+ 419, 937, 679, 680, 915, 419, 419, 419, 419, 679,
+ 680, 681, 721, 721, 764, 764, 679, 680, 681, 690,
+ 722, 722, 419, 723, 723, 681, 690, 914, 721, 721,
+
+ 721, 721, 912, 729, 729, 911, 722, 722, 722, 722,
+ 909, 419, 729, 679, 680, 908, 419, 419, 438, 438,
+ 438, 438, 1022, 690, 1022, 681, 907, 438, 438, 438,
+ 724, 724, 904, 754, 754, 903, 723, 754, 902, 741,
+ 741, 438, 438, 438, 438, 438, 438, 440, 440, 901,
+ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
+ 440, 440, 984, 440, 440, 730, 730, 769, 769, 440,
+ 440, 440, 440, 724, 730, 739, 739, 725, 725, 740,
+ 740, 725, 741, 770, 770, 900, 440, 757, 757, 839,
+ 839, 739, 739, 739, 739, 740, 740, 740, 740, 747,
+
+ 747, 860, 860, 757, 757, 757, 757, 984, 747, 898,
+ 440, 440, 441, 441, 725, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 441, 441, 441,
+ 441, 441, 441, 441, 441, 441, 441, 442, 442, 897,
+ 442, 442, 442, 442, 442, 442, 442, 442, 442, 442,
+ 442, 442, 985, 442, 442, 742, 742, 748, 748, 442,
+
+ 442, 442, 442, 979, 759, 759, 748, 760, 760, 726,
+ 726, 731, 731, 726, 896, 731, 442, 732, 732, 743,
+ 743, 732, 895, 743, 744, 744, 749, 749, 744, 1030,
+ 749, 1030, 772, 772, 894, 442, 772, 985, 742, 893,
+ 442, 442, 540, 540, 540, 540, 726, 759, 731, 979,
+ 760, 540, 540, 540, 732, 845, 743, 775, 775, 775,
+ 775, 744, 845, 749, 891, 540, 540, 540, 540, 540,
+ 540, 544, 544, 890, 544, 544, 544, 544, 544, 544,
+ 544, 544, 544, 544, 544, 544, 889, 544, 544, 888,
+ 758, 758, 845, 544, 544, 544, 544, 776, 776, 776,
+
+ 776, 750, 750, 765, 765, 750, 758, 758, 758, 758,
+ 544, 886, 765, 766, 766, 861, 861, 862, 862, 864,
+ 864, 885, 766, 865, 865, 866, 866, 868, 868, 869,
+ 869, 870, 870, 884, 544, 544, 545, 545, 750, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+ 545, 545, 545, 545, 545, 545, 545, 545, 545, 545,
+
+ 545, 558, 558, 558, 558, 874, 874, 883, 837, 882,
+ 558, 558, 558, 761, 761, 837, 881, 761, 880, 762,
+ 762, 879, 837, 762, 558, 558, 558, 558, 558, 558,
+ 560, 560, 560, 560, 560, 560, 877, 560, 560, 560,
+ 560, 560, 560, 560, 560, 986, 560, 560, 1059, 1059,
+ 761, 921, 560, 560, 560, 560, 762, 837, 921, 918,
+ 919, 973, 876, 938, 767, 767, 918, 919, 767, 560,
+ 1060, 1060, 973, 918, 919, 920, 938, 920, 920, 973,
+ 851, 921, 938, 971, 842, 971, 971, 1024, 1024, 1024,
+ 986, 1024, 833, 560, 560, 561, 561, 561, 561, 561,
+
+ 561, 767, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
+ 561, 561, 561, 561, 561, 561, 561, 561, 561, 561,
+ 570, 570, 969, 922, 970, 832, 969, 831, 970, 830,
+ 922, 1061, 1061, 969, 829, 970, 570, 570, 570, 570,
+ 969, 828, 970, 916, 834, 570, 570, 570, 768, 768,
+ 916, 834, 768, 922, 987, 827, 826, 916, 834, 570,
+
+ 570, 570, 570, 570, 570, 574, 574, 574, 574, 574,
+ 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
+ 916, 574, 574, 825, 836, 768, 834, 574, 574, 574,
+ 574, 836, 1025, 1025, 1025, 1027, 1027, 1027, 836, 987,
+ 824, 1026, 1026, 1026, 574, 1026, 1028, 1028, 1028, 823,
+ 1028, 1029, 1029, 1029, 822, 819, 818, 816, 814, 812,
+ 811, 809, 808, 836, 807, 806, 805, 804, 574, 574,
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+ 575, 575, 575, 575, 575, 584, 584, 803, 802, 801,
+ 799, 798, 797, 796, 793, 791, 790, 789, 787, 782,
+ 778, 584, 584, 584, 584, 777, 835, 774, 917, 756,
+ 584, 584, 584, 835, 738, 917, 720, 718, 714, 713,
+ 835, 708, 917, 707, 584, 584, 584, 584, 584, 584,
+ 588, 588, 588, 588, 588, 588, 588, 588, 588, 588,
+ 588, 588, 588, 588, 588, 917, 588, 588, 705, 703,
+
+ 835, 698, 588, 588, 588, 588, 694, 693, 688, 687,
+ 686, 685, 676, 675, 670, 666, 665, 664, 663, 588,
+ 662, 661, 659, 658, 657, 656, 655, 654, 652, 651,
+ 650, 649, 648, 647, 646, 645, 644, 642, 641, 640,
+ 639, 638, 637, 588, 588, 589, 589, 589, 589, 589,
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+
+ 589, 589, 589, 589, 589, 589, 589, 589, 589, 589,
+ 598, 598, 636, 635, 634, 633, 632, 630, 629, 628,
+ 627, 626, 625, 624, 623, 622, 598, 598, 598, 598,
+ 621, 614, 606, 605, 552, 598, 598, 598, 551, 548,
+ 547, 546, 542, 534, 533, 530, 529, 528, 527, 598,
+ 598, 598, 598, 598, 598, 602, 602, 602, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 522, 602, 602, 521, 520, 519, 508, 602, 602, 602,
+ 602, 505, 502, 500, 499, 498, 497, 496, 495, 494,
+ 493, 492, 491, 490, 602, 489, 488, 487, 485, 484,
+
+ 483, 482, 474, 473, 472, 471, 470, 469, 468, 467,
+ 466, 465, 464, 462, 461, 459, 458, 457, 602, 602,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
+ 603, 603, 603, 603, 603, 612, 612, 612, 612, 456,
+ 455, 454, 453, 452, 612, 612, 612, 451, 432, 431,
+
+ 427, 332, 331, 321, 320, 319, 307, 306, 612, 612,
+ 612, 612, 612, 612, 616, 616, 302, 616, 616, 616,
+ 616, 616, 616, 616, 616, 616, 616, 616, 616, 292,
+ 616, 616, 289, 288, 284, 278, 616, 616, 616, 616,
+ 277, 275, 274, 273, 271, 270, 248, 246, 245, 238,
+ 237, 235, 229, 616, 228, 227, 219, 218, 217, 215,
+ 210, 208, 207, 205, 204, 203, 193, 173, 168, 166,
+ 117, 107, 102, 97, 92, 90, 81, 616, 616, 617,
+ 617, 76, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+
+ 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 702, 702, 65, 702, 702, 702,
+ 702, 702, 702, 702, 702, 702, 702, 702, 702, 34,
+ 702, 702, 32, 28, 23, 0, 702, 702, 702, 702,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 669, 669, 671, 671, 0,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
-
- 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
- 671, 671, 684, 684, 684, 684, 684, 684, 0, 684,
- 684, 684, 684, 684, 684, 684, 684, 0, 684, 684,
- 0, 0, 0, 0, 684, 684, 684, 684, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 684, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 684, 684, 686, 686, 686,
- 686, 686, 686, 0, 686, 686, 686, 686, 686, 686,
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
-
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
- 686, 686, 686, 686, 686, 686, 686, 686, 686, 686,
- 686, 686, 702, 702, 702, 702, 702, 702, 702, 702,
- 702, 702, 702, 702, 702, 702, 702, 0, 702, 702,
- 0, 0, 0, 0, 702, 702, 702, 702, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 702, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 702, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 702, 702, 704, 704, 704,
+ 0, 0, 0, 0, 0, 0, 0, 702, 702, 704,
+ 704, 0, 704, 704, 704, 704, 704, 704, 704, 704,
704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
- 704, 704, 704, 704, 704, 704, 704, 704, 704, 704,
- 704, 704, 720, 720, 720, 720, 720, 720, 720, 720,
- 720, 720, 720, 720, 720, 720, 720, 0, 720, 720,
- 0, 0, 0, 0, 720, 720, 720, 720, 0, 0,
+ 704, 704, 704, 704, 717, 717, 717, 717, 717, 717,
+ 0, 717, 717, 717, 717, 717, 717, 717, 717, 0,
+ 717, 717, 0, 0, 0, 0, 717, 717, 717, 717,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 720, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 717, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 720, 720, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
- 722, 722, 722, 722, 722, 722, 722, 722, 722, 722,
-
- 722, 722, 738, 738, 738, 738, 738, 738, 738, 738,
- 738, 738, 738, 738, 738, 738, 738, 0, 738, 738,
- 0, 0, 0, 0, 738, 738, 738, 738, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 717, 717, 719,
+ 719, 719, 719, 719, 719, 0, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
+
+ 719, 719, 719, 719, 735, 735, 735, 735, 735, 735,
+ 735, 735, 735, 735, 735, 735, 735, 735, 735, 0,
+ 735, 735, 0, 0, 0, 0, 735, 735, 735, 735,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 738, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 735, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 738, 738, 740, 740, 740,
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
-
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
- 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
- 740, 740, 753, 753, 0, 753, 753, 753, 753, 753,
- 753, 753, 753, 753, 753, 753, 753, 0, 753, 753,
- 0, 0, 0, 0, 753, 753, 753, 753, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 735, 735, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 753, 753, 753, 753, 753, 753,
+ 753, 753, 753, 753, 753, 753, 753, 753, 753, 0,
+ 753, 753, 0, 0, 0, 0, 753, 753, 753, 753,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 753, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 753, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 753, 753, 755, 755, 0,
+ 0, 0, 0, 0, 0, 0, 0, 753, 753, 755,
755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
@@ -2195,194 +2209,241 @@
755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
- 755, 755, 815, 815, 0, 815, 815, 815, 815, 815,
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
-
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
- 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
- 815, 815, 815, 815, 815, 815, 815, 825, 825, 825,
- 825, 825, 825, 0, 825, 825, 825, 825, 825, 825,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 825, 825, 825, 825, 825, 825, 825, 825,
- 825, 825, 1062, 0, 1062, 1062, 1062, 1062, 1062, 1062,
-
- 1062, 1062, 1062, 1063, 0, 0, 1063, 1063, 1064, 0,
- 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
- 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066,
- 1066, 1067, 0, 1067, 0, 1067, 1067, 1067, 1067, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1069, 0, 1069, 1069,
- 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, 0, 1070,
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 0,
- 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072,
- 0, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
- 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074, 0,
-
- 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075,
- 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076,
- 1076, 0, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
- 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
- 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
- 1078, 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
- 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
- 1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081,
- 1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082,
- 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
-
- 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084,
- 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085, 1085,
- 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086,
- 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
- 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
- 1087, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
- 1088, 1088, 1089, 0, 1089, 1089, 1089, 1089, 1089, 1089,
- 1089, 1089, 1089, 1090, 0, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1090, 1090, 1091, 0, 1091, 1091, 1091, 1091,
- 1091, 1091, 1091, 1091, 1091, 1092, 0, 1092, 1092, 1092,
-
- 1092, 1092, 1092, 1092, 1092, 1092, 1093, 0, 0, 1093,
- 1093, 1094, 0, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
- 1094, 1094, 1095, 0, 0, 1095, 1095, 1095, 1096, 0,
- 0, 1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
- 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 0, 0,
- 0, 0, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100,
- 1100, 1100, 1101, 1101, 1101, 1101, 1102, 0, 1102, 1102,
- 1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104,
- 0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
- 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
-
- 1105, 1106, 0, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
- 1106, 1106, 1107, 0, 1107, 1107, 1107, 1107, 1107, 1107,
- 1107, 1107, 1107, 1108, 1108, 0, 1108, 1108, 1108, 1108,
- 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109, 1109,
- 1109, 1109, 1109, 1109, 1109, 1110, 1110, 0, 1110, 1110,
- 1110, 1110, 1110, 1110, 1110, 1110, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112,
- 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1113, 1113,
- 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1114,
- 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-
- 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
- 1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
- 1116, 1116, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
- 1118, 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119,
- 1119, 1119, 1119, 1119, 1119, 1120, 1120, 1120, 1120, 1120,
- 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121,
- 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1122, 1122,
- 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1123, 0,
- 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124,
-
- 0, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
- 1125, 0, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
- 1125, 1126, 0, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
- 1126, 1126, 1127, 0, 0, 1127, 1127, 1128, 0, 0,
- 1128, 1128, 1128, 1129, 0, 0, 1129, 1130, 0, 1130,
- 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 0,
- 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132,
- 0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
- 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134,
- 1134, 1134, 1134, 1134, 1134, 1135, 1135, 1135, 1135, 1135,
-
- 1135, 1136, 0, 1136, 1136, 1136, 1136, 1137, 0, 1137,
- 1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1139, 0, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
- 1139, 1140, 0, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
- 1140, 1140, 1141, 0, 1141, 1141, 1141, 1141, 1141, 1141,
- 1141, 1141, 1141, 1142, 0, 1142, 1142, 1142, 1142, 1142,
- 1142, 1142, 1142, 1142, 1143, 0, 1143, 1143, 1143, 1143,
- 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144, 1144,
- 1144, 1144, 1145, 1145, 0, 1145, 1145, 1145, 1145, 1145,
- 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
-
- 1146, 1146, 1146, 1146, 1147, 1147, 0, 1147, 1147, 1147,
- 1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1148,
- 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149, 1149,
- 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150, 1150,
- 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1151,
- 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152,
- 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
- 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
- 1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
- 1154, 1154, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
-
- 1155, 1155, 1155, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
- 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
- 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158,
- 1158, 1158, 1158, 1158, 1158, 1158, 1159, 1159, 1159, 1159,
- 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1160, 1160,
- 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1161,
- 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162,
- 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
- 1163, 0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
- 1163, 1164, 0, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
-
- 1164, 1164, 1165, 0, 1165, 1165, 1165, 1165, 1165, 1165,
- 1165, 1165, 1165, 1166, 0, 1166, 1166, 1166, 1166, 1166,
- 1166, 1166, 1166, 1166, 1167, 0, 1167, 1167, 1167, 1167,
- 1167, 1167, 1167, 1167, 1167, 1168, 0, 0, 1168, 1168,
- 1168, 1169, 0, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
- 1169, 1169, 1170, 0, 1170, 1170, 1170, 1170, 1170, 1170,
- 1170, 1170, 1170, 1171, 0, 1171, 1171, 1171, 1171, 1171,
- 1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172, 1172,
- 1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174,
- 0, 1174, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175,
-
- 1175, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 0,
- 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178,
- 0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
- 1179, 0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
- 1179, 1180, 0, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
- 1180, 1180, 1181, 0, 1181, 1181, 1181, 1181, 1181, 1181,
- 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
- 1183, 1183, 0, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
- 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
- 1184, 1184, 1185, 1185, 0, 1185, 1185, 1185, 1185, 1185,
-
- 1185, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
- 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187,
- 1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189,
- 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190,
- 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191,
- 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192,
- 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
- 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
- 1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+ 755, 755, 755, 755, 771, 771, 771, 771, 771, 771,
+ 771, 771, 771, 771, 771, 771, 771, 771, 771, 0,
+ 771, 771, 0, 0, 0, 0, 771, 771, 771, 771,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 771, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 771, 771, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
+ 773, 773, 773, 773, 786, 786, 0, 786, 786, 786,
+
+ 786, 786, 786, 786, 786, 786, 786, 786, 786, 0,
+ 786, 786, 0, 0, 0, 0, 786, 786, 786, 786,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 786, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 786, 786, 788,
+ 788, 0, 788, 788, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
+
+ 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,
+ 788, 788, 788, 788, 848, 848, 0, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
+ 848, 848, 848, 848, 848, 848, 848, 848, 848, 858,
+ 858, 858, 858, 858, 858, 0, 858, 858, 858, 858,
+
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
+ 858, 858, 858, 858, 1095, 0, 1095, 1095, 1095, 1095,
+ 1095, 1095, 1095, 1095, 1095, 1096, 0, 0, 1096, 1096,
+ 1097, 0, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
+ 1097, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
+ 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+
+ 1100, 1100, 1100, 1100, 1101, 0, 1101, 0, 1101, 1101,
+ 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
+ 0, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+ 1104, 0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+ 1104, 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
+ 1105, 1105, 1106, 0, 1106, 1106, 1106, 1106, 1106, 1106,
+ 1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
+ 1108, 1108, 0, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
+ 1109, 1109, 1110, 1110, 0, 1110, 1110, 1110, 1110, 1110,
+
+ 1110, 1110, 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
+ 1111, 1111, 1111, 1111, 1112, 1112, 1112, 1112, 1112, 1112,
+ 1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1114, 1114, 1114, 1114,
+ 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1115, 1115,
+ 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1116,
+ 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117,
+ 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
+ 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+ 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
+
+ 1119, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
+ 1120, 1120, 1120, 1121, 1121, 1121, 1121, 1121, 1121, 1121,
+ 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, 1122, 1122,
+ 1122, 1122, 1122, 1122, 1122, 1123, 0, 1123, 1123, 1123,
+ 1123, 1123, 1123, 1123, 1123, 1123, 1124, 0, 1124, 1124,
+ 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 0, 1125,
+ 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1126, 0,
+ 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127,
+ 0, 0, 1127, 1127, 1128, 0, 1128, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1128, 1128, 1129, 0, 0, 1129, 1129,
+
+ 1129, 1130, 0, 0, 1130, 1131, 1131, 1131, 1131, 1131,
+ 1131, 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+ 1133, 0, 0, 0, 0, 1133, 1133, 1133, 1133, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136, 1136, 1136,
+ 1137, 0, 1137, 1137, 1137, 1137, 1138, 1138, 1138, 1138,
+ 1138, 1138, 1138, 1139, 0, 1139, 1139, 1139, 1139, 1139,
+ 1139, 1139, 1139, 1139, 1140, 0, 1140, 1140, 1140, 1140,
+ 1140, 1140, 1140, 1140, 1140, 1141, 0, 1141, 1141, 1141,
+ 1141, 1141, 1141, 1141, 1141, 1141, 1142, 0, 1142, 1142,
+
+ 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 0,
+ 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
+ 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145,
+ 1145, 0, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
+ 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+ 1146, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
+ 1148, 1148, 1148, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ 1149, 1149, 1149, 1149, 1150, 1150, 1150, 1150, 1150, 1150,
+ 1150, 1150, 1150, 1150, 1150, 1151, 1151, 1151, 1151, 1151,
+
+ 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1152,
+ 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1155,
+ 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
+ 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
+ 1156, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+ 1157, 1157, 1158, 0, 1158, 1158, 1158, 1158, 1158, 1158,
+ 1158, 1158, 1158, 1159, 0, 1159, 1159, 1159, 1159, 1159,
+ 1159, 1159, 1159, 1159, 1160, 0, 1160, 1160, 1160, 1160,
+
+ 1160, 1160, 1160, 1160, 1160, 1161, 0, 1161, 1161, 1161,
+ 1161, 1161, 1161, 1161, 1161, 1161, 1162, 0, 0, 1162,
+ 1162, 1163, 0, 0, 1163, 1163, 1163, 1164, 0, 0,
+ 1164, 1165, 0, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
+ 1165, 1165, 1166, 0, 1166, 1166, 1166, 1166, 1166, 1166,
+ 1166, 1166, 1166, 1167, 0, 1167, 1167, 1167, 1167, 1167,
+ 1167, 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168,
+ 1168, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170,
+ 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
+ 1171, 1171, 1171, 1171, 1171, 1171, 1172, 0, 1172, 1172,
+
+ 1172, 1172, 1173, 0, 1173, 1173, 1173, 1173, 1174, 1174,
+ 1174, 1174, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175,
+ 1175, 1175, 1175, 1175, 1175, 1175, 1176, 0, 1176, 1176,
+ 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 0, 1177,
+ 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 0,
+ 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
+ 0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, 0,
+ 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182,
+ 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183,
+
+ 1183, 0, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+ 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+ 1184, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
+ 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+ 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
+ 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189, 1189,
+ 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191, 1191,
+ 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1192,
- 1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
- 1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
- 1196, 1196, 1196, 1196, 1197, 1197, 1197, 1197, 1197, 1197,
- 1197, 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1198,
- 1198, 1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199,
- 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
- 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 0,
- 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202,
- 0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
- 1203, 0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
-
- 1203, 1204, 0, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
- 1204, 1204, 1205, 0, 1205, 1205, 1205, 1205, 1205, 1205,
- 1205, 1205, 1205, 1206, 0, 0, 1206, 1206, 1206, 1207,
- 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 0, 1208,
- 1208, 1208, 1208, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
- 1210, 0, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
- 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1212,
- 0, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
- 1061, 1061, 1061, 1061, 1061
+ 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193,
+ 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+ 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+ 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+ 1196, 1196, 1196, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+ 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1198, 1198,
+ 1198, 1198, 1198, 1198, 1198, 1199, 0, 1199, 1199, 1199,
+ 1199, 1199, 1199, 1199, 1199, 1199, 1200, 0, 1200, 1200,
+ 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 0, 1201,
+
+ 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202, 0,
+ 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203,
+ 0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+ 1204, 0, 0, 1204, 1204, 1204, 1205, 0, 1205, 1205,
+ 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 0, 1206,
+ 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 0,
+ 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208,
+ 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
+ 1210, 1210, 1210, 1210, 1210, 1211, 0, 1211, 1211, 1211,
+
+ 1211, 1212, 0, 1212, 1212, 1212, 1212, 1213, 1213, 1213,
+ 1213, 1213, 1213, 1213, 1214, 0, 1214, 1214, 1214, 1214,
+ 1214, 1214, 1214, 1214, 1214, 1215, 0, 1215, 1215, 1215,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1216, 0, 1216, 1216,
+ 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 0, 1217,
+ 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 0,
+ 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219,
+ 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 0, 1220,
+ 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1221, 1221, 1221,
+ 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1222, 1222,
+
+ 0, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223,
+ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+ 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
+ 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+ 1225, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+ 1226, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227,
+ 1227, 1227, 1227, 1227, 1228, 1228, 1228, 1228, 1228, 1228,
+ 1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229,
+ 1229, 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230,
+ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1231, 1231, 1231,
+
+ 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1232, 1232,
+ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1233,
+ 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1235, 1235, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
+ 1237, 1237, 1237, 1237, 1238, 0, 1238, 1238, 1238, 1238,
+ 1238, 1238, 1238, 1238, 1238, 1239, 0, 1239, 1239, 1239,
+ 1239, 1239, 1239, 1239, 1239, 1239, 1240, 0, 1240, 1240,
+
+ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1241, 0, 1241,
+ 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 0,
+ 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243,
+ 0, 0, 1243, 1243, 1243, 1244, 1244, 1244, 1244, 1244,
+ 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
+ 1245, 1245, 1245, 1245, 1246, 0, 1246, 1246, 1246, 1246,
+ 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1248, 0, 1248,
+ 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1249,
+ 1249, 1249, 1249, 1249, 1249, 1250, 1250, 0, 1250, 1250,
+ 1250, 1250, 1250, 1250, 1250, 1250, 1094, 1094, 1094, 1094,
+
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+ 1094, 1094
} ;
+/* Table of booleans, true if rule could match eol. */
+static yyconst flex_int32_t yy_rule_can_match_eol[149] =
+ { 0,
+0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, };
+
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
*/
@@ -2460,10 +2521,14 @@
static void include_file(PARROT_INTERP, char *file_name, ARGMOD(void *yyscanner));
+static int handle_identifier(PARROT_INTERP, YYSTYPE *valp, ARGIN(const char *id));
+
#define YY_DECL int yylex(YYSTYPE *valp,yyscan_t yyscanner,PARROT_INTERP)
#define YYCHOP() (yytext[--yyleng] = '\0')
+#define SET_LINE_NUMBER (IMCC_INFO(interp)->line = yylineno)
+
#define DUP_AND_RET(valp, token) \
do { \
if (valp) (valp)->s = mem_sys_strdup(yytext); \
@@ -2489,7 +2554,7 @@
-#line 2493 "compilers/imcc/imclexer.c"
+#line 2558 "compilers/imcc/imclexer.c"
#define INITIAL 0
#define emit 1
@@ -2734,7 +2799,7 @@
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 152 "compilers/imcc/imcc.l"
+#line 157 "compilers/imcc/imcc.l"
/* for emacs "*/
if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
@@ -2753,7 +2818,7 @@
return 0;
}
-#line 2757 "compilers/imcc/imclexer.c"
+#line 2822 "compilers/imcc/imclexer.c"
if ( !yyg->yy_init )
{
@@ -2807,13 +2872,13 @@
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1062 )
+ if ( yy_current_state >= 1095 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 1061 );
+ while ( yy_current_state != 1094 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -2822,6 +2887,18 @@
YY_DO_BEFORE_ACTION;
+ if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+ {
+ int yyl;
+ for ( yyl = 0; yyl < yyleng; ++yyl )
+ if ( yytext[yyl] == '\n' )
+
+ do{ yylineno++;
+ yycolumn=0;
+ }while(0)
+;
+ }
+
do_action: /* This label is used only to access EOF actions. */
switch ( yy_act )
@@ -2834,24 +2911,29 @@
goto yy_find_action;
case 1:
-/* rule 1 can match eol */
YY_RULE_SETUP
-#line 170 "compilers/imcc/imcc.l"
+#line 175 "compilers/imcc/imcc.l"
+{ SET_LINE_NUMBER; }
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 177 "compilers/imcc/imcc.l"
{
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
BEGIN(heredoc2);
}
YY_BREAK
-case 2:
-/* rule 2 can match eol */
+case 3:
+/* rule 3 can match eol */
YY_RULE_SETUP
-#line 175 "compilers/imcc/imcc.l"
+#line 183 "compilers/imcc/imcc.l"
{
/* heredocs have highest priority
* arrange them before all wildcard state matches */
/* Newline in the heredoc. Realloc and cat on. */
- IMCC_INFO(interp)->line++;
IMCC_INFO(interp)->heredoc_content =
(char*)mem_sys_realloc(IMCC_INFO(interp)->heredoc_content,
strlen(IMCC_INFO(interp)->heredoc_content) +
@@ -2860,10 +2942,11 @@
strlen(IMCC_INFO(interp)->heredoc_content), yytext);
}
YY_BREAK
-case 3:
+case 4:
YY_RULE_SETUP
-#line 189 "compilers/imcc/imcc.l"
+#line 196 "compilers/imcc/imcc.l"
{
+ SET_LINE_NUMBER;
/* Are we at the end of the heredoc? */
if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
/* End of the heredoc. */
@@ -2886,7 +2969,7 @@
yy_pop_state(yyscanner);
yy_scan_string(IMCC_INFO(interp)->frames->heredoc_rest,yyscanner);
- /* the EOF rule will increment the line number; decrement here */
+ /* not sure we need this decrement; more testing needed */
IMCC_INFO(interp)->line--;
return STRINGC;
}
@@ -2901,10 +2984,10 @@
}
}
YY_BREAK
-case 4:
-/* rule 4 can match eol */
+case 5:
+/* rule 5 can match eol */
YY_RULE_SETUP
-#line 227 "compilers/imcc/imcc.l"
+#line 235 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
yy_push_state(cmt3, yyscanner);
@@ -2915,68 +2998,66 @@
return FILECOMMENT;
}
YY_BREAK
-case 5:
+case 6:
YY_RULE_SETUP
-#line 237 "compilers/imcc/imcc.l"
+#line 245 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
yy_push_state(cmt4, yyscanner);
}
YY_BREAK
-case 6:
+case 7:
YY_RULE_SETUP
-#line 242 "compilers/imcc/imcc.l"
+#line 250 "compilers/imcc/imcc.l"
{ yy_push_state(cmt2, yyscanner); }
YY_BREAK
-case 7:
+case 8:
YY_RULE_SETUP
-#line 244 "compilers/imcc/imcc.l"
+#line 252 "compilers/imcc/imcc.l"
{ yy_push_state(cmt1, yyscanner); }
YY_BREAK
-case 8:
+case 9:
YY_RULE_SETUP
-#line 246 "compilers/imcc/imcc.l"
+#line 254 "compilers/imcc/imcc.l"
{
- IMCC_INFO(interp)->line = atoi(yytext);
+ yylineno = IMCC_INFO(interp)->line = atoi(yytext);
yy_pop_state(yyscanner);
yy_push_state(cmt4, yyscanner);
return LINECOMMENT;
}
YY_BREAK
-case 9:
-/* rule 9 can match eol */
+case 10:
+/* rule 10 can match eol */
YY_RULE_SETUP
-#line 253 "compilers/imcc/imcc.l"
+#line 261 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
YY_BREAK
-case 10:
-/* rule 10 can match eol */
+case 11:
+/* rule 11 can match eol */
YY_RULE_SETUP
-#line 258 "compilers/imcc/imcc.l"
+#line 265 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->expect_pasm == 2)
BEGIN(INITIAL);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
YY_BREAK
-case 11:
+case 12:
YY_RULE_SETUP
-#line 268 "compilers/imcc/imcc.l"
+#line 274 "compilers/imcc/imcc.l"
{
yy_push_state(cmt5, yyscanner);
}
YY_BREAK
-case 12:
-/* rule 12 can match eol */
+case 13:
+/* rule 13 can match eol */
YY_RULE_SETUP
-#line 272 "compilers/imcc/imcc.l"
+#line 278 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->expect_pasm == 2)
BEGIN(INITIAL);
@@ -2984,512 +3065,513 @@
yy_pop_state(yyscanner);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
YY_BREAK
-case 13:
-/* rule 13 can match eol */
+case 14:
+/* rule 14 can match eol */
YY_RULE_SETUP
-#line 285 "compilers/imcc/imcc.l"
+#line 290 "compilers/imcc/imcc.l"
{
/* this is a stand-alone =cut, but we're not in POD mode, so ignore. */
- IMCC_INFO(interp)->line++;
+ SET_LINE_NUMBER;
}
YY_BREAK
-case 14:
+case 15:
+/* rule 15 can match eol */
YY_RULE_SETUP
-#line 290 "compilers/imcc/imcc.l"
+#line 295 "compilers/imcc/imcc.l"
{
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 1;
yy_push_state(pod, yyscanner);
}
YY_BREAK
-case 15:
-/* rule 15 can match eol */
+case 16:
+/* rule 16 can match eol */
YY_RULE_SETUP
-#line 295 "compilers/imcc/imcc.l"
+#line 301 "compilers/imcc/imcc.l"
{
+ SET_LINE_NUMBER;
IMCC_INFO(interp)->in_pod = 0;
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 301 "compilers/imcc/imcc.l"
-{ /*ignore*/ }
- YY_BREAK
case 17:
-/* rule 17 can match eol */
YY_RULE_SETUP
-#line 303 "compilers/imcc/imcc.l"
-{ IMCC_INFO(interp)->line++; }
+#line 307 "compilers/imcc/imcc.l"
+{ SET_LINE_NUMBER; }
YY_BREAK
case 18:
+/* rule 18 can match eol */
YY_RULE_SETUP
-#line 305 "compilers/imcc/imcc.l"
-return TK_LINE;
+#line 309 "compilers/imcc/imcc.l"
+{ /* ignore */ }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 306 "compilers/imcc/imcc.l"
-return TK_FILE;
+#line 311 "compilers/imcc/imcc.l"
+return TK_LINE;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 307 "compilers/imcc/imcc.l"
-return ANNOTATE;
+#line 312 "compilers/imcc/imcc.l"
+return TK_FILE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 308 "compilers/imcc/imcc.l"
-return LEXICAL;
+#line 313 "compilers/imcc/imcc.l"
+return ANNOTATE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 309 "compilers/imcc/imcc.l"
-return ARG;
+#line 314 "compilers/imcc/imcc.l"
+return LEXICAL;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 310 "compilers/imcc/imcc.l"
-return SUB;
+#line 315 "compilers/imcc/imcc.l"
+return ARG;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 311 "compilers/imcc/imcc.l"
-return ESUB;
+#line 316 "compilers/imcc/imcc.l"
+return SUB;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 312 "compilers/imcc/imcc.l"
-return PCC_BEGIN;
+#line 317 "compilers/imcc/imcc.l"
+return ESUB;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 313 "compilers/imcc/imcc.l"
-return PCC_END;
+#line 318 "compilers/imcc/imcc.l"
+return PCC_BEGIN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 314 "compilers/imcc/imcc.l"
-return PCC_CALL;
+#line 319 "compilers/imcc/imcc.l"
+return PCC_END;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 315 "compilers/imcc/imcc.l"
-return NCI_CALL;
+#line 320 "compilers/imcc/imcc.l"
+return PCC_CALL;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 316 "compilers/imcc/imcc.l"
-return METH_CALL;
+#line 321 "compilers/imcc/imcc.l"
+return NCI_CALL;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 317 "compilers/imcc/imcc.l"
-return INVOCANT;
+#line 322 "compilers/imcc/imcc.l"
+return METH_CALL;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 318 "compilers/imcc/imcc.l"
-return PCC_SUB;
+#line 323 "compilers/imcc/imcc.l"
+return INVOCANT;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 319 "compilers/imcc/imcc.l"
-return PCC_BEGIN_RETURN;
+#line 324 "compilers/imcc/imcc.l"
+return PCC_SUB;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 320 "compilers/imcc/imcc.l"
-return PCC_END_RETURN;
+#line 325 "compilers/imcc/imcc.l"
+return PCC_BEGIN_RETURN;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 321 "compilers/imcc/imcc.l"
-return PCC_BEGIN_YIELD;
+#line 326 "compilers/imcc/imcc.l"
+return PCC_END_RETURN;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 322 "compilers/imcc/imcc.l"
-return PCC_END_YIELD;
+#line 327 "compilers/imcc/imcc.l"
+return PCC_BEGIN_YIELD;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 324 "compilers/imcc/imcc.l"
-return METHOD;
+#line 328 "compilers/imcc/imcc.l"
+return PCC_END_YIELD;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 325 "compilers/imcc/imcc.l"
-return MULTI;
+#line 330 "compilers/imcc/imcc.l"
+return METHOD;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 326 "compilers/imcc/imcc.l"
-return MAIN;
+#line 331 "compilers/imcc/imcc.l"
+return MULTI;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 327 "compilers/imcc/imcc.l"
-return LOAD;
+#line 332 "compilers/imcc/imcc.l"
+return MAIN;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 328 "compilers/imcc/imcc.l"
-return INIT;
+#line 333 "compilers/imcc/imcc.l"
+return LOAD;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 329 "compilers/imcc/imcc.l"
-return IMMEDIATE;
+#line 334 "compilers/imcc/imcc.l"
+return INIT;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 330 "compilers/imcc/imcc.l"
-return POSTCOMP;
+#line 335 "compilers/imcc/imcc.l"
+return IMMEDIATE;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 331 "compilers/imcc/imcc.l"
-return ANON;
+#line 336 "compilers/imcc/imcc.l"
+return POSTCOMP;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 332 "compilers/imcc/imcc.l"
-return OUTER;
+#line 337 "compilers/imcc/imcc.l"
+return ANON;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 333 "compilers/imcc/imcc.l"
-return NEED_LEX;
+#line 338 "compilers/imcc/imcc.l"
+return OUTER;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 334 "compilers/imcc/imcc.l"
-return VTABLE_METHOD;
+#line 339 "compilers/imcc/imcc.l"
+return NEED_LEX;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 335 "compilers/imcc/imcc.l"
-return NS_ENTRY;
+#line 340 "compilers/imcc/imcc.l"
+return VTABLE_METHOD;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 336 "compilers/imcc/imcc.l"
-return UNIQUE_REG;
+#line 341 "compilers/imcc/imcc.l"
+return NS_ENTRY;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 337 "compilers/imcc/imcc.l"
-return SUB_INSTANCE_OF;
+#line 342 "compilers/imcc/imcc.l"
+return UNIQUE_REG;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 338 "compilers/imcc/imcc.l"
-return SUBID;
+#line 343 "compilers/imcc/imcc.l"
+return SUB_INSTANCE_OF;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 340 "compilers/imcc/imcc.l"
-return RESULT;
+#line 344 "compilers/imcc/imcc.l"
+return SUBID;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 341 "compilers/imcc/imcc.l"
-return GET_RESULTS;
+#line 346 "compilers/imcc/imcc.l"
+return RESULT;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 342 "compilers/imcc/imcc.l"
-return YIELDT;
+#line 347 "compilers/imcc/imcc.l"
+return GET_RESULTS;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 343 "compilers/imcc/imcc.l"
-return SET_YIELD;
+#line 348 "compilers/imcc/imcc.l"
+return YIELDT;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 344 "compilers/imcc/imcc.l"
-return RETURN;
+#line 349 "compilers/imcc/imcc.l"
+return SET_YIELD;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 345 "compilers/imcc/imcc.l"
-return SET_RETURN;
+#line 350 "compilers/imcc/imcc.l"
+return RETURN;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 346 "compilers/imcc/imcc.l"
-return TAILCALL;
+#line 351 "compilers/imcc/imcc.l"
+return SET_RETURN;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 347 "compilers/imcc/imcc.l"
-return LOADLIB;
+#line 352 "compilers/imcc/imcc.l"
+return TAILCALL;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 349 "compilers/imcc/imcc.l"
-return ADV_FLAT;
+#line 353 "compilers/imcc/imcc.l"
+return LOADLIB;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 350 "compilers/imcc/imcc.l"
-return ADV_SLURPY;
+#line 355 "compilers/imcc/imcc.l"
+return ADV_FLAT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 351 "compilers/imcc/imcc.l"
-return ADV_OPTIONAL;
+#line 356 "compilers/imcc/imcc.l"
+return ADV_SLURPY;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 352 "compilers/imcc/imcc.l"
-return ADV_OPT_FLAG;
+#line 357 "compilers/imcc/imcc.l"
+return ADV_OPTIONAL;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 353 "compilers/imcc/imcc.l"
-return ADV_NAMED;
+#line 358 "compilers/imcc/imcc.l"
+return ADV_OPT_FLAG;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 354 "compilers/imcc/imcc.l"
-return ADV_ARROW;
+#line 359 "compilers/imcc/imcc.l"
+return ADV_NAMED;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 355 "compilers/imcc/imcc.l"
-return ADV_INVOCANT;
+#line 360 "compilers/imcc/imcc.l"
+return ADV_ARROW;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 356 "compilers/imcc/imcc.l"
-return ADV_CALL_SIG;
+#line 361 "compilers/imcc/imcc.l"
+return ADV_INVOCANT;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 358 "compilers/imcc/imcc.l"
+#line 362 "compilers/imcc/imcc.l"
+return ADV_CALL_SIG;
+ YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 364 "compilers/imcc/imcc.l"
return NAMESPACE;
YY_BREAK
-case 68:
+case 69:
YY_RULE_SETUP
-#line 359 "compilers/imcc/imcc.l"
+#line 365 "compilers/imcc/imcc.l"
return HLL;
YY_BREAK
-case 69:
+case 70:
YY_RULE_SETUP
-#line 361 "compilers/imcc/imcc.l"
+#line 367 "compilers/imcc/imcc.l"
return LOCAL;
YY_BREAK
-case 70:
+case 71:
YY_RULE_SETUP
-#line 362 "compilers/imcc/imcc.l"
+#line 368 "compilers/imcc/imcc.l"
return CONST;
YY_BREAK
-case 71:
+case 72:
YY_RULE_SETUP
-#line 363 "compilers/imcc/imcc.l"
+#line 369 "compilers/imcc/imcc.l"
return GLOBAL_CONST;
YY_BREAK
-case 72:
+case 73:
YY_RULE_SETUP
-#line 364 "compilers/imcc/imcc.l"
+#line 370 "compilers/imcc/imcc.l"
return PARAM;
YY_BREAK
-case 73:
+case 74:
YY_RULE_SETUP
-#line 365 "compilers/imcc/imcc.l"
+#line 371 "compilers/imcc/imcc.l"
return GOTO;
YY_BREAK
-case 74:
+case 75:
YY_RULE_SETUP
-#line 366 "compilers/imcc/imcc.l"
+#line 372 "compilers/imcc/imcc.l"
return IF;
YY_BREAK
-case 75:
+case 76:
YY_RULE_SETUP
-#line 367 "compilers/imcc/imcc.l"
+#line 373 "compilers/imcc/imcc.l"
return UNLESS;
YY_BREAK
-case 76:
+case 77:
YY_RULE_SETUP
-#line 368 "compilers/imcc/imcc.l"
+#line 374 "compilers/imcc/imcc.l"
return PNULL;
YY_BREAK
-case 77:
+case 78:
YY_RULE_SETUP
-#line 369 "compilers/imcc/imcc.l"
+#line 375 "compilers/imcc/imcc.l"
return INTV;
YY_BREAK
-case 78:
+case 79:
YY_RULE_SETUP
-#line 370 "compilers/imcc/imcc.l"
+#line 376 "compilers/imcc/imcc.l"
return FLOATV;
YY_BREAK
-case 79:
+case 80:
YY_RULE_SETUP
-#line 372 "compilers/imcc/imcc.l"
+#line 378 "compilers/imcc/imcc.l"
return PMCV;
YY_BREAK
-case 80:
+case 81:
YY_RULE_SETUP
-#line 373 "compilers/imcc/imcc.l"
+#line 379 "compilers/imcc/imcc.l"
return STRINGV;
YY_BREAK
-case 81:
+case 82:
YY_RULE_SETUP
-#line 374 "compilers/imcc/imcc.l"
+#line 380 "compilers/imcc/imcc.l"
return SHIFT_LEFT;
YY_BREAK
-case 82:
+case 83:
YY_RULE_SETUP
-#line 375 "compilers/imcc/imcc.l"
+#line 381 "compilers/imcc/imcc.l"
return SHIFT_RIGHT;
YY_BREAK
-case 83:
+case 84:
YY_RULE_SETUP
-#line 376 "compilers/imcc/imcc.l"
+#line 382 "compilers/imcc/imcc.l"
return SHIFT_RIGHT_U;
YY_BREAK
-case 84:
+case 85:
YY_RULE_SETUP
-#line 377 "compilers/imcc/imcc.l"
+#line 383 "compilers/imcc/imcc.l"
return LOG_AND;
YY_BREAK
-case 85:
+case 86:
YY_RULE_SETUP
-#line 378 "compilers/imcc/imcc.l"
+#line 384 "compilers/imcc/imcc.l"
return LOG_OR;
YY_BREAK
-case 86:
+case 87:
YY_RULE_SETUP
-#line 379 "compilers/imcc/imcc.l"
+#line 385 "compilers/imcc/imcc.l"
return LOG_XOR;
YY_BREAK
-case 87:
+case 88:
YY_RULE_SETUP
-#line 380 "compilers/imcc/imcc.l"
+#line 386 "compilers/imcc/imcc.l"
return RELOP_LT;
YY_BREAK
-case 88:
+case 89:
YY_RULE_SETUP
-#line 381 "compilers/imcc/imcc.l"
+#line 387 "compilers/imcc/imcc.l"
return RELOP_LTE;
YY_BREAK
-case 89:
+case 90:
YY_RULE_SETUP
-#line 382 "compilers/imcc/imcc.l"
+#line 388 "compilers/imcc/imcc.l"
return RELOP_GT;
YY_BREAK
-case 90:
+case 91:
YY_RULE_SETUP
-#line 383 "compilers/imcc/imcc.l"
+#line 389 "compilers/imcc/imcc.l"
return RELOP_GTE;
YY_BREAK
-case 91:
+case 92:
YY_RULE_SETUP
-#line 384 "compilers/imcc/imcc.l"
+#line 390 "compilers/imcc/imcc.l"
return RELOP_EQ;
YY_BREAK
-case 92:
+case 93:
YY_RULE_SETUP
-#line 385 "compilers/imcc/imcc.l"
+#line 391 "compilers/imcc/imcc.l"
return RELOP_NE;
YY_BREAK
-case 93:
+case 94:
YY_RULE_SETUP
-#line 386 "compilers/imcc/imcc.l"
+#line 392 "compilers/imcc/imcc.l"
return POW;
YY_BREAK
-case 94:
+case 95:
YY_RULE_SETUP
-#line 388 "compilers/imcc/imcc.l"
+#line 394 "compilers/imcc/imcc.l"
return CONCAT;
YY_BREAK
-case 95:
+case 96:
YY_RULE_SETUP
-#line 389 "compilers/imcc/imcc.l"
+#line 395 "compilers/imcc/imcc.l"
return DOT;
YY_BREAK
-case 96:
+case 97:
YY_RULE_SETUP
-#line 391 "compilers/imcc/imcc.l"
+#line 397 "compilers/imcc/imcc.l"
return PLUS_ASSIGN;
YY_BREAK
-case 97:
+case 98:
YY_RULE_SETUP
-#line 392 "compilers/imcc/imcc.l"
+#line 398 "compilers/imcc/imcc.l"
return MINUS_ASSIGN;
YY_BREAK
-case 98:
+case 99:
YY_RULE_SETUP
-#line 393 "compilers/imcc/imcc.l"
+#line 399 "compilers/imcc/imcc.l"
return MUL_ASSIGN;
YY_BREAK
-case 99:
+case 100:
YY_RULE_SETUP
-#line 394 "compilers/imcc/imcc.l"
+#line 400 "compilers/imcc/imcc.l"
return DIV_ASSIGN;
YY_BREAK
-case 100:
+case 101:
YY_RULE_SETUP
-#line 395 "compilers/imcc/imcc.l"
+#line 401 "compilers/imcc/imcc.l"
return MOD_ASSIGN;
YY_BREAK
-case 101:
+case 102:
YY_RULE_SETUP
-#line 396 "compilers/imcc/imcc.l"
+#line 402 "compilers/imcc/imcc.l"
return FDIV;
YY_BREAK
-case 102:
+case 103:
YY_RULE_SETUP
-#line 397 "compilers/imcc/imcc.l"
+#line 403 "compilers/imcc/imcc.l"
return FDIV_ASSIGN;
YY_BREAK
-case 103:
+case 104:
YY_RULE_SETUP
-#line 398 "compilers/imcc/imcc.l"
+#line 404 "compilers/imcc/imcc.l"
return BAND_ASSIGN;
YY_BREAK
-case 104:
+case 105:
YY_RULE_SETUP
-#line 399 "compilers/imcc/imcc.l"
+#line 405 "compilers/imcc/imcc.l"
return BOR_ASSIGN;
YY_BREAK
-case 105:
+case 106:
YY_RULE_SETUP
-#line 400 "compilers/imcc/imcc.l"
+#line 406 "compilers/imcc/imcc.l"
return BXOR_ASSIGN;
YY_BREAK
-case 106:
+case 107:
YY_RULE_SETUP
-#line 401 "compilers/imcc/imcc.l"
+#line 407 "compilers/imcc/imcc.l"
return SHR_ASSIGN;
YY_BREAK
-case 107:
+case 108:
YY_RULE_SETUP
-#line 402 "compilers/imcc/imcc.l"
+#line 408 "compilers/imcc/imcc.l"
return SHL_ASSIGN;
YY_BREAK
-case 108:
+case 109:
YY_RULE_SETUP
-#line 403 "compilers/imcc/imcc.l"
+#line 409 "compilers/imcc/imcc.l"
return SHR_U_ASSIGN;
YY_BREAK
-case 109:
+case 110:
YY_RULE_SETUP
-#line 404 "compilers/imcc/imcc.l"
+#line 410 "compilers/imcc/imcc.l"
return CONCAT_ASSIGN;
YY_BREAK
-case 110:
+case 111:
YY_RULE_SETUP
-#line 406 "compilers/imcc/imcc.l"
+#line 412 "compilers/imcc/imcc.l"
{
char *macro_name = NULL;
int start_cond = YY_START;
@@ -3533,16 +3615,18 @@
return MACRO;
}
YY_BREAK
-case 111:
+case 112:
YY_RULE_SETUP
-#line 449 "compilers/imcc/imcc.l"
+#line 455 "compilers/imcc/imcc.l"
{
+ /* the initial whitespace catcher misses this one */
+ SET_LINE_NUMBER;
return read_macro(valp, interp, yyscanner);
}
YY_BREAK
-case 112:
+case 113:
YY_RULE_SETUP
-#line 453 "compilers/imcc/imcc.l"
+#line 461 "compilers/imcc/imcc.l"
{
const int c = yylex(valp,yyscanner,interp);
@@ -3555,9 +3639,9 @@
include_file(interp, yytext + 1, yyscanner);
}
YY_BREAK
-case 113:
+case 114:
YY_RULE_SETUP
-#line 465 "compilers/imcc/imcc.l"
+#line 473 "compilers/imcc/imcc.l"
{
if (valp) {
char *label;
@@ -3580,11 +3664,10 @@
return LABEL;
}
YY_BREAK
-case 114:
+case 115:
YY_RULE_SETUP
-#line 487 "compilers/imcc/imcc.l"
+#line 495 "compilers/imcc/imcc.l"
{
-
if (valp) {
char *label;
size_t len;
@@ -3604,14 +3687,14 @@
return IDENTIFIER;
}
YY_BREAK
-case 115:
+case 116:
YY_RULE_SETUP
-#line 508 "compilers/imcc/imcc.l"
+#line 515 "compilers/imcc/imcc.l"
return COMMA;
YY_BREAK
-case 116:
+case 117:
YY_RULE_SETUP
-#line 510 "compilers/imcc/imcc.l"
+#line 517 "compilers/imcc/imcc.l"
{
/* trim last ':' */
YYCHOP();
@@ -3622,9 +3705,9 @@
return LABEL;
}
YY_BREAK
-case 117:
+case 118:
YY_RULE_SETUP
-#line 520 "compilers/imcc/imcc.l"
+#line 527 "compilers/imcc/imcc.l"
{
char * const macro_name = mem_sys_strdup(yytext + 1);
int failed = expand_macro(interp, macro_name, yyscanner);
@@ -3635,34 +3718,34 @@
}
}
YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 532 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, FLOATC);
- YY_BREAK
case 119:
YY_RULE_SETUP
-#line 533 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, INTC);
+#line 539 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, FLOATC);
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 534 "compilers/imcc/imcc.l"
+#line 540 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 535 "compilers/imcc/imcc.l"
+#line 541 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 536 "compilers/imcc/imcc.l"
+#line 542 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 538 "compilers/imcc/imcc.l"
+#line 543 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, INTC);
+ YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 545 "compilers/imcc/imcc.l"
{
valp->s = mem_sys_strdup(yytext);
@@ -3673,18 +3756,18 @@
return STRINGC;
}
YY_BREAK
-case 124:
+case 125:
YY_RULE_SETUP
-#line 548 "compilers/imcc/imcc.l"
+#line 555 "compilers/imcc/imcc.l"
{
valp->s = mem_sys_strdup(yytext);
return STRINGC;
}
YY_BREAK
-case 125:
+case 126:
YY_RULE_SETUP
-#line 554 "compilers/imcc/imcc.l"
+#line 561 "compilers/imcc/imcc.l"
{
macro_frame_t *frame;
@@ -3713,9 +3796,9 @@
yy_push_state(heredoc1, yyscanner);
}
YY_BREAK
-case 126:
+case 127:
YY_RULE_SETUP
-#line 582 "compilers/imcc/imcc.l"
+#line 589 "compilers/imcc/imcc.l"
{
/* charset:"..." */
valp->s = mem_sys_strdup(yytext);
@@ -3724,9 +3807,9 @@
return USTRINGC;
}
YY_BREAK
-case 127:
+case 128:
YY_RULE_SETUP
-#line 590 "compilers/imcc/imcc.l"
+#line 597 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3735,9 +3818,9 @@
return IREG;
}
YY_BREAK
-case 128:
+case 129:
YY_RULE_SETUP
-#line 598 "compilers/imcc/imcc.l"
+#line 605 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3746,9 +3829,9 @@
return NREG;
}
YY_BREAK
-case 129:
+case 130:
YY_RULE_SETUP
-#line 606 "compilers/imcc/imcc.l"
+#line 613 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3757,9 +3840,9 @@
return SREG;
}
YY_BREAK
-case 130:
+case 131:
YY_RULE_SETUP
-#line 614 "compilers/imcc/imcc.l"
+#line 621 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3768,17 +3851,17 @@
return PREG;
}
YY_BREAK
-case 131:
+case 132:
YY_RULE_SETUP
-#line 622 "compilers/imcc/imcc.l"
+#line 629 "compilers/imcc/imcc.l"
{
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
"'%s' is not a valid register name", yytext);
}
YY_BREAK
-case 132:
+case 133:
YY_RULE_SETUP
-#line 627 "compilers/imcc/imcc.l"
+#line 634 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->state->pasm_file == 0)
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3790,52 +3873,26 @@
return REG;
}
YY_BREAK
-case 133:
+case 134:
YY_RULE_SETUP
-#line 638 "compilers/imcc/imcc.l"
-{
- if (!IMCC_INFO(interp)->is_def) {
- SymReg *r = find_sym(interp, yytext);
-
- if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
- valp->sr = r;
- return VAR;
- }
-
- if (IMCC_INFO(interp)->cur_unit
- && IMCC_INFO(interp)->cur_unit->instructions
- && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
- && r->pcc_sub)
- {
- if (((r->pcc_sub->pragma & P_METHOD)
- || (IMCC_INFO(interp)->cur_unit->is_vtable_method))
- && !strcmp(yytext, "self")) {
- valp->sr = mk_ident(interp, "self", 'P');
- IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
- return VAR;
- }
- }
- }
-
- valp->s = mem_sys_strdup(yytext);
- return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
- }
+#line 646 "compilers/imcc/imcc.l"
+{ return handle_identifier(interp, valp, yytext); }
YY_BREAK
-case 134:
+case 135:
YY_RULE_SETUP
-#line 667 "compilers/imcc/imcc.l"
+#line 648 "compilers/imcc/imcc.l"
/* skip */;
YY_BREAK
-case 135:
+case 136:
YY_RULE_SETUP
-#line 669 "compilers/imcc/imcc.l"
+#line 650 "compilers/imcc/imcc.l"
{
/* catch all except for state macro */
return yytext[0];
}
YY_BREAK
case YY_STATE_EOF(emit):
-#line 674 "compilers/imcc/imcc.l"
+#line 655 "compilers/imcc/imcc.l"
{
BEGIN(INITIAL);
@@ -3848,31 +3905,34 @@
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 685 "compilers/imcc/imcc.l"
+#line 666 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
-case 136:
+case 137:
YY_RULE_SETUP
-#line 687 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, ENDM);
+#line 668 "compilers/imcc/imcc.l"
+{
+ /* the initial whitespace catcher misses this one */
+ SET_LINE_NUMBER;
+ DUP_AND_RET(valp, ENDM);
+}
YY_BREAK
-case 137:
-/* rule 137 can match eol */
+case 138:
+/* rule 138 can match eol */
YY_RULE_SETUP
-#line 689 "compilers/imcc/imcc.l"
+#line 674 "compilers/imcc/imcc.l"
{
- IMCC_INFO(interp)->line++;
DUP_AND_RET(valp, '\n');
}
YY_BREAK
-case 138:
+case 139:
YY_RULE_SETUP
-#line 694 "compilers/imcc/imcc.l"
+#line 678 "compilers/imcc/imcc.l"
return LABEL;
YY_BREAK
-case 139:
+case 140:
YY_RULE_SETUP
-#line 696 "compilers/imcc/imcc.l"
+#line 680 "compilers/imcc/imcc.l"
{
if (yylex(valp,yyscanner,interp) != LABEL)
@@ -3897,9 +3957,9 @@
return LABEL;
}
YY_BREAK
-case 140:
+case 141:
YY_RULE_SETUP
-#line 720 "compilers/imcc/imcc.l"
+#line 704 "compilers/imcc/imcc.l"
{
if (valp) {
if (!IMCC_INFO(interp)->cur_macro_name) {
@@ -3928,51 +3988,46 @@
return IDENTIFIER;
}
YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 748 "compilers/imcc/imcc.l"
-/* skip leading ws */;
- YY_BREAK
case 142:
YY_RULE_SETUP
-#line 749 "compilers/imcc/imcc.l"
+#line 732 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, ' ');
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 750 "compilers/imcc/imcc.l"
+#line 733 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 751 "compilers/imcc/imcc.l"
+#line 734 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 752 "compilers/imcc/imcc.l"
+#line 735 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, IDENTIFIER);
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 753 "compilers/imcc/imcc.l"
+#line 736 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, MACRO);
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 754 "compilers/imcc/imcc.l"
+#line 737 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, yytext[0]);
YY_BREAK
case YY_STATE_EOF(macro):
-#line 755 "compilers/imcc/imcc.l"
+#line 738 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 757 "compilers/imcc/imcc.l"
+#line 740 "compilers/imcc/imcc.l"
ECHO;
YY_BREAK
-#line 3976 "compilers/imcc/imclexer.c"
+#line 4031 "compilers/imcc/imclexer.c"
case YY_STATE_EOF(pod):
case YY_STATE_EOF(cmt1):
case YY_STATE_EOF(cmt2):
@@ -4275,7 +4330,7 @@
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1062 )
+ if ( yy_current_state >= 1095 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4304,11 +4359,11 @@
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1062 )
+ if ( yy_current_state >= 1095 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 1061);
+ yy_is_jam = (yy_current_state == 1094);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -4346,6 +4401,10 @@
*--yy_cp = (char) c;
+ if ( c == '\n' ){
+ --yylineno;
+ }
+
yyg->yytext_ptr = yy_bp;
yyg->yy_hold_char = *yy_cp;
yyg->yy_c_buf_p = yy_cp;
@@ -4423,6 +4482,12 @@
yyg->yy_hold_char = *++yyg->yy_c_buf_p;
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )
+
+ do{ yylineno++;
+ yycolumn=0;
+ }while(0)
+;
return c;
}
@@ -5174,7 +5239,7 @@
#define YYTABLES_NAME "yytables"
-#line 757 "compilers/imcc/imcc.l"
+#line 740 "compilers/imcc/imcc.l"
@@ -5236,6 +5301,9 @@
frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
IMCC_INFO(interp)->frames = frame;
+ /* start at the effective *starting line* of the macro */
+ IMCC_INFO(interp)->line = frame->s.line - 2;
+
yy_scan_string(expansion,yyscanner);
}
@@ -5491,9 +5559,6 @@
IMCC_INFO(interp)->macro_buffer = NULL;
IMCC_INFO(interp)->cur_macro_name = NULL;
- /* the ENDM rule doesn't set the line number */
- IMCC_INFO(interp)->line--;
-
return MACRO;
}
@@ -5654,8 +5719,6 @@
}
}
- /* let the normal EOF rules match line numbers */
- IMCC_INFO(interp)->line = m->line - 1;
scan_string(frame, m->expansion, yyscanner);
return 1;
@@ -5705,14 +5768,18 @@
scan_file(PARROT_INTERP, macro_frame_t *frame, FILE *file, void *yyscanner)
{
yyguts_t * const yyg = (yyguts_t *)yyscanner;
+ const int oldline = IMCC_INFO(interp)->line;
frame->buffer = YY_CURRENT_BUFFER;
frame->s.next = (parser_state_t *)IMCC_INFO(interp)->frames;
IMCC_INFO(interp)->frames = frame;
IMCC_INFO(interp)->state = (parser_state_t *)IMCC_INFO(interp)->frames;
- IMCC_INFO(interp)->line = 1;
+ /* let the start of line rule increment this to 1 */
+ IMCC_INFO(interp)->line = 0;
yy_switch_to_buffer(yy_create_buffer(file,YY_BUF_SIZE,yyscanner),yyscanner);
+
+ IMCC_INFO(interp)->line = oldline;
}
void
@@ -5889,6 +5956,36 @@
return yyg->yy_hold_char == '\0';
}
+static int
+handle_identifier(PARROT_INTERP, YYSTYPE *valp, const char *text)
+{
+ if (!IMCC_INFO(interp)->is_def) {
+ SymReg *r = find_sym(interp, text);
+
+ if (r && (r->type & (VTIDENTIFIER|VT_CONSTP))) {
+ valp->sr = r;
+ return VAR;
+ }
+
+ if (IMCC_INFO(interp)->cur_unit
+ && IMCC_INFO(interp)->cur_unit->instructions
+ && (r = IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
+ && r->pcc_sub)
+ {
+ if (((r->pcc_sub->pragma & P_METHOD)
+ || (IMCC_INFO(interp)->cur_unit->is_vtable_method))
+ && !strcmp(text, "self")) {
+ valp->sr = mk_ident(interp, "self", 'P');
+ IMCC_INFO(interp)->cur_unit->type |= IMC_HAS_SELF;
+ return VAR;
+ }
+ }
+ }
+
+ valp->s = mem_sys_strdup(text);
+ return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
+}
+
/*
* Local variables:
* c-file-style: "parrot"
Modified: branches/ops_pct/compilers/imcc/imcparser.c
==============================================================================
--- branches/ops_pct/compilers/imcc/imcparser.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/imcparser.c Wed May 5 08:45:29 2010 (r46302)
@@ -1184,245 +1184,247 @@
enum yytokentype {
LOW_PREC = 258,
PARAM = 259,
- HLL = 260,
- TK_LINE = 261,
- TK_FILE = 262,
- GOTO = 263,
- ARG = 264,
- IF = 265,
- UNLESS = 266,
- PNULL = 267,
- SET_RETURN = 268,
- SET_YIELD = 269,
- ADV_FLAT = 270,
- ADV_SLURPY = 271,
- ADV_OPTIONAL = 272,
- ADV_OPT_FLAG = 273,
- ADV_NAMED = 274,
- ADV_ARROW = 275,
- NEW = 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,
- INC = 287,
- DEC = 288,
- GLOBAL_CONST = 289,
- PLUS_ASSIGN = 290,
- MINUS_ASSIGN = 291,
- MUL_ASSIGN = 292,
- DIV_ASSIGN = 293,
- CONCAT_ASSIGN = 294,
- BAND_ASSIGN = 295,
- BOR_ASSIGN = 296,
- BXOR_ASSIGN = 297,
- FDIV = 298,
- FDIV_ASSIGN = 299,
- MOD_ASSIGN = 300,
- SHR_ASSIGN = 301,
- SHL_ASSIGN = 302,
- SHR_U_ASSIGN = 303,
- SHIFT_LEFT = 304,
- SHIFT_RIGHT = 305,
- INTV = 306,
- FLOATV = 307,
- STRINGV = 308,
- PMCV = 309,
- LOG_XOR = 310,
- RELOP_EQ = 311,
- RELOP_NE = 312,
- RELOP_GT = 313,
- RELOP_GTE = 314,
- RELOP_LT = 315,
- RELOP_LTE = 316,
- RESULT = 317,
- RETURN = 318,
- TAILCALL = 319,
- YIELDT = 320,
- GET_RESULTS = 321,
- POW = 322,
- SHIFT_RIGHT_U = 323,
- LOG_AND = 324,
- LOG_OR = 325,
- COMMA = 326,
- ESUB = 327,
- DOTDOT = 328,
- PCC_BEGIN = 329,
- PCC_END = 330,
- PCC_CALL = 331,
- PCC_SUB = 332,
- PCC_BEGIN_RETURN = 333,
- PCC_END_RETURN = 334,
- PCC_BEGIN_YIELD = 335,
- PCC_END_YIELD = 336,
- NCI_CALL = 337,
- METH_CALL = 338,
- INVOCANT = 339,
- MAIN = 340,
- LOAD = 341,
- INIT = 342,
- IMMEDIATE = 343,
- POSTCOMP = 344,
- METHOD = 345,
- ANON = 346,
- OUTER = 347,
- NEED_LEX = 348,
- MULTI = 349,
- VTABLE_METHOD = 350,
- LOADLIB = 351,
- SUB_INSTANCE_OF = 352,
- SUBID = 353,
- NS_ENTRY = 354,
- UNIQUE_REG = 355,
- LABEL = 356,
- EMIT = 357,
- EOM = 358,
- IREG = 359,
- NREG = 360,
- SREG = 361,
- PREG = 362,
- IDENTIFIER = 363,
- REG = 364,
- MACRO = 365,
- ENDM = 366,
- STRINGC = 367,
- INTC = 368,
- FLOATC = 369,
- USTRINGC = 370,
- PARROT_OP = 371,
- VAR = 372,
- LINECOMMENT = 373,
- FILECOMMENT = 374,
- DOT = 375,
- CONCAT = 376
+ 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,
+ NEW = 277,
+ ADV_INVOCANT = 278,
+ ADV_CALL_SIG = 279,
+ NAMESPACE = 280,
+ DOT_METHOD = 281,
+ SUB = 282,
+ SYM = 283,
+ LOCAL = 284,
+ LEXICAL = 285,
+ CONST = 286,
+ ANNOTATE = 287,
+ INC = 288,
+ DEC = 289,
+ GLOBAL_CONST = 290,
+ PLUS_ASSIGN = 291,
+ MINUS_ASSIGN = 292,
+ MUL_ASSIGN = 293,
+ DIV_ASSIGN = 294,
+ CONCAT_ASSIGN = 295,
+ BAND_ASSIGN = 296,
+ BOR_ASSIGN = 297,
+ BXOR_ASSIGN = 298,
+ FDIV = 299,
+ FDIV_ASSIGN = 300,
+ MOD_ASSIGN = 301,
+ SHR_ASSIGN = 302,
+ SHL_ASSIGN = 303,
+ SHR_U_ASSIGN = 304,
+ SHIFT_LEFT = 305,
+ SHIFT_RIGHT = 306,
+ INTV = 307,
+ FLOATV = 308,
+ STRINGV = 309,
+ PMCV = 310,
+ LOG_XOR = 311,
+ RELOP_EQ = 312,
+ RELOP_NE = 313,
+ RELOP_GT = 314,
+ RELOP_GTE = 315,
+ RELOP_LT = 316,
+ RELOP_LTE = 317,
+ RESULT = 318,
+ RETURN = 319,
+ TAILCALL = 320,
+ YIELDT = 321,
+ GET_RESULTS = 322,
+ POW = 323,
+ SHIFT_RIGHT_U = 324,
+ LOG_AND = 325,
+ LOG_OR = 326,
+ COMMA = 327,
+ ESUB = 328,
+ DOTDOT = 329,
+ PCC_BEGIN = 330,
+ PCC_END = 331,
+ PCC_CALL = 332,
+ PCC_SUB = 333,
+ PCC_BEGIN_RETURN = 334,
+ PCC_END_RETURN = 335,
+ PCC_BEGIN_YIELD = 336,
+ PCC_END_YIELD = 337,
+ NCI_CALL = 338,
+ METH_CALL = 339,
+ INVOCANT = 340,
+ MAIN = 341,
+ LOAD = 342,
+ INIT = 343,
+ IMMEDIATE = 344,
+ POSTCOMP = 345,
+ METHOD = 346,
+ ANON = 347,
+ OUTER = 348,
+ NEED_LEX = 349,
+ MULTI = 350,
+ VTABLE_METHOD = 351,
+ LOADLIB = 352,
+ SUB_INSTANCE_OF = 353,
+ SUBID = 354,
+ NS_ENTRY = 355,
+ UNIQUE_REG = 356,
+ LABEL = 357,
+ EMIT = 358,
+ EOM = 359,
+ IREG = 360,
+ NREG = 361,
+ SREG = 362,
+ PREG = 363,
+ IDENTIFIER = 364,
+ REG = 365,
+ MACRO = 366,
+ ENDM = 367,
+ STRINGC = 368,
+ INTC = 369,
+ FLOATC = 370,
+ USTRINGC = 371,
+ PARROT_OP = 372,
+ VAR = 373,
+ LINECOMMENT = 374,
+ FILECOMMENT = 375,
+ DOT = 376,
+ CONCAT = 377
};
#endif
/* Tokens. */
#define LOW_PREC 258
#define PARAM 259
-#define HLL 260
-#define TK_LINE 261
-#define TK_FILE 262
-#define GOTO 263
-#define ARG 264
-#define IF 265
-#define UNLESS 266
-#define PNULL 267
-#define SET_RETURN 268
-#define SET_YIELD 269
-#define ADV_FLAT 270
-#define ADV_SLURPY 271
-#define ADV_OPTIONAL 272
-#define ADV_OPT_FLAG 273
-#define ADV_NAMED 274
-#define ADV_ARROW 275
-#define NEW 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 INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#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 NEW 277
+#define ADV_INVOCANT 278
+#define ADV_CALL_SIG 279
+#define NAMESPACE 280
+#define DOT_METHOD 281
+#define SUB 282
+#define SYM 283
+#define LOCAL 284
+#define LEXICAL 285
+#define CONST 286
+#define ANNOTATE 287
+#define INC 288
+#define DEC 289
+#define GLOBAL_CONST 290
+#define PLUS_ASSIGN 291
+#define MINUS_ASSIGN 292
+#define MUL_ASSIGN 293
+#define DIV_ASSIGN 294
+#define CONCAT_ASSIGN 295
+#define BAND_ASSIGN 296
+#define BOR_ASSIGN 297
+#define BXOR_ASSIGN 298
+#define FDIV 299
+#define FDIV_ASSIGN 300
+#define MOD_ASSIGN 301
+#define SHR_ASSIGN 302
+#define SHL_ASSIGN 303
+#define SHR_U_ASSIGN 304
+#define SHIFT_LEFT 305
+#define SHIFT_RIGHT 306
+#define INTV 307
+#define FLOATV 308
+#define STRINGV 309
+#define PMCV 310
+#define LOG_XOR 311
+#define RELOP_EQ 312
+#define RELOP_NE 313
+#define RELOP_GT 314
+#define RELOP_GTE 315
+#define RELOP_LT 316
+#define RELOP_LTE 317
+#define RESULT 318
+#define RETURN 319
+#define TAILCALL 320
+#define YIELDT 321
+#define GET_RESULTS 322
+#define POW 323
+#define SHIFT_RIGHT_U 324
+#define LOG_AND 325
+#define LOG_OR 326
+#define COMMA 327
+#define ESUB 328
+#define DOTDOT 329
+#define PCC_BEGIN 330
+#define PCC_END 331
+#define PCC_CALL 332
+#define PCC_SUB 333
+#define PCC_BEGIN_RETURN 334
+#define PCC_END_RETURN 335
+#define PCC_BEGIN_YIELD 336
+#define PCC_END_YIELD 337
+#define NCI_CALL 338
+#define METH_CALL 339
+#define INVOCANT 340
+#define MAIN 341
+#define LOAD 342
+#define INIT 343
+#define IMMEDIATE 344
+#define POSTCOMP 345
+#define METHOD 346
+#define ANON 347
+#define OUTER 348
+#define NEED_LEX 349
+#define MULTI 350
+#define VTABLE_METHOD 351
+#define LOADLIB 352
+#define SUB_INSTANCE_OF 353
+#define SUBID 354
+#define NS_ENTRY 355
+#define UNIQUE_REG 356
+#define LABEL 357
+#define EMIT 358
+#define EOM 359
+#define IREG 360
+#define NREG 361
+#define SREG 362
+#define PREG 363
+#define IDENTIFIER 364
+#define REG 365
+#define MACRO 366
+#define ENDM 367
+#define STRINGC 368
+#define INTC 369
+#define FLOATC 370
+#define USTRINGC 371
+#define PARROT_OP 372
+#define VAR 373
+#define LINECOMMENT 374
+#define FILECOMMENT 375
+#define DOT 376
+#define CONCAT 377
@@ -1443,7 +1445,7 @@
/* Line 214 of yacc.c */
-#line 1436 "compilers/imcc/imcparser.c"
+#line 1438 "compilers/imcc/imcparser.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1455,7 +1457,7 @@
/* Line 264 of yacc.c */
-#line 1448 "compilers/imcc/imcparser.c"
+#line 1450 "compilers/imcc/imcparser.c"
#ifdef short
# undef short
@@ -1670,10 +1672,10 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 31
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 659
+#define YYLAST 686
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 139
+#define YYNTOKENS 140
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 126
/* YYNRULES -- Number of rules. */
@@ -1683,7 +1685,7 @@
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 376
+#define YYMAXUTOK 377
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1694,16 +1696,16 @@
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 129, 2, 2, 2, 135, 136, 2,
- 126, 127, 133, 132, 2, 131, 2, 134, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 138,
- 2, 123, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 130, 2, 2, 2, 136, 137, 2,
+ 127, 128, 134, 133, 2, 132, 2, 135, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 139,
+ 2, 124, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 124, 2, 125, 2, 2, 2, 2, 2, 2,
+ 2, 125, 2, 126, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 128, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 137, 2, 130, 2, 2, 2,
+ 129, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 138, 2, 131, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1728,7 +1730,7 @@
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122
+ 116, 117, 118, 119, 120, 121, 122, 123
};
#if YYDEBUG
@@ -1775,102 +1777,102 @@
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 140, 0, -1, 141, -1, 142, -1, 141, 142, -1,
- 162, -1, 147, -1, 164, -1, 159, -1, 111, 4,
- -1, 143, -1, 144, -1, 4, -1, 146, 4, -1,
- 97, 113, 4, -1, 7, 114, 72, 113, 4, -1,
- 8, 113, 4, -1, 32, 113, 72, 264, -1, 6,
- 113, -1, -1, 31, 148, 223, 109, 123, 264, -1,
- -1, 31, 150, 114, 255, 123, 152, -1, -1, 31,
- 151, 113, 255, 123, 152, -1, 113, -1, 116, -1,
- 154, -1, 153, 154, -1, 212, 155, 4, -1, 111,
- 4, -1, 120, -1, 119, -1, 162, -1, 149, -1,
- 143, -1, -1, 156, 117, 158, -1, -1, 78, 157,
- 186, 102, -1, 13, 256, -1, 30, 113, 72, 110,
- -1, -1, 249, -1, -1, 103, 160, 161, 104, -1,
- -1, 153, -1, 25, 163, 4, -1, 124, 257, 125,
- -1, 124, 125, -1, -1, -1, -1, 27, 165, 252,
- 166, 186, 4, 167, 168, 181, 73, -1, -1, 4,
- -1, 168, 169, 4, -1, -1, 5, 170, 171, -1,
- 223, 109, 195, -1, 95, 126, 179, 127, -1, 93,
- 126, 113, 127, -1, 93, 126, 109, 127, -1, 96,
- -1, 96, 126, 113, 127, -1, 91, -1, 91, 126,
- 152, 127, -1, 100, -1, 100, 126, 152, 127, -1,
- 98, 126, 113, 127, -1, 99, -1, 99, 126, 152,
- 127, -1, -1, 179, 72, 180, -1, 180, -1, 52,
- -1, 53, -1, 55, -1, 54, -1, 109, -1, 113,
- -1, 124, 257, 125, -1, -1, 209, -1, -1, 75,
- 4, 183, 190, 185, 189, 184, 192, 76, -1, -1,
- 214, 4, -1, -1, 85, 256, 4, -1, -1, 187,
- -1, 188, -1, 187, 188, -1, 87, -1, 88, -1,
- 86, -1, 89, -1, 90, -1, 92, -1, 94, -1,
- 172, -1, 173, -1, 174, -1, 175, -1, 176, -1,
- 177, -1, 178, -1, 77, 256, 72, 256, 4, -1,
- 77, 256, 4, -1, 83, 256, 4, -1, 84, 248,
- 4, -1, 84, 113, 4, -1, 84, 248, 72, 256,
- 4, -1, 84, 113, 72, 256, 4, -1, -1, 190,
- 191, 4, -1, 10, 238, -1, -1, 192, 193, 4,
- -1, 63, 248, 195, -1, -1, 29, 194, 223, 217,
- -1, -1, 195, 196, -1, 17, -1, 18, -1, 19,
- -1, 20, -1, 20, 126, 113, 127, -1, 20, 126,
- 116, 127, -1, 101, -1, 24, -1, -1, 79, 4,
- 198, 201, 80, -1, 205, -1, -1, 81, 4, 200,
- 202, 82, -1, -1, 201, 4, -1, 201, 203, 4,
- -1, -1, 202, 4, -1, 202, 204, 4, -1, 14,
- 256, 239, -1, 15, 256, 239, -1, -1, 207, 126,
- 206, 208, 127, -1, 64, -1, 66, -1, -1, 238,
- -1, 113, 21, 256, -1, 208, 72, 238, -1, 208,
- 72, 113, 21, 256, -1, 211, -1, 209, 211, -1,
- -1, 210, 215, -1, 111, 4, -1, 120, -1, 119,
- -1, 144, -1, 145, -1, -1, 213, -1, 213, 214,
- -1, 214, -1, 102, -1, 212, 219, 4, -1, 1,
- 4, -1, 217, -1, 216, 72, 217, -1, 109, 218,
- -1, -1, 101, -1, 225, -1, 243, -1, -1, 29,
- 220, 223, 216, -1, 30, 113, 72, 248, -1, 30,
- 116, 72, 248, -1, -1, 31, 221, 223, 109, 123,
- 264, -1, 149, -1, -1, 35, 222, 223, 109, 123,
- 264, -1, 65, 235, -1, 9, 254, -1, 117, 249,
- -1, 13, 256, -1, 235, -1, 182, -1, 197, -1,
- 199, -1, -1, 52, -1, 53, -1, 54, -1, 55,
- -1, 109, -1, 248, 123, 256, -1, 248, 123, 227,
- 256, -1, 248, 123, 256, 228, 256, -1, 248, 123,
- 256, 124, 257, 125, -1, 248, 124, 257, 125, 123,
- 256, -1, 248, 123, 128, 224, 124, 257, 125, -1,
- 248, 123, 235, -1, -1, 126, 226, 242, 127, 123,
- 234, 126, 237, 127, -1, 229, -1, 231, -1, 233,
- -1, 248, 123, 13, -1, 129, -1, 130, -1, 131,
- -1, 131, -1, 132, -1, 133, -1, 134, -1, 135,
- -1, 44, -1, 68, -1, 122, -1, 57, -1, 58,
- -1, 59, -1, 60, -1, 61, -1, 62, -1, 50,
- -1, 51, -1, 69, -1, 70, -1, 71, -1, 56,
- -1, 136, -1, 137, -1, 130, -1, -1, 67, 230,
- 126, 242, 127, -1, 248, 232, 256, -1, 36, -1,
- 37, -1, 38, -1, 39, -1, 46, -1, 45, -1,
- 40, -1, 41, -1, 42, -1, 43, -1, 47, -1,
- 48, -1, 49, -1, 248, 123, 117, 158, -1, 109,
- -1, 113, -1, 116, -1, 248, -1, 248, 121, 253,
- -1, 248, 121, 116, -1, 248, 121, 113, -1, 248,
- 121, 248, -1, -1, 234, 236, 126, 237, 127, -1,
- -1, 237, 72, 238, -1, 238, -1, 237, 72, 113,
- 21, 256, -1, 256, 21, 256, -1, 113, 21, 256,
- -1, 256, 239, -1, -1, 239, 240, -1, 16, -1,
- 20, -1, 24, -1, 20, 126, 116, 127, -1, 20,
- 126, 113, 127, -1, 248, 195, -1, 242, 72, 241,
- -1, 242, 72, 113, 21, 248, -1, 241, -1, 113,
- 21, 248, -1, -1, 245, -1, 244, -1, 12, 256,
- 247, 256, 9, 254, -1, 12, 13, 256, 9, 254,
- -1, 12, 256, 246, 254, -1, 11, 256, 246, 254,
- -1, 11, 256, 247, 256, 9, 254, -1, 11, 13,
- 256, 9, 254, -1, 72, -1, 9, -1, 57, -1,
- 58, -1, 59, -1, 60, -1, 61, -1, 62, -1,
- 118, -1, 263, -1, -1, 250, -1, 250, 72, 251,
- -1, 251, -1, 255, -1, 248, 124, 257, 125, -1,
- 124, 259, 125, -1, 253, -1, 113, -1, 116, -1,
- 109, -1, 117, -1, 109, -1, 117, -1, 254, -1,
- 256, -1, 248, -1, 264, -1, -1, 258, 261, -1,
- -1, 260, 261, -1, 262, -1, 261, 138, 262, -1,
- 256, -1, 105, -1, 106, -1, 107, -1, 108, -1,
- 110, -1, 114, -1, 115, -1, 113, -1, 116, -1
+ 141, 0, -1, 142, -1, 143, -1, 142, 143, -1,
+ 163, -1, 148, -1, 165, -1, 160, -1, 112, 4,
+ -1, 144, -1, 145, -1, 4, -1, 147, 4, -1,
+ 98, 114, 4, -1, 8, 115, 73, 114, 4, -1,
+ 9, 114, 4, -1, 33, 114, 73, 265, -1, 7,
+ 114, -1, -1, 32, 149, 224, 110, 124, 265, -1,
+ -1, 32, 151, 115, 256, 124, 153, -1, -1, 32,
+ 152, 114, 256, 124, 153, -1, 114, -1, 117, -1,
+ 155, -1, 154, 155, -1, 213, 156, 4, -1, 112,
+ 4, -1, 121, -1, 120, -1, 163, -1, 150, -1,
+ 144, -1, -1, 157, 118, 159, -1, -1, 79, 158,
+ 187, 103, -1, 14, 257, -1, 31, 114, 73, 111,
+ -1, -1, 250, -1, -1, 104, 161, 162, 105, -1,
+ -1, 154, -1, 26, 164, 4, -1, 125, 258, 126,
+ -1, 125, 126, -1, -1, -1, -1, 28, 166, 253,
+ 167, 187, 4, 168, 169, 182, 74, -1, -1, 4,
+ -1, 169, 170, 4, -1, -1, 5, 171, 172, -1,
+ 224, 110, 196, -1, 96, 127, 180, 128, -1, 94,
+ 127, 114, 128, -1, 94, 127, 110, 128, -1, 97,
+ -1, 97, 127, 114, 128, -1, 92, -1, 92, 127,
+ 153, 128, -1, 101, -1, 101, 127, 153, 128, -1,
+ 99, 127, 114, 128, -1, 100, -1, 100, 127, 153,
+ 128, -1, -1, 180, 73, 181, -1, 181, -1, 53,
+ -1, 54, -1, 56, -1, 55, -1, 110, -1, 114,
+ -1, 125, 258, 126, -1, -1, 210, -1, -1, 76,
+ 4, 184, 191, 186, 190, 185, 193, 77, -1, -1,
+ 215, 4, -1, -1, 86, 257, 4, -1, -1, 188,
+ -1, 189, -1, 188, 189, -1, 88, -1, 89, -1,
+ 87, -1, 90, -1, 91, -1, 93, -1, 95, -1,
+ 173, -1, 174, -1, 175, -1, 176, -1, 177, -1,
+ 178, -1, 179, -1, 78, 257, 73, 257, 4, -1,
+ 78, 257, 4, -1, 84, 257, 4, -1, 85, 249,
+ 4, -1, 85, 114, 4, -1, 85, 249, 73, 257,
+ 4, -1, 85, 114, 73, 257, 4, -1, -1, 191,
+ 192, 4, -1, 11, 239, -1, -1, 193, 194, 4,
+ -1, 64, 249, 196, -1, -1, 30, 195, 224, 218,
+ -1, -1, 196, 197, -1, 18, -1, 19, -1, 20,
+ -1, 21, -1, 21, 127, 114, 128, -1, 21, 127,
+ 117, 128, -1, 102, -1, 25, -1, -1, 80, 4,
+ 199, 202, 81, -1, 206, -1, -1, 82, 4, 201,
+ 203, 83, -1, -1, 202, 4, -1, 202, 204, 4,
+ -1, -1, 203, 4, -1, 203, 205, 4, -1, 15,
+ 257, 240, -1, 16, 257, 240, -1, -1, 208, 127,
+ 207, 209, 128, -1, 65, -1, 67, -1, -1, 239,
+ -1, 114, 22, 257, -1, 209, 73, 239, -1, 209,
+ 73, 114, 22, 257, -1, 212, -1, 210, 212, -1,
+ -1, 211, 216, -1, 112, 4, -1, 121, -1, 120,
+ -1, 145, -1, 146, -1, -1, 214, -1, 214, 215,
+ -1, 215, -1, 103, -1, 213, 220, 4, -1, 1,
+ 4, -1, 218, -1, 217, 73, 218, -1, 110, 219,
+ -1, -1, 102, -1, 226, -1, 244, -1, -1, 30,
+ 221, 224, 217, -1, 31, 114, 73, 249, -1, 31,
+ 117, 73, 249, -1, -1, 32, 222, 224, 110, 124,
+ 265, -1, 150, -1, -1, 36, 223, 224, 110, 124,
+ 265, -1, 66, 236, -1, 10, 255, -1, 118, 250,
+ -1, 14, 257, -1, 236, -1, 183, -1, 198, -1,
+ 200, -1, -1, 53, -1, 54, -1, 55, -1, 56,
+ -1, 110, -1, 249, 124, 257, -1, 249, 124, 228,
+ 257, -1, 249, 124, 257, 229, 257, -1, 249, 124,
+ 257, 125, 258, 126, -1, 249, 125, 258, 126, 124,
+ 257, -1, 249, 124, 129, 225, 125, 258, 126, -1,
+ 249, 124, 236, -1, -1, 127, 227, 243, 128, 124,
+ 235, 127, 238, 128, -1, 230, -1, 232, -1, 234,
+ -1, 249, 124, 14, -1, 130, -1, 131, -1, 132,
+ -1, 132, -1, 133, -1, 134, -1, 135, -1, 136,
+ -1, 45, -1, 69, -1, 123, -1, 58, -1, 59,
+ -1, 60, -1, 61, -1, 62, -1, 63, -1, 51,
+ -1, 52, -1, 70, -1, 71, -1, 72, -1, 57,
+ -1, 137, -1, 138, -1, 131, -1, -1, 68, 231,
+ 127, 243, 128, -1, 249, 233, 257, -1, 37, -1,
+ 38, -1, 39, -1, 40, -1, 47, -1, 46, -1,
+ 41, -1, 42, -1, 43, -1, 44, -1, 48, -1,
+ 49, -1, 50, -1, 249, 124, 118, 159, -1, 110,
+ -1, 114, -1, 117, -1, 249, -1, 249, 122, 254,
+ -1, 249, 122, 117, -1, 249, 122, 114, -1, 249,
+ 122, 249, -1, -1, 235, 237, 127, 238, 128, -1,
+ -1, 238, 73, 239, -1, 239, -1, 238, 73, 114,
+ 22, 257, -1, 257, 22, 257, -1, 114, 22, 257,
+ -1, 257, 240, -1, -1, 240, 241, -1, 17, -1,
+ 21, -1, 25, -1, 21, 127, 117, 128, -1, 21,
+ 127, 114, 128, -1, 249, 196, -1, 243, 73, 242,
+ -1, 243, 73, 114, 22, 249, -1, 242, -1, 114,
+ 22, 249, -1, -1, 246, -1, 245, -1, 13, 257,
+ 248, 257, 10, 255, -1, 13, 14, 257, 10, 255,
+ -1, 13, 257, 247, 255, -1, 12, 257, 247, 255,
+ -1, 12, 257, 248, 257, 10, 255, -1, 12, 14,
+ 257, 10, 255, -1, 73, -1, 10, -1, 58, -1,
+ 59, -1, 60, -1, 61, -1, 62, -1, 63, -1,
+ 119, -1, 264, -1, -1, 251, -1, 251, 73, 252,
+ -1, 252, -1, 256, -1, 249, 125, 258, 126, -1,
+ 125, 260, 126, -1, 254, -1, 114, -1, 117, -1,
+ 110, -1, 118, -1, 110, -1, 118, -1, 255, -1,
+ 257, -1, 249, -1, 265, -1, -1, 259, 262, -1,
+ -1, 261, 262, -1, 263, -1, 262, 139, 263, -1,
+ 257, -1, 106, -1, 107, -1, 108, -1, 109, -1,
+ 111, -1, 115, -1, 116, -1, 114, -1, 117, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -1918,8 +1920,8 @@
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "LOW_PREC", "'\\n'", "PARAM", "HLL",
- "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
+ "$end", "error", "$undefined", "LOW_PREC", "'\\n'", "PARAM", "SOL",
+ "HLL", "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
"SET_RETURN", "SET_YIELD", "ADV_FLAT", "ADV_SLURPY", "ADV_OPTIONAL",
"ADV_OPT_FLAG", "ADV_NAMED", "ADV_ARROW", "NEW", "ADV_INVOCANT",
"ADV_CALL_SIG", "NAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL",
@@ -1984,48 +1986,48 @@
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 61, 91, 93, 40, 41, 110, 33,
- 126, 45, 43, 42, 47, 37, 38, 124, 59
+ 374, 375, 376, 377, 61, 91, 93, 40, 41, 110,
+ 33, 126, 45, 43, 42, 47, 37, 38, 124, 59
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
- 0, 139, 140, 141, 141, 142, 142, 142, 142, 142,
- 142, 142, 142, 143, 143, 144, 144, 145, 146, 148,
- 147, 150, 149, 151, 149, 152, 152, 153, 153, 154,
- 154, 154, 154, 154, 154, 154, 156, 155, 157, 155,
- 155, 155, 155, 158, 160, 159, 161, 161, 162, 163,
- 163, 165, 166, 167, 164, 168, 168, 168, 170, 169,
- 171, 172, 173, 173, 174, 174, 175, 175, 176, 176,
- 177, 178, 178, 179, 179, 179, 180, 180, 180, 180,
- 180, 180, 180, 181, 181, 183, 182, 184, 184, 185,
- 185, 186, 186, 187, 187, 188, 188, 188, 188, 188,
- 188, 188, 188, 188, 188, 188, 188, 188, 188, 189,
- 189, 189, 189, 189, 189, 189, 190, 190, 191, 192,
- 192, 193, 194, 193, 195, 195, 196, 196, 196, 196,
- 196, 196, 196, 196, 198, 197, 197, 200, 199, 201,
- 201, 201, 202, 202, 202, 203, 204, 206, 205, 207,
- 207, 208, 208, 208, 208, 208, 209, 209, 210, 211,
- 211, 211, 211, 211, 211, 212, 212, 213, 213, 214,
- 215, 215, 216, 216, 217, 218, 218, 219, 219, 220,
- 219, 219, 219, 221, 219, 219, 222, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 223, 223, 223,
- 223, 224, 225, 225, 225, 225, 225, 225, 225, 226,
- 225, 225, 225, 225, 225, 227, 227, 227, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 230, 229, 231, 232, 232, 232, 232, 232, 232,
- 232, 232, 232, 232, 232, 232, 232, 233, 234, 234,
- 234, 234, 234, 234, 234, 234, 236, 235, 237, 237,
- 237, 237, 237, 237, 238, 239, 239, 240, 240, 240,
- 240, 240, 241, 242, 242, 242, 242, 242, 243, 243,
- 244, 244, 244, 245, 245, 245, 246, 246, 247, 247,
- 247, 247, 247, 247, 248, 248, 249, 249, 250, 250,
- 251, 251, 251, 252, 252, 252, 253, 253, 254, 254,
- 255, 255, 256, 256, 258, 257, 260, 259, 261, 261,
- 262, 263, 263, 263, 263, 263, 264, 264, 264, 264
+ 0, 140, 141, 142, 142, 143, 143, 143, 143, 143,
+ 143, 143, 143, 144, 144, 145, 145, 146, 147, 149,
+ 148, 151, 150, 152, 150, 153, 153, 154, 154, 155,
+ 155, 155, 155, 155, 155, 155, 157, 156, 158, 156,
+ 156, 156, 156, 159, 161, 160, 162, 162, 163, 164,
+ 164, 166, 167, 168, 165, 169, 169, 169, 171, 170,
+ 172, 173, 174, 174, 175, 175, 176, 176, 177, 177,
+ 178, 179, 179, 180, 180, 180, 181, 181, 181, 181,
+ 181, 181, 181, 182, 182, 184, 183, 185, 185, 186,
+ 186, 187, 187, 188, 188, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 190,
+ 190, 190, 190, 190, 190, 190, 191, 191, 192, 193,
+ 193, 194, 195, 194, 196, 196, 197, 197, 197, 197,
+ 197, 197, 197, 197, 199, 198, 198, 201, 200, 202,
+ 202, 202, 203, 203, 203, 204, 205, 207, 206, 208,
+ 208, 209, 209, 209, 209, 209, 210, 210, 211, 212,
+ 212, 212, 212, 212, 212, 213, 213, 214, 214, 215,
+ 216, 216, 217, 217, 218, 219, 219, 220, 220, 221,
+ 220, 220, 220, 222, 220, 220, 223, 220, 220, 220,
+ 220, 220, 220, 220, 220, 220, 220, 224, 224, 224,
+ 224, 225, 226, 226, 226, 226, 226, 226, 226, 227,
+ 226, 226, 226, 226, 226, 228, 228, 228, 229, 229,
+ 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
+ 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
+ 229, 231, 230, 232, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 234, 235, 235,
+ 235, 235, 235, 235, 235, 235, 237, 236, 238, 238,
+ 238, 238, 238, 238, 239, 240, 240, 241, 241, 241,
+ 241, 241, 242, 243, 243, 243, 243, 243, 244, 244,
+ 245, 245, 245, 246, 246, 246, 247, 247, 248, 248,
+ 248, 248, 248, 248, 249, 249, 250, 250, 251, 251,
+ 252, 252, 252, 253, 253, 253, 254, 254, 255, 255,
+ 256, 256, 257, 257, 259, 258, 261, 260, 262, 262,
+ 263, 264, 264, 264, 264, 264, 265, 265, 265, 265
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -2152,79 +2154,79 @@
#define YYPACT_NINF -424
static const yytype_int16 yypact[] =
{
- 219, -424, -86, -55, -62, -58, -424, -424, -8, -424,
- 82, 163, 219, -424, -424, -424, 169, -424, -424, -424,
- -424, -424, 93, 171, 58, 184, 95, 166, 188, 70,
- -424, -424, -424, -424, 90, -424, -424, 81, 439, -424,
+ 212, -424, -90, -80, -21, -28, -424, -424, 9, -424,
+ 118, 151, 212, -424, -424, -424, 149, -424, -424, -424,
+ -424, -424, 93, 153, 32, 163, 154, 125, 171, 180,
+ -424, -424, -424, -424, 68, -424, -424, 66, 441, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- 100, -424, 109, -424, 220, -424, -424, -424, -424, 160,
- -424, 129, -424, 67, 133, -424, 232, -424, -424, -424,
+ 94, -424, 89, -424, 204, -424, -424, -424, -424, 247,
+ -424, 104, -424, 13, 108, -424, 209, -424, -424, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- 99, -424, -424, -424, 421, 117, 131, 135, -424, -424,
- -424, 439, 136, -424, 250, 134, -424, -424, 439, -424,
- -424, -424, -424, -424, 130, -424, 132, -424, 137, 142,
- 146, 147, 149, -424, -424, -424, -424, -424, -424, -424,
- 251, 421, -424, 115, 425, 425, -424, 204, 421, -424,
- 350, -424, 48, -19, 161, 164, 165, 48, 48, -424,
- -424, -424, -424, -424, -424, 159, -424, 177, 182, 200,
- -424, -424, 179, -424, 234, -424, -424, -424, -424, 180,
- 181, 183, -424, -424, -424, -424, -424, -424, -424, -64,
- -424, 186, 190, 191, 192, 300, 48, 48, -424, -424,
- 196, 439, -424, 350, -424, -424, -424, 198, 161, -424,
- -424, -424, -424, -424, -424, 49, -424, -424, -424, 99,
- 199, -424, -424, -424, -424, 213, 323, -424, -424, -424,
- -424, 324, 256, 60, 8, -424, -424, 166, 259, -424,
- -424, -424, -424, 328, 230, -424, -424, 224, 115, -424,
- -67, 253, 270, 439, -424, 71, 42, -424, -424, 509,
- -424, -424, 330, 337, 338, -424, -424, -424, 350, -424,
- -424, -424, -424, -424, -424, 223, 341, -424, -424, -424,
- -424, -424, -424, -424, -424, -424, 405, -424, -424, -424,
- 439, 229, 439, 229, -424, 166, 278, 290, 166, 166,
- -424, 243, 244, -424, -424, -424, -424, 523, -424, -424,
- 246, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- -424, -424, -424, -424, 379, 22, -424, 439, 5, 364,
- -424, -424, -424, -424, -424, -424, -424, -424, -67, 439,
- 365, -67, 439, 272, 247, 247, 280, 281, 523, -424,
- -424, -424, 358, -424, -39, -424, 453, 467, -424, -424,
- -424, -424, -424, 261, 265, 350, 283, -424, -424, -424,
- 439, -424, 28, 369, 268, -424, -424, -424, -424, 271,
- -424, -424, -424, -67, -424, 385, -67, -424, 389, 298,
- 329, -424, -424, -424, 282, 284, -36, 0, 27, 11,
- 247, 532, 285, 5, 382, -27, -424, -424, 388, -24,
- -424, 393, -424, -424, 293, -424, -424, -424, -424, -424,
+ 75, -424, -424, -424, 483, 91, 103, 114, -424, -424,
+ -424, 441, 115, -424, 226, 113, -424, -424, 441, -424,
+ -424, -424, -424, -424, 106, -424, 109, -424, 119, 121,
+ 122, 123, 124, -424, -424, -424, -424, -424, -424, -424,
+ 231, 483, -424, 74, 255, 255, -424, 172, 483, -424,
+ 426, -424, -40, -69, 387, 141, 142, -40, -40, -424,
+ -424, -424, -424, -424, -424, 133, -424, 134, 152, 159,
+ -424, -424, 145, -424, 193, -424, -424, -424, -424, 146,
+ 147, 148, -424, -424, -424, -424, -424, -424, -424, -58,
+ -424, 160, 161, 162, 174, 273, -40, -40, -424, -424,
+ 156, 441, -424, 426, -424, -424, -424, 165, 387, -424,
+ -424, -424, -424, -424, -424, 29, -424, -424, -424, 75,
+ 177, -424, -424, -424, -424, 166, 283, -424, -424, -424,
+ -424, 300, 232, 34, 18, -424, -424, 125, 234, -424,
+ -424, -424, -424, 304, 229, -424, -424, 203, 74, -424,
+ -85, 272, 320, 441, -424, -7, 24, -424, -424, 535,
+ -424, -424, 313, 314, 315, -424, -424, -424, 426, -424,
+ -424, -424, -424, -424, -424, 194, 318, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, 444, -424, -424, -424,
+ 441, 164, 441, 164, -424, 125, 250, 253, 125, 125,
+ -424, 205, 215, -424, -424, -424, -424, 549, -424, -424,
+ 227, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, 396, 54, -424, 441, 38, 322,
+ -424, -424, -424, -424, -424, -424, -424, -424, -85, 441,
+ 339, -85, 441, 243, 222, 222, 245, 248, 549, -424,
+ -424, -424, 335, -424, -47, -424, 479, 493, -424, -424,
+ -424, -424, -424, 233, 249, 426, 265, -424, -424, -424,
+ 441, -424, -18, 393, 251, -424, -424, -424, -424, 257,
+ -424, -424, -424, -85, -424, 375, -85, -424, 380, 290,
+ 321, -424, -424, -424, 269, 274, -37, 2, 8, 4,
+ 222, 558, 275, 38, 379, -33, -424, -424, 381, -27,
+ -424, 383, -424, -424, 281, -424, -424, -424, -424, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- 439, 301, 85, -424, -67, -424, -67, -424, -424, 272,
- 115, 115, -424, 439, 439, -37, 402, -424, 439, -424,
- 417, -424, 439, -424, 419, -424, 413, -424, 509, 439,
- 481, -424, 162, 439, 495, -424, 439, -424, 310, -424,
- 439, 309, 322, -424, -424, -424, -424, -424, -424, 457,
- 439, 439, 541, 133, -424, -424, -424, -424, -424, 247,
- 336, -424, 450, -424, -424, 347, -424, -424, -424, 455,
- -424, -424, 352, -424, -424, -424, -424, -424, 10, 475,
- 12, 26, -424, 477, 162, 162, -424, 467, 439, 86,
- 439, -424, -424, 439, -424, -424, 439, -424, 439, 94,
- -424, -23, -424, 355, 356, -424, 486, 490, 494, -424,
- 247, -424, 514, -424, -424, -424, -424, -424, -424, 166,
- -424, -424, 272, 5, -424
+ 441, 284, 84, -424, -85, -424, -85, -424, -424, 243,
+ 74, 74, -424, 441, 441, -12, 403, -424, 441, -424,
+ 405, -424, 441, -424, 409, -424, 392, -424, 535, 441,
+ 507, -424, 131, 441, 521, -424, 441, -424, 271, -424,
+ 441, 289, 291, -424, -424, -424, -424, -424, -424, 416,
+ 441, 441, 567, 108, -424, -424, -424, -424, -424, 222,
+ 294, -424, 401, -424, -424, 297, -424, -424, -424, 408,
+ -424, -424, 299, -424, -424, -424, -424, -424, 5, 442,
+ 6, 17, -424, 443, 131, 131, -424, 493, 441, 85,
+ 441, -424, -424, 441, -424, -424, 441, -424, 441, 41,
+ -424, -22, -424, 329, 330, -424, 445, 455, 456, -424,
+ 222, -424, 457, -424, -424, -424, -424, -424, -424, 125,
+ -424, -424, 243, 38, -424
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -424, -424, -424, 510, -1, -161, -424, -424, -424, -424,
- 299, -424, -424, -68, -424, 465, -424, -424, -424, 203,
- -424, -424, -424, 3, -424, -424, -424, -424, -424, -424,
+ -424, -424, -424, 436, 10, -166, -424, -424, -424, -424,
+ 242, -424, -424, -62, -424, 412, -424, -424, -424, 128,
+ -424, -424, -424, 23, -424, -424, -424, -424, -424, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- -424, 339, -424, -424, -424, -424, -424, 397, -424, 415,
+ -424, 279, -424, -424, -424, -424, -424, 340, -424, 353,
-424, -424, -424, -424, -424, -424, -330, -424, -424, -424,
-424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
- -424, -424, 343, 348, -424, -63, -424, -424, -423, -424,
+ -424, -424, 263, 282, -424, -63, -424, -424, -423, -424,
-424, -424, -424, -424, -214, -424, -424, -424, -424, -424,
- -424, -424, -424, -424, -424, 89, -226, -424, 43, -292,
- -329, -424, 170, 236, -424, -424, -424, 292, 297, -128,
- 331, -424, 395, -424, 286, -219, -47, -38, -164, -424,
- -424, -424, 403, 478, -424, -116
+ -424, -424, -424, -424, -424, 31, -225, -424, -30, -320,
+ -344, -424, 117, 167, -424, -424, -424, 216, 235, -128,
+ 252, -424, 316, -424, 207, -219, -8, -38, -164, -424,
+ -424, -424, 328, 419, -424, -116
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -2234,203 +2236,209 @@
#define YYTABLE_NINF -262
static const yytype_int16 yytable[] =
{
- 79, 96, 152, 227, 187, 383, 465, 141, 188, 223,
- 433, 269, -165, 280, 512, 441, 515, -165, 200, -165,
- -165, -165, 356, 357, 358, 359, 442, 21, 57, 360,
- 517, 437, 62, 381, 209, 342, 381, -165, -165, -165,
- 470, 438, 142, -165, 386, 450, 471, 472, 454, 454,
- 143, 23, 209, 126, 204, 152, 3, 4, 57, 22,
- 79, 323, 62, 189, 326, 327, 24, 3, 4, 173,
- 174, -42, -165, -165, -165, -165, 2, 145, 147, 351,
- 91, 205, 513, -165, 516, 434, 30, -165, 382, -165,
- 160, 432, 205, 443, 161, 5, 266, 92, 518, 364,
- 451, 52, 367, 455, 533, 28, 361, 439, 196, 197,
- 53, 281, 268, -165, -165, -165, -165, -165, -165, 544,
- 152, -165, -83, 529, -165, -165, -165, 68, 69, 70,
- 71, 245, 72, -84, -165, 343, 74, 75, 344, 345,
- 77, 468, 354, 79, 423, 93, 504, 425, 505, 304,
- 346, 347, 348, 349, -261, -23, -21, 530, 483, 335,
- 206, 157, 490, 31, 158, 34, 2, 8, 207, 208,
- 531, 206, 53, 33, -46, 35, 340, 352, 484, 207,
- 208, 54, 485, 36, 276, 5, 486, 277, 39, 55,
- 56, 52, 51, 271, 273, 274, 372, 373, 461, 523,
- 335, 462, 524, 66, 40, 463, 67, 464, 41, 85,
- 543, 42, 43, 162, 163, 164, 165, 152, 46, 47,
- 48, 49, -23, 1, 88, 2, 3, 4, 73, 74,
- 75, 76, 309, 90, 320, 53, 97, 98, 310, 230,
- 123, 231, 232, 233, 5, 124, 6, 458, 125, 127,
- 7, 130, 445, 335, 129, 139, 132, 8, 133, 234,
- 235, 236, 53, 134, -47, 237, 270, 353, 135, 355,
- 166, 54, 136, 137, 167, 138, 148, 171, 172, 55,
- 56, 365, 176, 272, 368, 168, 311, 312, 313, 314,
- 315, 316, 178, 492, 238, 239, 240, 241, 387, 391,
- 177, 317, 179, 182, 194, 242, 183, 184, 185, 243,
- 186, 244, 395, 190, 466, 467, 8, 191, 192, 193,
- 281, 198, 9, 202, 216, 542, 218, 219, 220, 221,
- 10, 228, 229, 267, 283, 68, 69, 70, 71, 245,
- 72, 284, 285, 246, 501, 289, 247, 248, 77, 288,
- 324, 506, 68, 69, 70, 71, 249, 72, 68, 69,
- 70, 71, 325, 72, 304, 77, 73, 74, 75, 76,
- 328, 77, 337, 363, 366, 68, 69, 70, 71, 380,
- 72, 369, 459, 73, 74, 75, 76, -259, 77, 374,
- 375, -260, 393, 421, 424, 387, 469, 422, 426, 427,
- 475, 429, 540, 449, 477, 430, 474, 431, 448, 453,
- 503, 481, 387, 396, 456, 488, 387, 457, 491, 397,
- 398, 476, 494, 478, 460, 399, 400, 401, 402, 403,
- 404, 405, 498, 499, 479, 493, 495, 406, 407, 408,
- 409, 291, 292, 293, 294, 295, 296, 297, 298, 496,
- 299, 300, 301, 302, 303, 68, 69, 70, 71, 142,
- 72, 497, 507, 73, 74, 75, 76, 143, 77, 391,
- 522, 508, 525, 509, 150, 526, 510, 511, 527, 514,
- 528, 520, 534, 535, 68, 69, 70, 71, 40, 72,
- 536, 410, 338, 411, 537, 339, 43, 77, 538, 412,
- 413, 414, 415, 416, 417, 418, 419, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 541, 110,
- 111, 112, 32, 250, 89, 149, 304, 203, 305, 306,
- 68, 69, 70, 71, 142, 72, 140, 480, 73, 74,
- 75, 76, 143, 77, 68, 69, 70, 71, 392, 72,
- 521, 447, 73, 74, 75, 76, 222, 77, 68, 69,
- 70, 71, 224, 72, 376, 321, 384, 74, 75, 76,
- 322, 77, 68, 69, 70, 71, 131, 72, 201, 286,
- 388, 74, 75, 76, 199, 77, 68, 69, 70, 71,
- 341, 72, 0, 0, 482, 74, 75, 76, 0, 77,
- 68, 69, 70, 71, 0, 72, 0, 0, 489, 74,
- 75, 76, 0, 77, 68, 69, 70, 71, 245, 72,
- 0, 0, 246, 0, 0, 247, 0, 77, 68, 69,
- 70, 71, 0, 72, 0, 0, 332, 68, 69, 70,
- 71, 77, 72, 0, 0, 446, 68, 69, 70, 71,
- 77, 72, 0, 0, 500, 0, 0, 0, 0, 77
+ 79, 96, 152, 227, 187, 383, 465, 141, 441, 512,
+ 515, 269, 437, 433, 280, 188, 386, -42, 200, 223,
+ 442, 517, -165, 438, 21, 142, 381, 91, -165, 209,
+ -165, -165, -165, 143, 204, 22, 381, 3, 4, 57,
+ 450, 160, 3, 4, 92, 161, 454, 209, -165, -165,
+ -165, 454, 62, 126, -165, 152, 356, 357, 358, 359,
+ 79, 323, 205, 360, 326, 327, 470, 205, 342, 57,
+ 189, 529, 471, 472, 157, 173, 174, 158, 513, 516,
+ 351, 382, 62, -165, -165, -165, -165, 443, 434, 439,
+ 518, 432, 93, 23, -165, 451, 266, 24, -165, 364,
+ -165, 455, 367, -83, 304, 530, 533, 276, -84, -261,
+ 277, 281, 268, 468, 196, 197, 145, 147, 531, 544,
+ 152, 53, 30, 28, -165, -165, -165, -165, -165, -165,
+ 483, 504, -165, 505, 490, -165, -165, -165, -23, -21,
+ 361, 206, 354, 79, 423, -165, 206, 425, 484, 207,
+ 208, 31, 485, 33, 207, 208, 486, 35, 36, 335,
+ 68, 69, 70, 71, 245, 72, 34, 39, 343, 74,
+ 75, 344, 345, 77, 310, 51, 340, 352, 46, 47,
+ 48, 49, 66, 346, 347, 348, 349, 2, 73, 74,
+ 75, 76, 67, 271, 273, 274, 372, 373, 461, 523,
+ 335, 462, 524, -23, 85, 463, 5, 464, 88, 90,
+ 543, 53, 52, 97, 98, 123, 1, 152, 124, 2,
+ 3, 4, 311, 312, 313, 314, 315, 316, 125, 127,
+ 129, 130, 309, 132, 320, 139, 133, 317, 5, 230,
+ 6, 231, 232, 233, 7, 148, 134, 458, 135, 136,
+ 137, 138, 445, 335, 2, 171, 172, 176, 177, 234,
+ 235, 236, 179, 178, 40, 237, 183, 353, 41, 355,
+ 182, 42, 43, 5, 184, 185, 186, 194, 8, 52,
+ 218, 365, 198, 53, 368, -46, 270, 219, 190, 191,
+ 192, 202, 54, 492, 238, 239, 240, 241, 387, 391,
+ 55, 56, 193, 216, 220, 242, 221, 228, 229, 243,
+ 8, 244, 395, 267, 466, 467, 9, 283, 284, 285,
+ 281, 288, 289, 324, 10, 542, 325, 304, 68, 69,
+ 70, 71, 363, 72, 272, 68, 69, 70, 71, 245,
+ 72, 77, 328, 246, 501, 8, 247, 248, 77, 366,
+ 53, 506, -47, 369, 337, 374, 249, 380, 375, 54,
+ -259, 68, 69, 70, 71, 142, 72, 55, 56, 73,
+ 74, 75, 76, 143, 77, 393, -260, 421, 68, 69,
+ 70, 71, 459, 72, 422, 424, 73, 74, 75, 76,
+ 426, 77, 427, 430, 429, 387, 469, 493, 431, 448,
+ 475, 449, 540, 453, 477, 456, 457, 474, 460, 476,
+ 503, 481, 387, 478, 479, 488, 387, 495, 491, 496,
+ 497, 507, 494, 508, 509, 511, 68, 69, 70, 71,
+ 510, 72, 498, 499, 73, 74, 75, 76, 396, 77,
+ 162, 163, 164, 165, 397, 398, 514, 520, 32, 536,
+ 399, 400, 401, 402, 403, 404, 405, 534, 535, 537,
+ 538, 541, 406, 407, 408, 409, 250, 203, 149, 391,
+ 522, 89, 525, 392, 140, 526, 222, 521, 527, 480,
+ 528, 291, 292, 293, 294, 295, 296, 297, 298, 321,
+ 299, 300, 301, 302, 303, 376, 224, 166, 447, 201,
+ 286, 167, 68, 69, 70, 71, 40, 72, 322, 199,
+ 338, 341, 168, 339, 43, 77, 410, 131, 411, 0,
+ 0, 0, 0, 0, 412, 413, 414, 415, 416, 417,
+ 418, 419, 68, 69, 70, 71, 142, 72, 0, 0,
+ 73, 74, 75, 76, 143, 77, 0, 68, 69, 70,
+ 71, 150, 72, 0, 0, 73, 74, 75, 76, 0,
+ 77, 0, 0, 0, 0, 0, 304, 0, 305, 306,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 0, 110, 111, 112, 68, 69, 70, 71, 0,
+ 72, 0, 0, 384, 74, 75, 76, 0, 77, 68,
+ 69, 70, 71, 0, 72, 0, 0, 388, 74, 75,
+ 76, 0, 77, 68, 69, 70, 71, 0, 72, 0,
+ 0, 482, 74, 75, 76, 0, 77, 68, 69, 70,
+ 71, 0, 72, 0, 0, 489, 74, 75, 76, 0,
+ 77, 68, 69, 70, 71, 245, 72, 0, 0, 246,
+ 0, 0, 247, 0, 77, 68, 69, 70, 71, 0,
+ 72, 0, 0, 332, 68, 69, 70, 71, 77, 72,
+ 0, 0, 446, 68, 69, 70, 71, 77, 72, 0,
+ 0, 500, 0, 0, 0, 0, 77
};
static const yytype_int16 yycheck[] =
{
- 38, 64, 130, 217, 168, 335, 429, 123, 72, 1,
- 10, 230, 4, 239, 4, 4, 4, 9, 182, 11,
- 12, 13, 17, 18, 19, 20, 15, 113, 29, 24,
- 4, 4, 29, 72, 195, 13, 72, 29, 30, 31,
- 77, 14, 109, 35, 336, 72, 83, 84, 72, 72,
- 117, 113, 213, 91, 5, 183, 7, 8, 59, 114,
- 98, 275, 59, 127, 278, 279, 124, 7, 8, 137,
- 138, 4, 64, 65, 66, 67, 6, 124, 125, 305,
- 13, 32, 72, 75, 72, 85, 4, 79, 127, 81,
- 109, 127, 32, 82, 113, 25, 224, 30, 72, 318,
- 127, 31, 321, 127, 127, 113, 101, 80, 176, 177,
- 102, 239, 228, 105, 106, 107, 108, 109, 110, 542,
- 248, 113, 73, 29, 116, 117, 118, 105, 106, 107,
- 108, 109, 110, 73, 126, 113, 114, 115, 116, 117,
- 118, 433, 306, 181, 363, 78, 475, 366, 477, 121,
- 128, 129, 130, 131, 126, 113, 114, 63, 450, 287,
- 111, 113, 454, 0, 116, 72, 6, 97, 119, 120,
- 76, 111, 102, 4, 104, 4, 304, 305, 16, 119,
- 120, 111, 20, 125, 113, 25, 24, 116, 4, 119,
- 120, 31, 4, 231, 232, 233, 324, 325, 113, 113,
- 328, 116, 116, 113, 109, 424, 125, 426, 113, 109,
- 540, 116, 117, 52, 53, 54, 55, 345, 52, 53,
- 54, 55, 113, 4, 4, 6, 7, 8, 113, 114,
- 115, 116, 270, 104, 272, 102, 4, 138, 9, 9,
- 123, 11, 12, 13, 25, 114, 27, 411, 113, 113,
- 31, 117, 380, 381, 4, 4, 126, 97, 126, 29,
- 30, 31, 102, 126, 104, 35, 13, 305, 126, 307,
- 109, 111, 126, 126, 113, 126, 72, 113, 113, 119,
- 120, 319, 123, 13, 322, 124, 57, 58, 59, 60,
- 61, 62, 110, 457, 64, 65, 66, 67, 336, 337,
- 123, 72, 102, 124, 4, 75, 72, 127, 127, 79,
- 127, 81, 350, 127, 430, 431, 97, 127, 127, 127,
- 448, 125, 103, 125, 125, 539, 113, 4, 4, 73,
- 111, 72, 4, 109, 4, 105, 106, 107, 108, 109,
- 110, 4, 4, 113, 472, 4, 116, 117, 118, 126,
- 72, 479, 105, 106, 107, 108, 126, 110, 105, 106,
- 107, 108, 72, 110, 121, 118, 113, 114, 115, 116,
- 126, 118, 126, 9, 9, 105, 106, 107, 108, 21,
- 110, 109, 420, 113, 114, 115, 116, 126, 118, 109,
- 109, 126, 109, 125, 9, 433, 434, 126, 9, 101,
- 438, 72, 530, 21, 442, 123, 4, 123, 123, 21,
- 473, 449, 450, 44, 21, 453, 454, 124, 456, 50,
- 51, 4, 460, 4, 123, 56, 57, 58, 59, 60,
- 61, 62, 470, 471, 21, 125, 127, 68, 69, 70,
- 71, 36, 37, 38, 39, 40, 41, 42, 43, 127,
- 45, 46, 47, 48, 49, 105, 106, 107, 108, 109,
- 110, 4, 126, 113, 114, 115, 116, 117, 118, 507,
- 508, 21, 510, 126, 124, 513, 21, 125, 516, 4,
- 518, 4, 127, 127, 105, 106, 107, 108, 109, 110,
- 4, 122, 113, 124, 4, 116, 117, 118, 4, 130,
- 131, 132, 133, 134, 135, 136, 137, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 4, 98,
- 99, 100, 12, 224, 59, 128, 121, 188, 123, 124,
- 105, 106, 107, 108, 109, 110, 121, 448, 113, 114,
- 115, 116, 117, 118, 105, 106, 107, 108, 345, 110,
- 507, 381, 113, 114, 115, 116, 213, 118, 105, 106,
- 107, 108, 214, 110, 328, 273, 113, 114, 115, 116,
- 273, 118, 105, 106, 107, 108, 98, 110, 183, 248,
- 113, 114, 115, 116, 181, 118, 105, 106, 107, 108,
- 304, 110, -1, -1, 113, 114, 115, 116, -1, 118,
- 105, 106, 107, 108, -1, 110, -1, -1, 113, 114,
- 115, 116, -1, 118, 105, 106, 107, 108, 109, 110,
- -1, -1, 113, -1, -1, 116, -1, 118, 105, 106,
- 107, 108, -1, 110, -1, -1, 113, 105, 106, 107,
- 108, 118, 110, -1, -1, 113, 105, 106, 107, 108,
- 118, 110, -1, -1, 113, -1, -1, -1, -1, 118
+ 38, 64, 130, 217, 168, 335, 429, 123, 4, 4,
+ 4, 230, 4, 11, 239, 73, 336, 4, 182, 1,
+ 16, 4, 4, 15, 114, 110, 73, 14, 10, 195,
+ 12, 13, 14, 118, 5, 115, 73, 8, 9, 29,
+ 73, 110, 8, 9, 31, 114, 73, 213, 30, 31,
+ 32, 73, 29, 91, 36, 183, 18, 19, 20, 21,
+ 98, 275, 33, 25, 278, 279, 78, 33, 14, 59,
+ 128, 30, 84, 85, 114, 137, 138, 117, 73, 73,
+ 305, 128, 59, 65, 66, 67, 68, 83, 86, 81,
+ 73, 128, 79, 114, 76, 128, 224, 125, 80, 318,
+ 82, 128, 321, 74, 122, 64, 128, 114, 74, 127,
+ 117, 239, 228, 433, 176, 177, 124, 125, 77, 542,
+ 248, 103, 4, 114, 106, 107, 108, 109, 110, 111,
+ 450, 475, 114, 477, 454, 117, 118, 119, 114, 115,
+ 102, 112, 306, 181, 363, 127, 112, 366, 17, 120,
+ 121, 0, 21, 4, 120, 121, 25, 4, 126, 287,
+ 106, 107, 108, 109, 110, 111, 73, 4, 114, 115,
+ 116, 117, 118, 119, 10, 4, 304, 305, 53, 54,
+ 55, 56, 114, 129, 130, 131, 132, 7, 114, 115,
+ 116, 117, 126, 231, 232, 233, 324, 325, 114, 114,
+ 328, 117, 117, 114, 110, 424, 26, 426, 4, 105,
+ 540, 103, 32, 4, 139, 124, 4, 345, 115, 7,
+ 8, 9, 58, 59, 60, 61, 62, 63, 114, 114,
+ 4, 118, 270, 127, 272, 4, 127, 73, 26, 10,
+ 28, 12, 13, 14, 32, 73, 127, 411, 127, 127,
+ 127, 127, 380, 381, 7, 114, 114, 124, 124, 30,
+ 31, 32, 103, 111, 110, 36, 73, 305, 114, 307,
+ 125, 117, 118, 26, 128, 128, 128, 4, 98, 32,
+ 114, 319, 126, 103, 322, 105, 14, 4, 128, 128,
+ 128, 126, 112, 457, 65, 66, 67, 68, 336, 337,
+ 120, 121, 128, 126, 4, 76, 74, 73, 4, 80,
+ 98, 82, 350, 110, 430, 431, 104, 4, 4, 4,
+ 448, 127, 4, 73, 112, 539, 73, 122, 106, 107,
+ 108, 109, 10, 111, 14, 106, 107, 108, 109, 110,
+ 111, 119, 127, 114, 472, 98, 117, 118, 119, 10,
+ 103, 479, 105, 110, 127, 110, 127, 22, 110, 112,
+ 127, 106, 107, 108, 109, 110, 111, 120, 121, 114,
+ 115, 116, 117, 118, 119, 110, 127, 126, 106, 107,
+ 108, 109, 420, 111, 127, 10, 114, 115, 116, 117,
+ 10, 119, 102, 124, 73, 433, 434, 126, 124, 124,
+ 438, 22, 530, 22, 442, 22, 125, 4, 124, 4,
+ 473, 449, 450, 4, 22, 453, 454, 128, 456, 128,
+ 4, 127, 460, 22, 127, 126, 106, 107, 108, 109,
+ 22, 111, 470, 471, 114, 115, 116, 117, 45, 119,
+ 53, 54, 55, 56, 51, 52, 4, 4, 12, 4,
+ 57, 58, 59, 60, 61, 62, 63, 128, 128, 4,
+ 4, 4, 69, 70, 71, 72, 224, 188, 128, 507,
+ 508, 59, 510, 345, 121, 513, 213, 507, 516, 448,
+ 518, 37, 38, 39, 40, 41, 42, 43, 44, 273,
+ 46, 47, 48, 49, 50, 328, 214, 110, 381, 183,
+ 248, 114, 106, 107, 108, 109, 110, 111, 273, 181,
+ 114, 304, 125, 117, 118, 119, 123, 98, 125, -1,
+ -1, -1, -1, -1, 131, 132, 133, 134, 135, 136,
+ 137, 138, 106, 107, 108, 109, 110, 111, -1, -1,
+ 114, 115, 116, 117, 118, 119, -1, 106, 107, 108,
+ 109, 125, 111, -1, -1, 114, 115, 116, 117, -1,
+ 119, -1, -1, -1, -1, -1, 122, -1, 124, 125,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, -1, 99, 100, 101, 106, 107, 108, 109, -1,
+ 111, -1, -1, 114, 115, 116, 117, -1, 119, 106,
+ 107, 108, 109, -1, 111, -1, -1, 114, 115, 116,
+ 117, -1, 119, 106, 107, 108, 109, -1, 111, -1,
+ -1, 114, 115, 116, 117, -1, 119, 106, 107, 108,
+ 109, -1, 111, -1, -1, 114, 115, 116, 117, -1,
+ 119, 106, 107, 108, 109, 110, 111, -1, -1, 114,
+ -1, -1, 117, -1, 119, 106, 107, 108, 109, -1,
+ 111, -1, -1, 114, 106, 107, 108, 109, 119, 111,
+ -1, -1, 114, 106, 107, 108, 109, 119, 111, -1,
+ -1, 114, -1, -1, -1, -1, 119
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint16 yystos[] =
{
- 0, 4, 6, 7, 8, 25, 27, 31, 97, 103,
- 111, 140, 141, 142, 143, 144, 146, 147, 159, 162,
- 164, 113, 114, 113, 124, 163, 165, 148, 113, 160,
- 4, 0, 142, 4, 72, 4, 125, 257, 258, 4,
- 109, 113, 116, 117, 252, 253, 52, 53, 54, 55,
- 223, 4, 31, 102, 111, 119, 120, 143, 149, 153,
- 154, 161, 162, 212, 213, 214, 113, 125, 105, 106,
- 107, 108, 110, 113, 114, 115, 116, 118, 248, 256,
- 261, 262, 263, 264, 166, 109, 150, 151, 4, 154,
- 104, 13, 30, 78, 155, 156, 214, 4, 138, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 98, 99, 100, 172, 173, 174, 175, 176, 177, 178,
- 186, 187, 188, 123, 114, 113, 256, 113, 157, 4,
- 117, 262, 126, 126, 126, 126, 126, 126, 126, 4,
- 188, 264, 109, 117, 254, 255, 256, 255, 72, 186,
- 124, 158, 248, 249, 250, 251, 255, 113, 116, 152,
- 109, 113, 52, 53, 54, 55, 109, 113, 124, 179,
- 180, 113, 113, 152, 152, 167, 123, 123, 110, 102,
- 259, 260, 124, 72, 127, 127, 127, 257, 72, 127,
- 127, 127, 127, 127, 4, 168, 152, 152, 125, 261,
- 257, 251, 125, 180, 5, 32, 111, 119, 120, 144,
- 145, 169, 181, 209, 210, 211, 125, 170, 113, 4,
- 4, 73, 211, 1, 212, 215, 171, 223, 72, 4,
- 9, 11, 12, 13, 29, 30, 31, 35, 64, 65,
- 66, 67, 75, 79, 81, 109, 113, 116, 117, 126,
- 149, 182, 197, 199, 205, 207, 219, 225, 229, 231,
- 233, 234, 235, 243, 244, 245, 248, 109, 264, 254,
- 13, 256, 13, 256, 256, 220, 113, 116, 221, 222,
- 235, 248, 230, 4, 4, 4, 249, 226, 126, 4,
- 236, 36, 37, 38, 39, 40, 41, 42, 43, 45,
- 46, 47, 48, 49, 121, 123, 124, 232, 195, 256,
- 9, 57, 58, 59, 60, 61, 62, 72, 246, 247,
- 256, 246, 247, 223, 72, 72, 223, 223, 126, 183,
- 198, 200, 113, 241, 242, 248, 206, 126, 113, 116,
- 248, 253, 13, 113, 116, 117, 128, 129, 130, 131,
- 227, 235, 248, 256, 257, 256, 17, 18, 19, 20,
- 24, 101, 196, 9, 254, 256, 9, 254, 256, 109,
- 216, 217, 248, 248, 109, 109, 242, 190, 201, 202,
- 21, 72, 127, 195, 113, 208, 238, 256, 113, 237,
- 238, 256, 158, 109, 224, 256, 44, 50, 51, 56,
- 57, 58, 59, 60, 61, 62, 68, 69, 70, 71,
- 122, 124, 130, 131, 132, 133, 134, 135, 136, 137,
- 228, 125, 126, 254, 9, 254, 9, 101, 218, 72,
- 123, 123, 127, 10, 85, 185, 191, 4, 14, 80,
- 203, 4, 15, 82, 204, 248, 113, 241, 123, 21,
- 72, 127, 239, 21, 72, 127, 21, 124, 257, 256,
- 123, 113, 116, 254, 254, 217, 264, 264, 238, 256,
- 77, 83, 84, 189, 4, 256, 4, 256, 4, 21,
- 234, 256, 113, 238, 16, 20, 24, 240, 256, 113,
- 238, 256, 257, 125, 256, 127, 127, 4, 256, 256,
- 113, 248, 184, 214, 239, 239, 248, 126, 21, 126,
- 21, 125, 4, 72, 4, 4, 72, 4, 72, 192,
- 4, 237, 256, 113, 116, 256, 256, 256, 256, 29,
- 63, 76, 193, 127, 127, 127, 4, 4, 4, 194,
- 248, 4, 223, 195, 217
+ 0, 4, 7, 8, 9, 26, 28, 32, 98, 104,
+ 112, 141, 142, 143, 144, 145, 147, 148, 160, 163,
+ 165, 114, 115, 114, 125, 164, 166, 149, 114, 161,
+ 4, 0, 143, 4, 73, 4, 126, 258, 259, 4,
+ 110, 114, 117, 118, 253, 254, 53, 54, 55, 56,
+ 224, 4, 32, 103, 112, 120, 121, 144, 150, 154,
+ 155, 162, 163, 213, 214, 215, 114, 126, 106, 107,
+ 108, 109, 111, 114, 115, 116, 117, 119, 249, 257,
+ 262, 263, 264, 265, 167, 110, 151, 152, 4, 155,
+ 105, 14, 31, 79, 156, 157, 215, 4, 139, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 99, 100, 101, 173, 174, 175, 176, 177, 178, 179,
+ 187, 188, 189, 124, 115, 114, 257, 114, 158, 4,
+ 118, 263, 127, 127, 127, 127, 127, 127, 127, 4,
+ 189, 265, 110, 118, 255, 256, 257, 256, 73, 187,
+ 125, 159, 249, 250, 251, 252, 256, 114, 117, 153,
+ 110, 114, 53, 54, 55, 56, 110, 114, 125, 180,
+ 181, 114, 114, 153, 153, 168, 124, 124, 111, 103,
+ 260, 261, 125, 73, 128, 128, 128, 258, 73, 128,
+ 128, 128, 128, 128, 4, 169, 153, 153, 126, 262,
+ 258, 252, 126, 181, 5, 33, 112, 120, 121, 145,
+ 146, 170, 182, 210, 211, 212, 126, 171, 114, 4,
+ 4, 74, 212, 1, 213, 216, 172, 224, 73, 4,
+ 10, 12, 13, 14, 30, 31, 32, 36, 65, 66,
+ 67, 68, 76, 80, 82, 110, 114, 117, 118, 127,
+ 150, 183, 198, 200, 206, 208, 220, 226, 230, 232,
+ 234, 235, 236, 244, 245, 246, 249, 110, 265, 255,
+ 14, 257, 14, 257, 257, 221, 114, 117, 222, 223,
+ 236, 249, 231, 4, 4, 4, 250, 227, 127, 4,
+ 237, 37, 38, 39, 40, 41, 42, 43, 44, 46,
+ 47, 48, 49, 50, 122, 124, 125, 233, 196, 257,
+ 10, 58, 59, 60, 61, 62, 63, 73, 247, 248,
+ 257, 247, 248, 224, 73, 73, 224, 224, 127, 184,
+ 199, 201, 114, 242, 243, 249, 207, 127, 114, 117,
+ 249, 254, 14, 114, 117, 118, 129, 130, 131, 132,
+ 228, 236, 249, 257, 258, 257, 18, 19, 20, 21,
+ 25, 102, 197, 10, 255, 257, 10, 255, 257, 110,
+ 217, 218, 249, 249, 110, 110, 243, 191, 202, 203,
+ 22, 73, 128, 196, 114, 209, 239, 257, 114, 238,
+ 239, 257, 159, 110, 225, 257, 45, 51, 52, 57,
+ 58, 59, 60, 61, 62, 63, 69, 70, 71, 72,
+ 123, 125, 131, 132, 133, 134, 135, 136, 137, 138,
+ 229, 126, 127, 255, 10, 255, 10, 102, 219, 73,
+ 124, 124, 128, 11, 86, 186, 192, 4, 15, 81,
+ 204, 4, 16, 83, 205, 249, 114, 242, 124, 22,
+ 73, 128, 240, 22, 73, 128, 22, 125, 258, 257,
+ 124, 114, 117, 255, 255, 218, 265, 265, 239, 257,
+ 78, 84, 85, 190, 4, 257, 4, 257, 4, 22,
+ 235, 257, 114, 239, 17, 21, 25, 241, 257, 114,
+ 239, 257, 258, 126, 257, 128, 128, 4, 257, 257,
+ 114, 249, 185, 215, 240, 240, 249, 127, 22, 127,
+ 22, 126, 4, 73, 4, 4, 73, 4, 73, 193,
+ 4, 238, 257, 114, 117, 257, 257, 257, 257, 30,
+ 64, 77, 194, 128, 128, 128, 4, 4, 4, 195,
+ 249, 4, 224, 196, 218
};
#define yyerrok (yyerrstatus = 0)
@@ -3795,7 +3803,7 @@
/* Line 1455 of yacc.c */
#line 1496 "compilers/imcc/imcc.y"
{
- (yyval.t) = 0;
+ (yyval.t) = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
}
@@ -3806,7 +3814,7 @@
/* Line 1455 of yacc.c */
#line 1502 "compilers/imcc/imcc.y"
{
- (yyval.t) = 0;
+ (yyval.t) = P_NSENTRY;
IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
}
@@ -5853,7 +5861,7 @@
/* Line 1455 of yacc.c */
-#line 5846 "compilers/imcc/imcparser.c"
+#line 5854 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6093,26 +6101,19 @@
* before the newline, and thus, line is the line *after* the
* error. Instead of duplicating code for both cases (the 'newline' and
* non-newline case, do the test twice; efficiency is not important when
- * we have an error anyway.
- */
+ * we have an error anyway. */
if (!at_eof(yyscanner)) {
- if (*chr == '\n') {
- IMCC_INFO(interp)->line--;
- }
-
IMCC_warning(interp, "error:imcc:%s", s);
+
/* don't print the current token if it is a newline */
- if (*chr != '\n') {
+ if (*chr != '\n')
IMCC_warning(interp, " ('%s')", chr);
- }
- IMCC_print_inc(interp);
-
- if (*chr == '\n') {
- IMCC_INFO(interp)->line++;
- }
+ IMCC_print_inc(interp);
}
- else { /* scanner is at end of file; just to be sure, do not print "current" token. */
+
+ /* scanner is at EOF; just to be sure, don't print "current" token */
+ else {
IMCC_warning(interp, "error:imcc:%s", s);
IMCC_print_inc(interp);
}
Modified: branches/ops_pct/compilers/imcc/imcparser.h
==============================================================================
--- branches/ops_pct/compilers/imcc/imcparser.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/imcparser.h Wed May 5 08:45:29 2010 (r46302)
@@ -52,245 +52,247 @@
enum yytokentype {
LOW_PREC = 258,
PARAM = 259,
- HLL = 260,
- TK_LINE = 261,
- TK_FILE = 262,
- GOTO = 263,
- ARG = 264,
- IF = 265,
- UNLESS = 266,
- PNULL = 267,
- SET_RETURN = 268,
- SET_YIELD = 269,
- ADV_FLAT = 270,
- ADV_SLURPY = 271,
- ADV_OPTIONAL = 272,
- ADV_OPT_FLAG = 273,
- ADV_NAMED = 274,
- ADV_ARROW = 275,
- NEW = 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,
- INC = 287,
- DEC = 288,
- GLOBAL_CONST = 289,
- PLUS_ASSIGN = 290,
- MINUS_ASSIGN = 291,
- MUL_ASSIGN = 292,
- DIV_ASSIGN = 293,
- CONCAT_ASSIGN = 294,
- BAND_ASSIGN = 295,
- BOR_ASSIGN = 296,
- BXOR_ASSIGN = 297,
- FDIV = 298,
- FDIV_ASSIGN = 299,
- MOD_ASSIGN = 300,
- SHR_ASSIGN = 301,
- SHL_ASSIGN = 302,
- SHR_U_ASSIGN = 303,
- SHIFT_LEFT = 304,
- SHIFT_RIGHT = 305,
- INTV = 306,
- FLOATV = 307,
- STRINGV = 308,
- PMCV = 309,
- LOG_XOR = 310,
- RELOP_EQ = 311,
- RELOP_NE = 312,
- RELOP_GT = 313,
- RELOP_GTE = 314,
- RELOP_LT = 315,
- RELOP_LTE = 316,
- RESULT = 317,
- RETURN = 318,
- TAILCALL = 319,
- YIELDT = 320,
- GET_RESULTS = 321,
- POW = 322,
- SHIFT_RIGHT_U = 323,
- LOG_AND = 324,
- LOG_OR = 325,
- COMMA = 326,
- ESUB = 327,
- DOTDOT = 328,
- PCC_BEGIN = 329,
- PCC_END = 330,
- PCC_CALL = 331,
- PCC_SUB = 332,
- PCC_BEGIN_RETURN = 333,
- PCC_END_RETURN = 334,
- PCC_BEGIN_YIELD = 335,
- PCC_END_YIELD = 336,
- NCI_CALL = 337,
- METH_CALL = 338,
- INVOCANT = 339,
- MAIN = 340,
- LOAD = 341,
- INIT = 342,
- IMMEDIATE = 343,
- POSTCOMP = 344,
- METHOD = 345,
- ANON = 346,
- OUTER = 347,
- NEED_LEX = 348,
- MULTI = 349,
- VTABLE_METHOD = 350,
- LOADLIB = 351,
- SUB_INSTANCE_OF = 352,
- SUBID = 353,
- NS_ENTRY = 354,
- UNIQUE_REG = 355,
- LABEL = 356,
- EMIT = 357,
- EOM = 358,
- IREG = 359,
- NREG = 360,
- SREG = 361,
- PREG = 362,
- IDENTIFIER = 363,
- REG = 364,
- MACRO = 365,
- ENDM = 366,
- STRINGC = 367,
- INTC = 368,
- FLOATC = 369,
- USTRINGC = 370,
- PARROT_OP = 371,
- VAR = 372,
- LINECOMMENT = 373,
- FILECOMMENT = 374,
- DOT = 375,
- CONCAT = 376
+ 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,
+ NEW = 277,
+ ADV_INVOCANT = 278,
+ ADV_CALL_SIG = 279,
+ NAMESPACE = 280,
+ DOT_METHOD = 281,
+ SUB = 282,
+ SYM = 283,
+ LOCAL = 284,
+ LEXICAL = 285,
+ CONST = 286,
+ ANNOTATE = 287,
+ INC = 288,
+ DEC = 289,
+ GLOBAL_CONST = 290,
+ PLUS_ASSIGN = 291,
+ MINUS_ASSIGN = 292,
+ MUL_ASSIGN = 293,
+ DIV_ASSIGN = 294,
+ CONCAT_ASSIGN = 295,
+ BAND_ASSIGN = 296,
+ BOR_ASSIGN = 297,
+ BXOR_ASSIGN = 298,
+ FDIV = 299,
+ FDIV_ASSIGN = 300,
+ MOD_ASSIGN = 301,
+ SHR_ASSIGN = 302,
+ SHL_ASSIGN = 303,
+ SHR_U_ASSIGN = 304,
+ SHIFT_LEFT = 305,
+ SHIFT_RIGHT = 306,
+ INTV = 307,
+ FLOATV = 308,
+ STRINGV = 309,
+ PMCV = 310,
+ LOG_XOR = 311,
+ RELOP_EQ = 312,
+ RELOP_NE = 313,
+ RELOP_GT = 314,
+ RELOP_GTE = 315,
+ RELOP_LT = 316,
+ RELOP_LTE = 317,
+ RESULT = 318,
+ RETURN = 319,
+ TAILCALL = 320,
+ YIELDT = 321,
+ GET_RESULTS = 322,
+ POW = 323,
+ SHIFT_RIGHT_U = 324,
+ LOG_AND = 325,
+ LOG_OR = 326,
+ COMMA = 327,
+ ESUB = 328,
+ DOTDOT = 329,
+ PCC_BEGIN = 330,
+ PCC_END = 331,
+ PCC_CALL = 332,
+ PCC_SUB = 333,
+ PCC_BEGIN_RETURN = 334,
+ PCC_END_RETURN = 335,
+ PCC_BEGIN_YIELD = 336,
+ PCC_END_YIELD = 337,
+ NCI_CALL = 338,
+ METH_CALL = 339,
+ INVOCANT = 340,
+ MAIN = 341,
+ LOAD = 342,
+ INIT = 343,
+ IMMEDIATE = 344,
+ POSTCOMP = 345,
+ METHOD = 346,
+ ANON = 347,
+ OUTER = 348,
+ NEED_LEX = 349,
+ MULTI = 350,
+ VTABLE_METHOD = 351,
+ LOADLIB = 352,
+ SUB_INSTANCE_OF = 353,
+ SUBID = 354,
+ NS_ENTRY = 355,
+ UNIQUE_REG = 356,
+ LABEL = 357,
+ EMIT = 358,
+ EOM = 359,
+ IREG = 360,
+ NREG = 361,
+ SREG = 362,
+ PREG = 363,
+ IDENTIFIER = 364,
+ REG = 365,
+ MACRO = 366,
+ ENDM = 367,
+ STRINGC = 368,
+ INTC = 369,
+ FLOATC = 370,
+ USTRINGC = 371,
+ PARROT_OP = 372,
+ VAR = 373,
+ LINECOMMENT = 374,
+ FILECOMMENT = 375,
+ DOT = 376,
+ CONCAT = 377
};
#endif
/* Tokens. */
#define LOW_PREC 258
#define PARAM 259
-#define HLL 260
-#define TK_LINE 261
-#define TK_FILE 262
-#define GOTO 263
-#define ARG 264
-#define IF 265
-#define UNLESS 266
-#define PNULL 267
-#define SET_RETURN 268
-#define SET_YIELD 269
-#define ADV_FLAT 270
-#define ADV_SLURPY 271
-#define ADV_OPTIONAL 272
-#define ADV_OPT_FLAG 273
-#define ADV_NAMED 274
-#define ADV_ARROW 275
-#define NEW 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 INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
+#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 NEW 277
+#define ADV_INVOCANT 278
+#define ADV_CALL_SIG 279
+#define NAMESPACE 280
+#define DOT_METHOD 281
+#define SUB 282
+#define SYM 283
+#define LOCAL 284
+#define LEXICAL 285
+#define CONST 286
+#define ANNOTATE 287
+#define INC 288
+#define DEC 289
+#define GLOBAL_CONST 290
+#define PLUS_ASSIGN 291
+#define MINUS_ASSIGN 292
+#define MUL_ASSIGN 293
+#define DIV_ASSIGN 294
+#define CONCAT_ASSIGN 295
+#define BAND_ASSIGN 296
+#define BOR_ASSIGN 297
+#define BXOR_ASSIGN 298
+#define FDIV 299
+#define FDIV_ASSIGN 300
+#define MOD_ASSIGN 301
+#define SHR_ASSIGN 302
+#define SHL_ASSIGN 303
+#define SHR_U_ASSIGN 304
+#define SHIFT_LEFT 305
+#define SHIFT_RIGHT 306
+#define INTV 307
+#define FLOATV 308
+#define STRINGV 309
+#define PMCV 310
+#define LOG_XOR 311
+#define RELOP_EQ 312
+#define RELOP_NE 313
+#define RELOP_GT 314
+#define RELOP_GTE 315
+#define RELOP_LT 316
+#define RELOP_LTE 317
+#define RESULT 318
+#define RETURN 319
+#define TAILCALL 320
+#define YIELDT 321
+#define GET_RESULTS 322
+#define POW 323
+#define SHIFT_RIGHT_U 324
+#define LOG_AND 325
+#define LOG_OR 326
+#define COMMA 327
+#define ESUB 328
+#define DOTDOT 329
+#define PCC_BEGIN 330
+#define PCC_END 331
+#define PCC_CALL 332
+#define PCC_SUB 333
+#define PCC_BEGIN_RETURN 334
+#define PCC_END_RETURN 335
+#define PCC_BEGIN_YIELD 336
+#define PCC_END_YIELD 337
+#define NCI_CALL 338
+#define METH_CALL 339
+#define INVOCANT 340
+#define MAIN 341
+#define LOAD 342
+#define INIT 343
+#define IMMEDIATE 344
+#define POSTCOMP 345
+#define METHOD 346
+#define ANON 347
+#define OUTER 348
+#define NEED_LEX 349
+#define MULTI 350
+#define VTABLE_METHOD 351
+#define LOADLIB 352
+#define SUB_INSTANCE_OF 353
+#define SUBID 354
+#define NS_ENTRY 355
+#define UNIQUE_REG 356
+#define LABEL 357
+#define EMIT 358
+#define EOM 359
+#define IREG 360
+#define NREG 361
+#define SREG 362
+#define PREG 363
+#define IDENTIFIER 364
+#define REG 365
+#define MACRO 366
+#define ENDM 367
+#define STRINGC 368
+#define INTC 369
+#define FLOATC 370
+#define USTRINGC 371
+#define PARROT_OP 372
+#define VAR 373
+#define LINECOMMENT 374
+#define FILECOMMENT 375
+#define DOT 376
+#define CONCAT 377
@@ -311,7 +313,7 @@
/* Line 1676 of yacc.c */
-#line 304 "compilers/imcc/imcparser.h"
+#line 306 "compilers/imcc/imcparser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
Modified: branches/ops_pct/compilers/imcc/instructions.c
==============================================================================
--- branches/ops_pct/compilers/imcc/instructions.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/instructions.c Wed May 5 08:45:29 2010 (r46302)
@@ -275,13 +275,9 @@
{
ASSERT_ARGS(instruction_writes)
const int f = ins->flags;
- int i;
+ int j;
- /*
- * a get_results opcode is before the actual sub call
- * but for the register allocator, the effect matters, thus
- * postpone the effect after the invoke
- */
+ /* a get_results opcode occurs after the actual sub call */
if (ins->opnum == PARROT_OP_get_results_pc) {
int i;
@@ -289,7 +285,7 @@
* an ExceptionHandler, which doesn't have
* a call next
*/
- if (ins->next && (ins->next->type & ITPCCSUB))
+ if (ins->prev && (ins->prev->type & ITPCCSUB))
return 0;
for (i = ins->symreg_count - 1; i >= 0; --i) {
@@ -308,7 +304,7 @@
* structure
*/
while (ins && ins->opnum != PARROT_OP_get_results_pc)
- ins = ins->prev;
+ ins = ins->next;
if (!ins)
return 0;
@@ -336,14 +332,15 @@
return 0;
}
- for (i = 0; i < ins->symreg_count; i++)
- if (f & (1 << (16 + i)))
- if (ins->symregs[i] == r)
+ for (j = 0; j < ins->symreg_count; j++)
+ if (f & (1 << (16 + j)))
+ if (ins->symregs[j] == r)
return 1;
return 0;
}
+
/*
=item C<int get_branch_regno(const Instruction *ins)>
@@ -816,6 +813,8 @@
=item C<static int e_file_close(PARROT_INTERP, void *param)>
+Close STDOUT
+
=cut
*/
@@ -835,6 +834,8 @@
=item C<static int e_file_emit(PARROT_INTERP, void *param, const IMC_Unit *unit,
const Instruction *ins)>
+emit the Instruction C<ins> to the given IMC_Unit C<unit>, passing C<param>
+
=cut
*/
Modified: branches/ops_pct/compilers/imcc/main.c
==============================================================================
--- branches/ops_pct/compilers/imcc/main.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/main.c Wed May 5 08:45:29 2010 (r46302)
@@ -78,7 +78,7 @@
int obj_file,
ARGIN_NULLOK(const char *output_file),
int argc,
- ARGIN(char **argv))
+ ARGIN(const char **argv))
__attribute__nonnull__(1)
__attribute__nonnull__(5);
@@ -251,13 +251,6 @@
if (strchr(opt->opt_arg, '2')) {
IMCC_INFO(interp)->optimizer_level |= (OPT_PRE | OPT_CFG);
}
- if (strchr(opt->opt_arg, 't')) {
-#ifdef HAVE_COMPUTED_GOTO
- *core = PARROT_CGP_CORE;
-#else
- *core = PARROT_SWITCH_CORE;
-#endif
- }
break;
default:
@@ -414,12 +407,6 @@
if (opt_level & OPT_SUB)
opt_desc[i++] = 'c';
- if (PARROT_RUNCORE_JIT_OPS_TEST(interp->run_core))
- opt_desc[i++] = 'j';
-
- if (PARROT_RUNCORE_PREDEREF_OPS_TEST(interp->run_core))
- opt_desc[i++] = 't';
-
opt_desc[i] = '\0';
return;
}
@@ -462,7 +449,7 @@
/*
=item C<static void imcc_run_pbc(PARROT_INTERP, int obj_file, const char
-*output_file, int argc, char **argv)>
+*output_file, int argc, const char **argv)>
Write out or run Parrot bytecode.
@@ -472,7 +459,7 @@
static void
imcc_run_pbc(PARROT_INTERP, int obj_file, ARGIN_NULLOK(const char *output_file),
- int argc, ARGIN(char **argv))
+ int argc, ARGIN(const char **argv))
{
ASSERT_ARGS(imcc_run_pbc)
if (IMCC_INFO(interp)->imcc_warn)
@@ -692,7 +679,7 @@
/*
-=item C<int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, char
+=item C<int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, const char
**argv)>
Entry point of IMCC, as invoked by Parrot's main function.
@@ -705,7 +692,7 @@
int
imcc_run(PARROT_INTERP, ARGIN(const char *sourcefile), int argc,
- ARGIN(char **argv))
+ ARGIN(const char **argv))
{
int obj_file;
yyscan_t yyscanner = IMCC_INFO(interp)->yyscanner;
Modified: branches/ops_pct/compilers/imcc/optimizer.c
==============================================================================
--- branches/ops_pct/compilers/imcc/optimizer.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/optimizer.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
/*
* $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
*/
/*
@@ -256,6 +256,10 @@
=item C<int optimize(PARROT_INTERP, IMC_Unit *unit)>
+Runs after the CFG is built and handles constant propogation.
+
+used_once ... deletes assignments, when LHS is unused
+
=cut
*/
@@ -1225,6 +1229,11 @@
=item C<static int branch_cond_loop_swap(PARROT_INTERP, IMC_Unit *unit,
Instruction *branch, Instruction *start, Instruction *cond)>
+Converts conditional loops to post-test
+
+Returns TRUE if any optimizations were performed. Otherwise, returns
+FALSE.
+
=cut
*/
@@ -1461,6 +1470,10 @@
=item C<static int dead_code_remove(PARROT_INTERP, IMC_Unit *unit)>
+dead code elimination
+... unreachable blocks
+... unreachable instructions
+
=cut
*/
@@ -1541,6 +1554,8 @@
=item C<static int used_once(PARROT_INTERP, IMC_Unit *unit)>
+used_once ... deletes assignments, when LHS is unused
+
=cut
*/
Modified: branches/ops_pct/compilers/imcc/parser_util.c
==============================================================================
--- branches/ops_pct/compilers/imcc/parser_util.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/parser_util.c Wed May 5 08:45:29 2010 (r46302)
@@ -383,14 +383,9 @@
int emit)
{
ASSERT_ARGS(INS)
- int i, op, len;
- int dirs = 0;
- Instruction *ins;
- op_info_t *op_info;
- char fullname[64] = "", format[128] = "";
if (STREQ(name, ".annotate")) {
- ins = _mk_instruction(name, "", n, r, 0);
+ Instruction *ins = _mk_instruction(name, "", n, r, 0);
if (emit)
return emitb(interp, unit, ins);
else
@@ -402,176 +397,183 @@
|| (STREQ(name, "get_params"))
|| (STREQ(name, "set_returns")))
return var_arg_ins(interp, unit, name, r, n, emit);
+ else {
+ Instruction *ins;
+ int i, op, len;
+ int dirs = 0;
+ op_info_t *op_info;
+ char fullname[64] = "", format[128] = "";
- op_fullname(fullname, name, r, n, keyvec);
- op = interp->op_lib->op_code(interp, fullname, 1);
-
- /* maybe we have a fullname */
- if (op < 0)
- op = interp->op_lib->op_code(interp, name, 1);
-
- /* still wrong, try reverse compare */
- if (op < 0) {
- const char * const n_name = try_rev_cmp(name, r);
- if (n_name) {
- name = n_name;
- op_fullname(fullname, name, r, n, keyvec);
- op = interp->op_lib->op_code(interp, fullname, 1);
- }
- }
-
- /* still wrong, try to find an existing op */
- if (op < 0)
- op = try_find_op(interp, unit, name, r, n, keyvec, emit);
-
- if (op < 0) {
- int ok = 0;
+ op_fullname(fullname, name, r, n, keyvec);
+ op = interp->op_lib->op_code(interp, fullname, 1);
- /* check mixed constants */
- ins = IMCC_subst_constants_umix(interp, unit, name, r, n + 1);
- if (ins)
- goto found_ins;
+ /* maybe we have a fullname */
+ if (op < 0)
+ op = interp->op_lib->op_code(interp, name, 1);
+
+ /* still wrong, try reverse compare */
+ if (op < 0) {
+ const char * const n_name = try_rev_cmp(name, r);
+ if (n_name) {
+ name = n_name;
+ op_fullname(fullname, name, r, n, keyvec);
+ op = interp->op_lib->op_code(interp, fullname, 1);
+ }
+ }
+
+ /* still wrong, try to find an existing op */
+ if (op < 0)
+ op = try_find_op(interp, unit, name, r, n, keyvec, emit);
- /* and finally multiple constants */
- ins = IMCC_subst_constants(interp, unit, name, r, n + 1, &ok);
+ if (op < 0) {
+ int ok = 0;
- if (ok) {
+ /* check mixed constants */
+ ins = IMCC_subst_constants_umix(interp, unit, name, r, n + 1);
if (ins)
goto found_ins;
- else
- return NULL;
- }
- }
- else
- strcpy(fullname, name);
- if (op < 0)
- IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
- "The opcode '%s' (%s<%d>) was not found. "
- "Check the type and number of the arguments",
- fullname, name, n);
-
- op_info = &interp->op_info_table[op];
- *format = '\0';
-
- /* info->op_count is args + 1
- * build instruction format
- * set LV_in / out flags */
- if (n != op_info->op_count - 1)
- IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
- "arg count mismatch: op #%d '%s' needs %d given %d",
- op, fullname, op_info->op_count-1, n);
-
- /* XXX Speed up some by keep track of the end of format ourselves */
- for (i = 0; i < n; i++) {
- switch (op_info->dirs[i]) {
- case PARROT_ARGDIR_INOUT:
- dirs |= 1 << (16 + i);
- /* go on */
- case PARROT_ARGDIR_IN:
- dirs |= 1 << i ;
- break;
-
- case PARROT_ARGDIR_OUT:
- dirs |= 1 << (16 + i);
- break;
-
- default:
- PARROT_ASSERT(0);
- };
-
- if (keyvec & KEY_BIT(i)) {
- /* XXX Assert that len > 2 */
- len = strlen(format) - 2;
- PARROT_ASSERT(len >= 0);
- format[len] = '\0';
- strcat(format, "[%s], ");
+ /* and finally multiple constants */
+ ins = IMCC_subst_constants(interp, unit, name, r, n + 1, &ok);
+
+ if (ok) {
+ if (ins)
+ goto found_ins;
+ else
+ return NULL;
+ }
}
- else if (r[i]->set == 'K')
- strcat(format, "[%s], ");
else
- strcat(format, "%s, ");
- }
+ strcpy(fullname, name);
+
+ if (op < 0)
+ IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+ "The opcode '%s' (%s<%d>) was not found. "
+ "Check the type and number of the arguments",
+ fullname, name, n);
+
+ op_info = &interp->op_info_table[op];
+ *format = '\0';
+
+ /* info->op_count is args + 1
+ * build instruction format
+ * set LV_in / out flags */
+ if (n != op_info->op_count - 1)
+ IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+ "arg count mismatch: op #%d '%s' needs %d given %d",
+ op, fullname, op_info->op_count-1, n);
- len = strlen(format);
- if (len >= 2)
- len -= 2;
+ /* XXX Speed up some by keep track of the end of format ourselves */
+ for (i = 0; i < n; i++) {
+ switch (op_info->dirs[i]) {
+ case PARROT_ARGDIR_INOUT:
+ dirs |= 1 << (16 + i);
+ /* go on */
+ case PARROT_ARGDIR_IN:
+ dirs |= 1 << i ;
+ break;
+
+ case PARROT_ARGDIR_OUT:
+ dirs |= 1 << (16 + i);
+ break;
+
+ default:
+ PARROT_ASSERT(0);
+ };
+
+ if (keyvec & KEY_BIT(i)) {
+ /* XXX Assert that len > 2 */
+ len = strlen(format) - 2;
+ PARROT_ASSERT(len >= 0);
+ format[len] = '\0';
+ strcat(format, "[%s], ");
+ }
+ else if (r[i]->set == 'K')
+ strcat(format, "[%s], ");
+ else
+ strcat(format, "%s, ");
+ }
- format[len] = '\0';
+ len = strlen(format);
+ if (len >= 2)
+ len -= 2;
- if (fmt && *fmt) {
- strncpy(format, fmt, sizeof (format) - 1);
- format[sizeof (format) - 1] = '\0';
- }
+ format[len] = '\0';
- IMCC_debug(interp, DEBUG_PARSER, "%s %s\t%s\n", name, format, fullname);
+ if (fmt && *fmt) {
+ strncpy(format, fmt, sizeof (format) - 1);
+ format[sizeof (format) - 1] = '\0';
+ }
- /* make the instruction */
- ins = _mk_instruction(name, format, n, r, dirs);
- ins->keys |= keyvec;
+ IMCC_debug(interp, DEBUG_PARSER, "%s %s\t%s\n", name, format, fullname);
- /* fill in oplib's info */
- ins->opnum = op;
- ins->opsize = n + 1;
+ /* make the instruction */
+ ins = _mk_instruction(name, format, n, r, dirs);
+ ins->keys |= keyvec;
- /* mark end as absolute branch */
- if (STREQ(name, "end") || STREQ(name, "ret")) {
- ins->type |= ITBRANCH | IF_goto;
- }
- else if (STREQ(name, "warningson")) {
- /* emit a debug seg, if this op is seen */
- PARROT_WARNINGS_on(interp, PARROT_WARNINGS_ALL_FLAG);
- }
- else if (STREQ(name, "yield")) {
- if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
- IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
- "Cannot yield from non-continuation\n");
+ /* fill in oplib's info */
+ ins->opnum = op;
+ ins->opsize = n + 1;
- IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub
- |= 1 | ITPCCYIELD;
- }
- else if ((strncmp(name, "invoke", 6) == 0) ||
- (strncmp(name, "callmethod", 10) == 0)) {
- if (IMCC_INFO(interp)->cur_unit->type & IMC_PCCSUB)
- IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub |= 1;
- }
-
- /* set up branch flags
- * mark registers that are labels */
- for (i = 0; i < op_info->op_count - 1; i++) {
- if (op_info->labels[i])
- ins->type |= ITBRANCH | (1 << i);
- else {
- if (r[i]->type == VTADDRESS)
+ /* mark end as absolute branch */
+ if (STREQ(name, "end") || STREQ(name, "ret")) {
+ ins->type |= ITBRANCH | IF_goto;
+ }
+ else if (STREQ(name, "warningson")) {
+ /* emit a debug seg, if this op is seen */
+ PARROT_WARNINGS_on(interp, PARROT_WARNINGS_ALL_FLAG);
+ }
+ else if (STREQ(name, "yield")) {
+ if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0])
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
- "undefined identifier '%s'\n", r[i]->name);
+ "Cannot yield from non-continuation\n");
+
+ IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub
+ |= 1 | ITPCCYIELD;
}
- }
+ else if ((strncmp(name, "invoke", 6) == 0) ||
+ (strncmp(name, "callmethod", 10) == 0)) {
+ if (IMCC_INFO(interp)->cur_unit->type & IMC_PCCSUB)
+ IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->pcc_sub->calls_a_sub |= 1;
+ }
+
+ /* set up branch flags
+ * mark registers that are labels */
+ for (i = 0; i < op_info->op_count - 1; i++) {
+ if (op_info->labels[i])
+ ins->type |= ITBRANCH | (1 << i);
+ else {
+ if (r[i]->type == VTADDRESS)
+ IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
+ "undefined identifier '%s'\n", r[i]->name);
+ }
+ }
+
+ if (op_info->jump) {
+ ins->type |= ITBRANCH;
+ /* TODO use opnum constants */
+ if (STREQ(name, "branch")
+ || STREQ(name, "tailcall")
+ || STREQ(name, "returncc"))
+ ins->type |= IF_goto;
+ else if (STREQ(fullname, "jump_i")
+ || STREQ(fullname, "branch_i"))
+ IMCC_INFO(interp)->dont_optimize = 1;
+ }
+ else if (STREQ(name, "set") && n == 2) {
+ /* set Px, Py: both PMCs have the same address */
+ if (r[0]->set == r[1]->set && REG_NEEDS_ALLOC(r[1]))
+ ins->type |= ITALIAS;
+ }
+ else if (STREQ(name, "compile"))
+ ++IMCC_INFO(interp)->has_compile;
- if (op_info->jump) {
- ins->type |= ITBRANCH;
- /* TODO use opnum constants */
- if (STREQ(name, "branch")
- || STREQ(name, "tailcall")
- || STREQ(name, "returncc"))
- ins->type |= IF_goto;
- else if (STREQ(fullname, "jump_i")
- || STREQ(fullname, "branch_i"))
- IMCC_INFO(interp)->dont_optimize = 1;
- }
- else if (STREQ(name, "set") && n == 2) {
- /* set Px, Py: both PMCs have the same address */
- if (r[0]->set == r[1]->set && REG_NEEDS_ALLOC(r[1]))
- ins->type |= ITALIAS;
- }
- else if (STREQ(name, "compile"))
- ++IMCC_INFO(interp)->has_compile;
-
- found_ins:
- if (emit)
- emitb(interp, unit, ins);
+ found_ins:
+ if (emit)
+ emitb(interp, unit, ins);
- return ins;
+ return ins;
+ }
}
extern void* yy_scan_string(const char *);
@@ -654,7 +656,7 @@
eval_number = ++eval_nr;
UNLOCK(eval_nr_lock);
- name = Parrot_sprintf_c(interp, "EVAL_" INTVAL_FMT, eval_number);
+ name = Parrot_sprintf_c(interp, "EVAL_" INTVAL_FMT, eval_number);
new_cs = PF_create_default_segs(interp, name, 0);
old_cs = Parrot_switch_to_cs(interp, new_cs, 0);
@@ -708,11 +710,12 @@
sub_data->seg = new_cs;
sub_data->start_offs = 0;
sub_data->end_offs = new_cs->base.size;
- sub_data->name = Parrot_str_copy(interp, name);
+ sub_data->name = name;
*error_message = NULL;
}
else {
+ PackFile_Segment_destroy(interp, (PackFile_Segment *)new_cs);
*error_message = IMCC_INFO(interp)->error_message;
}
@@ -934,11 +937,13 @@
IMCC_push_parser_state(interp);
{
/* Store a copy, in order to know how to free it later */
- char *copyname = mem_sys_strdup(fullname);
+ char *copyname = mem_sys_strdup(fullname);
IMCC_INFO(interp)->state->file = copyname;
ext = strrchr(copyname, '.');
}
- IMCC_INFO(interp)->line = 1;
+
+ /* start over; let the start of line rule increment this to 1 */
+ IMCC_INFO(interp)->line = 0;
/*
* the Parrot_str_compare() called from pmc_type() triggers GC
Modified: branches/ops_pct/compilers/imcc/pbc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/pbc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/pbc.c Wed May 5 08:45:29 2010 (r46302)
@@ -6,6 +6,7 @@
#include "imc.h"
#include "pbc.h"
#include "parrot/packfile.h"
+#include "parrot/pmc_freeze.h"
#include "pmc/pmc_sub.h"
#include "pmc/pmc_callcontext.h"
@@ -78,7 +79,7 @@
FUNC_MODIFIES(*r);
PARROT_WARN_UNUSED_RESULT
-static int add_const_str(PARROT_INTERP, ARGIN(const SymReg *r))
+static int add_const_str(PARROT_INTERP, ARGIN(STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -222,7 +223,7 @@
, PARROT_ASSERT_ARG(r))
#define ASSERT_ARGS_add_const_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(r))
+ , 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 = (\
@@ -832,7 +833,7 @@
interp->code->base.data[addr] = op;
if (nam->color < 0)
- nam->color = add_const_str(interp, nam);
+ nam->color = add_const_str(interp, IMCC_string_from_reg(interp, nam));
interp->code->base.data[addr+2] = nam->color;
@@ -968,7 +969,7 @@
/*
-=item C<static int add_const_str(PARROT_INTERP, const SymReg *r)>
+=item C<static int add_const_str(PARROT_INTERP, STRING *s)>
Adds a constant string to constant_table.
@@ -978,36 +979,37 @@
PARROT_WARN_UNUSED_RESULT
static int
-add_const_str(PARROT_INTERP, ARGIN(const SymReg *r))
+add_const_str(PARROT_INTERP, ARGIN(STRING *s))
{
ASSERT_ARGS(add_const_str)
PackFile_ConstTable *table = interp->code->const_table;
- STRING * const s = IMCC_string_from_reg(interp, r);
- int k = -1;
int i;
+
for (i = 0; i < table->const_count; ++i) {
PackFile_Constant * const constant = table->constants[i];
if (constant->type == PFC_STRING) {
STRING * const sc = constant->u.string;
- if (Parrot_charset_number_of_str(interp, s) ==
- Parrot_charset_number_of_str(interp, sc) &&
- Parrot_encoding_number_of_str(interp, s) ==
- Parrot_encoding_number_of_str(interp, sc) &&
- Parrot_str_equal(interp, s, sc)) {
- k = i;
- break;
+ if (Parrot_str_equal(interp, s, sc)
+ && Parrot_charset_number_of_str(interp, s)
+ == Parrot_charset_number_of_str(interp, sc)
+ && Parrot_encoding_number_of_str(interp, s)
+ == Parrot_encoding_number_of_str(interp, sc))
+ {
+ return i;
}
}
}
- if (k < 0) {
- PackFile_Constant * constant;
- k = add_const_table(interp);
- constant = table->constants[k];
- constant->type = PFC_STRING;
- constant->u.string = s;
+
+ /* otherwise... */
+ {
+ int k = add_const_table(interp);
+ PackFile_Constant *constant = table->constants[k];
+ constant->type = PFC_STRING;
+ constant->u.string = s;
+
+ return k;
}
- return k;
}
@@ -1064,8 +1066,7 @@
if (!pcc_sub->multi[0])
return Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
- multi_sig = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
- VTABLE_set_integer_native(interp, multi_sig, n);
+ multi_sig = Parrot_pmc_new_init_int(interp, enum_class_FixedPMCArray, n);
ct = interp->code->const_table;
for (i = 0; i < n; ++i) {
@@ -1082,10 +1083,9 @@
sig_pmc = Parrot_pmc_new(interp, enum_class_String);
VTABLE_set_string_native(interp, sig_pmc, type_name);
}
- else {
- sig_pmc = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, sig_pmc, type_num);
- }
+ else
+ sig_pmc = Parrot_pmc_new_init_int(interp,
+ enum_class_Integer, type_num);
}
else {
PARROT_ASSERT(r->set == 'K');
@@ -1193,7 +1193,6 @@
ASSERT_ARGS(find_outer)
subs_t *s;
PMC *current;
- STRING *cur_name;
char *cur_name_str;
Parrot_Sub_attributes *sub;
size_t len;
@@ -1227,7 +1226,6 @@
unit->outer->name);
PMC_get_sub(interp, current, sub);
- cur_name = sub->name;
cur_name_str = Parrot_str_to_cstring(interp, sub->name);
if (strlen(cur_name_str) == len
@@ -1267,9 +1265,7 @@
PMC *sub_pmc;
Parrot_Sub_attributes *sub, *outer_sub;
- const int k = add_const_table(interp);
PackFile_ConstTable * const ct = interp->code->const_table;
- PackFile_Constant * const pfc = ct->constants[k];
IMC_Unit * const unit =
IMCC_INFO(interp)->globals->cs->subs->unit;
@@ -1280,8 +1276,6 @@
int i;
int ns_const = -1;
- IMCC_INFO(interp)->globals->cs->subs->pmc_const = k;
-
if (unit->_namespace) {
/* strip namespace off from front */
const char *real_name = strrchr(r->name, '@');
@@ -1331,7 +1325,7 @@
PMC_get_sub(interp, sub_pmc, sub);
Sub_comp_get_FLAGS(sub) |= (r->pcc_sub->pragma & SUB_COMP_FLAG_MASK);
- r->color = add_const_str(interp, r);
+ r->color = add_const_str(interp, IMCC_string_from_reg(interp, r));
sub->name = ct->constants[r->color]->u.string;
/* If the unit has no subid, set the subid to match the name. */
@@ -1339,25 +1333,16 @@
unit->subid = r;
else {
/* trim the quotes */
+ char *oldname = unit->subid->name;
unit->subid->name = mem_sys_strdup(unit->subid->name + 1);
unit->subid->name[strlen(unit->subid->name) - 1] = 0;
+ mem_sys_free(oldname);
/* create string constant for it. */
- unit->subid->color = add_const_str(interp, unit->subid);
+ unit->subid->color = add_const_str(interp, IMCC_string_from_reg(interp, unit->subid));
}
sub->subid = ct->constants[unit->subid->color]->u.string;
-
-#if 0
- if (unit->subid) {
- sub->subid = IMCC_string_from__STRINGC(interp, unit->subid);
- UNIT_FREE_CHAR(unit->subid);
- }
- /* If the unit has no subid, set the subid to match the name. */
- else
- sub->subid = sub->name;
-#endif
-
ns_pmc = NULL;
if (ns_const >= 0 && ns_const < ct->const_count) {
@@ -1397,7 +1382,7 @@
STRING *vtable_name;
INTVAL vtable_index;
- /* Work out the name of the vtable method. */
+ /* Work out the name of the vtable function. */
if (unit->vtable_name) {
vtable_name = Parrot_str_new(interp, unit->vtable_name + 1,
strlen(unit->vtable_name) - 2);
@@ -1406,14 +1391,13 @@
else
vtable_name = sub->name;
- /* Check this is a valid vtable method to override. */
+ /* Check this is a valid vtable function to override. */
vtable_index = Parrot_get_vtable_index(interp, vtable_name);
- if (vtable_index == -1) {
+ if (vtable_index == -1)
IMCC_fatal(interp, 1,
- "'%S' is not a v-table method, but was used with :vtable.\n",
+ "'%S' is not a vtable, but was used with :vtable.\n",
vtable_name);
- }
/* TODO check for duplicates */
sub->vtable_index = vtable_index;
@@ -1446,29 +1430,49 @@
Parrot_store_sub_in_namespace(interp, sub_pmc);
- pfc->type = PFC_PMC;
- pfc->u.key = sub_pmc;
- unit->sub_pmc = sub_pmc;
-
if (sub->outer_sub)
PMC_get_sub(interp, sub->outer_sub, outer_sub);
- IMCC_debug(interp, DEBUG_PBC_CONST,
- "add_const_pmc_sub '%s' flags %x color %d (%Ss) "
- "lex_info %s :outer(%Ss)\n",
- r->name, r->pcc_sub->pragma, k,
- sub_pmc->vtable->whoami,
- sub->lex_info ? "yes" : "no",
- sub->outer_sub? outer_sub->name :
- Parrot_str_new(interp, "*none*", 0));
-
/*
- * create entry in our fixup (=symbol) table
- * the offset is the index in the constant table of this Sub
+ * store the sub's strings
+ * XXX these need to occur before the sub to support thawing properly
*/
- PackFile_FixupTable_new_entry(interp, r->name, enum_fixup_sub, k);
+ {
+ PMC *strings = Parrot_freeze_strings(interp, sub_pmc);
+ int n = VTABLE_elements(interp, strings);
+ for (i = 0; i < n; i++) {
+ int unused = add_const_str(interp, VTABLE_get_string_keyed_int(interp, strings, i));
+ }
+ }
- return k;
+ /* 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;
+ unit->sub_pmc = sub_pmc;
+
+ IMCC_INFO(interp)->globals->cs->subs->pmc_const = k;
+
+ IMCC_debug(interp, DEBUG_PBC_CONST,
+ "add_const_pmc_sub '%s' flags %x color %d (%Ss) "
+ "lex_info %s :outer(%Ss)\n",
+ r->name, r->pcc_sub->pragma, k,
+ sub_pmc->vtable->whoami,
+ sub->lex_info ? "yes" : "no",
+ sub->outer_sub? outer_sub->name :
+ Parrot_str_new(interp, "*none*", 0));
+
+ /*
+ * create entry in our fixup (=symbol) table
+ * the offset is the index in the constant table of this Sub
+ */
+ PackFile_FixupTable_new_entry(interp, r->name, enum_fixup_sub, k);
+
+ return k;
+ }
}
@@ -1540,13 +1544,14 @@
build_key(PARROT_INTERP, ARGIN(SymReg *key_reg))
{
ASSERT_ARGS(build_key)
-#define KEYLEN 21
- SymReg *reg;
+#define MAX_KEY_LEN 10
+#define MAX_KEYNAME_LEN 20
+ SymReg *reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
- char s_key[KEYLEN * 10];
- opcode_t key[KEYLEN];
+ char s_key[MAX_KEY_LEN * MAX_KEYNAME_LEN];
+ opcode_t key[MAX_KEY_LEN * 2 + 1];
opcode_t size;
- int key_length; /* P0["hi;there"; S0; 2] has length 3 */
+ int key_length = 0; /* P0["hi;there"; S0; 2] has length 3 */
int k;
/* 0 is length */
@@ -1556,15 +1561,14 @@
char *s = s_key;
*s = 0;
- reg = key_reg->set == 'K' ? key_reg->nextkey : key_reg;
for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
SymReg *r = reg;
int type;
- if ((pc - key - 2) >= KEYLEN)
+ if (key_length >= MAX_KEY_LEN)
IMCC_fatal(interp, 1, "build_key:"
- "key too complex increase KEYLEN\n");
+ "Key too long, increase MAX_KEY_LEN.\n");
/* if key is a register, the original sym is in r->reg */
type = r->type;
@@ -1876,7 +1880,7 @@
case 'S':
if (r->type & VT_CONSTP)
r = r->reg;
- r->color = add_const_str(interp, r);
+ r->color = add_const_str(interp, IMCC_string_from_reg(interp, r));
break;
case 'N':
r->color = add_const_num(interp, r->name);
Modified: branches/ops_pct/compilers/imcc/pcc.c
==============================================================================
--- branches/ops_pct/compilers/imcc/pcc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/pcc.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2003-2009, Parrot Foundation.
+ * Copyright (C) 2003-2010, Parrot Foundation.
* $Id$
*/
@@ -416,7 +416,8 @@
SymReg *regs[2];
/* if this sub is a method, unshift 'self' as first param */
- if ((unit->type & IMC_HAS_SELF) || (sub->pcc_sub->pragma & (P_METHOD | P_VTABLE))) {
+ if ((unit->type & IMC_HAS_SELF)
+ || (sub->pcc_sub->pragma & (P_METHOD | P_VTABLE))) {
SymReg *self = get_sym(interp, "self");
if (!self) {
self = mk_symreg(interp, "self", 'P');
@@ -866,11 +867,6 @@
return;
}
- /* handle return results */
- n = sub->pcc_sub->nret;
- ins = pcc_get_args(interp, unit, ins, "get_results", n,
- sub->pcc_sub->ret, sub->pcc_sub->ret_flags);
-
/* insert the call */
if (meth_call) {
regs[0] = sub->pcc_sub->object;
@@ -899,6 +895,11 @@
}
ins->type |= ITPCCSUB;
+
+ /* handle return results */
+ n = sub->pcc_sub->nret;
+ ins = pcc_get_args(interp, unit, ins, "get_results", n,
+ sub->pcc_sub->ret, sub->pcc_sub->ret_flags);
}
/*
Modified: branches/ops_pct/compilers/imcc/symreg.c
==============================================================================
--- branches/ops_pct/compilers/imcc/symreg.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/symreg.c Wed May 5 08:45:29 2010 (r46302)
@@ -860,7 +860,6 @@
int_overflows(ARGIN(const SymReg *r))
{
ASSERT_ARGS(int_overflows)
- INTVAL i;
int base;
const char *digits;
@@ -883,10 +882,10 @@
errno = 0;
if (base == 10) {
- i = strtol(digits, NULL, base);
+ (void)strtol(digits, NULL, base);
}
else {
- i = strtoul(digits + 2, NULL, base);
+ (void)strtoul(digits + 2, NULL, base);
}
return errno ? 1 : 0;
Modified: branches/ops_pct/compilers/imcc/symreg.h
==============================================================================
--- branches/ops_pct/compilers/imcc/symreg.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/symreg.h Wed May 5 08:45:29 2010 (r46302)
@@ -456,14 +456,15 @@
typedef enum {
P_NONE = 0x00, /* 0<<0 */
P_NEED_LEX = 0x01, /* 1<<0 */
- P_VTABLE = 0x02, /* 1<<1 */
- P_METHOD = 0x04, /* 1<<2 */
+ P_VTABLE = SUB_COMP_FLAG_VTABLE, /* 1<<1 0x2 */
+ P_METHOD = SUB_COMP_FLAG_METHOD, /* 1<<2 0x4 */
P_ANON = SUB_FLAG_PF_ANON, /* 1<<3 0x8 - private3 */
P_MAIN = SUB_FLAG_PF_MAIN, /* 1<<4 0x10 - private4 */
P_LOAD = SUB_FLAG_PF_LOAD, /* 1<<5 0x20 - private5 */
P_IMMEDIATE = SUB_FLAG_PF_IMMEDIATE, /* 1<<6 0x40 - private6 */
P_POSTCOMP = SUB_FLAG_PF_POSTCOMP, /* 1<<7 0x80 - private7 */
- P_INIT = SUB_COMP_FLAG_PF_INIT /* 1<<10 0x400 - 10 */
+ P_INIT = SUB_COMP_FLAG_PF_INIT, /* 1<<10 0x400 - 10 */
+ P_NSENTRY = SUB_COMP_FLAG_NSENTRY /* 1<<11 0x800 - 11 */
} pragma_enum_t;
typedef enum {
Modified: branches/ops_pct/compilers/imcc/unit.h
==============================================================================
--- branches/ops_pct/compilers/imcc/unit.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/imcc/unit.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
/*
* $Id$
- * Copyright (C) 2003-2009, Parrot Foundation.
+ * Copyright (C) 2003-2010, Parrot Foundation.
*/
#ifndef PARROT_IMCC_UNIT_H_GUARD
@@ -64,10 +64,10 @@
int first_avail[4]; /* INSP */
SymReg *outer;
PMC *sub_pmc; /* this sub */
- int is_vtable_method; /* 1 if a v-table method */
+ int is_vtable_method; /* 1 if a vtable */
int is_method; /* 1 if a method */
int has_ns_entry_name;/* 1 if in ns */
- char *vtable_name; /* v-table method name, if any */
+ char *vtable_name; /* vtable name, if any */
char *method_name; /* method name, if any */
char *ns_entry_name; /* ns entry name, if any */
char *instance_of; /* PMC or class this is an instance of
Modified: branches/ops_pct/compilers/pct/src/PAST/Compiler.pir
==============================================================================
--- branches/ops_pct/compilers/pct/src/PAST/Compiler.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pct/src/PAST/Compiler.pir Wed May 5 08:45:29 2010 (r46302)
@@ -102,7 +102,8 @@
piropsig['splice'] = 'PPii'
piropsig['split'] = 'Pss'
piropsig['sub'] = 'PP+'
- piropsig['substr'] = 'Ssiis'
+ piropsig['substr'] = 'Ssii'
+ piropsig['replace'] = 'Ssiis'
piropsig['pow'] = 'NN+'
piropsig['print'] = 'v*'
piropsig['say'] = 'v*'
@@ -1150,7 +1151,7 @@
name = node.'name'()
if name goto call_by_name
## our first child is the thing to be invoked, so make sure it's a PMC
- substr signature, 1, 0, 'P'
+ signature = replace signature, 1, 0, 'P'
(ops, posargs, namedargs) = self.'post_children'(node, 'signature'=>signature)
goto children_done
call_by_name:
Modified: branches/ops_pct/compilers/pct/src/PCT/HLLCompiler.pir
==============================================================================
--- branches/ops_pct/compilers/pct/src/PCT/HLLCompiler.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pct/src/PCT/HLLCompiler.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -55,11 +55,18 @@
$S0 = '???'
push_eh _handler
- $P0 = _config() # currently works in the build tree, but not in the install tree
- $S0 = $P0['revision']
+ $P0 = _config()
+ $S0 = $P0['revision'] # also $I0 = P0['installed'] could be used
_handler:
pop_eh
- $P2 = box 'This compiler is built with the Parrot Compiler Toolkit, parrot revision '
+ $P2 = box 'This compiler is built with the Parrot Compiler Toolkit, parrot '
+ if $S0 goto _revision_lab
+ $P2 .= 'version '
+ $S0 = $P0['VERSION']
+ goto _is_version
+ _revision_lab:
+ $P2 .= 'revision '
+ _is_version:
$P2 .= $S0
$P2 .= '.'
setattribute self, '$version', $P2
@@ -921,7 +928,7 @@
load_dumper:
load_bytecode 'PCT/Dumper.pbc'
- downcase $S0
+ $S0 = downcase $S0
$P0 = get_hll_global ['PCT';'Dumper'], $S0
.tailcall $P0(obj, name)
.end
Modified: branches/ops_pct/compilers/pct/src/POST/Node.pir
==============================================================================
--- branches/ops_pct/compilers/pct/src/POST/Node.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pct/src/POST/Node.pir Wed May 5 08:45:29 2010 (r46302)
@@ -82,7 +82,7 @@
.end
-=item get_string() # vtable method
+=item get_string()
Returns the result of the current node as a string.
Modified: branches/ops_pct/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/ops_pct/compilers/pge/PGE/Exp.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pge/PGE/Exp.pir Wed May 5 08:45:29 2010 (r46302)
@@ -163,7 +163,7 @@
.local string returnop
returnop = '.yield'
code.'emit'(<<" CODE", name, pirflags, namecorou, .INTERPINFO_CURRENT_SUB)
- .sub %0 :method %1
+ .sub %0 :method :nsentry %1
.param pmc adverbs :slurpy :named
.local pmc mob
.const 'Sub' corou = %2
@@ -192,7 +192,7 @@
## Initial code for a rule that cannot be backtracked into.
returnop = '.return'
code.'emit'(<<" CODE", name, pirflags)
- .sub %0 :method %1
+ .sub %0 :method :nsentry %1
.param pmc adverbs :unique_reg :slurpy :named
.local pmc mob
.local string target :unique_reg
@@ -362,7 +362,7 @@
args['I'] = ''
$I0 = self['ignorecase']
if $I0 == 0 goto ignorecase_end
- args['I'] = 'downcase $S0'
+ args['I'] = '$S0 = downcase $S0'
literal = downcase literal
ignorecase_end:
@@ -718,7 +718,7 @@
.namespace [ 'PGE';'Exp';'CGroup' ]
-.sub 'pir' :method
+.sub 'pir' :method :nsentry
.param pmc code
.param string label
.param string next
Modified: branches/ops_pct/compilers/pge/PGE/OPTable.pir
==============================================================================
--- branches/ops_pct/compilers/pge/PGE/OPTable.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pge/PGE/OPTable.pir Wed May 5 08:45:29 2010 (r46302)
@@ -155,7 +155,7 @@
unless $S0 goto with_looser
$S0 = tokentable[$S0;'precedence']
$S0 = clone $S0
- substr $S0, -1, 0, '<'
+ $S0 = replace $S0, -1, 0, '<'
token['precedence'] = $S0
with_looser:
@@ -163,7 +163,7 @@
unless $S0 goto with_tighter
$S0 = tokentable[$S0;'precedence']
$S0 = clone $S0
- substr $S0, -1, 0, '>'
+ $S0 = replace $S0, -1, 0, '>'
token['precedence'] = $S0
with_tighter:
@@ -377,7 +377,7 @@
goto key_array_1
key_next:
if key == '' goto token_nows
- chopn key, 1
+ key = chopn key, 1
goto key_loop
token_nows:
if pos == wspos goto oper_not_found
Modified: branches/ops_pct/compilers/pge/PGE/Perl6Regex.pir
==============================================================================
--- branches/ops_pct/compilers/pge/PGE/Perl6Regex.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pge/PGE/Perl6Regex.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1021,7 +1021,7 @@
## by converting to <, <+, <-, or <!
$S0 = substr op, -1, 1
if $S0 != '[' goto parse_loop
- chopn op, 1
+ op = chopn op, 1
goto enum
parse_loop:
Modified: branches/ops_pct/compilers/pge/PGE/Regex.pir
==============================================================================
--- branches/ops_pct/compilers/pge/PGE/Regex.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pge/PGE/Regex.pir Wed May 5 08:45:29 2010 (r46302)
@@ -37,7 +37,7 @@
=cut
-.sub 'ident' :method
+.sub 'ident' :method :nsentry('ident')
.param pmc adverbs :slurpy :named
.local string target
.local pmc mob, mfrom, mpos
Modified: branches/ops_pct/compilers/pirc/Rules.mak
==============================================================================
--- branches/ops_pct/compilers/pirc/Rules.mak Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/Rules.mak Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,5 @@
compilers/pirc/src/piremit$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/piremit.c \
compilers/pirc/src/piremit.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pircompiler.h \
@@ -13,6 +14,7 @@
$(INC_DIR)/oplib/ops.h
compilers/pirc/src/pirparser$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirparser.c \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pirdefines.h \
@@ -30,6 +32,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirerr$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirerr.c \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pirdefines.h \
@@ -44,6 +47,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/bcgen$(O) : \
+ compilers/pirc/src/bcgen.c \
compilers/pirc/src/pirsymbol.h \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pirregalloc.h \
@@ -57,6 +61,7 @@
include/pmc/pmc_namespace.h
compilers/pirc/src/pirregalloc$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirregalloc.c \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pirdefines.h \
@@ -66,25 +71,30 @@
compilers/pirc/src/bcgen.h \
$(INC_DIR)/embed.h
-compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS)
+compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/heredoc/heredocmain.c \
compilers/pirc/macro/macrolexer$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/macro/macrolexer.c \
compilers/pirc/macro/macro.h \
compilers/pirc/macro/lexer.h \
compilers/pirc/macro/macroparser.h
compilers/pirc/macro/macroparser$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/macro/macroparser.c \
compilers/pirc/macro/macro.h \
compilers/pirc/macro/lexer.h \
compilers/pirc/macro/macroparser.h \
compilers/pirc/macro/macrolexer.h
compilers/pirc/src/hdocprep$(O) : $(PARROT_H_HEADERS) \
- $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h
+ $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h \
+ compilers/pirc/src/hdocprep.c
compilers/pirc/src/main$(O) : \
$(PARROT_H_HEADERS) \
$(INC_DIR)/embed.h \
+ compilers/pirc/src/main.c \
compilers/pirc/src/bcgen.h \
compilers/pirc/src/pirparser.h \
compilers/pirc/src/pircompiler.h \
@@ -101,6 +111,7 @@
compilers/pirc/src/pircapi$(O) : \
$(PARROT_H_HEADERS) \
+ compilers/pirc/src/pircapi.c \
compilers/pirc/src/bcgen.h \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pirparser.h \
@@ -116,6 +127,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pircompiler$(O) : \
+ compilers/pirc/src/pircompiler.c \
compilers/pirc/src/pircompiler.h \
$(PARROT_H_HEADERS) \
compilers/pirc/src/piryy.h \
@@ -129,6 +141,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pircompunit$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pircompunit.c \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pirsymbol.h \
@@ -145,6 +158,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirlexer$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirlexer.c \
compilers/pirc/src/pirparser.h \
compilers/pirc/src/pirmacro.h \
compilers/pirc/src/pirerr.h \
@@ -158,6 +172,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirmacro$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirmacro.c \
compilers/pirc/src/pirmacro.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pircompiler.h \
@@ -168,6 +183,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirop$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirop.c \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pircompunit.h \
compilers/pirc/src/pirop.h \
@@ -181,6 +197,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirpcc$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirpcc.c \
compilers/pirc/src/pirpcc.h \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pirerr.h \
@@ -195,6 +212,7 @@
$(INC_DIR)/embed.h
compilers/pirc/src/pirsymbol$(O) : $(PARROT_H_HEADERS) \
+ compilers/pirc/src/pirsymbol.c \
compilers/pirc/src/pircompiler.h \
compilers/pirc/src/pirsymbol.h \
compilers/pirc/src/piryy.h \
Modified: branches/ops_pct/compilers/pirc/src/pircompiler.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pircompiler.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pircompiler.c Wed May 5 08:45:29 2010 (r46302)
@@ -33,9 +33,10 @@
PARROT_WARN_UNUSED_RESULT
static allocated_mem_ptrs * new_mem_ptrs_block(void);
-static void register_ptr(ARGIN(lexer_state *lexer), ARGIN(void *ptr))
+static void register_ptr(ARGMOD(lexer_state *lexer), ARGIN(void *ptr))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*lexer);
static void store_string(
ARGIN(lexer_state * const lexer),
@@ -98,7 +99,7 @@
*/
static void
-register_ptr(ARGIN(lexer_state *lexer), ARGIN(void *ptr))
+register_ptr(ARGMOD(lexer_state *lexer), ARGIN(void *ptr))
{
ASSERT_ARGS(register_ptr)
allocated_mem_ptrs *ptrs = lexer->mem_allocations;
@@ -106,7 +107,7 @@
PARROT_ASSERT(ptrs);
if (ptrs->allocs_in_this_block == NUM_MEM_ALLOCS_PER_BLOCK) {
- allocated_mem_ptrs *newblock = new_mem_ptrs_block();
+ allocated_mem_ptrs * const newblock = new_mem_ptrs_block();
newblock->next = ptrs;
lexer->mem_allocations = newblock;
ptrs = newblock;
@@ -118,8 +119,7 @@
/*
-=item C<void * pir_mem_allocate_zeroed(lexer_state * const lexer, size_t
-numbytes)>
+=item C<void * pir_mem_allocate_zeroed(lexer_state *lexer, size_t numbytes)>
Memory allocation function for all PIR internal functions. Memory is allocated
through Parrot's allocation functions, but the pointer to the allocated memory
@@ -135,9 +135,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
void *
-pir_mem_allocate_zeroed(ARGIN(lexer_state * const lexer), size_t numbytes)
+pir_mem_allocate_zeroed(ARGMOD(lexer_state *lexer), size_t numbytes)
{
- void *ptr = mem_sys_allocate_zeroed(numbytes);
+ void * const ptr = mem_sys_allocate_zeroed(numbytes);
totalmem += numbytes;
Modified: branches/ops_pct/compilers/pirc/src/pircompiler.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pircompiler.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pircompiler.h Wed May 5 08:45:29 2010 (r46302)
@@ -215,10 +215,9 @@
PARROT_MALLOC
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-void * pir_mem_allocate_zeroed(
- ARGIN(lexer_state * const lexer),
- size_t numbytes)
- __attribute__nonnull__(1);
+void * pir_mem_allocate_zeroed(ARGMOD(lexer_state *lexer), size_t numbytes)
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*lexer);
void pirwarning(
ARGIN(lexer_state * const lexer),
Modified: branches/ops_pct/compilers/pirc/src/pircompunit.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pircompunit.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pircompunit.c Wed May 5 08:45:29 2010 (r46302)
@@ -274,9 +274,9 @@
=item C<void set_sub_vtable(lexer_state * const lexer, char const * vtablename)>
Set the :vtable() flag argument to the current subroutine. If C<vtablename>
-is NULL, the name of the current sub is taken to be the vtable method name.
-If the vtable method name (either specified or the current sub's name) is
-in fact not a vtable method, an error message is emitted.
+is NULL, the name of the current sub is taken to be the vtable name.
+If the vtable name (either specified or the current sub's name) is
+not a valid vtable, an error message is emitted.
=cut
@@ -290,15 +290,15 @@
if (vtablename == NULL) /* the sub's name I<is> the vtablename */
vtablename = CURRENT_SUB(lexer)->info.subname;
- /* get the index number of this vtable method */
+ /* get the index number of this vtable */
vtable_index = Parrot_get_vtable_index(lexer->interp,
Parrot_str_new(lexer->interp, vtablename,
strlen(vtablename)));
- /* now check whether the method name actually a vtable method */
+ /* now check whether the method name actually a vtable */
if (vtable_index == -1)
yypirerror(lexer->yyscanner, lexer,
- "'%s' is not a vtable method but was used with :vtable flag", vtablename);
+ "'%s' is not a vtable but was used with :vtable flag", vtablename);
else {
/* test for duplicate :vtable on a sub */
@@ -660,7 +660,7 @@
/*
-=item C<target * new_target(lexer_state * const lexer)>
+=item C<target * new_target(lexer_state *lexer)>
Create a new target node. The node's next pointer is initialized to itself.
@@ -670,16 +670,16 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
target *
-new_target(ARGIN(lexer_state * const lexer))
+new_target(ARGMOD(lexer_state *lexer))
{
- target *t = pir_mem_allocate_zeroed_typed(lexer, target);
+ target * const t = pir_mem_allocate_zeroed_typed(lexer, target);
t->key = NULL;
t->next = t; /* circly linked list */
return t;
}
/*
-=item C<void set_target_key(target * const t, key * const k)>
+=item C<void set_target_key(target *t, key *k)>
Set the key C<k> on target C<t>. For instance:
@@ -691,15 +691,14 @@
*/
void
-set_target_key(ARGIN(target * const t), ARGIN(key * const k))
+set_target_key(ARGMOD(target *t), ARGIN(key *k))
{
t->key = k;
}
/*
-=item C<target * target_from_symbol(lexer_state * const lexer, symbol * const
-sym)>
+=item C<target * target_from_symbol(lexer_state * lexer, symbol *sym)>
Convert symbol C<sym> into a target node. The resulting target has
a pointer to C<sym>.
@@ -710,10 +709,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
target *
-target_from_symbol(ARGIN(lexer_state * const lexer),
- ARGIN(symbol * const sym))
+target_from_symbol(ARGMOD(lexer_state * lexer), ARGIN(symbol *sym))
{
- target *t = new_target(lexer);
+ target * const t = new_target(lexer);
t->flags = sym->flags; /* copy the flags */
t->info = &sym->info;
@@ -738,7 +736,7 @@
PARROT_IGNORABLE_RESULT
PARROT_CANNOT_RETURN_NULL
target *
-add_target(ARGIN(lexer_state * const lexer),
+add_target(SHIM(lexer_state * const lexer),
ARGMOD(target *last), ARGIN(target * const t))
{
PARROT_ASSERT(last);
@@ -1429,7 +1427,7 @@
/*
-=item C<unsigned get_operand_count(lexer_state * const lexer)>
+=item C<unsigned get_operand_count(lexer_state *lexer)>
Returns the number of operands of the I<current> instruction.
This function assumes there is an instruction in place
@@ -1440,7 +1438,7 @@
*/
PARROT_WARN_UNUSED_RESULT
unsigned
-get_operand_count(ARGIN(lexer_state * const lexer))
+get_operand_count(ARGIN(lexer_state *lexer))
{
unsigned count = 0;
expression *first, *operand;
Modified: branches/ops_pct/compilers/pirc/src/pircompunit.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pircompunit.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pircompunit.h Wed May 5 08:45:29 2010 (r46302)
@@ -439,10 +439,9 @@
PARROT_IGNORABLE_RESULT
PARROT_CANNOT_RETURN_NULL
target * add_target(
- ARGIN(lexer_state * const lexer),
+ SHIM(lexer_state * const lexer),
ARGMOD(target *last),
ARGIN(target * const t))
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
FUNC_MODIFIES(*last);
@@ -522,7 +521,7 @@
__attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-unsigned get_operand_count(ARGIN(lexer_state * const lexer))
+unsigned get_operand_count(ARGIN(lexer_state *lexer))
__attribute__nonnull__(1);
void get_operands(ARGIN(lexer_state * const lexer), int bitmask, ...)
@@ -619,8 +618,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-target * new_target(ARGIN(lexer_state * const lexer))
- __attribute__nonnull__(1);
+target * new_target(ARGMOD(lexer_state *lexer))
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*lexer);
void push_operand(
ARGIN(lexer_state * const lexer),
@@ -800,17 +800,17 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-void set_target_key(ARGIN(target * const t), ARGIN(key * const k))
+void set_target_key(ARGMOD(target *t), ARGIN(key *k))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*t);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-target * target_from_symbol(
- ARGIN(lexer_state * const lexer),
- ARGIN(symbol * const sym))
+target * target_from_symbol(ARGMOD(lexer_state * lexer), ARGIN(symbol *sym))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(* lexer);
PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
@@ -869,8 +869,7 @@
PARROT_ASSERT_ARG(lexer) \
, PARROT_ASSERT_ARG(name))
#define ASSERT_ARGS_add_target __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(lexer) \
- , PARROT_ASSERT_ARG(last) \
+ PARROT_ASSERT_ARG(last) \
, PARROT_ASSERT_ARG(t))
#define ASSERT_ARGS_annotate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer) \
Modified: branches/ops_pct/compilers/pirc/src/pirlexer.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirlexer.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pirlexer.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,509 +1,17 @@
-#ifndef yypirHEADER_H
-#define yypirHEADER_H 1
-#define yypirIN_HEADER 1
-
-#line 6 "pirlexer.h"
-#line 2 "pir.l"
-
-/* ex: set ro ft=c:
- * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- *
- * This file is generated automatically by the Parrot build process
- * from the file compilers/pirc/new/pir.l.
- *
- * Any changes made here will be lost!
- *
-*/
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER STOP */
-
-#ifndef __STDC_VERSION__
-# define __STDC_VERSION__ 0
-#endif
-
-#ifndef YY_NO_UNISTD_H
-# define YY_NO_UNISTD_H
-#endif
-
-/* prevent warnings on undefined #defines: */
-#ifndef YY_MAIN
-# define YY_MAIN 0
-#endif
-
-#ifndef YY_ALWAYS_INTERACTIVE
-# define YY_ALWAYS_INTERACTIVE 0
-#endif
-
-#include <stdlib.h> /* for size_t */
-typedef size_t yy_size_t;
-#define YY_TYPEDEF_YY_SIZE_T
-
-
-
-
-#line 46 "pirlexer.h"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-/* %not-for-header */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* %if-c++-only */
-/* %endif */
-
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-c-only */
-
-/* %endif */
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-/* %if-c-only */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-/* %endif */
-
-/* %if-tables-serialization */
-/* %endif */
-/* end standard C headers. */
-
-/* %if-c-or-c++ */
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
+/*
+ * Copyright (C) 2010, Parrot Foundation.
+ * $Id$
*/
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* %not-for-header */
-
-/* %not-for-header */
-
-/* %if-reentrant */
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
- are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-/* %endif */
-
-/* %if-not-reentrant */
-/* %endif */
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-/* %if-not-reentrant */
-/* %endif */
-
-/* %if-c-only */
-/* %if-not-reentrant */
-/* %endif */
-/* %endif */
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
-/* %if-c-only */
- FILE *yy_input_file;
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- yy_size_t yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* %if-c-only Standard (non-C++) definition */
-/* %not-for-header */
-
-/* %endif */
-
-/* %if-c-only Standard (non-C++) definition */
-
-/* %if-not-reentrant */
-/* %not-for-header */
-/* %endif */
+#ifndef PARROT_PIR_PIRLEXER_H_GUARD
+#define PARROT_PIR_PIRLEXER_H_GUARD
-void yypirrestart (FILE *input_file ,yyscan_t yyscanner );
-void yypir_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yypir_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yypir_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypir_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypirpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypirpop_buffer_state (yyscan_t yyscanner );
-YY_BUFFER_STATE yypir_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yypir_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yypir_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
+#endif /* PARROT_PIR_PIRLEXER_H_GUARD */
-/* %endif */
-
-void *yypiralloc (yy_size_t ,yyscan_t yyscanner );
-void *yypirrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yypirfree (void * ,yyscan_t yyscanner );
-
-/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
-/* Begin user sect3 */
-
-#define yypirwrap(n) 1
-#define YY_SKIP_YYWRAP
-
-#define FLEX_DEBUG
-
-#define yytext_ptr yytext_r
-
-/* %if-c-only Standard (non-C++) definition */
-
-/* %endif */
-
-#ifdef YY_HEADER_EXPORT_START_CONDITIONS
-#define INITIAL 0
-#define MACROHEAD 1
-#define MACROBODY 2
-#define MACROLOCAL 3
-#define MACROLABEL 4
-#define MACROEXPAND 5
-#define MACROCONST 6
-#define SCANSTR 7
-#define SCANMACRO 8
-#define STRINGEXPAND 9
-#define SPECIALSTART 10
-#define PASM 11
-
-#endif
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-/* %if-c-only */
-#include <unistd.h>
-/* %endif */
-/* %if-c++-only */
-/* %endif */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* %if-c-only Reentrant structure and macros (non-C++). */
-/* %if-reentrant */
-
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-reentrant */
-
-int yypirlex_init (yyscan_t* scanner);
-
-int yypirlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
-/* %endif */
-
-/* %endif End reentrant structures and macros. */
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int yypirlex_destroy (yyscan_t yyscanner );
-
-int yypirget_debug (yyscan_t yyscanner );
-
-void yypirset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yypirget_extra (yyscan_t yyscanner );
-
-void yypirset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yypirget_in (yyscan_t yyscanner );
-
-void yypirset_in (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yypirget_out (yyscan_t yyscanner );
-
-void yypirset_out (FILE * out_str ,yyscan_t yyscanner );
-
-yy_size_t yypirget_leng (yyscan_t yyscanner );
-
-char *yypirget_text (yyscan_t yyscanner );
-
-int yypirget_lineno (yyscan_t yyscanner );
-
-void yypirset_lineno (int line_number ,yyscan_t yyscanner );
-
-/* %if-bison-bridge */
-
-YYSTYPE * yypirget_lval (yyscan_t yyscanner );
-
-void yypirset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
-
-/* %endif */
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
*/
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yypirwrap (yyscan_t yyscanner );
-#else
-extern int yypirwrap (yyscan_t yyscanner );
-#endif
-#endif
-
-/* %not-for-header */
-
-/* %endif */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-/* %if-c-only Standard (non-C++) definition */
-/* %not-for-header */
-
-/* %endif */
-#endif
-
-/* %if-c-only */
-
-/* %endif */
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* %if-tables-serialization structures and prototypes */
-/* %not-for-header */
-
-/* %not-for-header */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-/* %if-c-only Standard (non-C++) definition */
-
-extern int yypirlex \
- (YYSTYPE * yylval_param ,yyscan_t yyscanner);
-
-#define YY_DECL int yypirlex \
- (YYSTYPE * yylval_param , yyscan_t yyscanner)
-/* %endif */
-/* %if-c++-only C++ definition */
-/* %endif */
-#endif /* !YY_DECL */
-
-/* %not-for-header */
-
-/* %if-c++-only */
-/* %not-for-header */
-
-/* %endif */
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-/* %if-c-only */
-/* %not-for-header */
-
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-
-#line 1199 "pir.l"
-
-
-#line 508 "pirlexer.h"
-#undef yypirIN_HEADER
-#endif /* yypirHEADER_H */
Modified: branches/ops_pct/compilers/pirc/src/pirparser.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirparser.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pirparser.c Wed May 5 08:45:29 2010 (r46302)
@@ -411,31 +411,39 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
static void check_first_arg_direction(
- lexer_state * const lexer,
- NOTNULL(char const * const opname))
- __attribute__nonnull__(2);
+ ARGMOD(lexer_state *lexer),
+ ARGIN(char const *opname))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*lexer);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
static char * concat_strings(
- NOTNULL(lexer_state * const lexer),
- NOTNULL(char const * a),
- NOTNULL(char const * b))
+ ARGMOD(lexer_state *lexer),
+ ARGIN(const char * a),
+ ARGIN(const char * b))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*lexer);
static void create_if_instr(
- NOTNULL(lexer_state * const lexer),
+ ARGMOD(lexer_state *lexer),
int invert,
int hasnull,
- NOTNULL(char const * const name),
- NOTNULL(char const * const label))
+ ARGIN(const char *name),
+ ARGIN(const char *label))
__attribute__nonnull__(1)
__attribute__nonnull__(4)
- __attribute__nonnull__(5);
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*lexer);
+
+static void do_strength_reduction(ARGMOD(lexer_state *lexer))
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*lexer);
-static void do_strength_reduction(lexer_state * const lexer);
PARROT_WARN_UNUSED_RESULT
static int evaluate_i_i(int a, pir_rel_operator op, int b);
@@ -446,8 +454,11 @@
static int evaluate_n_i(double a, pir_rel_operator op, int b);
static void undeclared_symbol(
- lexer_state * const lexer,
- char const * const symbol);
+ ARGMOD(lexer_state *lexer),
+ ARGIN(char const *symbol))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*lexer);
static void yy_reduce_print (
YYSTYPE *yyvsp,
@@ -483,7 +494,8 @@
static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar);
static YYSIZE_T yytnamerr (char *yyres, const char *yystr);
#define ASSERT_ARGS_check_first_arg_direction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(opname))
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(opname))
#define ASSERT_ARGS_concat_strings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lexer) \
, PARROT_ASSERT_ARG(a) \
@@ -492,11 +504,14 @@
PARROT_ASSERT_ARG(lexer) \
, PARROT_ASSERT_ARG(name) \
, PARROT_ASSERT_ARG(label))
-#define ASSERT_ARGS_do_strength_reduction __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_do_strength_reduction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer))
#define ASSERT_ARGS_evaluate_i_i __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_evaluate_i_n __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_evaluate_n_i __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_undeclared_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_undeclared_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(lexer) \
+ , PARROT_ASSERT_ARG(symbol))
#define ASSERT_ARGS_yy_reduce_print __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_yy_stack_print __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_yy_symbol_print __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -5510,8 +5525,8 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static constant *
-fold_s_s(yyscan_t yyscanner, NOTNULL(char const *a), pir_math_operator op, NOTNULL(char const *b)) {
- lexer_state *lexer = (lexer_state *)yypirget_extra(yyscanner);
+fold_s_s(yyscan_t yyscanner, ARGIN(const char *a), pir_math_operator op, ARGIN(char const *b)) {
+ lexer_state * const lexer = (lexer_state *)yypirget_extra(yyscanner);
switch (op) {
case OP_CONCAT:
return new_const(lexer, STRING_VAL, concat_strings(lexer, a, b));
@@ -5650,8 +5665,8 @@
*/
PARROT_WARN_UNUSED_RESULT
static int
-evaluate_s_s(NOTNULL(char const * const a), pir_rel_operator op, NOTNULL(char const * const b)) {
- int result = strcmp(a, b); /* do /not/ use STREQ; we're interested in the result. */
+evaluate_s_s(ARGIN(const char *a), pir_rel_operator op, ARGIN(const char *b)) {
+ const int result = strcmp(a, b); /* do /not/ use STREQ; we're interested in the result. */
switch (op) {
case OP_NE:
@@ -5685,8 +5700,8 @@
*/
PARROT_WARN_UNUSED_RESULT
static int
-evaluate_s(NOTNULL(char const * const s)) {
- int strlen_s = strlen(s);
+evaluate_s(ARGIN(char const *s)) {
+ const size_t strlen_s = strlen(s);
if (strlen_s > 0) {
if (strlen_s <= 3) { /* if strlen > 3, (max. nr of characters to represent "0")
@@ -5717,7 +5732,7 @@
*/
PARROT_WARN_UNUSED_RESULT
static int
-evaluate_c(NOTNULL(lexer_state * const lexer), NOTNULL(constant * const c)) {
+evaluate_c(ARGIN(lexer_state * const lexer), ARGIN(const constant *c)) {
switch (c->type) {
case INT_VAL:
return (c->val.ival != 0);
@@ -5735,8 +5750,8 @@
/*
-=item C<static char * concat_strings(lexer_state * const lexer, char const * a,
-char const * b)>
+=item C<static char * concat_strings(lexer_state *lexer, const char * a, const
+char * b)>
Concatenates two strings into a new buffer. The new string is returned.
@@ -5745,12 +5760,13 @@
*/
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
static char *
-concat_strings(NOTNULL(lexer_state * const lexer), NOTNULL(char const * a),
- NOTNULL(char const * b))
+concat_strings(ARGMOD(lexer_state *lexer), ARGIN(const char * a),
+ ARGIN(const char * b))
{
- int strlen_a = strlen(a);
- char *newstr = (char *)pir_mem_allocate_zeroed(lexer, (strlen_a + strlen(b) + 1)
+ const size_t strlen_a = strlen(a);
+ const char * const newstr = (char *)pir_mem_allocate_zeroed(lexer, (strlen_a + strlen(b) + 1)
* sizeof (char));
strcpy(newstr, a);
strcpy(newstr + strlen_a, b);
@@ -5761,8 +5777,8 @@
/*
-=item C<static void create_if_instr(lexer_state * const lexer, int invert, int
-hasnull, char const * const name, char const * const label)>
+=item C<static void create_if_instr(lexer_state *lexer, int invert, int hasnull,
+const char *name, const char *label)>
Create an C<if> or C<unless> instruction; if C<invert> is non-zero (true), the
C<if> instruction is inverted, effectively becoming C<unless>.
@@ -5776,9 +5792,8 @@
*/
static void
-create_if_instr(NOTNULL(lexer_state * const lexer), int invert, int hasnull,
- NOTNULL(char const * const name),
- NOTNULL(char const * const label))
+create_if_instr(ARGMOD(lexer_state *lexer), int invert, int hasnull,
+ ARGIN(const char *name), ARGIN(const char *label))
{
/* try to find the symbol; if it was declared it will be found; otherwise emit an error. */
symbol *sym = find_symbol(lexer, name);
@@ -6009,7 +6024,7 @@
/*
-=item C<static void do_strength_reduction(lexer_state * const lexer)>
+=item C<static void do_strength_reduction(lexer_state *lexer)>
Implement strength reduction for the math operators C<add>, C<sub>, C<mul>, C<div> and C<fdiv>.
If the current instruction is any of these, then the first two operands are checked; if both
@@ -6034,7 +6049,7 @@
*/
static void
-do_strength_reduction(lexer_state * const lexer) {
+do_strength_reduction(ARGMOD(lexer_state *lexer)) {
instruction *instr;
expression *arg1;
expression *arg2;
@@ -6138,13 +6153,13 @@
break;
}
-
+ return;
}
/*
-=item C<static void check_first_arg_direction(lexer_state * const lexer, char
-const * const opname)>
+=item C<static void check_first_arg_direction(lexer_state *lexer, char const
+*opname)>
This function checks the first argument's direction of the op C<opname>.
If the direction is not C<OUT>, a syntax error is emitted. This function assumes
@@ -6164,7 +6179,7 @@
*/
static void
-check_first_arg_direction(lexer_state * const lexer, NOTNULL(char const * const opname)) {
+check_first_arg_direction(ARGMOD(lexer_state *lexer), ARGIN(char const *opname)) {
int dir_first_arg;
/* op_count also counts the instruction itself, so must be at least 2 */
@@ -6174,7 +6189,7 @@
if (!CURRENT_INSTRUCTION(lexer)->opinfo->dirs)
fprintf(stderr, "no opinfo->dirs!\n");
else {
- op_info_t *opinfo = CURRENT_INSTRUCTION(lexer)->opinfo;
+ const op_info_t * const opinfo = CURRENT_INSTRUCTION(lexer)->opinfo;
if (opinfo)
dir_first_arg = CURRENT_INSTRUCTION(lexer)->opinfo->dirs[0];
@@ -6188,7 +6203,6 @@
if (dir_first_arg != PARROT_ARGDIR_OUT)
yypirerror(lexer->yyscanner, lexer, "cannot write first arg of op '%s' as a target "
"(direction of argument is IN/INOUT).", opname);
-
}
@@ -6214,12 +6228,10 @@
*/
PARROT_WARN_UNUSED_RESULT
static int
-check_op_args_for_symbols(lexer_state * const lexer) {
+check_op_args_for_symbols(ARGMOD(lexer_state *lexer)) {
struct op_info_t * opinfo;
unsigned short i;
short opcount;
- unsigned num_operands;
- char *fullopname;
int opcode;
int result;
int label_bitmask = 0; /* an int is at least 32 bits;
@@ -6229,9 +6241,10 @@
*/
/* iterate over all operands to set the type and PASM register on all target nodes, if any */
- num_operands = get_operand_count(lexer);
+ const unsigned int num_operands = get_operand_count(lexer);
+
for (i = 0; i < num_operands; i++) {
- expression *operand = get_operand(lexer, i + 1); /* get_operand counts from 1 */
+ expression * const operand = get_operand(lexer, i + 1); /* get_operand counts from 1 */
if (operand->type == EXPR_IDENT) { /* op_arg ::= identifier */
/* the operand is an identifier, check now whether it was a symbol. If so,
@@ -6317,8 +6330,7 @@
/*
-=item C<static void undeclared_symbol(lexer_state * const lexer, char const *
-const symbol)>
+=item C<static void undeclared_symbol(lexer_state *lexer, char const *symbol)>
Report an error message saying that C<symbol> was not declared. Then test
whether the symbol is perhaps a PASM register identifier. The user may have
@@ -6328,7 +6340,7 @@
*/
static void
-undeclared_symbol(lexer_state * const lexer, char const * const symbol) {
+undeclared_symbol(ARGMOD(lexer_state *lexer), ARGIN(char const *symbol)) {
if (TEST_FLAG(lexer->flags, LEXER_FLAG_PASMFILE)) {
yypirerror(lexer->yyscanner, lexer,
"cannot use symbols in PASM mode ('%s')", symbol);
Modified: branches/ops_pct/compilers/pirc/src/pirsymbol.c
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirsymbol.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pirsymbol.c Wed May 5 08:45:29 2010 (r46302)
@@ -73,10 +73,11 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static pir_reg * new_pir_reg(
- ARGIN(lexer_state * const lexer),
+ ARGMOD(lexer_state *lexer),
pir_type type,
int regno)
- __attribute__nonnull__(1);
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*lexer);
static int next_register(ARGIN(lexer_state * const lexer), pir_type type)
__attribute__nonnull__(1);
@@ -386,8 +387,7 @@
/*
-=item C<symbol * find_symbol(lexer_state * const lexer, char const * const
-name)>
+=item C<symbol * find_symbol(lexer_state *lexer, const char *name)>
Return the node for the symbol or NULL if the symbol
is not defined. If an attempt is made to find a symbol,
@@ -400,8 +400,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
symbol *
-find_symbol(ARGIN(lexer_state * const lexer),
- ARGIN(char const * const name))
+find_symbol(ARGMOD(lexer_state *lexer), ARGIN(const char *name))
{
ASSERT_ARGS(find_symbol)
hashtable *table = &CURRENT_SUB(lexer)->symbols;
@@ -411,7 +410,7 @@
while (buck) {
- symbol *sym = bucket_symbol(buck);
+ symbol * const sym = bucket_symbol(buck);
if (STREQ(sym->info.id.name, name)) {
@@ -441,8 +440,8 @@
/*
-=item C<static pir_reg * new_pir_reg(lexer_state * const lexer, pir_type type,
-int regno)>
+=item C<static pir_reg * new_pir_reg(lexer_state *lexer, pir_type type, int
+regno)>
Create a new PIR register node representing PIR/symbolic register
identified by C<regno> and of type C<type>.
@@ -453,7 +452,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static pir_reg *
-new_pir_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+new_pir_reg(ARGMOD(lexer_state *lexer), pir_type type, int regno)
{
ASSERT_ARGS(new_pir_reg)
pir_reg *r = pir_mem_allocate_zeroed_typed(lexer, pir_reg);
Modified: branches/ops_pct/compilers/pirc/src/pirsymbol.h
==============================================================================
--- branches/ops_pct/compilers/pirc/src/pirsymbol.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/compilers/pirc/src/pirsymbol.h Wed May 5 08:45:29 2010 (r46302)
@@ -130,11 +130,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
-symbol * find_symbol(
- ARGIN(lexer_state * const lexer),
- ARGIN(char const * const name))
+symbol * find_symbol(ARGMOD(lexer_state *lexer), ARGIN(const char *name))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*lexer);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
Modified: branches/ops_pct/config/auto/arch.pm
==============================================================================
--- branches/ops_pct/config/auto/arch.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/auto/arch.pm Wed May 5 08:45:29 2010 (r46302)
@@ -29,6 +29,13 @@
my %data;
$data{description} = q{Determine CPU architecture and OS};
$data{result} = q{};
+ my $unamep;
+ eval {
+ chomp( $unamep = `uname -p` ) unless ($^O eq 'MSWin32');
+ };
+ $data{unamep} = (! $@ and $unamep)
+ ? $unamep
+ : undef;
return \%data;
}
@@ -60,12 +67,9 @@
# the above split fails because archname is "darwin-thread-multi-2level".
if ( $cpuarch =~ /darwin/ ) {
$osname = 'darwin';
- if ( $conf->data->get('byteorder') =~ /^1234/ ) {
- $cpuarch = 'i386';
- }
- else {
- $cpuarch = 'ppc';
- }
+ $cpuarch = ( $self->{unamep} eq 'powerpc' )
+ ? 'ppc'
+ : 'i386';
}
# cpuarch and osname are reversed in archname on windows
Modified: branches/ops_pct/config/auto/attributes.pm
==============================================================================
--- branches/ops_pct/config/auto/attributes.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/auto/attributes.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -40,8 +40,11 @@
HASATTRIBUTE_PURE
HASATTRIBUTE_UNUSED
HASATTRIBUTE_WARN_UNUSED_RESULT
+ HASATTRIBUTE_HOT
+ HASATTRIBUTE_COLD
HASATTRIBUTE_NEVER_WORKS
);
+# HASATTRIBUTE_NEVER_WORKS is at the end just to prove that it's possible to fail.
sub runstep {
my ( $self, $conf ) = @_;
Modified: branches/ops_pct/config/auto/attributes/test_c.in
==============================================================================
--- branches/ops_pct/config/auto/attributes/test_c.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/auto/attributes/test_c.in Wed May 5 08:45:29 2010 (r46302)
@@ -32,6 +32,16 @@
purefunc(int x);
+__attribute__hot__
+int
+hotfunc(int x);
+
+
+__attribute__cold__
+int
+coldfunc(int x);
+
+
static int
useless(void) { int x __attribute__unused__; return 0; }
Deleted: branches/ops_pct/config/auto/cgoto.pm
==============================================================================
--- branches/ops_pct/config/auto/cgoto.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,82 +0,0 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/cgoto.pm - Computed C<goto>
-
-=head1 DESCRIPTION
-
-Determines whether the compiler supports computed C<goto>.
-
-=cut
-
-package auto::cgoto;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-sub _init {
- my $self = shift;
- return {
- 'description' => 'Does your compiler support computed goto',
- 'result' => '',
- };
-}
-
-sub runstep {
- my ( $self, $conf ) = @_;
-
- my $test = _probe_for_cgoto( $conf );
-
- $self->_evaluate_cgoto($conf, $test);
-
- return 1;
-}
-
-sub _probe_for_cgoto {
- my $conf = shift;
- my $cgoto = $conf->options->get('cgoto');
- my $test;
- if ( defined $cgoto ) {
- $test = $cgoto;
- }
- else {
- $conf->cc_gen('config/auto/cgoto/test_c.in');
- $test = eval { $conf->cc_build(); 1; } || 0;
- $conf->cc_clean();
- }
- return $test;
-}
-
-sub _evaluate_cgoto {
- my ($self, $conf, $test) = @_;
- my $verbose = $conf->options->get('verbose');
- if ($test) {
- $conf->data->set(
- cg_flag => '-DHAVE_COMPUTED_GOTO'
- );
- print " (yes) " if $verbose;
- $self->set_result('yes');
- }
- else {
- $conf->data->set(
- cg_flag => ''
- );
- print " (no) " if $verbose;
- $self->set_result('no');
- }
-}
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/config/auto/crypto.pm
==============================================================================
--- branches/ops_pct/config/auto/crypto.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,93 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/crypto.pm - Test for crypto library (libssl)
-
-=head1 DESCRIPTION
-
-This library is linked to a dynamic PMC.
-
-See L<http://www.openssl.org>
-
-=cut
-
-package auto::crypto;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-
-sub _init {
- my $self = shift;
- my %data;
- $data{description} = q{Does your platform support crypto};
- $data{result} = q{};
- return \%data;
-}
-
-sub runstep {
- my ( $self, $conf ) = @_;
-
- my ( $verbose, $without ) = $conf->options->get(
- qw|
- verbose
- without-crypto
- |
- );
-
- if ($without) {
- $conf->data->set( has_crypto => 0 );
- $self->set_result('no');
- return 1;
- }
-
- my $osname = $conf->data->get('osname');
-
- my $extra_libs = $self->_select_lib( {
- conf => $conf,
- osname => $osname,
- cc => $conf->data->get('cc'),
- win32_nongcc => 'libcrypto.lib',
- default => '-lcrypto',
- } );
-
- $conf->cc_gen('config/auto/crypto/crypto_c.in');
- eval { $conf->cc_build( q{}, $extra_libs); };
- my $has_crypto = 0;
- if ( !$@ ) {
- my $test = $conf->cc_run();
- $has_crypto = $self->_evaluate_cc_run($conf, $test, $has_crypto, $verbose);
- }
- $conf->data->set( has_crypto => $has_crypto ); # for dynpmc.in & digest.t
- $self->set_result($has_crypto ? 'yes' : 'no');
-
- return 1;
-}
-
-sub _evaluate_cc_run {
- my $self = shift;
- my ($conf, $test, $has_crypto, $verbose) = @_;
- if ( $test =~ m/^OpenSSL (\d\.\d\.\d\w?)/ ) {
- my $version = $1;
- $has_crypto = 1;
- $conf->data->set( openssl_version => $version );
- print " (yes) " if $verbose;
- $self->set_result("yes, $version");
- }
- return $has_crypto;
-}
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/config/auto/gdbm.pm
==============================================================================
--- branches/ops_pct/config/auto/gdbm.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,96 +0,0 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/auto/gdbm.pm - Test for GNU dbm (gdbm) library
-
-=head1 DESCRIPTION
-
-Determines whether the platform supports gdbm. This is needed for the dynamic
-GDBMHash PMC.
-
-From L<http://www.gnu.org/software/gdbm/>: "GNU dbm is a set of database
-routines that use extensible hashing. It works similar to the standard Unix
-dbm routines."
-
-=cut
-
-package auto::gdbm;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':auto';
-
-
-sub _init {
- my $self = shift;
- my %data;
- $data{description} = q{Does your platform support gdbm};
- $data{result} = q{};
- return \%data;
-}
-
-sub runstep {
- my ( $self, $conf ) = @_;
-
- my ( $verbose, $without ) = $conf->options->get(
- qw|
- verbose
- without-gdbm
- |
- );
-
- if ($without) {
- $conf->data->set( has_gdbm => 0 );
- $self->set_result('no');
- return 1;
- }
-
- my $osname = $conf->data->get('osname');
-
- my $extra_libs = $self->_select_lib( {
- conf => $conf,
- osname => $osname,
- cc => $conf->data->get('cc'),
- win32_gcc => '-llibgdbm',
- win32_nongcc => 'gdbm.lib',
- default => '-lgdbm',
- } );
-
- $conf->cc_gen('config/auto/gdbm/gdbm_c.in');
- eval { $conf->cc_build( q{}, $extra_libs ); };
- my $has_gdbm = 0;
- if ( !$@ ) {
- my $test = $conf->cc_run();
- unlink "gdbm_test_db";
- $has_gdbm = $self->_evaluate_cc_run($test, $has_gdbm, $verbose);
- }
- $conf->data->set( has_gdbm => $has_gdbm ); # for gdbmhash.t and dynpmc.in
- $self->set_result($has_gdbm ? 'yes' : 'no');
-
- return 1;
-}
-
-sub _evaluate_cc_run {
- my $self = shift;
- my ($test, $has_gdbm, $verbose) = @_;
- if ( $test eq "gdbm is working.\n" ) {
- $has_gdbm = 1;
- print " (yes) " if $verbose;
- $self->set_result('yes');
- }
- return $has_gdbm;
-}
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/config/auto/warnings.pm
==============================================================================
--- branches/ops_pct/config/auto/warnings.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/auto/warnings.pm Wed May 5 08:45:29 2010 (r46302)
@@ -113,6 +113,7 @@
-Wcomment
-Wdisabled-optimization
-Wdiv-by-zero
+ -Wenum-compare
-Wendif-labels
-Wextra
-Wformat
@@ -125,6 +126,7 @@
-Winit-self
-Winline
-Winvalid-pch
+ -Wjump-misses-init
-Wlogical-op
-Wmissing-braces
-Wmissing-field-initializers
@@ -137,7 +139,6 @@
-Wpointer-sign
-Wreturn-type
-Wsequence-point
- -Wno-shadow
-Wsign-compare
-Wstrict-aliasing
-Wstrict-aliasing=2
@@ -154,7 +155,7 @@
$gcc->{'basic'} = [ @gcc_or_gpp ];
$gpp->{'basic'} = [ @gcc_or_gpp ];
- # Add some gcc only warnings that would break g++
+ # Add some gcc-only warnings that would break g++
push @{$gcc->{'basic'}}, qw(
-Wbad-function-cast
-Wc++-compat
@@ -173,7 +174,7 @@
my $gcc_or_gpp_cage = [ qw(
-std=c89
- -Werror-implicit-function-declaration
+ -Werror=implicit-function-declaration
-Wformat=2
-Wlarger-than-4096
-Wlong-long
@@ -193,63 +194,75 @@
$gpp->{'cage'} = $gcc_or_gpp_cage;
$gcc->{'todo'} = $gpp->{'todo'} = {
- '-Wformat-nonliteral' => [
- 'src/spf_render.c',
- 'compilers/imcc/optimizer.c',
- ],
- '-Wstrict-prototypes' => [
- 'src/nci/extra_thunks.c',
- 'src/extra_nci_thunks.c',
- ],
+ '-Wformat-nonliteral' => [ qw(
+ src/spf_render.c
+ compilers/imcc/optimizer.c
+ ) ],
+ '-Wstrict-prototypes' => [ qw(
+ src/nci/extra_thunks.c
+ src/extra_nci_thunks.c
+ ) ],
};
$gcc->{'never'} = $gpp->{'never'} = {
- '-Wformat-nonliteral' => [
- 'compilers/imcc/imclexer.c',
- ],
- '-Wswitch-default' => [
- 'compilers/imcc/imclexer.c',
- ],
- '-Wcast-qual' => [
- 'compilers/imcc/imcparser.c',
- ],
- '-Wlogical-op' => [
- 'compilers/imcc/imcparser.c',
- ],
+ '-Wformat-nonliteral' => [ qw(
+ compilers/imcc/imclexer.c
+ ) ],
+ '-Wswitch-default' => [ qw(
+ compilers/imcc/imclexer.c
+ ) ],
+ '-Wcast-qual' => [ qw(
+ compilers/imcc/imcparser.c
+ ) ],
+ '-Wlogical-op' => [ qw(
+ compilers/imcc/imcparser.c
+ ) ],
};
+ # Warning flags docs
+ # http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/index.htm
+
$icc->{'basic'} = [ qw(
- -wd269
- -wd1572
- -wd1599
- -wd181
- -wd869
- -wd981
- -wd1419
- -wd117
- -wd810
- -wd177
- -wd1296
- -Wall
- -Wcheck
-w2
-Wabi
+ -Wall
+ -Wcheck
-Wcomment
-Wdeprecated
+ -Weffc++
+ -Wextra-tokens
+ -Wformat
+ -Wformat-security
-Wmain
+ -Wmissing-declarations
-Wmissing-prototypes
-Wpointer-arith
+ -Wport
-Wreturn-type
+ -Wshadow
-Wstrict-prototypes
-Wuninitialized
-Wunknown-pragmas
-Wunused-function
-Wunused-variable
- )];
+ -Wwrite-strings
+ ),
+ # Disable some warnings and notifications that are overly noisy
+ '-diag-disable 271', # trailing comma is nonstandard
+ '-diag-disable 981', # operands are evaluated in unspecified order
+ '-diag-disable 1572', # floating-point equality and inequality comparisons are unreliable
+ '-diag-disable 2259', # non-pointer conversion from "typeA" to "typeB" may lose significant bits
+ ];
+ $icc->{'cage'} = [
+ # http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/bldaps_cls/common/bldaps_svover.htm
+ '-diag-enable sc3',
+ '-diag-enable sc-include',
+ ];
$data->{'warnings'}{'gcc'} = $gcc;
$data->{'warnings'}{'g++'} = $gpp;
$data->{'warnings'}{'icc'} = $icc;
+ $data->{'warnings'}{'clang'} = $gcc;
## end gcc/g++
@@ -269,6 +282,9 @@
elsif ( $conf->option_or_data('cc') =~ /icc/ ) {
$compiler = 'icc';
}
+ elsif ( $conf->option_or_data('cc') =~ /clang/ ) {
+ $compiler = 'clang';
+ }
if ($compiler eq '') {
print "We do not (yet) probe for warnings for your compiler\n"
@@ -374,7 +390,7 @@
$verbose and print " output: $output\n";
- if ( $output !~ /error|warning|not supported/i ) {
+ if ( $output !~ /\berror|warning|not supported|ignoring (unknown )?option\b/i ) {
push @{$self->{'validated'}}, $warning;
$verbose and print " valid warning: '$warning'\n";
return 1;
Copied: branches/ops_pct/config/auto/zlib.pm (from r46301, trunk/config/auto/zlib.pm)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/config/auto/zlib.pm Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/config/auto/zlib.pm)
@@ -0,0 +1,90 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+config/auto/zlib.pm - Test for zlib library
+
+=head1 DESCRIPTION
+
+This library is linked to a dynamic PMC.
+
+=cut
+
+package auto::zlib;
+
+use strict;
+use warnings;
+
+use base qw(Parrot::Configure::Step);
+
+use Parrot::Configure::Utils ':auto';
+
+
+sub _init {
+ my $self = shift;
+ my %data;
+ $data{description} = q{Does your platform support zlib};
+ $data{result} = q{};
+ return \%data;
+}
+
+sub runstep {
+ my ( $self, $conf ) = @_;
+
+ my ( $verbose, $without ) = $conf->options->get(
+ qw|
+ verbose
+ without-zlib
+ |
+ );
+
+ if ($without) {
+ $conf->data->set( has_zlib => 0 );
+ $self->set_result('no');
+ return 1;
+ }
+
+ my $osname = $conf->data->get('osname');
+
+ my $extra_libs = $self->_select_lib( {
+ conf => $conf,
+ osname => $osname,
+ cc => $conf->data->get('cc'),
+ win32_nongcc => 'zlib.lib',
+ default => '-lz',
+ } );
+
+ $conf->cc_gen('config/auto/zlib/zlib_c.in');
+ eval { $conf->cc_build( q{}, $extra_libs); };
+ my $has_zlib = 0;
+ if ( !$@ ) {
+ my $test = $conf->cc_run();
+ $has_zlib = $self->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+ }
+ $conf->data->set( has_zlib => $has_zlib );
+ $self->set_result($has_zlib ? 'yes' : 'no');
+
+ return 1;
+}
+
+sub _evaluate_cc_run {
+ my $self = shift;
+ my ($conf, $test, $has_zlib, $verbose) = @_;
+ if ( $test =~ m/^(\d\.\d\.\d)/ ) {
+ my $version = $1;
+ $has_zlib = 1;
+ print " (yes) " if $verbose;
+ $self->set_result("yes, $version");
+ }
+ return $has_zlib;
+}
+
+1;
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Copied: branches/ops_pct/config/auto/zlib/zlib_c.in (from r46301, trunk/config/auto/zlib/zlib_c.in)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/config/auto/zlib/zlib_c.in Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/config/auto/zlib/zlib_c.in)
@@ -0,0 +1,27 @@
+/*
+ Copyright (C) 2010, Parrot Foundation.
+ $Id$
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <zlib.h>
+
+int
+main(int argc, char *argv[])
+{
+ if (0 == strcmp(ZLIB_VERSION, zlibVersion())) {
+ printf("%s\n", ZLIB_VERSION);
+ return EXIT_SUCCESS;
+ }
+ printf("not same version between include and library\n");
+ return EXIT_FAILURE;
+}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/config/gen/config_h/config_h.in
==============================================================================
--- branches/ops_pct/config/gen/config_h/config_h.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/config_h/config_h.in Wed May 5 08:45:29 2010 (r46302)
@@ -152,10 +152,6 @@
/* Oplib and dynamic ops related. */
#define PARROT_CORE_OPLIB_NAME "core"
#define PARROT_CORE_OPLIB_INIT Parrot_DynOp_core_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_PREDEREF_OPLIB_INIT Parrot_DynOp_core_prederef_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_SWITCH_OPLIB_INIT Parrot_DynOp_core_switch_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_CG_OPLIB_INIT Parrot_DynOp_core_cg_ at MAJOR@_ at MINOR@_ at PATCH@
-#define PARROT_CORE_CGP_OPLIB_INIT Parrot_DynOp_core_cgp_ at MAJOR@_ at MINOR@_ at PATCH@
/* ICU. */
#define PARROT_HAS_ICU @has_icu@
Modified: branches/ops_pct/config/gen/config_pm.pm
==============================================================================
--- branches/ops_pct/config/gen/config_pm.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/config_pm.pm Wed May 5 08:45:29 2010 (r46302)
@@ -33,7 +33,7 @@
myconfig => 'config/gen/config_pm/myconfig.in',
config_pir => 'config/gen/config_pm/config_pir.in',
Config_pm => 'config/gen/config_pm/Config_pm.in',
- config_lib => 'config/gen/config_pm/config_lib_pasm.in',
+ config_lib => 'config/gen/config_pm/config_lib_pir.in',
};
return \%data;
}
@@ -84,9 +84,9 @@
$template = $self->{templates}->{config_lib};
open( $IN, "<", $template ) or die "Can't open '$template': $!";
- my $c_l_pasm = q{config_lib.pasm};
- $conf->append_configure_log($c_l_pasm);
- open( $OUT, ">", $c_l_pasm ) or die "Can't open $c_l_pasm: $!";
+ my $c_l_pir = q{config_lib.pir};
+ $conf->append_configure_log($c_l_pir);
+ open( $OUT, ">", $c_l_pir ) or die "Can't open $c_l_pir: $!";
print {$OUT} <<"END";
# ex: set ro:
@@ -115,14 +115,14 @@
if ( $type ) {
die "type of '$k' is not supported : $type\n";
}
- # Scalar
+ # String
$v =~ s/(["\\])/\\$1/g;
$v =~ s/\n/\\n/g;
- print {$OUT} qq( set P0["$k"], "$v"\n);
+ print {$OUT} qq( set \$P0["$k"], "$v"\n);
}
else {
- # Undef
- print {$OUT} qq( set P0["$k"], P1\n);
+ # Null
+ print {$OUT} qq( set \$P0["$k"], \$S2\n);
}
}
}
@@ -135,7 +135,7 @@
}
close $IN or die "Can't close $template: $!";
- close $OUT or die "Can't close $c_l_pasm: $!";
+ close $OUT or die "Can't close $c_l_pir: $!";
return 1;
}
Deleted: branches/ops_pct/config/gen/config_pm/config_lib_pasm.in
==============================================================================
--- branches/ops_pct/config/gen/config_pm/config_lib_pasm.in Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,35 +0,0 @@
-# Copyright (C) 2004-2009, Parrot Foundation.
-# $Id$
-
-.pcc_sub main:
- get_params "(0)", P5
- set I10, P5 # argv
- set I11, 0 # flag
- le I10, 1, no_arg
- set S10, P5[1]
- ne S10, "--install", no_arg
- set I11, 1 # install flag
-no_arg:
- new P0, 'Hash'
- new P1, 'Undef'
-
- @PCONFIG@
-
- if I11, is_install
- set S1, "@PWD@"
- set P0["prefix"], S1
- set P0["installed"], "0"
- branch freeze_config
-is_install:
- set P0["installed"], "1"
-freeze_config:
-
- freeze S0, P0
- print S0
- end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/config/gen/config_pm/config_lib_pir.in (from r46301, trunk/config/gen/config_pm/config_lib_pir.in)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/config/gen/config_pm/config_lib_pir.in Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/config/gen/config_pm/config_lib_pir.in)
@@ -0,0 +1,38 @@
+# Copyright (C) 2004-2009, Parrot Foundation.
+# $Id$
+
+.include 'datatypes.pasm'
+
+.sub 'main'
+ get_params "(0)", $P5
+ set $I10, $P5 # argv
+ set $I11, 0 # flag
+ le $I10, 1, no_arg
+ set $S10, $P5[1]
+ ne $S10, "--install", no_arg
+ set $I11, 1 # install flag
+no_arg:
+ new $P0, 'Hash'
+ $P0.'set_value_type'(.DATATYPE_STRING)
+ $S2 = null
+
+ @PCONFIG@
+
+ if $I11, is_install
+ set $S1, "@PWD@"
+ set $P0["prefix"], $S1
+ set $P0["installed"], "0"
+ branch freeze_config
+is_install:
+ set $P0["installed"], "1"
+freeze_config:
+
+ freeze $S0, $P0
+ print $S0
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/config/gen/config_pm/config_pir.in
==============================================================================
--- branches/ops_pct/config/gen/config_pm/config_pir.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/config_pm/config_pir.in Wed May 5 08:45:29 2010 (r46302)
@@ -12,9 +12,9 @@
# store the config data into $P0
$P0 = _config()
# Retrieve and print a key
- $P1 = $P0["cc"]
+ $S1 = $P0["cc"]
print "Your C compiler is "
- print $P1
+ print $S1
print "\n"
...
@@ -25,14 +25,14 @@
config.pir is a mechanism for accessing most of the data collected by
Configure. It's roughly equivalent to Perl5's C<Config.pm> module.
-At the end of a successful C<make> of Parrot, a PASM file generated by
+At the end of a successful C<make> of Parrot, a PIR file generated by
Configure is run to put a file, F<config.fpmc>, into the library with a
frozen Hash of the configuration data. This library provides a
function, C<_config>, to unpack and return that file's data.
C<_config> does not take any parameters. It returns a single Hash
containing the data. Keys that were C<undef> in Configure contain a
-C<None> PMC; otherwise they contain a C<String>.
+null string; otherwise they contain a non-null, possibly empty, string.
Note that the behavior of that hash when writing to any value (especially
undefined values) is undefined, and may be rather funky.
Modified: branches/ops_pct/config/gen/core_pmcs.pm
==============================================================================
--- branches/ops_pct/config/gen/core_pmcs.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/core_pmcs.pm Wed May 5 08:45:29 2010 (r46302)
@@ -103,6 +103,8 @@
/* HEADERIZER STOP */
#include "parrot/parrot.h"
+#include "parrot/global_setup.h"
+
END_C
@@ -110,15 +112,6 @@
print {$OUT} <<'END_C';
-/* This isn't strictly true, but the headerizer should not bother */
-
-void Parrot_register_core_pmcs(PARROT_INTERP, NOTNULL(PMC *registry))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-extern void Parrot_initialize_core_pmcs(PARROT_INTERP, int pass)
- __attribute__nonnull__(1);
-
void Parrot_initialize_core_pmcs(PARROT_INTERP, int pass)
{
/* first the PMC with the highest enum
@@ -132,14 +125,14 @@
print {$OUT} <<'END_C';
}
-static void register_pmc(PARROT_INTERP, NOTNULL(PMC *registry), int pmc_id)
+static void register_pmc(PARROT_INTERP, ARGIN(PMC *registry), int pmc_id)
{
STRING * const key = interp->vtables[pmc_id]->whoami;
VTABLE_set_integer_keyed_str(interp, registry, key, pmc_id);
}
void
-Parrot_register_core_pmcs(PARROT_INTERP, NOTNULL(PMC *registry))
+Parrot_register_core_pmcs(PARROT_INTERP, ARGIN(PMC *registry))
{
END_C
Deleted: branches/ops_pct/config/gen/crypto.pm
==============================================================================
--- branches/ops_pct/config/gen/crypto.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,110 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/gen/crypto.pm - Digest PMC Files
-
-=head1 DESCRIPTION
-
-Generates Digest PMC files.
-
-=cut
-
-package gen::crypto;
-
-use strict;
-use warnings;
-
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':gen';
-
-sub _init {
- my $self = shift;
- my %data;
- $data{description} = q{Generate Digest PMC files};
- $data{result} = q{};
- $data{digest} = {
- MD2 => {
- md_result => 'ab4f496bfb2a530b219ff33031fe06b0',
- },
- MD4 => {
- md_result => 'd9130a8164549fe818874806e1c7014b',
- },
- MD5 => {
- md_result => 'f96b697d7cb7938d525a2f31aaf161d0',
- },
- RIPEMD160 => {
- md_result => '5d0689ef49d2fae572b881b123a85ffa21595f36',
- md_inc => 'ripemd',
- },
- SHA => {
- md_result => 'c1b0f222d150ebb9aa36a40cafdc8bcbed830b14',,
- },
- SHA1 => {
- md_result => 'c12252ceda8be8994d5fa0290a47231c1d16aae3',
- md_inc => 'sha',
- md_ctx => 'SHA_CTX',
- md_digest => 'SHA_DIGEST',
- },
- SHA256 => {
- md_result => 'f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650',
- md_inc => 'sha',
- version_needed => '0.9.8a',
- },
- SHA512 => {
- md_result => '107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c',
- md_inc => 'sha',
- version_needed => '0.9.8a',
- },
- };
- $data{digest_pmc_template} = 'config/gen/crypto/digest_pmc.in';
- $data{digest_t_template} = 'config/gen/crypto/digest_t.in';
- return \%data;
-}
-
-sub runstep {
- my ( $self, $conf ) = @_;
-
- if ( ! $conf->data->get('has_crypto') ) {
- $self->set_result('skipped');
- return 1;
- }
-
- my $openssl_version = $conf->data->get('openssl_version');
-
- while (my ($md, $val) = each %{ $self->{digest} } ) {
- my $file = lc $md;
- $conf->data->set( TEMP_md_name => $md );
- $conf->data->set( TEMP_md_file => $file );
- $conf->data->set( TEMP_md_inc => $val->{md_inc} || $file );
- $conf->data->set( TEMP_md_ctx => $val->{md_ctx} || $md . '_CTX' );
- $conf->data->set( TEMP_md_digest => $val->{md_digest} || $md . '_DIGEST' );
- $conf->data->set( TEMP_md_guard => (
- ( exists $val->{version_needed} )
- and
- ( $openssl_version lt $val->{version_needed} )
- )
- ? '#if 0'
- : '#ifndef OPENSSL_NO_' . $md
- );
- $conf->data->set( TEMP_md_skip => $val->{version_needed} || '0.9' );
- $conf->data->set( TEMP_md_result => $val->{md_result} );
- $conf->genfile( $self->{digest_pmc_template} => "src/dynpmc/${file}.pmc" );
- $conf->genfile( $self->{digest_t_template} => "t/dynpmc/${file}.t" );
- }
- $conf->cc_clean();
-
- return 1;
-}
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/config/gen/makefiles.pm
==============================================================================
--- branches/ops_pct/config/gen/makefiles.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/makefiles.pm Wed May 5 08:45:29 2010 (r46302)
@@ -48,10 +48,12 @@
conditioned_lines => 1,
},
- 'compilers/ncigen/Makefile' =>
- { SOURCE => 'compilers/ncigen/config/makefiles/ncigen.in' },
- 'src/dynpmc/Makefile' =>
- { SOURCE => 'config/gen/makefiles/dynpmc.in' },
+ 'src/dynpmc/Rules.mak' => {
+ SOURCE => 'src/dynpmc/Rules.in',
+ },
+ 'src/dynpmc/Defines.mak' => {
+ SOURCE => 'src/dynpmc/Defines.in',
+ },
'editor/Makefile' =>
{ SOURCE => 'config/gen/makefiles/editor.in' },
Modified: branches/ops_pct/config/gen/makefiles/docs.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/docs.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/makefiles/docs.in Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
# Setup of some commands
@@ -50,6 +50,22 @@
html: all
$(PERL) -I../lib ../tools/docs/write_docs.pl --silent --version=$(VERSION)
+# The pdf target is to generate a parrot PDF document.
+# If you are missing the command 'pdflatex' then you have first to install a
+# LaTeX distribution with it. For Windows and UNIX downloads are for example
+# available from: http://miktex.org, http://tug.org/texlive or
+# http://www.ctan.org
+pdf: ../tools/docs/filename_and_chapter.pl
+ $(MKPATH) build/modified_pod
+ $(PERL) ../tools/docs/filename_and_chapter.pl
+ cd build && pdflatex parrot-book.tex && pdflatex parrot-book.tex
+
+#pdf-release: build/parrot-book.pdf
+# cp build/parrot-book.pdf build/parrot-book-$$(date +"%Y.%m").pdf
+
+pdf-clean:
+ $(RM_RF) build
+
html-clean:
$(RM_RF) html
Deleted: branches/ops_pct/config/gen/makefiles/dynpmc.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/dynpmc.in Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,307 +0,0 @@
-# Copyright (C) 2003-2009, Parrot Foundation.
-# $Id$
-
-PERL = @perl@
-RM_F = @rm_f@
-CP = @cp@
-CHMOD = @chmod@
-LOAD_EXT = @load_ext@
-BUILD_DIR = @build_dir@
-RECONFIGURE = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR = $(BUILD_DIR)/runtime/parrot/dynext
-O = @o@
-CC = @cc@
-LD = @ld@
-LDFLAGS = @ldflags@ @ld_debug@ @rpath_blib@
-LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
-LIBPARROT = @libparrot_ldflags@
-
-BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
-BUILD_LIB_DIR = $(BUILD_DIR)/blib/lib
-PMC2C = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl
-INCLUDES = -I$(BUILD_DIR)/include -I at build_dir@/include/pmc
-LINKARGS = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
-
-PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump
-PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c
-
-# add your dynamic pmcs here
-PMC_TARGETS = \
- dynlexpad$(LOAD_EXT) \
- foo_group$(LOAD_EXT) \
- pccmethod_test$(LOAD_EXT) \
- rotest$(LOAD_EXT) \
-#IF(has_gdbm): gdbmhash$(LOAD_EXT) \
- rational$(LOAD_EXT) \
-#IF(has_crypto): digest_group$(LOAD_EXT) \
- subproxy$(LOAD_EXT)
-
-PMCS_DIGEST = \
- md2.pmc \
- md4.pmc \
- md5.pmc \
- ripemd160.pmc \
- sha.pmc \
- sha1.pmc \
- sha256.pmc \
- sha512.pmc
-
-OBJS_DIGEST = \
- md2$(O) \
- md4$(O) \
- md5$(O) \
- ripemd160$(O) \
- sha$(O) \
- sha1$(O) \
- sha256$(O) \
- sha512$(O)
-
-PMCS_FOO = \
- foo.pmc \
- foo2.pmc
-
-OBJS_FOO = \
- foo$(O) \
- foo2$(O)
-
-#IF(win32 and cc==gcc):LIB_GDBM = -llibgdbm
-#ELSIF(win32):LIB_GDBM = libgdbm.lib
-#ELSE:LIB_GDBM = -lgdbm
-
-#IF(win32 and cc==gcc):LIB_CRYPTO = -lcrypto
-#ELSIF(win32):LIB_CRYPTO = libcrypto.lib
-#ELSE:LIB_CRYPTO = -lcrypto
-
-CLEANUPS = \
- "*.c" \
- "pmc_*.h" \
- "*_group.h" \
- "*.dump" \
-#IF(o): "*@o@" \
-#IF(win32): "*.lib" \
-#IF(win32): "*.pdb" \
-#IF(win32): "*.ilk" \
-#IF(win32): "*.exp" \
-#IF(win32): "*.def" \
-#IF(win32): "*.manifest" \
-#IF(load_ext): "*@load_ext@"
-
-
-all : install
-
-install : $(PMC_TARGETS)
-#IF(cygwin or hpux): $(CHMOD) 0775 *$(LOAD_EXT)
- $(CP) *$(LOAD_EXT) $(INSTALL_DIR)
-#IF(cygwin or hpux): $(CHMOD) 0775 $(INSTALL_DIR)/*$(LOAD_EXT)
-
-Makefile: ../../config/gen/makefiles/dynpmc.in
- cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::makefiles --target=src/dynpmc/Makefile
-
-dynlexpad$(LOAD_EXT): dynlexpad$(O)
- $(LD) @ld_out at dynlexpad$(LOAD_EXT) dynlexpad$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-dynlexpad$(O): dynlexpad.c
- $(CC) -c @cc_o_out at dynlexpad$(O) $(INCLUDES) $(CFLAGS) dynlexpad.c
-
-dynlexpad.c: dynlexpad.dump
- $(PMC2CC) dynlexpad.pmc
-
-dynlexpad.dump: dynlexpad.pmc
- $(PMC2CD) dynlexpad.pmc
-
-foo_group$(LOAD_EXT): $(OBJS_FOO) lib-foo_group$(O)
- $(LD) @ld_out at foo_group$(LOAD_EXT) lib-foo_group$(O) $(OBJS_FOO) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-lib-foo_group$(O): foo_group.c
- $(CC) -c @cc_o_out at lib-foo_group$(O) $(INCLUDES) $(CFLAGS) foo_group.c
-
-foo_group.c: $(OBJS_FOO)
- $(PMC2C) --library foo_group --c $(PMCS_FOO)
-
-foo$(O): foo.c
- $(CC) -c @cc_o_out at foo$(O) $(INCLUDES) $(CFLAGS) foo.c
-
-foo.c: foo.dump
- $(PMC2CC) foo.pmc
-
-foo.dump: foo.pmc
- $(PMC2CD) foo.pmc
-
-foo2$(O): foo.c foo2.c
- $(CC) -c @cc_o_out at foo2$(O) $(INCLUDES) $(CFLAGS) foo2.c
-
-foo2.c: foo2.dump foo.pmc
- $(PMC2CC) foo2.pmc
-
-foo2.dump: foo2.pmc foo.dump
- $(PMC2CD) foo2.pmc
-
-pccmethod_test$(LOAD_EXT): pccmethod_test$(O)
- $(LD) @ld_out at pccmethod_test$(LOAD_EXT) pccmethod_test$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-pccmethod_test$(O): pccmethod_test.c
- $(CC) -c @cc_o_out at pccmethod_test$(O) $(INCLUDES) $(CFLAGS) pccmethod_test.c
-
-pccmethod_test.c: pccmethod_test.dump
- $(PMC2CC) pccmethod_test.pmc
-
-pccmethod_test.dump: pccmethod_test.pmc
- $(PMC2CD) pccmethod_test.pmc
-
-rotest$(LOAD_EXT): rotest$(O)
- $(LD) @ld_out at rotest$(LOAD_EXT) rotest$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-rotest$(O): rotest.c
- $(CC) -c @cc_o_out at rotest$(O) $(INCLUDES) $(CFLAGS) rotest.c
-
-rotest.c: rotest.dump
- $(PMC2CC) rotest.pmc
-
-rotest.dump: rotest.pmc
- $(PMC2CD) rotest.pmc
-
-gdbmhash$(LOAD_EXT): gdbmhash$(O)
- $(LD) @ld_out at gdbmhash$(LOAD_EXT) gdbmhash$(O) $(LINKARGS) $(LIB_GDBM)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-gdbmhash$(O): gdbmhash.c
- $(CC) -c @cc_o_out at gdbmhash$(O) $(INCLUDES) $(CFLAGS) gdbmhash.c
-
-gdbmhash.c: gdbmhash.dump
- $(PMC2CC) gdbmhash.pmc
-
-gdbmhash.dump: gdbmhash.pmc
- $(PMC2CD) gdbmhash.pmc
-
-rational$(LOAD_EXT): rational$(O)
- $(LD) @ld_out at rational$(LOAD_EXT) rational$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-rational$(O): rational.c
- $(CC) -c @cc_o_out at rational$(O) $(INCLUDES) $(CFLAGS) rational.c
-
-rational.c: rational.dump
- $(PMC2CC) rational.pmc
-
-rational.dump: rational.pmc
- $(PMC2CD) rational.pmc
-
-digest_group$(LOAD_EXT): $(OBJS_DIGEST) lib-digest_group$(O)
- $(LD) @ld_out at digest_group$(LOAD_EXT) lib-digest_group$(O) $(OBJS_DIGEST) $(LINKARGS) $(LIB_CRYPTO)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-lib-digest_group$(O): digest_group.c
- $(CC) -c @cc_o_out at lib-digest_group$(O) $(INCLUDES) $(CFLAGS) digest_group.c
-
-digest_group.c: $(OBJS_DIGEST)
- $(PMC2C) --library digest_group --c $(PMCS_DIGEST)
-
-md2$(O): md2.c
- $(CC) -c @cc_o_out at md2$(O) $(INCLUDES) $(CFLAGS) md2.c
-
-md2.c: md2.dump
- $(PMC2CC) md2.pmc
-
-md2.dump: md2.pmc
- $(PMC2CD) md2.pmc
-
-md4$(O): md4.c
- $(CC) -c @cc_o_out at md4$(O) $(INCLUDES) $(CFLAGS) md4.c
-
-md4.c: md4.dump
- $(PMC2CC) md4.pmc
-
-md4.dump: md4.pmc
- $(PMC2CD) md4.pmc
-
-md5$(O): md5.c
- $(CC) -c @cc_o_out at md5$(O) $(INCLUDES) $(CFLAGS) md5.c
-
-md5.c: md5.dump
- $(PMC2CC) md5.pmc
-
-md5.dump: md5.pmc
- $(PMC2CD) md5.pmc
-
-ripemd160$(O): ripemd160.c
- $(CC) -c @cc_o_out at ripemd160$(O) $(INCLUDES) $(CFLAGS) ripemd160.c
-
-ripemd160.c: ripemd160.dump
- $(PMC2CC) ripemd160.pmc
-
-ripemd160.dump: ripemd160.pmc
- $(PMC2CD) ripemd160.pmc
-
-sha$(O): sha.c
- $(CC) -c @cc_o_out at sha$(O) $(INCLUDES) $(CFLAGS) sha.c
-
-sha.c: sha.dump
- $(PMC2CC) sha.pmc
-
-sha.dump: sha.pmc
- $(PMC2CD) sha.pmc
-
-sha1$(O): sha1.c
- $(CC) -c @cc_o_out at sha1$(O) $(INCLUDES) $(CFLAGS) sha1.c
-
-sha1.c: sha1.dump
- $(PMC2CC) sha1.pmc
-
-sha1.dump: sha1.pmc
- $(PMC2CD) sha1.pmc
-
-sha256$(O): sha256.c
- $(CC) -c @cc_o_out at sha256$(O) $(INCLUDES) $(CFLAGS) sha256.c
-
-sha256.c: sha256.dump
- $(PMC2CC) sha256.pmc
-
-sha256.dump: sha256.pmc
- $(PMC2CD) sha256.pmc
-
-sha512$(O): sha512.c
- $(CC) -c @cc_o_out at sha512$(O) $(INCLUDES) $(CFLAGS) sha512.c
-
-sha512.c: sha512.dump
- $(PMC2CC) sha512.pmc
-
-sha512.dump: sha512.pmc
- $(PMC2CD) sha512.pmc
-
-subproxy$(LOAD_EXT): subproxy$(O)
- $(LD) @ld_out at subproxy$(LOAD_EXT) subproxy$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-subproxy$(O): subproxy.c
- $(CC) -c @cc_o_out at subproxy$(O) $(INCLUDES) $(CFLAGS) subproxy.c
-
-subproxy.c: subproxy.dump
- $(PMC2CC) subproxy.pmc
-
-subproxy.dump: subproxy.pmc
- $(PMC2CD) subproxy.pmc
-
-
-test : all
- cd ../.. && $(PERL) -Ilib t/harness t/dynpmc/*.t
-
-testclean :
- $(RM_F) "../../t/dynpmc/*.pir"
-
-clean :
- $(RM_F) $(CLEANUPS)
-
-realclean:
- $(RM_F) $(CLEANUPS) Makefile
-
-distclean: realclean
-
-# Local variables:
-# mode: makefile
-# End:
-# vim: ft=make:
Modified: branches/ops_pct/config/gen/makefiles/root.in
==============================================================================
--- branches/ops_pct/config/gen/makefiles/root.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/makefiles/root.in Wed May 5 08:45:29 2010 (r46302)
@@ -68,6 +68,7 @@
PERL = @perl@
CP = @cp@
+MV = @mv@
CHMOD = @chmod@
MKPATH = @mkpath@
RM_F = @rm_f@
@@ -84,7 +85,7 @@
CC_SHARED = @cc_shared@
CC_O_OUT = @cc_o_out@
CC_WARN = @ccwarn@
-CFLAGS = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
+CFLAGS = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @gc_flag@ @clock_best@ $(CC_SHARED)
LINK_DYNAMIC = @link_dynamic@
LINK = @link@
LINKFLAGS = @linkflags@ @link_debug@ @ld_debug@
@@ -114,17 +115,19 @@
# generated by config/init/headers.pm
NONGEN_HEADERS = @TEMP_nongen_headers@
+# The headerizer
+HEADERIZER = $(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl
+
+include src/dynpmc/Defines.mak
include src/dynoplibs/Defines.mak
include compilers/imcc/Defines.mak
include compilers/pirc/Defines.mak
include compilers/tge/Defines.mak
-include compilers/nqp/Defines.mak
include compilers/pge/Defines.mak
include compilers/pct/Defines.mak
include compilers/opsc/Defines.mak
include ext/nqp-rx/Defines.mak
include compilers/data_json/Defines.mak
-include compilers/json/Defines.mak
###############################################################################
#
@@ -141,18 +144,17 @@
GEN_MAKEFILES = \
Makefile \
docs/Makefile \
- compilers/ncigen/Makefile \
editor/Makefile \
ext/Makefile \
src/dynoplibs/Rules.mak \
src/dynoplibs/Defines.mak \
- src/dynpmc/Makefile \
+ src/dynpmc/Rules.mak \
+ src/dynpmc/Defines.mak \
compilers/imcc/Rules.mak
GEN_CONFIGS = \
$(INC_DIR)/config.h \
$(INC_DIR)/platform.h \
- $(INC_DIR)/platform_interface.h \
$(INC_DIR)/platform_limits.h \
$(INC_DIR)/has_header.h \
$(INC_DIR)/feature.h \
@@ -168,28 +170,11 @@
#IF(has_opengl): src/glut_nci_thunks.nci \
#IF(has_glut): src/glut_callbacks.c \
src/core_pmcs.c \
-#IF(has_crypto): src/dynpmc/md2.pmc \
-#IF(has_crypto): src/dynpmc/md4.pmc \
-#IF(has_crypto): src/dynpmc/md5.pmc \
-#IF(has_crypto): src/dynpmc/ripemd160.pmc \
-#IF(has_crypto): src/dynpmc/sha.pmc \
-#IF(has_crypto): src/dynpmc/sha1.pmc \
-#IF(has_crypto): src/dynpmc/sha256.pmc \
-#IF(has_crypto): src/dynpmc/sha512.pmc \
-#IF(has_crypto): t/dynpmc/md2.t \
-#IF(has_crypto): t/dynpmc/md4.t \
-#IF(has_crypto): t/dynpmc/md5.t \
-#IF(has_crypto): t/dynpmc/ripemd160.t \
-#IF(has_crypto): t/dynpmc/sha.t \
-#IF(has_crypto): t/dynpmc/sha1.t \
-#IF(has_crypto): t/dynpmc/sha256.t \
-#IF(has_crypto): t/dynpmc/sha512.t \
- config_lib.pasm \
+ config_lib.pir \
parrot.pc \
compilers/imcc/imcc.y.flag \
compilers/imcc/imcc.l.flag \
- src/ops/core_ops.c \
- src/ops/core_ops_switch.c
+ src/ops/core_ops.c
GEN_PASM_INCLUDES = \
runtime/parrot/include/cclass.pasm \
@@ -210,6 +195,7 @@
runtime/parrot/include/stdio.pasm \
runtime/parrot/include/socket.pasm \
runtime/parrot/include/libpaths.pasm \
+ runtime/parrot/include/dlopenflags.pasm \
runtime/parrot/include/longopt.pasm \
runtime/parrot/include/packfile_segments.pasm \
runtime/parrot/include/packfile_constants.pasm \
@@ -253,23 +239,23 @@
GEN_HEADERS = \
$(INC_DIR)/vtable.h \
$(INC_DIR)/oplib/ops.h \
- $(INC_DIR)/oplib/core_ops_switch.h \
$(INC_DIR)/extend_vtable.h \
$(INC_DIR)/pbcversion.h
GEN_SOURCES = \
src/nci.c \
src/glut_nci_thunks.c \
- src/core_ops_switch.c \
src/parrot_config.c \
src/null_config.c \
src/install_config.c \
- src/extend_vtable.c
+ src/extend_vtable.c \
+ src/extra_nci_thunks.c
GEN_MODULES = \
lib/Parrot/OpLib/core.pm
GEN_LIBRARY = \
+ $(LIBRARY_DIR)/Archive/Tar.pbc \
$(LIBRARY_DIR)/CGI/QueryHash.pbc \
$(LIBRARY_DIR)/Crow.pbc \
$(LIBRARY_DIR)/config.pbc \
@@ -293,7 +279,13 @@
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL.pbc \
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL_funcs.pbc \
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL/Math.pbc \
+ $(LIBRARY_DIR)/osutils.pbc \
$(LIBRARY_DIR)/P6object.pbc \
+ $(LIBRARY_DIR)/ProfTest.pbc \
+ $(LIBRARY_DIR)/ProfTest/PIRProfile.pir \
+ $(LIBRARY_DIR)/ProfTest/NQPProfile.pir \
+ $(LIBRARY_DIR)/ProfTest/Matcher.pir \
+ $(LIBRARY_DIR)/ProfTest/Want.pir \
$(LIBRARY_DIR)/parrotlib.pbc \
$(LIBRARY_DIR)/pcore.pbc \
$(LIBRARY_DIR)/pcre.pbc \
@@ -316,6 +308,9 @@
$(LIBRARY_DIR)/Stream/Sub.pbc \
$(LIBRARY_DIR)/Stream/Writer.pbc \
$(LIBRARY_DIR)/String/Utils.pbc \
+ $(LIBRARY_DIR)/TAP/Formatter.pbc \
+ $(LIBRARY_DIR)/TAP/Harness.pbc \
+ $(LIBRARY_DIR)/TAP/Parser.pbc \
$(LIBRARY_DIR)/Test/Builder/Output.pbc \
$(LIBRARY_DIR)/Test/Builder/Test.pbc \
$(LIBRARY_DIR)/Test/Builder/Tester.pbc \
@@ -341,6 +336,10 @@
FLUID_FILES_2 = \
$(GEN_LIBRARY) \
+ $(LIBRARY_DIR)/ProfTest/PIRProfile.pbc \
+ $(LIBRARY_DIR)/ProfTest/NQPProfile.pbc \
+ $(LIBRARY_DIR)/ProfTest/Matcher.pbc \
+ $(LIBRARY_DIR)/ProfTest/Want.pbc \
runtime/parrot/include/parrotlib.pbc
@@ -406,12 +405,10 @@
$(INC_DIR)/core_pmcs.h \
$(INC_DIR)/compiler.h \
$(INC_DIR)/cclass.h \
- include/pmc/pmc_callcontext.h \
- include/pmc/pmc_parrotinterpreter.h
+ include/pmc/pmc_callcontext.h
# generated list of header files
GENERAL_H_FILES = $(NONGEN_HEADERS) $(GEN_HEADERS) \
-#IF(cg_flag): $(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h
CHARSET_O_FILES = @TEMP_charset_o@
@@ -435,10 +432,7 @@
INTERP_O_FILES = \
src/string/api$(O) \
- \
src/ops/core_ops$(O) \
- src/ops/core_ops_switch$(O) \
- \
#IF(i386_has_gcc_cmpxchg): src/atomic/gcc_x86$(O) \
src/byteorder$(O) \
src/string/charset$(O) \
@@ -502,7 +496,6 @@
@TEMP_atomic_o@ \
@TEMP_gc_o@ \
#IF(platform_asm): src/platform_asm$(O) \
-#IF(cg_flag): src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O) \
OPS_FILES = @ops@ $(GEN_OPSFILES)
@@ -525,6 +518,7 @@
PIRC = . at slash@pirc$(EXE)
NQP_RX = . at slash@parrot-nqp$(EXE)
NCI_THUNK_GEN = . at slash@parrot_nci_thunk_gen$(EXE)
+TAPIR = . at slash@tapir$(EXE)
# Installable executables
INSTALLABLEPARROT = . at slash@installable_parrot$(EXE)
@@ -536,6 +530,7 @@
INSTALLABLECONFIG = . at slash@installable_parrot_config$(EXE)
INSTALLABLENQP = . at slash@installable_parrot-nqp$(EXE)
INSTALLABLENCITHUNKGEN = . at slash@installable_parrot_nci_thunk_gen$(EXE)
+INSTALLABLETAPIR = . at slash@installable_tapir$(EXE)
# Libraries
LIBPARROT_STATIC = @blib_dir@/@libparrot_static@
@@ -545,7 +540,7 @@
# This line controls whether a static or shared library is built
# by Parrot's make. It is not useful otherwise (e.g., in
-# lib/Parrot/Config/Generated.pm or config_lib.pasm).
+# lib/Parrot/Config/Generated.pm or config_lib.pir).
LIBPARROT = @libparrot_for_makefile_only@
#IF(has_icu):ICU_SHARED = @icu_shared@
@@ -576,10 +571,8 @@
.c$(O) : # suffix rule (limited support)
$(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
-.s$(O) : # suffix rule (limited support)
- $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
-#UNLESS(win32).S$(O) : # suffix rule (limited support)
-#UNLESS(win32) $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
+#UNLESS(win32):.s$(O) : # suffix rule (limited support)
+#UNLESS(win32): $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
.pir.pbc : # suffix rule (limited support)
$(PARROT) -o $@ $<
@@ -617,7 +610,6 @@
$(TGE_LIB_PBCS) \
$(PGE_LIB_PBCS) \
$(PCT_LIB_PBCS) \
- $(JSON_LIB_PBCS) \
$(DATA_JSON_LIB_PBCS) \
$(NQP_LIB_PBCS) \
$(GEN_LIBRARY) \
@@ -630,7 +622,7 @@
runtime/parrot/include/parrotlib.pbc \
runtime/parrot/include/config.fpmc \
$(LIBRARY_DIR)/Test/More.pbc \
- dynpmc \
+ $(DYNPMC_TARGETS) \
$(DYNOPLIBS_TARGETS)
$(GEN_LIBRARY) : $(PARROT) $(GEN_PASM_INCLUDES)
@@ -680,6 +672,7 @@
H2INC = $(BUILD_TOOLS_DIR)/h2inc.pl
# classes PMC build utils and rules
+PMC2C = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl @no_lines_flag@
PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump @no_lines_flag@
PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c @no_lines_flag@
PMC2CV = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --vtable @no_lines_flag@
@@ -768,15 +761,10 @@
@echo " svnclobber: *Dangerous*: remove everything not in svn."
@echo " reconfig: 'clean' and redo configuration."
@echo ""
- @echo "Dynamic PMCs:"
- @echo " dynpmc: Proxy for default target of src/dynpmc/Makefile"
- @echo " dynpmc-test: Proxy for target 'test' of src/dynpmc/Makefile"
- @echo " dynpmc-clean: Proxy for target 'clean' of src/dynpmc/Makefile"
- @echo ""
@echo "Fetch from source repository:"
@echo " update: svn update."
@echo " status: svn status."
- @echo " patch: Create a patch to attach to https:////trac.parrot.org/"
+ @echo " patch: Create a patch to attach to https://trac.parrot.org/"
@echo ""
@echo "Development:"
@echo " lint: An alias for sunlint."
@@ -785,11 +773,12 @@
@echo " splint: Code checking with splint."
@echo " splint-all: Splint all of Parrot, for the masochist only."
@echo " headerizer: Recreate header files for C-source files"
- @echo " apilist: Show list of PARROT_EXPORT functions"
+ @echo " apilist: Show list of PARROT_API functions"
+ @echo " exportlist: Show list of PARROT_EXPORT functions"
@echo " malloclist: Show list of PARROT_MALLOC functions"
@echo " cover: Run test suite coverage analysis."
@echo " tags-vi: Create tags for the vi editor."
- @echo " tags-emacs: Create tags for the EMACS editor."
+ @echo " tags-emacs: Create tags for the Emacs editor."
@echo " perlcritic: Check Perl code with Perl::Critic."
@echo ""
@echo "Release:"
@@ -802,9 +791,9 @@
world : all parrot_utils
-parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O)
+parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O) $(TAPIR)
-installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN)
+installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN) $(INSTALLABLETAPIR)
bootstrap-ops : opsc
$(NQP_RX) compilers/opsc/ops2c.nqp
@@ -817,8 +806,9 @@
runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT) $(GEN_PASM_INCLUDES)
$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
-runtime/parrot/include/config.fpmc : myconfig config_lib.pasm $(MINIPARROT)
- $(MINIPARROT) config_lib.pasm > $@
+runtime/parrot/include/config.fpmc : myconfig config_lib.pir \
+ runtime/parrot/include/datatypes.pasm $(MINIPARROT)
+ $(MINIPARROT) -Iruntime/parrot/include config_lib.pir > $@
$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
lib/Parrot/OpLib/core.pm src/parrot_config$(O) \
@@ -828,7 +818,7 @@
@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
-$(PBC_TO_EXE) : tools/dev/pbc_to_exe.pir runtime/parrot/library/config.pir $(PARROT)
+$(PBC_TO_EXE) : tools/dev/pbc_to_exe.pir runtime/parrot/library/config.pir $(PARROT) $(DYNEXT_DIR)/os$(LOAD_EXT)
$(PARROT) -o pbc_to_exe.pbc tools/dev/pbc_to_exe.pir
$(PARROT) pbc_to_exe.pbc pbc_to_exe.pbc
@@ -838,6 +828,12 @@
$(NCI_THUNK_GEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE)
$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc
+tapir.pbc : tools/dev/tapir.pir $(PARROT)
+ $(PARROT) -o tapir.pbc tools/dev/tapir.pir
+
+$(TAPIR) : tapir.pbc $(PARROT) $(PBC_TO_EXE)
+ $(PBC_TO_EXE) tapir.pbc
+
$(PARROT_CONFIG) : tools/util/parrot-config.pir $(PARROT) $(PBC_TO_EXE)
$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
$(PARROT) pbc_to_exe.pbc parrot_config.pbc
@@ -858,7 +854,7 @@
$(INC_DIR)/context.h : include/pmc/pmc_callcontext.h
-$(INC_DIR)/pbcversion.h :
+$(INC_DIR)/pbcversion.h : PBC_COMPAT
$(PERL) $(BUILD_TOOLS_DIR)/pbcversion_h.pl > $(INC_DIR)/pbcversion.h
src/parrot_config.c : runtime/parrot/include/config.fpmc \
@@ -875,32 +871,37 @@
$(PERL) $(BUILD_TOOLS_DIR)/parrot_config_c.pl --mini > \
src/null_config.c
-install_config.fpmc : myconfig config_lib.pasm $(PARROT)
+install_config.fpmc : myconfig config_lib.pir $(PARROT)
@echo "Invoking Parrot to generate install_config.fpmc"
- $(PARROT) config_lib.pasm --install > $@
+ $(PARROT) config_lib.pir --install > $@
-src/parrot_config$(O) : $(PARROT_H_HEADERS)
+src/parrot_config$(O) : $(PARROT_H_HEADERS) src/parrot_config.c
-src/install_config$(O) : $(PARROT_H_HEADERS)
+src/install_config$(O) : $(PARROT_H_HEADERS) src/install_config.c
-src/null_config$(O) : $(PARROT_H_HEADERS)
+src/null_config$(O) : $(PARROT_H_HEADERS) src/null_config.c
-src/oo$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_class.h include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
+src/oo$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_class.h src/oo.c \
+ include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
-src/scheduler$(O) : $(PARROT_H_HEADERS) src/scheduler.str \
+src/scheduler$(O) : $(PARROT_H_HEADERS) src/scheduler.str src/scheduler.c \
include/pmc/pmc_scheduler.h include/pmc/pmc_task.h \
include/pmc/pmc_timer.h \
- $(INC_DIR)/scheduler_private.h
+ $(INC_DIR)/scheduler_private.h \
+ $(INC_DIR)/runcore_api.h
-src/io/core$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/core$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/core.c
-src/io/socket_api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/api.str include/pmc/pmc_socket.h
+src/io/socket_api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+ src/io/api.str include/pmc/pmc_socket.h src/io/socket_api.c
-src/io/socket_unix$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_socket.h src/io/io_private.h
+src/io/socket_unix$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_socket.h \
+ src/io/io_private.h src/io/socket_unix.c
src/io/socket_win32$(O) : $(PARROT_H_HEADERS) \
src/io/io_private.h \
- include/pmc/pmc_socket.h
+ include/pmc/pmc_socket.h \
+ src/io/socket_win32.c
O_FILES = \
$(INTERP_O_FILES) \
@@ -953,11 +954,15 @@
$(INSTALLABLENCITHUNKGEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE) src/install_config$(O)
$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc --install
+$(INSTALLABLETAPIR) : tapir.pbc $(PBC_TO_EXE) src/install_config$(O)
+ $(PBC_TO_EXE) tapir.pbc --install
+
#
# Parrot Debugger
#
src/parrot_debugger$(O) : $(INC_DIR)/embed.h \
+ src/parrot_debugger.c \
$(INC_DIR)/runcore_api.h \
compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h \
compilers/imcc/cfg.h \
@@ -987,7 +992,8 @@
# Parrot Disassembler
#
-src/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS)
+src/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS) \
+ src/pbc_disassemble.c
$(DIS) : src/pbc_disassemble$(O) $(LIBPARROT)
$(LINK) @ld_out@$@ \
@@ -1005,7 +1011,8 @@
#
# Parrot Dump
#
-src/packdump$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_sub.h include/pmc/pmc_key.h
+src/packdump$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_sub.h \
+ include/pmc/pmc_key.h src/packdump.c
$(PDUMP) : src/pbc_dump$(O) src/packdump$(O) $(LIBPARROT)
$(LINK) @ld_out@$@ \
@@ -1014,7 +1021,7 @@
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
src/pbc_dump$(O) : $(INC_DIR)/embed.h $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
+ $(PARROT_H_HEADERS) src/pbc_dump.c
$(INSTALLABLEPDUMP) : src/pbc_dump$(O) src/packdump$(O) \
src/install_config$(O) $(LIBPARROT)
@@ -1044,6 +1051,46 @@
@rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+#
+# Profiling runcore test supporting code
+#
+
+$(LIBRARY_DIR)/ProfTest.pbc: $(LIBRARY_DIR)/ProfTest/PIRProfile.pbc \
+ $(LIBRARY_DIR)/ProfTest/NQPProfile.pbc $(LIBRARY_DIR)/ProfTest/Matcher.pbc \
+ $(LIBRARY_DIR)/ProfTest/Want.pbc
+ $(PBC_MERGE) -o $@ $(LIBRARY_DIR)/ProfTest/PIRProfile.pbc \
+ $(LIBRARY_DIR)/ProfTest/NQPProfile.pbc $(LIBRARY_DIR)/ProfTest/Matcher.pbc \
+ $(LIBRARY_DIR)/ProfTest/Want.pbc
+
+
+$(LIBRARY_DIR)/ProfTest/PIRProfile.pbc: $(LIBRARY_DIR)/ProfTest/PIRProfile.pir
+ $(PARROT) -o $@ $(LIBRARY_DIR)/ProfTest/PIRProfile.pir
+
+$(LIBRARY_DIR)/ProfTest/PIRProfile.pir: $(LIBRARY_DIR)/ProfTest/PIRProfile.nqp $(NQP_RX)
+ $(NQP_RX) --target=pir $(LIBRARY_DIR)/ProfTest/PIRProfile.nqp > $@
+
+
+$(LIBRARY_DIR)/ProfTest/NQPProfile.pbc: $(LIBRARY_DIR)/ProfTest/NQPProfile.pir
+ $(PARROT) -o $@ $(LIBRARY_DIR)/ProfTest/NQPProfile.pir
+
+$(LIBRARY_DIR)/ProfTest/NQPProfile.pir: $(LIBRARY_DIR)/ProfTest/NQPProfile.nqp $(NQP_RX)
+ $(NQP_RX) --target=pir $(LIBRARY_DIR)/ProfTest/NQPProfile.nqp > $@
+
+
+$(LIBRARY_DIR)/ProfTest/Want.pbc: $(LIBRARY_DIR)/ProfTest/Want.pir
+ $(PARROT) -o $@ $(LIBRARY_DIR)/ProfTest/Want.pir
+
+$(LIBRARY_DIR)/ProfTest/Want.pir: $(LIBRARY_DIR)/ProfTest/Want.nqp $(NQP_RX)
+ $(NQP_RX) --target=pir $(LIBRARY_DIR)/ProfTest/Want.nqp > $@
+
+
+$(LIBRARY_DIR)/ProfTest/Matcher.pbc: $(LIBRARY_DIR)/ProfTest/Matcher.pir
+ $(PARROT) -o $@ $(LIBRARY_DIR)/ProfTest/Matcher.pir
+
+$(LIBRARY_DIR)/ProfTest/Matcher.pir: $(LIBRARY_DIR)/ProfTest/Matcher.nqp $(NQP_RX)
+ $(NQP_RX) --target=pir $(LIBRARY_DIR)/ProfTest/Matcher.nqp > $@
+
+
###############################################################################
#
@@ -1094,6 +1141,9 @@
runtime/parrot/include/libpaths.pasm : $(INC_DIR)/library.h $(H2INC)
$(PERL) $(H2INC) $(INC_DIR)/library.h $@
+runtime/parrot/include/dlopenflags.pasm : $(INC_DIR)/platform_interface.h $(H2INC)
+ $(PERL) $(H2INC) $(INC_DIR)/platform_interface.h $@
+
runtime/parrot/include/datatypes.pasm : $(INC_DIR)/datatypes.h $(H2INC)
$(PERL) $(H2INC) $(INC_DIR)/datatypes.h $@
@@ -1179,59 +1229,59 @@
#
###############################################################################
-src/byteorder$(O) : $(PARROT_H_HEADERS)
+src/byteorder$(O) : $(PARROT_H_HEADERS) src/byteorder.c
-src/datatypes$(O) : $(PARROT_H_HEADERS)
+src/datatypes$(O) : $(PARROT_H_HEADERS) src/datatypes.c
src/extend_vtable$(O) : $(PARROT_H_HEADERS) \
- $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h
+ $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h src/extend_vtable.c
-src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str
+src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str src/global_setup.c
-src/global$(O) : $(PARROT_H_HEADERS) src/global.str \
+src/global$(O) : $(PARROT_H_HEADERS) src/global.str src/global.c \
include/pmc/pmc_sub.h
-src/pmc$(O) : include/pmc/pmc_class.h \
+src/pmc$(O) : include/pmc/pmc_class.h src/pmc.c \
src/pmc.str $(PARROT_H_HEADERS)
-src/pmc_freeze$(O) : $(PARROT_H_HEADERS) src/pmc_freeze.str
+src/pmc_freeze$(O) : $(PARROT_H_HEADERS) src/pmc_freeze.str src/pmc_freeze.c
-src/hash$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
+src/hash$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h src/hash.c
-src/library$(O) : $(PARROT_H_HEADERS) src/library.str \
+src/library$(O) : $(PARROT_H_HEADERS) src/library.str src/library.c\
$(INC_DIR)/dynext.h
$(INC_DIR)/extend_vtable.h src/extend_vtable.c src/vtable.h : src/vtable.tbl $(BUILD_TOOLS_DIR)/vtable_extend.pl lib/Parrot/Vtable.pm
$(PERL) $(BUILD_TOOLS_DIR)/vtable_extend.pl
-src/key$(O) : $(PARROT_H_HEADERS) src/key.str \
+src/key$(O) : $(PARROT_H_HEADERS) src/key.str src/key.c \
include/pmc/pmc_key.h
-src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/mark_sweep.c
-src/gc/gc_ms$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/gc_ms$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/gc_ms.c
-src/gc/gc_inf$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/gc_inf$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/gc_inf.c
-src/gc/api$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/api$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/api.c
src/gc/alloc_resources$(O) : $(PARROT_H_HEADERS) \
- src/gc/gc_private.h
+ src/gc/gc_private.h src/gc/alloc_resources.c
-src/hll$(O) : $(PARROT_H_HEADERS) src/hll.str $(INC_DIR)/dynext.h
+src/hll$(O) : $(PARROT_H_HEADERS) src/hll.str $(INC_DIR)/dynext.h src/hll.c
-src/platform$(O) : $(PARROT_H_HEADERS)
+src/platform$(O) : $(PARROT_H_HEADERS) src/platform.c
#IF(platform_asm):src/platform_asm$(O) : $(PARROT_H_HEADERS)
#IF(platform_asm):
-src/core_pmcs$(O) : $(PARROT_H_HEADERS)
+src/core_pmcs$(O) : $(PARROT_H_HEADERS) src/core_pmcs.c
-src/runcore/trace$(O) : include/pmc/pmc_sub.h \
+src/runcore/trace$(O) : include/pmc/pmc_sub.h src/runcore/trace.c \
$(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_trace.h \
$(PARROT_H_HEADERS)
src/debug$(O) : $(INC_DIR)/embed.h $(INC_DIR)/extend.h \
- $(PARROT_H_HEADERS) \
+ $(PARROT_H_HEADERS) src/debug.c \
$(INC_DIR)/oplib/ops.h \
$(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
src/debug.str include/pmc/pmc_key.h \
@@ -1239,26 +1289,27 @@
$(INC_DIR)/extend_vtable.h
src/sub$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
- src/sub.str \
+ src/sub.str src/sub.c \
include/pmc/pmc_sub.h include/pmc/pmc_continuation.h
src/string/api$(O) : $(PARROT_H_HEADERS) src/string/api.str \
- src/string/private_cstring.h
+ src/string/private_cstring.h src/string/api.c
-src/string/primitives$(O) : $(PARROT_H_HEADERS)
+src/string/primitives$(O) : $(PARROT_H_HEADERS) src/string/primitives.c
-src/longopt$(O) : $(PARROT_H_HEADERS)
+src/longopt$(O) : $(PARROT_H_HEADERS) src/longopt.c
src/dynext$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/dynext.h \
- src/dynext.str include/pmc/pmc_parrotlibrary.h
+ src/dynext.str include/pmc/pmc_parrotlibrary.h src/dynext.c
src/exceptions$(O) : $(PARROT_H_HEADERS) \
- src/exceptions.str \
+ src/exceptions.str src/exceptions.c \
include/pmc/pmc_continuation.h
-src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h \
+src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h src/thread.c \
include/pmc/pmc_sub.h \
- include/pmc/pmc_parrotinterpreter.h
+ include/pmc/pmc_parrotinterpreter.h \
+ $(INC_DIR)/runcore_api.h
## SUFFIX OVERRIDE - dynloaded files need cc_shared
src/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
@@ -1266,14 +1317,15 @@
$(CC) $(CFLAGS) @optimize::src/extend.c@ @ccwarn::src/extend.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extend.c
src/runcore/main$(O) : \
+ src/runcore/main.c \
src/runcore/main.str \
include/pmc/pmc_parrotlibrary.h \
$(INC_DIR)/dynext.h $(INC_DIR)/oplib/core_ops.h \
- $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
+ $(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h \
$(INC_DIR)/runcore_profiling.h
-src/runcore/profiling$(O) : src/runcore/profiling.str \
+src/runcore/profiling$(O) : src/runcore/profiling.str src/runcore/profiling.c \
include/pmc/pmc_sub.h \
include/pmc/pmc_namespace.h \
$(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h \
@@ -1282,25 +1334,30 @@
src/call/args$(O) : \
$(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
+ src/call/args.c \
src/call/args.str \
include/pmc/pmc_key.h \
include/pmc/pmc_fixedintegerarray.h
-src/call/context_accessors$(O): $(PARROT_H_HEADERS)
+src/call/context_accessors$(O): $(PARROT_H_HEADERS) \
+ src/call/context_accessors.c
src/call/pcc$(O) : $(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS) \
$(INC_DIR)/runcore_api.h \
+ src/call/pcc.c \
src/call/pcc.str \
include/pmc/pmc_key.h include/pmc/pmc_continuation.h
src/call/context$(O) : $(PARROT_H_HEADERS) \
- include/pmc/pmc_sub.h
+ include/pmc/pmc_sub.h src/call/context.c
src/interp/inter_cb$(O) : $(PARROT_H_HEADERS) \
- src/interp/inter_cb.str
+ include/pmc/pmc_parrotinterpreter.h \
+ src/interp/inter_cb.str src/interp/inter_cb.c
src/interp/inter_misc$(O) : $(PARROT_H_HEADERS) \
+ src/interp/inter_misc.c \
src/interp/inter_misc.str \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
@@ -1314,6 +1371,8 @@
src/interp/inter_create$(O) : $(PARROT_H_HEADERS) \
$(INC_DIR)/oplib/core_ops.h \
+ src/gc/gc_private.h \
+ src/interp/inter_create.c \
src/interp/inter_create.str \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
@@ -1326,33 +1385,43 @@
$(INC_DIR)/runcore_api.h
src/call/ops$(O) : $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS) include/pmc/pmc_continuation.h
+ $(PARROT_H_HEADERS) include/pmc/pmc_continuation.h \
+ $(INC_DIR)/runcore_api.h src/call/ops.c
src/io/api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+ src/io/api.c \
src/io/api.str include/pmc/pmc_filehandle.h \
- include/pmc/pmc_stringhandle.h
+ include/pmc/pmc_stringhandle.h \
+ $(INC_DIR)/extend.h \
+ $(INC_DIR)/extend_vtable.h
-src/io/buffer$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/buffer$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/buffer.c
-src/io/portable$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
+src/io/portable$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/portable.c
-src/io/unix$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
+src/io/unix$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+ include/pmc/pmc_filehandle.h src/io/unix.c
-src/io/utf8$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/string/unicode.h
+src/io/utf8$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/string/unicode.h \
+ src/io/utf8.c
-src/io/win32$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
+src/io/win32$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+ include/pmc/pmc_filehandle.h src/io/win32.c
-src/gc/alloc_memory$(O) : $(PARROT_H_HEADERS)
+src/gc/alloc_memory$(O) : $(PARROT_H_HEADERS) src/gc/alloc_memory.c
src/main$(O) : $(INC_DIR)/imcc.h $(PARROT_H_HEADERS) \
- $(INC_DIR)/embed.h
+ $(INC_DIR)/embed.h $(INC_DIR)/runcore_api.h src/gc/gc_private.h \
+ src/main.c
src/multidispatch$(O) : \
+ src/multidispatch.c \
src/multidispatch.str \
$(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
include/pmc/pmc_nci.h include/pmc/pmc_sub.h
src/packfile$(O) : src/packfile.str \
+ src/packfile.c \
include/pmc/pmc_sub.h include/pmc/pmc_key.h \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
@@ -1365,20 +1434,22 @@
$(INC_DIR)/embed.h $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h \
$(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h
-src/packfile/pf_items$(O) : $(PARROT_H_HEADERS)
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
-src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
+src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h src/packout.c
src/parrot$(O) : $(GENERAL_H_FILES)
src/runcore/cores$(O) : src/runcore/cores.str \
+ src/runcore/cores.c \
include/pmc/pmc_sub.h \
$(INC_DIR)/dynext.h $(INC_DIR)/embed.h $(INC_DIR)/oplib/core_ops.h \
- $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
+ $(INC_DIR)/oplib/ops.h \
$(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
$(PARROT_H_HEADERS)
src/embed$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/embed.h \
+ src/embed.c \
$(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_api.h \
compilers/imcc/imc.h \
compilers/imcc/cfg.h \
@@ -1391,55 +1462,55 @@
src/dataypes$(O) : $(GENERAL_H_FILES) src/dataypes.c
-src/exit$(O) : $(PARROT_H_HEADERS)
+src/exit$(O) : $(PARROT_H_HEADERS) src/exit.c
src/nci/api$(O) : src/nci/api.str \
- $(PARROT_H_HEADERS) \
- include/pmc/pmc_unmanagedstruct.h \
- include/pmc/pmc_nci.h
+ src/nci/api.c \
+ $(PARROT_H_HEADERS)
-src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+src/nci/core_thunks$(O) : src/nci/core_thunks.c \
$(PARROT_H_HEADERS) \
- include/pmc/pmc_unmanagedstruct.h \
include/pmc/pmc_nci.h
## SUFFIX OVERRIDE
-src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+src/nci/extra_thunks$(O) : \
$(PARROT_H_HEADERS) \
- include/pmc/pmc_unmanagedstruct.h \
include/pmc/pmc_nci.h \
src/nci/extra_thunks.c
$(CC) $(CFLAGS) @optimize::src/nci/extra_thunks.c@ @ccwarn::src/nci/extra_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/nci/extra_thunks.c
src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
+ src/frame_builder.c \
include/pmc/pmc_fixedintegerarray.h \
include/pmc/pmc_unmanagedstruct.h \
include/pmc/pmc_managedstruct.h \
$(INC_DIR)/oplib/ops.h
-src/vtables$(O) : $(PARROT_H_HEADERS)
+src/vtables$(O) : $(PARROT_H_HEADERS) src/vtables.c
## SUFFIX OVERRIDE
-src/gc/system$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+src/gc/system$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h src/gc/system.c
$(CC) $(CFLAGS) @optimize::src/gc/system.c@ @ccwarn::src/gc/system.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/gc/system.c
src/gc/gc_private.h : $(INC_DIR)/settings.h
-src/warnings$(O) : $(PARROT_H_HEADERS)
+src/gc/malloc$(O) : src/gc/malloc.c
+
+src/warnings$(O) : $(PARROT_H_HEADERS) src/warnings.c
-src/misc$(O) : $(PARROT_H_HEADERS)
+src/misc$(O) : $(PARROT_H_HEADERS) src/misc.c
-src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h
+src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h src/utils.c
## SUFFIX OVERRIDE
-src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str
+src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str src/spf_render.c
$(CC) $(CFLAGS) @optimize::src/spf_render.c@ @ccwarn::src/spf_render.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/spf_render.c
-src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str
+src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str src/spf_vtable.c
-src/string/encoding$(O) : $(PARROT_H_HEADERS)
+src/string/encoding$(O) : $(PARROT_H_HEADERS) src/string/encoding.c
-src/string/charset$(O) : $(PARROT_H_HEADERS) \
+src/string/charset$(O) : $(PARROT_H_HEADERS) src/string/charset.c \
src/string/encoding/fixed_8.h \
src/string/encoding/utf8.h \
src/string/encoding/utf16.h \
@@ -1449,22 +1520,18 @@
src/string/charset/iso-8859-1.h \
src/string/charset/unicode.h
-src/pbc_merge$(O) : $(INC_DIR)/embed.h \
+src/pbc_merge$(O) : $(INC_DIR)/embed.h src/pbc_merge.c \
include/pmc/pmc_sub.h $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS)
-src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h src/io/io_private.h
+src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h \
+ src/io/io_private.h src/io/filehandle.c
-src/dynpmc/subproxy$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
- $(INC_DIR)/dynext.h include/pmc/pmc_subproxy.h \
- include/pmc/pmc_sub.h include/pmc_default.h \
- include/pmc/pmc_continuation.h include/pmc/pmc_callcontext.h \
- include/pmc/pmc_default.h
+src/gc/malloc_trace$(O) : src/gc/malloc.c src/gc/malloc_trace.c
-src/gc/malloc_trace$(O) : src/gc/malloc.c
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
-src/packfile/pf_items$(O) : $(PARROT_H_HEADERS)
-
-src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h
+src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h \
+ src/atomic/gcc_x86.c
# core_ops depends upon config.h so that it gets updated along with
# updates to config.h's version numbers
@@ -1484,41 +1551,6 @@
include/pmc/pmc_continuation.h
$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
-## SUFFIX OVERRIDE
-src/ops/core_ops_switch$(O) : $(GENERAL_H_FILES) src/ops/core_ops_switch.c \
- include/pmc/pmc_parrotlibrary.h
- $(CC) $(CFLAGS) @optimize::src/ops/core_ops_switch.c@ @ccwarn::src/ops/core_ops_switch.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_switch.c
-
-$(INC_DIR)/oplib/core_ops_switch.h : src/ops/core_ops_switch.c
-
-src/ops/core_ops_switch.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
- lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC_DIR)/config.h \
- lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CSwitch.pm \
- lib/Parrot/OpTrans/CPrederef.pm
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --core @no_lines_flag@
-
-## SUFFIX OVERRIDE
-src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
- include/pmc/pmc_parrotlibrary.h
- $(CC) $(CFLAGS) @optimize::src/ops/core_ops_cg.c@ @ccwarn::src/ops/core_ops_cg.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cg.c
-
-## SUFFIX OVERRIDE
-src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
- include/pmc/pmc_parrotlibrary.h
- $(CC) $(CFLAGS) @optimize::src/ops/core_ops_cgp.c@ @ccwarn::src/ops/core_ops_cgp.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cgp.c
-
-src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
-
-$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
-
-src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
-
-$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
-
-src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
-
@TEMP_gc_c@
@TEMP_pmc_build@
@@ -1575,23 +1607,11 @@
htmlhelp-clean :
$(MAKE) docs htmlhelp-clean
-###############################################################################
-#
-# dynamic PMC targets:
-#
-###############################################################################
-
-dynpmc : dynpmc.dummy
+pdf:
+ $(MAKE) docs pdf
-# XXX this dependancy is too broad, and should be narrowed down
-dynpmc.dummy : $(PARROT) $(INC_DIR)/parrot.h $(INC_DIR)/extend.h $(INC_DIR)/dynext.h $(PMC2C_FILES)
- $(MAKE) src/dynpmc
-
-dynpmc-test : $(PARROT) $(INC_DIR)/parrot.h $(INC_DIR)/extend.h $(INC_DIR)/dynext.h
- $(MAKE) src/dynpmc test
-
-dynpmc-clean :
- $(MAKE) src/dynpmc clean
+pdf-clean:
+ $(MAKE) docs pdf-clean
###############################################################################
#
@@ -1669,16 +1689,12 @@
# integrating them in a single run is difficult.
# Normal test package
-test : test_core nqp_test
+test : test_core
# Test Parrot core.
test_core: test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS)
-# Test the NQP compiler
-nqp_test : test_prep compilers/nqp/nqp.pbc
- $(PERL) compilers/nqp/t/harness
-
# run the test suite, create a TAP archive and send it off to smolder
smolder_test : test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS) --archive --send-to-smolder
@@ -1696,20 +1712,17 @@
check : test
# Test various run cores and other stuff
-# 'testC', 'testg' and 'testj' are tested only
+# 'testg' and 'testj' are tested only
# when the needed runcores are available
fulltest :
- at make@ testb \
-#IF(cg_flag): testC \
testf \
-#IF(cg_flag): testg \
testr \
- testS \
src_tests \
run_tests \
+ buildtools_tests \
perl_tests \
library_tests \
- nqp_test \
codetest \
benchmark_tests \
manifest_tests \
@@ -1720,10 +1733,6 @@
testb : test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS) -b $(RUNCORE_TEST_FILES)
-# CGP core
-testC : test_prep
- $(PERL) t/harness $(EXTRA_TEST_ARGS) -C $(RUNCORE_TEST_FILES)
-
# fast core
testf : test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS) -f $(RUNCORE_TEST_FILES)
@@ -1744,18 +1753,6 @@
testr : test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS) -r $(RUNCORE_TEST_FILES)
-# switched core
-testS : test_prep
- $(PERL) t/harness $(EXTRA_TEST_ARGS) -S $(RUNCORE_TEST_FILES)
-
-# Computed goto jitted core - target retained, but falls back to standard core
-testCj : test_prep
- $(PERL) t/harness $(EXTRA_TEST_ARGS) $(RUNCORE_TEST_FILES)
-
-# switched jitted core - target retained, but falls back to standard core
-testSj : test_prep
- $(PERL) t/harness $(EXTRA_TEST_ARGS) $(RUNCORE_TEST_FILES)
-
# test the EXEC stuff
testexec: test_prep
$(PERL) t/harness $(EXTRA_TEST_ARGS) --run-exec $(RUNCORE_TEST_FILES)
@@ -1824,20 +1821,20 @@
dynext-clean \
#IF(has_perldoc): docs-clean \
#IF(has_perldoc): html-clean \
- dynpmc-clean \
examples-clean \
ext-clean \
#UNLESS(win32): cover-clean \
editor-clean
- $(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
- $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c
+ $(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c
$(RM_F) chartypes "*.s" "*~"
$(RM_F) $(FLUID_FILES_1)
$(RM_F) $(FLUID_FILES_2)
$(RM_RF) lib/Parrot/OpLib
- $(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS) $(JSON_CLEANUPS)
+ $(RM_RF) runtime/parrot/languages/data_json
+ $(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS)
$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
- $(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES) $(DYNOPLIBS_CLEANUPS)
+ $(RM_F) $(DYNOPLIBS_CLEANUPS) $(DYNPMC_CLEANUPS)
+ $(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
prog-clean :
$(RM_F) \
@@ -1854,8 +1851,10 @@
$(INSTALLABLECONFIG) \
$(INSTALLABLENQP) \
$(INSTALLABLENCITHUNKGEN) \
+ $(INSTALLABLETAPIR) \
pbc_to_exe.pbc pbc_to_exe.c pbc_to_exe$(O) pbc_to_exe$(EXE) \
$(NCI_THUNK_GEN) parrot_nci_thunk_gen.c parrot_nci_thunk_gen$(O) parrot_nci_thunk_gen.pbc \
+ tapir.pbc tapir.c tapir$(O) tapir$(EXE) \
parrot_config$(EXE) parrot_config.c parrot_config$(O) parrot_config.pbc \
compilers/imcc/main$(O) \
$(PDUMP) src/pbc_dump$(O) src/packdump$(O) \
@@ -1881,7 +1880,7 @@
src/string/private_cstring.h "src/pmc/*.c" "include/pmc/pmc_*.h" \
"src/pmc/*.dump" vtable.dump "*.def" "*.lib" "*.exp"
-archclean: dynpmc-clean dynext-clean
+archclean: dynext-clean
$(RM_F) \
$(O_FILES) \
$(GEN_CONFIGS) \
@@ -2092,7 +2091,8 @@
rm -f *.ln
$(LINT) $(CC_INC) "-Iinclude/pmc" $(BSD_LINT_FLAGS) $(BSD_LINT_EXCLUSIONS) $(LINTABLE_CFILES)
-# For checking with splint see also http:////www.perlfoundation.org//parrot//index.cgi?splint
+# For checking with splint see also
+# http:////trac.parrot.org/parrot/wiki/splint
# Splint: http:////splint.org
SPLINT = splint
@@ -2104,7 +2104,7 @@
# The dashes in the names don't make any difference to Splint, but I've
# made them match how they are in the manual. Otherwise, you might be
# looking for "declundef", except that it's "decl-undef" in the docs.
-SPLINTFLAGS = \
+SPLINTFLAGS_BASE = \
+standard \
-hints \
\
@@ -2126,14 +2126,16 @@
+show-scan \
+time-dist \
\
+ +cpp-names \
+ansi-reserved \
+ansi-reserved-internal \
-iso-reserved \
-iso-reserved-internal \
- -include-nest 10
+ -include-nest 10 \
# Memory safety checks
-SPLINTFLAGS = $(SPLINTFLAGS) \
+# Transfer errors (-mem-trans) are too tough for us right now
+SPLINTFLAGS_MEMORY_SAFETY = \
+bufferoverflow \
+bufferoverflowhigh \
+read-only-strings \
@@ -2141,9 +2143,19 @@
+strict-destroy \
+strict-use-released \
+use-released \
+ -must-free \
+ -mustfreefresh \
+ -mustfreeonly \
+ +null \
+ +nullptrarith \
+ +nullret \
+ -ptr-arith \
+ +ptr-negate \
+ -zero-ptr \
+ -mem-trans
# Macro safety checks
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_MACRO_SAFETY = \
+macro-assign \
+macro-empty \
+macro-parens \
@@ -2152,63 +2164,44 @@
+macro-unrecog \
# Watch for unsafe comparisons
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_UNSAFE_COMPARISONS = \
+bool-compare \
+ptr-compare \
+real-compare \
+unsigned-compare
# But allow us some slop in boolean comparisons
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_BOOLEAN_SLOP = \
-pred-bool-int \
-pred-bool-ptr \
-pred-bool-others \
-boolops \
-# Report qualifier mismatches only if dangerous
-SPLINTFLAGS = $(SPLINTFLAGS) \
+# const and other qualifiers
+# Report qualifier mismatches only if dangerous (+relax-quals)
+SPLINTFLAGS_QUALIFIERS = \
+relax-quals
-# Memory checking
-SPLINTFLAGS = $(SPLINTFLAGS) \
- -must-free \
- -mustfreefresh \
- -mustfreeonly \
- +null \
- +nullptrarith \
- +nullret \
- -ptr-arith \
- +ptr-negate \
- -zero-ptr \
-
-# Transfer errors are too tough for us right now
-SPLINTFLAGS = $(SPLINTFLAGS) \
- -mem-trans
-
# Symbol definitions
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_SYMBOL_DEFINITIONS = \
+decl-undef \
+incon-defs \
+incon-defs-lib \
-# Check for conflicts with C++ compilers
-SPLINTFLAGS = $(SPLINTFLAGS) \
- +cpp-names \
-
# Format codes
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_FORMAT = \
+format-code \
+format-type \
# Problems with evaluation and control structions
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_EVALUATION = \
+controlnestdepth 15 \
- +duplicate-case \
+ +duplicate-quals \
+eval-order \
+eval-order-uncon \
# Types and stuff
-SPLINTFLAGS = $(SPLINTFLAGS) \
+SPLINTFLAGS_TYPES = \
+char-index \
+char-int \
+enum-members \
@@ -2227,13 +2220,27 @@
# added to splint target to simplify experimentation,
# example: make SPLINTFLAGS_TEST='-posixstrictlib +posixlib' splint
+SPLINTFLAGS_TEST =
+
+SPLINTFLAGS = \
+ $(SPLINTFLAGS_BASE) \
+ $(SPLINTFLAGS_MEMORY_SAFETY) \
+ $(SPLINTFLAGS_MACRO_SAFETY) \
+ $(SPLINTFLAGS_UNSAFE_COMPARISONS) \
+ $(SPLINTFLAGS_BOOLEAN_SLOP) \
+ $(SPLINTFLAGS_QUALIFIERS) \
+ $(SPLINTFLAGS_SYMBOL_DEFINITIONS) \
+ $(SPLINTFLAGS_FORMAT) \
+ $(SPLINTFLAGS_EVALUATION) \
+ $(SPLINTFLAGS_TYPES) \
+
SPLINT_SOURCE = `echo $(O_FILES) | $(PERL) -pe @PQ at s/\.o/\.c/g at PQ@`
splint-all : $(PARROT)
$(MKPATH) $(SPLINT_TMP)
- $(SPLINT) $(CC_INC) "-Iinclude/pmc" "-Icompilers/ast" $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) \
+ $(SPLINT) $(CC_INC) "-Iinclude/pmc" "-Icompilers/ast" $(SPLINTFLAGS) \
$(SPLINT_SOURCE) \
- $(SPLINT) $(CC_INC) $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) compilers/imcc/main.c
+ $(SPLINT) $(CC_INC) $(SPLINTFLAGS) compilers/imcc/main.c
# "splint" is the less-thorough splint target. For cage cleaning work,
# you'll probably want to specify SPLINT_SOURCE rather than work on the
@@ -2242,7 +2249,7 @@
splint : all
$(MKPATH) $(SPLINT_TMP)
- $(SPLINT) $(CC_INC) "-Iinclude/pmc" "-Icompilers/ast" $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) \
+ $(SPLINT) $(CC_INC) "-Iinclude/pmc" "-Icompilers/ast" $(SPLINTFLAGS) \
+partial -DNDEBUG \
$(SPLINT_SOURCE) \
| grep -v 'Source code error generation point'
@@ -2270,16 +2277,12 @@
cover: \
cover.dummy \
cover-testb \
-#IF(cg_flag): cover-testC \
cover-testf \
-#IF(cg_flag): cover-testg \
cover-testr \
- cover-testS \
cover-src \
cover-run \
cover-perl \
cover-extra \
- cover-nqp \
cover-codingstd \
cover-benchmark \
cover-manifest \
@@ -2302,9 +2305,6 @@
cover-testb: cover.dummy
- at make@ testb
-cover-testC: cover.dummy
- - at make@ testC
-
cover-testf: cover.dummy
- at make@ testf
@@ -2317,9 +2317,6 @@
cover-testr: cover.dummy
- at make@ testr
-cover-testS: cover.dummy
- - at make@ testS
-
cover-src: cover.dummy
- at make@ src_tests
@@ -2332,9 +2329,6 @@
cover-extra: cover.dummy
- at make@ library_tests
-cover-nqp: cover.dummy
- - at make@ nqp_test
-
cover-codingstd: cover.dummy
- at make@ codingstd_tests
@@ -2373,6 +2367,7 @@
--destdir=$(DESTDIR) \
--docdir=$(DOC_DIR) \
--versiondir=$(VERSION_DIR) \
+ --pkgconfigdir=@PKGCONFIG_DIR@ \
MANIFEST MANIFEST.generated
install-dev-only: installable
@@ -2412,6 +2407,8 @@
grep -v DEVELOPING MANIFEST.real > MANIFEST
$(PERL) -lane 'print"parrot-$(VERSION)/$$F[0]"unless!length||/#/' MANIFEST | \
tar -zcv -T - -f parrot-$(VERSION).tar.gz
+ $(PERL) -lane 'print"parrot-$(VERSION)/$$F[0]"unless!length||/#/' \
+ MANIFEST | tar -jcv -T - -f parrot-$(VERSION).tar.bz2
mv MANIFEST.real MANIFEST
rm parrot-$(VERSION)
@@ -2440,7 +2437,8 @@
@ld_out@$@ src/nci_test$(O) $(C_LIBS)
# for use by runtime/parrot/library/OpenGL.pir
-src/glut_callbacks$(O): $(GENERAL_H_FILES)
+src/glut_callbacks$(O): $(PARROT_H_HEADERS) \
+ $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h src/glut_callbacks.c
src/glut_nci_thunks.c: $(NCI_THUNK_GEN)
$(NCI_THUNK_GEN) \
@@ -2449,7 +2447,9 @@
--output=src/glut_nci_thunks.c \
<src/glut_nci_thunks.nci
-src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
+src/glut_nci_thunks$(O) : $(PARROT_H_HEADERS) \
+ src/glut_nci_thunks.c \
+ include/pmc/pmc_nci.h
$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O) src/glut_nci_thunks$(O)
$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
@@ -2461,7 +2461,8 @@
--output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
## SUFFIX OVERRIDE
-src/extra_nci_thunks$(O) : $(GENERAL_H_FILES) src/extra_nci_thunks.c
+src/extra_nci_thunks$(O) : $(PARROT_H_HEADERS) src/extra_nci_thunks.c \
+ include/pmc/pmc_nci.h
$(CC) $(CFLAGS) @optimize::src/extra_nci_thunks.c@ @ccwarn::src/extra_nci_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extra_nci_thunks.c
$(EXTRANCITHUNKS_SO) : $(LIBPARROT) src/extra_nci_thunks$(O)
@@ -2478,7 +2479,7 @@
--links=no --totals \
-R --exclude=blib --exclude=.svn \
--languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
- -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK \
+ -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
.
# this works with an old etags (XEmacs 21.5*)
@@ -2495,11 +2496,11 @@
tags-vi: tags.vi.dummy
$(RM_F) tags
@ctags@ \
- --links=no --totals \
- -R --exclude=blib --exclude=.svn \
- --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
- -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK \
- .
+ --links=no --totals \
+ -R --exclude=blib --exclude=.svn \
+ --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
+ -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK,ARGFREE,ARGFREE_NOTNULL \
+ .
$(PERL) $(BUILD_TOOLS_DIR)/addopstags.pl $(OPS_FILES)
tags.vi.dummy:
@@ -2511,6 +2512,7 @@
# Andy's extra-cranky Perl::Critic checking for cage cleaners
cagecritic:
+ @perl -MPerl::Critic::Bangs -e'$$min=q{1.04};die qq{You need Bangs $$min} unless $$Perl::Critic::Bangs::VERSION ge $$min'
perlcritic -1 --profile tools/util/perlcritic-cage.conf $(CRITIC_FILES)
# This target will eventually create all the headers automatically. If you
@@ -2520,30 +2522,33 @@
HEADERIZER_O_FILES = \
$(O_FILES) \
+ src/main$(O) \
src/packdump$(O) \
src/pbc_merge$(O) \
$(PIRC_O_FILES)
headerizer : src/core_pmcs.c
- $(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl $(HEADERIZER_O_FILES) compilers/imcc/imcc.y
+ $(HEADERIZER) $(HEADERIZER_O_FILES) compilers/imcc/imcc.y
apilist: src/core_pmcs.c
- $(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl --macro=PARROT_EXPORT $(HEADERIZER_O_FILES)
+ $(HEADERIZER) --macro=PARROT_API $(HEADERIZER_O_FILES)
+
+exportlist: src/core_pmcs.c
+ $(HEADERIZER) --macro=PARROT_EXPORT $(HEADERIZER_O_FILES)
malloclist: src/core_pmcs.c
- $(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl --macro=PARROT_MALLOC $(HEADERIZER_O_FILES)
+ $(HEADERIZER) --macro=PARROT_MALLOC $(HEADERIZER_O_FILES)
+include src/dynpmc/Rules.mak
include src/dynoplibs/Rules.mak
include runtime/parrot/library/Rules.mak
include compilers/imcc/Rules.mak
include compilers/pirc/Rules.mak
-include compilers/nqp/Rules.mak
include compilers/pge/Rules.mak
include compilers/pct/Rules.mak
include compilers/opsc/Rules.mak
include compilers/tge/Rules.mak
include compilers/data_json/Rules.mak
-include compilers/json/Rules.mak
include ext/nqp-rx/Rules.mak
# Local variables:
Modified: branches/ops_pct/config/gen/opengl.pm
==============================================================================
--- branches/ops_pct/config/gen/opengl.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/opengl.pm Wed May 5 08:45:29 2010 (r46302)
@@ -516,6 +516,7 @@
# "$ENV{HOME}/src/osx-insane/usr/X11/include/GL/*.h",
# "$ENV{HOME}/src/osx-insane/usr/X11/include/GL/internal/*.h",
# "$ENV{HOME}/src/osx-insane/usr/X11R6 1/include/GL/*.h",
+# "$ENV{HOME}/src/osx-10.6.3/Headers/*.h",
);
# X freeglut only if DISPLAY is set, otherwise use native w32api GLUT
@@ -663,6 +664,9 @@
next if /^#/;
next if /\btypedef\b/;
+ # Work around bug in Mac OS X headers (glext.h as of 10.6.3, at least)
+ next if /^\s*extern\s+\w+\s+\(\*\s+/;
+
# Skip where we are explicitly told to do so
next if /\bFGUNUSED\b/;
Modified: branches/ops_pct/config/gen/platform.pm
==============================================================================
--- branches/ops_pct/config/gen/platform.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform.pm Wed May 5 08:45:29 2010 (r46302)
@@ -25,7 +25,6 @@
my %data;
$data{description} = q{Move platform files into place};
$data{result} = q{};
- $data{platform_interface} = q{config/gen/platform/platform_interface.h};
$data{coda} = <<'CODA';
/*
* Local variables:
@@ -52,10 +51,6 @@
$self->_handle_asm($conf);
- # interface is the same for all platforms
- copy_if_diff( $self->{platform_interface},
- "include/parrot/platform_interface.h" );
-
$self->_set_limits($conf, $verbose);
return 1;
Modified: branches/ops_pct/config/gen/platform/ansi/dl.c
==============================================================================
--- branches/ops_pct/config/gen/platform/ansi/dl.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/ansi/dl.c Wed May 5 08:45:29 2010 (r46302)
@@ -23,14 +23,15 @@
/*
-=item C<void * Parrot_dlopen(const char *filename)>
+=item C<void * Parrot_dlopen(const char *filename, SHIM(Parrot_dlopen_flags
+flags)>
=cut
*/
void *
-Parrot_dlopen(const char *filename)
+Parrot_dlopen(const char *filename, SHIM(Parrot_dlopen_flags flags))
{
Parrot_warn(NULL, PARROT_WARNINGS_PLATFORM_FLAG, "Parrot_dlopen not implemented");
return NULL;
Modified: branches/ops_pct/config/gen/platform/generic/dl.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/dl.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/generic/dl.c Wed May 5 08:45:29 2010 (r46302)
@@ -29,17 +29,18 @@
/*
-=item C<void * Parrot_dlopen(const char *filename)>
+=item C<void * Parrot_dlopen(const char *filename, Parrot_dlopen_flags flags)>
=cut
*/
void *
-Parrot_dlopen(const char *filename)
+Parrot_dlopen(const char *filename, Parrot_dlopen_flags flags)
{
#ifdef PARROT_HAS_HEADER_DLFCN
- return dlopen(filename, PARROT_DLOPEN_FLAGS);
+ return dlopen(filename, PARROT_DLOPEN_FLAGS
+ | ((flags & Parrot_dlopen_global_FLAG) ? RTLD_GLOBAL : 0));
#else
return 0;
#endif
Modified: branches/ops_pct/config/gen/platform/generic/env.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/env.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/generic/env.c Wed May 5 08:45:29 2010 (r46302)
@@ -37,8 +37,8 @@
void
Parrot_setenv(PARROT_INTERP, STRING *str_name, STRING *str_value)
{
- char *name = Parrot_str_to_cstring(interp, str_name);
- char *value = Parrot_str_to_cstring(interp, str_value);
+ char * const name = Parrot_str_to_cstring(interp, str_name);
+ char * const value = Parrot_str_to_cstring(interp, str_value);
#ifdef PARROT_HAS_SETENV
setenv(name, value, 1);
#else
@@ -74,7 +74,7 @@
void
Parrot_unsetenv(PARROT_INTERP, STRING *str_name)
{
- char *name = Parrot_str_to_cstring(interp, str_name);
+ char * const name = Parrot_str_to_cstring(interp, str_name);
#ifdef PARROT_HAS_UNSETENV
unsetenv(name);
#else
@@ -96,8 +96,8 @@
char *
Parrot_getenv(PARROT_INTERP, STRING *str_name)
{
- char *name = Parrot_str_to_cstring(interp, str_name);
- char *value = getenv(name);
+ char * const name = Parrot_str_to_cstring(interp, str_name);
+ char *value = getenv(name);
Parrot_str_free_cstring(name);
return value;
}
Modified: branches/ops_pct/config/gen/platform/generic/exec.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/exec.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/generic/exec.c Wed May 5 08:45:29 2010 (r46302)
@@ -55,7 +55,7 @@
else {
/* child */
char * const cmd = Parrot_str_to_cstring(interp, command);
- int status = execlp("sh", "sh", "-c", cmd, (void *)NULL);
+ const int status = execlp("sh", "sh", "-c", cmd, (void *)NULL);
/* if we get here, something's horribly wrong, but free anyway... */
Parrot_str_free_cstring(cmd);
Modified: branches/ops_pct/config/gen/platform/generic/itimer.c
==============================================================================
--- branches/ops_pct/config/gen/platform/generic/itimer.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/generic/itimer.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
/*
+ * Copyright (C) 2004-2010, Parrot Foundation.
* $Id$
- * Copyright (C) 2004-2009, Parrot Foundation.
*/
/*
@@ -77,7 +77,7 @@
*/
int
-get_sys_timer_ms(void *handle)
+get_sys_timer_ms(SHIM(void *handle))
{
struct itimerval ots;
getitimer(ITIMER_REAL, &ots);
Deleted: branches/ops_pct/config/gen/platform/platform_interface.h
==============================================================================
--- branches/ops_pct/config/gen/platform/platform_interface.h Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,127 +0,0 @@
-/*
- * $Id$
- * Copyright (C) 2003-2008, Parrot Foundation.
- */
-
-#ifndef PARROT_PLATFORM_INTERFACE_H_GUARD
-#define PARROT_PLATFORM_INTERFACE_H_GUARD
-/*
-** platform_interface.h
-*/
-#include "parrot/config.h"
-#include "parrot/interpreter.h"
-
-/*
-** I/O:
-*/
-
-
-/*
-** Math:
-*/
-
-extern int Parrot_signbit(double x);
-#if NUMVAL_SIZE == 12
-int Parrot_signbit_l(long double x);
-#endif
-
-/*
-** Memory:
-*/
-
-void *Parrot_memalign(size_t align, size_t size);
-void *Parrot_memalign_if_possible(size_t align, size_t size);
-void Parrot_free_memalign(void *);
-
-#if !defined(PARROT_HAS_SOME_MEMALIGN)
-# define Parrot_memalign_if_possible(a, s) malloc(s)
-#else
-# define Parrot_memalign_if_possible(a, s) Parrot_memalign((a), (s))
-#endif
-
-#ifdef PARROT_HAS_EXEC_PROTECT
-void *mem_alloc_executable(size_t);
-void mem_free_executable(void *, size_t);
-void *mem_realloc_executable(void *, size_t, size_t);
-#else
-# define mem_alloc_executable mem_internal_allocate
-# define mem_free_executable(a, b) mem_internal_free(a)
-# define mem_realloc_executable(a, b, c) mem_internal_realloc((a), (c))
-#endif
-
-/*
-** Time
-*/
-
-void Parrot_sleep(unsigned int seconds);
-void Parrot_usleep(unsigned int microseconds);
-INTVAL Parrot_intval_time(void);
-FLOATVAL Parrot_floatval_time(void);
-struct tm * Parrot_gmtime_r(const time_t *, struct tm *);
-struct tm * Parrot_localtime_r(const time_t *, struct tm *);
-char* Parrot_asctime_r(const struct tm*, char *);
-
-/*
- * Env
- */
-
-void Parrot_setenv(PARROT_INTERP, STRING *name, STRING *value);
-void Parrot_unsetenv(PARROT_INTERP, STRING *name);
-char * Parrot_getenv(PARROT_INTERP, STRING *name);
-
-/*
-** Dynamic Loading:
-*/
-
-void *Parrot_dlopen(const char *filename);
-const char *Parrot_dlerror(void);
-void *Parrot_dlsym(void *handle, const char *symbol);
-int Parrot_dlclose(void *handle);
-
-/*
- * signal handling
- */
-#ifndef PARROT_HAS_HEADER_SIGNAL
-# define Parrot_set_sighandler(s, h)
-#endif
-
-/*
- * system timer
- */
-
-#ifdef PARROT_HAS_SOME_SYS_TIMER
-
-void * new_sys_timer_ms(void);
-void start_sys_timer_ms(void *handle, int ms);
-void stop_sys_timer_ms(void *handle);
-int get_sys_timer_ms(void *handle);
-
-#else
-
-# define new_sys_timer_ms() NULL
-# define start_sys_timer_ms(h, m)
-# define stop_sys_timer_ms(h)
-# define get_sys_timer_ms(h) 0
-
-#endif
-
-/*
- * high-resolution timer support
- */
-
-UHUGEINTVAL Parrot_hires_get_time(void);
-UINTVAL Parrot_hires_get_tick_duration(void);
-
-
-struct parrot_string_t;
-INTVAL Parrot_Run_OS_Command(Interp*, struct parrot_string_t *);
-INTVAL Parrot_Run_OS_Command_Argv(Interp*, struct PMC *);
-
-#endif /* PARROT_PLATFORM_INTERFACE_H_GUARD */
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_pct/config/gen/platform/win32/dl.c
==============================================================================
--- branches/ops_pct/config/gen/platform/win32/dl.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/win32/dl.c Wed May 5 08:45:29 2010 (r46302)
@@ -23,7 +23,7 @@
/*
-=item C<void * Parrot_dlopen(const char *filename)>
+=item C<void * Parrot_dlopen(const char *filename, Parrot_dlopen_flags flags)>
Opens a dynamic library, and returns a system handle to that library.
Returns Parrot_dlerror() on failure.
@@ -33,7 +33,7 @@
*/
void *
-Parrot_dlopen(const char *filename)
+Parrot_dlopen(const char *filename, SHIM(Parrot_dlopen_flags flags))
{
return LoadLibrary(filename);
}
Modified: branches/ops_pct/config/gen/platform/win32/env.c
==============================================================================
--- branches/ops_pct/config/gen/platform/win32/env.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/win32/env.c Wed May 5 08:45:29 2010 (r46302)
@@ -46,8 +46,8 @@
void
Parrot_setenv(PARROT_INTERP, STRING *str_name, STRING *str_value)
{
- char * name = Parrot_str_to_cstring(interp, str_name);
- char * value = Parrot_str_to_cstring(interp, str_value);
+ char * const name = Parrot_str_to_cstring(interp, str_name);
+ char * const value = Parrot_str_to_cstring(interp, str_value);
assert(name != NULL);
assert(value != NULL);
@@ -99,9 +99,9 @@
char *
Parrot_getenv(PARROT_INTERP, ARGIN(STRING *str_name))
{
- char *name = Parrot_str_to_cstring(interp, str_name);
- const DWORD size = GetEnvironmentVariable(name, NULL, 0);
- char *buffer = NULL;
+ char * const name = Parrot_str_to_cstring(interp, str_name);
+ const DWORD size = GetEnvironmentVariable(name, NULL, 0);
+ char *buffer = NULL;
if (size == 0) {
Parrot_str_free_cstring(name);
Modified: branches/ops_pct/config/gen/platform/win32/exec.c
==============================================================================
--- branches/ops_pct/config/gen/platform/win32/exec.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/gen/platform/win32/exec.c Wed May 5 08:45:29 2010 (r46302)
@@ -41,10 +41,9 @@
DWORD status = 0;
STARTUPINFO si;
PROCESS_INFORMATION pi;
- int free_it = 0;
- char* cmd = (char *)mem_sys_allocate(command->strlen + 4);
- char* shell = Parrot_getenv(interp, Parrot_str_new(interp, "ComSpec", strlen("ComSpec")));
- char* cmdin = Parrot_str_to_cstring(interp, command);
+ char* const cmd = (char *)mem_sys_allocate(command->strlen + 4);
+ char* const shell = Parrot_getenv(interp, Parrot_str_new(interp, "ComSpec", strlen("ComSpec")));
+ char* const cmdin = Parrot_str_to_cstring(interp, command);
strcpy(cmd, "/c ");
strcat(cmd, cmdin);
@@ -67,7 +66,7 @@
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
- if (free_it) free(shell);
+ Parrot_str_free_cstring(shell);
mem_sys_free(cmd);
/* Return exit code left shifted by 8 for POSIX emulation. */
@@ -108,8 +107,8 @@
/* Now build command line. */
for (i = 0; i < pmclen; i++) {
- STRING *s = VTABLE_get_string_keyed_int(interp, cmdargs, i);
- char *cs = Parrot_str_to_cstring(interp, s);
+ STRING * const s = VTABLE_get_string_keyed_int(interp, cmdargs, i);
+ char * const cs = Parrot_str_to_cstring(interp, s);
if (cmdlinepos + (int)s->strlen + 3 > cmdlinelen) {
cmdlinelen += s->strlen + 4;
cmdline = (char *)mem_sys_realloc(cmdline, cmdlinelen);
Modified: branches/ops_pct/config/init/defaults.pm
==============================================================================
--- branches/ops_pct/config/init/defaults.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/init/defaults.pm Wed May 5 08:45:29 2010 (r46302)
@@ -80,6 +80,7 @@
my $ccdlflags = $Config{ccdlflags};
$ccdlflags =~ s/\s*-Wl,-rpath,\S*//g if $conf->options->get('disable-rpath');
+ my $cc_option = $conf->options->get('cc');
# We need a Glossary somewhere!
$conf->data->set(
debugging => $conf->options->get('debugging') ? 1 : 0,
@@ -92,23 +93,15 @@
# Compiler -- used to turn .c files into object files.
# (Usually cc or cl, or something like that.)
- cc => $Config{cc},
- ccflags => $Config{ccflags},
- ccwarn => exists( $Config{ccwarn} ) ? $Config{ccwarn} : '',
+ cc => $cc_option ? $cc_option : $Config{cc},
+ # If we specify a compiler, we can't use existing ccflags.
+ ccflags => $cc_option ? '' : $Config{ccflags},
+ ccwarn => '',
# Flags used to indicate this object file is to be compiled
# with position-independent code suitable for dynamic loading.
cc_shared => $Config{cccdlflags}, # e.g. -fpic for GNU cc.
- # C++ compiler -- used to compile parts of ICU. ICU's configure
- # will try to find a suitable compiler, but it prefers GNU c++ over
- # a system c++, which might not be appropriate. This setting
- # allows you to override ICU's guess, but is otherwise currently
- # unset. Ultimately, it should be set to whatever ICU figures
- # out, or parrot should look for it and always tell ICU what to
- # use.
- cxx => 'c++',
-
# Linker, used to link object files (plus libraries) into
# an executable. It is usually $cc on Unix-ish systems.
# VMS and Win32 might use "Link".
@@ -191,7 +184,7 @@
# some utilities in Makefile
cat => '$(PERL) -MExtUtils::Command -e cat',
- chmod => '$(PERL) -MExtUtils::Command -e ExtUtils::Command::chmod',
+ chmod => '$(PERL) -MExtUtils::Command -e chmod',
cp => '$(PERL) -MExtUtils::Command -e cp',
mkpath => '$(PERL) -MExtUtils::Command -e mkpath',
mv => '$(PERL) -MExtUtils::Command -e mv',
@@ -249,6 +242,8 @@
no_lines_flag => $conf->options->get('no-line-directives') ? '--no-lines' : '',
tempdir => File::Spec->tmpdir,
+
+ PKGCONFIG_DIR => $conf->options->get('pkgconfigdir') || '',
);
# TT #855: Profiling options are too specific to GCC
@@ -281,7 +276,7 @@
$archname =~ s/x86_64/i386/;
# adjust gcc?
- for my $cc qw(cc cxx link ld) {
+ for my $cc qw(cc link ld) {
$conf->data->add( ' ', $cc, '-m32' );
}
Modified: branches/ops_pct/config/init/hints.pm
==============================================================================
--- branches/ops_pct/config/init/hints.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/init/hints.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2003, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
Modified: branches/ops_pct/config/init/hints/cygwin.pm
==============================================================================
--- branches/ops_pct/config/init/hints/cygwin.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/init/hints/cygwin.pm Wed May 5 08:45:29 2010 (r46302)
@@ -36,6 +36,7 @@
# this later causes problems, it might be worth revisiting. A. Dougherty
# 9/9/2002
$conf->data->set(
+ cp => '/bin/cp', # ExtUtils::Command::cp broken cpan #56666
build_dir => $build_dir,
ld => $conf->data->get('ld') eq 'ld2'
? 'gcc' # do not use old perl5 linker helper
Modified: branches/ops_pct/config/init/hints/irix.pm
==============================================================================
--- branches/ops_pct/config/init/hints/irix.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/init/hints/irix.pm Wed May 5 08:45:29 2010 (r46302)
@@ -27,15 +27,12 @@
$conf->data->set( libs => $libs );
my $cc = $conf->data->get('cc');
- my $cxx = $conf->data->get('cxx');
my $ld = $conf->data->get('ld');
my $link = $conf->data->get('link');
if ( $cc =~ /cc -64/ ) {
- $cxx = 'CC -64';
$ld = 'CC -64';
$link = 'CC -64';
$conf->data->set(
- cxx => $cxx,
ld => $ld,
link => $link,
);
Modified: branches/ops_pct/config/init/optimize.pm
==============================================================================
--- branches/ops_pct/config/init/optimize.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/init/optimize.pm Wed May 5 08:45:29 2010 (r46302)
@@ -74,17 +74,6 @@
$conf->data->set( cc_debug => '' );
$conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
- # per file overrides - not every compiler can optimize every file.
-
- # The src/ops/core_ops*.c files are challenging to optimize.
- # gcc can usually handle it, but don't assume any other compilers can,
- # until there is specific evidence otherwise.
- if ( ! defined($gccversion)) {
- $conf->data->set('optimize::src/ops/core_ops_cg.c','');
- $conf->data->set('optimize::src/ops/core_ops_cgp.c','');
- $conf->data->set('optimize::src/ops/core_ops_switch.c','');
- }
-
# TT #405
if ($conf->data->get('cpuarch') eq 'amd64') {
$conf->data->set('optimize::src/gc/system.c','');
Modified: branches/ops_pct/config/inter/progs.pm
==============================================================================
--- branches/ops_pct/config/inter/progs.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/config/inter/progs.pm Wed May 5 08:45:29 2010 (r46302)
@@ -75,7 +75,7 @@
my ($conf, $ask) = @_;
# Set each variable individually so that hints files can use them as
# triggers to help pick the correct defaults for later answers.
- my ( $cc, $cxx, $link, $ld, $ccflags, $linkflags, $ldflags, $libs, $lex, $yacc );
+ my ( $cc, $link, $ld, $ccflags, $linkflags, $ldflags, $libs, $lex, $yacc );
$cc = integrate( $conf->data->get('cc'), $conf->options->get('cc') );
$cc = prompt( "What C compiler do you want to use?", $cc )
if $ask;
@@ -124,9 +124,6 @@
if $ask;
$conf->data->set( libs => $libs );
- $cxx = integrate( $conf->data->get('cxx'), $conf->options->get('cxx') );
- $cxx = prompt( "What C++ compiler do you want to use?", $cxx ) if $ask;
- $conf->data->set( cxx => $cxx );
return ($conf, $cc);
}
Modified: branches/ops_pct/docs/book/draft/appc_command_line_options.pod
==============================================================================
--- branches/ops_pct/docs/book/draft/appc_command_line_options.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/book/draft/appc_command_line_options.pod Wed May 5 08:45:29 2010 (r46302)
@@ -260,18 +260,6 @@
Run with the I<fast core>.
-=item -R cgoto
-
-Run the I<computed goto core> (CGoto).
-
-=item -R cgp
-
-Run with the I<CGoto-Prederefed> core.
-
-=item -R switch
-
-Run with the I<Switched core>.
-
=item -R gcdebug
Performs a full GC run before every op dispatch
Modified: branches/ops_pct/docs/book/draft/ch07_dynpmcs.pod
==============================================================================
--- branches/ops_pct/docs/book/draft/ch07_dynpmcs.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/book/draft/ch07_dynpmcs.pod Wed May 5 08:45:29 2010 (r46302)
@@ -195,7 +195,7 @@
=head3 VTABLE Functions Parameters
VTABLE functions are defined just like ordinary C functions, almost. Here's
-a normal definition for a VTABLE method:
+a normal definition for a VTABLE function:
VTABLE VTABLENAME (PARAMETERS) {
/* ordinary C here, almost */
Modified: branches/ops_pct/docs/book/draft/chXX_hlls.pod
==============================================================================
--- branches/ops_pct/docs/book/draft/chXX_hlls.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/book/draft/chXX_hlls.pod Wed May 5 08:45:29 2010 (r46302)
@@ -211,9 +211,9 @@
=over 4
-=item * VTable methods
+=item * VTable Functions
-VTable methods are the standard interface for PMC data types, and all PMCs
+VTable functions are the standard interface for PMC data types, and all PMCs
have them. If the PMCs were written properly to satisfy this interface
all the necessary information from those PMCs. Operate on the PMCs at the
VTable level, and we can safely ignore the implementation details of them.
Modified: branches/ops_pct/docs/book/pir/ch04_variables.pod
==============================================================================
--- branches/ops_pct/docs/book/pir/ch04_variables.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/book/pir/ch04_variables.pod Wed May 5 08:45:29 2010 (r46302)
@@ -489,34 +489,35 @@
When the offset position is negative, it counts backward from the end of the
string. Thus an offset of -1 starts at the last character of the string.
-C<substr> also has a four-argument form, where the fourth argument is a string
-used to replace the substring. This variant modifies the source string and
-returns the removed substring.
+C<substr> no longer has a four-argument form, as in-place string operations
+have been removed. There is a C<replace> operator which will perform the
+replacement and return a new_string without modifying the old_string.
+The arguments are new_string, old_string, offset, count and
+replacement_string. The old_string is copied to the new_string with the
+replacement_string inserted from offset replacing the content for count
+characters.
-This example above replaces the substring "bc" in C<$S1> with the string "XYZ",
-and returns "bc" in C<$S0>:
+This example replaces the substring "bc" in C<$S1> with the string "XYZ",
+and returns "aXYZde" in C<$S0>, C<$S1> is not changed:
=begin PIR_FRAGMENT
$S1 = "abcde"
- $S0 = substr $S1, 1, 2, "XYZ"
- say $S0 # prints "bc"
- say $S1 # prints "aXYZde"
+ $S0 = replace $S1, 1, 2, "XYZ"
+ say $S0 # prints "aXYZde"
+ say $S1 # prints "abcde"
=end PIR_FRAGMENT
-When the offset position in a replacing C<substr> is one character beyond the
-original string length, C<substr> appends the replacement string just like the
+When the offset position in a C<replace> is one character beyond the original
+string length, C<replace> appends the replacement string just like the
concatenation operator. If the replacement string is an empty string, the
-opcode removes the characters from the original string.
-
-If you don't need to capture the replaced string, an optimized version of
-C<substr> performs a replace without returning the removed substring:
+opcode removes the characters from the original string in the new string.
=begin PIR_FRAGMENT
$S1 = "abcde"
- $S1 = substr 1, 2, "XYZ"
+ $S1 = replace $S1, 1, 2, "XYZ"
say $S1 # prints "aXYZde"
=end PIR_FRAGMENT
@@ -897,10 +898,11 @@
C<bors>X<bors opcode>, C<bands>X<bands opcode>, and C<bxors>X<bxors opcode>.
These take string or string-like PMC arguments and perform the logical
operation on each byte of the strings to produce the result string.
+Remember that in-place string operations are no longer available.
=begin PIR_FRAGMENT
- $S0 = bors $S1
+ $P0 = bors $P1
$P0 = bands $P1
$S0 = bors $S1, $S2
$P0 = bxors $P1, $S2
@@ -970,9 +972,9 @@
X<UTF-16 encoding>
Parrot supports the character sets C<ascii>, C<binary>, C<iso-8859-1>
(Latin 1), and C<unicode> and the encodings C<fixed_8>, C<ucs2>,
-C<utf8>, and C<utf18>.
+C<utf8>, and C<utf16>.
-The C<binary:> charset treats the string as a buffer of raw unformatted
+The C<binary> charset treats the string as a buffer of raw unformatted
binary data. It isn't really a string per se, because binary data
contains no readable characters. This exists to support libraries which
manipulate binary data that doesn't easily fit into any other primitive
Modified: branches/ops_pct/docs/configuration.pod
==============================================================================
--- branches/ops_pct/docs/configuration.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/configuration.pod Wed May 5 08:45:29 2010 (r46302)
@@ -123,10 +123,6 @@
=over 4
-=item F<config/auto/cgoto.pm>
-
- Does your compiler support computed goto...
-
=item F<gen/config_h.pm>
Generate C headers...
@@ -136,7 +132,7 @@
Note that on non-interactive steps, the text I<done> will be printed after the
description when the step finishes executing; for example, the user will see:
- Does your compiler support computed goto..............done.
+ Determine flags for building shared libraries.....-fPIC
=item C<result>
Modified: branches/ops_pct/docs/dev/infant.pod
==============================================================================
--- branches/ops_pct/docs/dev/infant.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/dev/infant.pod Wed May 5 08:45:29 2010 (r46302)
@@ -142,15 +142,15 @@
+ Fast mark phase (GC already manipulates the flags)
- Generation count must be maintained
- Disallows recursive opcode calls (necessary for eg implementing
- vtable methods in pasm)
+ vtable functions in pasm)
- Can temporarily use more memory (dead objects accumulate during the
current generation)
In order to allow recursive opcode calls, we could increment the generation
count in more places and make sure nothing is left unanchored at those points,
but that would gradually remove all advantages of this scheme and make it more
-difficult to call existing vtable methods (since you never know when they might
-start running pasm code.)
+difficult to call existing vtable functions (since you never know when they
+might start running pasm code.)
=head2 Variant 5: generation stack
Modified: branches/ops_pct/docs/dev/pccmethods.pod
==============================================================================
--- branches/ops_pct/docs/dev/pccmethods.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/dev/pccmethods.pod Wed May 5 08:45:29 2010 (r46302)
@@ -10,7 +10,7 @@
A C<PCCMETHOD> is a PMC method that follows Parrot Calling Conventions
(a.k.a. PCC). This allows PIR code to call PMC methods using slurpy, named,
and other types of arguments as specified in F<PDD03>. This offers flexibility
-not found in a PMC C<METHOD> or a vtable method using C calling conventions.
+not found in a PMC C<METHOD> or a vtable function using C calling conventions.
C<PCCINVOKE> is used to call a method using the Parrot Calling Conventions.
It uses the standard find_method/invoke approach that the callmethodcc opcode
@@ -113,7 +113,7 @@
=head2 Performance
-When a C<METHOD> or vtable method is called, C<NCI> is used to map the
+When a C<METHOD> or vtable function is called, C<NCI> is used to map the
arguments held in the current Parrot_Context onto the C calling conventions.
That is, you still end up involving the Parrot Calling Conventions anyway,
so there is no reason to expect a C<PCCMETHOD> to be any slower. It may well
Modified: branches/ops_pct/docs/dev/pmc_freeze.pod
==============================================================================
--- branches/ops_pct/docs/dev/pmc_freeze.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/dev/pmc_freeze.pod Wed May 5 08:45:29 2010 (r46302)
@@ -79,7 +79,7 @@
=head2 The visit_info structure
This structure holds all necessary information and function pointers specific
-to the desired functionality. It gets passed on to all vtable methods and
+to the desired functionality. It gets passed on to all vtable functions and
callback functions.
=head2 Working loop
@@ -99,7 +99,7 @@
This is done by a callback function inside the B<visit_info> structure called
B<visit_pmc_now>. It gets called initially to put the first item on the list
and is called thereafter from all PMCs for contained PMCs inside the B<visit>
-vtable method.
+vtable function.
=head2 The visit() vtable
@@ -140,19 +140,19 @@
So after all we finally arrived at the point to actually perform the desired
functionality. First the PMC-specific part is done inside F<pmc_freeze.c> then
-the specific vtable method B<freeze>, B<thaw>, whatever, is called, again via a
-function pointer called B<visit_action>.
+the specific vtable function B<freeze>, B<thaw>, whatever, is called, again
+via a function pointer called B<visit_action>.
=head1 Freeze and thaw
As stated PMCs are currently processed inside the core, PMC-specific parts are
-done by calling the PMCs vtable method. This parts could of course be moved to
+done by calling the PMCs vtable function. This parts could of course be moved to
F<default.pmc> too, so that it's simpler to override the functionality.
=head2 Serializer interface
During initialization the B<visit_info>s B<image_io> data pointer is filled
-with an object having B<vtable> methods that remarkably look like a PMCs
+with an object having B<vtable> functions that remarkably look like a PMCs
vtable. So B<io-E<gt>vtable-E<gt>push_integer> spits out an INTVAL to the
frozen B<image>, while B<shift_integer> gets an INTVAL from the frozen stream.
Modified: branches/ops_pct/docs/dev/pmc_obj_design_meeting_notes.pod
==============================================================================
--- branches/ops_pct/docs/dev/pmc_obj_design_meeting_notes.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/dev/pmc_obj_design_meeting_notes.pod Wed May 5 08:45:29 2010 (r46302)
@@ -60,7 +60,7 @@
statically calls the method in the current class.
B<Recommendation>: Throughout the source, rename SELF to STATIC_SELF, and
-rename DYNSELF to SELF. Additionally, direct access to VTABLE methods should
+rename DYNSELF to SELF. Additionally, direct access to VTABLE functions should
be reviewed, and SELF should be used where possible to increase clarity and
maintainability (this is a good CAGE task.) Also, this should become a coding
standard for PMCs.
Modified: branches/ops_pct/docs/dev/profiling.pod
==============================================================================
--- branches/ops_pct/docs/dev/profiling.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/dev/profiling.pod Wed May 5 08:45:29 2010 (r46302)
@@ -55,6 +55,19 @@
profiling runcore to run more slowly. By default, they are disabled. Set this
value to enable them.
+=item C<PARROT_PROFILING_CANONICAL_OUPUT>
+
+When this is set, the profiling runcore will record all addresses as a single
+constant value and all times as 1. This options is useful primarily for
+testing, where it's helpful to have a way to ensure that a given chunk of code
+will always produce exactly the same profile. If you want this feature
+enabled, you also probably want to pass a fixed hash seed to Parrot via
+C<--hash-seed 1324> to avoid any non-deterministic behavior that hash seed
+randomization may cause.
+
+This variable is not useful apart from testing the profiling runcore and will
+most certainly not help you find hotspots in your code.
+
=back
=cut
Modified: branches/ops_pct/docs/embed.pod
==============================================================================
--- branches/ops_pct/docs/embed.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/embed.pod Wed May 5 08:45:29 2010 (r46302)
@@ -121,12 +121,6 @@
=item PARROT_THR_THREAD_POOL
-=item PARROT_THR_TYPE_1
-
-=item PARROT_THR_TYPE_2
-
-=item PARROT_THR_TYPE_3
-
=back
See F<interpreter.h> for the definition of these flags (TODO: document flag
@@ -145,12 +139,6 @@
=item PARROT_FAST_CORE
-=item PARROT_SWITCH_CORE
-
-=item PARROT_CGP_CORE
-
-=item PARROT_CGOTO_CORE
-
=item PARROT_EXEC_CORE
=item PARROT_GC_DEBUG_CORE
@@ -236,7 +224,7 @@
Creates a "dummy" packfile in lieu of actually creating one from a bytecode
file on disk.
-=item C<void Parrot_load_bytecode(PARROT_INTERP, const char *path)>
+=item C<void Parrot_load_bytecode(PARROT_INTERP, STRING *path)>
Reads and load Parrot bytecode or PIR from the file referenced by C<path>.
You should create a dummy packfile beforehand; see C<PackFile_new_dummy> for
@@ -1551,8 +1539,6 @@
=item C<Parrot_store_sub_in_namespace>
-=item C<Parrot_str_append>
-
=item C<Parrot_str_boolean>
=item C<Parrot_str_byte_length>
@@ -1601,7 +1587,7 @@
=item C<Parrot_str_indexed>
-=item C<Parrot_string_cstring>
+=item C<Parrot_str_cstring>
=item C<Parrot_str_init>
Modified: branches/ops_pct/docs/intro.pod
==============================================================================
--- branches/ops_pct/docs/intro.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/intro.pod Wed May 5 08:45:29 2010 (r46302)
@@ -391,7 +391,7 @@
=begin PIR_FRAGMENT
- .local pmc result, factorial
+ .local int result
result = factorial($I0)
=end PIR_FRAGMENT
Modified: branches/ops_pct/docs/parrothist.pod
==============================================================================
--- branches/ops_pct/docs/parrothist.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/parrothist.pod Wed May 5 08:45:29 2010 (r46302)
@@ -104,4 +104,7 @@
chromatic 2.0.0 * 2010-Jan-19 "Inevitable"
darbelo 2.1.0 2010-Feb-16 "As Scheduled"
+ cotto 2.2.0 2010-Mar-16 "Like Clockwork"
+
+ Gerd 2.3.0 * 2010-Apr-20 "Samoan Lory"
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd01_overview.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd01_overview.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd01_overview.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 1: Overview
@@ -190,7 +190,7 @@
bytecode and save it for later use. Essentially, we would compile a program as
normal, but then simply freeze the bytecode to disk for later loading.
-=head3 Your HLL in, Java, CLI, or whatever out
+=head3 Your HLL in; Java, CLI, or whatever out
The previous section assumes that we will be emitting Parrot bytecode.
However, there are other possibilities: we could translate the bytecode
@@ -200,7 +200,7 @@
=head2 References
-To come.
+None.
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd05_opfunc.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd05_opfunc.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd05_opfunc.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 5: Opcodes
@@ -13,6 +13,10 @@
{{ NOTE: standardize on underscores or no underscores? }}
+=head2 Version
+
+$Revision$
+
=head2 Description
The opcode functions are the workhorse of the Parrot engine. They control
@@ -169,34 +173,7 @@
=head2 References
-Oploop PDD, PDD 4 (Internal types)
-
-=head2 Footnotes
-
-None.
-
-=head2 Version
-
-1.0
-
-=head3 Current
-
- Maintainer: Dan Sugalski <dan at sidhe.org>
- Class: Internals
- PDD Number: 5
- Version: 1.0
- Status: Developing
- Last Modified: 16 Jul 2001
- PDD Format: 1
- Language: English
-
-=head3 History
-
-None. First version
-
-=head2 Changes
-
-None. First version
+Oploop PDD, PDD 4 (Internal types).
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd06_pasm.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 6: Parrot Assembly Language (PASM)
@@ -7,6 +7,10 @@
The format of Parrot's bytecode assembly language.
+=head2 Version
+
+$Revision$
+
=head2 Description
Parrot's bytecode can be thought of as a form of machine language for a
@@ -172,8 +176,8 @@
where register_type is 0x100, 0x200, 0x400, or 0x800 for PMC, string, integer,
or number respectively. So N19 would be 0x413.
-B<Note>: Instructions tagged with a * will call a vtable method to handle the
-instruction if used on PMC registers.
+B<Note>: Instructions tagged with a * will call a vtable function to handle
+the instruction if used on PMC registers.
In all cases, the letters x, y, and z refer to register numbers. The letter t
refers to a generic register (P, S, I, or N). A lowercase p, s, i, or n means
@@ -244,7 +248,7 @@
$foo = $bar;
-X's assign vtable method is invoked and it does whatever is appropriate.
+X's assign vtable function is invoked and it does whatever is appropriate.
=item clone Px, Py
@@ -1006,186 +1010,10 @@
=back
-=head2 Attachments
-
-None.
-
=head2 References
None.
-=head2 Version
-
-1.9
-
-=head3 Current
-
- Maintainer: Dan Sugalski
- Class: Internals
- PDD Number: 6
- Version: 1.9
- Status: Developing
- Last Modified: 28 February 2007
- PDD Format: 1
- Language: English
-
-=head3 History
-
-=over 4
-
-=item Version 1.9
-
-February 28, 2007
-
-=item Version 1.8
-
-December 11, 2002
-
-=item Version 1.7
-
-December 02, 2002
-
-=item Version 1.6
-
-November 05, 2001
-
-=item Version 1.5
-
-October 12, 2001
-
-=item Version 1.4
-
-September 24, 2001
-
-=item Version 1.3
-
-September 12, 2001
-
-=item Version 1.2
-
-August 25, 2001
-
-=item Version 1.1
-
-August 8, 2001
-
-=item version 1
-
-None. First version
-
-=back
-
-=head2 Changes
-
-=over 4
-
-=item Version 1.9
-
-=over 4
-
-=item * Removed remark on "upper case names reserved for directives"
-
-=item * Fixed ".sub" directive, should be ".pcc_sub"
-
-=item * Added constant directive in description.
-
-=item * Added grammar overview.
-
-=back
-
-=item Version 1.8
-
-=over 4
-
-=item * Added property ops
-
-=item * Fixed some bad register designations
-
-=item * Opened up opcode name character list to include numbers
-
-=back
-
-=item Version 1.7
-
-=over 4
-
-=item * Fixed stack ops; push, pop, and clear properly documented according to
-the engine's behaviour now.
-
-=back
-
-=item Version 1.6
-
-=over 4
-
-=item * Added GC opcodes
-
-=back
-
-=item Version 1.5
-
-=over 4
-
-=item * Now have a bsr in addition to a jsr
-
-=item * return is now ret
-
-=item * Added save and restore ops for saving and restoring individual
-registers
-
-=back
-
-=item Version 1.4
-
-=over 4
-
-=item * Conditional branches have just a true destination now
-
-=item * Added the I/O ops
-
-=item * Added in the threading ops
-
-=item * Added in the interpreter ops
-
-=back
-
-=item Version 1.3
-
-=over 4
-
-=item * Added in the low-level module loading ops
-
-=item * Added in transcendental functions and modulo
-
-=item * Finished the pad/global variable fetching bits
-
-=back
-
-=item Version 1.2
-
-We have an interpreter now! Yay! (Okay, a simple one, but still...) Changes
-made to reflect that.
-
-=item Version 1.1
-
-=over 4
-
-=item * Added in object
-
-=item * Changed remnants of "perl" to "Parrot"
-
-=item * Branch destination may be integer constant
-
-=item * Added L<Assembly Syntax> section
-
-=back
-
-=item Version 1.0
-
-None. First version
-
-=back
-
=cut
__END__
Modified: branches/ops_pct/docs/pdds/draft/pdd08_keys.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd08_keys.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd08_keys.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 8: PMC Keys
@@ -8,6 +8,10 @@
This PDD aims to clear up the confusion regarding the implementation of keyed
access to PMCs in Parrot.
+=head2 Version
+
+$Revision$
+
=head2 Description
First, let's define some terminology. An C<aggregate PMC> is one which stores
@@ -91,9 +95,9 @@
=head3 Aggregate and non-aggregate PMCs
We've already said that what separates the aggregate PMCs from the
-non-aggregates is their implementation of the C<_keyed> vtable methods. So it
-is Hereby Decreed that the default vtable which everyone inherits from defines
-the C<_keyed> forms to throw an exception.
+non-aggregates is their implementation of the C<_keyed> vtable functions. So
+it is Hereby Decreed that the default vtable which everyone inherits from
+defines the C<_keyed> forms to throw an exception.
=over 3
@@ -105,11 +109,11 @@
=back
-=head3 C<_keyed> vtable methods
+=head3 C<_keyed> vtable functions
-So what of these magical C<_keyed> vtable methods? They are generated when you
-add the C<keyed> tag to the appropriate entry in F<src/vtable.tbl>. They are
-constructed by following B<every> C<PMC> argument with a second C<PMC>
+So what of these magical C<_keyed> vtable functions? They are generated when
+you add the C<keyed> tag to the appropriate entry in F<src/vtable.tbl>. They
+are constructed by following B<every> C<PMC> argument with a second C<PMC>
argument which acts as the key for that argument; the name of the second
C<PMC> argument is formed by adding C<_key> onto the end of the first C<PMC>
argument.
@@ -123,8 +127,8 @@
$a = @b[$c]
-use the same vtable method, reducing the multiplicity of methods. Secondly, a
-three-argument C<assign> as suggested by the code above would be ambiguous -
+use the same vtable function, reducing the multiplicity of methods. Secondly,
+a three-argument C<assign> as suggested by the code above would be ambiguous -
the code above uses 3 PMCs in different ways.
Also, operations which take an aggregate key for one of their arguments should
@@ -265,44 +269,9 @@
The type values shown above are actually the C<PARROT_ARG_*> values taken from
F<include/parrot/op.h>.
-=head2 Version
-
-=head3 Current
-
- Maintainer: Simon Cozens <simon at netthink.co.uk>
- Class: Internals
- PDD Number: 8
- Version: 1.3
- Status: Developing
- Last Modified: 25 August, 2002
- PDD Format: 1
- Language: English
-
-=head3 History
-
-=over 4
-
-=item Sun Aug 25 11:14:43 GMT 2002 : Version 1.3
-
-Updated to reflect Dan's decision to change keys to use PMCs instead of a
-custom data structure. Also corrects documentation of multi-level keys and how
-they are compiled and work. tom at compton.nu.
-
-=item Thu Apr 25 18:30:36 UTC 2002 : Version 1.2
-
-Renamed C<KEY_PAIR> to C<KEY_ATOM>, updated to reflect changeover to linked
-list. - steve at fink.com
-
-=item Fri Mar 8 18:47:34 GMT 2002 : Version 1.1
-
-updated to reflect Dan's comments that non-aggregates also support C<_keyed>
-variant vtable methods.
-
-=back
-
=head2 References
-To come.
+None.
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd10_embedding.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd10_embedding.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd10_embedding.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (c) 2001-2009, Parrot Foundation.
+# Copyright (c) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD10: Embedding and Extending
@@ -74,7 +74,7 @@
=back
-=item * probably includes vtable methods on PMCs
+=item * probably includes vtable functions on PMCs
=back
@@ -219,8 +219,9 @@
Compiling source code generated or read from the host application is also
possible:
- Parrot_PMC Parrot_compile_string( Parrot_Interp, const char *compiler,
- const char *code );
+ Parrot_PMC Parrot_compile_string( Parrot_Interp, Parrot_String compiler,
+ const char *code,
+ Parrot_String error );
The potential return values are the same as for loading code from disk.
@@ -244,17 +245,9 @@
such that it is possible to load source code written in that language or pass
source code to an interpreter successfully.
-=head2 Attachments
-
-Any associated documents.
-
-=head2 Footnotes
-
-List of footnotes to the text.
-
=head2 References
-List of references.
+None.
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd11_extending.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd11_extending.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 11: Extending
@@ -9,6 +9,10 @@
Parrot for code written in C or other compiled languages. It provides about
the same level of access to Parrot that bytecode programs have.
+=head2 Version
+
+$Revision$
+
=head2 Description
The API presents to C programs roughly the same interface presented to
@@ -198,6 +202,42 @@
characters of C<value> to a Parrot_String and assigns the resulting string to
the PMC stored at element <key> of the passed-in PMC.
+=item C<Parrot_PMC_push_float( interp, Parrot_PMC pmc, Parrot_Float value )>
+
+Push a float onto an aggregate PMC, such as a ResizablePMCArray.
+Returns void.
+
+=item C<Parrot_PMC_push_integer( interp, Parrot_PMC pmc, Parrot_Int value )>
+
+Push a integer onto an aggregate PMC, such as a ResizableIntegerArray.
+Returns void.
+
+=item C<Parrot_PMC_push_pmc( interp, Parrot_PMC pmc, Parrot_PMC value )>
+
+Push a PMC value onto an aggregate PMC, such as a ResizablePMCArray.
+Returns void.
+
+=item C<Parrot_PMC_push_string( interp, Parrot_PMC pmc, Parrot_String value )>
+
+Push a Parrot_String onto an aggregate PMC, such as a ResizableStringArray.
+Returns void.
+
+=item C<Parrot_PMC_pop_float( interp, Parrot_PMC pmc )>
+
+Pop a Parrot_Float off of an aggregate PMC and returns it.
+
+=item C<Parrot_PMC_pop_integer( interp, Parrot_PMC pmc )>
+
+Pop a Parrot_Int off of an aggregate PMC and returns it.
+
+=item C<Parrot_PMC_pop_pmc( interp, Parrot_PMC pmc )>
+
+Pop a PMC off of an aggregate PMC and returns it.
+
+=item C<Parrot_PMC_pop_string( interp, Parrot_PMC pmc )>
+
+Pop a Parrot_String off of an aggregate PMC and returns it.
+
=back
=head4 Creation and destruction
@@ -313,51 +353,10 @@
=back
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
F<docs/glossary.pod>
-=head2 Version
-
-=head3 Current
-
- Maintainer:
- Class: Internals
- PDD Number: 11
- Version: 1.0
- Status: Developing
- Last Modified: February 20, 2004
- PDD Format: 1
- Language: English
-
-=head3 History
-
-=over 4
-
-=item Version 1
-
-None. First version
-
-=back
-
-=head2 Changes
-
-=over 4
-
-=item Version 1.0
-
-None. First version
-
-=back
-
=cut
__END__
Modified: branches/ops_pct/docs/pdds/draft/pdd14_numbers.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd14_numbers.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd14_numbers.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 14: Numbers
@@ -574,10 +574,6 @@
suitable opcodes. Conversion to and from Parrot strings, conversion to and
from floating point types, sprintf output of bignumbers.
-=head2 Attachments
-
-=head2 Footnotes
-
=head2 References
IBM's Standard Decimal Arithmetic, with tests
Modified: branches/ops_pct/docs/pdds/draft/pdd16_native_call.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd16_native_call.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd16_native_call.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 16: Native Call Interface (NCI)
@@ -8,6 +8,10 @@
This PDD describes the native call interface, and the function signatures used
to describe those functions.
+=head2 Version
+
+$Revision$
+
=head2 Description
The NCI is designed to allow Parrot to interface to I<most> of the functions
@@ -313,50 +317,15 @@
}
The file containing this C code should be compiled as a shared library
-(specifying the C<include> directory so C<<parrot/parrot.h>> can be found.)
+(specifying the C<include> directory so F<parrot/parrot.h> can be found.)
=head2 References
-L<pdd06_pasm.pod>
+F<pdd06_pasm.pod>
=head2 See Also
-L<t/pmc/nci.t>, L<src/nci_test.c>
-
-=head2 Version
-
-=head3 Current
-
- Maintainer: Dan Sugalski
- Class: Internals
- PDD Number: 16
- Version: 1.3
- Status: Developing
- Last Modified: Feb 26, 2007
- PDD Format: 1
- Language: English
-
-=head3 History
-
-=over 4
-
-=item version 1.3
-
-Updated with example for callbacks
-
-=item version 1.2
-
-Updated with basic example for NCI.
-
-=item version 1.1
-
-Changed callback section to reflect current status.
-
-=item version 1
-
-None. First version
-
-=back
+F<t/pmc/nci.t>, F<src/nci_test.c>
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd29_compiler_tools.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd29_compiler_tools.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd29_compiler_tools.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,16 +1,15 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 29: Compiler Tools
-=head2 Version
+=head2 Abstract
-$Revision$
+This PDD specifies the Parrot Compiler Tools (PCT).
-=head2 Maintainer
+=head2 Version
-Will "Coke" Coleda
-Klaas-Jan Stol
+$Revision$
=head2 Definitions
@@ -23,10 +22,6 @@
A High-Level Language. Examples are: Perl, Ruby, Python, Lua, Tcl, etc.
-=head2 Abstract
-
-This PDD specifies the Parrot Compiler Tools (PCT).
-
=head2 Synopsis
Creating a PCT-based compiler can be done as follows:
@@ -356,15 +351,9 @@
=back
-=head2 Attachments
-
-None.
-
=head2 References
-docs/pdd26_ast.pod
-
-http://dev.perl.org/perl6/doc/design/syn/S05.html
+F<docs/pdd26_ast.pod>, L<http://dev.perl.org/perl6/doc/design/syn/S05.html>
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd31_hll.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd31_hll.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd31_hll.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,17 +1,17 @@
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 31: HLL Compilers and Libraries
-=head2 Version
-
-$Revision$
-
=head2 Abstract
This PDD describes the standard compiler API and support for
cross-library communication between high-level languages (HLLs).
+=head2 Version
+
+$Revision$
+
=head2 Description
Parrot's support for HLL interoperability is primarily focused on
@@ -299,7 +299,7 @@
=head2 References
-L<pdd21_namespaces.pod>
+F<pdd21_namespaces.pod>
=cut
Modified: branches/ops_pct/docs/pdds/draft/pdd31_hll_interop.pod
==============================================================================
--- branches/ops_pct/docs/pdds/draft/pdd31_hll_interop.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/draft/pdd31_hll_interop.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,18 +1,18 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
=head1 [DRAFT] PDD 31: Inter-Language Calling
-=head2 Version
-
-$Revision$
-
=head2 Abstract
This PDD describes Parrot's conventions and support for communication between
high-level languages (HLLs). It is focused mostly on what implementors should
do in order to provide this capability to their users.
+=head2 Version
+
+$Revision$
+
=head2 Description
The ability to mix different high-level languages at runtime has always been
Modified: branches/ops_pct/docs/pdds/pdd00_pdd.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd00_pdd.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd00_pdd.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,17 +1,17 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 0: Design Document Format
-=head2 Version
-
-$Revision$
-
=head2 Abstract
This document defines the content and format of Parrot Design Documents
(PDDs).
+=head2 Version
+
+$Revision$
+
=head2 Synopsis
Not applicable.
@@ -99,13 +99,6 @@
Document version. Since Parrot is currently kept in a Subversion repository,
the $$-delimited keyword "Revision" will do nicely.
-=item Maintainer I<(optional)>:
-
-The name and current email address for the point of contact for the PDD. This
-is the person to whom questions, comments, and patches should generally be
-addressed. This need not be the author of the document. By default, all PDDs
-are maintained by the Parrot Architect.
-
=item Abstract:
A quick blurb explaining the purpose of the PDD.
@@ -149,6 +142,7 @@
Proposed PDDs should be submitted to the parrot-dev mailing list (located
at parrot-dev at lists.parrot.org) for discussion, criticism and general
kibitzing.
+
Acceptance of a particular PDD is ultimately up to the Parrot Architect.
=head3 PDD Translations
@@ -159,22 +153,14 @@
=item *
-The C<Maintainer> section should record who made the translation.
-
-=item *
-
-The C<Version> section should include an additional note of the translation
+The C<Version> section should include an additional note of the translated
version.
=back
-=head2 Attachments
-
-(none)
-
=head2 References
-(none)
+None.
=cut
Modified: branches/ops_pct/docs/pdds/pdd03_calling_conventions.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd03_calling_conventions.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd03_calling_conventions.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 3: Calling Conventions
@@ -391,13 +391,9 @@
=end PIR_FRAGMENT
-=head2 Attachments
-
-None.
-
=head2 References
-L<pdd23_exceptions.pod>
+F<pdd23_exceptions.pod>
=cut
Modified: branches/ops_pct/docs/pdds/pdd07_codingstd.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd07_codingstd.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd07_codingstd.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 7: Conventions and Guidelines for Parrot Source Code
@@ -1006,7 +1006,7 @@
=head2 References
-none
+None.
=cut
Modified: branches/ops_pct/docs/pdds/pdd09_gc.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd09_gc.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd09_gc.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 9: Garbage Collection Subsystem
@@ -295,7 +295,7 @@
subsystem, including how many GC runs have been completed, amount of memory
allocated since the last run, and total memory allocated. This accounting
information is updated by the GC system. The current block level for GC mark
-and sweep phases is stored in the C<Memory_Pools> structure.
+and sweep phases is stored in the C<Memory_Pools> structure.
(See L<Blocking GC>.)
The pointer C<void *gc_private> is reserved for use by the currently active GC
@@ -303,18 +303,18 @@
=head4 The Var_Size_Pool structure
-The C<Var_Size_Pool> structure is a simple memory pool. It contains a pointer
+The C<Var_Size_Pool> structure is a simple memory pool. It contains a pointer
to the top block of the allocated pool, the total allocated size of the pool,
-the block size, and some details on the reclamation characteristics of the
+the block size, and some details on the reclamation characteristics of the
pool.
=head4 The Fixed_Size_Pool structure
-The C<Fixed_Size_Pool> structure is a richer memory pool for object
-allocation. It tracks details like the number of allocated and free objects
-in the pool, a list of free objects, and for the generational GC
-implementation maintains linked lists of white, black, and gray PMCs. It
-contains a pointer to a simple C<Var_Size_Pool> (the base storage of the
+The C<Fixed_Size_Pool> structure is a richer memory pool for object
+allocation. It tracks details like the number of allocated and free objects
+in the pool, a list of free objects, and for the generational GC
+implementation maintains linked lists of white, black, and gray PMCs. It
+contains a pointer to a simple C<Var_Size_Pool> (the base storage of the
pool). It holds function pointers for adding and retrieving free objects in
the pool, and for allocating objects.
@@ -350,7 +350,7 @@
=head4 Memory_Pools structure function pointers
-Each GC system declares 3 function pointers, stored in the Memory_Pools
+Each GC system declares 3 function pointers, stored in the Memory_Pools
structure.
=over 4
@@ -421,8 +421,8 @@
=item C<void (*finalize_gc_system) (Interp *)>
Called during interpreter destruction. Free used resources and memory pools.
-All PMCs must be swept, and PMCs with custom destroy VTABLE methods must have
-those called.
+All PMCs must be swept, and PMCs with custom destroy VTABLE functions must
+have those called.
=item C<void (*init_pool) (Interp *, Fixed_Size_Pool *)>
@@ -563,7 +563,7 @@
The C<mark> vtable slot will be called during the GC mark phase. The mark
function must call C<Parrot_gc_mark_PObj_alive> for all non-NULL objects
(Buffers and PMCs) that PMC refers to. This flag is typically tested and the
-custom mark VTABLE method called from C<src/gc/api.c:mark_special>.
+custom mark VTABLE function called from C<src/gc/api.c:mark_special>.
=item PObj_external_FLAG
@@ -602,36 +602,28 @@
=back
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
"Uniprocessor Garbage Collection Techniques"
-http://www.cs.rice.edu/~javaplt/311/Readings/wilson92uniprocessor.pdf
+L<http://www.cs.rice.edu/~javaplt/311/Readings/wilson92uniprocessor.pdf>
"A unified theory of garbage collection":
-http://portal.acm.org/citation.cfm?id=1028982
+L<http://portal.acm.org/citation.cfm?id=1028982>
"Scalable Locality-Conscious Multithreaded Memory Allocation":
-http://people.cs.vt.edu/~scschnei/papers/ismm06.pdf
+L<http://people.cs.vt.edu/~scschnei/papers/ismm06.pdf>
"Parallel and concurrent garbage collectors":
-http://chaoticjava.com/posts/parallel-and-concurrent-garbage-collectors/
+L<http://chaoticjava.com/posts/parallel-and-concurrent-garbage-collectors/>
"Region-Based Memory Management":
-http://www.irisa.fr/prive/talpin/papers/ic97.pdf
+L<http://www.irisa.fr/prive/talpin/papers/ic97.pdf>
Dan's first musings on the GC subsystem:
-http://www.mail-archive.com/perl6-all@perl.org/msg14072.html
+L<http://www.mail-archive.com/perl6-all@perl.org/msg14072.html>
Semi-timely and ordered destruction:
-http://www.sidhe.org/~dan/blog/archives/000199.html
+L<http://www.sidhe.org/~dan/blog/archives/000199.html>
=cut
Modified: branches/ops_pct/docs/pdds/pdd15_objects.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd15_objects.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd15_objects.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 15: Objects and Classes
@@ -1630,11 +1630,6 @@
=end html
-
-=head2 Footnotes
-
-None.
-
=head2 References
None.
Modified: branches/ops_pct/docs/pdds/pdd17_pmc.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd17_pmc.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd17_pmc.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,17 +1,17 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 17: Polymorphic Containers
-=head2 Version
-
-$Revision$
-
=head2 Abstract
This PDD describes the internal structure and behavior of the Polymorphic
Container (PMC) data type.
+=head2 Version
+
+$Revision$
+
=head2 Description
PMCs implement all internal data types more complex than a simple integer,
@@ -48,7 +48,6 @@
VTABLE *vtable;
DPOINTER *data;
PMC *_metadata;
- struct _Sync *_synchronize; # [Note: may be deprecated, see STM]
}
C<flags> holds a set of flags associated with the PMC; these are documented
@@ -1656,8 +1655,8 @@
=head4 Array types
Note that for the following types you can set the size of the array by using
-the VTABLE_set_integer_native() method. Assigning an integer to the array as a
-whole sets the array to that size.
+the VTABLE_set_integer_native() function. Assigning an integer to the array
+as a whole sets the array to that size.
Size-changing operations (such as push, pop, shift, unshift, and splice)
on statically-sized arrays will throw an exception.
@@ -1809,17 +1808,9 @@
=back
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
- docs/pmc2c.pod
+F<docs/pmc2c.pod>
=cut
Modified: branches/ops_pct/docs/pdds/pdd18_security.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd18_security.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd18_security.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 PDD 18: Security Model
@@ -217,19 +217,13 @@
form is standard across high-level languages running on Parrot, the tools can
be written once and applied to many languages.
-=head2 Attachments
-
-
-=head2 Footnotes
-
-
=head2 References
-"Exploring the Broken Web": http://talks.php.net/show/osdc07
+"Exploring the Broken Web": L<http://talks.php.net/show/osdc07>
-"Safe ERB": http://agilewebdevelopment.com/plugins/safe_erb
+"Safe ERB": L<http://agilewebdevelopment.com/plugins/safe_erb>
-pecl/filter: http://us2.php.net/filter
+pecl/filter: L<http://us2.php.net/filter>
Rasmus Lerdorf for the term "data firewall".
Modified: branches/ops_pct/docs/pdds/pdd19_pir.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd19_pir.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd19_pir.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,18 +1,17 @@
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 PDD 19: Parrot Intermediate Representation (PIR)
-=head2 Version
-
-$Revision$
-
-
=head2 Abstract
This document outlines the architecture and core syntax of Parrot
Intermediate Representation (PIR).
+=head2 Version
+
+$Revision$
+
=head2 Description
PIR is a stable, middle-level language intended both as a target for the
@@ -1444,18 +1443,9 @@
=back
-
-=head2 Attachments
-
-N/A
-
-=head2 Footnotes
-
-N/A
-
=head2 References
-N/A
+None.
=cut
Modified: branches/ops_pct/docs/pdds/pdd20_lexical_vars.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd20_lexical_vars.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd20_lexical_vars.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,17 +1,17 @@
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 20: Lexical Variables
-=head2 Version
-
-$Revision$
-
=head2 Abstract
This document defines the requirements and implementation strategy for
lexically scoped variables.
+=head2 Version
+
+$Revision$
+
=head2 Synopsis
=begin PIR
@@ -402,23 +402,9 @@
TK.
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
-=over 4
-
-=item [1]
-
-t/op/lexicals.t
-
-=back
+F<t/op/lexicals.t>
=cut
Modified: branches/ops_pct/docs/pdds/pdd21_namespaces.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd21_namespaces.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd21_namespaces.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,16 +1,16 @@
-# Copyright (C) 2005-2007, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
=head1 PDD 21: Namespaces
-=head2 Version
-
-$Revision$
-
=head2 Abstract
Description and implementation of Parrot namespaces.
+=head2 Version
+
+$Revision$
+
=head2 Description
=over 4
@@ -737,14 +737,6 @@
=end PIR
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
None.
Modified: branches/ops_pct/docs/pdds/pdd22_io.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd22_io.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd22_io.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 22: I/O
@@ -1038,14 +1038,6 @@
(http://www.ietf.org/rfc/rfc4038.txt) and "Basic Socket Interface
Extensions for IPv6" (http://www.ietf.org/rfc/rfc3493.txt).
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 Links
L<http://en.wikipedia.org/wiki/Asynchronous_I/O> for a relatively
@@ -1053,14 +1045,9 @@
=head2 References
- F<src/io/core.c>
- F<src/ops/io.ops>
- F<include/parrot/io.h>
- F<runtime/parrot/library/Stream/*>
- F<src/io/unix.c>
- F<src/io/win32.c>
- Perl 5's IO::AIO
- Perl 5's POE
+F<src/io/core.c>, F<src/ops/io.ops>, F<include/parrot/io.h>,
+F<runtime/parrot/library/Stream/*>, F<src/io/unix.c>, F<src/io/win32.c>,
+Perl 5's IO::AIO, and POE
=cut
Modified: branches/ops_pct/docs/pdds/pdd23_exceptions.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd23_exceptions.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd23_exceptions.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 23: Exceptions
@@ -447,20 +447,10 @@
=end PIR_FRAGMENT
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
- src/ops/core.ops
- src/exceptions.c
- src/pmc/exception.pmc
- src/pmc/exceptionhandler.pmc
+F<src/ops/core.ops>, F<src/exceptions.c>, F<src/pmc/exception.pmc>,
+F<src/pmc/exceptionhandler.pmc>
=cut
Modified: branches/ops_pct/docs/pdds/pdd24_events.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd24_events.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd24_events.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 24: Events
@@ -368,17 +368,9 @@
own implementations of timers, which may be used when performance on a
particular platform is more important than portability.
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
-src/events.c
+F<src/events.c>
L<http://www.seas.upenn.edu/~lipeng/homepage/unify.html>
Modified: branches/ops_pct/docs/pdds/pdd25_concurrency.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd25_concurrency.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd25_concurrency.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 PDD 25: Concurrency
@@ -422,40 +422,32 @@
=back
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
Dec 2003 - (Dan ponders threads based on POSIX and Perl 5 experience)
-<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/e64b22ab7de0a7a6/889b5d8c4cd267b7?lnk=gst&q=threads&rnum=3#889b5d8c4cd267b7>
+L<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/e64b22ab7de0a7a6/889b5d8c4cd267b7?lnk=gst&q=threads&rnum=3#889b5d8c4cd267b7>
Dec. 2003 - "threads and shared interpreter data structures"
-<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/e64ea4ff287e04fd/b71333e282d3d187?lnk=gst&q=threads&rnum=9#b71333e282d3d187>
+L<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/e64ea4ff287e04fd/b71333e282d3d187?lnk=gst&q=threads&rnum=9#b71333e282d3d187>
Jan. 2004 - "Threads Design. A Win32 perspective."
-<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/3209629b23306029/52ba9d37425ba015?lnk=gst&q=threads&rnum=8#52ba9d37425ba015>
+L<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/3209629b23306029/52ba9d37425ba015?lnk=gst&q=threads&rnum=8#52ba9d37425ba015>
Jan. 2004 - "Start of threads proposal"
-<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/4c7de440da84d5c6/04cfb70b0d81dfba?tvc=1&q=threads#04cfb70b0d81dfba>
+L<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/4c7de440da84d5c6/04cfb70b0d81dfba?tvc=1&q=threads#04cfb70b0d81dfba>
Sept. 2005 - "consider using OS threads"
-<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/40b50e3aa9255f8e/036a87b5d2b5ed2c?lnk=gst&q=threads&rnum=2#036a87b5d2b5ed2c>
+L<http://groups.google.com/group/perl.perl6.internals/browse_frm/thread/40b50e3aa9255f8e/036a87b5d2b5ed2c?lnk=gst&q=threads&rnum=2#036a87b5d2b5ed2c>
Aug. 2007 - "multi-threading a work in progress"
-<http://perlmonks.org/?node_id=636466>
+L<http://perlmonks.org/?node_id=636466>
Concurrency as Futures -
-<http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&entry=3336838959>
+L<http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&entry=3336838959>
-Io language - <http://www.iolanguage.com/about/>
+Io language - L<http://www.iolanguage.com/about/>
-Java memory and concurrency - http://www.cs.umd.edu/~pugh/java/memoryModel/
+Java memory and concurrency - L<http://www.cs.umd.edu/~pugh/java/memoryModel/>
=cut
Modified: branches/ops_pct/docs/pdds/pdd26_ast.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd26_ast.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd26_ast.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, Parrot Foundation
+# Copyright (C) 2007-2010, Parrot Foundation
# $Id$
=head1 PDD 26: Compiler Tools - Abstract Syntax Tree
@@ -561,7 +561,7 @@
=head2 References
-NA.
+None.
=cut
Modified: branches/ops_pct/docs/pdds/pdd27_multiple_dispatch.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd27_multiple_dispatch.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd27_multiple_dispatch.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 PDD 27: Multiple Dispatch
@@ -256,15 +256,9 @@
Multiple dispatch calls from within vtable functions call the
C<Parrot_mmd_invoke> routine from the public MMD API.
-=head2 Attachments
-
-None.
-
=head2 References
-docs/mmd.pod
-src/multidispatch.c
-src/pmc/multisub.pmc
+F<docs/mmd.pod>, F<src/multidispatch.c>, F<src/pmc/multisub.pmc>
=cut
Modified: branches/ops_pct/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd28_strings.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd28_strings.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
=head1 PDD 28: Strings
@@ -379,13 +379,6 @@
value of flags. If both string arguments are null, return a new string created
according to the integer flags.
-=head4 Parrot_str_append (was string_append)
-
-Append one string to another and return the result. In the default case, the
-return value is the same as the first string argument (modifying that argument
-in place). If the first argument is COW or read-only, then the return value is
-a new string.
-
=head4 Parrot_str_new (was string_from_cstring)
Return a new string with the default encoding and character set. Accepts two
@@ -621,11 +614,10 @@
Old Perl 5-style behavior where "aa" goes to "bb". Only useful for ASCII
strings, and not terribly useful even there.
-=head4 Parrot_string_cstring
+=head4 Parrot_str_cstring
Unsafe, and behavior handled by Parrot_str_to_cstring.
-
=head4 Parrot_str_split
Splits the string C<str> at the delimiter C<delim>.
@@ -826,15 +818,15 @@
=head2 References
-http://sirviente.9grid.es/sources/plan9/sys/doc/utf.ps - Plan 9's Runes are
+L<http://sirviente.9grid.es/sources/plan9/sys/doc/utf.ps> - Plan 9's Runes are
not dissimilar to NFG strings, and this is a good introduction to the Unicode
world.
-http://www.unicode.org/reports/tr15/ - The Unicode Consortium's
+L<http://www.unicode.org/reports/tr15/> - The Unicode Consortium's
explanation of different normalization forms.
-http://unicode.org/reports/tr29/ - "grapheme clusters" in the Unicode Standard
-Annex
+L<http://unicode.org/reports/tr29/> - "grapheme clusters" in the Unicode
+Standard Annex
"Unicode: A Primer", Tony Graham - Arguably the most readable book on
how Unicode works.
Modified: branches/ops_pct/docs/pdds/pdd30_install.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd30_install.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd30_install.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
=head1 PDD 30: Installation
@@ -7,8 +7,8 @@
This PDD outlines Parrot's installation system and support. Parrot's core
installation system will provide support for binary packages, a working C<make
-install> target, compiled installables, and FHS compliant search paths for the
-installables.
+install> target, compiled installables, and Filesystem Hierarchy Standard
+(FHS) compliant search paths for the installables.
=head2 Version
@@ -33,9 +33,8 @@
=head2 Description
-Parrot uses Filesystem Hierarchy Standard (FHS) compliant install directories
-by default. Each install location is configurable with options passed to the
-configure script.
+Parrot uses FHS compliant install directories by default. Each install
+location is configurable with options passed to the configure script.
=over
@@ -84,7 +83,7 @@
It is recommended that languages follow a standard pattern in installing their
libraries so a bytecode compiled version of a module in the C<mylang> HLL
named C<['Foo';'Bar']> is stored in
-F<usr/lib/parrot/E<lt>versionE<gt>/languages/E<lt>mylangE<gt>/library/Foo/Bar.pbc>
+F</usr/lib/parrot/E<lt>versionE<gt>/languages/E<lt>mylangE<gt>/library/Foo/Bar.pbc>
=item F</usr/lib/parrot/E<lt>versionE<gt>/tools/>
@@ -115,7 +114,7 @@
separate package), F<libgdm> and F<libreadline>.
Building a language depends on a series of Parrot build tools, installed in
-F</usr/lib/parrot/E<lt>version/tools>. These tools will generally not be
+F</usr/lib/parrot/E<lt>versionE<gt>/tools>. These tools will generally not be
included in the default C<parrot> package on most systems, languages will
require a C<parrot-dev> package to be installed before they can be built.
@@ -161,14 +160,6 @@
good choice, and can be combined with Autoconf, CMake, Perl, Python,
etc. for more complex conditional builds).
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
None.
Modified: branches/ops_pct/docs/pdds/pdd_template.pod
==============================================================================
--- branches/ops_pct/docs/pdds/pdd_template.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pdds/pdd_template.pod Wed May 5 08:45:29 2010 (r46302)
@@ -1,16 +1,16 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 Design Document Template
-=head2 Version
-
-$Revision$
-
=head2 Abstract
Summary of the contents of the PDD.
+=head2 Version
+
+$Revision$
+
=head2 Synopsis I<(optional)>
Code snippets showing the semantics of the PDD (if applicable).
@@ -33,11 +33,11 @@
=head2 Attachments
-Any associated documents.
+Any associated documents. (optional)
=head2 Footnotes
-List of footnotes to the text.
+List of footnotes to the text. (optional)
=head2 References
Modified: branches/ops_pct/docs/pmc.pod
==============================================================================
--- branches/ops_pct/docs/pmc.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pmc.pod Wed May 5 08:45:29 2010 (r46302)
@@ -37,11 +37,19 @@
generate a struct containing all ATTRs, including those inherited via
C<extends> declarations. This struct will be named in the form
C<Parrot_x_attributes>, where C<x> is the name of your PMC, e.g.
-C<Parrot_FixedIntegerArray_attributes>. When creating a PMC that has one or
-more ATTRs, the C<Parrot_x_attributes> struct must be allocated and assigned to
-C<PMC_data> in the PMC's C<init()> and C<init_pmc()> VTABLE functions (if used)
-and it must be destroyed in the C<destroy()> VTABLE function. PMCs with ATTRs
-also need to indicate that they need active destruction by calling
+C<Parrot_FixedIntegerArray_attributes>.
+
+When creating a PMC that has one or more ATTRs, the C<Parrot_x_attributes>
+struct must be allocated and assigned to C<PMC_data>, and freed on PMC
+destruction. This can be done automatically by using the auto_attrs flag in
+the PMC declaration, or manually by using the manual_attrs flag. You must set
+one of those flags, a warning is emitted otherwise. In future releases
+auto_attrs will be the default.
+
+If manual_attrs is specified or assumed the struct must be manually allocated
+in the PMC's C<init()> and C<init_pmc()> VTABLE functions (if used)
+and it must be destroyed in the C<destroy()> VTABLE function, the PMC must
+also indicate that they need active destruction by calling
C<PObj_custom_destroy_SET()> or C<PObj_custom_mark_destroy_SETALL()>.
If your PMC only needs to store a single pointer, it can use C<PMC_data> directly.
Modified: branches/ops_pct/docs/pmc/documentation.pod
==============================================================================
--- branches/ops_pct/docs/pmc/documentation.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pmc/documentation.pod Wed May 5 08:45:29 2010 (r46302)
@@ -36,7 +36,8 @@
F<docs/pdds/pdd21_namespaces.pod>.
Exporter is not derived from any other PMC, and does not provide any
- standard interface--its interface consists solely of non-vtable methods.
+ standard interface--its interface consists solely of methods, not
+ vtable functions.
The B<DESCRIPTION> section is further broken down as follows:
Modified: branches/ops_pct/docs/pmc2c.pod
==============================================================================
--- branches/ops_pct/docs/pmc2c.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/pmc2c.pod Wed May 5 08:45:29 2010 (r46302)
@@ -133,17 +133,28 @@
=item 3.
-A list of vtable method implementations
+A list of attribute declarations:
+
+ ATTR INTVAL id;
+
+The ATTR declaration keyword is followed by the type of the attribute and the
+name of the attribute. Any valid C type is a valid attribute type, but only
+INTVAL, FLOATVAL, STRING *, and PMC * can be handled directly from PIR. Other
+types are generally only used by low-level internal PMCs.
=item 4.
+A list of vtable function implementations
+
+=item 5.
+
The final close C<}>
=back
=head2 Method Body Substitutions
-The vtable method bodies can use the following substitutions:
+The vtable function bodies can use the following substitutions:
=over 4
@@ -157,11 +168,11 @@
=item C<OtherClass.SELF.method(a,b,c)>
-Calls the static vtable method 'method' in C<OtherClass>.
+Calls the static vtable or method 'method' in C<OtherClass>.
=item C<SELF.method(a,b,c)>
-Calls the vtable method 'method' using the dynamic type of C<SELF>.
+Calls the vtable or method 'method' using the dynamic type of C<SELF>.
=item C<SELF(a,b,c)>
@@ -169,7 +180,7 @@
=item C<STATICSELF.method(a,b,c)>
-Calls the vtable method 'method' using the static type of C<SELF> (in
+Calls the vtable or method 'method' using the static type of C<SELF> (in
other words, calls another method defined in the same file).
=item C<OtherClass.SUPER(a,b,c)>
Modified: branches/ops_pct/docs/porting_intro.pod
==============================================================================
--- branches/ops_pct/docs/porting_intro.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/porting_intro.pod Wed May 5 08:45:29 2010 (r46302)
@@ -13,39 +13,6 @@
internals. For each feature, a brief description of its purpose, hints on
helping to port it, and pointers to more information are included.
-=head1 CGoto or CGP (CGoto Predereferenced)
-
-=head2 What it is
-
-"Computed goto" is a non-standard C feature that allows taking a pointer to an
-statement label (e.g. "LOOP:" ) using the unary && operator. Certain Parrot
-runcores make use of this feature as an optimization.
-
-=head2 How to help
-
-If cgoto is not supported in Parrot by default on your platform, try to compile
-config/auto/cgoto/test_c.in with your C compiler and determine why it fails. If
-the compiler does not support the computed goto concept at all, this feature
-cannot be made to work (don't worry, there are other runcores). However, if
-the compiler supports it but the test is inadequate, please submit a bug report
-describing how the implementation of this feature differs from what Parrot
-expects.
-
-Note that gcc supports this feature out of the box, though it sometimes
-struggles with it in low-memory situations. Failures during compilation of
-core_ops_cg.c are frequently caused by insufficient resources rather than bugs
-in gcc or Parrot.
-
-=head2 References
-
-=over 4
-
-=item * F<config/auto/cgoto/test_c.in>
-
-=item * I<make testC>
-
-=back
-
=head1 Threads
=head2 What it is
Modified: branches/ops_pct/docs/project/debian_packaging_guide.pod
==============================================================================
--- branches/ops_pct/docs/project/debian_packaging_guide.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/project/debian_packaging_guide.pod Wed May 5 08:45:29 2010 (r46302)
@@ -82,36 +82,42 @@
=item 6.
+Make sure you have C<quilt> installed. Run:
+
+ $ aptitude install quilt
+
+=item 7.
+
Regenerate the debian/control file. From the
~/deb/parrot/parrot-<version>/ directory, run:
$ debian/rules debian-control-stamp
-=item 7.
+=item 8.
Install all dependencies:
$ sudo /usr/lib/pbuilder/pbuilder-satisfydepends
-=item 8.
+=item 9.
Build the packages. From ~/deb/parrot/parrot_<version>/, run:
$ export DEBSIGN_KEYID="<gpg key id>"
$ debuild
-=item 9.
+=item 10.
Check the package for errors. From ~/deb/parrot, run:
$ lintian -i parrot_<version>.changes
-=item 10.
+=item 11.
Commit all changes made to the files in the debian/ directory to the Parrot
repository.
-=item 11.
+=item 12.
Upload the packages to http://alioth.debian.org. (If you don't have admin
privileges, ask someone who does.) From any of the project pages, click on the
@@ -166,7 +172,7 @@
=item 2.
Set up a chroot environment for building packages. See
-<http://www.perlfoundation.org/parrot/index.cgi?debian_chroot_setup>.
+<http://trac.parrot.org/parrot/wiki/ChrootSetup>.
=back
Modified: branches/ops_pct/docs/project/metacommitter_guide.pod
==============================================================================
--- branches/ops_pct/docs/project/metacommitter_guide.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/project/metacommitter_guide.pod Wed May 5 08:45:29 2010 (r46302)
@@ -66,11 +66,13 @@
Congratulate the new member publicly by sending an email to
parrot-dev at lists.parrot.org, and copying the new committer.
-
The steps for the "languages" repository and Trac instance are the same,
except the URLs are L<https://trac.parrot.org/languages/...> and the
committer group is "languages_committers".
+Note that commit messages from the new member will be automatically held
+pending list-admin approval.
+
=head2 To manage the list of Metacommitters
Only existing Metacommitters can perform this activity.
Modified: branches/ops_pct/docs/project/release_manager_guide.pod
==============================================================================
--- branches/ops_pct/docs/project/release_manager_guide.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/project/release_manager_guide.pod Wed May 5 08:45:29 2010 (r46302)
@@ -66,7 +66,7 @@
=item a
Increment the version number in the following files:
-F<VERSION>, F<MANIFEST.generated>, F<META.yml>, F<README>.
+F<VERSION>, F<MANIFEST.generated>, F<README>.
Also update the version number, date, and your name in the
the file: F<docs/parrothist.pod>.
@@ -213,14 +213,15 @@
$ mkdir ~/ftp/releases/devel/a.b.c
-If the release is in the stable series (L<Appendix 1 - Upcoming releases>)
-create the new directory in F<~/ftp/releases/stable> instead.
+If the release is in the supported series (L<Appendix 1 - Upcoming releases>)
+create the new directory in F<~/ftp/releases/supported> instead.
- $ mkdir ~/ftp/releases/stable/a.b.c
+ $ mkdir ~/ftp/releases/supported/a.b.c
-Copy the tarball from your machine into the new directory.
+Copy the different compressed tarballs from your machine into the new directory.
- $ scp parrot-a.b.c.tar.gz <USERNAME>@ftp-osl.osuosl.org:~/ftp/releases/devel/a.b.c/.
+ $ scp parrot-a.b.c.tar.gz parrot-a.b.c.tar.bz2 \
+ <USERNAME>@ftp-osl.osuosl.org:~/ftp/releases/devel/a.b.c/.
(Or using C<wget> or whatever tool you prefer.)
@@ -282,10 +283,10 @@
=item e
Under "Administer" -> "Site building" -> "URL Redirects", change the URL for
-"release/current" to the FTP directory for the new release (for example,
-F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1>). Also update
-the URL for "release/developer" or "release/supported" depending on
-which type of release this is.
+"release/current" to the FTP file for the new release (for example,
+F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1/parrot-0.8.1.tar.gz>).
+Also update the URL for "release/developer" or "release/supported" depending
+on which type of release this is.
=item f
@@ -293,9 +294,9 @@
the resources/ and html/ directories created in docs/.
ssh into the parrotvm, and in the
webroot for docs.parrot.org, expand these into a release directory (e.g.
-1.4.0). in <webroot>/parrot, there are symbolic links for latest, stable,
+1.4.0). in <webroot>/parrot, there are symbolic links for latest, supported,
and devel. Update the latest symlink to point to your new directory.
-If this is a stable release, also update the stable symlink. Do not delete
+If this is a supported release, also update the supported symlink. Do not delete
any old copies of the docs.
=back
@@ -393,11 +394,11 @@
visible at
L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
- - Mar 16, 2010 - 2.2 - cotto
- - Apr 20, 2010 - 2.3* - gerd
- May 18, 2010 - 2.4 - whiteknight
- Jun 15, 2010 - 2.5 - gerd
- Jul 20, 2010 - 2.6* - coke
+ - Aug 17, 2010 - 2.7 - ??
+ - Sep 21, 2010 - 2.8 - gerd
=cut
Modified: branches/ops_pct/docs/running.pod
==============================================================================
--- branches/ops_pct/docs/running.pod Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/docs/running.pod Wed May 5 08:45:29 2010 (r46302)
@@ -135,13 +135,10 @@
may be available on your system:
slow, bounds bounds checking core (default)
- cgoto computed goto core
- cgp computed goto-predereferenced core
- fast fast core (no bounds checking, profiling, or tracing)
gcdebug performs a full GC run before every op dispatch (good for
debugging GC problems)
- switch switch core
trace bounds checking core w/ trace info (see 'parrot --help-debug')
+ profiling see F<docs/dev/profilling.pod>
The C<jit>, C<switch-jit>, and C<cgp-jit> options are currently aliases for the
C<fast>, C<switch>, and C<cgp> options, respectively. We do not recommend
@@ -248,28 +245,6 @@
The trace and profile cores are also based on the "slow" core, doing
full bounds checking, and also printing runtime information to stderr.
-The switched core eschews these tiny op functions in favor of cases in a large
-switch statement:
-
- switch_runcore( op ):
- while ( op ):
- switch *op:
- case NOP:
- ...
- case STORE:
- ...
- ...
-
-Depending on the C compiler implementation, this may be faster than function
-calling. On older systems, it may fail to compile altogether.
-
-The computed-goto ("cgoto") runcore avoids the overhead of function
-calls by jumping directly to the address where each opcode's function
-starts. The computed-goto-prederef ("CGP") core takes this one step
-further by replacing opcode numbers in the bytecode with those opfunc
-addresses. See "Predereferencing" in F<docs/glossary.pod> for a
-fuller explanation.
-
=head1 Operation table
Command Line Action Output
Modified: branches/ops_pct/editor/pir-mode.el
==============================================================================
--- branches/ops_pct/editor/pir-mode.el Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/editor/pir-mode.el Wed May 5 08:45:29 2010 (r46302)
@@ -153,7 +153,7 @@
"ManagedStruct" "MultiSub" "NCI" "NameSpace" "Null"
"OS" "Object" "OrderedHash" "PMCProxy" "ParrotClass"
"ParrotIO" "ParrotInterpreter" "ParrotLibrary" "ParrotObject"
- "ParrotRunningThread" "ParrotThread" "Pointer"
+ "ParrotThread" "Pointer"
"ResizableBooleanArray" "ResizableFloatArray" "ResizableIntegerArray"
"ResizablePMCArray" "ResizableStringArray" "RetContinuation"
"Role" "Scalar" "String" "Sub" "Super"
Modified: branches/ops_pct/examples/benchmarks/oo1.pir
==============================================================================
--- branches/ops_pct/examples/benchmarks/oo1.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/benchmarks/oo1.pir Wed May 5 08:45:29 2010 (r46302)
@@ -11,8 +11,6 @@
# python oo1.py 1.2 (first time)
# python oo1.py 0.51
-# parrot -R cgp oo1.pasm -g -O3
-
# original list fixed 4.9 (leaks mem ~ 110 M used)
# don't clone vtable 4.4
# Dan's vtable cache 4.3 3.8
@@ -31,9 +29,6 @@
# Dan's new object layout 1.00
-# parrot -R cgp oo1-prop.pasm
-# invokecc 0.75
-# RetCont out of loop 0.57
# parrot -R jit oo1-prop.pasm 0.54
.namespace [ "Foo" ]
Modified: branches/ops_pct/examples/benchmarks/oo2.pir
==============================================================================
--- branches/ops_pct/examples/benchmarks/oo2.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/benchmarks/oo2.pir Wed May 5 08:45:29 2010 (r46302)
@@ -11,17 +11,11 @@
# python oo2.py 2.9 (first time)
# python oo2.py 2.4
-# parrot -R cgp oo2.pasm -g -O3
-# with reuse regsave mem 6.15
-# anchor P1 6.7
-# Dan's new object layout 5.1
-
# parrot -R jit oo2.pasm -g -O3
# with reuse regsave mem 6.1
# anchor P1 6.5
# Dan's new object layout 4.9
-# parrot -R cgp oo2-prop.pasm 2.8
# parrot -R jit oo2-prop.pasm 2.6
.namespace [ "Foo" ]
Copied: branches/ops_pct/examples/benchmarks/stress_strings.pir (from r46301, trunk/examples/benchmarks/stress_strings.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/examples/benchmarks/stress_strings.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/examples/benchmarks/stress_strings.pir)
@@ -0,0 +1,43 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+examples/benchmarks/stress_strings.pir - GC strings stress-testing
+
+=head1 SYNOPSIS
+
+ % time ./parrot examples/benchmarks/stress_strings.pir
+
+=head1 DESCRIPTION
+
+Create a lots of strings. Some of them are long-lived, most of them are short lived.
+
+Main purpose - test compact_pool performance.
+
+=cut
+
+.sub 'main' :main
+ .local pmc rsa # array of long lived strings.
+
+ .local int i
+
+ rsa = new ['ResizableStringArray']
+ i = 0
+ loop:
+ $S0 = i # allocate new string
+ $I0 = i % 10 # every 10th string is longlived
+ if $I0 goto inc_i
+ push rsa, $S0
+ inc_i:
+ inc i
+ if i < 10000000 goto loop
+
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/examples/c/test_main.c
==============================================================================
--- branches/ops_pct/examples/c/test_main.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/c/test_main.c Wed May 5 08:45:29 2010 (r46302)
@@ -209,13 +209,6 @@
static void
usage(void)
{
-#ifdef HAVE_COMPUTED_GOTO
- const char* cgoto_info = "Deactivate computed goto";
-#else
- const char* cgoto_info =
- "Deactivate computed goto (not available on this platform)";
-#endif
-
fprintf(stderr,
"Usage: parrot [switches] [--] programfile [arguments]\n\
-b --bounds-checks Activate bounds checks\n\
@@ -223,9 +216,6 @@
-h --help Display this message\n\
-j --jit Activate Just-In-Time compiler\n\
-p --profile Activate profiling\n\
- -P --predereferenced_core Activate predereferencing\n\
- -S --switched_core Activate switched core\n\
- -g --no-computed-goto %s\n\
-t --trace Activate tracing\n\
-v --version Display version information\n\
-. --wait Wait for a keypress (gives Windows users\n\
@@ -233,8 +223,7 @@
--gc-debug\n\
Enable garbage collection debugging mode. This may also be enabled\n\
by setting the environment variable $PARROT_GC_DEBUG to 1.\n\
-\n",
- cgoto_info);
+\n");
Parrot_exit(interp, 0);
}
Modified: branches/ops_pct/examples/config/file/configcompiler
==============================================================================
--- branches/ops_pct/examples/config/file/configcompiler Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/config/file/configcompiler Wed May 5 08:45:29 2010 (r46302)
@@ -50,7 +50,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/examples/config/file/configwithfatalstep
==============================================================================
--- branches/ops_pct/examples/config/file/configwithfatalstep Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/config/file/configwithfatalstep Wed May 5 08:45:29 2010 (r46302)
@@ -42,7 +42,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/examples/embed/Makefile
==============================================================================
--- branches/ops_pct/examples/embed/Makefile Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/embed/Makefile Wed May 5 08:45:29 2010 (r46302)
@@ -12,6 +12,7 @@
CC = $(shell parrot_config cc)
CCFLAGS = $(shell parrot_config ccflags)
+CCWARN = $(shell parrot_config ccwarn)
LD = $(shell parrot_config ld)
LD_OUT = $(shell parrot_config ld_out)
LINKFLAGS = $(shell parrot_config inst_libparrot_linkflags) $(shell parrot_config rpath_lib)
@@ -28,7 +29,7 @@
#-----------------------------------------------------------------------
cotorra$(O): cotorra.c
- $(CC) $(CCFLAGS) -c -I $(INCLUDEDIR) cotorra.c
+ $(CC) $(CCFLAGS) $(CCWARN) -c -I $(INCLUDEDIR) cotorra.c
cotorra$(EXE): cotorra$(O)
$(LD) $(LD_OUT)cotorra$(EXE) cotorra$(O) $(CONFIG)$(O) $(LINKFLAGS)
Modified: branches/ops_pct/examples/embed/cotorra.c
==============================================================================
--- branches/ops_pct/examples/embed/cotorra.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/embed/cotorra.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2009, Parrot Foundation.
+Copyright (C) 2009-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -36,7 +36,7 @@
Parrot_Run_core_t getruncore(const char *name);
Parrot_String create_string(Parrot_Interp interp, const char *name);
-int cotorra_main(Parrot_Interp interp, int argc, char **argv);
+int cotorra_main(Parrot_Interp interp, int argc, const char **argv);
/**********************************************************************/
@@ -108,10 +108,7 @@
{
static const struct runcoreinfo cores [] = {
{ PARROT_SLOW_CORE, "slow" },
- { PARROT_FAST_CORE, "fast" },
- { PARROT_CGOTO_CORE, "cgoto" },
{ PARROT_GC_DEBUG_CORE, "gcdebug" },
- { PARROT_SWITCH_CORE, "switch" }
};
static const unsigned int n = sizeof (cores)/sizeof (struct runcoreinfo);
unsigned int i;
@@ -147,7 +144,7 @@
/*
-=item C<int cotorra_main(Parrot_Interp interp, int argc, char **argv)>
+=item C<int cotorra_main(Parrot_Interp interp, int argc, const char **argv)>
Auxiliary function to minimize the size of main.
@@ -155,12 +152,13 @@
*/
-int cotorra_main(Parrot_Interp interp, int argc, char **argv)
+int cotorra_main(Parrot_Interp interp, int argc, const char **argv)
{
- char *source;
+ const char *source;
Parrot_PackFile pf;
const char *stname = NULL;
const char *exec = NULL;
+ const char *module = NULL;
int i;
/* Incompatible options are not checked yet */
@@ -171,7 +169,7 @@
fail("Option needs argument");
Parrot_set_trace(interp, getuintval(argv[i]));
}
- if (strcmp(argv[i], "--warnings") == 0) {
+ else if (strcmp(argv[i], "--warnings") == 0) {
++i;
if (i >= argc)
fail("Option needs argument");
@@ -189,6 +187,12 @@
fail("Option needs argument");
stname = argv[i];
}
+ else if (strcmp(argv[i], "--load") == 0) {
+ ++i;
+ if (i >= argc)
+ fail("Option needs argument");
+ module = argv[i];
+ }
else if (strcmp(argv[i], "--runcore") == 0) {
++i;
if (i >= argc)
@@ -198,6 +202,8 @@
else
break;
}
+ if (module)
+ Parrot_load_bytecode(interp, create_string(interp, module));
if (exec) {
Parrot_String compiler = create_string(interp, "PIR");
@@ -207,16 +213,16 @@
return 0;
}
- if (i >= argc)
+ if (i >= argc && ! (module && stname))
fail("No file to load");
source = argv[i];
-
- pf = Parrot_pbc_read(interp, source, 0);
- if (! pf)
- fail("Cannot load file");
-
- Parrot_pbc_load(interp, pf);
- Parrot_pbc_fixup_loaded(interp);
+ if (source && ! stname) {
+ pf = Parrot_pbc_read(interp, source, 0);
+ if (! pf)
+ fail("Cannot load file");
+ Parrot_pbc_load(interp, pf);
+ Parrot_pbc_fixup_loaded(interp);
+ }
if (stname) {
Parrot_PMC rootns = Parrot_get_root_namespace(interp);
@@ -224,7 +230,20 @@
Parrot_PMC parrotns = Parrot_PMC_get_pmc_strkey(interp, rootns, parrotname);
Parrot_String name = create_string(interp, stname);
Parrot_PMC start = Parrot_PMC_get_pmc_strkey(interp, parrotns, name);
- Parrot_ext_call(interp, start, "->");
+ if (Parrot_pmc_is_null(interp, start))
+ fail("start sub not found");
+ if (i < argc) {
+ int pos;
+ Parrot_PMC arg = Parrot_PMC_new(interp,
+ Parrot_PMC_typenum(interp, "FixedStringArray"));
+ Parrot_PMC_set_intval(interp, arg, argc - i);
+ for (pos = 0; i < argc; ++i, ++pos) {
+ Parrot_PMC_set_string_intkey(interp, arg, pos, create_string(interp, argv[i]));
+ }
+ Parrot_ext_call(interp, start, "P->", arg);
+ }
+ else
+ Parrot_ext_call(interp, start, "->");
}
else {
Parrot_runcode(interp, argc - i, argv + i);
@@ -235,7 +254,7 @@
/*
-=item C<int main(int argc, char **argv)>
+=item C<int main(int argc, const char **argv)>
Main function. Create the parrot interpreter and call cotorra_main.
@@ -243,7 +262,7 @@
*/
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
{
Parrot_Interp interp;
int r;
Modified: branches/ops_pct/examples/japh/japh3.pasm
==============================================================================
--- branches/ops_pct/examples/japh/japh3.pasm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/japh/japh3.pasm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2009, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
# $Id$
# the substr JaPH
@@ -6,10 +6,9 @@
set S1, "Parrot "
set S2, "another "
set S3, "Just "
- set S31, S0
- substr S3, 5, 1, S2
- substr S3, 13, 1, S1
- substr S3, 20, 1, S0
+ replace S3, S3, 5, 1, S2
+ replace S3, S3, 13, 1, S1
+ replace S3, S3, 20, 1, S0
print S3
end
Modified: branches/ops_pct/examples/json/postalcodes.pir
==============================================================================
--- branches/ops_pct/examples/json/postalcodes.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/json/postalcodes.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!../../parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -64,11 +64,11 @@
close sock
$I1 = find_charset 'unicode'
- trans_charset json_result, $I1
+ json_result = trans_charset json_result, $I1
# Strip off http headers.
$I0 = index json_result, "\r\n\r\n"
- substr json_result, 0, $I0, ""
+ json_result = replace json_result, 0, $I0, ""
load_language 'data_json'
$P1 = compreg 'data_json'
Modified: branches/ops_pct/examples/languages/abc/setup.pir
==============================================================================
--- branches/ops_pct/examples/languages/abc/setup.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/languages/abc/setup.pir Wed May 5 08:45:29 2010 (r46302)
@@ -40,7 +40,7 @@
$P1 = new 'Hash'
$P1['src/gen_grammar.pir'] = 'src/parser/grammar.nqp'
$P1['src/gen_actions.pir'] = 'src/parser/actions.nqp'
- $P0['pir_nqp-rx'] = $P1
+ $P0['pir_nqprx'] = $P1
$P2 = new 'Hash'
$P3 = split "\n", <<'SOURCES'
@@ -58,6 +58,9 @@
$P0['exe_pbc'] = $P4
$P0['installable_pbc'] = $P4
+ # test
+ $P0['test_exec'] = 'perl'
+
# dist
$P4 = glob('t/abc_*')
$P0['manifest_includes'] = $P4
Modified: branches/ops_pct/examples/languages/squaak/setup.pir
==============================================================================
--- branches/ops_pct/examples/languages/squaak/setup.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/languages/squaak/setup.pir Wed May 5 08:45:29 2010 (r46302)
@@ -43,7 +43,7 @@
$P2 = new 'Hash'
$P2['src/gen_actions.pir'] = 'src/parser/actions.pm'
- $P0['pir_nqp'] = $P2
+ $P0['pir_nqprx'] = $P2
$P3 = new 'Hash'
$P4 = split "\n", <<'SOURCES'
Modified: branches/ops_pct/examples/languages/squaak/src/parser/actions.pm
==============================================================================
--- branches/ops_pct/examples/languages/squaak/src/parser/actions.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/languages/squaak/src/parser/actions.pm Wed May 5 08:45:29 2010 (r46302)
@@ -36,35 +36,35 @@
my $past := @?BLOCK.shift();
for $<stat_or_def> {
- $past.push($($_));
+ $past.push($_.ast);
}
make $past;
}
}
method stat_or_def($/, $key) {
- make $( $/{$key} );
+ make $/{$key}.ast;
}
method statement($/, $key) {
- make $( $/{$key} );
+ make $/{$key}.ast;
}
method if_statement($/) {
- my $cond := $( $<expression> );
- my $then := $( $<block> );
+ my $cond := $<expression>.ast;
+ my $then := $<block>.ast;
my $past := PAST::Op.new( $cond, $then, :pasttype('if'), :node($/) );
## if there's an else clause, add it to the PAST node.
if $<else> {
- $past.push( $( $<else>[0] ) );
+ $past.push( $<else>[0].ast );
}
make $past;
}
method while_statement($/) {
- my $cond := $( $<expression> );
- my $body := $( $<block> );
+ my $cond := $<expression>.ast;
+ my $body := $<block>.ast;
make PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
}
@@ -83,7 +83,7 @@
our $?BLOCK;
our @?BLOCK;
- my $init := $( $<for_init> );
+ my $init := $<for_init>.ast;
## cache the name of the loop variable
my $itername := $init.name();
@@ -100,7 +100,7 @@
my $body := @?BLOCK.shift();
$?BLOCK := @?BLOCK[0];
for $<statement> {
- $body.push($($_));
+ $body.push( $_.ast );
}
## if a step was specified, use that; otherwise, use the default of +1.
@@ -108,7 +108,7 @@
##
my $step;
if $<step> {
- my $stepsize := $( $<step>[0] );
+ my $stepsize := $<step>[0].ast;
$step := PAST::Op.new( $iter, $stepsize, :pirop('add'), :node($/) );
}
else { ## default is increment by 1
@@ -117,7 +117,7 @@
$body.push($step);
## while loop iterator <= end-expression
- my $cond := PAST::Op.new( $iter, $( $<expression> ), :name('infix:<=') );
+ my $cond := PAST::Op.new( $iter, $<expression>.ast, :name('infix:<=') );
my $loop := PAST::Op.new( $cond, $body, :pasttype('while'), :node($/) );
make PAST::Stmts.new( $init, $loop, :node($/) );
@@ -132,12 +132,12 @@
$?BLOCK := PAST::Block.new( :blocktype('immediate'), :node($/) );
@?BLOCK.unshift($?BLOCK);
- my $iter := $( $<identifier> );
+ my $iter := $<identifier>.ast;
## set a flag that this identifier is being declared
$iter.isdecl(1);
$iter.scope('lexical');
## the identifier is initialized with this expression
- $iter.viviself( $( $<expression> ) );
+ $iter.viviself( $<expression>.ast );
## enter the loop variable as a local into the symbol table.
$?BLOCK.symbol($iter.name(), :scope('lexical'));
@@ -147,16 +147,16 @@
method try_statement($/) {
## get the try block
- my $try := $( $<try> );
+ my $try := $<try>.ast;
## create a new PAST::Stmts node for the catch block;
## note that no PAST::Block is created, as this currently
## has problems with the exception object. For now this will do.
my $catch := PAST::Stmts.new( :node($/) );
- $catch.push( $( $<catch> ) );
+ $catch.push( $<catch>.ast );
## get the exception identifier;
- my $exc := $( $<exception> );
+ my $exc := $<exception>.ast;
$exc.isdecl(1);
$exc.scope('lexical');
$exc.viviself( PAST::Val.new( :value(0) ) );
@@ -176,14 +176,14 @@
method exception($/) {
our $?BLOCK;
- my $exc := $( $<identifier> );
+ my $exc := $<identifier>.ast;
## the exception identifier is local to the exception handler
$?BLOCK.symbol($exc.name(), :scope('lexical'));
make $exc;
}
method throw_statement($/) {
- make PAST::Op.new( $( $<expression> ), :pirop('throw'), :node($/) );
+ make PAST::Op.new( $<expression>.ast, :pirop('throw'), :node($/) );
}
method block($/, $key) {
@@ -201,24 +201,24 @@
$?BLOCK := @?BLOCK[0];
for $<statement> {
- $past.push($($_));
+ $past.push( $_.ast );
}
make $past
}
}
method return_statement($/) {
- my $expr := $( $<expression> );
+ my $expr := $<expression>.ast;
make PAST::Op.new( $expr, :pasttype('return'), :node($/) );
}
method do_block($/) {
- make $( $<block> );
+ make $<block>.ast;
}
method assignment($/) {
- my $rhs := $( $<expression> );
- my $lhs := $( $<primary> );
+ my $rhs := $<expression>.ast;
+ my $lhs := $<primary>.ast;
$lhs.lvalue(1);
make PAST::Op.new( $lhs, $rhs, :pasttype('bind'), :node($/) );
}
@@ -228,13 +228,13 @@
our $?BLOCK;
## note that $<parameters> creates a new PAST::Block.
- my $past := $( $<parameters> );
- my $name := $( $<identifier> );
+ my $past := $<parameters>.ast;
+ my $name := $<identifier>.ast;
## set the function name
$past.name( $name.name() );
for $<statement> {
- $past.push($($_));
+ $past.push( $_.ast );
}
## remove the block from the scope stack
@@ -249,13 +249,13 @@
method variable_declaration($/) {
our $?BLOCK;
- my $past := $( $<identifier> );
+ my $past := $<identifier>.ast;
$past.isdecl(1);
$past.scope('lexical');
## if there's an initialization value, use it to viviself the variable.
if $<expression> {
- $past.viviself( $( $<expression>[0] ) );
+ $past.viviself( $<expression>[0].ast );
}
else { ## otherwise initialize to undef.
$past.viviself( 'Undef' );
@@ -281,7 +281,7 @@
my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
for $<identifier> {
- my $param := $( $_ );
+ my $param := $_.ast;
$param.scope('parameter');
$past.push($param);
@@ -297,8 +297,8 @@
}
method sub_call($/) {
- my $invocant := $( $<primary> );
- my $past := $( $<arguments> );
+ my $invocant := $<primary>.ast;
+ my $past := $<arguments>.ast;
## set the invocant as the first child of the PAST::Op(:pasttype('call')) node
$past.unshift( $invocant );
make $past;
@@ -307,15 +307,15 @@
method arguments($/) {
my $past := PAST::Op.new( :pasttype('call'), :node($/) );
for $<expression> {
- $past.push($($_));
+ $past.push( $_.ast );
}
make $past;
}
method primary($/) {
- my $past := $( $<identifier> );
+ my $past := $<identifier>.ast ;
for $<postfix_expression> {
- my $expr := $( $_ );
+ my $expr := $_.ast;
## set the current $past as the first child of $expr;
## $expr is either a key or an index; both are "keyed"
## variable access, where the first child is assumed
@@ -327,11 +327,11 @@
}
method postfix_expression($/, $key) {
- make $( $/{$key} );
+ make $/{$key}.ast;
}
method key($/) {
- my $key := $( $<expression> );
+ my $key := $<expression>.ast;
make PAST::Var.new( $key, :scope('keyed'),
:vivibase('Hash'),
@@ -341,7 +341,7 @@
}
method member($/) {
- my $member := $( $<identifier> );
+ my $member := $<identifier>.ast;
## x.y is syntactic sugar for x{"y"}, so stringify the identifier:
my $key := PAST::Val.new( :returns('String'), :value($member.name()), :node($/) );
@@ -353,7 +353,7 @@
}
method index($/) {
- my $index := $( $<expression> );
+ my $index := $<expression>.ast;
make PAST::Var.new( $index, :scope('keyed'),
:vivibase('ResizablePMCArray'),
@@ -362,8 +362,8 @@
}
method named_field($/) {
- my $past := $( $<expression> );
- my $name := $( $<string_constant> );
+ my $past := $<expression>.ast;
+ my $name := $<string_constant>.ast;
## the passed expression is in fact a named argument,
## use the named() accessor to set that name.
$past.named($name);
@@ -377,7 +377,7 @@
## (which is not a valid Squaak name)
my $past := PAST::Op.new( :name('!array'), :pasttype('call'), :node($/) );
for $<expression> {
- $past.push($($_));
+ $past.push( $_.ast );
}
make $past;
}
@@ -388,13 +388,13 @@
## !hash (which is not a valid Squaak name)
my $past := PAST::Op.new( :name('!hash'), :pasttype('call'), :node($/) );
for $<named_field> {
- $past.push($($_));
+ $past.push( $_.ast );
}
make $past;
}
method term($/, $key) {
- make $( $/{$key} );
+ make $/{$key}.ast;
}
method identifier($/) {
@@ -413,13 +413,13 @@
}
method string_constant($/) {
- make PAST::Val.new( :value( $($<string_literal>) ), :returns('String'), :node($/) );
+ make PAST::Val.new( :value( $<string_literal>.ast ), :returns('String'), :node($/) );
}
## Handle the operator precedence table.
method expression($/, $key) {
if ($key eq 'end') {
- make $($<expr>);
+ make $<expr>.ast;
}
else {
my $past := PAST::Op.new( :name($<type>),
@@ -429,7 +429,7 @@
:node($/)
);
for @($/) {
- $past.push( $($_) );
+ $past.push( $_.ast );
}
make $past;
}
Modified: branches/ops_pct/examples/library/ncurses_life.pir
==============================================================================
--- branches/ops_pct/examples/library/ncurses_life.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/library/ncurses_life.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -478,7 +478,7 @@
if count > 3 goto space
star:
- substr new_world, pos, 1, "*"
+ new_world = replace new_world, pos, 1, "*"
space: # is space already
inc pos
@@ -608,10 +608,10 @@
unless len goto out
$S0 = substr line, 0,1
eq $S0, "#", check_format
- chopn line, 1 # \n
+ line = chopn line, 1 # \n
dec len
if format != PICTURE goto not_pic
- substr world, pos, len, line
+ world = replace world, pos, len, line
pos = pos + size
goto loop
@@ -777,7 +777,7 @@
# TODO abs/rel and bounds checking
#world[c] = "*"
- substr world, c, 1, "*"
+ world = replace world, c, 1, "*"
if s < len goto lp2
done:
nok:
Modified: branches/ops_pct/examples/nci/Xlib.pir
==============================================================================
--- branches/ops_pct/examples/nci/Xlib.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/nci/Xlib.pir Wed May 5 08:45:29 2010 (r46302)
@@ -67,10 +67,12 @@
if xlib goto store
check2:
xlib = loadlib 'libX11.so'
+ $I0 = defined xlib
unless $I0 goto check3
if xlib goto store
check3:
xlib = loadlib 'libX11.so.6'
+ $I0 = defined xlib
unless $I0 goto check4
if xlib goto store
check4:
Modified: branches/ops_pct/examples/nci/xlibtest.pir
==============================================================================
--- branches/ops_pct/examples/nci/xlibtest.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/nci/xlibtest.pir Wed May 5 08:45:29 2010 (r46302)
@@ -285,12 +285,13 @@
jsonfile = handle.'readall'()
close handle
- load_bytecode 'compilers/json/JSON.pbc'
- .local pmc json
- json = compreg 'JSON'
+ load_language 'data_json'
+ .local pmc json, jsonobject, jsondata
+ json = compreg 'data_json'
.local pmc jsonobject
- jsonobject = json(jsonfile)
- listline = jsonobject [JKEY_LINES]
+ jsonobject = json.'compile'(jsonfile)
+ jsondata = jsonobject()
+ listline = jsondata [JKEY_LINES]
goto finish
failed:
Modified: branches/ops_pct/examples/pge/demo.pir
==============================================================================
--- branches/ops_pct/examples/pge/demo.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pge/demo.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
.include "errors.pasm"
@@ -43,7 +43,7 @@
$I0 = index x, "\n"
get_cmd:
$S0 = substr x, 0, $I0
- chopn x, 1
+ x = chopn x, 1
if $S0 == "next" goto match_next
if $S0 == "regex" goto make_p6rule
if $S0 == "glob" goto make_glob
Modified: branches/ops_pct/examples/pir/befunge/debug.pir
==============================================================================
--- branches/ops_pct/examples/pir/befunge/debug.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/befunge/debug.pir Wed May 5 08:45:29 2010 (r46302)
@@ -181,7 +181,7 @@
print "bef> "
$P0 = getstdin
$S0 = readline $P0
- chopn $S0, 1
+ $S0 = chopn $S0, 1
$I0 = length $S0
if $I0 == 0 goto DEBUG__INTERACT__NEXT
@@ -205,7 +205,7 @@
goto DEBUG__INTERACT__LOOP
DEBUG__INTERACT__BREAK:
- substr $S0, 0, 6, ""
+ $S0 = replace $S0, 0, 6, ""
$P0 = get_global "breakpoints"
$P0[$S0] = 1
set_global "breakpoints", $P0
@@ -218,7 +218,7 @@
goto DEBUG__INTERACT__END
DEBUG__INTERACT__DELETE:
- substr $S0, 0, 7, ""
+ $S0 = replace $S0, 0, 7, ""
$P0 = get_global "breakpoints"
delete $P0[$S0]
set_global "breakpoints", $P0
Modified: branches/ops_pct/examples/pir/befunge/io.pir
==============================================================================
--- branches/ops_pct/examples/pir/befunge/io.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/befunge/io.pir Wed May 5 08:45:29 2010 (r46302)
@@ -41,10 +41,10 @@
$P1 = getstdin
$S0 = readline $P1
- chopn $S0, 1
+ $S0 = chopn $S0, 1
_IO__INPUT_CHAR__SUBSTR:
- $S1 = substr $S0, 0, 1, ""
+ $S1 = replace $S0, 0, 1, ""
$P0 = $S0
set_global "user_input", $P0
@@ -73,7 +73,7 @@
$P1 = getstdin
$S0 = readline $P1
- chopn $S0, 1
+ $S0 = chopn $S0, 1
len = length $S0
_IO__INPUT_INT__PARSE_INPUT:
@@ -90,7 +90,7 @@
if i < len goto _IO__INPUT_INT__NEXT_CHAR
_IO__INPUT_INT__NAN:
- substr $S0, 0, i, ""
+ $S0 = replace $S0, 0, i, ""
$P0 = $S0
set_global "user_input", $P0
Modified: branches/ops_pct/examples/pir/befunge/load.pir
==============================================================================
--- branches/ops_pct/examples/pir/befunge/load.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/befunge/load.pir Wed May 5 08:45:29 2010 (r46302)
@@ -34,7 +34,7 @@
newline = index line, "\n"
if newline < 0 goto LOAD__SKIP_CHOP
- chopn line, 1
+ line = chopn line, 1
LOAD__SKIP_CHOP:
line = _load__fit_str_to_80(line)
playline = _load__str_to_array(line)
@@ -86,7 +86,7 @@
concat str, $S0
# truncate to 80 chars
- substr str, 80, -1, ''
+ str = replace str, 80, -1, ''
.return(str)
.end
Modified: branches/ops_pct/examples/pir/befunge/setup.pir
==============================================================================
--- branches/ops_pct/examples/pir/befunge/setup.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/befunge/setup.pir Wed May 5 08:45:29 2010 (r46302)
@@ -55,6 +55,9 @@
$P0['exe_pbc'] = $P3
$P0['installable_pbc'] = $P3
+ # test
+ $P0['test_exec'] = 'perl'
+
# dist
$P4 = glob('*.bef')
$P0['manifest_includes'] = $P4
Modified: branches/ops_pct/examples/pir/io.pir
==============================================================================
--- branches/ops_pct/examples/pir/io.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/io.pir Wed May 5 08:45:29 2010 (r46302)
@@ -37,6 +37,7 @@
print $S0
# now clean up after ourselves.
+ $P0 = loadlib 'os'
$P1 = new "OS"
$P1."rm"(test_fn)
Modified: branches/ops_pct/examples/pir/pirric.pir
==============================================================================
--- branches/ops_pct/examples/pir/pirric.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/pirric.pir Wed May 5 08:45:29 2010 (r46302)
@@ -102,57 +102,59 @@
addparent cl, $P0
set_global 'Literal', cl
- .local pmc keywords
+ .local pmc keywords, methods
+ # Get methods hash to verify
+ methods = inspect runnerclass, 'methods'
keywords = new 'Hash'
- setkeyword(keywords, 'CLEAR')
- setkeyword(keywords, 'CONT')
- setkeyword(keywords, 'END')
- setkeyword(keywords, 'EXIT')
- setkeyword(keywords, 'ERROR')
- setkeyword(keywords, 'FOR')
- setkeyword(keywords, 'GOSUB')
- setkeyword(keywords, 'GOTO')
- setkeyword(keywords, 'IF')
- setkeyword(keywords, 'LIST')
- setkeyword(keywords, 'LOAD')
- setkeyword(keywords, 'NEXT')
- setkeyword(keywords, 'NEW')
- setkeyword(keywords, 'ON')
- setkeyword(keywords, 'PRINT')
- setkeyword(keywords, 'REM')
- setkeyword(keywords, 'RETURN')
- setkeyword(keywords, 'RUN')
- setkeyword(keywords, 'SAVE')
- setkeyword(keywords, 'STOP')
- setkeyword(keywords, 'TROFF')
- setkeyword(keywords, 'TRON')
+ setkeyword(methods, keywords, 'CLEAR')
+ setkeyword(methods, keywords, 'CONT')
+ setkeyword(methods, keywords, 'END')
+ setkeyword(methods, keywords, 'EXIT')
+ setkeyword(methods, keywords, 'ERROR')
+ setkeyword(methods, keywords, 'FOR')
+ setkeyword(methods, keywords, 'GOSUB')
+ setkeyword(methods, keywords, 'GOTO')
+ setkeyword(methods, keywords, 'IF')
+ setkeyword(methods, keywords, 'LIST')
+ setkeyword(methods, keywords, 'LOAD')
+ setkeyword(methods, keywords, 'NEXT')
+ setkeyword(methods, keywords, 'NEW')
+ setkeyword(methods, keywords, 'ON')
+ setkeyword(methods, keywords, 'PRINT')
+ setkeyword(methods, keywords, 'REM')
+ setkeyword(methods, keywords, 'RETURN')
+ setkeyword(methods, keywords, 'RUN')
+ setkeyword(methods, keywords, 'SAVE')
+ setkeyword(methods, keywords, 'STOP')
+ setkeyword(methods, keywords, 'TROFF')
+ setkeyword(methods, keywords, 'TRON')
set_global 'keywords', keywords
.local pmc predefs
predefs = new 'Hash'
- setpredef(predefs, 'NEW')
- setpredef(predefs, 'ISA')
- setpredef(predefs, 'GETPARROTINTERP')
- setpredef(predefs, 'CHR$', 'CHR_S')
- setpredef(predefs, 'ASC')
- setpredef(predefs, 'LEN')
- setpredef(predefs, 'LEFT$', 'LEFT_S')
- setpredef(predefs, 'RIGHT$', 'RIGHT_S')
- setpredef(predefs, 'MID$', 'MID_S')
- setpredef(predefs, 'COMPLEX')
- setpredef(predefs, 'COMPREG')
- setpredef(predefs, 'EXP')
- setpredef(predefs, 'LN')
- setpredef(predefs, 'SIN')
- setpredef(predefs, 'SINH')
- setpredef(predefs, 'COS')
- setpredef(predefs, 'COSH')
- setpredef(predefs, 'TAN')
- setpredef(predefs, 'TANH')
- setpredef(predefs, 'ASIN')
- setpredef(predefs, 'ACOS')
- setpredef(predefs, 'ATAN')
- setpredef(predefs, 'SQR')
+ setpredef(methods, predefs, 'NEW')
+ setpredef(methods, predefs, 'ISA')
+ setpredef(methods, predefs, 'GETPARROTINTERP')
+ setpredef(methods, predefs, 'CHR$', 'CHR_S')
+ setpredef(methods, predefs, 'ASC')
+ setpredef(methods, predefs, 'LEN')
+ setpredef(methods, predefs, 'LEFT$', 'LEFT_S')
+ setpredef(methods, predefs, 'RIGHT$', 'RIGHT_S')
+ setpredef(methods, predefs, 'MID$', 'MID_S')
+ setpredef(methods, predefs, 'COMPLEX')
+ setpredef(methods, predefs, 'COMPREG')
+ setpredef(methods, predefs, 'EXP')
+ setpredef(methods, predefs, 'LN')
+ setpredef(methods, predefs, 'SIN')
+ setpredef(methods, predefs, 'SINH')
+ setpredef(methods, predefs, 'COS')
+ setpredef(methods, predefs, 'COSH')
+ setpredef(methods, predefs, 'TAN')
+ setpredef(methods, predefs, 'TANH')
+ setpredef(methods, predefs, 'ASIN')
+ setpredef(methods, predefs, 'ACOS')
+ setpredef(methods, predefs, 'ATAN')
+ setpredef(methods, predefs, 'SQR')
set_global 'predefs', predefs
# Create classes for control flow exceptions
@@ -252,6 +254,7 @@
#-----------------------------------------------------------------------
.sub setkeyword
+ .param pmc methods
.param pmc keywords
.param string key
@@ -259,10 +262,11 @@
funcname = concat 'func_', key
.local pmc func
- func = get_global ['Runner'], funcname
+ func = methods[funcname]
$I0 = defined func
if $I0 goto good
- say 'No func!'
+ print funcname
+ die ': No func!'
exit 1
good:
keywords [key] = func
@@ -270,6 +274,7 @@
#-----------------------------------------------------------------------
.sub setpredef
+ .param pmc methods
.param pmc predefs
.param string key
.param string name :optional
@@ -282,7 +287,7 @@
funcname = concat 'predef_', name
.local pmc func
- func = get_global ['Runner'], funcname
+ func = methods[funcname]
$I0 = defined func
if $I0 goto good
print funcname
@@ -416,7 +421,7 @@
.local pmc vars, var
vars = getattribute self, 'vars'
- upcase varname
+ varname = upcase varname
var = vars[varname]
.return(var)
.end
@@ -428,7 +433,7 @@
.local pmc vars, var
vars = getattribute self, 'vars'
- upcase varname
+ varname = upcase varname
vars[varname] = value
.end
@@ -664,7 +669,7 @@
$I0 = $P2
$S0 = chr $I0
$I1 = find_encoding 'utf8'
- trans_encoding $S0, $I1
+ $S0 = trans_encoding $S0, $I1
$P3 = new 'String'
$P3 = $S0
.return($P3)
@@ -1010,7 +1015,7 @@
unless $I0 goto fail
$S0 = token
- upcase $S0
+ $S0 = upcase $S0
#print $S0
# Some predefined functions:
@@ -1668,7 +1673,7 @@
key = 'PRINT'
findkey:
- upcase key
+ key = upcase key
.local pmc keywords
keywords = get_hll_global 'keywords'
$I0 = keywords
@@ -1797,14 +1802,14 @@
pvar = tokenizer.'get'()
.local string var
var = pvar
- upcase var
+ var = upcase var
$P0 = tokenizer.'get'()
ne $P0, '=', fail
.local pmc value
value = self.'evaluate'(tokenizer)
$P0 = tokenizer.'get'()
$S0 = $P0
- upcase $S0
+ $S0 = upcase $S0
ne $S0, 'TO', fail
.local pmc limit
@@ -1815,7 +1820,7 @@
$I0 = defined $P0
unless $I0 goto default_step
$S0 = $P0
- upcase $S0
+ $S0 = upcase $S0
ne $S0, 'STEP', fail
increment = self.'evaluate'(tokenizer)
goto prepare
@@ -1896,7 +1901,7 @@
$I0 = defined token
unless $I0 goto fail
$S0 = token
- upcase $S0
+ $S0 = upcase $S0
ne $S0, 'THEN', fail
$I0 = defined arg
@@ -1917,7 +1922,7 @@
$I0 = isa $P0, 'String'
unless $I0 goto nextitem
$S0 = $P0
- upcase $S0
+ $S0 = upcase $S0
eq $S0, 'ELSE', is_else
eq $S0, 'IF', is_if
goto nextitem
@@ -1959,7 +1964,7 @@
$I1 = defined $P1
unless $I1 goto fail
$S1 = $P1
- upcase $S1
+ $S1 = upcase $S1
ne $S1, 'B', fail
$S1 = arg
pirric_aux_loadbytecode($S1)
@@ -2037,13 +2042,13 @@
.local pmc token
token = tokenizer.'get'()
$S0 = token
- upcase $S0
+ $S0 = upcase $S0
if $S0 == 'ERROR' goto on_error
goto fail
on_error:
token = tokenizer.'get'()
$S0 = token
- upcase $S0
+ $S0 = upcase $S0
if $S0 == 'GOTO' goto on_error_goto
if $S0 == 'EXIT' goto on_error_exit
goto fail
@@ -2075,7 +2080,7 @@
item:
$S0 = arg
- upcase $S0
+ $S0 = upcase $S0
eq $S0, 'ELSE', endline
arg = self.'evaluate'(tokenizer, arg)
print_it:
@@ -2086,7 +2091,7 @@
eq arg, ';', nextitem
eq arg, ',', comma
$S0 = arg
- upcase $S0
+ $S0 = upcase $S0
eq $S0, 'ELSE', endline
SyntaxError()
comma:
@@ -2103,7 +2108,7 @@
$I0 = defined arg
unless $I0 goto finish
$S0 = arg
- upcase $S0
+ $S0 = upcase $S0
eq $S0, 'ELSE', finish
goto item
finish:
Modified: branches/ops_pct/examples/pir/quine_ord.pir
==============================================================================
--- branches/ops_pct/examples/pir/quine_ord.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/quine_ord.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
# ATT no autoexpanding svn markers please
.sub quine :main
@@ -838,8 +838,8 @@
push code_as_data, 45
push code_as_data, 50
push code_as_data, 48
+push code_as_data, 49
push code_as_data, 48
-push code_as_data, 56
push code_as_data, 44
push code_as_data, 32
push code_as_data, 80
@@ -1712,12 +1712,20 @@
push code_as_data, 32
push code_as_data, 32
push code_as_data, 32
-push code_as_data, 115
-push code_as_data, 117
-push code_as_data, 98
-push code_as_data, 115
-push code_as_data, 116
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 61
+push code_as_data, 32
push code_as_data, 114
+push code_as_data, 101
+push code_as_data, 112
+push code_as_data, 108
+push code_as_data, 97
+push code_as_data, 99
+push code_as_data, 101
push code_as_data, 32
push code_as_data, 99
push code_as_data, 111
@@ -1906,6 +1914,40 @@
push code_as_data, 44
push code_as_data, 32
push code_as_data, 49
+push code_as_data, 10
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 61
+push code_as_data, 32
+push code_as_data, 114
+push code_as_data, 101
+push code_as_data, 112
+push code_as_data, 108
+push code_as_data, 97
+push code_as_data, 99
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 44
+push code_as_data, 32
+push code_as_data, 48
+push code_as_data, 44
+push code_as_data, 32
+push code_as_data, 49
push code_as_data, 44
push code_as_data, 32
push code_as_data, 39
@@ -3530,7 +3572,7 @@
DO_QUINE:
# First print the stuff data section
- print "# Copyright (C) 2006-2008, Parrot Foundation.\n"
+ print "# Copyright (C) 2006-2010, Parrot Foundation.\n"
print "# ATT no autoexpanding svn markers please\n"
print "\n"
print ".sub quine :main\n"
@@ -3562,13 +3604,14 @@
# Ignore everything up to end of data section
.local int end_of_data_pos
end_of_data_pos = index code, "# ------ End of data section ------"
- substr code, 0, end_of_data_pos, ''
+ code = replace code, 0, end_of_data_pos, ''
.local string char_string
.local int char_int
SHIFT_NEXT_CHAR:
unless code goto FINISH_SHIFT_CHARS
- char_string = substr code, 0, 1, ''
+ char_string = substr code, 0, 1
+ code = replace code, 0, 1, ''
char_int = ord char_string
print 'push code_as_data, '
print char_int
Modified: branches/ops_pct/examples/pir/substr.pir
==============================================================================
--- branches/ops_pct/examples/pir/substr.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/pir/substr.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -31,7 +31,7 @@
WANE: $I1 = length $S1
print $S1
print "\n"
- chopn $S1, 1
+ $S1 = chopn $S1, 1
unless $I1 == $I3 goto WANE
DONE:
.end
Modified: branches/ops_pct/examples/sdl/mandel.pir
==============================================================================
--- branches/ops_pct/examples/sdl/mandel.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/sdl/mandel.pir Wed May 5 08:45:29 2010 (r46302)
@@ -556,9 +556,7 @@
Optimized build
[2] plain runcore 64 bit 3.0s
- [2] -R cgp runcore 64 bit 1.5s
[2] plain runcore 32 bit 3.6s
- [2] -R cgp runcore 32 bit 1.6s
[1] -R jit 1.1s
[2] -R jit 0.8s
[3] -R jit 0.5s
Modified: branches/ops_pct/examples/shootout/ack.pir
==============================================================================
--- branches/ops_pct/examples/shootout/ack.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/ack.pir Wed May 5 08:45:29 2010 (r46302)
@@ -3,7 +3,7 @@
# $Id$
# OUTPUT="Ack(3, 9) = 4093\n"
#
-# ./parrot -Oc -R cgp-jit
+# ./parrot -Oc
# RQ (Karl)
# Seems to be an old benchmark, now deprecated by the shootout
#
Modified: branches/ops_pct/examples/shootout/binarytrees.pir
==============================================================================
--- branches/ops_pct/examples/shootout/binarytrees.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/binarytrees.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2005-2009, Parrot Foundation.
# $Id$
#
Modified: branches/ops_pct/examples/shootout/fasta.pir
==============================================================================
--- branches/ops_pct/examples/shootout/fasta.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/fasta.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2005-2009, Parrot Foundation.
# $Id$
#
Modified: branches/ops_pct/examples/shootout/knucleotide.pir
==============================================================================
--- branches/ops_pct/examples/shootout/knucleotide.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/knucleotide.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
.sub main :main
@@ -13,7 +13,7 @@
line = ''
.local string seq
beginwhile_2:
- chopn line, 1
+ line = chopn line, 1
seq .= line
line = readline stdin
$I0 = length line
@@ -21,7 +21,7 @@
$S0 = chopn line, -1
if $S0 != ">" goto beginwhile_2
endwhile_2:
- upcase seq
+ seq = upcase seq
sort_seq(seq, 1)
sort_seq(seq, 2)
find_seq(seq, "GGT")
Modified: branches/ops_pct/examples/shootout/partialsums.pir
==============================================================================
--- branches/ops_pct/examples/shootout/partialsums.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/partialsums.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2006-2009, Parrot Foundation.
# $Id$
#
Modified: branches/ops_pct/examples/shootout/pidigits.pir
==============================================================================
--- branches/ops_pct/examples/shootout/pidigits.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/pidigits.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2005-2009, Parrot Foundation.
# $Id$
#
Modified: branches/ops_pct/examples/shootout/random.pir
==============================================================================
--- branches/ops_pct/examples/shootout/random.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/random.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2005-2009, Parrot Foundation.
# $Id$
#
Modified: branches/ops_pct/examples/shootout/recursive-2.pir
==============================================================================
--- branches/ops_pct/examples/shootout/recursive-2.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/recursive-2.pir Wed May 5 08:45:29 2010 (r46302)
@@ -6,7 +6,7 @@
# Fib and Tak by Joshua Isom
# use less registers (leo)
-# time ./parrot -Oc -R cgp-jit recursive-2.pir 11
+# time ./parrot -Oc recursive-2.pir 11
# real 2.32 s (AMD X2 at 2000)
# modified default value to n=3. Karl Forner
Modified: branches/ops_pct/examples/shootout/recursive.pir
==============================================================================
--- branches/ops_pct/examples/shootout/recursive.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/recursive.pir Wed May 5 08:45:29 2010 (r46302)
@@ -5,7 +5,7 @@
# Ack by Leopold Toetsch
# Fib and Tak by Joshua Isom
# modified default value to n=3. Karl Forner
-# ./parrot -Oc -R cgp-jit recursive.pir N
+# ./parrot -Oc recursive.pir N
.sub main :main
.param pmc argv
Modified: branches/ops_pct/examples/shootout/regexdna.pir
==============================================================================
--- branches/ops_pct/examples/shootout/regexdna.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/regexdna.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
.sub main :main
@@ -65,7 +65,7 @@
chunklen = length chunk
unless chunklen goto endwhile
# They don't say you have to match case insenitive...
- downcase chunk
+ chunk = downcase chunk
seq .= chunk
goto beginwhile
endwhile:
@@ -84,7 +84,7 @@
$I0 = $P0."from"()
$I1 = $P0."to"()
$I1 -= $I0
- substr seq, $I0, $I1, ''
+ seq = replace seq, $I0, $I1, ''
goto stripfind
endstripfind:
seqlen = length seq
@@ -140,7 +140,7 @@
# $I0 = $P0."from"()
# $I1 = $P0."to"()
# $I1 -= $I0
-# substr seq, $I0, $I1, replacement
+# seq = replace seq, $I0, $I1, replacement
# goto switchfind
#endswitchfind:
@@ -164,7 +164,7 @@
$P0 = pop matches
$I0 = $P0[0]
$I1 = $P0[1]
- substr seq, $I0, $I1, replacement
+ seq = replace seq, $I0, $I1, replacement
goto switchloop
endswitchloop:
#############################################
Modified: branches/ops_pct/examples/shootout/revcomp.pir
==============================================================================
--- branches/ops_pct/examples/shootout/revcomp.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/revcomp.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!parrot
-# Copyright (C) 2005-2009, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
# Reads from stdin a file in the format made by fasta.pir
# ./parrot -R jit
@@ -54,7 +54,7 @@
print line
goto endif
else:
- chopn line, 1
+ line = chopn line, 1
seq .= line
endif:
goto beginwhile
Modified: branches/ops_pct/examples/shootout/takfp.pir
==============================================================================
--- branches/ops_pct/examples/shootout/takfp.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/shootout/takfp.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,8 +1,8 @@
-#!./parrot -R cgp
+#!./parrot
# Copyright (C) 2005-2009, Parrot Foundation.
# $Id$
#
-# ./parrot -R cgp takfp.pir N (N = 10 for shootout)
+# ./parrot takfp.pir N (N = 10 for shootout)
# by Joshua Isom
# changed default value to N=7 (shootout default before being deprecated)
# anyway N=10 froze my laptop. Karl Forner
Modified: branches/ops_pct/examples/tutorial/23_string_ops_substr.pir
==============================================================================
--- branches/ops_pct/examples/tutorial/23_string_ops_substr.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/tutorial/23_string_ops_substr.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 String Operations (continued)
@@ -10,25 +10,28 @@
position is left out, C<substr> returns all the characters until the
end of the string.
-An optional fourth argument is a string that will be used to
-replace the characters between the start and end positions.
+C<substr> no longer provides an in-place replace, however there is a
+C<replace> operator that allows this type of operation to be performed,
+although not in-place. The C<replace> operator assigns a new_srting,
+taking as arguments, the old_string, a start and end position, and a
+string to be inserted in between the start and end positions.
=cut
.sub main :main
- $S0 = substr "abcde", 1, 2 # "bc"
- say $S0
+ $S0 = substr "abcde", 1, 2
+ say $S0 # "bc"
set $S1, "abcde"
$S0 = substr $S1, 1, 2
- say $S0 # "bc"
- say $S1 # "abcde"
+ say $S0 # "bc"
+ say $S1 # "abcde"
set $S1, "abcde"
- $S0 = substr $S1, 1, 2, "XYZ"
- say $S0 # "bc"
- say $S1 # "aXYZde"
+ $S0 = replace $S1, 1, 2, "XYZ"
+ say $S0 # "aXYZde"
+ say $S1 # "abcde"
.end
@@ -37,4 +40,3 @@
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4 ft=pir:
-
Modified: branches/ops_pct/examples/tutorial/40_file_ops.pir
==============================================================================
--- branches/ops_pct/examples/tutorial/40_file_ops.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/tutorial/40_file_ops.pir Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,7 @@
close filein
# Be nice and remove the temporary file we created.
+ $P0 = loadlib 'os'
$P1 = new ['OS']
$P1.'rm'('40_file_ops_data.txt')
.end
Modified: branches/ops_pct/examples/tutorial/56_defined.pir
==============================================================================
--- branches/ops_pct/examples/tutorial/56_defined.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/examples/tutorial/56_defined.pir Wed May 5 08:45:29 2010 (r46302)
@@ -26,7 +26,7 @@
=pod
Most PMC's, but not all, should return true for C<defined>. It all
-depends on how the PMC implements its vtable method for C<defined>.
+depends on how the PMC implements its vtable function for C<defined>.
For example the C<Undef> PMC always returns false (0) for C<defined>.
=cut
Modified: branches/ops_pct/ext/Parrot-Embed/Build.PL
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/Build.PL Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/Parrot-Embed/Build.PL Wed May 5 08:45:29 2010 (r46302)
@@ -1,3 +1,5 @@
+#! perl
+
use strict;
use warnings;
@@ -14,19 +16,19 @@
diag( my $path_sep = get_path_separator() );
my $class = Module::Build->subclass(
- code => <<"END_HERE",
- use File::Spec;
+ code => <<"END_HERE",
+ use File::Spec;
- sub ACTION_build
- {
- my \$self = shift;
- my \@cmd = ( qw( $parrot -o ),
- map { File::Spec->catfile( 't', "greet.\$_" ) } qw( pbc pir ) );
+ sub ACTION_build
+ {
+ my \$self = shift;
+ my \@cmd = ( qw( $parrot -o ),
+ map { File::Spec->catfile( 't', "greet.\$_" ) } qw( pbc pir ) );
- system( \@cmd ) == 0 or die "Cannot compile PBC for test: \$?";
+ system( \@cmd ) == 0 or die "Cannot compile PBC for test: \$?";
- \$self->SUPER::ACTION_build( \@_ );
- }
+ \$self->SUPER::ACTION_build( \@_ );
+ }
sub ACTION_test
{
@@ -42,27 +44,27 @@
);
my $builder = $class->new(
- module_name => 'Parrot::Embed',
- license => 'perl',
- dist_author => 'chromatic <chromatic at wgz.org>',
- dist_version_from => 'lib/Parrot/Embed.pm',
- build_requires =>
- {
- 'Test::More' => 0,
- 'ExtUtils::CBuilder' => 0,
- },
- add_to_cleanup => [ 'Parrot-Embed-*' ],
+ module_name => 'Parrot::Embed',
+ license => 'perl',
+ dist_author => 'chromatic <chromatic at wgz.org>',
+ dist_version_from => 'lib/Parrot/Embed.pm',
+ build_requires =>
+ {
+ 'Test::More' => 0,
+ 'ExtUtils::CBuilder' => 0,
+ },
+ add_to_cleanup => [ 'Parrot-Embed-*' ],
include_dirs => [ $incp ],
- extra_compiler_flags => $cflags,
- extra_linker_flags => $lflags,
+ extra_compiler_flags => $cflags,
+ extra_linker_flags => $lflags,
);
$builder->create_build_script();
sub in_parrot_tree
{
- my $cwd = cwd();
- return $cwd =~ /\bext\b.Parrot/;
+ my $cwd = cwd();
+ return $cwd =~ /\bext\b.Parrot/;
}
sub get_dl_env_var
@@ -81,46 +83,48 @@
sub get_compiler_flags
{
- my $in_parrot_tree = shift;
- return get_flags_from_parrot_src() if $in_parrot_tree;
- return get_flags_from_pkg_config() if $ENV{PKG_CONFIG_PATH};
+ my $in_parrot_tree = shift;
+ return get_flags_from_parrot_src() if $in_parrot_tree;
+ return get_flags_from_pkg_config() if $ENV{PKG_CONFIG_PATH};
}
sub get_flags_from_pkg_config
{
- require ExtUtils::PkgConfig;
- my %pkg_info = ExtUtils::PkgConfig->find( 'parrot' );
- return @pkg_info{qw( cflags libs )};
+ require ExtUtils::PkgConfig;
+ my %pkg_info = ExtUtils::PkgConfig->find( 'parrot' );
+ return @pkg_info{qw( cflags libs )};
}
sub get_flags_from_parrot_src
{
- my $updir = updir();
- my $file = catfile( $updir, $updir, 'parrot.pc' );
- open( my $fh, '<', $file ) or die "Cannot read $file: $!\n";
-
- my %vars;
- while (<$fh>)
- {
- chomp;
- last unless /\S/;
- my ($var, $value) = split(/=/, $_);
- $vars{$var} = $value;
- }
-
- while (<$fh>)
- {
- chomp;
- last unless /\S/;
- my ($var, $value) = split(/: /, $_);
- $value =~ s/\${(\w+)}/$vars{$1}/g;
- $vars{$var} = $value;
- }
+ my $updir = updir();
+ my $basedir = Cwd::realpath( catdir( cwd(), $updir, $updir ) );
+ my $file = catfile( $basedir, 'parrot.pc' );
+ open( my $fh, '<', $file ) or die "Cannot read $file: $!\n";
+
+ my %vars;
+ while (<$fh>)
+ {
+ chomp;
+ last unless /\S/;
+ }
+
+ $vars{libdir} = catdir( $basedir, 'lib' );
+ $vars{includedir} = catdir( $basedir, 'include' );
+
+ while (<$fh>)
+ {
+ chomp;
+ last unless /\S/;
+ my ($var, $value) = split(/: /, $_);
+ $value =~ s/\${(\w+)}/$vars{$1}/g;
+ $vars{$var} = $value;
+ }
$vars{Cflags} .= ' -I' . catdir( ($updir) x 2, 'include' );
$vars{Libs} .= $^O =~ /Win32/ ? ' ..\..\libparrot.lib' : " -L$libp";
- return @vars{qw( Cflags Libs )};
+ return @vars{qw( Cflags Libs )};
}
sub get_paths
@@ -135,42 +139,42 @@
sub get_parrot_path
{
- my $in_parrot_tree = shift;
- return get_parrot_path_internal() if $in_parrot_tree;
- return get_parrot_path_external();
+ my $in_parrot_tree = shift;
+ return get_parrot_path_internal() if $in_parrot_tree;
+ return get_parrot_path_external();
}
sub get_parrot_path_internal
{
- my $updir = updir();
- my $path = catfile(($updir) x 2, get_parrot_executable_name());
+ my $updir = updir();
+ my $path = catfile(($updir) x 2, get_parrot_executable_name());
- die "parrot apparently not built!\n" unless -e $path;
- return $path;
+ die "parrot apparently not built!\n" unless -e $path;
+ return $path;
}
sub get_parrot_path_external
{
- my $parrot = get_parrot_executable_name();
+ my $parrot = get_parrot_executable_name();
- for my $path ( path() )
- {
- my $file = catfile( $path, $parrot );
- next unless -e $file;
- return $file;
- }
+ for my $path ( path() )
+ {
+ my $file = catfile( $path, $parrot );
+ next unless -e $file;
+ return $file;
+ }
- die "parrot apparently not installed in \$PATH\n";
+ die "parrot apparently not installed in \$PATH\n";
}
sub get_parrot_executable_name
{
- return 'parrot' unless $^O =~ /Win32/;
- return 'parrot.exe';
+ return 'parrot' unless $^O =~ /Win32/;
+ return 'parrot.exe';
}
sub diag
{
- return unless $ENV{PE_DEBUG};
- print STDERR "<$_>\n" for @_;
+ return unless $ENV{PE_DEBUG};
+ print STDERR "<$_>\n" for @_;
}
Modified: branches/ops_pct/ext/Parrot-Embed/MANIFEST
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/MANIFEST Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/Parrot-Embed/MANIFEST Wed May 5 08:45:29 2010 (r46302)
@@ -1,7 +1,6 @@
Build.PL
Changes
MANIFEST
-META.yml # Will be created by "make dist"
README
lib/Parrot/Embed.pm
lib/Parrot/Embed.xs
Modified: branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/Parrot-Embed/lib/Parrot/Embed.xs Wed May 5 08:45:29 2010 (r46302)
@@ -223,7 +223,7 @@
pmc_actual = pmc->pmc;
interp = get_interp( pmc->interp );
arg_string = Parrot_str_new_constant( interp, argument );
- Parrot_ext_call( interp, pmc_actual, signature, arg_string, &out_pmc );
+ Parrot_pcc_invoke_sub_from_c_args( interp, pmc_actual, signature, arg_string, &out_pmc );
RETVAL = make_pmc( aTHX_ pmc->interp, out_pmc );
OUTPUT:
RETVAL
Modified: branches/ops_pct/ext/Parrot-Embed/t/interp.t
==============================================================================
--- branches/ops_pct/ext/Parrot-Embed/t/interp.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/Parrot-Embed/t/interp.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,12 +1,12 @@
#!perl
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
use strict;
use warnings;
-use Test::More tests => 26;
+use Test::More tests => 23;
use File::Spec;
my $hello_pbc = File::Spec->catfile( 't', 'greet.pbc' );
@@ -45,7 +45,7 @@
'... but again, not if there is no global of that name there' );
can_ok( $global_greet, 'invoke' );
-my $pmc = $global_greet->invoke( 'PS', 'Bob' );
+my $pmc = $global_greet->invoke( 'S->P', 'Bob' );
ok( $pmc, 'invoke() should return a PMC, given that signature' );
is( $pmc->get_string(), 'Hello, Bob!', '... containing a string returned in the PMC' );
@@ -66,27 +66,35 @@
ok( $eval, 'compile() should compile PIR code and return a PMC' );
isa_ok( $eval, 'Parrot::PMC' );
+=for comment
+
TODO:
{
local $TODO = 'compile_string() returns wrong results';
- ok( !$interp->compile('blah'), '... but only for valid PIR' );
+ # ok( !$interp->compile('blah'), '... but only for valid PIR' );
}
-$pmc = $else_greet->invoke( 'P', '' );
+$pmc = $else_greet->invoke( 'S->P', '' );
is( $pmc->get_string(), 'Hiya!', '... calling the passed-in subroutine' );
my $foo = $interp->find_global('foo');
-$pmc = $foo->invoke( 'PS', 'BAR' );
+$pmc = $foo->invoke( 'S->P', 'BAR' );
is( $pmc->get_string(), 'BAR FOO ',
'... and compiled sub should work just like any other Sub pmc' );
+my $foo;
+
+=cut
+
+my $foo;
+
{
my $die_interp = $module->new($interp);
eval { $die_interp->load_file($hello_pbc) };
$foo = $die_interp->find_global('greet');
}
-$pmc = $foo->invoke( 'PS', 'out of scope' );
+$pmc = $foo->invoke( 'S->P', 'out of scope' );
is(
$pmc->get_string(),
'Hello, out of scope!',
Deleted: branches/ops_pct/ext/nqp-rx/.gitignore
==============================================================================
--- branches/ops_pct/ext/nqp-rx/.gitignore Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,15 +0,0 @@
-Makefile
-/parrot
-/parrot_install
-.*.swp
-*.c
-*.o
-Regex.pbc
-HLL.pbc
-P6Regex
-P6Regex.pbc
-nqp
-nqp.pbc
-src/gen/*.pir
-src/stage1
-src/stage2
Modified: branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/HLL-s0.pir Wed May 5 08:45:29 2010 (r46302)
@@ -99,7 +99,7 @@
sigil = substr $S0, 0, 1
$I0 = index '$@%&', sigil
if $I0 < 0 goto sigil_done
- substr $S0, 0, 1, ''
+ $S0 = replace $S0, 0, 1, ''
ns[0] = $S0
$S0 = ns[-1]
$S0 = concat sigil, $S0
@@ -468,7 +468,7 @@
.end
-.sub 'quotemod_check' :method
+.sub 'quotemod_check' :method :nsentry
.param string mod
$P0 = find_dynamic_lex '%*QUOTEMOD'
@@ -522,7 +522,7 @@
.end
-.sub 'split_words' :method
+.sub 'split_words' :method :nsentry
.param string words
.local int pos, eos
.local pmc result
@@ -854,111 +854,117 @@
### .include 'gen/hllgrammar-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204683.33533")
+.sub "_block11" :anon :subid("10_1272816829.8573")
.annotate "line", 0
get_hll_global $P14, ["HLL";"Grammar"], "_block13"
capture_lex $P14
.annotate "line", 5
get_hll_global $P14, ["HLL";"Grammar"], "_block13"
capture_lex $P14
- $P296 = $P14()
+ $P339 = $P14()
.annotate "line", 1
- .return ($P296)
+ .return ($P339)
.end
.namespace []
-.sub "" :load :init :subid("post94") :outer("10_1267204683.33533")
+.sub "" :load :init :subid("post103") :outer("10_1272816829.8573")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204683.33533"
+ .const 'Sub' $P12 = "10_1272816829.8573"
.local pmc block
set block, $P12
- $P297 = get_root_global ["parrot"], "P6metaclass"
- $P297."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
+ $P340 = get_root_global ["parrot"], "P6metaclass"
+ $P340."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
.end
.namespace ["HLL";"Grammar"]
-.sub "_block13" :subid("11_1267204683.33533") :outer("10_1267204683.33533")
+.sub "_block13" :subid("11_1272816829.8573") :outer("10_1272816829.8573")
.annotate "line", 5
- .const 'Sub' $P286 = "92_1267204683.33533"
- capture_lex $P286
- .const 'Sub' $P279 = "90_1267204683.33533"
- capture_lex $P279
- .const 'Sub' $P266 = "87_1267204683.33533"
+ .const 'Sub' $P329 = "101_1272816829.8573"
+ capture_lex $P329
+ .const 'Sub' $P322 = "99_1272816829.8573"
+ capture_lex $P322
+ .const 'Sub' $P309 = "96_1272816829.8573"
+ capture_lex $P309
+ .const 'Sub' $P277 = "91_1272816829.8573"
+ capture_lex $P277
+ .const 'Sub' $P271 = "89_1272816829.8573"
+ capture_lex $P271
+ .const 'Sub' $P266 = "87_1272816829.8573"
capture_lex $P266
- .const 'Sub' $P261 = "85_1267204683.33533"
- capture_lex $P261
- .const 'Sub' $P255 = "83_1267204683.33533"
- capture_lex $P255
- .const 'Sub' $P249 = "81_1267204683.33533"
+ .const 'Sub' $P260 = "85_1272816829.8573"
+ capture_lex $P260
+ .const 'Sub' $P254 = "83_1272816829.8573"
+ capture_lex $P254
+ .const 'Sub' $P249 = "81_1272816829.8573"
capture_lex $P249
- .const 'Sub' $P244 = "79_1267204683.33533"
+ .const 'Sub' $P244 = "79_1272816829.8573"
capture_lex $P244
- .const 'Sub' $P239 = "77_1267204683.33533"
+ .const 'Sub' $P239 = "77_1272816829.8573"
capture_lex $P239
- .const 'Sub' $P234 = "75_1267204683.33533"
+ .const 'Sub' $P234 = "75_1272816829.8573"
capture_lex $P234
- .const 'Sub' $P229 = "73_1267204683.33533"
+ .const 'Sub' $P229 = "73_1272816829.8573"
capture_lex $P229
- .const 'Sub' $P224 = "71_1267204683.33533"
+ .const 'Sub' $P224 = "71_1272816829.8573"
capture_lex $P224
- .const 'Sub' $P219 = "69_1267204683.33533"
+ .const 'Sub' $P219 = "69_1272816829.8573"
capture_lex $P219
- .const 'Sub' $P208 = "65_1267204683.33533"
+ .const 'Sub' $P208 = "65_1272816829.8573"
capture_lex $P208
- .const 'Sub' $P195 = "63_1267204683.33533"
+ .const 'Sub' $P195 = "63_1272816829.8573"
capture_lex $P195
- .const 'Sub' $P183 = "61_1267204683.33533"
+ .const 'Sub' $P183 = "61_1272816829.8573"
capture_lex $P183
- .const 'Sub' $P176 = "59_1267204683.33533"
+ .const 'Sub' $P176 = "59_1272816829.8573"
capture_lex $P176
- .const 'Sub' $P167 = "57_1267204683.33533"
+ .const 'Sub' $P167 = "57_1272816829.8573"
capture_lex $P167
- .const 'Sub' $P160 = "55_1267204683.33533"
+ .const 'Sub' $P160 = "55_1272816829.8573"
capture_lex $P160
- .const 'Sub' $P151 = "53_1267204683.33533"
+ .const 'Sub' $P151 = "53_1272816829.8573"
capture_lex $P151
- .const 'Sub' $P144 = "51_1267204683.33533"
+ .const 'Sub' $P144 = "51_1272816829.8573"
capture_lex $P144
- .const 'Sub' $P135 = "49_1267204683.33533"
+ .const 'Sub' $P135 = "49_1272816829.8573"
capture_lex $P135
- .const 'Sub' $P128 = "47_1267204683.33533"
+ .const 'Sub' $P128 = "47_1272816829.8573"
capture_lex $P128
- .const 'Sub' $P121 = "45_1267204683.33533"
+ .const 'Sub' $P121 = "45_1272816829.8573"
capture_lex $P121
- .const 'Sub' $P111 = "43_1267204683.33533"
+ .const 'Sub' $P111 = "43_1272816829.8573"
capture_lex $P111
- .const 'Sub' $P103 = "41_1267204683.33533"
+ .const 'Sub' $P103 = "41_1272816829.8573"
capture_lex $P103
- .const 'Sub' $P93 = "40_1267204683.33533"
+ .const 'Sub' $P93 = "40_1272816829.8573"
capture_lex $P93
- .const 'Sub' $P87 = "38_1267204683.33533"
+ .const 'Sub' $P87 = "38_1272816829.8573"
capture_lex $P87
- .const 'Sub' $P82 = "36_1267204683.33533"
+ .const 'Sub' $P82 = "36_1272816829.8573"
capture_lex $P82
- .const 'Sub' $P74 = "34_1267204683.33533"
+ .const 'Sub' $P74 = "34_1272816829.8573"
capture_lex $P74
- .const 'Sub' $P68 = "32_1267204683.33533"
+ .const 'Sub' $P68 = "32_1272816829.8573"
capture_lex $P68
- .const 'Sub' $P62 = "30_1267204683.33533"
+ .const 'Sub' $P62 = "30_1272816829.8573"
capture_lex $P62
- .const 'Sub' $P56 = "28_1267204683.33533"
+ .const 'Sub' $P56 = "28_1272816829.8573"
capture_lex $P56
- .const 'Sub' $P23 = "14_1267204683.33533"
+ .const 'Sub' $P23 = "14_1272816829.8573"
capture_lex $P23
- .const 'Sub' $P15 = "12_1267204683.33533"
+ .const 'Sub' $P15 = "12_1272816829.8573"
capture_lex $P15
.annotate "line", 33
- .const 'Sub' $P286 = "92_1267204683.33533"
- capture_lex $P286
+ .const 'Sub' $P329 = "101_1272816829.8573"
+ capture_lex $P329
.annotate "line", 5
- .return ($P286)
+ .return ($P329)
.end
.namespace ["HLL";"Grammar"]
-.sub "ws" :subid("12_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "ws" :subid("12_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx16_tgt
.local int rx16_pos
@@ -1042,7 +1048,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws" :subid("13_1267204683.33533") :method
+.sub "!PREFIX__ws" :subid("13_1272816829.8573") :method
.annotate "line", 5
new $P18, "ResizablePMCArray"
push $P18, ""
@@ -1051,7 +1057,7 @@
.namespace ["HLL";"Grammar"]
-.sub "termish" :subid("14_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "termish" :subid("14_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx24_tgt
.local int rx24_pos
@@ -1061,7 +1067,7 @@
.local pmc rx24_cur
(rx24_cur, rx24_pos, rx24_tgt) = self."!cursor_start"()
rx24_cur."!cursor_debug"("START ", "termish")
- rx24_cur."!cursor_caparray"("prefixish", "postfixish")
+ rx24_cur."!cursor_caparray"("postfixish", "prefixish")
.lex unicode:"$\x{a2}", rx24_cur
.local pmc match
.lex "$/", match
@@ -1143,7 +1149,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish" :subid("15_1267204683.33533") :method
+.sub "!PREFIX__termish" :subid("15_1272816829.8573") :method
.annotate "line", 5
new $P26, "ResizablePMCArray"
push $P26, ""
@@ -1152,7 +1158,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term" :subid("16_1267204683.33533") :method
+.sub "term" :subid("16_1272816829.8573") :method
.annotate "line", 13
$P33 = self."!protoregex"("term")
.return ($P33)
@@ -1160,7 +1166,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term" :subid("17_1267204683.33533") :method
+.sub "!PREFIX__term" :subid("17_1272816829.8573") :method
.annotate "line", 13
$P35 = self."!PREFIX__!protoregex"("term")
.return ($P35)
@@ -1168,7 +1174,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infix" :subid("18_1267204683.33533") :method
+.sub "infix" :subid("18_1272816829.8573") :method
.annotate "line", 14
$P37 = self."!protoregex"("infix")
.return ($P37)
@@ -1176,7 +1182,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix" :subid("19_1267204683.33533") :method
+.sub "!PREFIX__infix" :subid("19_1272816829.8573") :method
.annotate "line", 14
$P39 = self."!PREFIX__!protoregex"("infix")
.return ($P39)
@@ -1184,7 +1190,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefix" :subid("20_1267204683.33533") :method
+.sub "prefix" :subid("20_1272816829.8573") :method
.annotate "line", 15
$P41 = self."!protoregex"("prefix")
.return ($P41)
@@ -1192,7 +1198,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix" :subid("21_1267204683.33533") :method
+.sub "!PREFIX__prefix" :subid("21_1272816829.8573") :method
.annotate "line", 15
$P43 = self."!PREFIX__!protoregex"("prefix")
.return ($P43)
@@ -1200,7 +1206,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfix" :subid("22_1267204683.33533") :method
+.sub "postfix" :subid("22_1272816829.8573") :method
.annotate "line", 16
$P45 = self."!protoregex"("postfix")
.return ($P45)
@@ -1208,7 +1214,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix" :subid("23_1267204683.33533") :method
+.sub "!PREFIX__postfix" :subid("23_1272816829.8573") :method
.annotate "line", 16
$P47 = self."!PREFIX__!protoregex"("postfix")
.return ($P47)
@@ -1216,7 +1222,7 @@
.namespace ["HLL";"Grammar"]
-.sub "circumfix" :subid("24_1267204683.33533") :method
+.sub "circumfix" :subid("24_1272816829.8573") :method
.annotate "line", 17
$P49 = self."!protoregex"("circumfix")
.return ($P49)
@@ -1224,7 +1230,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix" :subid("25_1267204683.33533") :method
+.sub "!PREFIX__circumfix" :subid("25_1272816829.8573") :method
.annotate "line", 17
$P51 = self."!PREFIX__!protoregex"("circumfix")
.return ($P51)
@@ -1232,7 +1238,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postcircumfix" :subid("26_1267204683.33533") :method
+.sub "postcircumfix" :subid("26_1272816829.8573") :method
.annotate "line", 18
$P53 = self."!protoregex"("postcircumfix")
.return ($P53)
@@ -1240,7 +1246,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix" :subid("27_1267204683.33533") :method
+.sub "!PREFIX__postcircumfix" :subid("27_1272816829.8573") :method
.annotate "line", 18
$P55 = self."!PREFIX__!protoregex"("postcircumfix")
.return ($P55)
@@ -1248,7 +1254,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>" :subid("28_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "term:sym<circumfix>" :subid("28_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx57_tgt
.local int rx57_pos
@@ -1306,7 +1312,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>" :subid("29_1267204683.33533") :method
+.sub "!PREFIX__term:sym<circumfix>" :subid("29_1272816829.8573") :method
.annotate "line", 5
$P59 = self."!PREFIX__!subrule"("circumfix", "")
new $P60, "ResizablePMCArray"
@@ -1316,7 +1322,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infixish" :subid("30_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "infixish" :subid("30_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx63_tgt
.local int rx63_pos
@@ -1374,7 +1380,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish" :subid("31_1267204683.33533") :method
+.sub "!PREFIX__infixish" :subid("31_1272816829.8573") :method
.annotate "line", 5
$P65 = self."!PREFIX__!subrule"("OPER=infix", "")
new $P66, "ResizablePMCArray"
@@ -1384,7 +1390,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefixish" :subid("32_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "prefixish" :subid("32_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx69_tgt
.local int rx69_pos
@@ -1447,7 +1453,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish" :subid("33_1267204683.33533") :method
+.sub "!PREFIX__prefixish" :subid("33_1272816829.8573") :method
.annotate "line", 5
$P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
new $P72, "ResizablePMCArray"
@@ -1457,7 +1463,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfixish" :subid("34_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "postfixish" :subid("34_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx75_tgt
.local int rx75_pos
@@ -1531,7 +1537,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish" :subid("35_1267204683.33533") :method
+.sub "!PREFIX__postfixish" :subid("35_1272816829.8573") :method
.annotate "line", 5
$P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
$P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1543,7 +1549,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm" :subid("36_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nullterm" :subid("36_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx83_tgt
.local int rx83_pos
@@ -1594,7 +1600,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm" :subid("37_1267204683.33533") :method
+.sub "!PREFIX__nullterm" :subid("37_1272816829.8573") :method
.annotate "line", 5
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -1603,7 +1609,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm_alt" :subid("38_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nullterm_alt" :subid("38_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 5
.local string rx88_tgt
.local int rx88_pos
@@ -1661,7 +1667,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt" :subid("39_1267204683.33533") :method
+.sub "!PREFIX__nullterm_alt" :subid("39_1272816829.8573") :method
.annotate "line", 5
$P90 = self."!PREFIX__!subrule"("term", "")
new $P91, "ResizablePMCArray"
@@ -1671,11 +1677,11 @@
.namespace ["HLL";"Grammar"]
-.sub "nulltermish" :subid("40_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nulltermish" :subid("40_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
new $P95, 'ExceptionHandler'
set_addr $P95, control_94
- $P95."handle_types"(58)
+ $P95."handle_types"(57)
push_eh $P95
.lex "self", self
find_lex $P98, "self"
@@ -1698,7 +1704,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_delimited" :subid("41_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_delimited" :subid("41_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx104_tgt
.local int rx104_pos
@@ -1780,7 +1786,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited" :subid("42_1267204683.33533") :method
+.sub "!PREFIX__quote_delimited" :subid("42_1272816829.8573") :method
.annotate "line", 33
$P106 = self."!PREFIX__!subrule"("starter", "")
new $P107, "ResizablePMCArray"
@@ -1790,7 +1796,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_atom" :subid("43_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_atom" :subid("43_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx112_tgt
.local int rx112_pos
@@ -1881,7 +1887,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom" :subid("44_1267204683.33533") :method
+.sub "!PREFIX__quote_atom" :subid("44_1272816829.8573") :method
.annotate "line", 33
new $P114, "ResizablePMCArray"
push $P114, ""
@@ -1890,7 +1896,7 @@
.namespace ["HLL";"Grammar"]
-.sub "decint" :subid("45_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "decint" :subid("45_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx122_tgt
.local int rx122_pos
@@ -1962,7 +1968,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint" :subid("46_1267204683.33533") :method
+.sub "!PREFIX__decint" :subid("46_1272816829.8573") :method
.annotate "line", 33
new $P124, "ResizablePMCArray"
push $P124, ""
@@ -1971,7 +1977,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexints" :subid("47_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "decints" :subid("47_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx129_tgt
.local int rx129_pos
@@ -1980,7 +1986,7 @@
.local int rx129_rep
.local pmc rx129_cur
(rx129_cur, rx129_pos, rx129_tgt) = self."!cursor_start"()
- rx129_cur."!cursor_debug"("START ", "hexints")
+ rx129_cur."!cursor_debug"("START ", "decints")
rx129_cur."!cursor_caparray"("decint")
.lex unicode:"$\x{a2}", rx129_cur
.local pmc match
@@ -2037,8 +2043,8 @@
goto rxquantr133_loop
rxquantr133_done:
# rx pass
- rx129_cur."!cursor_pass"(rx129_pos, "hexints")
- rx129_cur."!cursor_debug"("PASS ", "hexints", " at pos=", rx129_pos)
+ rx129_cur."!cursor_pass"(rx129_pos, "decints")
+ rx129_cur."!cursor_debug"("PASS ", "decints", " at pos=", rx129_pos)
.return (rx129_cur)
rx129_fail:
.annotate "line", 33
@@ -2048,14 +2054,14 @@
jump $I10
rx129_done:
rx129_cur."!cursor_fail"()
- rx129_cur."!cursor_debug"("FAIL ", "hexints")
+ rx129_cur."!cursor_debug"("FAIL ", "decints")
.return (rx129_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints" :subid("48_1267204683.33533") :method
+.sub "!PREFIX__decints" :subid("48_1272816829.8573") :method
.annotate "line", 33
new $P131, "ResizablePMCArray"
push $P131, ""
@@ -2064,7 +2070,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexint" :subid("49_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "hexint" :subid("49_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx136_tgt
.local int rx136_pos
@@ -2145,7 +2151,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint" :subid("50_1267204683.33533") :method
+.sub "!PREFIX__hexint" :subid("50_1272816829.8573") :method
.annotate "line", 33
new $P138, "ResizablePMCArray"
push $P138, ""
@@ -2154,7 +2160,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexints" :subid("51_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "hexints" :subid("51_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx145_tgt
.local int rx145_pos
@@ -2238,7 +2244,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints" :subid("52_1267204683.33533") :method
+.sub "!PREFIX__hexints" :subid("52_1272816829.8573") :method
.annotate "line", 33
new $P147, "ResizablePMCArray"
push $P147, ""
@@ -2247,7 +2253,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octint" :subid("53_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "octint" :subid("53_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx152_tgt
.local int rx152_pos
@@ -2328,7 +2334,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint" :subid("54_1267204683.33533") :method
+.sub "!PREFIX__octint" :subid("54_1272816829.8573") :method
.annotate "line", 33
new $P154, "ResizablePMCArray"
push $P154, ""
@@ -2337,7 +2343,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octints" :subid("55_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "octints" :subid("55_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx161_tgt
.local int rx161_pos
@@ -2421,7 +2427,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints" :subid("56_1267204683.33533") :method
+.sub "!PREFIX__octints" :subid("56_1272816829.8573") :method
.annotate "line", 33
new $P163, "ResizablePMCArray"
push $P163, ""
@@ -2430,7 +2436,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binint" :subid("57_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "binint" :subid("57_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx168_tgt
.local int rx168_pos
@@ -2511,7 +2517,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint" :subid("58_1267204683.33533") :method
+.sub "!PREFIX__binint" :subid("58_1272816829.8573") :method
.annotate "line", 33
new $P170, "ResizablePMCArray"
push $P170, ""
@@ -2520,7 +2526,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binints" :subid("59_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "binints" :subid("59_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx177_tgt
.local int rx177_pos
@@ -2604,7 +2610,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints" :subid("60_1267204683.33533") :method
+.sub "!PREFIX__binints" :subid("60_1272816829.8573") :method
.annotate "line", 33
new $P179, "ResizablePMCArray"
push $P179, ""
@@ -2613,7 +2619,7 @@
.namespace ["HLL";"Grammar"]
-.sub "integer" :subid("61_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "integer" :subid("61_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx184_tgt
.local int rx184_pos
@@ -2761,7 +2767,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer" :subid("62_1267204683.33533") :method
+.sub "!PREFIX__integer" :subid("62_1272816829.8573") :method
.annotate "line", 33
$P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
$P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2779,7 +2785,7 @@
.namespace ["HLL";"Grammar"]
-.sub "dec_number" :subid("63_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "dec_number" :subid("63_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx196_tgt
.local int rx196_pos
@@ -2958,7 +2964,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number" :subid("64_1267204683.33533") :method
+.sub "!PREFIX__dec_number" :subid("64_1272816829.8573") :method
.annotate "line", 33
new $P198, "ResizablePMCArray"
push $P198, ""
@@ -2969,7 +2975,7 @@
.namespace ["HLL";"Grammar"]
-.sub "escale" :subid("65_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "escale" :subid("65_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx209_tgt
.local int rx209_pos
@@ -3046,7 +3052,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale" :subid("66_1267204683.33533") :method
+.sub "!PREFIX__escale" :subid("66_1272816829.8573") :method
.annotate "line", 33
new $P211, "ResizablePMCArray"
push $P211, "e"
@@ -3056,7 +3062,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape" :subid("67_1267204683.33533") :method
+.sub "quote_escape" :subid("67_1272816829.8573") :method
.annotate "line", 79
$P216 = self."!protoregex"("quote_escape")
.return ($P216)
@@ -3064,7 +3070,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape" :subid("68_1267204683.33533") :method
+.sub "!PREFIX__quote_escape" :subid("68_1272816829.8573") :method
.annotate "line", 79
$P218 = self."!PREFIX__!protoregex"("quote_escape")
.return ($P218)
@@ -3072,7 +3078,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>" :subid("69_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<backslash>" :subid("69_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx220_tgt
.local int rx220_pos
@@ -3134,7 +3140,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1272816829.8573") :method
.annotate "line", 33
new $P222, "ResizablePMCArray"
push $P222, "\\\\"
@@ -3143,7 +3149,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>" :subid("71_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<stopper>" :subid("71_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx225_tgt
.local int rx225_pos
@@ -3212,7 +3218,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1272816829.8573") :method
.annotate "line", 33
new $P227, "ResizablePMCArray"
push $P227, "\\"
@@ -3221,7 +3227,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>" :subid("73_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<bs>" :subid("73_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx230_tgt
.local int rx230_pos
@@ -3283,7 +3289,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1272816829.8573") :method
.annotate "line", 33
new $P232, "ResizablePMCArray"
push $P232, "\\b"
@@ -3292,7 +3298,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>" :subid("75_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<nl>" :subid("75_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx235_tgt
.local int rx235_pos
@@ -3354,7 +3360,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1272816829.8573") :method
.annotate "line", 33
new $P237, "ResizablePMCArray"
push $P237, "\\n"
@@ -3363,7 +3369,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>" :subid("77_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<cr>" :subid("77_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx240_tgt
.local int rx240_pos
@@ -3425,7 +3431,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1272816829.8573") :method
.annotate "line", 33
new $P242, "ResizablePMCArray"
push $P242, "\\r"
@@ -3434,7 +3440,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>" :subid("79_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<tab>" :subid("79_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx245_tgt
.local int rx245_pos
@@ -3496,7 +3502,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1272816829.8573") :method
.annotate "line", 33
new $P247, "ResizablePMCArray"
push $P247, "\\t"
@@ -3505,7 +3511,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>" :subid("81_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<ff>" :subid("81_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
.local string rx250_tgt
.local int rx250_pos
@@ -3514,7 +3520,7 @@
.local int rx250_rep
.local pmc rx250_cur
(rx250_cur, rx250_pos, rx250_tgt) = self."!cursor_start"()
- rx250_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
+ rx250_cur."!cursor_debug"("START ", "quote_escape:sym<ff>")
.lex unicode:"$\x{a2}", rx250_cur
.local pmc match
.lex "$/", match
@@ -3536,57 +3542,21 @@
set_addr $I10, rxscan253_loop
rx250_cur."!mark_push"(0, rx250_pos, $I10)
rxscan253_done:
-.annotate "line", 88
- # rx literal unicode:"\\x"
+.annotate "line", 87
+ # rx literal "\\f"
add $I11, rx250_pos, 2
gt $I11, rx250_eos, rx250_fail
sub $I11, rx250_pos, rx250_off
substr $S10, rx250_tgt, $I11, 2
- ne $S10, unicode:"\\x", rx250_fail
+ ne $S10, "\\f", rx250_fail
add rx250_pos, 2
# rx subrule "quotemod_check" subtype=zerowidth negate=
rx250_cur."!cursor_pos"(rx250_pos)
$P10 = rx250_cur."quotemod_check"("b")
unless $P10, rx250_fail
- alt254_0:
-.annotate "line", 89
- set_addr $I10, alt254_1
- rx250_cur."!mark_push"(0, rx250_pos, $I10)
- # rx subrule "hexint" subtype=capture negate=
- rx250_cur."!cursor_pos"(rx250_pos)
- $P10 = rx250_cur."hexint"()
- unless $P10, rx250_fail
- rx250_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("hexint")
- rx250_pos = $P10."pos"()
- goto alt254_end
- alt254_1:
- # rx literal "["
- add $I11, rx250_pos, 1
- gt $I11, rx250_eos, rx250_fail
- sub $I11, rx250_pos, rx250_off
- substr $S10, rx250_tgt, $I11, 1
- ne $S10, "[", rx250_fail
- add rx250_pos, 1
- # rx subrule "hexints" subtype=capture negate=
- rx250_cur."!cursor_pos"(rx250_pos)
- $P10 = rx250_cur."hexints"()
- unless $P10, rx250_fail
- rx250_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("hexints")
- rx250_pos = $P10."pos"()
- # rx literal "]"
- add $I11, rx250_pos, 1
- gt $I11, rx250_eos, rx250_fail
- sub $I11, rx250_pos, rx250_off
- substr $S10, rx250_tgt, $I11, 1
- ne $S10, "]", rx250_fail
- add rx250_pos, 1
- alt254_end:
-.annotate "line", 87
# rx pass
- rx250_cur."!cursor_pass"(rx250_pos, "quote_escape:sym<hex>")
- rx250_cur."!cursor_debug"("PASS ", "quote_escape:sym<hex>", " at pos=", rx250_pos)
+ rx250_cur."!cursor_pass"(rx250_pos, "quote_escape:sym<ff>")
+ rx250_cur."!cursor_debug"("PASS ", "quote_escape:sym<ff>", " at pos=", rx250_pos)
.return (rx250_cur)
rx250_fail:
.annotate "line", 33
@@ -3596,211 +3566,238 @@
jump $I10
rx250_done:
rx250_cur."!cursor_fail"()
- rx250_cur."!cursor_debug"("FAIL ", "quote_escape:sym<hex>")
+ rx250_cur."!cursor_debug"("FAIL ", "quote_escape:sym<ff>")
.return (rx250_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>" :subid("82_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<ff>" :subid("82_1272816829.8573") :method
.annotate "line", 33
new $P252, "ResizablePMCArray"
- push $P252, unicode:"\\x"
+ push $P252, "\\f"
.return ($P252)
.end
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>" :subid("83_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<hex>" :subid("83_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
- .local string rx256_tgt
- .local int rx256_pos
- .local int rx256_off
- .local int rx256_eos
- .local int rx256_rep
- .local pmc rx256_cur
- (rx256_cur, rx256_pos, rx256_tgt) = self."!cursor_start"()
- rx256_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
- .lex unicode:"$\x{a2}", rx256_cur
+ .local string rx255_tgt
+ .local int rx255_pos
+ .local int rx255_off
+ .local int rx255_eos
+ .local int rx255_rep
+ .local pmc rx255_cur
+ (rx255_cur, rx255_pos, rx255_tgt) = self."!cursor_start"()
+ rx255_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
+ .lex unicode:"$\x{a2}", rx255_cur
.local pmc match
.lex "$/", match
- length rx256_eos, rx256_tgt
- set rx256_off, 0
- lt rx256_pos, 2, rx256_start
- sub rx256_off, rx256_pos, 1
- substr rx256_tgt, rx256_tgt, rx256_off
- rx256_start:
+ length rx255_eos, rx255_tgt
+ set rx255_off, 0
+ lt rx255_pos, 2, rx255_start
+ sub rx255_off, rx255_pos, 1
+ substr rx255_tgt, rx255_tgt, rx255_off
+ rx255_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan259_done
- goto rxscan259_scan
- rxscan259_loop:
- ($P10) = rx256_cur."from"()
+ ne $I10, -1, rxscan258_done
+ goto rxscan258_scan
+ rxscan258_loop:
+ ($P10) = rx255_cur."from"()
inc $P10
- set rx256_pos, $P10
- ge rx256_pos, rx256_eos, rxscan259_done
- rxscan259_scan:
- set_addr $I10, rxscan259_loop
- rx256_cur."!mark_push"(0, rx256_pos, $I10)
- rxscan259_done:
-.annotate "line", 92
- # rx literal "\\o"
- add $I11, rx256_pos, 2
- gt $I11, rx256_eos, rx256_fail
- sub $I11, rx256_pos, rx256_off
- substr $S10, rx256_tgt, $I11, 2
- ne $S10, "\\o", rx256_fail
- add rx256_pos, 2
+ set rx255_pos, $P10
+ ge rx255_pos, rx255_eos, rxscan258_done
+ rxscan258_scan:
+ set_addr $I10, rxscan258_loop
+ rx255_cur."!mark_push"(0, rx255_pos, $I10)
+ rxscan258_done:
+.annotate "line", 89
+ # rx literal unicode:"\\x"
+ add $I11, rx255_pos, 2
+ gt $I11, rx255_eos, rx255_fail
+ sub $I11, rx255_pos, rx255_off
+ substr $S10, rx255_tgt, $I11, 2
+ ne $S10, unicode:"\\x", rx255_fail
+ add rx255_pos, 2
# rx subrule "quotemod_check" subtype=zerowidth negate=
- rx256_cur."!cursor_pos"(rx256_pos)
- $P10 = rx256_cur."quotemod_check"("b")
- unless $P10, rx256_fail
- alt260_0:
-.annotate "line", 93
- set_addr $I10, alt260_1
- rx256_cur."!mark_push"(0, rx256_pos, $I10)
- # rx subrule "octint" subtype=capture negate=
- rx256_cur."!cursor_pos"(rx256_pos)
- $P10 = rx256_cur."octint"()
- unless $P10, rx256_fail
- rx256_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("octint")
- rx256_pos = $P10."pos"()
- goto alt260_end
- alt260_1:
+ rx255_cur."!cursor_pos"(rx255_pos)
+ $P10 = rx255_cur."quotemod_check"("b")
+ unless $P10, rx255_fail
+ alt259_0:
+.annotate "line", 90
+ set_addr $I10, alt259_1
+ rx255_cur."!mark_push"(0, rx255_pos, $I10)
+ # rx subrule "hexint" subtype=capture negate=
+ rx255_cur."!cursor_pos"(rx255_pos)
+ $P10 = rx255_cur."hexint"()
+ unless $P10, rx255_fail
+ rx255_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("hexint")
+ rx255_pos = $P10."pos"()
+ goto alt259_end
+ alt259_1:
# rx literal "["
- add $I11, rx256_pos, 1
- gt $I11, rx256_eos, rx256_fail
- sub $I11, rx256_pos, rx256_off
- substr $S10, rx256_tgt, $I11, 1
- ne $S10, "[", rx256_fail
- add rx256_pos, 1
- # rx subrule "octints" subtype=capture negate=
- rx256_cur."!cursor_pos"(rx256_pos)
- $P10 = rx256_cur."octints"()
- unless $P10, rx256_fail
- rx256_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("octints")
- rx256_pos = $P10."pos"()
+ add $I11, rx255_pos, 1
+ gt $I11, rx255_eos, rx255_fail
+ sub $I11, rx255_pos, rx255_off
+ substr $S10, rx255_tgt, $I11, 1
+ ne $S10, "[", rx255_fail
+ add rx255_pos, 1
+ # rx subrule "hexints" subtype=capture negate=
+ rx255_cur."!cursor_pos"(rx255_pos)
+ $P10 = rx255_cur."hexints"()
+ unless $P10, rx255_fail
+ rx255_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("hexints")
+ rx255_pos = $P10."pos"()
# rx literal "]"
- add $I11, rx256_pos, 1
- gt $I11, rx256_eos, rx256_fail
- sub $I11, rx256_pos, rx256_off
- substr $S10, rx256_tgt, $I11, 1
- ne $S10, "]", rx256_fail
- add rx256_pos, 1
- alt260_end:
-.annotate "line", 91
+ add $I11, rx255_pos, 1
+ gt $I11, rx255_eos, rx255_fail
+ sub $I11, rx255_pos, rx255_off
+ substr $S10, rx255_tgt, $I11, 1
+ ne $S10, "]", rx255_fail
+ add rx255_pos, 1
+ alt259_end:
+.annotate "line", 88
# rx pass
- rx256_cur."!cursor_pass"(rx256_pos, "quote_escape:sym<oct>")
- rx256_cur."!cursor_debug"("PASS ", "quote_escape:sym<oct>", " at pos=", rx256_pos)
- .return (rx256_cur)
- rx256_fail:
-.annotate "line", 33
- (rx256_rep, rx256_pos, $I10, $P10) = rx256_cur."!mark_fail"(0)
- lt rx256_pos, -1, rx256_done
- eq rx256_pos, -1, rx256_fail
+ rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<hex>")
+ rx255_cur."!cursor_debug"("PASS ", "quote_escape:sym<hex>", " at pos=", rx255_pos)
+ .return (rx255_cur)
+ rx255_fail:
+.annotate "line", 33
+ (rx255_rep, rx255_pos, $I10, $P10) = rx255_cur."!mark_fail"(0)
+ lt rx255_pos, -1, rx255_done
+ eq rx255_pos, -1, rx255_fail
jump $I10
- rx256_done:
- rx256_cur."!cursor_fail"()
- rx256_cur."!cursor_debug"("FAIL ", "quote_escape:sym<oct>")
- .return (rx256_cur)
+ rx255_done:
+ rx255_cur."!cursor_fail"()
+ rx255_cur."!cursor_debug"("FAIL ", "quote_escape:sym<hex>")
+ .return (rx255_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>" :subid("84_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<hex>" :subid("84_1272816829.8573") :method
.annotate "line", 33
- new $P258, "ResizablePMCArray"
- push $P258, "\\o"
- .return ($P258)
+ new $P257, "ResizablePMCArray"
+ push $P257, unicode:"\\x"
+ .return ($P257)
.end
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>" :subid("85_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<oct>" :subid("85_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
- .local string rx262_tgt
- .local int rx262_pos
- .local int rx262_off
- .local int rx262_eos
- .local int rx262_rep
- .local pmc rx262_cur
- (rx262_cur, rx262_pos, rx262_tgt) = self."!cursor_start"()
- rx262_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
- .lex unicode:"$\x{a2}", rx262_cur
+ .local string rx261_tgt
+ .local int rx261_pos
+ .local int rx261_off
+ .local int rx261_eos
+ .local int rx261_rep
+ .local pmc rx261_cur
+ (rx261_cur, rx261_pos, rx261_tgt) = self."!cursor_start"()
+ rx261_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
+ .lex unicode:"$\x{a2}", rx261_cur
.local pmc match
.lex "$/", match
- length rx262_eos, rx262_tgt
- set rx262_off, 0
- lt rx262_pos, 2, rx262_start
- sub rx262_off, rx262_pos, 1
- substr rx262_tgt, rx262_tgt, rx262_off
- rx262_start:
+ length rx261_eos, rx261_tgt
+ set rx261_off, 0
+ lt rx261_pos, 2, rx261_start
+ sub rx261_off, rx261_pos, 1
+ substr rx261_tgt, rx261_tgt, rx261_off
+ rx261_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan265_done
- goto rxscan265_scan
- rxscan265_loop:
- ($P10) = rx262_cur."from"()
+ ne $I10, -1, rxscan264_done
+ goto rxscan264_scan
+ rxscan264_loop:
+ ($P10) = rx261_cur."from"()
inc $P10
- set rx262_pos, $P10
- ge rx262_pos, rx262_eos, rxscan265_done
- rxscan265_scan:
- set_addr $I10, rxscan265_loop
- rx262_cur."!mark_push"(0, rx262_pos, $I10)
- rxscan265_done:
-.annotate "line", 95
- # rx literal "\\c"
- add $I11, rx262_pos, 2
- gt $I11, rx262_eos, rx262_fail
- sub $I11, rx262_pos, rx262_off
- substr $S10, rx262_tgt, $I11, 2
- ne $S10, "\\c", rx262_fail
- add rx262_pos, 2
+ set rx261_pos, $P10
+ ge rx261_pos, rx261_eos, rxscan264_done
+ rxscan264_scan:
+ set_addr $I10, rxscan264_loop
+ rx261_cur."!mark_push"(0, rx261_pos, $I10)
+ rxscan264_done:
+.annotate "line", 93
+ # rx literal "\\o"
+ add $I11, rx261_pos, 2
+ gt $I11, rx261_eos, rx261_fail
+ sub $I11, rx261_pos, rx261_off
+ substr $S10, rx261_tgt, $I11, 2
+ ne $S10, "\\o", rx261_fail
+ add rx261_pos, 2
# rx subrule "quotemod_check" subtype=zerowidth negate=
- rx262_cur."!cursor_pos"(rx262_pos)
- $P10 = rx262_cur."quotemod_check"("b")
- unless $P10, rx262_fail
- # rx subrule "charspec" subtype=capture negate=
- rx262_cur."!cursor_pos"(rx262_pos)
- $P10 = rx262_cur."charspec"()
- unless $P10, rx262_fail
- rx262_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("charspec")
- rx262_pos = $P10."pos"()
+ rx261_cur."!cursor_pos"(rx261_pos)
+ $P10 = rx261_cur."quotemod_check"("b")
+ unless $P10, rx261_fail
+ alt265_0:
+.annotate "line", 94
+ set_addr $I10, alt265_1
+ rx261_cur."!mark_push"(0, rx261_pos, $I10)
+ # rx subrule "octint" subtype=capture negate=
+ rx261_cur."!cursor_pos"(rx261_pos)
+ $P10 = rx261_cur."octint"()
+ unless $P10, rx261_fail
+ rx261_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("octint")
+ rx261_pos = $P10."pos"()
+ goto alt265_end
+ alt265_1:
+ # rx literal "["
+ add $I11, rx261_pos, 1
+ gt $I11, rx261_eos, rx261_fail
+ sub $I11, rx261_pos, rx261_off
+ substr $S10, rx261_tgt, $I11, 1
+ ne $S10, "[", rx261_fail
+ add rx261_pos, 1
+ # rx subrule "octints" subtype=capture negate=
+ rx261_cur."!cursor_pos"(rx261_pos)
+ $P10 = rx261_cur."octints"()
+ unless $P10, rx261_fail
+ rx261_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("octints")
+ rx261_pos = $P10."pos"()
+ # rx literal "]"
+ add $I11, rx261_pos, 1
+ gt $I11, rx261_eos, rx261_fail
+ sub $I11, rx261_pos, rx261_off
+ substr $S10, rx261_tgt, $I11, 1
+ ne $S10, "]", rx261_fail
+ add rx261_pos, 1
+ alt265_end:
+.annotate "line", 92
# rx pass
- rx262_cur."!cursor_pass"(rx262_pos, "quote_escape:sym<chr>")
- rx262_cur."!cursor_debug"("PASS ", "quote_escape:sym<chr>", " at pos=", rx262_pos)
- .return (rx262_cur)
- rx262_fail:
-.annotate "line", 33
- (rx262_rep, rx262_pos, $I10, $P10) = rx262_cur."!mark_fail"(0)
- lt rx262_pos, -1, rx262_done
- eq rx262_pos, -1, rx262_fail
+ rx261_cur."!cursor_pass"(rx261_pos, "quote_escape:sym<oct>")
+ rx261_cur."!cursor_debug"("PASS ", "quote_escape:sym<oct>", " at pos=", rx261_pos)
+ .return (rx261_cur)
+ rx261_fail:
+.annotate "line", 33
+ (rx261_rep, rx261_pos, $I10, $P10) = rx261_cur."!mark_fail"(0)
+ lt rx261_pos, -1, rx261_done
+ eq rx261_pos, -1, rx261_fail
jump $I10
- rx262_done:
- rx262_cur."!cursor_fail"()
- rx262_cur."!cursor_debug"("FAIL ", "quote_escape:sym<chr>")
- .return (rx262_cur)
+ rx261_done:
+ rx261_cur."!cursor_fail"()
+ rx261_cur."!cursor_debug"("FAIL ", "quote_escape:sym<oct>")
+ .return (rx261_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>" :subid("86_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<oct>" :subid("86_1272816829.8573") :method
.annotate "line", 33
- new $P264, "ResizablePMCArray"
- push $P264, "\\c"
- .return ($P264)
+ new $P263, "ResizablePMCArray"
+ push $P263, "\\o"
+ .return ($P263)
.end
.namespace ["HLL";"Grammar"]
-.sub "charname" :subid("87_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<chr>" :subid("87_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
- .const 'Sub' $P276 = "89_1267204683.33533"
- capture_lex $P276
.local string rx267_tgt
.local int rx267_pos
.local int rx267_off
@@ -3808,7 +3805,7 @@
.local int rx267_rep
.local pmc rx267_cur
(rx267_cur, rx267_pos, rx267_tgt) = self."!cursor_start"()
- rx267_cur."!cursor_debug"("START ", "charname")
+ rx267_cur."!cursor_debug"("START ", "quote_escape:sym<chr>")
.lex unicode:"$\x{a2}", rx267_cur
.local pmc match
.lex "$/", match
@@ -3819,73 +3816,39 @@
substr rx267_tgt, rx267_tgt, rx267_off
rx267_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan271_done
- goto rxscan271_scan
- rxscan271_loop:
+ ne $I10, -1, rxscan270_done
+ goto rxscan270_scan
+ rxscan270_loop:
($P10) = rx267_cur."from"()
inc $P10
set rx267_pos, $P10
- ge rx267_pos, rx267_eos, rxscan271_done
- rxscan271_scan:
- set_addr $I10, rxscan271_loop
- rx267_cur."!mark_push"(0, rx267_pos, $I10)
- rxscan271_done:
- alt272_0:
-.annotate "line", 97
- set_addr $I10, alt272_1
+ ge rx267_pos, rx267_eos, rxscan270_done
+ rxscan270_scan:
+ set_addr $I10, rxscan270_loop
rx267_cur."!mark_push"(0, rx267_pos, $I10)
-.annotate "line", 98
- # rx subrule "integer" subtype=capture negate=
+ rxscan270_done:
+.annotate "line", 96
+ # rx literal "\\c"
+ add $I11, rx267_pos, 2
+ gt $I11, rx267_eos, rx267_fail
+ sub $I11, rx267_pos, rx267_off
+ substr $S10, rx267_tgt, $I11, 2
+ ne $S10, "\\c", rx267_fail
+ add rx267_pos, 2
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
rx267_cur."!cursor_pos"(rx267_pos)
- $P10 = rx267_cur."integer"()
+ $P10 = rx267_cur."quotemod_check"("b")
unless $P10, rx267_fail
- rx267_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("integer")
- rx267_pos = $P10."pos"()
- goto alt272_end
- alt272_1:
-.annotate "line", 99
- # rx enumcharlist negate=0
- ge rx267_pos, rx267_eos, rx267_fail
- sub $I10, rx267_pos, rx267_off
- substr $S10, rx267_tgt, $I10, 1
- index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
- lt $I11, 0, rx267_fail
- inc rx267_pos
- # rx rxquantf273 ** 0..*
- set_addr $I10, rxquantf273_loop
- rx267_cur."!mark_push"(0, rx267_pos, $I10)
- goto rxquantf273_done
- rxquantf273_loop:
- # rx enumcharlist negate=1
- ge rx267_pos, rx267_eos, rx267_fail
- sub $I10, rx267_pos, rx267_off
- substr $S10, rx267_tgt, $I10, 1
- index $I11, "],#", $S10
- ge $I11, 0, rx267_fail
- inc rx267_pos
- set_addr $I10, rxquantf273_loop
- rx267_cur."!mark_push"($I274, rx267_pos, $I10)
- rxquantf273_done:
- # rx enumcharlist negate=0
- ge rx267_pos, rx267_eos, rx267_fail
- sub $I10, rx267_pos, rx267_off
- substr $S10, rx267_tgt, $I10, 1
- index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
- lt $I11, 0, rx267_fail
- inc rx267_pos
-.annotate "line", 100
- # rx subrule "before" subtype=zerowidth negate=
+ # rx subrule "charspec" subtype=capture negate=
rx267_cur."!cursor_pos"(rx267_pos)
- .const 'Sub' $P276 = "89_1267204683.33533"
- capture_lex $P276
- $P10 = rx267_cur."before"($P276)
+ $P10 = rx267_cur."charspec"()
unless $P10, rx267_fail
- alt272_end:
-.annotate "line", 97
+ rx267_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("charspec")
+ rx267_pos = $P10."pos"()
# rx pass
- rx267_cur."!cursor_pass"(rx267_pos, "charname")
- rx267_cur."!cursor_debug"("PASS ", "charname", " at pos=", rx267_pos)
+ rx267_cur."!cursor_pass"(rx267_pos, "quote_escape:sym<chr>")
+ rx267_cur."!cursor_debug"("PASS ", "quote_escape:sym<chr>", " at pos=", rx267_pos)
.return (rx267_cur)
rx267_fail:
.annotate "line", 33
@@ -3895,499 +3858,954 @@
jump $I10
rx267_done:
rx267_cur."!cursor_fail"()
- rx267_cur."!cursor_debug"("FAIL ", "charname")
+ rx267_cur."!cursor_debug"("FAIL ", "quote_escape:sym<chr>")
.return (rx267_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname" :subid("88_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<chr>" :subid("88_1272816829.8573") :method
.annotate "line", 33
- $P269 = self."!PREFIX__!subrule"("integer", "")
- new $P270, "ResizablePMCArray"
- push $P270, "Z"
- push $P270, "Y"
- push $P270, "X"
- push $P270, "W"
- push $P270, "V"
- push $P270, "U"
- push $P270, "T"
- push $P270, "S"
- push $P270, "R"
- push $P270, "Q"
- push $P270, "P"
- push $P270, "O"
- push $P270, "N"
- push $P270, "M"
- push $P270, "L"
- push $P270, "K"
- push $P270, "J"
- push $P270, "I"
- push $P270, "H"
- push $P270, "G"
- push $P270, "F"
- push $P270, "E"
- push $P270, "D"
- push $P270, "C"
- push $P270, "B"
- push $P270, "A"
- push $P270, "z"
- push $P270, "y"
- push $P270, "x"
- push $P270, "w"
- push $P270, "v"
- push $P270, "u"
- push $P270, "t"
- push $P270, "s"
- push $P270, "r"
- push $P270, "q"
- push $P270, "p"
- push $P270, "o"
- push $P270, "n"
- push $P270, "m"
- push $P270, "l"
- push $P270, "k"
- push $P270, "j"
- push $P270, "i"
- push $P270, "h"
- push $P270, "g"
- push $P270, "f"
- push $P270, "e"
- push $P270, "d"
- push $P270, "c"
- push $P270, "b"
- push $P270, "a"
- push $P270, $P269
- .return ($P270)
+ new $P269, "ResizablePMCArray"
+ push $P269, "\\c"
+ .return ($P269)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<0>" :subid("89_1272816829.8573") :method :outer("11_1272816829.8573")
+.annotate "line", 33
+ .local string rx272_tgt
+ .local int rx272_pos
+ .local int rx272_off
+ .local int rx272_eos
+ .local int rx272_rep
+ .local pmc rx272_cur
+ (rx272_cur, rx272_pos, rx272_tgt) = self."!cursor_start"()
+ rx272_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
+ .lex unicode:"$\x{a2}", rx272_cur
+ .local pmc match
+ .lex "$/", match
+ length rx272_eos, rx272_tgt
+ set rx272_off, 0
+ lt rx272_pos, 2, rx272_start
+ sub rx272_off, rx272_pos, 1
+ substr rx272_tgt, rx272_tgt, rx272_off
+ rx272_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan275_done
+ goto rxscan275_scan
+ rxscan275_loop:
+ ($P10) = rx272_cur."from"()
+ inc $P10
+ set rx272_pos, $P10
+ ge rx272_pos, rx272_eos, rxscan275_done
+ rxscan275_scan:
+ set_addr $I10, rxscan275_loop
+ rx272_cur."!mark_push"(0, rx272_pos, $I10)
+ rxscan275_done:
+.annotate "line", 97
+ # rx literal "\\"
+ add $I11, rx272_pos, 1
+ gt $I11, rx272_eos, rx272_fail
+ sub $I11, rx272_pos, rx272_off
+ substr $S10, rx272_tgt, $I11, 1
+ ne $S10, "\\", rx272_fail
+ add rx272_pos, 1
+ # rx subcapture "sym"
+ set_addr $I10, rxcap_276_fail
+ rx272_cur."!mark_push"(0, rx272_pos, $I10)
+ # rx literal "0"
+ add $I11, rx272_pos, 1
+ gt $I11, rx272_eos, rx272_fail
+ sub $I11, rx272_pos, rx272_off
+ substr $S10, rx272_tgt, $I11, 1
+ ne $S10, "0", rx272_fail
+ add rx272_pos, 1
+ set_addr $I10, rxcap_276_fail
+ ($I12, $I11) = rx272_cur."!mark_peek"($I10)
+ rx272_cur."!cursor_pos"($I11)
+ ($P10) = rx272_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx272_pos, "")
+ rx272_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("sym")
+ goto rxcap_276_done
+ rxcap_276_fail:
+ goto rx272_fail
+ rxcap_276_done:
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx272_cur."!cursor_pos"(rx272_pos)
+ $P10 = rx272_cur."quotemod_check"("b")
+ unless $P10, rx272_fail
+ # rx pass
+ rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<0>")
+ rx272_cur."!cursor_debug"("PASS ", "quote_escape:sym<0>", " at pos=", rx272_pos)
+ .return (rx272_cur)
+ rx272_fail:
+.annotate "line", 33
+ (rx272_rep, rx272_pos, $I10, $P10) = rx272_cur."!mark_fail"(0)
+ lt rx272_pos, -1, rx272_done
+ eq rx272_pos, -1, rx272_fail
+ jump $I10
+ rx272_done:
+ rx272_cur."!cursor_fail"()
+ rx272_cur."!cursor_debug"("FAIL ", "quote_escape:sym<0>")
+ .return (rx272_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<0>" :subid("90_1272816829.8573") :method
+.annotate "line", 33
+ new $P274, "ResizablePMCArray"
+ push $P274, "\\0"
+ .return ($P274)
.end
.namespace ["HLL";"Grammar"]
-.sub "_block275" :anon :subid("89_1267204683.33533") :method :outer("87_1267204683.33533")
+.sub "quote_escape:sym<misc>" :subid("91_1272816829.8573") :method :outer("11_1272816829.8573")
+.annotate "line", 33
+ .const 'Sub' $P297 = "95_1272816829.8573"
+ capture_lex $P297
+ .const 'Sub' $P290 = "94_1272816829.8573"
+ capture_lex $P290
+ .const 'Sub' $P285 = "93_1272816829.8573"
+ capture_lex $P285
+ .local string rx278_tgt
+ .local int rx278_pos
+ .local int rx278_off
+ .local int rx278_eos
+ .local int rx278_rep
+ .local pmc rx278_cur
+ (rx278_cur, rx278_pos, rx278_tgt) = self."!cursor_start"()
+ rx278_cur."!cursor_debug"("START ", "quote_escape:sym<misc>")
+ .lex unicode:"$\x{a2}", rx278_cur
+ .local pmc match
+ .lex "$/", match
+ length rx278_eos, rx278_tgt
+ set rx278_off, 0
+ lt rx278_pos, 2, rx278_start
+ sub rx278_off, rx278_pos, 1
+ substr rx278_tgt, rx278_tgt, rx278_off
+ rx278_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan281_done
+ goto rxscan281_scan
+ rxscan281_loop:
+ ($P10) = rx278_cur."from"()
+ inc $P10
+ set rx278_pos, $P10
+ ge rx278_pos, rx278_eos, rxscan281_done
+ rxscan281_scan:
+ set_addr $I10, rxscan281_loop
+ rx278_cur."!mark_push"(0, rx278_pos, $I10)
+ rxscan281_done:
+.annotate "line", 98
+ rx278_cur."!cursor_pos"(rx278_pos)
+ find_lex $P282, unicode:"$\x{a2}"
+ $P283 = $P282."MATCH"()
+ store_lex "$/", $P283
+.annotate "line", 99
+ .const 'Sub' $P285 = "93_1272816829.8573"
+ capture_lex $P285
+ $P286 = $P285()
+ # rx literal "\\"
+ add $I11, rx278_pos, 1
+ gt $I11, rx278_eos, rx278_fail
+ sub $I11, rx278_pos, rx278_off
+ substr $S10, rx278_tgt, $I11, 1
+ ne $S10, "\\", rx278_fail
+ add rx278_pos, 1
+ alt287_0:
.annotate "line", 100
- .local string rx277_tgt
- .local int rx277_pos
- .local int rx277_off
- .local int rx277_eos
- .local int rx277_rep
- .local pmc rx277_cur
- (rx277_cur, rx277_pos, rx277_tgt) = self."!cursor_start"()
- rx277_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx277_cur
+ set_addr $I10, alt287_1
+ rx278_cur."!mark_push"(0, rx278_pos, $I10)
+.annotate "line", 101
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx278_cur."!cursor_pos"(rx278_pos)
+ $P10 = rx278_cur."quotemod_check"("b")
+ unless $P10, rx278_fail
+ alt288_0:
+.annotate "line", 102
+ set_addr $I10, alt288_1
+ rx278_cur."!mark_push"(0, rx278_pos, $I10)
+.annotate "line", 103
+ # rx subrule $P290 subtype=capture negate=
+ rx278_cur."!cursor_pos"(rx278_pos)
+ .const 'Sub' $P290 = "94_1272816829.8573"
+ capture_lex $P290
+ $P10 = rx278_cur.$P290()
+ unless $P10, rx278_fail
+ rx278_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("textqq")
+ rx278_pos = $P10."pos"()
+ goto alt288_end
+ alt288_1:
+.annotate "line", 104
+ # rx subcapture "x"
+ set_addr $I10, rxcap_293_fail
+ rx278_cur."!mark_push"(0, rx278_pos, $I10)
+ # rx charclass w
+ ge rx278_pos, rx278_eos, rx278_fail
+ sub $I10, rx278_pos, rx278_off
+ is_cclass $I11, 8192, rx278_tgt, $I10
+ unless $I11, rx278_fail
+ inc rx278_pos
+ set_addr $I10, rxcap_293_fail
+ ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+ rx278_cur."!cursor_pos"($I11)
+ ($P10) = rx278_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx278_pos, "")
+ rx278_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("x")
+ goto rxcap_293_done
+ rxcap_293_fail:
+ goto rx278_fail
+ rxcap_293_done:
+ rx278_cur."!cursor_pos"(rx278_pos)
+ find_lex $P294, unicode:"$\x{a2}"
+ $P295 = $P294."MATCH"()
+ store_lex "$/", $P295
+ .const 'Sub' $P297 = "95_1272816829.8573"
+ capture_lex $P297
+ $P307 = $P297()
+ alt288_end:
+.annotate "line", 101
+ goto alt287_end
+ alt287_1:
+.annotate "line", 106
+ # rx subcapture "textq"
+ set_addr $I10, rxcap_308_fail
+ rx278_cur."!mark_push"(0, rx278_pos, $I10)
+ # rx charclass .
+ ge rx278_pos, rx278_eos, rx278_fail
+ inc rx278_pos
+ set_addr $I10, rxcap_308_fail
+ ($I12, $I11) = rx278_cur."!mark_peek"($I10)
+ rx278_cur."!cursor_pos"($I11)
+ ($P10) = rx278_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx278_pos, "")
+ rx278_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("textq")
+ goto rxcap_308_done
+ rxcap_308_fail:
+ goto rx278_fail
+ rxcap_308_done:
+ alt287_end:
+.annotate "line", 98
+ # rx pass
+ rx278_cur."!cursor_pass"(rx278_pos, "quote_escape:sym<misc>")
+ rx278_cur."!cursor_debug"("PASS ", "quote_escape:sym<misc>", " at pos=", rx278_pos)
+ .return (rx278_cur)
+ rx278_fail:
+.annotate "line", 33
+ (rx278_rep, rx278_pos, $I10, $P10) = rx278_cur."!mark_fail"(0)
+ lt rx278_pos, -1, rx278_done
+ eq rx278_pos, -1, rx278_fail
+ jump $I10
+ rx278_done:
+ rx278_cur."!cursor_fail"()
+ rx278_cur."!cursor_debug"("FAIL ", "quote_escape:sym<misc>")
+ .return (rx278_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<misc>" :subid("92_1272816829.8573") :method
+.annotate "line", 33
+ new $P280, "ResizablePMCArray"
+ push $P280, ""
+ .return ($P280)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block284" :anon :subid("93_1272816829.8573") :outer("91_1272816829.8573")
+.annotate "line", 99
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block289" :anon :subid("94_1272816829.8573") :method :outer("91_1272816829.8573")
+.annotate "line", 103
+ .local string rx291_tgt
+ .local int rx291_pos
+ .local int rx291_off
+ .local int rx291_eos
+ .local int rx291_rep
+ .local pmc rx291_cur
+ (rx291_cur, rx291_pos, rx291_tgt) = self."!cursor_start"()
+ rx291_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx291_cur
+ .local pmc match
+ .lex "$/", match
+ length rx291_eos, rx291_tgt
+ set rx291_off, 0
+ lt rx291_pos, 2, rx291_start
+ sub rx291_off, rx291_pos, 1
+ substr rx291_tgt, rx291_tgt, rx291_off
+ rx291_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan292_done
+ goto rxscan292_scan
+ rxscan292_loop:
+ ($P10) = rx291_cur."from"()
+ inc $P10
+ set rx291_pos, $P10
+ ge rx291_pos, rx291_eos, rxscan292_done
+ rxscan292_scan:
+ set_addr $I10, rxscan292_loop
+ rx291_cur."!mark_push"(0, rx291_pos, $I10)
+ rxscan292_done:
+ # rx charclass W
+ ge rx291_pos, rx291_eos, rx291_fail
+ sub $I10, rx291_pos, rx291_off
+ is_cclass $I11, 8192, rx291_tgt, $I10
+ if $I11, rx291_fail
+ inc rx291_pos
+ # rx pass
+ rx291_cur."!cursor_pass"(rx291_pos, "")
+ rx291_cur."!cursor_debug"("PASS ", "", " at pos=", rx291_pos)
+ .return (rx291_cur)
+ rx291_fail:
+ (rx291_rep, rx291_pos, $I10, $P10) = rx291_cur."!mark_fail"(0)
+ lt rx291_pos, -1, rx291_done
+ eq rx291_pos, -1, rx291_fail
+ jump $I10
+ rx291_done:
+ rx291_cur."!cursor_fail"()
+ rx291_cur."!cursor_debug"("FAIL ", "")
+ .return (rx291_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block296" :anon :subid("95_1272816829.8573") :outer("91_1272816829.8573")
+.annotate "line", 104
+ find_lex $P298, "$/"
+ $P299 = $P298."CURSOR"()
+ new $P300, "String"
+ assign $P300, "Unrecognized backslash sequence: '\\"
+ find_lex $P301, "$/"
+ unless_null $P301, vivify_104
+ $P301 = root_new ['parrot';'Hash']
+ vivify_104:
+ set $P302, $P301["x"]
+ unless_null $P302, vivify_105
+ new $P302, "Undef"
+ vivify_105:
+ $S303 = $P302."Str"()
+ concat $P304, $P300, $S303
+ concat $P305, $P304, "'"
+ $P306 = $P299."panic"($P305)
+ .return ($P306)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charname" :subid("96_1272816829.8573") :method :outer("11_1272816829.8573")
+.annotate "line", 33
+ .const 'Sub' $P319 = "98_1272816829.8573"
+ capture_lex $P319
+ .local string rx310_tgt
+ .local int rx310_pos
+ .local int rx310_off
+ .local int rx310_eos
+ .local int rx310_rep
+ .local pmc rx310_cur
+ (rx310_cur, rx310_pos, rx310_tgt) = self."!cursor_start"()
+ rx310_cur."!cursor_debug"("START ", "charname")
+ .lex unicode:"$\x{a2}", rx310_cur
+ .local pmc match
+ .lex "$/", match
+ length rx310_eos, rx310_tgt
+ set rx310_off, 0
+ lt rx310_pos, 2, rx310_start
+ sub rx310_off, rx310_pos, 1
+ substr rx310_tgt, rx310_tgt, rx310_off
+ rx310_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan314_done
+ goto rxscan314_scan
+ rxscan314_loop:
+ ($P10) = rx310_cur."from"()
+ inc $P10
+ set rx310_pos, $P10
+ ge rx310_pos, rx310_eos, rxscan314_done
+ rxscan314_scan:
+ set_addr $I10, rxscan314_loop
+ rx310_cur."!mark_push"(0, rx310_pos, $I10)
+ rxscan314_done:
+ alt315_0:
+.annotate "line", 110
+ set_addr $I10, alt315_1
+ rx310_cur."!mark_push"(0, rx310_pos, $I10)
+.annotate "line", 111
+ # rx subrule "integer" subtype=capture negate=
+ rx310_cur."!cursor_pos"(rx310_pos)
+ $P10 = rx310_cur."integer"()
+ unless $P10, rx310_fail
+ rx310_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("integer")
+ rx310_pos = $P10."pos"()
+ goto alt315_end
+ alt315_1:
+.annotate "line", 112
+ # rx enumcharlist negate=0
+ ge rx310_pos, rx310_eos, rx310_fail
+ sub $I10, rx310_pos, rx310_off
+ substr $S10, rx310_tgt, $I10, 1
+ index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
+ lt $I11, 0, rx310_fail
+ inc rx310_pos
+ # rx rxquantf316 ** 0..*
+ set_addr $I10, rxquantf316_loop
+ rx310_cur."!mark_push"(0, rx310_pos, $I10)
+ goto rxquantf316_done
+ rxquantf316_loop:
+ # rx enumcharlist negate=1
+ ge rx310_pos, rx310_eos, rx310_fail
+ sub $I10, rx310_pos, rx310_off
+ substr $S10, rx310_tgt, $I10, 1
+ index $I11, "],#", $S10
+ ge $I11, 0, rx310_fail
+ inc rx310_pos
+ set_addr $I10, rxquantf316_loop
+ rx310_cur."!mark_push"($I317, rx310_pos, $I10)
+ rxquantf316_done:
+ # rx enumcharlist negate=0
+ ge rx310_pos, rx310_eos, rx310_fail
+ sub $I10, rx310_pos, rx310_off
+ substr $S10, rx310_tgt, $I10, 1
+ index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
+ lt $I11, 0, rx310_fail
+ inc rx310_pos
+.annotate "line", 113
+ # rx subrule "before" subtype=zerowidth negate=
+ rx310_cur."!cursor_pos"(rx310_pos)
+ .const 'Sub' $P319 = "98_1272816829.8573"
+ capture_lex $P319
+ $P10 = rx310_cur."before"($P319)
+ unless $P10, rx310_fail
+ alt315_end:
+.annotate "line", 110
+ # rx pass
+ rx310_cur."!cursor_pass"(rx310_pos, "charname")
+ rx310_cur."!cursor_debug"("PASS ", "charname", " at pos=", rx310_pos)
+ .return (rx310_cur)
+ rx310_fail:
+.annotate "line", 33
+ (rx310_rep, rx310_pos, $I10, $P10) = rx310_cur."!mark_fail"(0)
+ lt rx310_pos, -1, rx310_done
+ eq rx310_pos, -1, rx310_fail
+ jump $I10
+ rx310_done:
+ rx310_cur."!cursor_fail"()
+ rx310_cur."!cursor_debug"("FAIL ", "charname")
+ .return (rx310_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__charname" :subid("97_1272816829.8573") :method
+.annotate "line", 33
+ $P312 = self."!PREFIX__!subrule"("integer", "")
+ new $P313, "ResizablePMCArray"
+ push $P313, "Z"
+ push $P313, "Y"
+ push $P313, "X"
+ push $P313, "W"
+ push $P313, "V"
+ push $P313, "U"
+ push $P313, "T"
+ push $P313, "S"
+ push $P313, "R"
+ push $P313, "Q"
+ push $P313, "P"
+ push $P313, "O"
+ push $P313, "N"
+ push $P313, "M"
+ push $P313, "L"
+ push $P313, "K"
+ push $P313, "J"
+ push $P313, "I"
+ push $P313, "H"
+ push $P313, "G"
+ push $P313, "F"
+ push $P313, "E"
+ push $P313, "D"
+ push $P313, "C"
+ push $P313, "B"
+ push $P313, "A"
+ push $P313, "z"
+ push $P313, "y"
+ push $P313, "x"
+ push $P313, "w"
+ push $P313, "v"
+ push $P313, "u"
+ push $P313, "t"
+ push $P313, "s"
+ push $P313, "r"
+ push $P313, "q"
+ push $P313, "p"
+ push $P313, "o"
+ push $P313, "n"
+ push $P313, "m"
+ push $P313, "l"
+ push $P313, "k"
+ push $P313, "j"
+ push $P313, "i"
+ push $P313, "h"
+ push $P313, "g"
+ push $P313, "f"
+ push $P313, "e"
+ push $P313, "d"
+ push $P313, "c"
+ push $P313, "b"
+ push $P313, "a"
+ push $P313, $P312
+ .return ($P313)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block318" :anon :subid("98_1272816829.8573") :method :outer("96_1272816829.8573")
+.annotate "line", 113
+ .local string rx320_tgt
+ .local int rx320_pos
+ .local int rx320_off
+ .local int rx320_eos
+ .local int rx320_rep
+ .local pmc rx320_cur
+ (rx320_cur, rx320_pos, rx320_tgt) = self."!cursor_start"()
+ rx320_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx320_cur
.local pmc match
.lex "$/", match
- length rx277_eos, rx277_tgt
- set rx277_off, 0
- lt rx277_pos, 2, rx277_start
- sub rx277_off, rx277_pos, 1
- substr rx277_tgt, rx277_tgt, rx277_off
- rx277_start:
+ length rx320_eos, rx320_tgt
+ set rx320_off, 0
+ lt rx320_pos, 2, rx320_start
+ sub rx320_off, rx320_pos, 1
+ substr rx320_tgt, rx320_tgt, rx320_off
+ rx320_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan278_done
- goto rxscan278_scan
- rxscan278_loop:
- ($P10) = rx277_cur."from"()
+ ne $I10, -1, rxscan321_done
+ goto rxscan321_scan
+ rxscan321_loop:
+ ($P10) = rx320_cur."from"()
inc $P10
- set rx277_pos, $P10
- ge rx277_pos, rx277_eos, rxscan278_done
- rxscan278_scan:
- set_addr $I10, rxscan278_loop
- rx277_cur."!mark_push"(0, rx277_pos, $I10)
- rxscan278_done:
+ set rx320_pos, $P10
+ ge rx320_pos, rx320_eos, rxscan321_done
+ rxscan321_scan:
+ set_addr $I10, rxscan321_loop
+ rx320_cur."!mark_push"(0, rx320_pos, $I10)
+ rxscan321_done:
# rx charclass_q s r 0..-1
- sub $I10, rx277_pos, rx277_off
- find_not_cclass $I11, 32, rx277_tgt, $I10, rx277_eos
- add rx277_pos, rx277_off, $I11
+ sub $I10, rx320_pos, rx320_off
+ find_not_cclass $I11, 32, rx320_tgt, $I10, rx320_eos
+ add rx320_pos, rx320_off, $I11
# rx enumcharlist negate=0
- ge rx277_pos, rx277_eos, rx277_fail
- sub $I10, rx277_pos, rx277_off
- substr $S10, rx277_tgt, $I10, 1
+ ge rx320_pos, rx320_eos, rx320_fail
+ sub $I10, rx320_pos, rx320_off
+ substr $S10, rx320_tgt, $I10, 1
index $I11, "],#", $S10
- lt $I11, 0, rx277_fail
- inc rx277_pos
+ lt $I11, 0, rx320_fail
+ inc rx320_pos
# rx pass
- rx277_cur."!cursor_pass"(rx277_pos, "")
- rx277_cur."!cursor_debug"("PASS ", "", " at pos=", rx277_pos)
- .return (rx277_cur)
- rx277_fail:
- (rx277_rep, rx277_pos, $I10, $P10) = rx277_cur."!mark_fail"(0)
- lt rx277_pos, -1, rx277_done
- eq rx277_pos, -1, rx277_fail
+ rx320_cur."!cursor_pass"(rx320_pos, "")
+ rx320_cur."!cursor_debug"("PASS ", "", " at pos=", rx320_pos)
+ .return (rx320_cur)
+ rx320_fail:
+ (rx320_rep, rx320_pos, $I10, $P10) = rx320_cur."!mark_fail"(0)
+ lt rx320_pos, -1, rx320_done
+ eq rx320_pos, -1, rx320_fail
jump $I10
- rx277_done:
- rx277_cur."!cursor_fail"()
- rx277_cur."!cursor_debug"("FAIL ", "")
- .return (rx277_cur)
+ rx320_done:
+ rx320_cur."!cursor_fail"()
+ rx320_cur."!cursor_debug"("FAIL ", "")
+ .return (rx320_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "charnames" :subid("90_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "charnames" :subid("99_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
- .local string rx280_tgt
- .local int rx280_pos
- .local int rx280_off
- .local int rx280_eos
- .local int rx280_rep
- .local pmc rx280_cur
- (rx280_cur, rx280_pos, rx280_tgt) = self."!cursor_start"()
- rx280_cur."!cursor_debug"("START ", "charnames")
- rx280_cur."!cursor_caparray"("charname")
- .lex unicode:"$\x{a2}", rx280_cur
+ .local string rx323_tgt
+ .local int rx323_pos
+ .local int rx323_off
+ .local int rx323_eos
+ .local int rx323_rep
+ .local pmc rx323_cur
+ (rx323_cur, rx323_pos, rx323_tgt) = self."!cursor_start"()
+ rx323_cur."!cursor_debug"("START ", "charnames")
+ rx323_cur."!cursor_caparray"("charname")
+ .lex unicode:"$\x{a2}", rx323_cur
.local pmc match
.lex "$/", match
- length rx280_eos, rx280_tgt
- set rx280_off, 0
- lt rx280_pos, 2, rx280_start
- sub rx280_off, rx280_pos, 1
- substr rx280_tgt, rx280_tgt, rx280_off
- rx280_start:
+ length rx323_eos, rx323_tgt
+ set rx323_off, 0
+ lt rx323_pos, 2, rx323_start
+ sub rx323_off, rx323_pos, 1
+ substr rx323_tgt, rx323_tgt, rx323_off
+ rx323_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan283_done
- goto rxscan283_scan
- rxscan283_loop:
- ($P10) = rx280_cur."from"()
+ ne $I10, -1, rxscan326_done
+ goto rxscan326_scan
+ rxscan326_loop:
+ ($P10) = rx323_cur."from"()
inc $P10
- set rx280_pos, $P10
- ge rx280_pos, rx280_eos, rxscan283_done
- rxscan283_scan:
- set_addr $I10, rxscan283_loop
- rx280_cur."!mark_push"(0, rx280_pos, $I10)
- rxscan283_done:
-.annotate "line", 102
- # rx rxquantr284 ** 1..*
- set_addr $I285, rxquantr284_done
- rx280_cur."!mark_push"(0, -1, $I285)
- rxquantr284_loop:
+ set rx323_pos, $P10
+ ge rx323_pos, rx323_eos, rxscan326_done
+ rxscan326_scan:
+ set_addr $I10, rxscan326_loop
+ rx323_cur."!mark_push"(0, rx323_pos, $I10)
+ rxscan326_done:
+.annotate "line", 115
+ # rx rxquantr327 ** 1..*
+ set_addr $I328, rxquantr327_done
+ rx323_cur."!mark_push"(0, -1, $I328)
+ rxquantr327_loop:
# rx subrule "ws" subtype=method negate=
- rx280_cur."!cursor_pos"(rx280_pos)
- $P10 = rx280_cur."ws"()
- unless $P10, rx280_fail
- rx280_pos = $P10."pos"()
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."ws"()
+ unless $P10, rx323_fail
+ rx323_pos = $P10."pos"()
# rx subrule "charname" subtype=capture negate=
- rx280_cur."!cursor_pos"(rx280_pos)
- $P10 = rx280_cur."charname"()
- unless $P10, rx280_fail
- rx280_cur."!mark_push"(0, -1, 0, $P10)
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."charname"()
+ unless $P10, rx323_fail
+ rx323_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("charname")
- rx280_pos = $P10."pos"()
+ rx323_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx280_cur."!cursor_pos"(rx280_pos)
- $P10 = rx280_cur."ws"()
- unless $P10, rx280_fail
- rx280_pos = $P10."pos"()
- (rx280_rep) = rx280_cur."!mark_commit"($I285)
- rx280_cur."!mark_push"(rx280_rep, rx280_pos, $I285)
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."ws"()
+ unless $P10, rx323_fail
+ rx323_pos = $P10."pos"()
+ (rx323_rep) = rx323_cur."!mark_commit"($I328)
+ rx323_cur."!mark_push"(rx323_rep, rx323_pos, $I328)
# rx literal ","
- add $I11, rx280_pos, 1
- gt $I11, rx280_eos, rx280_fail
- sub $I11, rx280_pos, rx280_off
- substr $S10, rx280_tgt, $I11, 1
- ne $S10, ",", rx280_fail
- add rx280_pos, 1
- goto rxquantr284_loop
- rxquantr284_done:
+ add $I11, rx323_pos, 1
+ gt $I11, rx323_eos, rx323_fail
+ sub $I11, rx323_pos, rx323_off
+ substr $S10, rx323_tgt, $I11, 1
+ ne $S10, ",", rx323_fail
+ add rx323_pos, 1
+ goto rxquantr327_loop
+ rxquantr327_done:
# rx pass
- rx280_cur."!cursor_pass"(rx280_pos, "charnames")
- rx280_cur."!cursor_debug"("PASS ", "charnames", " at pos=", rx280_pos)
- .return (rx280_cur)
- rx280_fail:
-.annotate "line", 33
- (rx280_rep, rx280_pos, $I10, $P10) = rx280_cur."!mark_fail"(0)
- lt rx280_pos, -1, rx280_done
- eq rx280_pos, -1, rx280_fail
+ rx323_cur."!cursor_pass"(rx323_pos, "charnames")
+ rx323_cur."!cursor_debug"("PASS ", "charnames", " at pos=", rx323_pos)
+ .return (rx323_cur)
+ rx323_fail:
+.annotate "line", 33
+ (rx323_rep, rx323_pos, $I10, $P10) = rx323_cur."!mark_fail"(0)
+ lt rx323_pos, -1, rx323_done
+ eq rx323_pos, -1, rx323_fail
jump $I10
- rx280_done:
- rx280_cur."!cursor_fail"()
- rx280_cur."!cursor_debug"("FAIL ", "charnames")
- .return (rx280_cur)
+ rx323_done:
+ rx323_cur."!cursor_fail"()
+ rx323_cur."!cursor_debug"("FAIL ", "charnames")
+ .return (rx323_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames" :subid("91_1267204683.33533") :method
+.sub "!PREFIX__charnames" :subid("100_1272816829.8573") :method
.annotate "line", 33
- new $P282, "ResizablePMCArray"
- push $P282, ""
- .return ($P282)
+ new $P325, "ResizablePMCArray"
+ push $P325, ""
+ .return ($P325)
.end
.namespace ["HLL";"Grammar"]
-.sub "charspec" :subid("92_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "charspec" :subid("101_1272816829.8573") :method :outer("11_1272816829.8573")
.annotate "line", 33
- .local string rx287_tgt
- .local int rx287_pos
- .local int rx287_off
- .local int rx287_eos
- .local int rx287_rep
- .local pmc rx287_cur
- (rx287_cur, rx287_pos, rx287_tgt) = self."!cursor_start"()
- rx287_cur."!cursor_debug"("START ", "charspec")
- .lex unicode:"$\x{a2}", rx287_cur
+ .local string rx330_tgt
+ .local int rx330_pos
+ .local int rx330_off
+ .local int rx330_eos
+ .local int rx330_rep
+ .local pmc rx330_cur
+ (rx330_cur, rx330_pos, rx330_tgt) = self."!cursor_start"()
+ rx330_cur."!cursor_debug"("START ", "charspec")
+ .lex unicode:"$\x{a2}", rx330_cur
.local pmc match
.lex "$/", match
- length rx287_eos, rx287_tgt
- set rx287_off, 0
- lt rx287_pos, 2, rx287_start
- sub rx287_off, rx287_pos, 1
- substr rx287_tgt, rx287_tgt, rx287_off
- rx287_start:
+ length rx330_eos, rx330_tgt
+ set rx330_off, 0
+ lt rx330_pos, 2, rx330_start
+ sub rx330_off, rx330_pos, 1
+ substr rx330_tgt, rx330_tgt, rx330_off
+ rx330_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan292_done
- goto rxscan292_scan
- rxscan292_loop:
- ($P10) = rx287_cur."from"()
+ ne $I10, -1, rxscan335_done
+ goto rxscan335_scan
+ rxscan335_loop:
+ ($P10) = rx330_cur."from"()
inc $P10
- set rx287_pos, $P10
- ge rx287_pos, rx287_eos, rxscan292_done
- rxscan292_scan:
- set_addr $I10, rxscan292_loop
- rx287_cur."!mark_push"(0, rx287_pos, $I10)
- rxscan292_done:
- alt293_0:
-.annotate "line", 104
- set_addr $I10, alt293_1
- rx287_cur."!mark_push"(0, rx287_pos, $I10)
-.annotate "line", 105
+ set rx330_pos, $P10
+ ge rx330_pos, rx330_eos, rxscan335_done
+ rxscan335_scan:
+ set_addr $I10, rxscan335_loop
+ rx330_cur."!mark_push"(0, rx330_pos, $I10)
+ rxscan335_done:
+ alt336_0:
+.annotate "line", 117
+ set_addr $I10, alt336_1
+ rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 118
# rx literal "["
- add $I11, rx287_pos, 1
- gt $I11, rx287_eos, rx287_fail
- sub $I11, rx287_pos, rx287_off
- substr $S10, rx287_tgt, $I11, 1
- ne $S10, "[", rx287_fail
- add rx287_pos, 1
+ add $I11, rx330_pos, 1
+ gt $I11, rx330_eos, rx330_fail
+ sub $I11, rx330_pos, rx330_off
+ substr $S10, rx330_tgt, $I11, 1
+ ne $S10, "[", rx330_fail
+ add rx330_pos, 1
# rx subrule "charnames" subtype=capture negate=
- rx287_cur."!cursor_pos"(rx287_pos)
- $P10 = rx287_cur."charnames"()
- unless $P10, rx287_fail
- rx287_cur."!mark_push"(0, -1, 0, $P10)
+ rx330_cur."!cursor_pos"(rx330_pos)
+ $P10 = rx330_cur."charnames"()
+ unless $P10, rx330_fail
+ rx330_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("charnames")
- rx287_pos = $P10."pos"()
+ rx330_pos = $P10."pos"()
# rx literal "]"
- add $I11, rx287_pos, 1
- gt $I11, rx287_eos, rx287_fail
- sub $I11, rx287_pos, rx287_off
- substr $S10, rx287_tgt, $I11, 1
- ne $S10, "]", rx287_fail
- add rx287_pos, 1
- goto alt293_end
- alt293_1:
- set_addr $I10, alt293_2
- rx287_cur."!mark_push"(0, rx287_pos, $I10)
-.annotate "line", 106
+ add $I11, rx330_pos, 1
+ gt $I11, rx330_eos, rx330_fail
+ sub $I11, rx330_pos, rx330_off
+ substr $S10, rx330_tgt, $I11, 1
+ ne $S10, "]", rx330_fail
+ add rx330_pos, 1
+ goto alt336_end
+ alt336_1:
+ set_addr $I10, alt336_2
+ rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 119
# rx charclass_q d r 1..-1
- sub $I10, rx287_pos, rx287_off
- find_not_cclass $I11, 8, rx287_tgt, $I10, rx287_eos
+ sub $I10, rx330_pos, rx330_off
+ find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
add $I12, $I10, 1
- lt $I11, $I12, rx287_fail
- add rx287_pos, rx287_off, $I11
- # rx rxquantr294 ** 0..*
- set_addr $I295, rxquantr294_done
- rx287_cur."!mark_push"(0, rx287_pos, $I295)
- rxquantr294_loop:
+ lt $I11, $I12, rx330_fail
+ add rx330_pos, rx330_off, $I11
+ # rx rxquantr337 ** 0..*
+ set_addr $I338, rxquantr337_done
+ rx330_cur."!mark_push"(0, rx330_pos, $I338)
+ rxquantr337_loop:
# rx literal "_"
- add $I11, rx287_pos, 1
- gt $I11, rx287_eos, rx287_fail
- sub $I11, rx287_pos, rx287_off
- substr $S10, rx287_tgt, $I11, 1
- ne $S10, "_", rx287_fail
- add rx287_pos, 1
+ add $I11, rx330_pos, 1
+ gt $I11, rx330_eos, rx330_fail
+ sub $I11, rx330_pos, rx330_off
+ substr $S10, rx330_tgt, $I11, 1
+ ne $S10, "_", rx330_fail
+ add rx330_pos, 1
# rx charclass_q d r 1..-1
- sub $I10, rx287_pos, rx287_off
- find_not_cclass $I11, 8, rx287_tgt, $I10, rx287_eos
+ sub $I10, rx330_pos, rx330_off
+ find_not_cclass $I11, 8, rx330_tgt, $I10, rx330_eos
add $I12, $I10, 1
- lt $I11, $I12, rx287_fail
- add rx287_pos, rx287_off, $I11
- (rx287_rep) = rx287_cur."!mark_commit"($I295)
- rx287_cur."!mark_push"(rx287_rep, rx287_pos, $I295)
- goto rxquantr294_loop
- rxquantr294_done:
- goto alt293_end
- alt293_2:
- set_addr $I10, alt293_3
- rx287_cur."!mark_push"(0, rx287_pos, $I10)
-.annotate "line", 107
+ lt $I11, $I12, rx330_fail
+ add rx330_pos, rx330_off, $I11
+ (rx330_rep) = rx330_cur."!mark_commit"($I338)
+ rx330_cur."!mark_push"(rx330_rep, rx330_pos, $I338)
+ goto rxquantr337_loop
+ rxquantr337_done:
+ goto alt336_end
+ alt336_2:
+ set_addr $I10, alt336_3
+ rx330_cur."!mark_push"(0, rx330_pos, $I10)
+.annotate "line", 120
# rx enumcharlist negate=0
- ge rx287_pos, rx287_eos, rx287_fail
- sub $I10, rx287_pos, rx287_off
- substr $S10, rx287_tgt, $I10, 1
+ ge rx330_pos, rx330_eos, rx330_fail
+ sub $I10, rx330_pos, rx330_off
+ substr $S10, rx330_tgt, $I10, 1
index $I11, "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
- lt $I11, 0, rx287_fail
- inc rx287_pos
- goto alt293_end
- alt293_3:
-.annotate "line", 108
+ lt $I11, 0, rx330_fail
+ inc rx330_pos
+ goto alt336_end
+ alt336_3:
+.annotate "line", 121
# rx subrule "panic" subtype=method negate=
- rx287_cur."!cursor_pos"(rx287_pos)
- $P10 = rx287_cur."panic"("Unrecognized \\c character")
- unless $P10, rx287_fail
- rx287_pos = $P10."pos"()
- alt293_end:
-.annotate "line", 103
+ rx330_cur."!cursor_pos"(rx330_pos)
+ $P10 = rx330_cur."panic"("Unrecognized \\c character")
+ unless $P10, rx330_fail
+ rx330_pos = $P10."pos"()
+ alt336_end:
+.annotate "line", 116
# rx pass
- rx287_cur."!cursor_pass"(rx287_pos, "charspec")
- rx287_cur."!cursor_debug"("PASS ", "charspec", " at pos=", rx287_pos)
- .return (rx287_cur)
- rx287_fail:
-.annotate "line", 33
- (rx287_rep, rx287_pos, $I10, $P10) = rx287_cur."!mark_fail"(0)
- lt rx287_pos, -1, rx287_done
- eq rx287_pos, -1, rx287_fail
+ rx330_cur."!cursor_pass"(rx330_pos, "charspec")
+ rx330_cur."!cursor_debug"("PASS ", "charspec", " at pos=", rx330_pos)
+ .return (rx330_cur)
+ rx330_fail:
+.annotate "line", 33
+ (rx330_rep, rx330_pos, $I10, $P10) = rx330_cur."!mark_fail"(0)
+ lt rx330_pos, -1, rx330_done
+ eq rx330_pos, -1, rx330_fail
jump $I10
- rx287_done:
- rx287_cur."!cursor_fail"()
- rx287_cur."!cursor_debug"("FAIL ", "charspec")
- .return (rx287_cur)
+ rx330_done:
+ rx330_cur."!cursor_fail"()
+ rx330_cur."!cursor_debug"("FAIL ", "charspec")
+ .return (rx330_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec" :subid("93_1267204683.33533") :method
+.sub "!PREFIX__charspec" :subid("102_1272816829.8573") :method
.annotate "line", 33
- $P289 = self."!PREFIX__!subrule"("", "")
- $P290 = self."!PREFIX__!subrule"("charnames", "[")
- new $P291, "ResizablePMCArray"
- push $P291, $P289
- push $P291, "Z"
- push $P291, "Y"
- push $P291, "X"
- push $P291, "W"
- push $P291, "V"
- push $P291, "U"
- push $P291, "T"
- push $P291, "S"
- push $P291, "R"
- push $P291, "Q"
- push $P291, "P"
- push $P291, "O"
- push $P291, "N"
- push $P291, "M"
- push $P291, "L"
- push $P291, "K"
- push $P291, "J"
- push $P291, "I"
- push $P291, "H"
- push $P291, "G"
- push $P291, "F"
- push $P291, "E"
- push $P291, "D"
- push $P291, "C"
- push $P291, "B"
- push $P291, "A"
- push $P291, "@"
- push $P291, "?"
- push $P291, ""
- push $P291, $P290
- .return ($P291)
+ $P332 = self."!PREFIX__!subrule"("", "")
+ $P333 = self."!PREFIX__!subrule"("charnames", "[")
+ new $P334, "ResizablePMCArray"
+ push $P334, $P332
+ push $P334, "Z"
+ push $P334, "Y"
+ push $P334, "X"
+ push $P334, "W"
+ push $P334, "V"
+ push $P334, "U"
+ push $P334, "T"
+ push $P334, "S"
+ push $P334, "R"
+ push $P334, "Q"
+ push $P334, "P"
+ push $P334, "O"
+ push $P334, "N"
+ push $P334, "M"
+ push $P334, "L"
+ push $P334, "K"
+ push $P334, "J"
+ push $P334, "I"
+ push $P334, "H"
+ push $P334, "G"
+ push $P334, "F"
+ push $P334, "E"
+ push $P334, "D"
+ push $P334, "C"
+ push $P334, "B"
+ push $P334, "A"
+ push $P334, "@"
+ push $P334, "?"
+ push $P334, ""
+ push $P334, $P333
+ .return ($P334)
.end
### .include 'gen/hllgrammar-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204685.44293")
+.sub "_block11" :anon :subid("10_1272816831.39278")
.annotate "line", 0
get_hll_global $P14, ["HLL";"Actions"], "_block13"
capture_lex $P14
.annotate "line", 3
get_hll_global $P14, ["HLL";"Actions"], "_block13"
capture_lex $P14
- $P538 = $P14()
+ $P571 = $P14()
.annotate "line", 1
- .return ($P538)
+ .return ($P571)
.end
.namespace []
-.sub "" :load :init :subid("post46") :outer("10_1267204685.44293")
+.sub "" :load :init :subid("post49") :outer("10_1272816831.39278")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204685.44293"
+ .const 'Sub' $P12 = "10_1272816831.39278"
.local pmc block
set block, $P12
- $P539 = get_root_global ["parrot"], "P6metaclass"
- $P539."new_class"("HLL::Actions")
+ $P572 = get_root_global ["parrot"], "P6metaclass"
+ $P572."new_class"("HLL::Actions")
.end
.namespace ["HLL";"Actions"]
-.sub "_block13" :subid("11_1267204685.44293") :outer("10_1267204685.44293")
+.sub "_block13" :subid("11_1272816831.39278") :outer("10_1272816831.39278")
.annotate "line", 3
- .const 'Sub' $P521 = "45_1267204685.44293"
- capture_lex $P521
- .const 'Sub' $P496 = "43_1267204685.44293"
- capture_lex $P496
- .const 'Sub' $P465 = "42_1267204685.44293"
- capture_lex $P465
- .const 'Sub' $P455 = "41_1267204685.44293"
- capture_lex $P455
- .const 'Sub' $P438 = "40_1267204685.44293"
- capture_lex $P438
- .const 'Sub' $P421 = "39_1267204685.44293"
+ .const 'Sub' $P554 = "48_1272816831.39278"
+ capture_lex $P554
+ .const 'Sub' $P529 = "46_1272816831.39278"
+ capture_lex $P529
+ .const 'Sub' $P498 = "45_1272816831.39278"
+ capture_lex $P498
+ .const 'Sub' $P479 = "44_1272816831.39278"
+ capture_lex $P479
+ .const 'Sub' $P472 = "43_1272816831.39278"
+ capture_lex $P472
+ .const 'Sub' $P462 = "42_1272816831.39278"
+ capture_lex $P462
+ .const 'Sub' $P445 = "41_1272816831.39278"
+ capture_lex $P445
+ .const 'Sub' $P428 = "40_1272816831.39278"
+ capture_lex $P428
+ .const 'Sub' $P421 = "39_1272816831.39278"
capture_lex $P421
- .const 'Sub' $P414 = "38_1267204685.44293"
+ .const 'Sub' $P414 = "38_1272816831.39278"
capture_lex $P414
- .const 'Sub' $P407 = "37_1267204685.44293"
+ .const 'Sub' $P407 = "37_1272816831.39278"
capture_lex $P407
- .const 'Sub' $P400 = "36_1267204685.44293"
+ .const 'Sub' $P400 = "36_1272816831.39278"
capture_lex $P400
- .const 'Sub' $P393 = "35_1267204685.44293"
+ .const 'Sub' $P393 = "35_1272816831.39278"
capture_lex $P393
- .const 'Sub' $P383 = "34_1267204685.44293"
+ .const 'Sub' $P383 = "34_1272816831.39278"
capture_lex $P383
- .const 'Sub' $P376 = "33_1267204685.44293"
+ .const 'Sub' $P376 = "33_1272816831.39278"
capture_lex $P376
- .const 'Sub' $P360 = "32_1267204685.44293"
+ .const 'Sub' $P360 = "32_1272816831.39278"
capture_lex $P360
- .const 'Sub' $P285 = "30_1267204685.44293"
+ .const 'Sub' $P285 = "30_1272816831.39278"
capture_lex $P285
- .const 'Sub' $P222 = "27_1267204685.44293"
+ .const 'Sub' $P222 = "27_1272816831.39278"
capture_lex $P222
- .const 'Sub' $P213 = "26_1267204685.44293"
+ .const 'Sub' $P213 = "26_1272816831.39278"
capture_lex $P213
- .const 'Sub' $P204 = "25_1267204685.44293"
+ .const 'Sub' $P204 = "25_1272816831.39278"
capture_lex $P204
- .const 'Sub' $P195 = "24_1267204685.44293"
+ .const 'Sub' $P195 = "24_1272816831.39278"
capture_lex $P195
- .const 'Sub' $P186 = "23_1267204685.44293"
+ .const 'Sub' $P186 = "23_1272816831.39278"
capture_lex $P186
- .const 'Sub' $P177 = "22_1267204685.44293"
+ .const 'Sub' $P177 = "22_1272816831.39278"
capture_lex $P177
- .const 'Sub' $P167 = "21_1267204685.44293"
+ .const 'Sub' $P167 = "21_1272816831.39278"
capture_lex $P167
- .const 'Sub' $P157 = "20_1267204685.44293"
+ .const 'Sub' $P157 = "20_1272816831.39278"
capture_lex $P157
- .const 'Sub' $P149 = "19_1267204685.44293"
+ .const 'Sub' $P149 = "19_1272816831.39278"
capture_lex $P149
- .const 'Sub' $P139 = "18_1267204685.44293"
+ .const 'Sub' $P139 = "18_1272816831.39278"
capture_lex $P139
- .const 'Sub' $P129 = "17_1267204685.44293"
+ .const 'Sub' $P129 = "17_1272816831.39278"
capture_lex $P129
- .const 'Sub' $P28 = "14_1267204685.44293"
+ .const 'Sub' $P28 = "14_1272816831.39278"
capture_lex $P28
- .const 'Sub' $P22 = "13_1267204685.44293"
+ .const 'Sub' $P22 = "13_1272816831.39278"
capture_lex $P22
- .const 'Sub' $P15 = "12_1267204685.44293"
+ .const 'Sub' $P15 = "12_1272816831.39278"
capture_lex $P15
-.annotate "line", 188
- .const 'Sub' $P521 = "45_1267204685.44293"
- capture_lex $P521
+.annotate "line", 197
+ .const 'Sub' $P554 = "48_1272816831.39278"
+ capture_lex $P554
.annotate "line", 3
- .return ($P521)
+ .return ($P554)
.end
.namespace ["HLL";"Actions"]
-.sub "string_to_int" :subid("12_1267204685.44293") :outer("11_1267204685.44293")
+.sub "string_to_int" :subid("12_1272816831.39278") :outer("11_1272816831.39278")
.param pmc param_18
.param pmc param_19
.annotate "line", 3
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
- $P17."handle_types"(58)
+ $P17."handle_types"(57)
push_eh $P17
.lex "$src", param_18
.lex "$base", param_19
@@ -4434,12 +4852,12 @@
.namespace ["HLL";"Actions"]
-.sub "ints_to_string" :subid("13_1267204685.44293") :outer("11_1267204685.44293")
+.sub "ints_to_string" :subid("13_1272816831.39278") :outer("11_1272816831.39278")
.param pmc param_25
.annotate "line", 37
new $P24, 'ExceptionHandler'
set_addr $P24, control_23
- $P24."handle_types"(58)
+ $P24."handle_types"(57)
push_eh $P24
.lex "$ints", param_25
.annotate "line", 38
@@ -4475,25 +4893,25 @@
.namespace ["HLL";"Actions"]
-.sub "EXPR" :subid("14_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "EXPR" :subid("14_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_31
.param pmc param_32 :optional
.param int has_param_32 :opt_flag
.annotate "line", 62
- .const 'Sub' $P111 = "16_1267204685.44293"
+ .const 'Sub' $P111 = "16_1272816831.39278"
capture_lex $P111
- .const 'Sub' $P78 = "15_1267204685.44293"
+ .const 'Sub' $P78 = "15_1272816831.39278"
capture_lex $P78
new $P30, 'ExceptionHandler'
set_addr $P30, control_29
- $P30."handle_types"(58)
+ $P30."handle_types"(57)
push_eh $P30
.lex "self", self
.lex "$/", param_31
- if has_param_32, optparam_47
+ if has_param_32, optparam_50
new $P33, "Undef"
set param_32, $P33
- optparam_47:
+ optparam_50:
.lex "$key", param_32
.annotate "line", 64
new $P34, "Undef"
@@ -4502,7 +4920,7 @@
find_lex $P36, "$key"
if $P36, unless_35_end
new $P37, "Exception"
- set $P37['type'], 58
+ set $P37['type'], 57
new $P38, "Integer"
assign $P38, 0
setattribute $P37, 'payload', $P38
@@ -4515,13 +4933,13 @@
defined $I43, $P39
if $I43, default_42
find_lex $P44, "$/"
- unless_null $P44, vivify_48
+ unless_null $P44, vivify_51
$P44 = root_new ['parrot';'Hash']
- vivify_48:
+ vivify_51:
set $P45, $P44["OPER"]
- unless_null $P45, vivify_49
+ unless_null $P45, vivify_52
new $P45, "Undef"
- vivify_49:
+ vivify_52:
$P46 = $P45."ast"()
set $P39, $P46
default_42:
@@ -4536,57 +4954,57 @@
store_lex "$past", $P51
.annotate "line", 67
find_lex $P53, "$/"
- unless_null $P53, vivify_50
+ unless_null $P53, vivify_53
$P53 = root_new ['parrot';'Hash']
- vivify_50:
+ vivify_53:
set $P54, $P53["OPER"]
- unless_null $P54, vivify_51
+ unless_null $P54, vivify_54
$P54 = root_new ['parrot';'Hash']
- vivify_51:
+ vivify_54:
set $P55, $P54["O"]
- unless_null $P55, vivify_52
+ unless_null $P55, vivify_55
$P55 = root_new ['parrot';'Hash']
- vivify_52:
+ vivify_55:
set $P56, $P55["pasttype"]
- unless_null $P56, vivify_53
+ unless_null $P56, vivify_56
new $P56, "Undef"
- vivify_53:
+ vivify_56:
if $P56, if_52
.annotate "line", 68
find_lex $P64, "$/"
- unless_null $P64, vivify_54
+ unless_null $P64, vivify_57
$P64 = root_new ['parrot';'Hash']
- vivify_54:
+ vivify_57:
set $P65, $P64["OPER"]
- unless_null $P65, vivify_55
+ unless_null $P65, vivify_58
$P65 = root_new ['parrot';'Hash']
- vivify_55:
+ vivify_58:
set $P66, $P65["O"]
- unless_null $P66, vivify_56
+ unless_null $P66, vivify_59
$P66 = root_new ['parrot';'Hash']
- vivify_56:
+ vivify_59:
set $P67, $P66["pirop"]
- unless_null $P67, vivify_57
+ unless_null $P67, vivify_60
new $P67, "Undef"
- vivify_57:
+ vivify_60:
unless $P67, if_63_end
find_lex $P68, "$past"
find_lex $P69, "$/"
- unless_null $P69, vivify_58
+ unless_null $P69, vivify_61
$P69 = root_new ['parrot';'Hash']
- vivify_58:
+ vivify_61:
set $P70, $P69["OPER"]
- unless_null $P70, vivify_59
+ unless_null $P70, vivify_62
$P70 = root_new ['parrot';'Hash']
- vivify_59:
+ vivify_62:
set $P71, $P70["O"]
- unless_null $P71, vivify_60
+ unless_null $P71, vivify_63
$P71 = root_new ['parrot';'Hash']
- vivify_60:
+ vivify_63:
set $P72, $P71["pirop"]
- unless_null $P72, vivify_61
+ unless_null $P72, vivify_64
new $P72, "Undef"
- vivify_61:
+ vivify_64:
set $S73, $P72
$P68."pirop"($S73)
if_63_end:
@@ -4595,21 +5013,21 @@
.annotate "line", 67
find_lex $P57, "$past"
find_lex $P58, "$/"
- unless_null $P58, vivify_62
+ unless_null $P58, vivify_65
$P58 = root_new ['parrot';'Hash']
- vivify_62:
+ vivify_65:
set $P59, $P58["OPER"]
- unless_null $P59, vivify_63
+ unless_null $P59, vivify_66
$P59 = root_new ['parrot';'Hash']
- vivify_63:
+ vivify_66:
set $P60, $P59["O"]
- unless_null $P60, vivify_64
+ unless_null $P60, vivify_67
$P60 = root_new ['parrot';'Hash']
- vivify_64:
+ vivify_67:
set $P61, $P60["pasttype"]
- unless_null $P61, vivify_65
+ unless_null $P61, vivify_68
new $P61, "Undef"
- vivify_65:
+ vivify_68:
set $S62, $P61
$P57."pasttype"($S62)
if_52_end:
@@ -4617,7 +5035,7 @@
find_lex $P75, "$past"
$P76 = $P75."name"()
if $P76, unless_74_end
- .const 'Sub' $P78 = "15_1267204685.44293"
+ .const 'Sub' $P78 = "15_1272816831.39278"
capture_lex $P78
$P78()
unless_74_end:
@@ -4631,17 +5049,17 @@
find_lex $P106, "$/"
$P107 = $P106."list"()
defined $I108, $P107
- unless $I108, for_undef_69
+ unless $I108, for_undef_72
iter $P105, $P107
new $P123, 'ExceptionHandler'
set_addr $P123, loop122_handler
- $P123."handle_types"(65, 67, 66)
+ $P123."handle_types"(64, 66, 65)
push_eh $P123
loop122_test:
unless $P105, loop122_done
shift $P109, $P105
loop122_redo:
- .const 'Sub' $P111 = "16_1267204685.44293"
+ .const 'Sub' $P111 = "16_1272816831.39278"
capture_lex $P111
$P111($P109)
loop122_next:
@@ -4650,24 +5068,24 @@
.local pmc exception
.get_results (exception)
getattribute $P124, exception, 'type'
- eq $P124, 65, loop122_next
- eq $P124, 67, loop122_redo
+ eq $P124, 64, loop122_next
+ eq $P124, 66, loop122_redo
loop122_done:
pop_eh
- for_undef_69:
+ for_undef_72:
.annotate "line", 81
goto if_97_end
if_97:
.annotate "line", 80
find_lex $P101, "$past"
find_lex $P102, "$/"
- unless_null $P102, vivify_70
+ unless_null $P102, vivify_73
$P102 = root_new ['parrot';'ResizablePMCArray']
- vivify_70:
+ vivify_73:
set $P103, $P102[0]
- unless_null $P103, vivify_71
+ unless_null $P103, vivify_74
new $P103, "Undef"
- vivify_71:
+ vivify_74:
$P104 = $P103."ast"()
$P101."unshift"($P104)
if_97_end:
@@ -4686,7 +5104,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block77" :anon :subid("15_1267204685.44293") :outer("14_1267204685.44293")
+.sub "_block77" :anon :subid("15_1272816831.39278") :outer("14_1272816831.39278")
.annotate "line", 71
new $P79, "Undef"
.lex "$name", $P79
@@ -4709,17 +5127,17 @@
concat $P86, $P85, ":<"
.annotate "line", 76
find_lex $P87, "$/"
- unless_null $P87, vivify_66
+ unless_null $P87, vivify_69
$P87 = root_new ['parrot';'Hash']
- vivify_66:
+ vivify_69:
set $P88, $P87["OPER"]
- unless_null $P88, vivify_67
+ unless_null $P88, vivify_70
$P88 = root_new ['parrot';'Hash']
- vivify_67:
+ vivify_70:
set $P89, $P88["sym"]
- unless_null $P89, vivify_68
+ unless_null $P89, vivify_71
new $P89, "Undef"
- vivify_68:
+ vivify_71:
concat $P90, $P86, $P89
concat $P91, $P90, ">"
store_lex "$name", $P91
@@ -4736,7 +5154,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block110" :anon :subid("16_1267204685.44293") :outer("14_1267204685.44293")
+.sub "_block110" :anon :subid("16_1272816831.39278") :outer("14_1272816831.39278")
.param pmc param_112
.annotate "line", 82
.lex "$_", param_112
@@ -4759,24 +5177,24 @@
.namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>" :subid("17_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "term:sym<circumfix>" :subid("17_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_132
.annotate "line", 87
new $P131, 'ExceptionHandler'
set_addr $P131, control_130
- $P131."handle_types"(58)
+ $P131."handle_types"(57)
push_eh $P131
.lex "self", self
.lex "$/", param_132
find_lex $P133, "$/"
find_lex $P134, "$/"
- unless_null $P134, vivify_72
+ unless_null $P134, vivify_75
$P134 = root_new ['parrot';'Hash']
- vivify_72:
+ vivify_75:
set $P135, $P134["circumfix"]
- unless_null $P135, vivify_73
+ unless_null $P135, vivify_76
new $P135, "Undef"
- vivify_73:
+ vivify_76:
$P136 = $P135."ast"()
$P137 = $P133."!make"($P136)
.return ($P137)
@@ -4789,24 +5207,24 @@
.namespace ["HLL";"Actions"]
-.sub "termish" :subid("18_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "termish" :subid("18_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_142
.annotate "line", 89
new $P141, 'ExceptionHandler'
set_addr $P141, control_140
- $P141."handle_types"(58)
+ $P141."handle_types"(57)
push_eh $P141
.lex "self", self
.lex "$/", param_142
find_lex $P143, "$/"
find_lex $P144, "$/"
- unless_null $P144, vivify_74
+ unless_null $P144, vivify_77
$P144 = root_new ['parrot';'Hash']
- vivify_74:
+ vivify_77:
set $P145, $P144["term"]
- unless_null $P145, vivify_75
+ unless_null $P145, vivify_78
new $P145, "Undef"
- vivify_75:
+ vivify_78:
$P146 = $P145."ast"()
$P147 = $P143."!make"($P146)
.return ($P147)
@@ -4819,12 +5237,12 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm" :subid("19_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "nullterm" :subid("19_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_152
.annotate "line", 90
new $P151, 'ExceptionHandler'
set_addr $P151, control_150
- $P151."handle_types"(58)
+ $P151."handle_types"(57)
push_eh $P151
.lex "self", self
.lex "$/", param_152
@@ -4841,24 +5259,24 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm_alt" :subid("20_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "nullterm_alt" :subid("20_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_160
.annotate "line", 91
new $P159, 'ExceptionHandler'
set_addr $P159, control_158
- $P159."handle_types"(58)
+ $P159."handle_types"(57)
push_eh $P159
.lex "self", self
.lex "$/", param_160
find_lex $P161, "$/"
find_lex $P162, "$/"
- unless_null $P162, vivify_76
+ unless_null $P162, vivify_79
$P162 = root_new ['parrot';'Hash']
- vivify_76:
+ vivify_79:
set $P163, $P162["term"]
- unless_null $P163, vivify_77
+ unless_null $P163, vivify_80
new $P163, "Undef"
- vivify_77:
+ vivify_80:
$P164 = $P163."ast"()
$P165 = $P161."!make"($P164)
.return ($P165)
@@ -4871,24 +5289,24 @@
.namespace ["HLL";"Actions"]
-.sub "integer" :subid("21_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "integer" :subid("21_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_170
.annotate "line", 93
new $P169, 'ExceptionHandler'
set_addr $P169, control_168
- $P169."handle_types"(58)
+ $P169."handle_types"(57)
push_eh $P169
.lex "self", self
.lex "$/", param_170
find_lex $P171, "$/"
find_lex $P172, "$/"
- unless_null $P172, vivify_78
+ unless_null $P172, vivify_81
$P172 = root_new ['parrot';'Hash']
- vivify_78:
+ vivify_81:
set $P173, $P172["VALUE"]
- unless_null $P173, vivify_79
+ unless_null $P173, vivify_82
new $P173, "Undef"
- vivify_79:
+ vivify_82:
$P174 = $P173."ast"()
$P175 = $P171."!make"($P174)
.return ($P175)
@@ -4901,12 +5319,12 @@
.namespace ["HLL";"Actions"]
-.sub "dec_number" :subid("22_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "dec_number" :subid("22_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_180
.annotate "line", 95
new $P179, 'ExceptionHandler'
set_addr $P179, control_178
- $P179."handle_types"(58)
+ $P179."handle_types"(57)
push_eh $P179
.lex "self", self
.lex "$/", param_180
@@ -4924,12 +5342,12 @@
.namespace ["HLL";"Actions"]
-.sub "decint" :subid("23_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "decint" :subid("23_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_189
.annotate "line", 97
new $P188, 'ExceptionHandler'
set_addr $P188, control_187
- $P188."handle_types"(58)
+ $P188."handle_types"(57)
push_eh $P188
.lex "self", self
.lex "$/", param_189
@@ -4947,12 +5365,12 @@
.namespace ["HLL";"Actions"]
-.sub "hexint" :subid("24_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "hexint" :subid("24_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_198
.annotate "line", 98
new $P197, 'ExceptionHandler'
set_addr $P197, control_196
- $P197."handle_types"(58)
+ $P197."handle_types"(57)
push_eh $P197
.lex "self", self
.lex "$/", param_198
@@ -4970,12 +5388,12 @@
.namespace ["HLL";"Actions"]
-.sub "octint" :subid("25_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "octint" :subid("25_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_207
.annotate "line", 99
new $P206, 'ExceptionHandler'
set_addr $P206, control_205
- $P206."handle_types"(58)
+ $P206."handle_types"(57)
push_eh $P206
.lex "self", self
.lex "$/", param_207
@@ -4993,12 +5411,12 @@
.namespace ["HLL";"Actions"]
-.sub "binint" :subid("26_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "binint" :subid("26_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_216
.annotate "line", 100
new $P215, 'ExceptionHandler'
set_addr $P215, control_214
- $P215."handle_types"(58)
+ $P215."handle_types"(57)
push_eh $P215
.lex "self", self
.lex "$/", param_216
@@ -5016,14 +5434,14 @@
.namespace ["HLL";"Actions"]
-.sub "quote_EXPR" :subid("27_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_EXPR" :subid("27_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_225
.annotate "line", 102
- .const 'Sub' $P241 = "28_1267204685.44293"
+ .const 'Sub' $P241 = "28_1272816831.39278"
capture_lex $P241
new $P224, 'ExceptionHandler'
set_addr $P224, control_223
- $P224."handle_types"(58)
+ $P224."handle_types"(57)
push_eh $P224
.lex "self", self
.lex "$/", param_225
@@ -5031,19 +5449,19 @@
new $P226, "Undef"
.lex "$past", $P226
find_lex $P227, "$/"
- unless_null $P227, vivify_80
+ unless_null $P227, vivify_83
$P227 = root_new ['parrot';'Hash']
- vivify_80:
+ vivify_83:
set $P228, $P227["quote_delimited"]
- unless_null $P228, vivify_81
+ unless_null $P228, vivify_84
new $P228, "Undef"
- vivify_81:
+ vivify_84:
$P229 = $P228."ast"()
store_lex "$past", $P229
.annotate "line", 104
- get_hll_global $P231, ["HLL";"Grammar"], "quotemod_check"
- find_lex $P232, "$/"
- $P233 = $P231($P232, "w")
+ find_lex $P231, "$/"
+ $P232 = $P231."CURSOR"()
+ $P233 = $P232."quotemod_check"("w")
unless $P233, if_230_end
.annotate "line", 105
get_hll_global $P235, ["PAST"], "Node"
@@ -5051,7 +5469,7 @@
$P237 = $P235."ACCEPTS"($P236)
if $P237, if_234
.annotate "line", 108
- .const 'Sub' $P241 = "28_1267204685.44293"
+ .const 'Sub' $P241 = "28_1272816831.39278"
capture_lex $P241
$P241()
goto if_234_end
@@ -5090,9 +5508,9 @@
.namespace ["HLL";"Actions"]
-.sub "_block240" :anon :subid("28_1267204685.44293") :outer("27_1267204685.44293")
+.sub "_block240" :anon :subid("28_1272816831.39278") :outer("27_1272816831.39278")
.annotate "line", 108
- .const 'Sub' $P260 = "29_1267204685.44293"
+ .const 'Sub' $P260 = "29_1272816831.39278"
capture_lex $P260
.annotate "line", 109
$P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5109,13 +5527,13 @@
if $I251, if_248
.annotate "line", 115
find_lex $P268, "@words"
- unless_null $P268, vivify_82
+ unless_null $P268, vivify_85
$P268 = root_new ['parrot';'ResizablePMCArray']
- vivify_82:
+ vivify_85:
set $P269, $P268[0]
- unless_null $P269, vivify_83
+ unless_null $P269, vivify_86
new $P269, "Undef"
- vivify_83:
+ vivify_86:
set $S270, $P269
new $P271, 'String'
set $P271, $S270
@@ -5133,17 +5551,17 @@
.annotate "line", 112
find_lex $P256, "@words"
defined $I257, $P256
- unless $I257, for_undef_84
+ unless $I257, for_undef_87
iter $P255, $P256
new $P266, 'ExceptionHandler'
set_addr $P266, loop265_handler
- $P266."handle_types"(65, 67, 66)
+ $P266."handle_types"(64, 66, 65)
push_eh $P266
loop265_test:
unless $P255, loop265_done
shift $P258, $P255
loop265_redo:
- .const 'Sub' $P260 = "29_1267204685.44293"
+ .const 'Sub' $P260 = "29_1272816831.39278"
capture_lex $P260
$P260($P258)
loop265_next:
@@ -5152,11 +5570,11 @@
.local pmc exception
.get_results (exception)
getattribute $P267, exception, 'type'
- eq $P267, 65, loop265_next
- eq $P267, 67, loop265_redo
+ eq $P267, 64, loop265_next
+ eq $P267, 66, loop265_redo
loop265_done:
pop_eh
- for_undef_84:
+ for_undef_87:
.annotate "line", 110
set $P247, $P255
if_248_end:
@@ -5166,7 +5584,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block259" :anon :subid("29_1267204685.44293") :outer("28_1267204685.44293")
+.sub "_block259" :anon :subid("29_1272816831.39278") :outer("28_1272816831.39278")
.param pmc param_261
.annotate "line", 112
.lex "$_", param_261
@@ -5178,14 +5596,14 @@
.namespace ["HLL";"Actions"]
-.sub "quote_delimited" :subid("30_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_delimited" :subid("30_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_288
.annotate "line", 125
- .const 'Sub' $P300 = "31_1267204685.44293"
+ .const 'Sub' $P300 = "31_1272816831.39278"
capture_lex $P300
new $P287, 'ExceptionHandler'
set_addr $P287, control_286
- $P287."handle_types"(58)
+ $P287."handle_types"(57)
push_eh $P287
.lex "self", self
.lex "$/", param_288
@@ -5206,25 +5624,25 @@
store_lex "$lastlit", $P293
.annotate "line", 128
find_lex $P295, "$/"
- unless_null $P295, vivify_85
+ unless_null $P295, vivify_88
$P295 = root_new ['parrot';'Hash']
- vivify_85:
+ vivify_88:
set $P296, $P295["quote_atom"]
- unless_null $P296, vivify_86
+ unless_null $P296, vivify_89
new $P296, "Undef"
- vivify_86:
+ vivify_89:
defined $I297, $P296
- unless $I297, for_undef_87
+ unless $I297, for_undef_90
iter $P294, $P296
new $P333, 'ExceptionHandler'
set_addr $P333, loop332_handler
- $P333."handle_types"(65, 67, 66)
+ $P333."handle_types"(64, 66, 65)
push_eh $P333
loop332_test:
unless $P294, loop332_done
shift $P298, $P294
loop332_redo:
- .const 'Sub' $P300 = "31_1267204685.44293"
+ .const 'Sub' $P300 = "31_1272816831.39278"
capture_lex $P300
$P300($P298)
loop332_next:
@@ -5233,11 +5651,11 @@
.local pmc exception
.get_results (exception)
getattribute $P334, exception, 'type'
- eq $P334, 65, loop332_next
- eq $P334, 67, loop332_redo
+ eq $P334, 64, loop332_next
+ eq $P334, 66, loop332_redo
loop332_done:
pop_eh
- for_undef_87:
+ for_undef_90:
.annotate "line", 142
find_lex $P336, "$lastlit"
set $S337, $P336
@@ -5263,7 +5681,7 @@
.annotate "line", 144
new $P354, 'ExceptionHandler'
set_addr $P354, loop353_handler
- $P354."handle_types"(65, 67, 66)
+ $P354."handle_types"(64, 66, 65)
push_eh $P354
loop353_test:
find_lex $P347, "@parts"
@@ -5283,8 +5701,8 @@
.local pmc exception
.get_results (exception)
getattribute $P355, exception, 'type'
- eq $P355, 65, loop353_next
- eq $P355, 67, loop353_redo
+ eq $P355, 64, loop353_next
+ eq $P355, 66, loop353_redo
loop353_done:
pop_eh
.annotate "line", 147
@@ -5302,7 +5720,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block299" :anon :subid("31_1267204685.44293") :outer("30_1267204685.44293")
+.sub "_block299" :anon :subid("31_1272816831.39278") :outer("30_1272816831.39278")
.param pmc param_302
.annotate "line", 129
new $P301, "Undef"
@@ -5371,25 +5789,25 @@
.namespace ["HLL";"Actions"]
-.sub "quote_atom" :subid("32_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_atom" :subid("32_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_363
.annotate "line", 150
new $P362, 'ExceptionHandler'
set_addr $P362, control_361
- $P362."handle_types"(58)
+ $P362."handle_types"(57)
push_eh $P362
.lex "self", self
.lex "$/", param_363
.annotate "line", 151
find_lex $P364, "$/"
find_lex $P367, "$/"
- unless_null $P367, vivify_88
+ unless_null $P367, vivify_91
$P367 = root_new ['parrot';'Hash']
- vivify_88:
+ vivify_91:
set $P368, $P367["quote_escape"]
- unless_null $P368, vivify_89
+ unless_null $P368, vivify_92
new $P368, "Undef"
- vivify_89:
+ vivify_92:
if $P368, if_366
find_lex $P372, "$/"
set $S373, $P372
@@ -5398,13 +5816,13 @@
goto if_366_end
if_366:
find_lex $P369, "$/"
- unless_null $P369, vivify_90
+ unless_null $P369, vivify_93
$P369 = root_new ['parrot';'Hash']
- vivify_90:
+ vivify_93:
set $P370, $P369["quote_escape"]
- unless_null $P370, vivify_91
+ unless_null $P370, vivify_94
new $P370, "Undef"
- vivify_91:
+ vivify_94:
$P371 = $P370."ast"()
set $P365, $P371
if_366_end:
@@ -5420,12 +5838,12 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>" :subid("33_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<backslash>" :subid("33_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_379
.annotate "line", 154
new $P378, 'ExceptionHandler'
set_addr $P378, control_377
- $P378."handle_types"(58)
+ $P378."handle_types"(57)
push_eh $P378
.lex "self", self
.lex "$/", param_379
@@ -5441,24 +5859,24 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>" :subid("34_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<stopper>" :subid("34_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_386
.annotate "line", 155
new $P385, 'ExceptionHandler'
set_addr $P385, control_384
- $P385."handle_types"(58)
+ $P385."handle_types"(57)
push_eh $P385
.lex "self", self
.lex "$/", param_386
find_lex $P387, "$/"
find_lex $P388, "$/"
- unless_null $P388, vivify_92
+ unless_null $P388, vivify_95
$P388 = root_new ['parrot';'Hash']
- vivify_92:
+ vivify_95:
set $P389, $P388["stopper"]
- unless_null $P389, vivify_93
+ unless_null $P389, vivify_96
new $P389, "Undef"
- vivify_93:
+ vivify_96:
set $S390, $P389
$P391 = $P387."!make"($S390)
.return ($P391)
@@ -5471,12 +5889,12 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>" :subid("35_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<bs>" :subid("35_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_396
.annotate "line", 157
new $P395, 'ExceptionHandler'
set_addr $P395, control_394
- $P395."handle_types"(58)
+ $P395."handle_types"(57)
push_eh $P395
.lex "self", self
.lex "$/", param_396
@@ -5492,12 +5910,12 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>" :subid("36_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<nl>" :subid("36_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_403
.annotate "line", 158
new $P402, 'ExceptionHandler'
set_addr $P402, control_401
- $P402."handle_types"(58)
+ $P402."handle_types"(57)
push_eh $P402
.lex "self", self
.lex "$/", param_403
@@ -5513,12 +5931,12 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>" :subid("37_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<cr>" :subid("37_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_410
.annotate "line", 159
new $P409, 'ExceptionHandler'
set_addr $P409, control_408
- $P409."handle_types"(58)
+ $P409."handle_types"(57)
push_eh $P409
.lex "self", self
.lex "$/", param_410
@@ -5534,12 +5952,12 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>" :subid("38_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<tab>" :subid("38_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_417
.annotate "line", 160
new $P416, 'ExceptionHandler'
set_addr $P416, control_415
- $P416."handle_types"(58)
+ $P416."handle_types"(57)
push_eh $P416
.lex "self", self
.lex "$/", param_417
@@ -5555,359 +5973,461 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>" :subid("39_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<ff>" :subid("39_1272816831.39278") :method :outer("11_1272816831.39278")
.param pmc param_424
-.annotate "line", 162
+.annotate "line", 161
new $P423, 'ExceptionHandler'
set_addr $P423, control_422
- $P423."handle_types"(58)
+ $P423."handle_types"(57)
push_eh $P423
.lex "self", self
.lex "$/", param_424
-.annotate "line", 163
find_lex $P425, "$/"
- find_lex $P428, "$/"
- unless_null $P428, vivify_94
- $P428 = root_new ['parrot';'Hash']
- vivify_94:
- set $P429, $P428["hexint"]
- unless_null $P429, vivify_95
- new $P429, "Undef"
- vivify_95:
- if $P429, if_427
+ $P426 = $P425."!make"("\f")
+ .return ($P426)
+ control_422:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P427, exception, "payload"
+ .return ($P427)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<hex>" :subid("40_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_431
+.annotate "line", 163
+ new $P430, 'ExceptionHandler'
+ set_addr $P430, control_429
+ $P430."handle_types"(57)
+ push_eh $P430
+ .lex "self", self
+ .lex "$/", param_431
+.annotate "line", 164
find_lex $P432, "$/"
- unless_null $P432, vivify_96
- $P432 = root_new ['parrot';'Hash']
- vivify_96:
- set $P433, $P432["hexints"]
- unless_null $P433, vivify_97
- $P433 = root_new ['parrot';'Hash']
+ find_lex $P435, "$/"
+ unless_null $P435, vivify_97
+ $P435 = root_new ['parrot';'Hash']
vivify_97:
- set $P434, $P433["hexint"]
- unless_null $P434, vivify_98
- new $P434, "Undef"
+ set $P436, $P435["hexint"]
+ unless_null $P436, vivify_98
+ new $P436, "Undef"
vivify_98:
- set $P426, $P434
- goto if_427_end
- if_427:
- find_lex $P430, "$/"
- unless_null $P430, vivify_99
- $P430 = root_new ['parrot';'Hash']
+ if $P436, if_434
+ find_lex $P439, "$/"
+ unless_null $P439, vivify_99
+ $P439 = root_new ['parrot';'Hash']
vivify_99:
- set $P431, $P430["hexint"]
- unless_null $P431, vivify_100
- new $P431, "Undef"
+ set $P440, $P439["hexints"]
+ unless_null $P440, vivify_100
+ $P440 = root_new ['parrot';'Hash']
vivify_100:
- set $P426, $P431
- if_427_end:
- $P435 = "ints_to_string"($P426)
- $P436 = $P425."!make"($P435)
-.annotate "line", 162
- .return ($P436)
- control_422:
+ set $P441, $P440["hexint"]
+ unless_null $P441, vivify_101
+ new $P441, "Undef"
+ vivify_101:
+ set $P433, $P441
+ goto if_434_end
+ if_434:
+ find_lex $P437, "$/"
+ unless_null $P437, vivify_102
+ $P437 = root_new ['parrot';'Hash']
+ vivify_102:
+ set $P438, $P437["hexint"]
+ unless_null $P438, vivify_103
+ new $P438, "Undef"
+ vivify_103:
+ set $P433, $P438
+ if_434_end:
+ $P442 = "ints_to_string"($P433)
+ $P443 = $P432."!make"($P442)
+.annotate "line", 163
+ .return ($P443)
+ control_429:
.local pmc exception
.get_results (exception)
- getattribute $P437, exception, "payload"
- .return ($P437)
+ getattribute $P444, exception, "payload"
+ .return ($P444)
.end
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>" :subid("40_1267204685.44293") :method :outer("11_1267204685.44293")
- .param pmc param_441
-.annotate "line", 166
- new $P440, 'ExceptionHandler'
- set_addr $P440, control_439
- $P440."handle_types"(58)
- push_eh $P440
- .lex "self", self
- .lex "$/", param_441
+.sub "quote_escape:sym<oct>" :subid("41_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_448
.annotate "line", 167
- find_lex $P442, "$/"
- find_lex $P445, "$/"
- unless_null $P445, vivify_101
- $P445 = root_new ['parrot';'Hash']
- vivify_101:
- set $P446, $P445["octint"]
- unless_null $P446, vivify_102
- new $P446, "Undef"
- vivify_102:
- if $P446, if_444
+ new $P447, 'ExceptionHandler'
+ set_addr $P447, control_446
+ $P447."handle_types"(57)
+ push_eh $P447
+ .lex "self", self
+ .lex "$/", param_448
+.annotate "line", 168
find_lex $P449, "$/"
- unless_null $P449, vivify_103
- $P449 = root_new ['parrot';'Hash']
- vivify_103:
- set $P450, $P449["octints"]
- unless_null $P450, vivify_104
- $P450 = root_new ['parrot';'Hash']
+ find_lex $P452, "$/"
+ unless_null $P452, vivify_104
+ $P452 = root_new ['parrot';'Hash']
vivify_104:
- set $P451, $P450["octint"]
- unless_null $P451, vivify_105
- new $P451, "Undef"
+ set $P453, $P452["octint"]
+ unless_null $P453, vivify_105
+ new $P453, "Undef"
vivify_105:
- set $P443, $P451
- goto if_444_end
- if_444:
- find_lex $P447, "$/"
- unless_null $P447, vivify_106
- $P447 = root_new ['parrot';'Hash']
+ if $P453, if_451
+ find_lex $P456, "$/"
+ unless_null $P456, vivify_106
+ $P456 = root_new ['parrot';'Hash']
vivify_106:
- set $P448, $P447["octint"]
- unless_null $P448, vivify_107
- new $P448, "Undef"
+ set $P457, $P456["octints"]
+ unless_null $P457, vivify_107
+ $P457 = root_new ['parrot';'Hash']
vivify_107:
- set $P443, $P448
- if_444_end:
- $P452 = "ints_to_string"($P443)
- $P453 = $P442."!make"($P452)
-.annotate "line", 166
- .return ($P453)
- control_439:
+ set $P458, $P457["octint"]
+ unless_null $P458, vivify_108
+ new $P458, "Undef"
+ vivify_108:
+ set $P450, $P458
+ goto if_451_end
+ if_451:
+ find_lex $P454, "$/"
+ unless_null $P454, vivify_109
+ $P454 = root_new ['parrot';'Hash']
+ vivify_109:
+ set $P455, $P454["octint"]
+ unless_null $P455, vivify_110
+ new $P455, "Undef"
+ vivify_110:
+ set $P450, $P455
+ if_451_end:
+ $P459 = "ints_to_string"($P450)
+ $P460 = $P449."!make"($P459)
+.annotate "line", 167
+ .return ($P460)
+ control_446:
.local pmc exception
.get_results (exception)
- getattribute $P454, exception, "payload"
- .return ($P454)
+ getattribute $P461, exception, "payload"
+ .return ($P461)
.end
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>" :subid("41_1267204685.44293") :method :outer("11_1267204685.44293")
- .param pmc param_458
-.annotate "line", 170
- new $P457, 'ExceptionHandler'
- set_addr $P457, control_456
- $P457."handle_types"(58)
- push_eh $P457
+.sub "quote_escape:sym<chr>" :subid("42_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_465
+.annotate "line", 171
+ new $P464, 'ExceptionHandler'
+ set_addr $P464, control_463
+ $P464."handle_types"(57)
+ push_eh $P464
.lex "self", self
- .lex "$/", param_458
+ .lex "$/", param_465
+.annotate "line", 172
+ find_lex $P466, "$/"
+ find_lex $P467, "$/"
+ unless_null $P467, vivify_111
+ $P467 = root_new ['parrot';'Hash']
+ vivify_111:
+ set $P468, $P467["charspec"]
+ unless_null $P468, vivify_112
+ new $P468, "Undef"
+ vivify_112:
+ $P469 = $P468."ast"()
+ $P470 = $P466."!make"($P469)
.annotate "line", 171
- find_lex $P459, "$/"
- find_lex $P460, "$/"
- unless_null $P460, vivify_108
- $P460 = root_new ['parrot';'Hash']
- vivify_108:
- set $P461, $P460["charspec"]
- unless_null $P461, vivify_109
- new $P461, "Undef"
- vivify_109:
- $P462 = $P461."ast"()
- $P463 = $P459."!make"($P462)
-.annotate "line", 170
- .return ($P463)
- control_456:
+ .return ($P470)
+ control_463:
.local pmc exception
.get_results (exception)
- getattribute $P464, exception, "payload"
- .return ($P464)
+ getattribute $P471, exception, "payload"
+ .return ($P471)
.end
.namespace ["HLL";"Actions"]
-.sub "charname" :subid("42_1267204685.44293") :method :outer("11_1267204685.44293")
- .param pmc param_468
-.annotate "line", 174
- new $P467, 'ExceptionHandler'
- set_addr $P467, control_466
- $P467."handle_types"(58)
- push_eh $P467
- .lex "self", self
- .lex "$/", param_468
+.sub "quote_escape:sym<0>" :subid("43_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_475
.annotate "line", 175
- new $P469, "Undef"
- .lex "$codepoint", $P469
-.annotate "line", 176
- find_lex $P472, "$/"
- unless_null $P472, vivify_110
- $P472 = root_new ['parrot';'Hash']
- vivify_110:
- set $P473, $P472["integer"]
- unless_null $P473, vivify_111
- new $P473, "Undef"
- vivify_111:
- if $P473, if_471
-.annotate "line", 177
- $P477 = new ['CodeString']
- find_lex $P478, "$/"
- set $S479, $P478
- $P480 = $P477."charname_to_ord"($S479)
- set $P470, $P480
+ new $P474, 'ExceptionHandler'
+ set_addr $P474, control_473
+ $P474."handle_types"(57)
+ push_eh $P474
+ .lex "self", self
+ .lex "$/", param_475
.annotate "line", 176
- goto if_471_end
- if_471:
- find_lex $P474, "$/"
- unless_null $P474, vivify_112
- $P474 = root_new ['parrot';'Hash']
- vivify_112:
- set $P475, $P474["integer"]
- unless_null $P475, vivify_113
- new $P475, "Undef"
+ find_lex $P476, "$/"
+ $P477 = $P476."!make"(unicode:"\x{0}")
+.annotate "line", 175
+ .return ($P477)
+ control_473:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P478, exception, "payload"
+ .return ($P478)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<misc>" :subid("44_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_482
+.annotate "line", 179
+ new $P481, 'ExceptionHandler'
+ set_addr $P481, control_480
+ $P481."handle_types"(57)
+ push_eh $P481
+ .lex "self", self
+ .lex "$/", param_482
+.annotate "line", 180
+ find_lex $P483, "$/"
+ find_lex $P486, "$/"
+ unless_null $P486, vivify_113
+ $P486 = root_new ['parrot';'Hash']
vivify_113:
- $P476 = $P475."ast"()
- set $P470, $P476
- if_471_end:
- store_lex "$codepoint", $P470
-.annotate "line", 178
- find_lex $P482, "$codepoint"
- set $N483, $P482
- islt $I484, $N483, 0.0
- unless $I484, if_481_end
- find_lex $P485, "$/"
- $P486 = $P485."CURSOR"()
- new $P487, 'String'
- set $P487, "Unrecognized character name "
- find_lex $P488, "$/"
- concat $P489, $P487, $P488
- $P486."panic"($P489)
- if_481_end:
+ set $P487, $P486["textq"]
+ unless_null $P487, vivify_114
+ new $P487, "Undef"
+ vivify_114:
+ if $P487, if_485
+ find_lex $P493, "$/"
+ unless_null $P493, vivify_115
+ $P493 = root_new ['parrot';'Hash']
+ vivify_115:
+ set $P494, $P493["textqq"]
+ unless_null $P494, vivify_116
+ new $P494, "Undef"
+ vivify_116:
+ $P495 = $P494."Str"()
+ set $P484, $P495
+ goto if_485_end
+ if_485:
+ new $P488, "String"
+ assign $P488, "\\"
+ find_lex $P489, "$/"
+ unless_null $P489, vivify_117
+ $P489 = root_new ['parrot';'Hash']
+ vivify_117:
+ set $P490, $P489["textq"]
+ unless_null $P490, vivify_118
+ new $P490, "Undef"
+ vivify_118:
+ $S491 = $P490."Str"()
+ concat $P492, $P488, $S491
+ set $P484, $P492
+ if_485_end:
+ $P496 = $P483."!make"($P484)
.annotate "line", 179
- find_lex $P490, "$/"
- find_lex $P491, "$codepoint"
- set $I492, $P491
- chr $S493, $I492
- $P494 = $P490."!make"($S493)
-.annotate "line", 174
- .return ($P494)
- control_466:
+ .return ($P496)
+ control_480:
.local pmc exception
.get_results (exception)
- getattribute $P495, exception, "payload"
- .return ($P495)
+ getattribute $P497, exception, "payload"
+ .return ($P497)
.end
.namespace ["HLL";"Actions"]
-.sub "charnames" :subid("43_1267204685.44293") :method :outer("11_1267204685.44293")
- .param pmc param_499
-.annotate "line", 182
- .const 'Sub' $P508 = "44_1267204685.44293"
- capture_lex $P508
- new $P498, 'ExceptionHandler'
- set_addr $P498, control_497
- $P498."handle_types"(58)
- push_eh $P498
- .lex "self", self
- .lex "$/", param_499
+.sub "charname" :subid("45_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_501
.annotate "line", 183
- new $P500, "Undef"
- .lex "$str", $P500
- new $P501, "String"
- assign $P501, ""
- store_lex "$str", $P501
+ new $P500, 'ExceptionHandler'
+ set_addr $P500, control_499
+ $P500."handle_types"(57)
+ push_eh $P500
+ .lex "self", self
+ .lex "$/", param_501
.annotate "line", 184
- find_lex $P503, "$/"
- unless_null $P503, vivify_114
- $P503 = root_new ['parrot';'Hash']
- vivify_114:
- set $P504, $P503["charname"]
- unless_null $P504, vivify_115
- new $P504, "Undef"
- vivify_115:
- defined $I505, $P504
- unless $I505, for_undef_116
- iter $P502, $P504
- new $P515, 'ExceptionHandler'
- set_addr $P515, loop514_handler
- $P515."handle_types"(65, 67, 66)
- push_eh $P515
- loop514_test:
- unless $P502, loop514_done
- shift $P506, $P502
- loop514_redo:
- .const 'Sub' $P508 = "44_1267204685.44293"
- capture_lex $P508
- $P508($P506)
- loop514_next:
- goto loop514_test
- loop514_handler:
- .local pmc exception
- .get_results (exception)
- getattribute $P516, exception, 'type'
- eq $P516, 65, loop514_next
- eq $P516, 67, loop514_redo
- loop514_done:
- pop_eh
- for_undef_116:
+ new $P502, "Undef"
+ .lex "$codepoint", $P502
+.annotate "line", 185
+ find_lex $P505, "$/"
+ unless_null $P505, vivify_119
+ $P505 = root_new ['parrot';'Hash']
+ vivify_119:
+ set $P506, $P505["integer"]
+ unless_null $P506, vivify_120
+ new $P506, "Undef"
+ vivify_120:
+ if $P506, if_504
+.annotate "line", 186
+ $P510 = new ['CodeString']
+ find_lex $P511, "$/"
+ set $S512, $P511
+ $P513 = $P510."charname_to_ord"($S512)
+ set $P503, $P513
.annotate "line", 185
- find_lex $P517, "$/"
- find_lex $P518, "$str"
- $P519 = $P517."!make"($P518)
-.annotate "line", 182
- .return ($P519)
- control_497:
+ goto if_504_end
+ if_504:
+ find_lex $P507, "$/"
+ unless_null $P507, vivify_121
+ $P507 = root_new ['parrot';'Hash']
+ vivify_121:
+ set $P508, $P507["integer"]
+ unless_null $P508, vivify_122
+ new $P508, "Undef"
+ vivify_122:
+ $P509 = $P508."ast"()
+ set $P503, $P509
+ if_504_end:
+ store_lex "$codepoint", $P503
+.annotate "line", 187
+ find_lex $P515, "$codepoint"
+ set $N516, $P515
+ islt $I517, $N516, 0.0
+ unless $I517, if_514_end
+ find_lex $P518, "$/"
+ $P519 = $P518."CURSOR"()
+ new $P520, 'String'
+ set $P520, "Unrecognized character name "
+ find_lex $P521, "$/"
+ concat $P522, $P520, $P521
+ $P519."panic"($P522)
+ if_514_end:
+.annotate "line", 188
+ find_lex $P523, "$/"
+ find_lex $P524, "$codepoint"
+ set $I525, $P524
+ chr $S526, $I525
+ $P527 = $P523."!make"($S526)
+.annotate "line", 183
+ .return ($P527)
+ control_499:
.local pmc exception
.get_results (exception)
- getattribute $P520, exception, "payload"
- .return ($P520)
+ getattribute $P528, exception, "payload"
+ .return ($P528)
.end
.namespace ["HLL";"Actions"]
-.sub "_block507" :anon :subid("44_1267204685.44293") :outer("43_1267204685.44293")
- .param pmc param_509
-.annotate "line", 184
- .lex "$_", param_509
- find_lex $P510, "$str"
- find_lex $P511, "$_"
- $S512 = $P511."ast"()
- concat $P513, $P510, $S512
- store_lex "$str", $P513
- .return ($P513)
+.sub "charnames" :subid("46_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_532
+.annotate "line", 191
+ .const 'Sub' $P541 = "47_1272816831.39278"
+ capture_lex $P541
+ new $P531, 'ExceptionHandler'
+ set_addr $P531, control_530
+ $P531."handle_types"(57)
+ push_eh $P531
+ .lex "self", self
+ .lex "$/", param_532
+.annotate "line", 192
+ new $P533, "Undef"
+ .lex "$str", $P533
+ new $P534, "String"
+ assign $P534, ""
+ store_lex "$str", $P534
+.annotate "line", 193
+ find_lex $P536, "$/"
+ unless_null $P536, vivify_123
+ $P536 = root_new ['parrot';'Hash']
+ vivify_123:
+ set $P537, $P536["charname"]
+ unless_null $P537, vivify_124
+ new $P537, "Undef"
+ vivify_124:
+ defined $I538, $P537
+ unless $I538, for_undef_125
+ iter $P535, $P537
+ new $P548, 'ExceptionHandler'
+ set_addr $P548, loop547_handler
+ $P548."handle_types"(64, 66, 65)
+ push_eh $P548
+ loop547_test:
+ unless $P535, loop547_done
+ shift $P539, $P535
+ loop547_redo:
+ .const 'Sub' $P541 = "47_1272816831.39278"
+ capture_lex $P541
+ $P541($P539)
+ loop547_next:
+ goto loop547_test
+ loop547_handler:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P549, exception, 'type'
+ eq $P549, 64, loop547_next
+ eq $P549, 66, loop547_redo
+ loop547_done:
+ pop_eh
+ for_undef_125:
+.annotate "line", 194
+ find_lex $P550, "$/"
+ find_lex $P551, "$str"
+ $P552 = $P550."!make"($P551)
+.annotate "line", 191
+ .return ($P552)
+ control_530:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P553, exception, "payload"
+ .return ($P553)
.end
.namespace ["HLL";"Actions"]
-.sub "charspec" :subid("45_1267204685.44293") :method :outer("11_1267204685.44293")
- .param pmc param_524
-.annotate "line", 188
- new $P523, 'ExceptionHandler'
- set_addr $P523, control_522
- $P523."handle_types"(58)
- push_eh $P523
+.sub "_block540" :anon :subid("47_1272816831.39278") :outer("46_1272816831.39278")
+ .param pmc param_542
+.annotate "line", 193
+ .lex "$_", param_542
+ find_lex $P543, "$str"
+ find_lex $P544, "$_"
+ $S545 = $P544."ast"()
+ concat $P546, $P543, $S545
+ store_lex "$str", $P546
+ .return ($P546)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charspec" :subid("48_1272816831.39278") :method :outer("11_1272816831.39278")
+ .param pmc param_557
+.annotate "line", 197
+ new $P556, 'ExceptionHandler'
+ set_addr $P556, control_555
+ $P556."handle_types"(57)
+ push_eh $P556
.lex "self", self
- .lex "$/", param_524
-.annotate "line", 189
- find_lex $P525, "$/"
- find_lex $P528, "$/"
- unless_null $P528, vivify_117
- $P528 = root_new ['parrot';'Hash']
- vivify_117:
- set $P529, $P528["charnames"]
- unless_null $P529, vivify_118
- new $P529, "Undef"
- vivify_118:
- if $P529, if_527
- find_lex $P533, "$/"
- $I534 = "string_to_int"($P533, 10)
- chr $S535, $I534
- new $P526, 'String'
- set $P526, $S535
- goto if_527_end
- if_527:
- find_lex $P530, "$/"
- unless_null $P530, vivify_119
- $P530 = root_new ['parrot';'Hash']
- vivify_119:
- set $P531, $P530["charnames"]
- unless_null $P531, vivify_120
- new $P531, "Undef"
- vivify_120:
- $P532 = $P531."ast"()
- set $P526, $P532
- if_527_end:
- $P536 = $P525."!make"($P526)
-.annotate "line", 188
- .return ($P536)
- control_522:
+ .lex "$/", param_557
+.annotate "line", 198
+ find_lex $P558, "$/"
+ find_lex $P561, "$/"
+ unless_null $P561, vivify_126
+ $P561 = root_new ['parrot';'Hash']
+ vivify_126:
+ set $P562, $P561["charnames"]
+ unless_null $P562, vivify_127
+ new $P562, "Undef"
+ vivify_127:
+ if $P562, if_560
+ find_lex $P566, "$/"
+ $I567 = "string_to_int"($P566, 10)
+ chr $S568, $I567
+ new $P559, 'String'
+ set $P559, $S568
+ goto if_560_end
+ if_560:
+ find_lex $P563, "$/"
+ unless_null $P563, vivify_128
+ $P563 = root_new ['parrot';'Hash']
+ vivify_128:
+ set $P564, $P563["charnames"]
+ unless_null $P564, vivify_129
+ new $P564, "Undef"
+ vivify_129:
+ $P565 = $P564."ast"()
+ set $P559, $P565
+ if_560_end:
+ $P569 = $P558."!make"($P559)
+.annotate "line", 197
+ .return ($P569)
+ control_555:
.local pmc exception
.get_results (exception)
- getattribute $P537, exception, "payload"
- .return ($P537)
+ getattribute $P570, exception, "payload"
+ .return ($P570)
.end
### .include 'gen/hllcompiler.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204686.55407")
+.sub "_block11" :anon :subid("10_1272816832.1082")
.annotate "line", 0
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
capture_lex $P14
@@ -5921,9 +6441,9 @@
.namespace []
-.sub "" :load :init :subid("post25") :outer("10_1267204686.55407")
+.sub "" :load :init :subid("post25") :outer("10_1272816832.1082")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204686.55407"
+ .const 'Sub' $P12 = "10_1272816832.1082"
.local pmc block
set block, $P12
.annotate "line", 2
@@ -5937,28 +6457,28 @@
.namespace ["HLL";"Compiler"]
-.sub "_block13" :subid("11_1267204686.55407") :outer("10_1267204686.55407")
+.sub "_block13" :subid("11_1272816832.1082") :outer("10_1272816832.1082")
.annotate "line", 6
- .const 'Sub' $P187 = "20_1267204686.55407"
+ .const 'Sub' $P187 = "20_1272816832.1082"
capture_lex $P187
- .const 'Sub' $P152 = "18_1267204686.55407"
+ .const 'Sub' $P152 = "18_1272816832.1082"
capture_lex $P152
- .const 'Sub' $P137 = "17_1267204686.55407"
+ .const 'Sub' $P137 = "17_1272816832.1082"
capture_lex $P137
- .const 'Sub' $P121 = "16_1267204686.55407"
+ .const 'Sub' $P121 = "16_1272816832.1082"
capture_lex $P121
- .const 'Sub' $P32 = "13_1267204686.55407"
+ .const 'Sub' $P32 = "13_1272816832.1082"
capture_lex $P32
- .const 'Sub' $P15 = "12_1267204686.55407"
+ .const 'Sub' $P15 = "12_1272816832.1082"
capture_lex $P15
.annotate "line", 14
- .const 'Sub' $P15 = "12_1267204686.55407"
+ .const 'Sub' $P15 = "12_1272816832.1082"
capture_lex $P15
.lex "value_type", $P15
.annotate "line", 10
find_lex $P31, "value_type"
.annotate "line", 69
- .const 'Sub' $P187 = "20_1267204686.55407"
+ .const 'Sub' $P187 = "20_1272816832.1082"
capture_lex $P187
.annotate "line", 6
.return ($P187)
@@ -5966,7 +6486,7 @@
.namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1267204686.55407")
+.sub "" :load :init :subid("post26") :outer("11_1272816832.1082")
.annotate "line", 6
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
.local pmc block
@@ -5978,12 +6498,12 @@
.namespace ["HLL";"Compiler"]
-.sub "value_type" :subid("12_1267204686.55407") :outer("11_1267204686.55407")
+.sub "value_type" :subid("12_1272816832.1082") :outer("11_1272816832.1082")
.param pmc param_18
.annotate "line", 14
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
- $P17."handle_types"(58)
+ $P17."handle_types"(57)
push_eh $P17
.lex "$value", param_18
.annotate "line", 15
@@ -6022,19 +6542,19 @@
.namespace ["HLL";"Compiler"]
-.sub "get_exports" :subid("13_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "get_exports" :subid("13_1272816832.1082") :method :outer("11_1272816832.1082")
.param pmc param_35
.param pmc param_38 :slurpy
.param pmc param_36 :optional :named("tagset")
.param int has_param_36 :opt_flag
.annotate "line", 20
- .const 'Sub' $P104 = "15_1267204686.55407"
+ .const 'Sub' $P104 = "15_1272816832.1082"
capture_lex $P104
- .const 'Sub' $P83 = "14_1267204686.55407"
+ .const 'Sub' $P83 = "14_1272816832.1082"
capture_lex $P83
new $P34, 'ExceptionHandler'
set_addr $P34, control_33
- $P34."handle_types"(58)
+ $P34."handle_types"(57)
push_eh $P34
.lex "self", self
.lex "$module", param_35
@@ -6130,13 +6650,13 @@
iter $P99, $P100
new $P117, 'ExceptionHandler'
set_addr $P117, loop116_handler
- $P117."handle_types"(65, 67, 66)
+ $P117."handle_types"(64, 66, 65)
push_eh $P117
loop116_test:
unless $P99, loop116_done
shift $P102, $P99
loop116_redo:
- .const 'Sub' $P104 = "15_1267204686.55407"
+ .const 'Sub' $P104 = "15_1272816832.1082"
capture_lex $P104
$P104($P102)
loop116_next:
@@ -6145,8 +6665,8 @@
.local pmc exception
.get_results (exception)
getattribute $P118, exception, 'type'
- eq $P118, 65, loop116_next
- eq $P118, 67, loop116_redo
+ eq $P118, 64, loop116_next
+ eq $P118, 66, loop116_redo
loop116_done:
pop_eh
for_undef_31:
@@ -6160,13 +6680,13 @@
iter $P78, $P79
new $P97, 'ExceptionHandler'
set_addr $P97, loop96_handler
- $P97."handle_types"(65, 67, 66)
+ $P97."handle_types"(64, 66, 65)
push_eh $P97
loop96_test:
unless $P78, loop96_done
shift $P81, $P78
loop96_redo:
- .const 'Sub' $P83 = "14_1267204686.55407"
+ .const 'Sub' $P83 = "14_1272816832.1082"
capture_lex $P83
$P83($P81)
loop96_next:
@@ -6175,8 +6695,8 @@
.local pmc exception
.get_results (exception)
getattribute $P98, exception, 'type'
- eq $P98, 65, loop96_next
- eq $P98, 67, loop96_redo
+ eq $P98, 64, loop96_next
+ eq $P98, 66, loop96_redo
loop96_done:
pop_eh
for_undef_34:
@@ -6194,7 +6714,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block103" :anon :subid("15_1267204686.55407") :outer("13_1267204686.55407")
+.sub "_block103" :anon :subid("15_1272816832.1082") :outer("13_1272816832.1082")
.param pmc param_106
.annotate "line", 40
new $P105, "Undef"
@@ -6226,7 +6746,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block82" :anon :subid("14_1267204686.55407") :outer("13_1267204686.55407")
+.sub "_block82" :anon :subid("14_1272816832.1082") :outer("13_1272816832.1082")
.param pmc param_85
.annotate "line", 34
new $P84, "Undef"
@@ -6265,12 +6785,12 @@
.namespace ["HLL";"Compiler"]
-.sub "get_module" :subid("16_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "get_module" :subid("16_1272816832.1082") :method :outer("11_1272816832.1082")
.param pmc param_124
.annotate "line", 47
new $P123, 'ExceptionHandler'
set_addr $P123, control_122
- $P123."handle_types"(58)
+ $P123."handle_types"(57)
push_eh $P123
.lex "self", self
.lex "$name", param_124
@@ -6305,13 +6825,13 @@
.namespace ["HLL";"Compiler"]
-.sub "language" :subid("17_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "language" :subid("17_1272816832.1082") :method :outer("11_1272816832.1082")
.param pmc param_140 :optional
.param int has_param_140 :opt_flag
.annotate "line", 53
new $P139, 'ExceptionHandler'
set_addr $P139, control_138
- $P139."handle_types"(58)
+ $P139."handle_types"(57)
push_eh $P139
.lex "self", self
if has_param_140, optparam_40
@@ -6349,14 +6869,14 @@
.namespace ["HLL";"Compiler"]
-.sub "load_module" :subid("18_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "load_module" :subid("18_1272816832.1082") :method :outer("11_1272816832.1082")
.param pmc param_155
.annotate "line", 61
- .const 'Sub' $P165 = "19_1267204686.55407"
+ .const 'Sub' $P165 = "19_1272816832.1082"
capture_lex $P165
new $P154, 'ExceptionHandler'
set_addr $P154, control_153
- $P154."handle_types"(58)
+ $P154."handle_types"(57)
push_eh $P154
.lex "self", self
.lex "$name", param_155
@@ -6379,7 +6899,7 @@
assign $P163, 0
store_lex "$loaded", $P163
.annotate "line", 64
- .const 'Sub' $P165 = "19_1267204686.55407"
+ .const 'Sub' $P165 = "19_1272816832.1082"
capture_lex $P165
$P165()
.annotate "line", 65
@@ -6408,11 +6928,11 @@
.namespace ["HLL";"Compiler"]
-.sub "_block164" :anon :subid("19_1267204686.55407") :outer("18_1267204686.55407")
+.sub "_block164" :anon :subid("19_1272816832.1082") :outer("18_1272816832.1082")
.annotate "line", 64
new $P172, 'ExceptionHandler'
set_addr $P172, control_171
- $P172."handle_types_except"(58, 59, 60, 61, 63, 64, 65, 66, 67)
+ $P172."handle_types_except"(57, 58, 59, 60, 62, 63, 64, 65, 66)
push_eh $P172
find_lex $P166, "$base"
concat $P167, $P166, ".pbc"
@@ -6441,15 +6961,15 @@
.namespace ["HLL";"Compiler"]
-.sub "import" :subid("20_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "import" :subid("20_1272816832.1082") :method :outer("11_1272816832.1082")
.param pmc param_190
.param pmc param_191
.annotate "line", 69
- .const 'Sub' $P197 = "21_1267204686.55407"
+ .const 'Sub' $P197 = "21_1272816832.1082"
capture_lex $P197
new $P189, 'ExceptionHandler'
set_addr $P189, control_188
- $P189."handle_types"(58)
+ $P189."handle_types"(57)
push_eh $P189
.lex "self", self
.lex "$target", param_190
@@ -6461,13 +6981,13 @@
iter $P192, $P193
new $P279, 'ExceptionHandler'
set_addr $P279, loop278_handler
- $P279."handle_types"(65, 67, 66)
+ $P279."handle_types"(64, 66, 65)
push_eh $P279
loop278_test:
unless $P192, loop278_done
shift $P195, $P192
loop278_redo:
- .const 'Sub' $P197 = "21_1267204686.55407"
+ .const 'Sub' $P197 = "21_1272816832.1082"
capture_lex $P197
$P197($P195)
loop278_next:
@@ -6476,8 +6996,8 @@
.local pmc exception
.get_results (exception)
getattribute $P280, exception, 'type'
- eq $P280, 65, loop278_next
- eq $P280, 67, loop278_redo
+ eq $P280, 64, loop278_next
+ eq $P280, 66, loop278_redo
loop278_done:
pop_eh
for_undef_42:
@@ -6492,14 +7012,14 @@
.namespace ["HLL";"Compiler"]
-.sub "_block196" :anon :subid("21_1267204686.55407") :outer("20_1267204686.55407")
+.sub "_block196" :anon :subid("21_1272816832.1082") :outer("20_1272816832.1082")
.param pmc param_200
.annotate "line", 70
- .const 'Sub' $P267 = "24_1267204686.55407"
+ .const 'Sub' $P267 = "24_1272816832.1082"
capture_lex $P267
- .const 'Sub' $P247 = "23_1267204686.55407"
+ .const 'Sub' $P247 = "23_1272816832.1082"
capture_lex $P247
- .const 'Sub' $P218 = "22_1267204686.55407"
+ .const 'Sub' $P218 = "22_1272816832.1082"
capture_lex $P218
.annotate "line", 71
new $P198, "Undef"
@@ -6541,13 +7061,13 @@
iter $P262, $P263
new $P276, 'ExceptionHandler'
set_addr $P276, loop275_handler
- $P276."handle_types"(65, 67, 66)
+ $P276."handle_types"(64, 66, 65)
push_eh $P276
loop275_test:
unless $P262, loop275_done
shift $P265, $P262
loop275_redo:
- .const 'Sub' $P267 = "24_1267204686.55407"
+ .const 'Sub' $P267 = "24_1272816832.1082"
capture_lex $P267
$P267($P265)
loop275_next:
@@ -6556,8 +7076,8 @@
.local pmc exception
.get_results (exception)
getattribute $P277, exception, 'type'
- eq $P277, 65, loop275_next
- eq $P277, 67, loop275_redo
+ eq $P277, 64, loop275_next
+ eq $P277, 66, loop275_redo
loop275_done:
pop_eh
for_undef_43:
@@ -6573,13 +7093,13 @@
iter $P242, $P243
new $P260, 'ExceptionHandler'
set_addr $P260, loop259_handler
- $P260."handle_types"(65, 67, 66)
+ $P260."handle_types"(64, 66, 65)
push_eh $P260
loop259_test:
unless $P242, loop259_done
shift $P245, $P242
loop259_redo:
- .const 'Sub' $P247 = "23_1267204686.55407"
+ .const 'Sub' $P247 = "23_1272816832.1082"
capture_lex $P247
$P247($P245)
loop259_next:
@@ -6588,8 +7108,8 @@
.local pmc exception
.get_results (exception)
getattribute $P261, exception, 'type'
- eq $P261, 65, loop259_next
- eq $P261, 67, loop259_redo
+ eq $P261, 64, loop259_next
+ eq $P261, 66, loop259_redo
loop259_done:
pop_eh
for_undef_45:
@@ -6607,13 +7127,13 @@
iter $P213, $P214
new $P232, 'ExceptionHandler'
set_addr $P232, loop231_handler
- $P232."handle_types"(65, 67, 66)
+ $P232."handle_types"(64, 66, 65)
push_eh $P232
loop231_test:
unless $P213, loop231_done
shift $P216, $P213
loop231_redo:
- .const 'Sub' $P218 = "22_1267204686.55407"
+ .const 'Sub' $P218 = "22_1272816832.1082"
capture_lex $P218
$P218($P216)
loop231_next:
@@ -6622,8 +7142,8 @@
.local pmc exception
.get_results (exception)
getattribute $P233, exception, 'type'
- eq $P233, 65, loop231_next
- eq $P233, 67, loop231_redo
+ eq $P233, 64, loop231_next
+ eq $P233, 66, loop231_redo
loop231_done:
pop_eh
for_undef_46:
@@ -6636,7 +7156,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block266" :anon :subid("24_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block266" :anon :subid("24_1272816832.1082") :outer("21_1272816832.1082")
.param pmc param_268
.annotate "line", 80
.lex "$_", param_268
@@ -6656,7 +7176,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block246" :anon :subid("23_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block246" :anon :subid("23_1272816832.1082") :outer("21_1272816832.1082")
.param pmc param_248
.annotate "line", 77
.lex "$_", param_248
@@ -6676,7 +7196,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block217" :anon :subid("22_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block217" :anon :subid("22_1272816832.1082") :outer("21_1272816832.1082")
.param pmc param_219
.annotate "line", 74
.lex "$_", param_219
Modified: branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/NQP-s0.pir Wed May 5 08:45:29 2010 (r46302)
@@ -15,391 +15,393 @@
### .include 'gen/nqp-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204702.05125")
+.sub "_block11" :anon :subid("10_1272816833.94956")
.annotate "line", 0
get_hll_global $P14, ["NQP";"Grammar"], "_block13"
capture_lex $P14
.annotate "line", 4
get_hll_global $P14, ["NQP";"Grammar"], "_block13"
capture_lex $P14
- $P1296 = $P14()
+ $P1304 = $P14()
.annotate "line", 1
- .return ($P1296)
+ .return ($P1304)
.end
.namespace []
-.sub "" :load :init :subid("post331") :outer("10_1267204702.05125")
+.sub "" :load :init :subid("post333") :outer("10_1272816833.94956")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204702.05125"
+ .const 'Sub' $P12 = "10_1272816833.94956"
.local pmc block
set block, $P12
- $P1297 = get_root_global ["parrot"], "P6metaclass"
- $P1297."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+ $P1305 = get_root_global ["parrot"], "P6metaclass"
+ $P1305."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
.end
.namespace ["NQP";"Grammar"]
-.sub "_block13" :subid("11_1267204702.05125") :outer("10_1267204702.05125")
+.sub "_block13" :subid("11_1272816833.94956") :outer("10_1272816833.94956")
.annotate "line", 4
- get_hll_global $P1240, ["NQP";"Regex"], "_block1239"
- capture_lex $P1240
- .const 'Sub' $P1226 = "317_1267204702.05125"
- capture_lex $P1226
- .const 'Sub' $P1220 = "315_1267204702.05125"
- capture_lex $P1220
- .const 'Sub' $P1214 = "313_1267204702.05125"
- capture_lex $P1214
- .const 'Sub' $P1207 = "311_1267204702.05125"
- capture_lex $P1207
- .const 'Sub' $P1200 = "309_1267204702.05125"
- capture_lex $P1200
- .const 'Sub' $P1193 = "307_1267204702.05125"
- capture_lex $P1193
- .const 'Sub' $P1186 = "305_1267204702.05125"
- capture_lex $P1186
- .const 'Sub' $P1180 = "303_1267204702.05125"
- capture_lex $P1180
- .const 'Sub' $P1173 = "301_1267204702.05125"
- capture_lex $P1173
- .const 'Sub' $P1166 = "299_1267204702.05125"
- capture_lex $P1166
- .const 'Sub' $P1159 = "297_1267204702.05125"
- capture_lex $P1159
- .const 'Sub' $P1152 = "295_1267204702.05125"
- capture_lex $P1152
- .const 'Sub' $P1145 = "293_1267204702.05125"
- capture_lex $P1145
- .const 'Sub' $P1138 = "291_1267204702.05125"
- capture_lex $P1138
- .const 'Sub' $P1131 = "289_1267204702.05125"
- capture_lex $P1131
- .const 'Sub' $P1124 = "287_1267204702.05125"
- capture_lex $P1124
- .const 'Sub' $P1117 = "285_1267204702.05125"
- capture_lex $P1117
- .const 'Sub' $P1110 = "283_1267204702.05125"
- capture_lex $P1110
- .const 'Sub' $P1103 = "281_1267204702.05125"
- capture_lex $P1103
- .const 'Sub' $P1096 = "279_1267204702.05125"
- capture_lex $P1096
- .const 'Sub' $P1089 = "277_1267204702.05125"
- capture_lex $P1089
- .const 'Sub' $P1082 = "275_1267204702.05125"
- capture_lex $P1082
- .const 'Sub' $P1075 = "273_1267204702.05125"
- capture_lex $P1075
- .const 'Sub' $P1068 = "271_1267204702.05125"
- capture_lex $P1068
- .const 'Sub' $P1061 = "269_1267204702.05125"
- capture_lex $P1061
- .const 'Sub' $P1054 = "267_1267204702.05125"
- capture_lex $P1054
- .const 'Sub' $P1047 = "265_1267204702.05125"
- capture_lex $P1047
- .const 'Sub' $P1040 = "263_1267204702.05125"
- capture_lex $P1040
- .const 'Sub' $P1033 = "261_1267204702.05125"
- capture_lex $P1033
- .const 'Sub' $P1026 = "259_1267204702.05125"
- capture_lex $P1026
- .const 'Sub' $P1019 = "257_1267204702.05125"
- capture_lex $P1019
- .const 'Sub' $P1012 = "255_1267204702.05125"
- capture_lex $P1012
- .const 'Sub' $P1005 = "253_1267204702.05125"
- capture_lex $P1005
- .const 'Sub' $P998 = "251_1267204702.05125"
- capture_lex $P998
- .const 'Sub' $P992 = "249_1267204702.05125"
- capture_lex $P992
- .const 'Sub' $P985 = "247_1267204702.05125"
- capture_lex $P985
- .const 'Sub' $P978 = "245_1267204702.05125"
- capture_lex $P978
- .const 'Sub' $P971 = "243_1267204702.05125"
- capture_lex $P971
- .const 'Sub' $P964 = "241_1267204702.05125"
- capture_lex $P964
- .const 'Sub' $P957 = "239_1267204702.05125"
- capture_lex $P957
- .const 'Sub' $P950 = "237_1267204702.05125"
- capture_lex $P950
- .const 'Sub' $P943 = "235_1267204702.05125"
- capture_lex $P943
- .const 'Sub' $P937 = "233_1267204702.05125"
- capture_lex $P937
- .const 'Sub' $P931 = "231_1267204702.05125"
- capture_lex $P931
- .const 'Sub' $P926 = "229_1267204702.05125"
- capture_lex $P926
- .const 'Sub' $P920 = "227_1267204702.05125"
- capture_lex $P920
- .const 'Sub' $P914 = "225_1267204702.05125"
- capture_lex $P914
- .const 'Sub' $P909 = "223_1267204702.05125"
- capture_lex $P909
- .const 'Sub' $P904 = "221_1267204702.05125"
- capture_lex $P904
- .const 'Sub' $P897 = "219_1267204702.05125"
+ get_hll_global $P1248, ["NQP";"Regex"], "_block1247"
+ capture_lex $P1248
+ .const 'Sub' $P1234 = "319_1272816833.94956"
+ capture_lex $P1234
+ .const 'Sub' $P1228 = "317_1272816833.94956"
+ capture_lex $P1228
+ .const 'Sub' $P1222 = "315_1272816833.94956"
+ capture_lex $P1222
+ .const 'Sub' $P1215 = "313_1272816833.94956"
+ capture_lex $P1215
+ .const 'Sub' $P1208 = "311_1272816833.94956"
+ capture_lex $P1208
+ .const 'Sub' $P1201 = "309_1272816833.94956"
+ capture_lex $P1201
+ .const 'Sub' $P1194 = "307_1272816833.94956"
+ capture_lex $P1194
+ .const 'Sub' $P1188 = "305_1272816833.94956"
+ capture_lex $P1188
+ .const 'Sub' $P1181 = "303_1272816833.94956"
+ capture_lex $P1181
+ .const 'Sub' $P1174 = "301_1272816833.94956"
+ capture_lex $P1174
+ .const 'Sub' $P1167 = "299_1272816833.94956"
+ capture_lex $P1167
+ .const 'Sub' $P1160 = "297_1272816833.94956"
+ capture_lex $P1160
+ .const 'Sub' $P1153 = "295_1272816833.94956"
+ capture_lex $P1153
+ .const 'Sub' $P1146 = "293_1272816833.94956"
+ capture_lex $P1146
+ .const 'Sub' $P1139 = "291_1272816833.94956"
+ capture_lex $P1139
+ .const 'Sub' $P1132 = "289_1272816833.94956"
+ capture_lex $P1132
+ .const 'Sub' $P1125 = "287_1272816833.94956"
+ capture_lex $P1125
+ .const 'Sub' $P1118 = "285_1272816833.94956"
+ capture_lex $P1118
+ .const 'Sub' $P1111 = "283_1272816833.94956"
+ capture_lex $P1111
+ .const 'Sub' $P1104 = "281_1272816833.94956"
+ capture_lex $P1104
+ .const 'Sub' $P1097 = "279_1272816833.94956"
+ capture_lex $P1097
+ .const 'Sub' $P1090 = "277_1272816833.94956"
+ capture_lex $P1090
+ .const 'Sub' $P1083 = "275_1272816833.94956"
+ capture_lex $P1083
+ .const 'Sub' $P1076 = "273_1272816833.94956"
+ capture_lex $P1076
+ .const 'Sub' $P1069 = "271_1272816833.94956"
+ capture_lex $P1069
+ .const 'Sub' $P1062 = "269_1272816833.94956"
+ capture_lex $P1062
+ .const 'Sub' $P1055 = "267_1272816833.94956"
+ capture_lex $P1055
+ .const 'Sub' $P1048 = "265_1272816833.94956"
+ capture_lex $P1048
+ .const 'Sub' $P1041 = "263_1272816833.94956"
+ capture_lex $P1041
+ .const 'Sub' $P1034 = "261_1272816833.94956"
+ capture_lex $P1034
+ .const 'Sub' $P1027 = "259_1272816833.94956"
+ capture_lex $P1027
+ .const 'Sub' $P1020 = "257_1272816833.94956"
+ capture_lex $P1020
+ .const 'Sub' $P1013 = "255_1272816833.94956"
+ capture_lex $P1013
+ .const 'Sub' $P1006 = "253_1272816833.94956"
+ capture_lex $P1006
+ .const 'Sub' $P1000 = "251_1272816833.94956"
+ capture_lex $P1000
+ .const 'Sub' $P993 = "249_1272816833.94956"
+ capture_lex $P993
+ .const 'Sub' $P986 = "247_1272816833.94956"
+ capture_lex $P986
+ .const 'Sub' $P979 = "245_1272816833.94956"
+ capture_lex $P979
+ .const 'Sub' $P972 = "243_1272816833.94956"
+ capture_lex $P972
+ .const 'Sub' $P965 = "241_1272816833.94956"
+ capture_lex $P965
+ .const 'Sub' $P958 = "239_1272816833.94956"
+ capture_lex $P958
+ .const 'Sub' $P951 = "237_1272816833.94956"
+ capture_lex $P951
+ .const 'Sub' $P945 = "235_1272816833.94956"
+ capture_lex $P945
+ .const 'Sub' $P939 = "233_1272816833.94956"
+ capture_lex $P939
+ .const 'Sub' $P934 = "231_1272816833.94956"
+ capture_lex $P934
+ .const 'Sub' $P928 = "229_1272816833.94956"
+ capture_lex $P928
+ .const 'Sub' $P922 = "227_1272816833.94956"
+ capture_lex $P922
+ .const 'Sub' $P917 = "225_1272816833.94956"
+ capture_lex $P917
+ .const 'Sub' $P912 = "223_1272816833.94956"
+ capture_lex $P912
+ .const 'Sub' $P905 = "221_1272816833.94956"
+ capture_lex $P905
+ .const 'Sub' $P897 = "219_1272816833.94956"
capture_lex $P897
- .const 'Sub' $P889 = "217_1267204702.05125"
- capture_lex $P889
- .const 'Sub' $P884 = "215_1267204702.05125"
- capture_lex $P884
- .const 'Sub' $P879 = "213_1267204702.05125"
- capture_lex $P879
- .const 'Sub' $P874 = "211_1267204702.05125"
+ .const 'Sub' $P892 = "217_1272816833.94956"
+ capture_lex $P892
+ .const 'Sub' $P887 = "215_1272816833.94956"
+ capture_lex $P887
+ .const 'Sub' $P882 = "213_1272816833.94956"
+ capture_lex $P882
+ .const 'Sub' $P874 = "211_1272816833.94956"
capture_lex $P874
- .const 'Sub' $P866 = "209_1267204702.05125"
+ .const 'Sub' $P866 = "209_1272816833.94956"
capture_lex $P866
- .const 'Sub' $P858 = "207_1267204702.05125"
- capture_lex $P858
- .const 'Sub' $P853 = "205_1267204702.05125"
- capture_lex $P853
- .const 'Sub' $P848 = "203_1267204702.05125"
- capture_lex $P848
- .const 'Sub' $P842 = "201_1267204702.05125"
- capture_lex $P842
- .const 'Sub' $P836 = "199_1267204702.05125"
- capture_lex $P836
- .const 'Sub' $P830 = "197_1267204702.05125"
- capture_lex $P830
- .const 'Sub' $P824 = "195_1267204702.05125"
- capture_lex $P824
- .const 'Sub' $P818 = "193_1267204702.05125"
- capture_lex $P818
- .const 'Sub' $P813 = "191_1267204702.05125"
- capture_lex $P813
- .const 'Sub' $P808 = "189_1267204702.05125"
- capture_lex $P808
- .const 'Sub' $P795 = "185_1267204702.05125"
- capture_lex $P795
- .const 'Sub' $P787 = "183_1267204702.05125"
- capture_lex $P787
- .const 'Sub' $P781 = "181_1267204702.05125"
- capture_lex $P781
- .const 'Sub' $P774 = "179_1267204702.05125"
- capture_lex $P774
- .const 'Sub' $P768 = "177_1267204702.05125"
- capture_lex $P768
- .const 'Sub' $P760 = "175_1267204702.05125"
- capture_lex $P760
- .const 'Sub' $P752 = "173_1267204702.05125"
- capture_lex $P752
- .const 'Sub' $P746 = "171_1267204702.05125"
- capture_lex $P746
- .const 'Sub' $P740 = "169_1267204702.05125"
- capture_lex $P740
- .const 'Sub' $P725 = "165_1267204702.05125"
- capture_lex $P725
- .const 'Sub' $P688 = "163_1267204702.05125"
- capture_lex $P688
- .const 'Sub' $P680 = "161_1267204702.05125"
- capture_lex $P680
- .const 'Sub' $P674 = "159_1267204702.05125"
- capture_lex $P674
- .const 'Sub' $P664 = "157_1267204702.05125"
- capture_lex $P664
- .const 'Sub' $P649 = "155_1267204702.05125"
- capture_lex $P649
- .const 'Sub' $P640 = "153_1267204702.05125"
- capture_lex $P640
- .const 'Sub' $P621 = "151_1267204702.05125"
- capture_lex $P621
- .const 'Sub' $P597 = "149_1267204702.05125"
- capture_lex $P597
- .const 'Sub' $P590 = "147_1267204702.05125"
- capture_lex $P590
- .const 'Sub' $P583 = "145_1267204702.05125"
- capture_lex $P583
- .const 'Sub' $P573 = "141_1267204702.05125"
- capture_lex $P573
- .const 'Sub' $P562 = "139_1267204702.05125"
- capture_lex $P562
- .const 'Sub' $P555 = "137_1267204702.05125"
- capture_lex $P555
- .const 'Sub' $P548 = "135_1267204702.05125"
- capture_lex $P548
- .const 'Sub' $P541 = "133_1267204702.05125"
- capture_lex $P541
- .const 'Sub' $P514 = "129_1267204702.05125"
- capture_lex $P514
- .const 'Sub' $P505 = "127_1267204702.05125"
- capture_lex $P505
- .const 'Sub' $P498 = "125_1267204702.05125"
- capture_lex $P498
- .const 'Sub' $P489 = "121_1267204702.05125"
- capture_lex $P489
- .const 'Sub' $P484 = "119_1267204702.05125"
- capture_lex $P484
- .const 'Sub' $P472 = "117_1267204702.05125"
- capture_lex $P472
- .const 'Sub' $P460 = "115_1267204702.05125"
- capture_lex $P460
- .const 'Sub' $P452 = "113_1267204702.05125"
- capture_lex $P452
- .const 'Sub' $P447 = "111_1267204702.05125"
- capture_lex $P447
- .const 'Sub' $P441 = "109_1267204702.05125"
- capture_lex $P441
- .const 'Sub' $P435 = "107_1267204702.05125"
- capture_lex $P435
- .const 'Sub' $P429 = "105_1267204702.05125"
- capture_lex $P429
- .const 'Sub' $P423 = "103_1267204702.05125"
- capture_lex $P423
- .const 'Sub' $P417 = "101_1267204702.05125"
- capture_lex $P417
- .const 'Sub' $P411 = "99_1267204702.05125"
- capture_lex $P411
- .const 'Sub' $P405 = "97_1267204702.05125"
- capture_lex $P405
- .const 'Sub' $P399 = "95_1267204702.05125"
- capture_lex $P399
- .const 'Sub' $P391 = "93_1267204702.05125"
- capture_lex $P391
- .const 'Sub' $P383 = "91_1267204702.05125"
- capture_lex $P383
- .const 'Sub' $P371 = "87_1267204702.05125"
- capture_lex $P371
- .const 'Sub' $P363 = "85_1267204702.05125"
- capture_lex $P363
- .const 'Sub' $P353 = "81_1267204702.05125"
- capture_lex $P353
- .const 'Sub' $P346 = "79_1267204702.05125"
- capture_lex $P346
- .const 'Sub' $P339 = "77_1267204702.05125"
- capture_lex $P339
- .const 'Sub' $P327 = "73_1267204702.05125"
- capture_lex $P327
- .const 'Sub' $P319 = "71_1267204702.05125"
- capture_lex $P319
- .const 'Sub' $P311 = "69_1267204702.05125"
- capture_lex $P311
- .const 'Sub' $P291 = "67_1267204702.05125"
- capture_lex $P291
- .const 'Sub' $P282 = "65_1267204702.05125"
- capture_lex $P282
- .const 'Sub' $P264 = "62_1267204702.05125"
- capture_lex $P264
- .const 'Sub' $P244 = "60_1267204702.05125"
- capture_lex $P244
- .const 'Sub' $P235 = "56_1267204702.05125"
- capture_lex $P235
- .const 'Sub' $P230 = "54_1267204702.05125"
- capture_lex $P230
- .const 'Sub' $P221 = "50_1267204702.05125"
- capture_lex $P221
- .const 'Sub' $P216 = "48_1267204702.05125"
- capture_lex $P216
- .const 'Sub' $P208 = "46_1267204702.05125"
- capture_lex $P208
- .const 'Sub' $P201 = "44_1267204702.05125"
- capture_lex $P201
- .const 'Sub' $P195 = "42_1267204702.05125"
- capture_lex $P195
- .const 'Sub' $P187 = "40_1267204702.05125"
- capture_lex $P187
- .const 'Sub' $P181 = "38_1267204702.05125"
- capture_lex $P181
- .const 'Sub' $P175 = "36_1267204702.05125"
- capture_lex $P175
- .const 'Sub' $P159 = "33_1267204702.05125"
- capture_lex $P159
- .const 'Sub' $P146 = "31_1267204702.05125"
- capture_lex $P146
- .const 'Sub' $P139 = "29_1267204702.05125"
- capture_lex $P139
- .const 'Sub' $P96 = "26_1267204702.05125"
+ .const 'Sub' $P861 = "207_1272816833.94956"
+ capture_lex $P861
+ .const 'Sub' $P856 = "205_1272816833.94956"
+ capture_lex $P856
+ .const 'Sub' $P851 = "203_1272816833.94956"
+ capture_lex $P851
+ .const 'Sub' $P845 = "201_1272816833.94956"
+ capture_lex $P845
+ .const 'Sub' $P839 = "199_1272816833.94956"
+ capture_lex $P839
+ .const 'Sub' $P833 = "197_1272816833.94956"
+ capture_lex $P833
+ .const 'Sub' $P827 = "195_1272816833.94956"
+ capture_lex $P827
+ .const 'Sub' $P821 = "193_1272816833.94956"
+ capture_lex $P821
+ .const 'Sub' $P816 = "191_1272816833.94956"
+ capture_lex $P816
+ .const 'Sub' $P811 = "189_1272816833.94956"
+ capture_lex $P811
+ .const 'Sub' $P798 = "185_1272816833.94956"
+ capture_lex $P798
+ .const 'Sub' $P790 = "183_1272816833.94956"
+ capture_lex $P790
+ .const 'Sub' $P784 = "181_1272816833.94956"
+ capture_lex $P784
+ .const 'Sub' $P777 = "179_1272816833.94956"
+ capture_lex $P777
+ .const 'Sub' $P771 = "177_1272816833.94956"
+ capture_lex $P771
+ .const 'Sub' $P763 = "175_1272816833.94956"
+ capture_lex $P763
+ .const 'Sub' $P755 = "173_1272816833.94956"
+ capture_lex $P755
+ .const 'Sub' $P749 = "171_1272816833.94956"
+ capture_lex $P749
+ .const 'Sub' $P743 = "169_1272816833.94956"
+ capture_lex $P743
+ .const 'Sub' $P728 = "165_1272816833.94956"
+ capture_lex $P728
+ .const 'Sub' $P691 = "163_1272816833.94956"
+ capture_lex $P691
+ .const 'Sub' $P683 = "161_1272816833.94956"
+ capture_lex $P683
+ .const 'Sub' $P677 = "159_1272816833.94956"
+ capture_lex $P677
+ .const 'Sub' $P667 = "157_1272816833.94956"
+ capture_lex $P667
+ .const 'Sub' $P652 = "155_1272816833.94956"
+ capture_lex $P652
+ .const 'Sub' $P643 = "153_1272816833.94956"
+ capture_lex $P643
+ .const 'Sub' $P624 = "151_1272816833.94956"
+ capture_lex $P624
+ .const 'Sub' $P600 = "149_1272816833.94956"
+ capture_lex $P600
+ .const 'Sub' $P593 = "147_1272816833.94956"
+ capture_lex $P593
+ .const 'Sub' $P586 = "145_1272816833.94956"
+ capture_lex $P586
+ .const 'Sub' $P576 = "141_1272816833.94956"
+ capture_lex $P576
+ .const 'Sub' $P565 = "139_1272816833.94956"
+ capture_lex $P565
+ .const 'Sub' $P558 = "137_1272816833.94956"
+ capture_lex $P558
+ .const 'Sub' $P551 = "135_1272816833.94956"
+ capture_lex $P551
+ .const 'Sub' $P544 = "133_1272816833.94956"
+ capture_lex $P544
+ .const 'Sub' $P517 = "129_1272816833.94956"
+ capture_lex $P517
+ .const 'Sub' $P508 = "127_1272816833.94956"
+ capture_lex $P508
+ .const 'Sub' $P501 = "125_1272816833.94956"
+ capture_lex $P501
+ .const 'Sub' $P492 = "121_1272816833.94956"
+ capture_lex $P492
+ .const 'Sub' $P487 = "119_1272816833.94956"
+ capture_lex $P487
+ .const 'Sub' $P475 = "117_1272816833.94956"
+ capture_lex $P475
+ .const 'Sub' $P463 = "115_1272816833.94956"
+ capture_lex $P463
+ .const 'Sub' $P455 = "113_1272816833.94956"
+ capture_lex $P455
+ .const 'Sub' $P450 = "111_1272816833.94956"
+ capture_lex $P450
+ .const 'Sub' $P444 = "109_1272816833.94956"
+ capture_lex $P444
+ .const 'Sub' $P438 = "107_1272816833.94956"
+ capture_lex $P438
+ .const 'Sub' $P432 = "105_1272816833.94956"
+ capture_lex $P432
+ .const 'Sub' $P426 = "103_1272816833.94956"
+ capture_lex $P426
+ .const 'Sub' $P420 = "101_1272816833.94956"
+ capture_lex $P420
+ .const 'Sub' $P414 = "99_1272816833.94956"
+ capture_lex $P414
+ .const 'Sub' $P408 = "97_1272816833.94956"
+ capture_lex $P408
+ .const 'Sub' $P402 = "95_1272816833.94956"
+ capture_lex $P402
+ .const 'Sub' $P394 = "93_1272816833.94956"
+ capture_lex $P394
+ .const 'Sub' $P386 = "91_1272816833.94956"
+ capture_lex $P386
+ .const 'Sub' $P374 = "87_1272816833.94956"
+ capture_lex $P374
+ .const 'Sub' $P366 = "85_1272816833.94956"
+ capture_lex $P366
+ .const 'Sub' $P356 = "81_1272816833.94956"
+ capture_lex $P356
+ .const 'Sub' $P349 = "79_1272816833.94956"
+ capture_lex $P349
+ .const 'Sub' $P342 = "77_1272816833.94956"
+ capture_lex $P342
+ .const 'Sub' $P330 = "73_1272816833.94956"
+ capture_lex $P330
+ .const 'Sub' $P322 = "71_1272816833.94956"
+ capture_lex $P322
+ .const 'Sub' $P314 = "69_1272816833.94956"
+ capture_lex $P314
+ .const 'Sub' $P294 = "67_1272816833.94956"
+ capture_lex $P294
+ .const 'Sub' $P285 = "65_1272816833.94956"
+ capture_lex $P285
+ .const 'Sub' $P267 = "62_1272816833.94956"
+ capture_lex $P267
+ .const 'Sub' $P247 = "60_1272816833.94956"
+ capture_lex $P247
+ .const 'Sub' $P238 = "56_1272816833.94956"
+ capture_lex $P238
+ .const 'Sub' $P233 = "54_1272816833.94956"
+ capture_lex $P233
+ .const 'Sub' $P224 = "50_1272816833.94956"
+ capture_lex $P224
+ .const 'Sub' $P219 = "48_1272816833.94956"
+ capture_lex $P219
+ .const 'Sub' $P211 = "46_1272816833.94956"
+ capture_lex $P211
+ .const 'Sub' $P204 = "44_1272816833.94956"
+ capture_lex $P204
+ .const 'Sub' $P198 = "42_1272816833.94956"
+ capture_lex $P198
+ .const 'Sub' $P190 = "40_1272816833.94956"
+ capture_lex $P190
+ .const 'Sub' $P184 = "38_1272816833.94956"
+ capture_lex $P184
+ .const 'Sub' $P178 = "36_1272816833.94956"
+ capture_lex $P178
+ .const 'Sub' $P162 = "33_1272816833.94956"
+ capture_lex $P162
+ .const 'Sub' $P149 = "31_1272816833.94956"
+ capture_lex $P149
+ .const 'Sub' $P142 = "29_1272816833.94956"
+ capture_lex $P142
+ .const 'Sub' $P96 = "26_1272816833.94956"
capture_lex $P96
- .const 'Sub' $P78 = "23_1267204702.05125"
+ .const 'Sub' $P78 = "23_1272816833.94956"
capture_lex $P78
- .const 'Sub' $P68 = "21_1267204702.05125"
+ .const 'Sub' $P68 = "21_1272816833.94956"
capture_lex $P68
- .const 'Sub' $P54 = "19_1267204702.05125"
+ .const 'Sub' $P54 = "19_1272816833.94956"
capture_lex $P54
- .const 'Sub' $P46 = "17_1267204702.05125"
+ .const 'Sub' $P46 = "17_1272816833.94956"
capture_lex $P46
- .const 'Sub' $P39 = "15_1267204702.05125"
+ .const 'Sub' $P39 = "15_1272816833.94956"
capture_lex $P39
- .const 'Sub' $P33 = "13_1267204702.05125"
+ .const 'Sub' $P33 = "13_1272816833.94956"
capture_lex $P33
- .const 'Sub' $P15 = "12_1267204702.05125"
+ .const 'Sub' $P15 = "12_1272816833.94956"
capture_lex $P15
-.annotate "line", 531
- get_hll_global $P1240, ["NQP";"Regex"], "_block1239"
- capture_lex $P1240
- $P1279 = $P1240()
+.annotate "line", 536
+ get_hll_global $P1248, ["NQP";"Regex"], "_block1247"
+ capture_lex $P1248
+ $P1287 = $P1248()
.annotate "line", 4
- .return ($P1279)
+ .return ($P1287)
.end
.namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1267204702.05125")
+.sub "" :load :init :subid("post334") :outer("11_1272816833.94956")
.annotate "line", 4
get_hll_global $P14, ["NQP";"Grammar"], "_block13"
.local pmc block
set block, $P14
-.annotate "line", 418
- get_hll_global $P1280, ["NQP"], "Grammar"
- $P1280."O"(":prec<y=>, :assoc<unary>", "%methodop")
-.annotate "line", 419
- get_hll_global $P1281, ["NQP"], "Grammar"
- $P1281."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
-.annotate "line", 420
- get_hll_global $P1282, ["NQP"], "Grammar"
- $P1282."O"(":prec<w=>, :assoc<left>", "%exponentiation")
-.annotate "line", 421
- get_hll_global $P1283, ["NQP"], "Grammar"
- $P1283."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
-.annotate "line", 422
- get_hll_global $P1284, ["NQP"], "Grammar"
- $P1284."O"(":prec<u=>, :assoc<left>", "%multiplicative")
.annotate "line", 423
- get_hll_global $P1285, ["NQP"], "Grammar"
- $P1285."O"(":prec<t=>, :assoc<left>", "%additive")
+ get_hll_global $P1288, ["NQP"], "Grammar"
+ $P1288."O"(":prec<y=>, :assoc<unary>", "%methodop")
.annotate "line", 424
- get_hll_global $P1286, ["NQP"], "Grammar"
- $P1286."O"(":prec<r=>, :assoc<left>", "%concatenation")
+ get_hll_global $P1289, ["NQP"], "Grammar"
+ $P1289."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
.annotate "line", 425
- get_hll_global $P1287, ["NQP"], "Grammar"
- $P1287."O"(":prec<m=>, :assoc<left>", "%relational")
+ get_hll_global $P1290, ["NQP"], "Grammar"
+ $P1290."O"(":prec<w=>, :assoc<left>", "%exponentiation")
.annotate "line", 426
- get_hll_global $P1288, ["NQP"], "Grammar"
- $P1288."O"(":prec<l=>, :assoc<left>", "%tight_and")
+ get_hll_global $P1291, ["NQP"], "Grammar"
+ $P1291."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
.annotate "line", 427
- get_hll_global $P1289, ["NQP"], "Grammar"
- $P1289."O"(":prec<k=>, :assoc<left>", "%tight_or")
+ get_hll_global $P1292, ["NQP"], "Grammar"
+ $P1292."O"(":prec<u=>, :assoc<left>", "%multiplicative")
.annotate "line", 428
- get_hll_global $P1290, ["NQP"], "Grammar"
- $P1290."O"(":prec<j=>, :assoc<right>", "%conditional")
+ get_hll_global $P1293, ["NQP"], "Grammar"
+ $P1293."O"(":prec<t=>, :assoc<left>", "%additive")
.annotate "line", 429
- get_hll_global $P1291, ["NQP"], "Grammar"
- $P1291."O"(":prec<i=>, :assoc<right>", "%assignment")
+ get_hll_global $P1294, ["NQP"], "Grammar"
+ $P1294."O"(":prec<r=>, :assoc<left>", "%concatenation")
.annotate "line", 430
- get_hll_global $P1292, ["NQP"], "Grammar"
- $P1292."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+ get_hll_global $P1295, ["NQP"], "Grammar"
+ $P1295."O"(":prec<m=>, :assoc<left>", "%relational")
.annotate "line", 431
- get_hll_global $P1293, ["NQP"], "Grammar"
- $P1293."O"(":prec<f=>, :assoc<list>", "%list_infix")
+ get_hll_global $P1296, ["NQP"], "Grammar"
+ $P1296."O"(":prec<l=>, :assoc<left>", "%tight_and")
.annotate "line", 432
- get_hll_global $P1294, ["NQP"], "Grammar"
- $P1294."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
-.annotate "line", 417
- $P1295 = get_root_global ["parrot"], "P6metaclass"
- $P1295."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
+ get_hll_global $P1297, ["NQP"], "Grammar"
+ $P1297."O"(":prec<k=>, :assoc<left>", "%tight_or")
+.annotate "line", 433
+ get_hll_global $P1298, ["NQP"], "Grammar"
+ $P1298."O"(":prec<j=>, :assoc<right>", "%conditional")
+.annotate "line", 434
+ get_hll_global $P1299, ["NQP"], "Grammar"
+ $P1299."O"(":prec<i=>, :assoc<right>", "%assignment")
+.annotate "line", 435
+ get_hll_global $P1300, ["NQP"], "Grammar"
+ $P1300."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+.annotate "line", 436
+ get_hll_global $P1301, ["NQP"], "Grammar"
+ $P1301."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 437
+ get_hll_global $P1302, ["NQP"], "Grammar"
+ $P1302."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+.annotate "line", 422
+ $P1303 = get_root_global ["parrot"], "P6metaclass"
+ $P1303."new_class"("NQP::Regex", "Regex::P6Regex::Grammar" :named("parent"))
.end
.namespace ["NQP";"Grammar"]
-.sub "TOP" :subid("12_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "TOP" :subid("12_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
- $P17."handle_types"(58)
+ $P17."handle_types"(57)
push_eh $P17
.lex "self", self
.annotate "line", 5
@@ -410,55 +412,55 @@
.lex "$*SCOPE", $P19
.annotate "line", 4
find_lex $P20, "%*LANG"
- unless_null $P20, vivify_333
+ unless_null $P20, vivify_335
get_hll_global $P20, "%LANG"
- unless_null $P20, vivify_334
+ unless_null $P20, vivify_336
die "Contextual %*LANG not found"
- vivify_334:
- vivify_333:
+ vivify_336:
+ vivify_335:
.annotate "line", 6
get_hll_global $P21, ["NQP"], "Regex"
find_lex $P22, "%*LANG"
- unless_null $P22, vivify_335
+ unless_null $P22, vivify_337
get_hll_global $P22, "%LANG"
- unless_null $P22, vivify_336
+ unless_null $P22, vivify_338
die "Contextual %*LANG not found"
- vivify_336:
+ vivify_338:
store_lex "%*LANG", $P22
- vivify_335:
+ vivify_337:
set $P22["Regex"], $P21
.annotate "line", 7
get_hll_global $P23, ["NQP"], "RegexActions"
find_lex $P24, "%*LANG"
- unless_null $P24, vivify_337
+ unless_null $P24, vivify_339
get_hll_global $P24, "%LANG"
- unless_null $P24, vivify_338
+ unless_null $P24, vivify_340
die "Contextual %*LANG not found"
- vivify_338:
+ vivify_340:
store_lex "%*LANG", $P24
- vivify_337:
+ vivify_339:
set $P24["Regex-actions"], $P23
.annotate "line", 8
get_hll_global $P25, ["NQP"], "Grammar"
find_lex $P26, "%*LANG"
- unless_null $P26, vivify_339
+ unless_null $P26, vivify_341
get_hll_global $P26, "%LANG"
- unless_null $P26, vivify_340
+ unless_null $P26, vivify_342
die "Contextual %*LANG not found"
- vivify_340:
+ vivify_342:
store_lex "%*LANG", $P26
- vivify_339:
+ vivify_341:
set $P26["MAIN"], $P25
.annotate "line", 9
get_hll_global $P27, ["NQP"], "Actions"
find_lex $P28, "%*LANG"
- unless_null $P28, vivify_341
+ unless_null $P28, vivify_343
get_hll_global $P28, "%LANG"
- unless_null $P28, vivify_342
+ unless_null $P28, vivify_344
die "Contextual %*LANG not found"
- vivify_342:
+ vivify_344:
store_lex "%*LANG", $P28
- vivify_341:
+ vivify_343:
set $P28["MAIN-actions"], $P27
.annotate "line", 10
new $P29, "String"
@@ -478,7 +480,7 @@
.namespace ["NQP";"Grammar"]
-.sub "identifier" :subid("13_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "identifier" :subid("13_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx34_tgt
.local int rx34_pos
@@ -536,7 +538,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier" :subid("14_1267204702.05125") :method
+.sub "!PREFIX__identifier" :subid("14_1272816833.94956") :method
.annotate "line", 4
$P36 = self."!PREFIX__!subrule"("ident", "")
new $P37, "ResizablePMCArray"
@@ -546,7 +548,7 @@
.namespace ["NQP";"Grammar"]
-.sub "name" :subid("15_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "name" :subid("15_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx40_tgt
.local int rx40_pos
@@ -620,7 +622,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name" :subid("16_1267204702.05125") :method
+.sub "!PREFIX__name" :subid("16_1272816833.94956") :method
.annotate "line", 4
new $P42, "ResizablePMCArray"
push $P42, ""
@@ -629,7 +631,7 @@
.namespace ["NQP";"Grammar"]
-.sub "deflongname" :subid("17_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "deflongname" :subid("17_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx47_tgt
.local int rx47_pos
@@ -702,7 +704,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname" :subid("18_1267204702.05125") :method
+.sub "!PREFIX__deflongname" :subid("18_1272816833.94956") :method
.annotate "line", 4
$P49 = self."!PREFIX__!subrule"("identifier", "")
new $P50, "ResizablePMCArray"
@@ -712,7 +714,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ENDSTMT" :subid("19_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "ENDSTMT" :subid("19_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx55_tgt
.local int rx55_pos
@@ -844,7 +846,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT" :subid("20_1267204702.05125") :method
+.sub "!PREFIX__ENDSTMT" :subid("20_1272816833.94956") :method
.annotate "line", 4
new $P57, "ResizablePMCArray"
push $P57, ""
@@ -853,7 +855,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ws" :subid("21_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "ws" :subid("21_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx69_tgt
.local int rx69_pos
@@ -979,7 +981,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws" :subid("22_1267204702.05125") :method
+.sub "!PREFIX__ws" :subid("22_1272816833.94956") :method
.annotate "line", 4
new $P71, "ResizablePMCArray"
push $P71, ""
@@ -989,9 +991,9 @@
.namespace ["NQP";"Grammar"]
-.sub "unv" :subid("23_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "unv" :subid("23_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .const 'Sub' $P86 = "25_1267204702.05125"
+ .const 'Sub' $P86 = "25_1272816833.94956"
capture_lex $P86
.local string rx79_tgt
.local int rx79_pos
@@ -1037,7 +1039,7 @@
rxanchor84_done:
# rx subrule "before" subtype=zerowidth negate=
rx79_cur."!cursor_pos"(rx79_pos)
- .const 'Sub' $P86 = "25_1267204702.05125"
+ .const 'Sub' $P86 = "25_1272816833.94956"
capture_lex $P86
$P10 = rx79_cur."before"($P86)
unless $P10, rx79_fail
@@ -1116,7 +1118,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv" :subid("24_1267204702.05125") :method
+.sub "!PREFIX__unv" :subid("24_1272816833.94956") :method
.annotate "line", 4
new $P81, "ResizablePMCArray"
push $P81, ""
@@ -1127,7 +1129,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block85" :anon :subid("25_1267204702.05125") :method :outer("23_1267204702.05125")
+.sub "_block85" :anon :subid("25_1272816833.94956") :method :outer("23_1272816833.94956")
.annotate "line", 44
.local string rx87_tgt
.local int rx87_pos
@@ -1217,10 +1219,10 @@
.namespace ["NQP";"Grammar"]
-.sub "pod_comment" :subid("26_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "pod_comment" :subid("26_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .const 'Sub' $P131 = "28_1267204702.05125"
- capture_lex $P131
+ .const 'Sub' $P133 = "28_1272816833.94956"
+ capture_lex $P133
.local string rx97_tgt
.local int rx97_pos
.local int rx97_off
@@ -1643,40 +1645,48 @@
.annotate "line", 60
goto alt104_end
alt104_3:
-.annotate "line", 68
- # rx rxquantr129 ** 0..1
- set_addr $I137, rxquantr129_done
- rx97_cur."!mark_push"(0, rx97_pos, $I137)
- rxquantr129_loop:
-.annotate "line", 67
- # rx subrule "before" subtype=zerowidth negate=
- rx97_cur."!cursor_pos"(rx97_pos)
- .const 'Sub' $P131 = "28_1267204702.05125"
- capture_lex $P131
- $P10 = rx97_cur."before"($P131)
- unless $P10, rx97_fail
-.annotate "line", 68
- # rx subrule "panic" subtype=method negate=
+ set_addr $I10, alt104_4
+ rx97_cur."!mark_push"(0, rx97_pos, $I10)
+.annotate "line", 66
+ # rx subrule "identifier" subtype=capture negate=
rx97_cur."!cursor_pos"(rx97_pos)
- $P10 = rx97_cur."panic"("Obsolete pod format, please use =begin/=end instead")
+ $P10 = rx97_cur."identifier"()
unless $P10, rx97_fail
+ rx97_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("identifier")
rx97_pos = $P10."pos"()
- (rx97_rep) = rx97_cur."!mark_commit"($I137)
- rxquantr129_done:
- alt138_0:
-.annotate "line", 69
- set_addr $I10, alt138_1
+.annotate "line", 67
+ # rx rxquantf129 ** 0..*
+ set_addr $I10, rxquantf129_loop
rx97_cur."!mark_push"(0, rx97_pos, $I10)
- # rx subrule "alpha" subtype=capture negate=
+ goto rxquantf129_done
+ rxquantf129_loop:
+ # rx charclass .
+ ge rx97_pos, rx97_eos, rx97_fail
+ inc rx97_pos
+ set_addr $I10, rxquantf129_loop
+ rx97_cur."!mark_push"($I130, rx97_pos, $I10)
+ rxquantf129_done:
+ # rxanchor bol
+ eq rx97_pos, 0, rxanchor131_done
+ ge rx97_pos, rx97_eos, rx97_fail
+ sub $I10, rx97_pos, rx97_off
+ dec $I10
+ is_cclass $I11, 4096, rx97_tgt, $I10
+ unless $I11, rx97_fail
+ rxanchor131_done:
+ # rx subrule "before" subtype=zerowidth negate=
rx97_cur."!cursor_pos"(rx97_pos)
- $P10 = rx97_cur."alpha"()
+ .const 'Sub' $P133 = "28_1272816833.94956"
+ capture_lex $P133
+ $P10 = rx97_cur."before"($P133)
unless $P10, rx97_fail
- rx97_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("alpha")
- rx97_pos = $P10."pos"()
- goto alt138_end
- alt138_1:
- set_addr $I10, alt138_2
+.annotate "line", 66
+ goto alt104_end
+ alt104_4:
+ alt141_0:
+.annotate "line", 73
+ set_addr $I10, alt141_1
rx97_cur."!mark_push"(0, rx97_pos, $I10)
# rx charclass s
ge rx97_pos, rx97_eos, rx97_fail
@@ -1684,15 +1694,15 @@
is_cclass $I11, 32, rx97_tgt, $I10
unless $I11, rx97_fail
inc rx97_pos
- goto alt138_end
- alt138_2:
+ goto alt141_end
+ alt141_1:
# rx subrule "panic" subtype=method negate=
rx97_cur."!cursor_pos"(rx97_pos)
$P10 = rx97_cur."panic"("Illegal pod directive")
unless $P10, rx97_fail
rx97_pos = $P10."pos"()
- alt138_end:
-.annotate "line", 70
+ alt141_end:
+.annotate "line", 74
# rx charclass_q N r 0..-1
sub $I10, rx97_pos, rx97_off
find_cclass $I11, 4096, rx97_tgt, $I10, rx97_eos
@@ -1718,7 +1728,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment" :subid("27_1267204702.05125") :method
+.sub "!PREFIX__pod_comment" :subid("27_1272816833.94956") :method
.annotate "line", 4
new $P99, "ResizablePMCArray"
push $P99, ""
@@ -1727,8614 +1737,8651 @@
.namespace ["NQP";"Grammar"]
-.sub "_block130" :anon :subid("28_1267204702.05125") :method :outer("26_1267204702.05125")
+.sub "_block132" :anon :subid("28_1272816833.94956") :method :outer("26_1272816833.94956")
.annotate "line", 67
- .local string rx132_tgt
- .local int rx132_pos
- .local int rx132_off
- .local int rx132_eos
- .local int rx132_rep
- .local pmc rx132_cur
- (rx132_cur, rx132_pos, rx132_tgt) = self."!cursor_start"()
- rx132_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx132_cur
- .local pmc match
- .lex "$/", match
- length rx132_eos, rx132_tgt
- set rx132_off, 0
- lt rx132_pos, 2, rx132_start
- sub rx132_off, rx132_pos, 1
- substr rx132_tgt, rx132_tgt, rx132_off
- rx132_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan133_done
- goto rxscan133_scan
- rxscan133_loop:
- ($P10) = rx132_cur."from"()
- inc $P10
- set rx132_pos, $P10
- ge rx132_pos, rx132_eos, rxscan133_done
- rxscan133_scan:
- set_addr $I10, rxscan133_loop
- rx132_cur."!mark_push"(0, rx132_pos, $I10)
- rxscan133_done:
- # rx rxquantf134 ** 0..*
- set_addr $I10, rxquantf134_loop
- rx132_cur."!mark_push"(0, rx132_pos, $I10)
- goto rxquantf134_done
- rxquantf134_loop:
- # rx charclass .
- ge rx132_pos, rx132_eos, rx132_fail
- inc rx132_pos
- set_addr $I10, rxquantf134_loop
- rx132_cur."!mark_push"($I135, rx132_pos, $I10)
- rxquantf134_done:
- # rxanchor bol
- eq rx132_pos, 0, rxanchor136_done
- ge rx132_pos, rx132_eos, rx132_fail
- sub $I10, rx132_pos, rx132_off
- dec $I10
- is_cclass $I11, 4096, rx132_tgt, $I10
- unless $I11, rx132_fail
- rxanchor136_done:
- # rx literal "=cut"
- add $I11, rx132_pos, 4
- gt $I11, rx132_eos, rx132_fail
- sub $I11, rx132_pos, rx132_off
- substr $S10, rx132_tgt, $I11, 4
- ne $S10, "=cut", rx132_fail
- add rx132_pos, 4
+ .local string rx134_tgt
+ .local int rx134_pos
+ .local int rx134_off
+ .local int rx134_eos
+ .local int rx134_rep
+ .local pmc rx134_cur
+ (rx134_cur, rx134_pos, rx134_tgt) = self."!cursor_start"()
+ rx134_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx134_cur
+ .local pmc match
+ .lex "$/", match
+ length rx134_eos, rx134_tgt
+ set rx134_off, 0
+ lt rx134_pos, 2, rx134_start
+ sub rx134_off, rx134_pos, 1
+ substr rx134_tgt, rx134_tgt, rx134_off
+ rx134_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan135_done
+ goto rxscan135_scan
+ rxscan135_loop:
+ ($P10) = rx134_cur."from"()
+ inc $P10
+ set rx134_pos, $P10
+ ge rx134_pos, rx134_eos, rxscan135_done
+ rxscan135_scan:
+ set_addr $I10, rxscan135_loop
+ rx134_cur."!mark_push"(0, rx134_pos, $I10)
+ rxscan135_done:
+ # rx rxquantr136 ** 0..*
+ set_addr $I137, rxquantr136_done
+ rx134_cur."!mark_push"(0, rx134_pos, $I137)
+ rxquantr136_loop:
+ # rx enumcharlist negate=0
+ ge rx134_pos, rx134_eos, rx134_fail
+ sub $I10, rx134_pos, rx134_off
+ substr $S10, rx134_tgt, $I10, 1
+ index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
+ lt $I11, 0, rx134_fail
+ inc rx134_pos
+ (rx134_rep) = rx134_cur."!mark_commit"($I137)
+ rx134_cur."!mark_push"(rx134_rep, rx134_pos, $I137)
+ goto rxquantr136_loop
+ rxquantr136_done:
+ alt138_0:
+ set_addr $I10, alt138_1
+ rx134_cur."!mark_push"(0, rx134_pos, $I10)
+.annotate "line", 68
+ # rx literal "="
+ add $I11, rx134_pos, 1
+ gt $I11, rx134_eos, rx134_fail
+ sub $I11, rx134_pos, rx134_off
+ substr $S10, rx134_tgt, $I11, 1
+ ne $S10, "=", rx134_fail
+ add rx134_pos, 1
+.annotate "line", 70
+ # rx rxquantr139 ** 0..1
+ set_addr $I140, rxquantr139_done
+ rx134_cur."!mark_push"(0, rx134_pos, $I140)
+ rxquantr139_loop:
+.annotate "line", 69
+ # rx literal "cut"
+ add $I11, rx134_pos, 3
+ gt $I11, rx134_eos, rx134_fail
+ sub $I11, rx134_pos, rx134_off
+ substr $S10, rx134_tgt, $I11, 3
+ ne $S10, "cut", rx134_fail
+ add rx134_pos, 3
# rxanchor rwb
- le rx132_pos, 0, rx132_fail
- sub $I10, rx132_pos, rx132_off
- is_cclass $I11, 8192, rx132_tgt, $I10
- if $I11, rx132_fail
+ le rx134_pos, 0, rx134_fail
+ sub $I10, rx134_pos, rx134_off
+ is_cclass $I11, 8192, rx134_tgt, $I10
+ if $I11, rx134_fail
dec $I10
- is_cclass $I11, 8192, rx132_tgt, $I10
- unless $I11, rx132_fail
+ is_cclass $I11, 8192, rx134_tgt, $I10
+ unless $I11, rx134_fail
+.annotate "line", 70
+ # rx subrule "panic" subtype=method negate=
+ rx134_cur."!cursor_pos"(rx134_pos)
+ $P10 = rx134_cur."panic"("Obsolete pod format, please use =begin/=end instead")
+ unless $P10, rx134_fail
+ rx134_pos = $P10."pos"()
+ (rx134_rep) = rx134_cur."!mark_commit"($I140)
+ rxquantr139_done:
+.annotate "line", 67
+ goto alt138_end
+ alt138_1:
+.annotate "line", 71
+ # rx charclass nl
+ ge rx134_pos, rx134_eos, rx134_fail
+ sub $I10, rx134_pos, rx134_off
+ is_cclass $I11, 4096, rx134_tgt, $I10
+ unless $I11, rx134_fail
+ substr $S10, rx134_tgt, $I10, 2
+ iseq $I11, $S10, "\r\n"
+ add rx134_pos, $I11
+ inc rx134_pos
+ alt138_end:
+.annotate "line", 67
# rx pass
- rx132_cur."!cursor_pass"(rx132_pos, "")
- rx132_cur."!cursor_debug"("PASS ", "", " at pos=", rx132_pos)
- .return (rx132_cur)
- rx132_fail:
- (rx132_rep, rx132_pos, $I10, $P10) = rx132_cur."!mark_fail"(0)
- lt rx132_pos, -1, rx132_done
- eq rx132_pos, -1, rx132_fail
- jump $I10
- rx132_done:
- rx132_cur."!cursor_fail"()
- rx132_cur."!cursor_debug"("FAIL ", "")
- .return (rx132_cur)
+ rx134_cur."!cursor_pass"(rx134_pos, "")
+ rx134_cur."!cursor_debug"("PASS ", "", " at pos=", rx134_pos)
+ .return (rx134_cur)
+ rx134_fail:
+ (rx134_rep, rx134_pos, $I10, $P10) = rx134_cur."!mark_fail"(0)
+ lt rx134_pos, -1, rx134_done
+ eq rx134_pos, -1, rx134_fail
+ jump $I10
+ rx134_done:
+ rx134_cur."!cursor_fail"()
+ rx134_cur."!cursor_debug"("FAIL ", "")
+ .return (rx134_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "comp_unit" :subid("29_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 4
- .local string rx140_tgt
- .local int rx140_pos
- .local int rx140_off
- .local int rx140_eos
- .local int rx140_rep
- .local pmc rx140_cur
- (rx140_cur, rx140_pos, rx140_tgt) = self."!cursor_start"()
- rx140_cur."!cursor_debug"("START ", "comp_unit")
- .lex unicode:"$\x{a2}", rx140_cur
- .local pmc match
- .lex "$/", match
- length rx140_eos, rx140_tgt
- set rx140_off, 0
- lt rx140_pos, 2, rx140_start
- sub rx140_off, rx140_pos, 1
- substr rx140_tgt, rx140_tgt, rx140_off
- rx140_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan144_done
- goto rxscan144_scan
- rxscan144_loop:
- ($P10) = rx140_cur."from"()
- inc $P10
- set rx140_pos, $P10
- ge rx140_pos, rx140_eos, rxscan144_done
- rxscan144_scan:
- set_addr $I10, rxscan144_loop
- rx140_cur."!mark_push"(0, rx140_pos, $I10)
- rxscan144_done:
-.annotate "line", 78
+.sub "comp_unit" :subid("29_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx143_tgt
+ .local int rx143_pos
+ .local int rx143_off
+ .local int rx143_eos
+ .local int rx143_rep
+ .local pmc rx143_cur
+ (rx143_cur, rx143_pos, rx143_tgt) = self."!cursor_start"()
+ rx143_cur."!cursor_debug"("START ", "comp_unit")
+ .lex unicode:"$\x{a2}", rx143_cur
+ .local pmc match
+ .lex "$/", match
+ length rx143_eos, rx143_tgt
+ set rx143_off, 0
+ lt rx143_pos, 2, rx143_start
+ sub rx143_off, rx143_pos, 1
+ substr rx143_tgt, rx143_tgt, rx143_off
+ rx143_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan147_done
+ goto rxscan147_scan
+ rxscan147_loop:
+ ($P10) = rx143_cur."from"()
+ inc $P10
+ set rx143_pos, $P10
+ ge rx143_pos, rx143_eos, rxscan147_done
+ rxscan147_scan:
+ set_addr $I10, rxscan147_loop
+ rx143_cur."!mark_push"(0, rx143_pos, $I10)
+ rxscan147_done:
+.annotate "line", 82
# rx subrule "newpad" subtype=method negate=
- rx140_cur."!cursor_pos"(rx140_pos)
- $P10 = rx140_cur."newpad"()
- unless $P10, rx140_fail
- rx140_pos = $P10."pos"()
-.annotate "line", 79
+ rx143_cur."!cursor_pos"(rx143_pos)
+ $P10 = rx143_cur."newpad"()
+ unless $P10, rx143_fail
+ rx143_pos = $P10."pos"()
+.annotate "line", 83
# rx subrule "statementlist" subtype=capture negate=
- rx140_cur."!cursor_pos"(rx140_pos)
- $P10 = rx140_cur."statementlist"()
- unless $P10, rx140_fail
- rx140_cur."!mark_push"(0, -1, 0, $P10)
+ rx143_cur."!cursor_pos"(rx143_pos)
+ $P10 = rx143_cur."statementlist"()
+ unless $P10, rx143_fail
+ rx143_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statementlist")
- rx140_pos = $P10."pos"()
- alt145_0:
-.annotate "line", 80
- set_addr $I10, alt145_1
- rx140_cur."!mark_push"(0, rx140_pos, $I10)
+ rx143_pos = $P10."pos"()
+ alt148_0:
+.annotate "line", 84
+ set_addr $I10, alt148_1
+ rx143_cur."!mark_push"(0, rx143_pos, $I10)
# rxanchor eos
- ne rx140_pos, rx140_eos, rx140_fail
- goto alt145_end
- alt145_1:
+ ne rx143_pos, rx143_eos, rx143_fail
+ goto alt148_end
+ alt148_1:
# rx subrule "panic" subtype=method negate=
- rx140_cur."!cursor_pos"(rx140_pos)
- $P10 = rx140_cur."panic"("Confused")
- unless $P10, rx140_fail
- rx140_pos = $P10."pos"()
- alt145_end:
-.annotate "line", 77
+ rx143_cur."!cursor_pos"(rx143_pos)
+ $P10 = rx143_cur."panic"("Confused")
+ unless $P10, rx143_fail
+ rx143_pos = $P10."pos"()
+ alt148_end:
+.annotate "line", 81
# rx pass
- rx140_cur."!cursor_pass"(rx140_pos, "comp_unit")
- rx140_cur."!cursor_debug"("PASS ", "comp_unit", " at pos=", rx140_pos)
- .return (rx140_cur)
- rx140_fail:
+ rx143_cur."!cursor_pass"(rx143_pos, "comp_unit")
+ rx143_cur."!cursor_debug"("PASS ", "comp_unit", " at pos=", rx143_pos)
+ .return (rx143_cur)
+ rx143_fail:
.annotate "line", 4
- (rx140_rep, rx140_pos, $I10, $P10) = rx140_cur."!mark_fail"(0)
- lt rx140_pos, -1, rx140_done
- eq rx140_pos, -1, rx140_fail
+ (rx143_rep, rx143_pos, $I10, $P10) = rx143_cur."!mark_fail"(0)
+ lt rx143_pos, -1, rx143_done
+ eq rx143_pos, -1, rx143_fail
jump $I10
- rx140_done:
- rx140_cur."!cursor_fail"()
- rx140_cur."!cursor_debug"("FAIL ", "comp_unit")
- .return (rx140_cur)
+ rx143_done:
+ rx143_cur."!cursor_fail"()
+ rx143_cur."!cursor_debug"("FAIL ", "comp_unit")
+ .return (rx143_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit" :subid("30_1267204702.05125") :method
+.sub "!PREFIX__comp_unit" :subid("30_1272816833.94956") :method
.annotate "line", 4
- $P142 = self."!PREFIX__!subrule"("", "")
- new $P143, "ResizablePMCArray"
- push $P143, $P142
- .return ($P143)
+ $P145 = self."!PREFIX__!subrule"("", "")
+ new $P146, "ResizablePMCArray"
+ push $P146, $P145
+ .return ($P146)
.end
.namespace ["NQP";"Grammar"]
-.sub "statementlist" :subid("31_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statementlist" :subid("31_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx147_tgt
- .local int rx147_pos
- .local int rx147_off
- .local int rx147_eos
- .local int rx147_rep
- .local pmc rx147_cur
- (rx147_cur, rx147_pos, rx147_tgt) = self."!cursor_start"()
- rx147_cur."!cursor_debug"("START ", "statementlist")
- rx147_cur."!cursor_caparray"("statement")
- .lex unicode:"$\x{a2}", rx147_cur
+ .local string rx150_tgt
+ .local int rx150_pos
+ .local int rx150_off
+ .local int rx150_eos
+ .local int rx150_rep
+ .local pmc rx150_cur
+ (rx150_cur, rx150_pos, rx150_tgt) = self."!cursor_start"()
+ rx150_cur."!cursor_debug"("START ", "statementlist")
+ rx150_cur."!cursor_caparray"("statement")
+ .lex unicode:"$\x{a2}", rx150_cur
.local pmc match
.lex "$/", match
- length rx147_eos, rx147_tgt
- set rx147_off, 0
- lt rx147_pos, 2, rx147_start
- sub rx147_off, rx147_pos, 1
- substr rx147_tgt, rx147_tgt, rx147_off
- rx147_start:
+ length rx150_eos, rx150_tgt
+ set rx150_off, 0
+ lt rx150_pos, 2, rx150_start
+ sub rx150_off, rx150_pos, 1
+ substr rx150_tgt, rx150_tgt, rx150_off
+ rx150_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan150_done
- goto rxscan150_scan
- rxscan150_loop:
- ($P10) = rx147_cur."from"()
+ ne $I10, -1, rxscan153_done
+ goto rxscan153_scan
+ rxscan153_loop:
+ ($P10) = rx150_cur."from"()
inc $P10
- set rx147_pos, $P10
- ge rx147_pos, rx147_eos, rxscan150_done
- rxscan150_scan:
- set_addr $I10, rxscan150_loop
- rx147_cur."!mark_push"(0, rx147_pos, $I10)
- rxscan150_done:
- alt151_0:
-.annotate "line", 83
- set_addr $I10, alt151_1
- rx147_cur."!mark_push"(0, rx147_pos, $I10)
-.annotate "line", 84
+ set rx150_pos, $P10
+ ge rx150_pos, rx150_eos, rxscan153_done
+ rxscan153_scan:
+ set_addr $I10, rxscan153_loop
+ rx150_cur."!mark_push"(0, rx150_pos, $I10)
+ rxscan153_done:
+ alt154_0:
+.annotate "line", 87
+ set_addr $I10, alt154_1
+ rx150_cur."!mark_push"(0, rx150_pos, $I10)
+.annotate "line", 88
# rx subrule "ws" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."ws"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."ws"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
# rxanchor eos
- ne rx147_pos, rx147_eos, rx147_fail
+ ne rx150_pos, rx150_eos, rx150_fail
# rx subrule "ws" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."ws"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
- goto alt151_end
- alt151_1:
-.annotate "line", 85
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."ws"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
+ goto alt154_end
+ alt154_1:
+.annotate "line", 89
# rx subrule "ws" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."ws"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
- # rx rxquantr155 ** 0..*
- set_addr $I157, rxquantr155_done
- rx147_cur."!mark_push"(0, rx147_pos, $I157)
- rxquantr155_loop:
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."ws"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
+ # rx rxquantr158 ** 0..*
+ set_addr $I160, rxquantr158_done
+ rx150_cur."!mark_push"(0, rx150_pos, $I160)
+ rxquantr158_loop:
# rx subrule "statement" subtype=capture negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."statement"()
- unless $P10, rx147_fail
- rx147_cur."!mark_push"(0, -1, 0, $P10)
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."statement"()
+ unless $P10, rx150_fail
+ rx150_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement")
- rx147_pos = $P10."pos"()
+ rx150_pos = $P10."pos"()
# rx subrule "eat_terminator" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."eat_terminator"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."ws"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
- (rx147_rep) = rx147_cur."!mark_commit"($I157)
- rx147_cur."!mark_push"(rx147_rep, rx147_pos, $I157)
- goto rxquantr155_loop
- rxquantr155_done:
- # rx subrule "ws" subtype=method negate=
- rx147_cur."!cursor_pos"(rx147_pos)
- $P10 = rx147_cur."ws"()
- unless $P10, rx147_fail
- rx147_pos = $P10."pos"()
- alt151_end:
-.annotate "line", 83
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."eat_terminator"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."ws"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
+ (rx150_rep) = rx150_cur."!mark_commit"($I160)
+ rx150_cur."!mark_push"(rx150_rep, rx150_pos, $I160)
+ goto rxquantr158_loop
+ rxquantr158_done:
+ # rx subrule "ws" subtype=method negate=
+ rx150_cur."!cursor_pos"(rx150_pos)
+ $P10 = rx150_cur."ws"()
+ unless $P10, rx150_fail
+ rx150_pos = $P10."pos"()
+ alt154_end:
+.annotate "line", 87
# rx pass
- rx147_cur."!cursor_pass"(rx147_pos, "statementlist")
- rx147_cur."!cursor_debug"("PASS ", "statementlist", " at pos=", rx147_pos)
- .return (rx147_cur)
- rx147_fail:
+ rx150_cur."!cursor_pass"(rx150_pos, "statementlist")
+ rx150_cur."!cursor_debug"("PASS ", "statementlist", " at pos=", rx150_pos)
+ .return (rx150_cur)
+ rx150_fail:
.annotate "line", 4
- (rx147_rep, rx147_pos, $I10, $P10) = rx147_cur."!mark_fail"(0)
- lt rx147_pos, -1, rx147_done
- eq rx147_pos, -1, rx147_fail
+ (rx150_rep, rx150_pos, $I10, $P10) = rx150_cur."!mark_fail"(0)
+ lt rx150_pos, -1, rx150_done
+ eq rx150_pos, -1, rx150_fail
jump $I10
- rx147_done:
- rx147_cur."!cursor_fail"()
- rx147_cur."!cursor_debug"("FAIL ", "statementlist")
- .return (rx147_cur)
+ rx150_done:
+ rx150_cur."!cursor_fail"()
+ rx150_cur."!cursor_debug"("FAIL ", "statementlist")
+ .return (rx150_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist" :subid("32_1267204702.05125") :method
+.sub "!PREFIX__statementlist" :subid("32_1272816833.94956") :method
.annotate "line", 4
- new $P149, "ResizablePMCArray"
- push $P149, ""
- push $P149, ""
- .return ($P149)
+ new $P152, "ResizablePMCArray"
+ push $P152, ""
+ push $P152, ""
+ .return ($P152)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement" :subid("33_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement" :subid("33_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .const 'Sub' $P165 = "35_1267204702.05125"
- capture_lex $P165
- .local string rx160_tgt
- .local int rx160_pos
- .local int rx160_off
- .local int rx160_eos
- .local int rx160_rep
- .local pmc rx160_cur
- (rx160_cur, rx160_pos, rx160_tgt) = self."!cursor_start"()
- rx160_cur."!cursor_debug"("START ", "statement")
- rx160_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
- .lex unicode:"$\x{a2}", rx160_cur
+ .const 'Sub' $P168 = "35_1272816833.94956"
+ capture_lex $P168
+ .local string rx163_tgt
+ .local int rx163_pos
+ .local int rx163_off
+ .local int rx163_eos
+ .local int rx163_rep
+ .local pmc rx163_cur
+ (rx163_cur, rx163_pos, rx163_tgt) = self."!cursor_start"()
+ rx163_cur."!cursor_debug"("START ", "statement")
+ rx163_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
+ .lex unicode:"$\x{a2}", rx163_cur
.local pmc match
.lex "$/", match
- length rx160_eos, rx160_tgt
- set rx160_off, 0
- lt rx160_pos, 2, rx160_start
- sub rx160_off, rx160_pos, 1
- substr rx160_tgt, rx160_tgt, rx160_off
- rx160_start:
+ length rx163_eos, rx163_tgt
+ set rx163_off, 0
+ lt rx163_pos, 2, rx163_start
+ sub rx163_off, rx163_pos, 1
+ substr rx163_tgt, rx163_tgt, rx163_off
+ rx163_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan163_done
- goto rxscan163_scan
- rxscan163_loop:
- ($P10) = rx160_cur."from"()
+ ne $I10, -1, rxscan166_done
+ goto rxscan166_scan
+ rxscan166_loop:
+ ($P10) = rx163_cur."from"()
inc $P10
- set rx160_pos, $P10
- ge rx160_pos, rx160_eos, rxscan163_done
- rxscan163_scan:
- set_addr $I10, rxscan163_loop
- rx160_cur."!mark_push"(0, rx160_pos, $I10)
- rxscan163_done:
-.annotate "line", 89
+ set rx163_pos, $P10
+ ge rx163_pos, rx163_eos, rxscan166_done
+ rxscan166_scan:
+ set_addr $I10, rxscan166_loop
+ rx163_cur."!mark_push"(0, rx163_pos, $I10)
+ rxscan166_done:
+.annotate "line", 93
# rx subrule "before" subtype=zerowidth negate=1
- rx160_cur."!cursor_pos"(rx160_pos)
- .const 'Sub' $P165 = "35_1267204702.05125"
- capture_lex $P165
- $P10 = rx160_cur."before"($P165)
- if $P10, rx160_fail
- alt169_0:
-.annotate "line", 90
- set_addr $I10, alt169_1
- rx160_cur."!mark_push"(0, rx160_pos, $I10)
-.annotate "line", 91
+ rx163_cur."!cursor_pos"(rx163_pos)
+ .const 'Sub' $P168 = "35_1272816833.94956"
+ capture_lex $P168
+ $P10 = rx163_cur."before"($P168)
+ if $P10, rx163_fail
+ alt172_0:
+.annotate "line", 94
+ set_addr $I10, alt172_1
+ rx163_cur."!mark_push"(0, rx163_pos, $I10)
+.annotate "line", 95
# rx subrule "statement_control" subtype=capture negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."statement_control"()
- unless $P10, rx160_fail
- rx160_cur."!mark_push"(0, -1, 0, $P10)
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."statement_control"()
+ unless $P10, rx163_fail
+ rx163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement_control")
- rx160_pos = $P10."pos"()
- goto alt169_end
- alt169_1:
-.annotate "line", 92
+ rx163_pos = $P10."pos"()
+ goto alt172_end
+ alt172_1:
+.annotate "line", 96
# rx subrule "EXPR" subtype=capture negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."EXPR"()
- unless $P10, rx160_fail
- rx160_cur."!mark_push"(0, -1, 0, $P10)
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."EXPR"()
+ unless $P10, rx163_fail
+ rx163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx160_pos = $P10."pos"()
+ rx163_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."ws"()
- unless $P10, rx160_fail
- rx160_pos = $P10."pos"()
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."ws"()
+ unless $P10, rx163_fail
+ rx163_pos = $P10."pos"()
+.annotate "line", 101
+ # rx rxquantr173 ** 0..1
+ set_addr $I177, rxquantr173_done
+ rx163_cur."!mark_push"(0, rx163_pos, $I177)
+ rxquantr173_loop:
+ alt174_0:
.annotate "line", 97
- # rx rxquantr170 ** 0..1
- set_addr $I174, rxquantr170_done
- rx160_cur."!mark_push"(0, rx160_pos, $I174)
- rxquantr170_loop:
- alt171_0:
-.annotate "line", 93
- set_addr $I10, alt171_1
- rx160_cur."!mark_push"(0, rx160_pos, $I10)
-.annotate "line", 94
+ set_addr $I10, alt174_1
+ rx163_cur."!mark_push"(0, rx163_pos, $I10)
+.annotate "line", 98
# rx subrule "MARKED" subtype=zerowidth negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."MARKED"("endstmt")
- unless $P10, rx160_fail
- goto alt171_end
- alt171_1:
- set_addr $I10, alt171_2
- rx160_cur."!mark_push"(0, rx160_pos, $I10)
-.annotate "line", 95
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."MARKED"("endstmt")
+ unless $P10, rx163_fail
+ goto alt174_end
+ alt174_1:
+ set_addr $I10, alt174_2
+ rx163_cur."!mark_push"(0, rx163_pos, $I10)
+.annotate "line", 99
# rx subrule "statement_mod_cond" subtype=capture negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."statement_mod_cond"()
- unless $P10, rx160_fail
- rx160_cur."!mark_push"(0, -1, 0, $P10)
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."statement_mod_cond"()
+ unless $P10, rx163_fail
+ rx163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement_mod_cond")
- rx160_pos = $P10."pos"()
- # rx rxquantr172 ** 0..1
- set_addr $I173, rxquantr172_done
- rx160_cur."!mark_push"(0, rx160_pos, $I173)
- rxquantr172_loop:
+ rx163_pos = $P10."pos"()
+ # rx rxquantr175 ** 0..1
+ set_addr $I176, rxquantr175_done
+ rx163_cur."!mark_push"(0, rx163_pos, $I176)
+ rxquantr175_loop:
# rx subrule "statement_mod_loop" subtype=capture negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."statement_mod_loop"()
- unless $P10, rx160_fail
- rx160_cur."!mark_push"(0, -1, 0, $P10)
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."statement_mod_loop"()
+ unless $P10, rx163_fail
+ rx163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement_mod_loop")
- rx160_pos = $P10."pos"()
- (rx160_rep) = rx160_cur."!mark_commit"($I173)
- rxquantr172_done:
- goto alt171_end
- alt171_2:
-.annotate "line", 96
+ rx163_pos = $P10."pos"()
+ (rx163_rep) = rx163_cur."!mark_commit"($I176)
+ rxquantr175_done:
+ goto alt174_end
+ alt174_2:
+.annotate "line", 100
# rx subrule "statement_mod_loop" subtype=capture negate=
- rx160_cur."!cursor_pos"(rx160_pos)
- $P10 = rx160_cur."statement_mod_loop"()
- unless $P10, rx160_fail
- rx160_cur."!mark_push"(0, -1, 0, $P10)
+ rx163_cur."!cursor_pos"(rx163_pos)
+ $P10 = rx163_cur."statement_mod_loop"()
+ unless $P10, rx163_fail
+ rx163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement_mod_loop")
- rx160_pos = $P10."pos"()
- alt171_end:
-.annotate "line", 97
- (rx160_rep) = rx160_cur."!mark_commit"($I174)
- rxquantr170_done:
- alt169_end:
-.annotate "line", 88
+ rx163_pos = $P10."pos"()
+ alt174_end:
+.annotate "line", 101
+ (rx163_rep) = rx163_cur."!mark_commit"($I177)
+ rxquantr173_done:
+ alt172_end:
+.annotate "line", 92
# rx pass
- rx160_cur."!cursor_pass"(rx160_pos, "statement")
- rx160_cur."!cursor_debug"("PASS ", "statement", " at pos=", rx160_pos)
- .return (rx160_cur)
- rx160_fail:
+ rx163_cur."!cursor_pass"(rx163_pos, "statement")
+ rx163_cur."!cursor_debug"("PASS ", "statement", " at pos=", rx163_pos)
+ .return (rx163_cur)
+ rx163_fail:
.annotate "line", 4
- (rx160_rep, rx160_pos, $I10, $P10) = rx160_cur."!mark_fail"(0)
- lt rx160_pos, -1, rx160_done
- eq rx160_pos, -1, rx160_fail
+ (rx163_rep, rx163_pos, $I10, $P10) = rx163_cur."!mark_fail"(0)
+ lt rx163_pos, -1, rx163_done
+ eq rx163_pos, -1, rx163_fail
jump $I10
- rx160_done:
- rx160_cur."!cursor_fail"()
- rx160_cur."!cursor_debug"("FAIL ", "statement")
- .return (rx160_cur)
+ rx163_done:
+ rx163_cur."!cursor_fail"()
+ rx163_cur."!cursor_debug"("FAIL ", "statement")
+ .return (rx163_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement" :subid("34_1267204702.05125") :method
+.sub "!PREFIX__statement" :subid("34_1272816833.94956") :method
.annotate "line", 4
- new $P162, "ResizablePMCArray"
- push $P162, ""
- .return ($P162)
+ new $P165, "ResizablePMCArray"
+ push $P165, ""
+ .return ($P165)
.end
.namespace ["NQP";"Grammar"]
-.sub "_block164" :anon :subid("35_1267204702.05125") :method :outer("33_1267204702.05125")
-.annotate "line", 89
- .local string rx166_tgt
- .local int rx166_pos
- .local int rx166_off
- .local int rx166_eos
- .local int rx166_rep
- .local pmc rx166_cur
- (rx166_cur, rx166_pos, rx166_tgt) = self."!cursor_start"()
- rx166_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx166_cur
- .local pmc match
- .lex "$/", match
- length rx166_eos, rx166_tgt
- set rx166_off, 0
- lt rx166_pos, 2, rx166_start
- sub rx166_off, rx166_pos, 1
- substr rx166_tgt, rx166_tgt, rx166_off
- rx166_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan167_done
- goto rxscan167_scan
- rxscan167_loop:
- ($P10) = rx166_cur."from"()
- inc $P10
- set rx166_pos, $P10
- ge rx166_pos, rx166_eos, rxscan167_done
- rxscan167_scan:
- set_addr $I10, rxscan167_loop
- rx166_cur."!mark_push"(0, rx166_pos, $I10)
- rxscan167_done:
- alt168_0:
- set_addr $I10, alt168_1
- rx166_cur."!mark_push"(0, rx166_pos, $I10)
+.sub "_block167" :anon :subid("35_1272816833.94956") :method :outer("33_1272816833.94956")
+.annotate "line", 93
+ .local string rx169_tgt
+ .local int rx169_pos
+ .local int rx169_off
+ .local int rx169_eos
+ .local int rx169_rep
+ .local pmc rx169_cur
+ (rx169_cur, rx169_pos, rx169_tgt) = self."!cursor_start"()
+ rx169_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx169_cur
+ .local pmc match
+ .lex "$/", match
+ length rx169_eos, rx169_tgt
+ set rx169_off, 0
+ lt rx169_pos, 2, rx169_start
+ sub rx169_off, rx169_pos, 1
+ substr rx169_tgt, rx169_tgt, rx169_off
+ rx169_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan170_done
+ goto rxscan170_scan
+ rxscan170_loop:
+ ($P10) = rx169_cur."from"()
+ inc $P10
+ set rx169_pos, $P10
+ ge rx169_pos, rx169_eos, rxscan170_done
+ rxscan170_scan:
+ set_addr $I10, rxscan170_loop
+ rx169_cur."!mark_push"(0, rx169_pos, $I10)
+ rxscan170_done:
+ alt171_0:
+ set_addr $I10, alt171_1
+ rx169_cur."!mark_push"(0, rx169_pos, $I10)
# rx enumcharlist negate=0
- ge rx166_pos, rx166_eos, rx166_fail
- sub $I10, rx166_pos, rx166_off
- substr $S10, rx166_tgt, $I10, 1
+ ge rx169_pos, rx169_eos, rx169_fail
+ sub $I10, rx169_pos, rx169_off
+ substr $S10, rx169_tgt, $I10, 1
index $I11, "])}", $S10
- lt $I11, 0, rx166_fail
- inc rx166_pos
- goto alt168_end
- alt168_1:
+ lt $I11, 0, rx169_fail
+ inc rx169_pos
+ goto alt171_end
+ alt171_1:
# rxanchor eos
- ne rx166_pos, rx166_eos, rx166_fail
- alt168_end:
+ ne rx169_pos, rx169_eos, rx169_fail
+ alt171_end:
# rx pass
- rx166_cur."!cursor_pass"(rx166_pos, "")
- rx166_cur."!cursor_debug"("PASS ", "", " at pos=", rx166_pos)
- .return (rx166_cur)
- rx166_fail:
- (rx166_rep, rx166_pos, $I10, $P10) = rx166_cur."!mark_fail"(0)
- lt rx166_pos, -1, rx166_done
- eq rx166_pos, -1, rx166_fail
- jump $I10
- rx166_done:
- rx166_cur."!cursor_fail"()
- rx166_cur."!cursor_debug"("FAIL ", "")
- .return (rx166_cur)
+ rx169_cur."!cursor_pass"(rx169_pos, "")
+ rx169_cur."!cursor_debug"("PASS ", "", " at pos=", rx169_pos)
+ .return (rx169_cur)
+ rx169_fail:
+ (rx169_rep, rx169_pos, $I10, $P10) = rx169_cur."!mark_fail"(0)
+ lt rx169_pos, -1, rx169_done
+ eq rx169_pos, -1, rx169_fail
+ jump $I10
+ rx169_done:
+ rx169_cur."!cursor_fail"()
+ rx169_cur."!cursor_debug"("FAIL ", "")
+ .return (rx169_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "eat_terminator" :subid("36_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 4
- .local string rx176_tgt
- .local int rx176_pos
- .local int rx176_off
- .local int rx176_eos
- .local int rx176_rep
- .local pmc rx176_cur
- (rx176_cur, rx176_pos, rx176_tgt) = self."!cursor_start"()
- rx176_cur."!cursor_debug"("START ", "eat_terminator")
- .lex unicode:"$\x{a2}", rx176_cur
- .local pmc match
- .lex "$/", match
- length rx176_eos, rx176_tgt
- set rx176_off, 0
- lt rx176_pos, 2, rx176_start
- sub rx176_off, rx176_pos, 1
- substr rx176_tgt, rx176_tgt, rx176_off
- rx176_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan179_done
- goto rxscan179_scan
- rxscan179_loop:
- ($P10) = rx176_cur."from"()
- inc $P10
- set rx176_pos, $P10
- ge rx176_pos, rx176_eos, rxscan179_done
- rxscan179_scan:
- set_addr $I10, rxscan179_loop
- rx176_cur."!mark_push"(0, rx176_pos, $I10)
- rxscan179_done:
- alt180_0:
-.annotate "line", 101
- set_addr $I10, alt180_1
- rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 102
+.sub "eat_terminator" :subid("36_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx179_tgt
+ .local int rx179_pos
+ .local int rx179_off
+ .local int rx179_eos
+ .local int rx179_rep
+ .local pmc rx179_cur
+ (rx179_cur, rx179_pos, rx179_tgt) = self."!cursor_start"()
+ rx179_cur."!cursor_debug"("START ", "eat_terminator")
+ .lex unicode:"$\x{a2}", rx179_cur
+ .local pmc match
+ .lex "$/", match
+ length rx179_eos, rx179_tgt
+ set rx179_off, 0
+ lt rx179_pos, 2, rx179_start
+ sub rx179_off, rx179_pos, 1
+ substr rx179_tgt, rx179_tgt, rx179_off
+ rx179_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan182_done
+ goto rxscan182_scan
+ rxscan182_loop:
+ ($P10) = rx179_cur."from"()
+ inc $P10
+ set rx179_pos, $P10
+ ge rx179_pos, rx179_eos, rxscan182_done
+ rxscan182_scan:
+ set_addr $I10, rxscan182_loop
+ rx179_cur."!mark_push"(0, rx179_pos, $I10)
+ rxscan182_done:
+ alt183_0:
+.annotate "line", 105
+ set_addr $I10, alt183_1
+ rx179_cur."!mark_push"(0, rx179_pos, $I10)
+.annotate "line", 106
# rx literal ";"
- add $I11, rx176_pos, 1
- gt $I11, rx176_eos, rx176_fail
- sub $I11, rx176_pos, rx176_off
- substr $S10, rx176_tgt, $I11, 1
- ne $S10, ";", rx176_fail
- add rx176_pos, 1
- goto alt180_end
- alt180_1:
- set_addr $I10, alt180_2
- rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 103
+ add $I11, rx179_pos, 1
+ gt $I11, rx179_eos, rx179_fail
+ sub $I11, rx179_pos, rx179_off
+ substr $S10, rx179_tgt, $I11, 1
+ ne $S10, ";", rx179_fail
+ add rx179_pos, 1
+ goto alt183_end
+ alt183_1:
+ set_addr $I10, alt183_2
+ rx179_cur."!mark_push"(0, rx179_pos, $I10)
+.annotate "line", 107
# rx subrule "MARKED" subtype=zerowidth negate=
- rx176_cur."!cursor_pos"(rx176_pos)
- $P10 = rx176_cur."MARKED"("endstmt")
- unless $P10, rx176_fail
- goto alt180_end
- alt180_2:
- set_addr $I10, alt180_3
- rx176_cur."!mark_push"(0, rx176_pos, $I10)
-.annotate "line", 104
+ rx179_cur."!cursor_pos"(rx179_pos)
+ $P10 = rx179_cur."MARKED"("endstmt")
+ unless $P10, rx179_fail
+ goto alt183_end
+ alt183_2:
+ set_addr $I10, alt183_3
+ rx179_cur."!mark_push"(0, rx179_pos, $I10)
+.annotate "line", 108
# rx subrule "terminator" subtype=zerowidth negate=
- rx176_cur."!cursor_pos"(rx176_pos)
- $P10 = rx176_cur."terminator"()
- unless $P10, rx176_fail
- goto alt180_end
- alt180_3:
-.annotate "line", 105
+ rx179_cur."!cursor_pos"(rx179_pos)
+ $P10 = rx179_cur."terminator"()
+ unless $P10, rx179_fail
+ goto alt183_end
+ alt183_3:
+.annotate "line", 109
# rxanchor eos
- ne rx176_pos, rx176_eos, rx176_fail
- alt180_end:
-.annotate "line", 101
+ ne rx179_pos, rx179_eos, rx179_fail
+ alt183_end:
+.annotate "line", 105
# rx pass
- rx176_cur."!cursor_pass"(rx176_pos, "eat_terminator")
- rx176_cur."!cursor_debug"("PASS ", "eat_terminator", " at pos=", rx176_pos)
- .return (rx176_cur)
- rx176_fail:
+ rx179_cur."!cursor_pass"(rx179_pos, "eat_terminator")
+ rx179_cur."!cursor_debug"("PASS ", "eat_terminator", " at pos=", rx179_pos)
+ .return (rx179_cur)
+ rx179_fail:
.annotate "line", 4
- (rx176_rep, rx176_pos, $I10, $P10) = rx176_cur."!mark_fail"(0)
- lt rx176_pos, -1, rx176_done
- eq rx176_pos, -1, rx176_fail
+ (rx179_rep, rx179_pos, $I10, $P10) = rx179_cur."!mark_fail"(0)
+ lt rx179_pos, -1, rx179_done
+ eq rx179_pos, -1, rx179_fail
jump $I10
- rx176_done:
- rx176_cur."!cursor_fail"()
- rx176_cur."!cursor_debug"("FAIL ", "eat_terminator")
- .return (rx176_cur)
+ rx179_done:
+ rx179_cur."!cursor_fail"()
+ rx179_cur."!cursor_debug"("FAIL ", "eat_terminator")
+ .return (rx179_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator" :subid("37_1267204702.05125") :method
+.sub "!PREFIX__eat_terminator" :subid("37_1272816833.94956") :method
.annotate "line", 4
- new $P178, "ResizablePMCArray"
- push $P178, ""
- push $P178, ""
- push $P178, ""
- push $P178, ";"
- .return ($P178)
+ new $P181, "ResizablePMCArray"
+ push $P181, ""
+ push $P181, ""
+ push $P181, ""
+ push $P181, ";"
+ .return ($P181)
.end
.namespace ["NQP";"Grammar"]
-.sub "xblock" :subid("38_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "xblock" :subid("38_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx182_tgt
- .local int rx182_pos
- .local int rx182_off
- .local int rx182_eos
- .local int rx182_rep
- .local pmc rx182_cur
- (rx182_cur, rx182_pos, rx182_tgt) = self."!cursor_start"()
- rx182_cur."!cursor_debug"("START ", "xblock")
- .lex unicode:"$\x{a2}", rx182_cur
+ .local string rx185_tgt
+ .local int rx185_pos
+ .local int rx185_off
+ .local int rx185_eos
+ .local int rx185_rep
+ .local pmc rx185_cur
+ (rx185_cur, rx185_pos, rx185_tgt) = self."!cursor_start"()
+ rx185_cur."!cursor_debug"("START ", "xblock")
+ .lex unicode:"$\x{a2}", rx185_cur
.local pmc match
.lex "$/", match
- length rx182_eos, rx182_tgt
- set rx182_off, 0
- lt rx182_pos, 2, rx182_start
- sub rx182_off, rx182_pos, 1
- substr rx182_tgt, rx182_tgt, rx182_off
- rx182_start:
+ length rx185_eos, rx185_tgt
+ set rx185_off, 0
+ lt rx185_pos, 2, rx185_start
+ sub rx185_off, rx185_pos, 1
+ substr rx185_tgt, rx185_tgt, rx185_off
+ rx185_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan186_done
- goto rxscan186_scan
- rxscan186_loop:
- ($P10) = rx182_cur."from"()
+ ne $I10, -1, rxscan189_done
+ goto rxscan189_scan
+ rxscan189_loop:
+ ($P10) = rx185_cur."from"()
inc $P10
- set rx182_pos, $P10
- ge rx182_pos, rx182_eos, rxscan186_done
- rxscan186_scan:
- set_addr $I10, rxscan186_loop
- rx182_cur."!mark_push"(0, rx182_pos, $I10)
- rxscan186_done:
-.annotate "line", 109
+ set rx185_pos, $P10
+ ge rx185_pos, rx185_eos, rxscan189_done
+ rxscan189_scan:
+ set_addr $I10, rxscan189_loop
+ rx185_cur."!mark_push"(0, rx185_pos, $I10)
+ rxscan189_done:
+.annotate "line", 113
# rx subrule "EXPR" subtype=capture negate=
- rx182_cur."!cursor_pos"(rx182_pos)
- $P10 = rx182_cur."EXPR"()
- unless $P10, rx182_fail
- rx182_cur."!mark_push"(0, -1, 0, $P10)
+ rx185_cur."!cursor_pos"(rx185_pos)
+ $P10 = rx185_cur."EXPR"()
+ unless $P10, rx185_fail
+ rx185_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx182_pos = $P10."pos"()
+ rx185_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx182_cur."!cursor_pos"(rx182_pos)
- $P10 = rx182_cur."ws"()
- unless $P10, rx182_fail
- rx182_pos = $P10."pos"()
+ rx185_cur."!cursor_pos"(rx185_pos)
+ $P10 = rx185_cur."ws"()
+ unless $P10, rx185_fail
+ rx185_pos = $P10."pos"()
# rx subrule "pblock" subtype=capture negate=
- rx182_cur."!cursor_pos"(rx182_pos)
- $P10 = rx182_cur."pblock"()
- unless $P10, rx182_fail
- rx182_cur."!mark_push"(0, -1, 0, $P10)
+ rx185_cur."!cursor_pos"(rx185_pos)
+ $P10 = rx185_cur."pblock"()
+ unless $P10, rx185_fail
+ rx185_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("pblock")
- rx182_pos = $P10."pos"()
-.annotate "line", 108
+ rx185_pos = $P10."pos"()
+.annotate "line", 112
# rx pass
- rx182_cur."!cursor_pass"(rx182_pos, "xblock")
- rx182_cur."!cursor_debug"("PASS ", "xblock", " at pos=", rx182_pos)
- .return (rx182_cur)
- rx182_fail:
+ rx185_cur."!cursor_pass"(rx185_pos, "xblock")
+ rx185_cur."!cursor_debug"("PASS ", "xblock", " at pos=", rx185_pos)
+ .return (rx185_cur)
+ rx185_fail:
.annotate "line", 4
- (rx182_rep, rx182_pos, $I10, $P10) = rx182_cur."!mark_fail"(0)
- lt rx182_pos, -1, rx182_done
- eq rx182_pos, -1, rx182_fail
+ (rx185_rep, rx185_pos, $I10, $P10) = rx185_cur."!mark_fail"(0)
+ lt rx185_pos, -1, rx185_done
+ eq rx185_pos, -1, rx185_fail
jump $I10
- rx182_done:
- rx182_cur."!cursor_fail"()
- rx182_cur."!cursor_debug"("FAIL ", "xblock")
- .return (rx182_cur)
+ rx185_done:
+ rx185_cur."!cursor_fail"()
+ rx185_cur."!cursor_debug"("FAIL ", "xblock")
+ .return (rx185_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock" :subid("39_1267204702.05125") :method
+.sub "!PREFIX__xblock" :subid("39_1272816833.94956") :method
.annotate "line", 4
- $P184 = self."!PREFIX__!subrule"("EXPR", "")
- new $P185, "ResizablePMCArray"
- push $P185, $P184
- .return ($P185)
+ $P187 = self."!PREFIX__!subrule"("EXPR", "")
+ new $P188, "ResizablePMCArray"
+ push $P188, $P187
+ .return ($P188)
.end
.namespace ["NQP";"Grammar"]
-.sub "pblock" :subid("40_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "pblock" :subid("40_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx188_tgt
- .local int rx188_pos
- .local int rx188_off
- .local int rx188_eos
- .local int rx188_rep
- .local pmc rx188_cur
- (rx188_cur, rx188_pos, rx188_tgt) = self."!cursor_start"()
- rx188_cur."!cursor_debug"("START ", "pblock")
- .lex unicode:"$\x{a2}", rx188_cur
+ .local string rx191_tgt
+ .local int rx191_pos
+ .local int rx191_off
+ .local int rx191_eos
+ .local int rx191_rep
+ .local pmc rx191_cur
+ (rx191_cur, rx191_pos, rx191_tgt) = self."!cursor_start"()
+ rx191_cur."!cursor_debug"("START ", "pblock")
+ .lex unicode:"$\x{a2}", rx191_cur
.local pmc match
.lex "$/", match
- length rx188_eos, rx188_tgt
- set rx188_off, 0
- lt rx188_pos, 2, rx188_start
- sub rx188_off, rx188_pos, 1
- substr rx188_tgt, rx188_tgt, rx188_off
- rx188_start:
+ length rx191_eos, rx191_tgt
+ set rx191_off, 0
+ lt rx191_pos, 2, rx191_start
+ sub rx191_off, rx191_pos, 1
+ substr rx191_tgt, rx191_tgt, rx191_off
+ rx191_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan193_done
- goto rxscan193_scan
- rxscan193_loop:
- ($P10) = rx188_cur."from"()
+ ne $I10, -1, rxscan196_done
+ goto rxscan196_scan
+ rxscan196_loop:
+ ($P10) = rx191_cur."from"()
inc $P10
- set rx188_pos, $P10
- ge rx188_pos, rx188_eos, rxscan193_done
- rxscan193_scan:
- set_addr $I10, rxscan193_loop
- rx188_cur."!mark_push"(0, rx188_pos, $I10)
- rxscan193_done:
- alt194_0:
-.annotate "line", 112
- set_addr $I10, alt194_1
- rx188_cur."!mark_push"(0, rx188_pos, $I10)
-.annotate "line", 113
+ set rx191_pos, $P10
+ ge rx191_pos, rx191_eos, rxscan196_done
+ rxscan196_scan:
+ set_addr $I10, rxscan196_loop
+ rx191_cur."!mark_push"(0, rx191_pos, $I10)
+ rxscan196_done:
+ alt197_0:
+.annotate "line", 116
+ set_addr $I10, alt197_1
+ rx191_cur."!mark_push"(0, rx191_pos, $I10)
+.annotate "line", 117
# rx subrule "lambda" subtype=method negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."lambda"()
- unless $P10, rx188_fail
- rx188_pos = $P10."pos"()
-.annotate "line", 114
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."lambda"()
+ unless $P10, rx191_fail
+ rx191_pos = $P10."pos"()
+.annotate "line", 118
# rx subrule "newpad" subtype=method negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."newpad"()
- unless $P10, rx188_fail
- rx188_pos = $P10."pos"()
-.annotate "line", 115
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."newpad"()
+ unless $P10, rx191_fail
+ rx191_pos = $P10."pos"()
+.annotate "line", 119
# rx subrule "signature" subtype=capture negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."signature"()
- unless $P10, rx188_fail
- rx188_cur."!mark_push"(0, -1, 0, $P10)
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."signature"()
+ unless $P10, rx191_fail
+ rx191_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("signature")
- rx188_pos = $P10."pos"()
-.annotate "line", 116
+ rx191_pos = $P10."pos"()
+.annotate "line", 120
# rx subrule "blockoid" subtype=capture negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."blockoid"()
- unless $P10, rx188_fail
- rx188_cur."!mark_push"(0, -1, 0, $P10)
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."blockoid"()
+ unless $P10, rx191_fail
+ rx191_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blockoid")
- rx188_pos = $P10."pos"()
-.annotate "line", 113
- goto alt194_end
- alt194_1:
- set_addr $I10, alt194_2
- rx188_cur."!mark_push"(0, rx188_pos, $I10)
+ rx191_pos = $P10."pos"()
.annotate "line", 117
+ goto alt197_end
+ alt197_1:
+ set_addr $I10, alt197_2
+ rx191_cur."!mark_push"(0, rx191_pos, $I10)
+.annotate "line", 121
# rx enumcharlist negate=0 zerowidth
- ge rx188_pos, rx188_eos, rx188_fail
- sub $I10, rx188_pos, rx188_off
- substr $S10, rx188_tgt, $I10, 1
+ ge rx191_pos, rx191_eos, rx191_fail
+ sub $I10, rx191_pos, rx191_off
+ substr $S10, rx191_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx188_fail
-.annotate "line", 118
+ lt $I11, 0, rx191_fail
+.annotate "line", 122
# rx subrule "newpad" subtype=method negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."newpad"()
- unless $P10, rx188_fail
- rx188_pos = $P10."pos"()
-.annotate "line", 119
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."newpad"()
+ unless $P10, rx191_fail
+ rx191_pos = $P10."pos"()
+.annotate "line", 123
# rx subrule "blockoid" subtype=capture negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."blockoid"()
- unless $P10, rx188_fail
- rx188_cur."!mark_push"(0, -1, 0, $P10)
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."blockoid"()
+ unless $P10, rx191_fail
+ rx191_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blockoid")
- rx188_pos = $P10."pos"()
-.annotate "line", 117
- goto alt194_end
- alt194_2:
-.annotate "line", 120
+ rx191_pos = $P10."pos"()
+.annotate "line", 121
+ goto alt197_end
+ alt197_2:
+.annotate "line", 124
# rx subrule "panic" subtype=method negate=
- rx188_cur."!cursor_pos"(rx188_pos)
- $P10 = rx188_cur."panic"("Missing block")
- unless $P10, rx188_fail
- rx188_pos = $P10."pos"()
- alt194_end:
-.annotate "line", 112
+ rx191_cur."!cursor_pos"(rx191_pos)
+ $P10 = rx191_cur."panic"("Missing block")
+ unless $P10, rx191_fail
+ rx191_pos = $P10."pos"()
+ alt197_end:
+.annotate "line", 116
# rx pass
- rx188_cur."!cursor_pass"(rx188_pos, "pblock")
- rx188_cur."!cursor_debug"("PASS ", "pblock", " at pos=", rx188_pos)
- .return (rx188_cur)
- rx188_fail:
+ rx191_cur."!cursor_pass"(rx191_pos, "pblock")
+ rx191_cur."!cursor_debug"("PASS ", "pblock", " at pos=", rx191_pos)
+ .return (rx191_cur)
+ rx191_fail:
.annotate "line", 4
- (rx188_rep, rx188_pos, $I10, $P10) = rx188_cur."!mark_fail"(0)
- lt rx188_pos, -1, rx188_done
- eq rx188_pos, -1, rx188_fail
+ (rx191_rep, rx191_pos, $I10, $P10) = rx191_cur."!mark_fail"(0)
+ lt rx191_pos, -1, rx191_done
+ eq rx191_pos, -1, rx191_fail
jump $I10
- rx188_done:
- rx188_cur."!cursor_fail"()
- rx188_cur."!cursor_debug"("FAIL ", "pblock")
- .return (rx188_cur)
+ rx191_done:
+ rx191_cur."!cursor_fail"()
+ rx191_cur."!cursor_debug"("FAIL ", "pblock")
+ .return (rx191_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock" :subid("41_1267204702.05125") :method
+.sub "!PREFIX__pblock" :subid("41_1272816833.94956") :method
.annotate "line", 4
- $P190 = self."!PREFIX__!subrule"("", "")
- $P191 = self."!PREFIX__!subrule"("", "")
- new $P192, "ResizablePMCArray"
- push $P192, $P190
- push $P192, "{"
- push $P192, $P191
- .return ($P192)
+ $P193 = self."!PREFIX__!subrule"("", "")
+ $P194 = self."!PREFIX__!subrule"("", "")
+ new $P195, "ResizablePMCArray"
+ push $P195, $P193
+ push $P195, "{"
+ push $P195, $P194
+ .return ($P195)
.end
.namespace ["NQP";"Grammar"]
-.sub "lambda" :subid("42_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "lambda" :subid("42_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx196_tgt
- .local int rx196_pos
- .local int rx196_off
- .local int rx196_eos
- .local int rx196_rep
- .local pmc rx196_cur
- (rx196_cur, rx196_pos, rx196_tgt) = self."!cursor_start"()
- rx196_cur."!cursor_debug"("START ", "lambda")
- .lex unicode:"$\x{a2}", rx196_cur
+ .local string rx199_tgt
+ .local int rx199_pos
+ .local int rx199_off
+ .local int rx199_eos
+ .local int rx199_rep
+ .local pmc rx199_cur
+ (rx199_cur, rx199_pos, rx199_tgt) = self."!cursor_start"()
+ rx199_cur."!cursor_debug"("START ", "lambda")
+ .lex unicode:"$\x{a2}", rx199_cur
.local pmc match
.lex "$/", match
- length rx196_eos, rx196_tgt
- set rx196_off, 0
- lt rx196_pos, 2, rx196_start
- sub rx196_off, rx196_pos, 1
- substr rx196_tgt, rx196_tgt, rx196_off
- rx196_start:
+ length rx199_eos, rx199_tgt
+ set rx199_off, 0
+ lt rx199_pos, 2, rx199_start
+ sub rx199_off, rx199_pos, 1
+ substr rx199_tgt, rx199_tgt, rx199_off
+ rx199_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan199_done
- goto rxscan199_scan
- rxscan199_loop:
- ($P10) = rx196_cur."from"()
+ ne $I10, -1, rxscan202_done
+ goto rxscan202_scan
+ rxscan202_loop:
+ ($P10) = rx199_cur."from"()
inc $P10
- set rx196_pos, $P10
- ge rx196_pos, rx196_eos, rxscan199_done
- rxscan199_scan:
- set_addr $I10, rxscan199_loop
- rx196_cur."!mark_push"(0, rx196_pos, $I10)
- rxscan199_done:
- alt200_0:
-.annotate "line", 123
- set_addr $I10, alt200_1
- rx196_cur."!mark_push"(0, rx196_pos, $I10)
+ set rx199_pos, $P10
+ ge rx199_pos, rx199_eos, rxscan202_done
+ rxscan202_scan:
+ set_addr $I10, rxscan202_loop
+ rx199_cur."!mark_push"(0, rx199_pos, $I10)
+ rxscan202_done:
+ alt203_0:
+.annotate "line", 127
+ set_addr $I10, alt203_1
+ rx199_cur."!mark_push"(0, rx199_pos, $I10)
# rx literal "->"
- add $I11, rx196_pos, 2
- gt $I11, rx196_eos, rx196_fail
- sub $I11, rx196_pos, rx196_off
- substr $S10, rx196_tgt, $I11, 2
- ne $S10, "->", rx196_fail
- add rx196_pos, 2
- goto alt200_end
- alt200_1:
+ add $I11, rx199_pos, 2
+ gt $I11, rx199_eos, rx199_fail
+ sub $I11, rx199_pos, rx199_off
+ substr $S10, rx199_tgt, $I11, 2
+ ne $S10, "->", rx199_fail
+ add rx199_pos, 2
+ goto alt203_end
+ alt203_1:
# rx literal "<->"
- add $I11, rx196_pos, 3
- gt $I11, rx196_eos, rx196_fail
- sub $I11, rx196_pos, rx196_off
- substr $S10, rx196_tgt, $I11, 3
- ne $S10, "<->", rx196_fail
- add rx196_pos, 3
- alt200_end:
+ add $I11, rx199_pos, 3
+ gt $I11, rx199_eos, rx199_fail
+ sub $I11, rx199_pos, rx199_off
+ substr $S10, rx199_tgt, $I11, 3
+ ne $S10, "<->", rx199_fail
+ add rx199_pos, 3
+ alt203_end:
# rx pass
- rx196_cur."!cursor_pass"(rx196_pos, "lambda")
- rx196_cur."!cursor_debug"("PASS ", "lambda", " at pos=", rx196_pos)
- .return (rx196_cur)
- rx196_fail:
+ rx199_cur."!cursor_pass"(rx199_pos, "lambda")
+ rx199_cur."!cursor_debug"("PASS ", "lambda", " at pos=", rx199_pos)
+ .return (rx199_cur)
+ rx199_fail:
.annotate "line", 4
- (rx196_rep, rx196_pos, $I10, $P10) = rx196_cur."!mark_fail"(0)
- lt rx196_pos, -1, rx196_done
- eq rx196_pos, -1, rx196_fail
+ (rx199_rep, rx199_pos, $I10, $P10) = rx199_cur."!mark_fail"(0)
+ lt rx199_pos, -1, rx199_done
+ eq rx199_pos, -1, rx199_fail
jump $I10
- rx196_done:
- rx196_cur."!cursor_fail"()
- rx196_cur."!cursor_debug"("FAIL ", "lambda")
- .return (rx196_cur)
+ rx199_done:
+ rx199_cur."!cursor_fail"()
+ rx199_cur."!cursor_debug"("FAIL ", "lambda")
+ .return (rx199_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda" :subid("43_1267204702.05125") :method
+.sub "!PREFIX__lambda" :subid("43_1272816833.94956") :method
.annotate "line", 4
- new $P198, "ResizablePMCArray"
- push $P198, "<->"
- push $P198, "->"
- .return ($P198)
+ new $P201, "ResizablePMCArray"
+ push $P201, "<->"
+ push $P201, "->"
+ .return ($P201)
.end
.namespace ["NQP";"Grammar"]
-.sub "block" :subid("44_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "block" :subid("44_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx202_tgt
- .local int rx202_pos
- .local int rx202_off
- .local int rx202_eos
- .local int rx202_rep
- .local pmc rx202_cur
- (rx202_cur, rx202_pos, rx202_tgt) = self."!cursor_start"()
- rx202_cur."!cursor_debug"("START ", "block")
- .lex unicode:"$\x{a2}", rx202_cur
+ .local string rx205_tgt
+ .local int rx205_pos
+ .local int rx205_off
+ .local int rx205_eos
+ .local int rx205_rep
+ .local pmc rx205_cur
+ (rx205_cur, rx205_pos, rx205_tgt) = self."!cursor_start"()
+ rx205_cur."!cursor_debug"("START ", "block")
+ .lex unicode:"$\x{a2}", rx205_cur
.local pmc match
.lex "$/", match
- length rx202_eos, rx202_tgt
- set rx202_off, 0
- lt rx202_pos, 2, rx202_start
- sub rx202_off, rx202_pos, 1
- substr rx202_tgt, rx202_tgt, rx202_off
- rx202_start:
+ length rx205_eos, rx205_tgt
+ set rx205_off, 0
+ lt rx205_pos, 2, rx205_start
+ sub rx205_off, rx205_pos, 1
+ substr rx205_tgt, rx205_tgt, rx205_off
+ rx205_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan206_done
- goto rxscan206_scan
- rxscan206_loop:
- ($P10) = rx202_cur."from"()
+ ne $I10, -1, rxscan209_done
+ goto rxscan209_scan
+ rxscan209_loop:
+ ($P10) = rx205_cur."from"()
inc $P10
- set rx202_pos, $P10
- ge rx202_pos, rx202_eos, rxscan206_done
- rxscan206_scan:
- set_addr $I10, rxscan206_loop
- rx202_cur."!mark_push"(0, rx202_pos, $I10)
- rxscan206_done:
- alt207_0:
-.annotate "line", 126
- set_addr $I10, alt207_1
- rx202_cur."!mark_push"(0, rx202_pos, $I10)
+ set rx205_pos, $P10
+ ge rx205_pos, rx205_eos, rxscan209_done
+ rxscan209_scan:
+ set_addr $I10, rxscan209_loop
+ rx205_cur."!mark_push"(0, rx205_pos, $I10)
+ rxscan209_done:
+ alt210_0:
+.annotate "line", 130
+ set_addr $I10, alt210_1
+ rx205_cur."!mark_push"(0, rx205_pos, $I10)
# rx enumcharlist negate=0 zerowidth
- ge rx202_pos, rx202_eos, rx202_fail
- sub $I10, rx202_pos, rx202_off
- substr $S10, rx202_tgt, $I10, 1
+ ge rx205_pos, rx205_eos, rx205_fail
+ sub $I10, rx205_pos, rx205_off
+ substr $S10, rx205_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx202_fail
- goto alt207_end
- alt207_1:
+ lt $I11, 0, rx205_fail
+ goto alt210_end
+ alt210_1:
# rx subrule "panic" subtype=method negate=
- rx202_cur."!cursor_pos"(rx202_pos)
- $P10 = rx202_cur."panic"("Missing block")
- unless $P10, rx202_fail
- rx202_pos = $P10."pos"()
- alt207_end:
-.annotate "line", 127
+ rx205_cur."!cursor_pos"(rx205_pos)
+ $P10 = rx205_cur."panic"("Missing block")
+ unless $P10, rx205_fail
+ rx205_pos = $P10."pos"()
+ alt210_end:
+.annotate "line", 131
# rx subrule "newpad" subtype=method negate=
- rx202_cur."!cursor_pos"(rx202_pos)
- $P10 = rx202_cur."newpad"()
- unless $P10, rx202_fail
- rx202_pos = $P10."pos"()
-.annotate "line", 128
+ rx205_cur."!cursor_pos"(rx205_pos)
+ $P10 = rx205_cur."newpad"()
+ unless $P10, rx205_fail
+ rx205_pos = $P10."pos"()
+.annotate "line", 132
# rx subrule "blockoid" subtype=capture negate=
- rx202_cur."!cursor_pos"(rx202_pos)
- $P10 = rx202_cur."blockoid"()
- unless $P10, rx202_fail
- rx202_cur."!mark_push"(0, -1, 0, $P10)
+ rx205_cur."!cursor_pos"(rx205_pos)
+ $P10 = rx205_cur."blockoid"()
+ unless $P10, rx205_fail
+ rx205_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blockoid")
- rx202_pos = $P10."pos"()
-.annotate "line", 125
+ rx205_pos = $P10."pos"()
+.annotate "line", 129
# rx pass
- rx202_cur."!cursor_pass"(rx202_pos, "block")
- rx202_cur."!cursor_debug"("PASS ", "block", " at pos=", rx202_pos)
- .return (rx202_cur)
- rx202_fail:
+ rx205_cur."!cursor_pass"(rx205_pos, "block")
+ rx205_cur."!cursor_debug"("PASS ", "block", " at pos=", rx205_pos)
+ .return (rx205_cur)
+ rx205_fail:
.annotate "line", 4
- (rx202_rep, rx202_pos, $I10, $P10) = rx202_cur."!mark_fail"(0)
- lt rx202_pos, -1, rx202_done
- eq rx202_pos, -1, rx202_fail
+ (rx205_rep, rx205_pos, $I10, $P10) = rx205_cur."!mark_fail"(0)
+ lt rx205_pos, -1, rx205_done
+ eq rx205_pos, -1, rx205_fail
jump $I10
- rx202_done:
- rx202_cur."!cursor_fail"()
- rx202_cur."!cursor_debug"("FAIL ", "block")
- .return (rx202_cur)
+ rx205_done:
+ rx205_cur."!cursor_fail"()
+ rx205_cur."!cursor_debug"("FAIL ", "block")
+ .return (rx205_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block" :subid("45_1267204702.05125") :method
+.sub "!PREFIX__block" :subid("45_1272816833.94956") :method
.annotate "line", 4
- $P204 = self."!PREFIX__!subrule"("", "")
- new $P205, "ResizablePMCArray"
- push $P205, $P204
- push $P205, "{"
- .return ($P205)
+ $P207 = self."!PREFIX__!subrule"("", "")
+ new $P208, "ResizablePMCArray"
+ push $P208, $P207
+ push $P208, "{"
+ .return ($P208)
.end
.namespace ["NQP";"Grammar"]
-.sub "blockoid" :subid("46_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "blockoid" :subid("46_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx209_tgt
- .local int rx209_pos
- .local int rx209_off
- .local int rx209_eos
- .local int rx209_rep
- .local pmc rx209_cur
- (rx209_cur, rx209_pos, rx209_tgt) = self."!cursor_start"()
- rx209_cur."!cursor_debug"("START ", "blockoid")
- .lex unicode:"$\x{a2}", rx209_cur
+ .local string rx212_tgt
+ .local int rx212_pos
+ .local int rx212_off
+ .local int rx212_eos
+ .local int rx212_rep
+ .local pmc rx212_cur
+ (rx212_cur, rx212_pos, rx212_tgt) = self."!cursor_start"()
+ rx212_cur."!cursor_debug"("START ", "blockoid")
+ .lex unicode:"$\x{a2}", rx212_cur
.local pmc match
.lex "$/", match
- length rx209_eos, rx209_tgt
- set rx209_off, 0
- lt rx209_pos, 2, rx209_start
- sub rx209_off, rx209_pos, 1
- substr rx209_tgt, rx209_tgt, rx209_off
- rx209_start:
+ length rx212_eos, rx212_tgt
+ set rx212_off, 0
+ lt rx212_pos, 2, rx212_start
+ sub rx212_off, rx212_pos, 1
+ substr rx212_tgt, rx212_tgt, rx212_off
+ rx212_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan213_done
- goto rxscan213_scan
- rxscan213_loop:
- ($P10) = rx209_cur."from"()
+ ne $I10, -1, rxscan216_done
+ goto rxscan216_scan
+ rxscan216_loop:
+ ($P10) = rx212_cur."from"()
inc $P10
- set rx209_pos, $P10
- ge rx209_pos, rx209_eos, rxscan213_done
- rxscan213_scan:
- set_addr $I10, rxscan213_loop
- rx209_cur."!mark_push"(0, rx209_pos, $I10)
- rxscan213_done:
-.annotate "line", 132
+ set rx212_pos, $P10
+ ge rx212_pos, rx212_eos, rxscan216_done
+ rxscan216_scan:
+ set_addr $I10, rxscan216_loop
+ rx212_cur."!mark_push"(0, rx212_pos, $I10)
+ rxscan216_done:
+.annotate "line", 136
# rx subrule "finishpad" subtype=method negate=
- rx209_cur."!cursor_pos"(rx209_pos)
- $P10 = rx209_cur."finishpad"()
- unless $P10, rx209_fail
- rx209_pos = $P10."pos"()
-.annotate "line", 133
+ rx212_cur."!cursor_pos"(rx212_pos)
+ $P10 = rx212_cur."finishpad"()
+ unless $P10, rx212_fail
+ rx212_pos = $P10."pos"()
+.annotate "line", 137
# rx literal "{"
- add $I11, rx209_pos, 1
- gt $I11, rx209_eos, rx209_fail
- sub $I11, rx209_pos, rx209_off
- substr $S10, rx209_tgt, $I11, 1
- ne $S10, "{", rx209_fail
- add rx209_pos, 1
+ add $I11, rx212_pos, 1
+ gt $I11, rx212_eos, rx212_fail
+ sub $I11, rx212_pos, rx212_off
+ substr $S10, rx212_tgt, $I11, 1
+ ne $S10, "{", rx212_fail
+ add rx212_pos, 1
# rx subrule "statementlist" subtype=capture negate=
- rx209_cur."!cursor_pos"(rx209_pos)
- $P10 = rx209_cur."statementlist"()
- unless $P10, rx209_fail
- rx209_cur."!mark_push"(0, -1, 0, $P10)
+ rx212_cur."!cursor_pos"(rx212_pos)
+ $P10 = rx212_cur."statementlist"()
+ unless $P10, rx212_fail
+ rx212_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statementlist")
- rx209_pos = $P10."pos"()
- alt214_0:
- set_addr $I10, alt214_1
- rx209_cur."!mark_push"(0, rx209_pos, $I10)
+ rx212_pos = $P10."pos"()
+ alt217_0:
+ set_addr $I10, alt217_1
+ rx212_cur."!mark_push"(0, rx212_pos, $I10)
# rx literal "}"
- add $I11, rx209_pos, 1
- gt $I11, rx209_eos, rx209_fail
- sub $I11, rx209_pos, rx209_off
- substr $S10, rx209_tgt, $I11, 1
- ne $S10, "}", rx209_fail
- add rx209_pos, 1
- goto alt214_end
- alt214_1:
+ add $I11, rx212_pos, 1
+ gt $I11, rx212_eos, rx212_fail
+ sub $I11, rx212_pos, rx212_off
+ substr $S10, rx212_tgt, $I11, 1
+ ne $S10, "}", rx212_fail
+ add rx212_pos, 1
+ goto alt217_end
+ alt217_1:
# rx subrule "FAILGOAL" subtype=method negate=
- rx209_cur."!cursor_pos"(rx209_pos)
- $P10 = rx209_cur."FAILGOAL"("'}'")
- unless $P10, rx209_fail
- rx209_pos = $P10."pos"()
- alt214_end:
-.annotate "line", 134
+ rx212_cur."!cursor_pos"(rx212_pos)
+ $P10 = rx212_cur."FAILGOAL"("'}'")
+ unless $P10, rx212_fail
+ rx212_pos = $P10."pos"()
+ alt217_end:
+.annotate "line", 138
# rx subrule "ENDSTMT" subtype=zerowidth negate=
- rx209_cur."!cursor_pos"(rx209_pos)
- $P10 = rx209_cur."ENDSTMT"()
- unless $P10, rx209_fail
-.annotate "line", 131
+ rx212_cur."!cursor_pos"(rx212_pos)
+ $P10 = rx212_cur."ENDSTMT"()
+ unless $P10, rx212_fail
+.annotate "line", 135
# rx pass
- rx209_cur."!cursor_pass"(rx209_pos, "blockoid")
- rx209_cur."!cursor_debug"("PASS ", "blockoid", " at pos=", rx209_pos)
- .return (rx209_cur)
- rx209_fail:
+ rx212_cur."!cursor_pass"(rx212_pos, "blockoid")
+ rx212_cur."!cursor_debug"("PASS ", "blockoid", " at pos=", rx212_pos)
+ .return (rx212_cur)
+ rx212_fail:
.annotate "line", 4
- (rx209_rep, rx209_pos, $I10, $P10) = rx209_cur."!mark_fail"(0)
- lt rx209_pos, -1, rx209_done
- eq rx209_pos, -1, rx209_fail
+ (rx212_rep, rx212_pos, $I10, $P10) = rx212_cur."!mark_fail"(0)
+ lt rx212_pos, -1, rx212_done
+ eq rx212_pos, -1, rx212_fail
jump $I10
- rx209_done:
- rx209_cur."!cursor_fail"()
- rx209_cur."!cursor_debug"("FAIL ", "blockoid")
- .return (rx209_cur)
+ rx212_done:
+ rx212_cur."!cursor_fail"()
+ rx212_cur."!cursor_debug"("FAIL ", "blockoid")
+ .return (rx212_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid" :subid("47_1267204702.05125") :method
+.sub "!PREFIX__blockoid" :subid("47_1272816833.94956") :method
.annotate "line", 4
- $P211 = self."!PREFIX__!subrule"("", "")
- new $P212, "ResizablePMCArray"
- push $P212, $P211
- .return ($P212)
+ $P214 = self."!PREFIX__!subrule"("", "")
+ new $P215, "ResizablePMCArray"
+ push $P215, $P214
+ .return ($P215)
.end
.namespace ["NQP";"Grammar"]
-.sub "newpad" :subid("48_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "newpad" :subid("48_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx217_tgt
- .local int rx217_pos
- .local int rx217_off
- .local int rx217_eos
- .local int rx217_rep
- .local pmc rx217_cur
- (rx217_cur, rx217_pos, rx217_tgt) = self."!cursor_start"()
- rx217_cur."!cursor_debug"("START ", "newpad")
- .lex unicode:"$\x{a2}", rx217_cur
+ .local string rx220_tgt
+ .local int rx220_pos
+ .local int rx220_off
+ .local int rx220_eos
+ .local int rx220_rep
+ .local pmc rx220_cur
+ (rx220_cur, rx220_pos, rx220_tgt) = self."!cursor_start"()
+ rx220_cur."!cursor_debug"("START ", "newpad")
+ .lex unicode:"$\x{a2}", rx220_cur
.local pmc match
.lex "$/", match
- length rx217_eos, rx217_tgt
- set rx217_off, 0
- lt rx217_pos, 2, rx217_start
- sub rx217_off, rx217_pos, 1
- substr rx217_tgt, rx217_tgt, rx217_off
- rx217_start:
+ length rx220_eos, rx220_tgt
+ set rx220_off, 0
+ lt rx220_pos, 2, rx220_start
+ sub rx220_off, rx220_pos, 1
+ substr rx220_tgt, rx220_tgt, rx220_off
+ rx220_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan220_done
- goto rxscan220_scan
- rxscan220_loop:
- ($P10) = rx217_cur."from"()
+ ne $I10, -1, rxscan223_done
+ goto rxscan223_scan
+ rxscan223_loop:
+ ($P10) = rx220_cur."from"()
inc $P10
- set rx217_pos, $P10
- ge rx217_pos, rx217_eos, rxscan220_done
- rxscan220_scan:
- set_addr $I10, rxscan220_loop
- rx217_cur."!mark_push"(0, rx217_pos, $I10)
- rxscan220_done:
-.annotate "line", 137
+ set rx220_pos, $P10
+ ge rx220_pos, rx220_eos, rxscan223_done
+ rxscan223_scan:
+ set_addr $I10, rxscan223_loop
+ rx220_cur."!mark_push"(0, rx220_pos, $I10)
+ rxscan223_done:
+.annotate "line", 141
# rx pass
- rx217_cur."!cursor_pass"(rx217_pos, "newpad")
- rx217_cur."!cursor_debug"("PASS ", "newpad", " at pos=", rx217_pos)
- .return (rx217_cur)
- rx217_fail:
+ rx220_cur."!cursor_pass"(rx220_pos, "newpad")
+ rx220_cur."!cursor_debug"("PASS ", "newpad", " at pos=", rx220_pos)
+ .return (rx220_cur)
+ rx220_fail:
.annotate "line", 4
- (rx217_rep, rx217_pos, $I10, $P10) = rx217_cur."!mark_fail"(0)
- lt rx217_pos, -1, rx217_done
- eq rx217_pos, -1, rx217_fail
+ (rx220_rep, rx220_pos, $I10, $P10) = rx220_cur."!mark_fail"(0)
+ lt rx220_pos, -1, rx220_done
+ eq rx220_pos, -1, rx220_fail
jump $I10
- rx217_done:
- rx217_cur."!cursor_fail"()
- rx217_cur."!cursor_debug"("FAIL ", "newpad")
- .return (rx217_cur)
+ rx220_done:
+ rx220_cur."!cursor_fail"()
+ rx220_cur."!cursor_debug"("FAIL ", "newpad")
+ .return (rx220_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad" :subid("49_1267204702.05125") :method
+.sub "!PREFIX__newpad" :subid("49_1272816833.94956") :method
.annotate "line", 4
- new $P219, "ResizablePMCArray"
- push $P219, ""
- .return ($P219)
+ new $P222, "ResizablePMCArray"
+ push $P222, ""
+ .return ($P222)
.end
.namespace ["NQP";"Grammar"]
-.sub "finishpad" :subid("50_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "finishpad" :subid("50_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx222_tgt
- .local int rx222_pos
- .local int rx222_off
- .local int rx222_eos
- .local int rx222_rep
- .local pmc rx222_cur
- (rx222_cur, rx222_pos, rx222_tgt) = self."!cursor_start"()
- rx222_cur."!cursor_debug"("START ", "finishpad")
- .lex unicode:"$\x{a2}", rx222_cur
+ .local string rx225_tgt
+ .local int rx225_pos
+ .local int rx225_off
+ .local int rx225_eos
+ .local int rx225_rep
+ .local pmc rx225_cur
+ (rx225_cur, rx225_pos, rx225_tgt) = self."!cursor_start"()
+ rx225_cur."!cursor_debug"("START ", "finishpad")
+ .lex unicode:"$\x{a2}", rx225_cur
.local pmc match
.lex "$/", match
- length rx222_eos, rx222_tgt
- set rx222_off, 0
- lt rx222_pos, 2, rx222_start
- sub rx222_off, rx222_pos, 1
- substr rx222_tgt, rx222_tgt, rx222_off
- rx222_start:
+ length rx225_eos, rx225_tgt
+ set rx225_off, 0
+ lt rx225_pos, 2, rx225_start
+ sub rx225_off, rx225_pos, 1
+ substr rx225_tgt, rx225_tgt, rx225_off
+ rx225_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan225_done
- goto rxscan225_scan
- rxscan225_loop:
- ($P10) = rx222_cur."from"()
+ ne $I10, -1, rxscan228_done
+ goto rxscan228_scan
+ rxscan228_loop:
+ ($P10) = rx225_cur."from"()
inc $P10
- set rx222_pos, $P10
- ge rx222_pos, rx222_eos, rxscan225_done
- rxscan225_scan:
- set_addr $I10, rxscan225_loop
- rx222_cur."!mark_push"(0, rx222_pos, $I10)
- rxscan225_done:
-.annotate "line", 138
+ set rx225_pos, $P10
+ ge rx225_pos, rx225_eos, rxscan228_done
+ rxscan228_scan:
+ set_addr $I10, rxscan228_loop
+ rx225_cur."!mark_push"(0, rx225_pos, $I10)
+ rxscan228_done:
+.annotate "line", 142
# rx pass
- rx222_cur."!cursor_pass"(rx222_pos, "finishpad")
- rx222_cur."!cursor_debug"("PASS ", "finishpad", " at pos=", rx222_pos)
- .return (rx222_cur)
- rx222_fail:
+ rx225_cur."!cursor_pass"(rx225_pos, "finishpad")
+ rx225_cur."!cursor_debug"("PASS ", "finishpad", " at pos=", rx225_pos)
+ .return (rx225_cur)
+ rx225_fail:
.annotate "line", 4
- (rx222_rep, rx222_pos, $I10, $P10) = rx222_cur."!mark_fail"(0)
- lt rx222_pos, -1, rx222_done
- eq rx222_pos, -1, rx222_fail
+ (rx225_rep, rx225_pos, $I10, $P10) = rx225_cur."!mark_fail"(0)
+ lt rx225_pos, -1, rx225_done
+ eq rx225_pos, -1, rx225_fail
jump $I10
- rx222_done:
- rx222_cur."!cursor_fail"()
- rx222_cur."!cursor_debug"("FAIL ", "finishpad")
- .return (rx222_cur)
+ rx225_done:
+ rx225_cur."!cursor_fail"()
+ rx225_cur."!cursor_debug"("FAIL ", "finishpad")
+ .return (rx225_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad" :subid("51_1267204702.05125") :method
+.sub "!PREFIX__finishpad" :subid("51_1272816833.94956") :method
.annotate "line", 4
- new $P224, "ResizablePMCArray"
- push $P224, ""
- .return ($P224)
+ new $P227, "ResizablePMCArray"
+ push $P227, ""
+ .return ($P227)
.end
.namespace ["NQP";"Grammar"]
-.sub "terminator" :subid("52_1267204702.05125") :method
-.annotate "line", 140
- $P227 = self."!protoregex"("terminator")
- .return ($P227)
+.sub "terminator" :subid("52_1272816833.94956") :method
+.annotate "line", 144
+ $P230 = self."!protoregex"("terminator")
+ .return ($P230)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator" :subid("53_1267204702.05125") :method
-.annotate "line", 140
- $P229 = self."!PREFIX__!protoregex"("terminator")
- .return ($P229)
+.sub "!PREFIX__terminator" :subid("53_1272816833.94956") :method
+.annotate "line", 144
+ $P232 = self."!PREFIX__!protoregex"("terminator")
+ .return ($P232)
.end
.namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>" :subid("54_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "terminator:sym<;>" :subid("54_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx231_tgt
- .local int rx231_pos
- .local int rx231_off
- .local int rx231_eos
- .local int rx231_rep
- .local pmc rx231_cur
- (rx231_cur, rx231_pos, rx231_tgt) = self."!cursor_start"()
- rx231_cur."!cursor_debug"("START ", "terminator:sym<;>")
- .lex unicode:"$\x{a2}", rx231_cur
- .local pmc match
- .lex "$/", match
- length rx231_eos, rx231_tgt
- set rx231_off, 0
- lt rx231_pos, 2, rx231_start
- sub rx231_off, rx231_pos, 1
- substr rx231_tgt, rx231_tgt, rx231_off
- rx231_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan234_done
- goto rxscan234_scan
- rxscan234_loop:
- ($P10) = rx231_cur."from"()
- inc $P10
- set rx231_pos, $P10
- ge rx231_pos, rx231_eos, rxscan234_done
- rxscan234_scan:
- set_addr $I10, rxscan234_loop
- rx231_cur."!mark_push"(0, rx231_pos, $I10)
- rxscan234_done:
-.annotate "line", 142
+ .local string rx234_tgt
+ .local int rx234_pos
+ .local int rx234_off
+ .local int rx234_eos
+ .local int rx234_rep
+ .local pmc rx234_cur
+ (rx234_cur, rx234_pos, rx234_tgt) = self."!cursor_start"()
+ rx234_cur."!cursor_debug"("START ", "terminator:sym<;>")
+ .lex unicode:"$\x{a2}", rx234_cur
+ .local pmc match
+ .lex "$/", match
+ length rx234_eos, rx234_tgt
+ set rx234_off, 0
+ lt rx234_pos, 2, rx234_start
+ sub rx234_off, rx234_pos, 1
+ substr rx234_tgt, rx234_tgt, rx234_off
+ rx234_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan237_done
+ goto rxscan237_scan
+ rxscan237_loop:
+ ($P10) = rx234_cur."from"()
+ inc $P10
+ set rx234_pos, $P10
+ ge rx234_pos, rx234_eos, rxscan237_done
+ rxscan237_scan:
+ set_addr $I10, rxscan237_loop
+ rx234_cur."!mark_push"(0, rx234_pos, $I10)
+ rxscan237_done:
+.annotate "line", 146
# rx enumcharlist negate=0 zerowidth
- ge rx231_pos, rx231_eos, rx231_fail
- sub $I10, rx231_pos, rx231_off
- substr $S10, rx231_tgt, $I10, 1
+ ge rx234_pos, rx234_eos, rx234_fail
+ sub $I10, rx234_pos, rx234_off
+ substr $S10, rx234_tgt, $I10, 1
index $I11, ";", $S10
- lt $I11, 0, rx231_fail
+ lt $I11, 0, rx234_fail
# rx pass
- rx231_cur."!cursor_pass"(rx231_pos, "terminator:sym<;>")
- rx231_cur."!cursor_debug"("PASS ", "terminator:sym<;>", " at pos=", rx231_pos)
- .return (rx231_cur)
- rx231_fail:
+ rx234_cur."!cursor_pass"(rx234_pos, "terminator:sym<;>")
+ rx234_cur."!cursor_debug"("PASS ", "terminator:sym<;>", " at pos=", rx234_pos)
+ .return (rx234_cur)
+ rx234_fail:
.annotate "line", 4
- (rx231_rep, rx231_pos, $I10, $P10) = rx231_cur."!mark_fail"(0)
- lt rx231_pos, -1, rx231_done
- eq rx231_pos, -1, rx231_fail
+ (rx234_rep, rx234_pos, $I10, $P10) = rx234_cur."!mark_fail"(0)
+ lt rx234_pos, -1, rx234_done
+ eq rx234_pos, -1, rx234_fail
jump $I10
- rx231_done:
- rx231_cur."!cursor_fail"()
- rx231_cur."!cursor_debug"("FAIL ", "terminator:sym<;>")
- .return (rx231_cur)
+ rx234_done:
+ rx234_cur."!cursor_fail"()
+ rx234_cur."!cursor_debug"("FAIL ", "terminator:sym<;>")
+ .return (rx234_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>" :subid("55_1267204702.05125") :method
+.sub "!PREFIX__terminator:sym<;>" :subid("55_1272816833.94956") :method
.annotate "line", 4
- new $P233, "ResizablePMCArray"
- push $P233, ";"
- .return ($P233)
+ new $P236, "ResizablePMCArray"
+ push $P236, ";"
+ .return ($P236)
.end
.namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>" :subid("56_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "terminator:sym<}>" :subid("56_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx236_tgt
- .local int rx236_pos
- .local int rx236_off
- .local int rx236_eos
- .local int rx236_rep
- .local pmc rx236_cur
- (rx236_cur, rx236_pos, rx236_tgt) = self."!cursor_start"()
- rx236_cur."!cursor_debug"("START ", "terminator:sym<}>")
- .lex unicode:"$\x{a2}", rx236_cur
+ .local string rx239_tgt
+ .local int rx239_pos
+ .local int rx239_off
+ .local int rx239_eos
+ .local int rx239_rep
+ .local pmc rx239_cur
+ (rx239_cur, rx239_pos, rx239_tgt) = self."!cursor_start"()
+ rx239_cur."!cursor_debug"("START ", "terminator:sym<}>")
+ .lex unicode:"$\x{a2}", rx239_cur
.local pmc match
.lex "$/", match
- length rx236_eos, rx236_tgt
- set rx236_off, 0
- lt rx236_pos, 2, rx236_start
- sub rx236_off, rx236_pos, 1
- substr rx236_tgt, rx236_tgt, rx236_off
- rx236_start:
+ length rx239_eos, rx239_tgt
+ set rx239_off, 0
+ lt rx239_pos, 2, rx239_start
+ sub rx239_off, rx239_pos, 1
+ substr rx239_tgt, rx239_tgt, rx239_off
+ rx239_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan239_done
- goto rxscan239_scan
- rxscan239_loop:
- ($P10) = rx236_cur."from"()
+ ne $I10, -1, rxscan242_done
+ goto rxscan242_scan
+ rxscan242_loop:
+ ($P10) = rx239_cur."from"()
inc $P10
- set rx236_pos, $P10
- ge rx236_pos, rx236_eos, rxscan239_done
- rxscan239_scan:
- set_addr $I10, rxscan239_loop
- rx236_cur."!mark_push"(0, rx236_pos, $I10)
- rxscan239_done:
-.annotate "line", 143
+ set rx239_pos, $P10
+ ge rx239_pos, rx239_eos, rxscan242_done
+ rxscan242_scan:
+ set_addr $I10, rxscan242_loop
+ rx239_cur."!mark_push"(0, rx239_pos, $I10)
+ rxscan242_done:
+.annotate "line", 147
# rx enumcharlist negate=0 zerowidth
- ge rx236_pos, rx236_eos, rx236_fail
- sub $I10, rx236_pos, rx236_off
- substr $S10, rx236_tgt, $I10, 1
+ ge rx239_pos, rx239_eos, rx239_fail
+ sub $I10, rx239_pos, rx239_off
+ substr $S10, rx239_tgt, $I10, 1
index $I11, "}", $S10
- lt $I11, 0, rx236_fail
+ lt $I11, 0, rx239_fail
# rx pass
- rx236_cur."!cursor_pass"(rx236_pos, "terminator:sym<}>")
- rx236_cur."!cursor_debug"("PASS ", "terminator:sym<}>", " at pos=", rx236_pos)
- .return (rx236_cur)
- rx236_fail:
+ rx239_cur."!cursor_pass"(rx239_pos, "terminator:sym<}>")
+ rx239_cur."!cursor_debug"("PASS ", "terminator:sym<}>", " at pos=", rx239_pos)
+ .return (rx239_cur)
+ rx239_fail:
.annotate "line", 4
- (rx236_rep, rx236_pos, $I10, $P10) = rx236_cur."!mark_fail"(0)
- lt rx236_pos, -1, rx236_done
- eq rx236_pos, -1, rx236_fail
+ (rx239_rep, rx239_pos, $I10, $P10) = rx239_cur."!mark_fail"(0)
+ lt rx239_pos, -1, rx239_done
+ eq rx239_pos, -1, rx239_fail
jump $I10
- rx236_done:
- rx236_cur."!cursor_fail"()
- rx236_cur."!cursor_debug"("FAIL ", "terminator:sym<}>")
- .return (rx236_cur)
+ rx239_done:
+ rx239_cur."!cursor_fail"()
+ rx239_cur."!cursor_debug"("FAIL ", "terminator:sym<}>")
+ .return (rx239_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>" :subid("57_1267204702.05125") :method
+.sub "!PREFIX__terminator:sym<}>" :subid("57_1272816833.94956") :method
.annotate "line", 4
- new $P238, "ResizablePMCArray"
- push $P238, "}"
- .return ($P238)
+ new $P241, "ResizablePMCArray"
+ push $P241, "}"
+ .return ($P241)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control" :subid("58_1267204702.05125") :method
-.annotate "line", 147
- $P241 = self."!protoregex"("statement_control")
- .return ($P241)
+.sub "statement_control" :subid("58_1272816833.94956") :method
+.annotate "line", 151
+ $P244 = self."!protoregex"("statement_control")
+ .return ($P244)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control" :subid("59_1267204702.05125") :method
-.annotate "line", 147
- $P243 = self."!PREFIX__!protoregex"("statement_control")
- .return ($P243)
+.sub "!PREFIX__statement_control" :subid("59_1272816833.94956") :method
+.annotate "line", 151
+ $P246 = self."!PREFIX__!protoregex"("statement_control")
+ .return ($P246)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>" :subid("60_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<if>" :subid("60_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx245_tgt
- .local int rx245_pos
- .local int rx245_off
- .local int rx245_eos
- .local int rx245_rep
- .local pmc rx245_cur
- (rx245_cur, rx245_pos, rx245_tgt) = self."!cursor_start"()
- rx245_cur."!cursor_debug"("START ", "statement_control:sym<if>")
- rx245_cur."!cursor_caparray"("else", "xblock")
- .lex unicode:"$\x{a2}", rx245_cur
- .local pmc match
- .lex "$/", match
- length rx245_eos, rx245_tgt
- set rx245_off, 0
- lt rx245_pos, 2, rx245_start
- sub rx245_off, rx245_pos, 1
- substr rx245_tgt, rx245_tgt, rx245_off
- rx245_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan248_done
- goto rxscan248_scan
- rxscan248_loop:
- ($P10) = rx245_cur."from"()
- inc $P10
- set rx245_pos, $P10
- ge rx245_pos, rx245_eos, rxscan248_done
- rxscan248_scan:
- set_addr $I10, rxscan248_loop
- rx245_cur."!mark_push"(0, rx245_pos, $I10)
- rxscan248_done:
-.annotate "line", 150
+ .local string rx248_tgt
+ .local int rx248_pos
+ .local int rx248_off
+ .local int rx248_eos
+ .local int rx248_rep
+ .local pmc rx248_cur
+ (rx248_cur, rx248_pos, rx248_tgt) = self."!cursor_start"()
+ rx248_cur."!cursor_debug"("START ", "statement_control:sym<if>")
+ rx248_cur."!cursor_caparray"("xblock", "else")
+ .lex unicode:"$\x{a2}", rx248_cur
+ .local pmc match
+ .lex "$/", match
+ length rx248_eos, rx248_tgt
+ set rx248_off, 0
+ lt rx248_pos, 2, rx248_start
+ sub rx248_off, rx248_pos, 1
+ substr rx248_tgt, rx248_tgt, rx248_off
+ rx248_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan251_done
+ goto rxscan251_scan
+ rxscan251_loop:
+ ($P10) = rx248_cur."from"()
+ inc $P10
+ set rx248_pos, $P10
+ ge rx248_pos, rx248_eos, rxscan251_done
+ rxscan251_scan:
+ set_addr $I10, rxscan251_loop
+ rx248_cur."!mark_push"(0, rx248_pos, $I10)
+ rxscan251_done:
+.annotate "line", 154
# rx subcapture "sym"
- set_addr $I10, rxcap_249_fail
- rx245_cur."!mark_push"(0, rx245_pos, $I10)
+ set_addr $I10, rxcap_252_fail
+ rx248_cur."!mark_push"(0, rx248_pos, $I10)
# rx literal "if"
- add $I11, rx245_pos, 2
- gt $I11, rx245_eos, rx245_fail
- sub $I11, rx245_pos, rx245_off
- substr $S10, rx245_tgt, $I11, 2
- ne $S10, "if", rx245_fail
- add rx245_pos, 2
- set_addr $I10, rxcap_249_fail
- ($I12, $I11) = rx245_cur."!mark_peek"($I10)
- rx245_cur."!cursor_pos"($I11)
- ($P10) = rx245_cur."!cursor_start"()
- $P10."!cursor_pass"(rx245_pos, "")
- rx245_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx248_pos, 2
+ gt $I11, rx248_eos, rx248_fail
+ sub $I11, rx248_pos, rx248_off
+ substr $S10, rx248_tgt, $I11, 2
+ ne $S10, "if", rx248_fail
+ add rx248_pos, 2
+ set_addr $I10, rxcap_252_fail
+ ($I12, $I11) = rx248_cur."!mark_peek"($I10)
+ rx248_cur."!cursor_pos"($I11)
+ ($P10) = rx248_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx248_pos, "")
+ rx248_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_249_done
- rxcap_249_fail:
- goto rx245_fail
- rxcap_249_done:
+ goto rxcap_252_done
+ rxcap_252_fail:
+ goto rx248_fail
+ rxcap_252_done:
# rx charclass s
- ge rx245_pos, rx245_eos, rx245_fail
- sub $I10, rx245_pos, rx245_off
- is_cclass $I11, 32, rx245_tgt, $I10
- unless $I11, rx245_fail
- inc rx245_pos
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
-.annotate "line", 151
+ ge rx248_pos, rx248_eos, rx248_fail
+ sub $I10, rx248_pos, rx248_off
+ is_cclass $I11, 32, rx248_tgt, $I10
+ unless $I11, rx248_fail
+ inc rx248_pos
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+.annotate "line", 155
# rx subrule "xblock" subtype=capture negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."xblock"()
- unless $P10, rx245_fail
- rx245_cur."!mark_push"(0, -1, 0, $P10)
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."xblock"()
+ unless $P10, rx248_fail
+ rx248_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx245_pos = $P10."pos"()
+ rx248_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
-.annotate "line", 152
- # rx rxquantr252 ** 0..*
- set_addr $I256, rxquantr252_done
- rx245_cur."!mark_push"(0, rx245_pos, $I256)
- rxquantr252_loop:
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+.annotate "line", 156
+ # rx rxquantr255 ** 0..*
+ set_addr $I259, rxquantr255_done
+ rx248_cur."!mark_push"(0, rx248_pos, $I259)
+ rxquantr255_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
# rx literal "elsif"
- add $I11, rx245_pos, 5
- gt $I11, rx245_eos, rx245_fail
- sub $I11, rx245_pos, rx245_off
- substr $S10, rx245_tgt, $I11, 5
- ne $S10, "elsif", rx245_fail
- add rx245_pos, 5
+ add $I11, rx248_pos, 5
+ gt $I11, rx248_eos, rx248_fail
+ sub $I11, rx248_pos, rx248_off
+ substr $S10, rx248_tgt, $I11, 5
+ ne $S10, "elsif", rx248_fail
+ add rx248_pos, 5
# rx charclass s
- ge rx245_pos, rx245_eos, rx245_fail
- sub $I10, rx245_pos, rx245_off
- is_cclass $I11, 32, rx245_tgt, $I10
- unless $I11, rx245_fail
- inc rx245_pos
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
+ ge rx248_pos, rx248_eos, rx248_fail
+ sub $I10, rx248_pos, rx248_off
+ is_cclass $I11, 32, rx248_tgt, $I10
+ unless $I11, rx248_fail
+ inc rx248_pos
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
# rx subrule "xblock" subtype=capture negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."xblock"()
- unless $P10, rx245_fail
- rx245_cur."!mark_push"(0, -1, 0, $P10)
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."xblock"()
+ unless $P10, rx248_fail
+ rx248_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx245_pos = $P10."pos"()
+ rx248_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
- (rx245_rep) = rx245_cur."!mark_commit"($I256)
- rx245_cur."!mark_push"(rx245_rep, rx245_pos, $I256)
- goto rxquantr252_loop
- rxquantr252_done:
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
-.annotate "line", 153
- # rx rxquantr258 ** 0..1
- set_addr $I262, rxquantr258_done
- rx245_cur."!mark_push"(0, rx245_pos, $I262)
- rxquantr258_loop:
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+ (rx248_rep) = rx248_cur."!mark_commit"($I259)
+ rx248_cur."!mark_push"(rx248_rep, rx248_pos, $I259)
+ goto rxquantr255_loop
+ rxquantr255_done:
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+.annotate "line", 157
+ # rx rxquantr261 ** 0..1
+ set_addr $I265, rxquantr261_done
+ rx248_cur."!mark_push"(0, rx248_pos, $I265)
+ rxquantr261_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
# rx literal "else"
- add $I11, rx245_pos, 4
- gt $I11, rx245_eos, rx245_fail
- sub $I11, rx245_pos, rx245_off
- substr $S10, rx245_tgt, $I11, 4
- ne $S10, "else", rx245_fail
- add rx245_pos, 4
+ add $I11, rx248_pos, 4
+ gt $I11, rx248_eos, rx248_fail
+ sub $I11, rx248_pos, rx248_off
+ substr $S10, rx248_tgt, $I11, 4
+ ne $S10, "else", rx248_fail
+ add rx248_pos, 4
# rx charclass s
- ge rx245_pos, rx245_eos, rx245_fail
- sub $I10, rx245_pos, rx245_off
- is_cclass $I11, 32, rx245_tgt, $I10
- unless $I11, rx245_fail
- inc rx245_pos
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
+ ge rx248_pos, rx248_eos, rx248_fail
+ sub $I10, rx248_pos, rx248_off
+ is_cclass $I11, 32, rx248_tgt, $I10
+ unless $I11, rx248_fail
+ inc rx248_pos
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
# rx subrule "pblock" subtype=capture negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."pblock"()
- unless $P10, rx245_fail
- rx245_cur."!mark_push"(0, -1, 0, $P10)
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."pblock"()
+ unless $P10, rx248_fail
+ rx248_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("else")
- rx245_pos = $P10."pos"()
+ rx248_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
- (rx245_rep) = rx245_cur."!mark_commit"($I262)
- rxquantr258_done:
- # rx subrule "ws" subtype=method negate=
- rx245_cur."!cursor_pos"(rx245_pos)
- $P10 = rx245_cur."ws"()
- unless $P10, rx245_fail
- rx245_pos = $P10."pos"()
-.annotate "line", 149
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+ (rx248_rep) = rx248_cur."!mark_commit"($I265)
+ rxquantr261_done:
+ # rx subrule "ws" subtype=method negate=
+ rx248_cur."!cursor_pos"(rx248_pos)
+ $P10 = rx248_cur."ws"()
+ unless $P10, rx248_fail
+ rx248_pos = $P10."pos"()
+.annotate "line", 153
# rx pass
- rx245_cur."!cursor_pass"(rx245_pos, "statement_control:sym<if>")
- rx245_cur."!cursor_debug"("PASS ", "statement_control:sym<if>", " at pos=", rx245_pos)
- .return (rx245_cur)
- rx245_fail:
+ rx248_cur."!cursor_pass"(rx248_pos, "statement_control:sym<if>")
+ rx248_cur."!cursor_debug"("PASS ", "statement_control:sym<if>", " at pos=", rx248_pos)
+ .return (rx248_cur)
+ rx248_fail:
.annotate "line", 4
- (rx245_rep, rx245_pos, $I10, $P10) = rx245_cur."!mark_fail"(0)
- lt rx245_pos, -1, rx245_done
- eq rx245_pos, -1, rx245_fail
+ (rx248_rep, rx248_pos, $I10, $P10) = rx248_cur."!mark_fail"(0)
+ lt rx248_pos, -1, rx248_done
+ eq rx248_pos, -1, rx248_fail
jump $I10
- rx245_done:
- rx245_cur."!cursor_fail"()
- rx245_cur."!cursor_debug"("FAIL ", "statement_control:sym<if>")
- .return (rx245_cur)
+ rx248_done:
+ rx248_cur."!cursor_fail"()
+ rx248_cur."!cursor_debug"("FAIL ", "statement_control:sym<if>")
+ .return (rx248_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>" :subid("61_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<if>" :subid("61_1272816833.94956") :method
.annotate "line", 4
- new $P247, "ResizablePMCArray"
- push $P247, "if"
- .return ($P247)
+ new $P250, "ResizablePMCArray"
+ push $P250, "if"
+ .return ($P250)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>" :subid("62_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<unless>" :subid("62_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .const 'Sub' $P275 = "64_1267204702.05125"
- capture_lex $P275
- .local string rx265_tgt
- .local int rx265_pos
- .local int rx265_off
- .local int rx265_eos
- .local int rx265_rep
- .local pmc rx265_cur
- (rx265_cur, rx265_pos, rx265_tgt) = self."!cursor_start"()
- rx265_cur."!cursor_debug"("START ", "statement_control:sym<unless>")
- .lex unicode:"$\x{a2}", rx265_cur
+ .const 'Sub' $P278 = "64_1272816833.94956"
+ capture_lex $P278
+ .local string rx268_tgt
+ .local int rx268_pos
+ .local int rx268_off
+ .local int rx268_eos
+ .local int rx268_rep
+ .local pmc rx268_cur
+ (rx268_cur, rx268_pos, rx268_tgt) = self."!cursor_start"()
+ rx268_cur."!cursor_debug"("START ", "statement_control:sym<unless>")
+ .lex unicode:"$\x{a2}", rx268_cur
.local pmc match
.lex "$/", match
- length rx265_eos, rx265_tgt
- set rx265_off, 0
- lt rx265_pos, 2, rx265_start
- sub rx265_off, rx265_pos, 1
- substr rx265_tgt, rx265_tgt, rx265_off
- rx265_start:
+ length rx268_eos, rx268_tgt
+ set rx268_off, 0
+ lt rx268_pos, 2, rx268_start
+ sub rx268_off, rx268_pos, 1
+ substr rx268_tgt, rx268_tgt, rx268_off
+ rx268_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan268_done
- goto rxscan268_scan
- rxscan268_loop:
- ($P10) = rx265_cur."from"()
+ ne $I10, -1, rxscan271_done
+ goto rxscan271_scan
+ rxscan271_loop:
+ ($P10) = rx268_cur."from"()
inc $P10
- set rx265_pos, $P10
- ge rx265_pos, rx265_eos, rxscan268_done
- rxscan268_scan:
- set_addr $I10, rxscan268_loop
- rx265_cur."!mark_push"(0, rx265_pos, $I10)
- rxscan268_done:
-.annotate "line", 157
+ set rx268_pos, $P10
+ ge rx268_pos, rx268_eos, rxscan271_done
+ rxscan271_scan:
+ set_addr $I10, rxscan271_loop
+ rx268_cur."!mark_push"(0, rx268_pos, $I10)
+ rxscan271_done:
+.annotate "line", 161
# rx subcapture "sym"
- set_addr $I10, rxcap_269_fail
- rx265_cur."!mark_push"(0, rx265_pos, $I10)
+ set_addr $I10, rxcap_272_fail
+ rx268_cur."!mark_push"(0, rx268_pos, $I10)
# rx literal "unless"
- add $I11, rx265_pos, 6
- gt $I11, rx265_eos, rx265_fail
- sub $I11, rx265_pos, rx265_off
- substr $S10, rx265_tgt, $I11, 6
- ne $S10, "unless", rx265_fail
- add rx265_pos, 6
- set_addr $I10, rxcap_269_fail
- ($I12, $I11) = rx265_cur."!mark_peek"($I10)
- rx265_cur."!cursor_pos"($I11)
- ($P10) = rx265_cur."!cursor_start"()
- $P10."!cursor_pass"(rx265_pos, "")
- rx265_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx268_pos, 6
+ gt $I11, rx268_eos, rx268_fail
+ sub $I11, rx268_pos, rx268_off
+ substr $S10, rx268_tgt, $I11, 6
+ ne $S10, "unless", rx268_fail
+ add rx268_pos, 6
+ set_addr $I10, rxcap_272_fail
+ ($I12, $I11) = rx268_cur."!mark_peek"($I10)
+ rx268_cur."!cursor_pos"($I11)
+ ($P10) = rx268_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx268_pos, "")
+ rx268_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_269_done
- rxcap_269_fail:
- goto rx265_fail
- rxcap_269_done:
+ goto rxcap_272_done
+ rxcap_272_fail:
+ goto rx268_fail
+ rxcap_272_done:
# rx charclass s
- ge rx265_pos, rx265_eos, rx265_fail
- sub $I10, rx265_pos, rx265_off
- is_cclass $I11, 32, rx265_tgt, $I10
- unless $I11, rx265_fail
- inc rx265_pos
- # rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
-.annotate "line", 158
+ ge rx268_pos, rx268_eos, rx268_fail
+ sub $I10, rx268_pos, rx268_off
+ is_cclass $I11, 32, rx268_tgt, $I10
+ unless $I11, rx268_fail
+ inc rx268_pos
+ # rx subrule "ws" subtype=method negate=
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+.annotate "line", 162
# rx subrule "xblock" subtype=capture negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."xblock"()
- unless $P10, rx265_fail
- rx265_cur."!mark_push"(0, -1, 0, $P10)
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."xblock"()
+ unless $P10, rx268_fail
+ rx268_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx265_pos = $P10."pos"()
+ rx268_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
- alt272_0:
-.annotate "line", 159
- set_addr $I10, alt272_1
- rx265_cur."!mark_push"(0, rx265_pos, $I10)
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+ alt275_0:
+.annotate "line", 163
+ set_addr $I10, alt275_1
+ rx268_cur."!mark_push"(0, rx268_pos, $I10)
# rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
# rx subrule "before" subtype=zerowidth negate=1
- rx265_cur."!cursor_pos"(rx265_pos)
- .const 'Sub' $P275 = "64_1267204702.05125"
- capture_lex $P275
- $P10 = rx265_cur."before"($P275)
- if $P10, rx265_fail
- # rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
- goto alt272_end
- alt272_1:
- # rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
+ rx268_cur."!cursor_pos"(rx268_pos)
+ .const 'Sub' $P278 = "64_1272816833.94956"
+ capture_lex $P278
+ $P10 = rx268_cur."before"($P278)
+ if $P10, rx268_fail
+ # rx subrule "ws" subtype=method negate=
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+ goto alt275_end
+ alt275_1:
+ # rx subrule "ws" subtype=method negate=
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
# rx subrule "panic" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."panic"("unless does not take \"else\", please rewrite using \"if\"")
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
- alt272_end:
- # rx subrule "ws" subtype=method negate=
- rx265_cur."!cursor_pos"(rx265_pos)
- $P10 = rx265_cur."ws"()
- unless $P10, rx265_fail
- rx265_pos = $P10."pos"()
-.annotate "line", 156
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."panic"("unless does not take \"else\", please rewrite using \"if\"")
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+ alt275_end:
+ # rx subrule "ws" subtype=method negate=
+ rx268_cur."!cursor_pos"(rx268_pos)
+ $P10 = rx268_cur."ws"()
+ unless $P10, rx268_fail
+ rx268_pos = $P10."pos"()
+.annotate "line", 160
# rx pass
- rx265_cur."!cursor_pass"(rx265_pos, "statement_control:sym<unless>")
- rx265_cur."!cursor_debug"("PASS ", "statement_control:sym<unless>", " at pos=", rx265_pos)
- .return (rx265_cur)
- rx265_fail:
+ rx268_cur."!cursor_pass"(rx268_pos, "statement_control:sym<unless>")
+ rx268_cur."!cursor_debug"("PASS ", "statement_control:sym<unless>", " at pos=", rx268_pos)
+ .return (rx268_cur)
+ rx268_fail:
.annotate "line", 4
- (rx265_rep, rx265_pos, $I10, $P10) = rx265_cur."!mark_fail"(0)
- lt rx265_pos, -1, rx265_done
- eq rx265_pos, -1, rx265_fail
+ (rx268_rep, rx268_pos, $I10, $P10) = rx268_cur."!mark_fail"(0)
+ lt rx268_pos, -1, rx268_done
+ eq rx268_pos, -1, rx268_fail
jump $I10
- rx265_done:
- rx265_cur."!cursor_fail"()
- rx265_cur."!cursor_debug"("FAIL ", "statement_control:sym<unless>")
- .return (rx265_cur)
+ rx268_done:
+ rx268_cur."!cursor_fail"()
+ rx268_cur."!cursor_debug"("FAIL ", "statement_control:sym<unless>")
+ .return (rx268_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>" :subid("63_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<unless>" :subid("63_1272816833.94956") :method
.annotate "line", 4
- new $P267, "ResizablePMCArray"
- push $P267, "unless"
- .return ($P267)
+ new $P270, "ResizablePMCArray"
+ push $P270, "unless"
+ .return ($P270)
.end
.namespace ["NQP";"Grammar"]
-.sub "_block274" :anon :subid("64_1267204702.05125") :method :outer("62_1267204702.05125")
-.annotate "line", 159
- .local string rx276_tgt
- .local int rx276_pos
- .local int rx276_off
- .local int rx276_eos
- .local int rx276_rep
- .local pmc rx276_cur
- (rx276_cur, rx276_pos, rx276_tgt) = self."!cursor_start"()
- rx276_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx276_cur
- .local pmc match
- .lex "$/", match
- length rx276_eos, rx276_tgt
- set rx276_off, 0
- lt rx276_pos, 2, rx276_start
- sub rx276_off, rx276_pos, 1
- substr rx276_tgt, rx276_tgt, rx276_off
- rx276_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan277_done
- goto rxscan277_scan
- rxscan277_loop:
- ($P10) = rx276_cur."from"()
- inc $P10
- set rx276_pos, $P10
- ge rx276_pos, rx276_eos, rxscan277_done
- rxscan277_scan:
- set_addr $I10, rxscan277_loop
- rx276_cur."!mark_push"(0, rx276_pos, $I10)
- rxscan277_done:
+.sub "_block277" :anon :subid("64_1272816833.94956") :method :outer("62_1272816833.94956")
+.annotate "line", 163
+ .local string rx279_tgt
+ .local int rx279_pos
+ .local int rx279_off
+ .local int rx279_eos
+ .local int rx279_rep
+ .local pmc rx279_cur
+ (rx279_cur, rx279_pos, rx279_tgt) = self."!cursor_start"()
+ rx279_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx279_cur
+ .local pmc match
+ .lex "$/", match
+ length rx279_eos, rx279_tgt
+ set rx279_off, 0
+ lt rx279_pos, 2, rx279_start
+ sub rx279_off, rx279_pos, 1
+ substr rx279_tgt, rx279_tgt, rx279_off
+ rx279_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan280_done
+ goto rxscan280_scan
+ rxscan280_loop:
+ ($P10) = rx279_cur."from"()
+ inc $P10
+ set rx279_pos, $P10
+ ge rx279_pos, rx279_eos, rxscan280_done
+ rxscan280_scan:
+ set_addr $I10, rxscan280_loop
+ rx279_cur."!mark_push"(0, rx279_pos, $I10)
+ rxscan280_done:
# rx literal "else"
- add $I11, rx276_pos, 4
- gt $I11, rx276_eos, rx276_fail
- sub $I11, rx276_pos, rx276_off
- substr $S10, rx276_tgt, $I11, 4
- ne $S10, "else", rx276_fail
- add rx276_pos, 4
- # rx pass
- rx276_cur."!cursor_pass"(rx276_pos, "")
- rx276_cur."!cursor_debug"("PASS ", "", " at pos=", rx276_pos)
- .return (rx276_cur)
- rx276_fail:
- (rx276_rep, rx276_pos, $I10, $P10) = rx276_cur."!mark_fail"(0)
- lt rx276_pos, -1, rx276_done
- eq rx276_pos, -1, rx276_fail
- jump $I10
- rx276_done:
- rx276_cur."!cursor_fail"()
- rx276_cur."!cursor_debug"("FAIL ", "")
- .return (rx276_cur)
+ add $I11, rx279_pos, 4
+ gt $I11, rx279_eos, rx279_fail
+ sub $I11, rx279_pos, rx279_off
+ substr $S10, rx279_tgt, $I11, 4
+ ne $S10, "else", rx279_fail
+ add rx279_pos, 4
+ # rx pass
+ rx279_cur."!cursor_pass"(rx279_pos, "")
+ rx279_cur."!cursor_debug"("PASS ", "", " at pos=", rx279_pos)
+ .return (rx279_cur)
+ rx279_fail:
+ (rx279_rep, rx279_pos, $I10, $P10) = rx279_cur."!mark_fail"(0)
+ lt rx279_pos, -1, rx279_done
+ eq rx279_pos, -1, rx279_fail
+ jump $I10
+ rx279_done:
+ rx279_cur."!cursor_fail"()
+ rx279_cur."!cursor_debug"("FAIL ", "")
+ .return (rx279_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>" :subid("65_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 4
- .local string rx283_tgt
- .local int rx283_pos
- .local int rx283_off
- .local int rx283_eos
- .local int rx283_rep
- .local pmc rx283_cur
- (rx283_cur, rx283_pos, rx283_tgt) = self."!cursor_start"()
- rx283_cur."!cursor_debug"("START ", "statement_control:sym<while>")
- .lex unicode:"$\x{a2}", rx283_cur
- .local pmc match
- .lex "$/", match
- length rx283_eos, rx283_tgt
- set rx283_off, 0
- lt rx283_pos, 2, rx283_start
- sub rx283_off, rx283_pos, 1
- substr rx283_tgt, rx283_tgt, rx283_off
- rx283_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan286_done
- goto rxscan286_scan
- rxscan286_loop:
- ($P10) = rx283_cur."from"()
- inc $P10
- set rx283_pos, $P10
- ge rx283_pos, rx283_eos, rxscan286_done
- rxscan286_scan:
- set_addr $I10, rxscan286_loop
- rx283_cur."!mark_push"(0, rx283_pos, $I10)
- rxscan286_done:
-.annotate "line", 163
+.sub "statement_control:sym<while>" :subid("65_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx286_tgt
+ .local int rx286_pos
+ .local int rx286_off
+ .local int rx286_eos
+ .local int rx286_rep
+ .local pmc rx286_cur
+ (rx286_cur, rx286_pos, rx286_tgt) = self."!cursor_start"()
+ rx286_cur."!cursor_debug"("START ", "statement_control:sym<while>")
+ .lex unicode:"$\x{a2}", rx286_cur
+ .local pmc match
+ .lex "$/", match
+ length rx286_eos, rx286_tgt
+ set rx286_off, 0
+ lt rx286_pos, 2, rx286_start
+ sub rx286_off, rx286_pos, 1
+ substr rx286_tgt, rx286_tgt, rx286_off
+ rx286_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan289_done
+ goto rxscan289_scan
+ rxscan289_loop:
+ ($P10) = rx286_cur."from"()
+ inc $P10
+ set rx286_pos, $P10
+ ge rx286_pos, rx286_eos, rxscan289_done
+ rxscan289_scan:
+ set_addr $I10, rxscan289_loop
+ rx286_cur."!mark_push"(0, rx286_pos, $I10)
+ rxscan289_done:
+.annotate "line", 167
# rx subcapture "sym"
- set_addr $I10, rxcap_288_fail
- rx283_cur."!mark_push"(0, rx283_pos, $I10)
- alt287_0:
- set_addr $I10, alt287_1
- rx283_cur."!mark_push"(0, rx283_pos, $I10)
+ set_addr $I10, rxcap_291_fail
+ rx286_cur."!mark_push"(0, rx286_pos, $I10)
+ alt290_0:
+ set_addr $I10, alt290_1
+ rx286_cur."!mark_push"(0, rx286_pos, $I10)
# rx literal "while"
- add $I11, rx283_pos, 5
- gt $I11, rx283_eos, rx283_fail
- sub $I11, rx283_pos, rx283_off
- substr $S10, rx283_tgt, $I11, 5
- ne $S10, "while", rx283_fail
- add rx283_pos, 5
- goto alt287_end
- alt287_1:
+ add $I11, rx286_pos, 5
+ gt $I11, rx286_eos, rx286_fail
+ sub $I11, rx286_pos, rx286_off
+ substr $S10, rx286_tgt, $I11, 5
+ ne $S10, "while", rx286_fail
+ add rx286_pos, 5
+ goto alt290_end
+ alt290_1:
# rx literal "until"
- add $I11, rx283_pos, 5
- gt $I11, rx283_eos, rx283_fail
- sub $I11, rx283_pos, rx283_off
- substr $S10, rx283_tgt, $I11, 5
- ne $S10, "until", rx283_fail
- add rx283_pos, 5
- alt287_end:
- set_addr $I10, rxcap_288_fail
- ($I12, $I11) = rx283_cur."!mark_peek"($I10)
- rx283_cur."!cursor_pos"($I11)
- ($P10) = rx283_cur."!cursor_start"()
- $P10."!cursor_pass"(rx283_pos, "")
- rx283_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx286_pos, 5
+ gt $I11, rx286_eos, rx286_fail
+ sub $I11, rx286_pos, rx286_off
+ substr $S10, rx286_tgt, $I11, 5
+ ne $S10, "until", rx286_fail
+ add rx286_pos, 5
+ alt290_end:
+ set_addr $I10, rxcap_291_fail
+ ($I12, $I11) = rx286_cur."!mark_peek"($I10)
+ rx286_cur."!cursor_pos"($I11)
+ ($P10) = rx286_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx286_pos, "")
+ rx286_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_288_done
- rxcap_288_fail:
- goto rx283_fail
- rxcap_288_done:
+ goto rxcap_291_done
+ rxcap_291_fail:
+ goto rx286_fail
+ rxcap_291_done:
# rx charclass s
- ge rx283_pos, rx283_eos, rx283_fail
- sub $I10, rx283_pos, rx283_off
- is_cclass $I11, 32, rx283_tgt, $I10
- unless $I11, rx283_fail
- inc rx283_pos
- # rx subrule "ws" subtype=method negate=
- rx283_cur."!cursor_pos"(rx283_pos)
- $P10 = rx283_cur."ws"()
- unless $P10, rx283_fail
- rx283_pos = $P10."pos"()
-.annotate "line", 164
+ ge rx286_pos, rx286_eos, rx286_fail
+ sub $I10, rx286_pos, rx286_off
+ is_cclass $I11, 32, rx286_tgt, $I10
+ unless $I11, rx286_fail
+ inc rx286_pos
+ # rx subrule "ws" subtype=method negate=
+ rx286_cur."!cursor_pos"(rx286_pos)
+ $P10 = rx286_cur."ws"()
+ unless $P10, rx286_fail
+ rx286_pos = $P10."pos"()
+.annotate "line", 168
# rx subrule "xblock" subtype=capture negate=
- rx283_cur."!cursor_pos"(rx283_pos)
- $P10 = rx283_cur."xblock"()
- unless $P10, rx283_fail
- rx283_cur."!mark_push"(0, -1, 0, $P10)
+ rx286_cur."!cursor_pos"(rx286_pos)
+ $P10 = rx286_cur."xblock"()
+ unless $P10, rx286_fail
+ rx286_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx283_pos = $P10."pos"()
+ rx286_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx283_cur."!cursor_pos"(rx283_pos)
- $P10 = rx283_cur."ws"()
- unless $P10, rx283_fail
- rx283_pos = $P10."pos"()
-.annotate "line", 162
+ rx286_cur."!cursor_pos"(rx286_pos)
+ $P10 = rx286_cur."ws"()
+ unless $P10, rx286_fail
+ rx286_pos = $P10."pos"()
+.annotate "line", 166
# rx pass
- rx283_cur."!cursor_pass"(rx283_pos, "statement_control:sym<while>")
- rx283_cur."!cursor_debug"("PASS ", "statement_control:sym<while>", " at pos=", rx283_pos)
- .return (rx283_cur)
- rx283_fail:
+ rx286_cur."!cursor_pass"(rx286_pos, "statement_control:sym<while>")
+ rx286_cur."!cursor_debug"("PASS ", "statement_control:sym<while>", " at pos=", rx286_pos)
+ .return (rx286_cur)
+ rx286_fail:
.annotate "line", 4
- (rx283_rep, rx283_pos, $I10, $P10) = rx283_cur."!mark_fail"(0)
- lt rx283_pos, -1, rx283_done
- eq rx283_pos, -1, rx283_fail
+ (rx286_rep, rx286_pos, $I10, $P10) = rx286_cur."!mark_fail"(0)
+ lt rx286_pos, -1, rx286_done
+ eq rx286_pos, -1, rx286_fail
jump $I10
- rx283_done:
- rx283_cur."!cursor_fail"()
- rx283_cur."!cursor_debug"("FAIL ", "statement_control:sym<while>")
- .return (rx283_cur)
+ rx286_done:
+ rx286_cur."!cursor_fail"()
+ rx286_cur."!cursor_debug"("FAIL ", "statement_control:sym<while>")
+ .return (rx286_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>" :subid("66_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<while>" :subid("66_1272816833.94956") :method
.annotate "line", 4
- new $P285, "ResizablePMCArray"
- push $P285, "until"
- push $P285, "while"
- .return ($P285)
+ new $P288, "ResizablePMCArray"
+ push $P288, "until"
+ push $P288, "while"
+ .return ($P288)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>" :subid("67_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<repeat>" :subid("67_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx292_tgt
- .local int rx292_pos
- .local int rx292_off
- .local int rx292_eos
- .local int rx292_rep
- .local pmc rx292_cur
- (rx292_cur, rx292_pos, rx292_tgt) = self."!cursor_start"()
- rx292_cur."!cursor_debug"("START ", "statement_control:sym<repeat>")
- .lex unicode:"$\x{a2}", rx292_cur
+ .local string rx295_tgt
+ .local int rx295_pos
+ .local int rx295_off
+ .local int rx295_eos
+ .local int rx295_rep
+ .local pmc rx295_cur
+ (rx295_cur, rx295_pos, rx295_tgt) = self."!cursor_start"()
+ rx295_cur."!cursor_debug"("START ", "statement_control:sym<repeat>")
+ .lex unicode:"$\x{a2}", rx295_cur
.local pmc match
.lex "$/", match
- length rx292_eos, rx292_tgt
- set rx292_off, 0
- lt rx292_pos, 2, rx292_start
- sub rx292_off, rx292_pos, 1
- substr rx292_tgt, rx292_tgt, rx292_off
- rx292_start:
+ length rx295_eos, rx295_tgt
+ set rx295_off, 0
+ lt rx295_pos, 2, rx295_start
+ sub rx295_off, rx295_pos, 1
+ substr rx295_tgt, rx295_tgt, rx295_off
+ rx295_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan295_done
- goto rxscan295_scan
- rxscan295_loop:
- ($P10) = rx292_cur."from"()
+ ne $I10, -1, rxscan298_done
+ goto rxscan298_scan
+ rxscan298_loop:
+ ($P10) = rx295_cur."from"()
inc $P10
- set rx292_pos, $P10
- ge rx292_pos, rx292_eos, rxscan295_done
- rxscan295_scan:
- set_addr $I10, rxscan295_loop
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
- rxscan295_done:
-.annotate "line", 168
+ set rx295_pos, $P10
+ ge rx295_pos, rx295_eos, rxscan298_done
+ rxscan298_scan:
+ set_addr $I10, rxscan298_loop
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
+ rxscan298_done:
+.annotate "line", 172
# rx subcapture "sym"
- set_addr $I10, rxcap_296_fail
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
+ set_addr $I10, rxcap_299_fail
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
# rx literal "repeat"
- add $I11, rx292_pos, 6
- gt $I11, rx292_eos, rx292_fail
- sub $I11, rx292_pos, rx292_off
- substr $S10, rx292_tgt, $I11, 6
- ne $S10, "repeat", rx292_fail
- add rx292_pos, 6
- set_addr $I10, rxcap_296_fail
- ($I12, $I11) = rx292_cur."!mark_peek"($I10)
- rx292_cur."!cursor_pos"($I11)
- ($P10) = rx292_cur."!cursor_start"()
- $P10."!cursor_pass"(rx292_pos, "")
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx295_pos, 6
+ gt $I11, rx295_eos, rx295_fail
+ sub $I11, rx295_pos, rx295_off
+ substr $S10, rx295_tgt, $I11, 6
+ ne $S10, "repeat", rx295_fail
+ add rx295_pos, 6
+ set_addr $I10, rxcap_299_fail
+ ($I12, $I11) = rx295_cur."!mark_peek"($I10)
+ rx295_cur."!cursor_pos"($I11)
+ ($P10) = rx295_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx295_pos, "")
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_296_done
- rxcap_296_fail:
- goto rx292_fail
- rxcap_296_done:
+ goto rxcap_299_done
+ rxcap_299_fail:
+ goto rx295_fail
+ rxcap_299_done:
# rx charclass s
- ge rx292_pos, rx292_eos, rx292_fail
- sub $I10, rx292_pos, rx292_off
- is_cclass $I11, 32, rx292_tgt, $I10
- unless $I11, rx292_fail
- inc rx292_pos
- # rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
- alt298_0:
-.annotate "line", 169
- set_addr $I10, alt298_1
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
-.annotate "line", 170
- # rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
+ ge rx295_pos, rx295_eos, rx295_fail
+ sub $I10, rx295_pos, rx295_off
+ is_cclass $I11, 32, rx295_tgt, $I10
+ unless $I11, rx295_fail
+ inc rx295_pos
+ # rx subrule "ws" subtype=method negate=
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
+ alt301_0:
+.annotate "line", 173
+ set_addr $I10, alt301_1
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
+.annotate "line", 174
+ # rx subrule "ws" subtype=method negate=
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
# rx subcapture "wu"
- set_addr $I10, rxcap_301_fail
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
- alt300_0:
- set_addr $I10, alt300_1
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
+ set_addr $I10, rxcap_304_fail
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
+ alt303_0:
+ set_addr $I10, alt303_1
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
# rx literal "while"
- add $I11, rx292_pos, 5
- gt $I11, rx292_eos, rx292_fail
- sub $I11, rx292_pos, rx292_off
- substr $S10, rx292_tgt, $I11, 5
- ne $S10, "while", rx292_fail
- add rx292_pos, 5
- goto alt300_end
- alt300_1:
+ add $I11, rx295_pos, 5
+ gt $I11, rx295_eos, rx295_fail
+ sub $I11, rx295_pos, rx295_off
+ substr $S10, rx295_tgt, $I11, 5
+ ne $S10, "while", rx295_fail
+ add rx295_pos, 5
+ goto alt303_end
+ alt303_1:
# rx literal "until"
- add $I11, rx292_pos, 5
- gt $I11, rx292_eos, rx292_fail
- sub $I11, rx292_pos, rx292_off
- substr $S10, rx292_tgt, $I11, 5
- ne $S10, "until", rx292_fail
- add rx292_pos, 5
- alt300_end:
- set_addr $I10, rxcap_301_fail
- ($I12, $I11) = rx292_cur."!mark_peek"($I10)
- rx292_cur."!cursor_pos"($I11)
- ($P10) = rx292_cur."!cursor_start"()
- $P10."!cursor_pass"(rx292_pos, "")
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx295_pos, 5
+ gt $I11, rx295_eos, rx295_fail
+ sub $I11, rx295_pos, rx295_off
+ substr $S10, rx295_tgt, $I11, 5
+ ne $S10, "until", rx295_fail
+ add rx295_pos, 5
+ alt303_end:
+ set_addr $I10, rxcap_304_fail
+ ($I12, $I11) = rx295_cur."!mark_peek"($I10)
+ rx295_cur."!cursor_pos"($I11)
+ ($P10) = rx295_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx295_pos, "")
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("wu")
- goto rxcap_301_done
- rxcap_301_fail:
- goto rx292_fail
- rxcap_301_done:
+ goto rxcap_304_done
+ rxcap_304_fail:
+ goto rx295_fail
+ rxcap_304_done:
# rx charclass s
- ge rx292_pos, rx292_eos, rx292_fail
- sub $I10, rx292_pos, rx292_off
- is_cclass $I11, 32, rx292_tgt, $I10
- unless $I11, rx292_fail
- inc rx292_pos
- # rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
+ ge rx295_pos, rx295_eos, rx295_fail
+ sub $I10, rx295_pos, rx295_off
+ is_cclass $I11, 32, rx295_tgt, $I10
+ unless $I11, rx295_fail
+ inc rx295_pos
+ # rx subrule "ws" subtype=method negate=
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
# rx subrule "xblock" subtype=capture negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."xblock"()
- unless $P10, rx292_fail
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."xblock"()
+ unless $P10, rx295_fail
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx292_pos = $P10."pos"()
+ rx295_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
- goto alt298_end
- alt298_1:
-.annotate "line", 171
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
+ goto alt301_end
+ alt301_1:
+.annotate "line", 175
# rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
# rx subrule "pblock" subtype=capture negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."pblock"()
- unless $P10, rx292_fail
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."pblock"()
+ unless $P10, rx295_fail
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("pblock")
- rx292_pos = $P10."pos"()
+ rx295_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
# rx subcapture "wu"
- set_addr $I10, rxcap_307_fail
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
- alt306_0:
- set_addr $I10, alt306_1
- rx292_cur."!mark_push"(0, rx292_pos, $I10)
+ set_addr $I10, rxcap_310_fail
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
+ alt309_0:
+ set_addr $I10, alt309_1
+ rx295_cur."!mark_push"(0, rx295_pos, $I10)
# rx literal "while"
- add $I11, rx292_pos, 5
- gt $I11, rx292_eos, rx292_fail
- sub $I11, rx292_pos, rx292_off
- substr $S10, rx292_tgt, $I11, 5
- ne $S10, "while", rx292_fail
- add rx292_pos, 5
- goto alt306_end
- alt306_1:
+ add $I11, rx295_pos, 5
+ gt $I11, rx295_eos, rx295_fail
+ sub $I11, rx295_pos, rx295_off
+ substr $S10, rx295_tgt, $I11, 5
+ ne $S10, "while", rx295_fail
+ add rx295_pos, 5
+ goto alt309_end
+ alt309_1:
# rx literal "until"
- add $I11, rx292_pos, 5
- gt $I11, rx292_eos, rx292_fail
- sub $I11, rx292_pos, rx292_off
- substr $S10, rx292_tgt, $I11, 5
- ne $S10, "until", rx292_fail
- add rx292_pos, 5
- alt306_end:
- set_addr $I10, rxcap_307_fail
- ($I12, $I11) = rx292_cur."!mark_peek"($I10)
- rx292_cur."!cursor_pos"($I11)
- ($P10) = rx292_cur."!cursor_start"()
- $P10."!cursor_pass"(rx292_pos, "")
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx295_pos, 5
+ gt $I11, rx295_eos, rx295_fail
+ sub $I11, rx295_pos, rx295_off
+ substr $S10, rx295_tgt, $I11, 5
+ ne $S10, "until", rx295_fail
+ add rx295_pos, 5
+ alt309_end:
+ set_addr $I10, rxcap_310_fail
+ ($I12, $I11) = rx295_cur."!mark_peek"($I10)
+ rx295_cur."!cursor_pos"($I11)
+ ($P10) = rx295_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx295_pos, "")
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("wu")
- goto rxcap_307_done
- rxcap_307_fail:
- goto rx292_fail
- rxcap_307_done:
+ goto rxcap_310_done
+ rxcap_310_fail:
+ goto rx295_fail
+ rxcap_310_done:
# rx charclass s
- ge rx292_pos, rx292_eos, rx292_fail
- sub $I10, rx292_pos, rx292_off
- is_cclass $I11, 32, rx292_tgt, $I10
- unless $I11, rx292_fail
- inc rx292_pos
- # rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
+ ge rx295_pos, rx295_eos, rx295_fail
+ sub $I10, rx295_pos, rx295_off
+ is_cclass $I11, 32, rx295_tgt, $I10
+ unless $I11, rx295_fail
+ inc rx295_pos
+ # rx subrule "ws" subtype=method negate=
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."EXPR"()
- unless $P10, rx292_fail
- rx292_cur."!mark_push"(0, -1, 0, $P10)
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."EXPR"()
+ unless $P10, rx295_fail
+ rx295_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx292_pos = $P10."pos"()
+ rx295_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
- alt298_end:
-.annotate "line", 172
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
+ alt301_end:
+.annotate "line", 176
# rx subrule "ws" subtype=method negate=
- rx292_cur."!cursor_pos"(rx292_pos)
- $P10 = rx292_cur."ws"()
- unless $P10, rx292_fail
- rx292_pos = $P10."pos"()
-.annotate "line", 167
+ rx295_cur."!cursor_pos"(rx295_pos)
+ $P10 = rx295_cur."ws"()
+ unless $P10, rx295_fail
+ rx295_pos = $P10."pos"()
+.annotate "line", 171
# rx pass
- rx292_cur."!cursor_pass"(rx292_pos, "statement_control:sym<repeat>")
- rx292_cur."!cursor_debug"("PASS ", "statement_control:sym<repeat>", " at pos=", rx292_pos)
- .return (rx292_cur)
- rx292_fail:
+ rx295_cur."!cursor_pass"(rx295_pos, "statement_control:sym<repeat>")
+ rx295_cur."!cursor_debug"("PASS ", "statement_control:sym<repeat>", " at pos=", rx295_pos)
+ .return (rx295_cur)
+ rx295_fail:
.annotate "line", 4
- (rx292_rep, rx292_pos, $I10, $P10) = rx292_cur."!mark_fail"(0)
- lt rx292_pos, -1, rx292_done
- eq rx292_pos, -1, rx292_fail
+ (rx295_rep, rx295_pos, $I10, $P10) = rx295_cur."!mark_fail"(0)
+ lt rx295_pos, -1, rx295_done
+ eq rx295_pos, -1, rx295_fail
jump $I10
- rx292_done:
- rx292_cur."!cursor_fail"()
- rx292_cur."!cursor_debug"("FAIL ", "statement_control:sym<repeat>")
- .return (rx292_cur)
+ rx295_done:
+ rx295_cur."!cursor_fail"()
+ rx295_cur."!cursor_debug"("FAIL ", "statement_control:sym<repeat>")
+ .return (rx295_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>" :subid("68_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<repeat>" :subid("68_1272816833.94956") :method
.annotate "line", 4
- new $P294, "ResizablePMCArray"
- push $P294, "repeat"
- .return ($P294)
+ new $P297, "ResizablePMCArray"
+ push $P297, "repeat"
+ .return ($P297)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>" :subid("69_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<for>" :subid("69_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx312_tgt
- .local int rx312_pos
- .local int rx312_off
- .local int rx312_eos
- .local int rx312_rep
- .local pmc rx312_cur
- (rx312_cur, rx312_pos, rx312_tgt) = self."!cursor_start"()
- rx312_cur."!cursor_debug"("START ", "statement_control:sym<for>")
- .lex unicode:"$\x{a2}", rx312_cur
- .local pmc match
- .lex "$/", match
- length rx312_eos, rx312_tgt
- set rx312_off, 0
- lt rx312_pos, 2, rx312_start
- sub rx312_off, rx312_pos, 1
- substr rx312_tgt, rx312_tgt, rx312_off
- rx312_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan315_done
- goto rxscan315_scan
- rxscan315_loop:
- ($P10) = rx312_cur."from"()
- inc $P10
- set rx312_pos, $P10
- ge rx312_pos, rx312_eos, rxscan315_done
- rxscan315_scan:
- set_addr $I10, rxscan315_loop
- rx312_cur."!mark_push"(0, rx312_pos, $I10)
- rxscan315_done:
-.annotate "line", 176
+ .local string rx315_tgt
+ .local int rx315_pos
+ .local int rx315_off
+ .local int rx315_eos
+ .local int rx315_rep
+ .local pmc rx315_cur
+ (rx315_cur, rx315_pos, rx315_tgt) = self."!cursor_start"()
+ rx315_cur."!cursor_debug"("START ", "statement_control:sym<for>")
+ .lex unicode:"$\x{a2}", rx315_cur
+ .local pmc match
+ .lex "$/", match
+ length rx315_eos, rx315_tgt
+ set rx315_off, 0
+ lt rx315_pos, 2, rx315_start
+ sub rx315_off, rx315_pos, 1
+ substr rx315_tgt, rx315_tgt, rx315_off
+ rx315_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan318_done
+ goto rxscan318_scan
+ rxscan318_loop:
+ ($P10) = rx315_cur."from"()
+ inc $P10
+ set rx315_pos, $P10
+ ge rx315_pos, rx315_eos, rxscan318_done
+ rxscan318_scan:
+ set_addr $I10, rxscan318_loop
+ rx315_cur."!mark_push"(0, rx315_pos, $I10)
+ rxscan318_done:
+.annotate "line", 180
# rx subcapture "sym"
- set_addr $I10, rxcap_316_fail
- rx312_cur."!mark_push"(0, rx312_pos, $I10)
+ set_addr $I10, rxcap_319_fail
+ rx315_cur."!mark_push"(0, rx315_pos, $I10)
# rx literal "for"
- add $I11, rx312_pos, 3
- gt $I11, rx312_eos, rx312_fail
- sub $I11, rx312_pos, rx312_off
- substr $S10, rx312_tgt, $I11, 3
- ne $S10, "for", rx312_fail
- add rx312_pos, 3
- set_addr $I10, rxcap_316_fail
- ($I12, $I11) = rx312_cur."!mark_peek"($I10)
- rx312_cur."!cursor_pos"($I11)
- ($P10) = rx312_cur."!cursor_start"()
- $P10."!cursor_pass"(rx312_pos, "")
- rx312_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx315_pos, 3
+ gt $I11, rx315_eos, rx315_fail
+ sub $I11, rx315_pos, rx315_off
+ substr $S10, rx315_tgt, $I11, 3
+ ne $S10, "for", rx315_fail
+ add rx315_pos, 3
+ set_addr $I10, rxcap_319_fail
+ ($I12, $I11) = rx315_cur."!mark_peek"($I10)
+ rx315_cur."!cursor_pos"($I11)
+ ($P10) = rx315_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx315_pos, "")
+ rx315_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_316_done
- rxcap_316_fail:
- goto rx312_fail
- rxcap_316_done:
+ goto rxcap_319_done
+ rxcap_319_fail:
+ goto rx315_fail
+ rxcap_319_done:
# rx charclass s
- ge rx312_pos, rx312_eos, rx312_fail
- sub $I10, rx312_pos, rx312_off
- is_cclass $I11, 32, rx312_tgt, $I10
- unless $I11, rx312_fail
- inc rx312_pos
- # rx subrule "ws" subtype=method negate=
- rx312_cur."!cursor_pos"(rx312_pos)
- $P10 = rx312_cur."ws"()
- unless $P10, rx312_fail
- rx312_pos = $P10."pos"()
-.annotate "line", 177
+ ge rx315_pos, rx315_eos, rx315_fail
+ sub $I10, rx315_pos, rx315_off
+ is_cclass $I11, 32, rx315_tgt, $I10
+ unless $I11, rx315_fail
+ inc rx315_pos
+ # rx subrule "ws" subtype=method negate=
+ rx315_cur."!cursor_pos"(rx315_pos)
+ $P10 = rx315_cur."ws"()
+ unless $P10, rx315_fail
+ rx315_pos = $P10."pos"()
+.annotate "line", 181
# rx subrule "xblock" subtype=capture negate=
- rx312_cur."!cursor_pos"(rx312_pos)
- $P10 = rx312_cur."xblock"()
- unless $P10, rx312_fail
- rx312_cur."!mark_push"(0, -1, 0, $P10)
+ rx315_cur."!cursor_pos"(rx315_pos)
+ $P10 = rx315_cur."xblock"()
+ unless $P10, rx315_fail
+ rx315_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("xblock")
- rx312_pos = $P10."pos"()
+ rx315_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx312_cur."!cursor_pos"(rx312_pos)
- $P10 = rx312_cur."ws"()
- unless $P10, rx312_fail
- rx312_pos = $P10."pos"()
-.annotate "line", 175
+ rx315_cur."!cursor_pos"(rx315_pos)
+ $P10 = rx315_cur."ws"()
+ unless $P10, rx315_fail
+ rx315_pos = $P10."pos"()
+.annotate "line", 179
# rx pass
- rx312_cur."!cursor_pass"(rx312_pos, "statement_control:sym<for>")
- rx312_cur."!cursor_debug"("PASS ", "statement_control:sym<for>", " at pos=", rx312_pos)
- .return (rx312_cur)
- rx312_fail:
+ rx315_cur."!cursor_pass"(rx315_pos, "statement_control:sym<for>")
+ rx315_cur."!cursor_debug"("PASS ", "statement_control:sym<for>", " at pos=", rx315_pos)
+ .return (rx315_cur)
+ rx315_fail:
.annotate "line", 4
- (rx312_rep, rx312_pos, $I10, $P10) = rx312_cur."!mark_fail"(0)
- lt rx312_pos, -1, rx312_done
- eq rx312_pos, -1, rx312_fail
+ (rx315_rep, rx315_pos, $I10, $P10) = rx315_cur."!mark_fail"(0)
+ lt rx315_pos, -1, rx315_done
+ eq rx315_pos, -1, rx315_fail
jump $I10
- rx312_done:
- rx312_cur."!cursor_fail"()
- rx312_cur."!cursor_debug"("FAIL ", "statement_control:sym<for>")
- .return (rx312_cur)
+ rx315_done:
+ rx315_cur."!cursor_fail"()
+ rx315_cur."!cursor_debug"("FAIL ", "statement_control:sym<for>")
+ .return (rx315_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>" :subid("70_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<for>" :subid("70_1272816833.94956") :method
.annotate "line", 4
- new $P314, "ResizablePMCArray"
- push $P314, "for"
- .return ($P314)
+ new $P317, "ResizablePMCArray"
+ push $P317, "for"
+ .return ($P317)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>" :subid("71_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<CATCH>" :subid("71_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx320_tgt
- .local int rx320_pos
- .local int rx320_off
- .local int rx320_eos
- .local int rx320_rep
- .local pmc rx320_cur
- (rx320_cur, rx320_pos, rx320_tgt) = self."!cursor_start"()
- rx320_cur."!cursor_debug"("START ", "statement_control:sym<CATCH>")
- .lex unicode:"$\x{a2}", rx320_cur
+ .local string rx323_tgt
+ .local int rx323_pos
+ .local int rx323_off
+ .local int rx323_eos
+ .local int rx323_rep
+ .local pmc rx323_cur
+ (rx323_cur, rx323_pos, rx323_tgt) = self."!cursor_start"()
+ rx323_cur."!cursor_debug"("START ", "statement_control:sym<CATCH>")
+ .lex unicode:"$\x{a2}", rx323_cur
.local pmc match
.lex "$/", match
- length rx320_eos, rx320_tgt
- set rx320_off, 0
- lt rx320_pos, 2, rx320_start
- sub rx320_off, rx320_pos, 1
- substr rx320_tgt, rx320_tgt, rx320_off
- rx320_start:
+ length rx323_eos, rx323_tgt
+ set rx323_off, 0
+ lt rx323_pos, 2, rx323_start
+ sub rx323_off, rx323_pos, 1
+ substr rx323_tgt, rx323_tgt, rx323_off
+ rx323_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan323_done
- goto rxscan323_scan
- rxscan323_loop:
- ($P10) = rx320_cur."from"()
+ ne $I10, -1, rxscan326_done
+ goto rxscan326_scan
+ rxscan326_loop:
+ ($P10) = rx323_cur."from"()
inc $P10
- set rx320_pos, $P10
- ge rx320_pos, rx320_eos, rxscan323_done
- rxscan323_scan:
- set_addr $I10, rxscan323_loop
- rx320_cur."!mark_push"(0, rx320_pos, $I10)
- rxscan323_done:
-.annotate "line", 181
+ set rx323_pos, $P10
+ ge rx323_pos, rx323_eos, rxscan326_done
+ rxscan326_scan:
+ set_addr $I10, rxscan326_loop
+ rx323_cur."!mark_push"(0, rx323_pos, $I10)
+ rxscan326_done:
+.annotate "line", 185
# rx subcapture "sym"
- set_addr $I10, rxcap_324_fail
- rx320_cur."!mark_push"(0, rx320_pos, $I10)
+ set_addr $I10, rxcap_327_fail
+ rx323_cur."!mark_push"(0, rx323_pos, $I10)
# rx literal "CATCH"
- add $I11, rx320_pos, 5
- gt $I11, rx320_eos, rx320_fail
- sub $I11, rx320_pos, rx320_off
- substr $S10, rx320_tgt, $I11, 5
- ne $S10, "CATCH", rx320_fail
- add rx320_pos, 5
- set_addr $I10, rxcap_324_fail
- ($I12, $I11) = rx320_cur."!mark_peek"($I10)
- rx320_cur."!cursor_pos"($I11)
- ($P10) = rx320_cur."!cursor_start"()
- $P10."!cursor_pass"(rx320_pos, "")
- rx320_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx323_pos, 5
+ gt $I11, rx323_eos, rx323_fail
+ sub $I11, rx323_pos, rx323_off
+ substr $S10, rx323_tgt, $I11, 5
+ ne $S10, "CATCH", rx323_fail
+ add rx323_pos, 5
+ set_addr $I10, rxcap_327_fail
+ ($I12, $I11) = rx323_cur."!mark_peek"($I10)
+ rx323_cur."!cursor_pos"($I11)
+ ($P10) = rx323_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx323_pos, "")
+ rx323_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_324_done
- rxcap_324_fail:
- goto rx320_fail
- rxcap_324_done:
+ goto rxcap_327_done
+ rxcap_327_fail:
+ goto rx323_fail
+ rxcap_327_done:
# rx charclass s
- ge rx320_pos, rx320_eos, rx320_fail
- sub $I10, rx320_pos, rx320_off
- is_cclass $I11, 32, rx320_tgt, $I10
- unless $I11, rx320_fail
- inc rx320_pos
- # rx subrule "ws" subtype=method negate=
- rx320_cur."!cursor_pos"(rx320_pos)
- $P10 = rx320_cur."ws"()
- unless $P10, rx320_fail
- rx320_pos = $P10."pos"()
-.annotate "line", 182
+ ge rx323_pos, rx323_eos, rx323_fail
+ sub $I10, rx323_pos, rx323_off
+ is_cclass $I11, 32, rx323_tgt, $I10
+ unless $I11, rx323_fail
+ inc rx323_pos
+ # rx subrule "ws" subtype=method negate=
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."ws"()
+ unless $P10, rx323_fail
+ rx323_pos = $P10."pos"()
+.annotate "line", 186
# rx subrule "block" subtype=capture negate=
- rx320_cur."!cursor_pos"(rx320_pos)
- $P10 = rx320_cur."block"()
- unless $P10, rx320_fail
- rx320_cur."!mark_push"(0, -1, 0, $P10)
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."block"()
+ unless $P10, rx323_fail
+ rx323_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx320_pos = $P10."pos"()
+ rx323_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx320_cur."!cursor_pos"(rx320_pos)
- $P10 = rx320_cur."ws"()
- unless $P10, rx320_fail
- rx320_pos = $P10."pos"()
-.annotate "line", 180
+ rx323_cur."!cursor_pos"(rx323_pos)
+ $P10 = rx323_cur."ws"()
+ unless $P10, rx323_fail
+ rx323_pos = $P10."pos"()
+.annotate "line", 184
# rx pass
- rx320_cur."!cursor_pass"(rx320_pos, "statement_control:sym<CATCH>")
- rx320_cur."!cursor_debug"("PASS ", "statement_control:sym<CATCH>", " at pos=", rx320_pos)
- .return (rx320_cur)
- rx320_fail:
+ rx323_cur."!cursor_pass"(rx323_pos, "statement_control:sym<CATCH>")
+ rx323_cur."!cursor_debug"("PASS ", "statement_control:sym<CATCH>", " at pos=", rx323_pos)
+ .return (rx323_cur)
+ rx323_fail:
.annotate "line", 4
- (rx320_rep, rx320_pos, $I10, $P10) = rx320_cur."!mark_fail"(0)
- lt rx320_pos, -1, rx320_done
- eq rx320_pos, -1, rx320_fail
+ (rx323_rep, rx323_pos, $I10, $P10) = rx323_cur."!mark_fail"(0)
+ lt rx323_pos, -1, rx323_done
+ eq rx323_pos, -1, rx323_fail
jump $I10
- rx320_done:
- rx320_cur."!cursor_fail"()
- rx320_cur."!cursor_debug"("FAIL ", "statement_control:sym<CATCH>")
- .return (rx320_cur)
+ rx323_done:
+ rx323_cur."!cursor_fail"()
+ rx323_cur."!cursor_debug"("FAIL ", "statement_control:sym<CATCH>")
+ .return (rx323_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>" :subid("72_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<CATCH>" :subid("72_1272816833.94956") :method
.annotate "line", 4
- new $P322, "ResizablePMCArray"
- push $P322, "CATCH"
- .return ($P322)
+ new $P325, "ResizablePMCArray"
+ push $P325, "CATCH"
+ .return ($P325)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>" :subid("73_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_control:sym<CONTROL>" :subid("73_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx328_tgt
- .local int rx328_pos
- .local int rx328_off
- .local int rx328_eos
- .local int rx328_rep
- .local pmc rx328_cur
- (rx328_cur, rx328_pos, rx328_tgt) = self."!cursor_start"()
- rx328_cur."!cursor_debug"("START ", "statement_control:sym<CONTROL>")
- .lex unicode:"$\x{a2}", rx328_cur
+ .local string rx331_tgt
+ .local int rx331_pos
+ .local int rx331_off
+ .local int rx331_eos
+ .local int rx331_rep
+ .local pmc rx331_cur
+ (rx331_cur, rx331_pos, rx331_tgt) = self."!cursor_start"()
+ rx331_cur."!cursor_debug"("START ", "statement_control:sym<CONTROL>")
+ .lex unicode:"$\x{a2}", rx331_cur
.local pmc match
.lex "$/", match
- length rx328_eos, rx328_tgt
- set rx328_off, 0
- lt rx328_pos, 2, rx328_start
- sub rx328_off, rx328_pos, 1
- substr rx328_tgt, rx328_tgt, rx328_off
- rx328_start:
+ length rx331_eos, rx331_tgt
+ set rx331_off, 0
+ lt rx331_pos, 2, rx331_start
+ sub rx331_off, rx331_pos, 1
+ substr rx331_tgt, rx331_tgt, rx331_off
+ rx331_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan331_done
- goto rxscan331_scan
- rxscan331_loop:
- ($P10) = rx328_cur."from"()
+ ne $I10, -1, rxscan334_done
+ goto rxscan334_scan
+ rxscan334_loop:
+ ($P10) = rx331_cur."from"()
inc $P10
- set rx328_pos, $P10
- ge rx328_pos, rx328_eos, rxscan331_done
- rxscan331_scan:
- set_addr $I10, rxscan331_loop
- rx328_cur."!mark_push"(0, rx328_pos, $I10)
- rxscan331_done:
-.annotate "line", 186
+ set rx331_pos, $P10
+ ge rx331_pos, rx331_eos, rxscan334_done
+ rxscan334_scan:
+ set_addr $I10, rxscan334_loop
+ rx331_cur."!mark_push"(0, rx331_pos, $I10)
+ rxscan334_done:
+.annotate "line", 190
# rx subcapture "sym"
- set_addr $I10, rxcap_332_fail
- rx328_cur."!mark_push"(0, rx328_pos, $I10)
+ set_addr $I10, rxcap_335_fail
+ rx331_cur."!mark_push"(0, rx331_pos, $I10)
# rx literal "CONTROL"
- add $I11, rx328_pos, 7
- gt $I11, rx328_eos, rx328_fail
- sub $I11, rx328_pos, rx328_off
- substr $S10, rx328_tgt, $I11, 7
- ne $S10, "CONTROL", rx328_fail
- add rx328_pos, 7
- set_addr $I10, rxcap_332_fail
- ($I12, $I11) = rx328_cur."!mark_peek"($I10)
- rx328_cur."!cursor_pos"($I11)
- ($P10) = rx328_cur."!cursor_start"()
- $P10."!cursor_pass"(rx328_pos, "")
- rx328_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx331_pos, 7
+ gt $I11, rx331_eos, rx331_fail
+ sub $I11, rx331_pos, rx331_off
+ substr $S10, rx331_tgt, $I11, 7
+ ne $S10, "CONTROL", rx331_fail
+ add rx331_pos, 7
+ set_addr $I10, rxcap_335_fail
+ ($I12, $I11) = rx331_cur."!mark_peek"($I10)
+ rx331_cur."!cursor_pos"($I11)
+ ($P10) = rx331_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx331_pos, "")
+ rx331_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_332_done
- rxcap_332_fail:
- goto rx328_fail
- rxcap_332_done:
+ goto rxcap_335_done
+ rxcap_335_fail:
+ goto rx331_fail
+ rxcap_335_done:
# rx charclass s
- ge rx328_pos, rx328_eos, rx328_fail
- sub $I10, rx328_pos, rx328_off
- is_cclass $I11, 32, rx328_tgt, $I10
- unless $I11, rx328_fail
- inc rx328_pos
- # rx subrule "ws" subtype=method negate=
- rx328_cur."!cursor_pos"(rx328_pos)
- $P10 = rx328_cur."ws"()
- unless $P10, rx328_fail
- rx328_pos = $P10."pos"()
-.annotate "line", 187
+ ge rx331_pos, rx331_eos, rx331_fail
+ sub $I10, rx331_pos, rx331_off
+ is_cclass $I11, 32, rx331_tgt, $I10
+ unless $I11, rx331_fail
+ inc rx331_pos
+ # rx subrule "ws" subtype=method negate=
+ rx331_cur."!cursor_pos"(rx331_pos)
+ $P10 = rx331_cur."ws"()
+ unless $P10, rx331_fail
+ rx331_pos = $P10."pos"()
+.annotate "line", 191
# rx subrule "block" subtype=capture negate=
- rx328_cur."!cursor_pos"(rx328_pos)
- $P10 = rx328_cur."block"()
- unless $P10, rx328_fail
- rx328_cur."!mark_push"(0, -1, 0, $P10)
+ rx331_cur."!cursor_pos"(rx331_pos)
+ $P10 = rx331_cur."block"()
+ unless $P10, rx331_fail
+ rx331_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx328_pos = $P10."pos"()
+ rx331_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx328_cur."!cursor_pos"(rx328_pos)
- $P10 = rx328_cur."ws"()
- unless $P10, rx328_fail
- rx328_pos = $P10."pos"()
-.annotate "line", 185
+ rx331_cur."!cursor_pos"(rx331_pos)
+ $P10 = rx331_cur."ws"()
+ unless $P10, rx331_fail
+ rx331_pos = $P10."pos"()
+.annotate "line", 189
# rx pass
- rx328_cur."!cursor_pass"(rx328_pos, "statement_control:sym<CONTROL>")
- rx328_cur."!cursor_debug"("PASS ", "statement_control:sym<CONTROL>", " at pos=", rx328_pos)
- .return (rx328_cur)
- rx328_fail:
+ rx331_cur."!cursor_pass"(rx331_pos, "statement_control:sym<CONTROL>")
+ rx331_cur."!cursor_debug"("PASS ", "statement_control:sym<CONTROL>", " at pos=", rx331_pos)
+ .return (rx331_cur)
+ rx331_fail:
.annotate "line", 4
- (rx328_rep, rx328_pos, $I10, $P10) = rx328_cur."!mark_fail"(0)
- lt rx328_pos, -1, rx328_done
- eq rx328_pos, -1, rx328_fail
+ (rx331_rep, rx331_pos, $I10, $P10) = rx331_cur."!mark_fail"(0)
+ lt rx331_pos, -1, rx331_done
+ eq rx331_pos, -1, rx331_fail
jump $I10
- rx328_done:
- rx328_cur."!cursor_fail"()
- rx328_cur."!cursor_debug"("FAIL ", "statement_control:sym<CONTROL>")
- .return (rx328_cur)
+ rx331_done:
+ rx331_cur."!cursor_fail"()
+ rx331_cur."!cursor_debug"("FAIL ", "statement_control:sym<CONTROL>")
+ .return (rx331_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>" :subid("74_1267204702.05125") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>" :subid("74_1272816833.94956") :method
.annotate "line", 4
- new $P330, "ResizablePMCArray"
- push $P330, "CONTROL"
- .return ($P330)
+ new $P333, "ResizablePMCArray"
+ push $P333, "CONTROL"
+ .return ($P333)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix" :subid("75_1267204702.05125") :method
-.annotate "line", 190
- $P336 = self."!protoregex"("statement_prefix")
- .return ($P336)
+.sub "statement_prefix" :subid("75_1272816833.94956") :method
+.annotate "line", 194
+ $P339 = self."!protoregex"("statement_prefix")
+ .return ($P339)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix" :subid("76_1267204702.05125") :method
-.annotate "line", 190
- $P338 = self."!PREFIX__!protoregex"("statement_prefix")
- .return ($P338)
+.sub "!PREFIX__statement_prefix" :subid("76_1272816833.94956") :method
+.annotate "line", 194
+ $P341 = self."!PREFIX__!protoregex"("statement_prefix")
+ .return ($P341)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>" :subid("77_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_prefix:sym<INIT>" :subid("77_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx340_tgt
- .local int rx340_pos
- .local int rx340_off
- .local int rx340_eos
- .local int rx340_rep
- .local pmc rx340_cur
- (rx340_cur, rx340_pos, rx340_tgt) = self."!cursor_start"()
- rx340_cur."!cursor_debug"("START ", "statement_prefix:sym<INIT>")
- .lex unicode:"$\x{a2}", rx340_cur
- .local pmc match
- .lex "$/", match
- length rx340_eos, rx340_tgt
- set rx340_off, 0
- lt rx340_pos, 2, rx340_start
- sub rx340_off, rx340_pos, 1
- substr rx340_tgt, rx340_tgt, rx340_off
- rx340_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan344_done
- goto rxscan344_scan
- rxscan344_loop:
- ($P10) = rx340_cur."from"()
- inc $P10
- set rx340_pos, $P10
- ge rx340_pos, rx340_eos, rxscan344_done
- rxscan344_scan:
- set_addr $I10, rxscan344_loop
- rx340_cur."!mark_push"(0, rx340_pos, $I10)
- rxscan344_done:
-.annotate "line", 191
+ .local string rx343_tgt
+ .local int rx343_pos
+ .local int rx343_off
+ .local int rx343_eos
+ .local int rx343_rep
+ .local pmc rx343_cur
+ (rx343_cur, rx343_pos, rx343_tgt) = self."!cursor_start"()
+ rx343_cur."!cursor_debug"("START ", "statement_prefix:sym<INIT>")
+ .lex unicode:"$\x{a2}", rx343_cur
+ .local pmc match
+ .lex "$/", match
+ length rx343_eos, rx343_tgt
+ set rx343_off, 0
+ lt rx343_pos, 2, rx343_start
+ sub rx343_off, rx343_pos, 1
+ substr rx343_tgt, rx343_tgt, rx343_off
+ rx343_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan347_done
+ goto rxscan347_scan
+ rxscan347_loop:
+ ($P10) = rx343_cur."from"()
+ inc $P10
+ set rx343_pos, $P10
+ ge rx343_pos, rx343_eos, rxscan347_done
+ rxscan347_scan:
+ set_addr $I10, rxscan347_loop
+ rx343_cur."!mark_push"(0, rx343_pos, $I10)
+ rxscan347_done:
+.annotate "line", 195
# rx subcapture "sym"
- set_addr $I10, rxcap_345_fail
- rx340_cur."!mark_push"(0, rx340_pos, $I10)
+ set_addr $I10, rxcap_348_fail
+ rx343_cur."!mark_push"(0, rx343_pos, $I10)
# rx literal "INIT"
- add $I11, rx340_pos, 4
- gt $I11, rx340_eos, rx340_fail
- sub $I11, rx340_pos, rx340_off
- substr $S10, rx340_tgt, $I11, 4
- ne $S10, "INIT", rx340_fail
- add rx340_pos, 4
- set_addr $I10, rxcap_345_fail
- ($I12, $I11) = rx340_cur."!mark_peek"($I10)
- rx340_cur."!cursor_pos"($I11)
- ($P10) = rx340_cur."!cursor_start"()
- $P10."!cursor_pass"(rx340_pos, "")
- rx340_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx343_pos, 4
+ gt $I11, rx343_eos, rx343_fail
+ sub $I11, rx343_pos, rx343_off
+ substr $S10, rx343_tgt, $I11, 4
+ ne $S10, "INIT", rx343_fail
+ add rx343_pos, 4
+ set_addr $I10, rxcap_348_fail
+ ($I12, $I11) = rx343_cur."!mark_peek"($I10)
+ rx343_cur."!cursor_pos"($I11)
+ ($P10) = rx343_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx343_pos, "")
+ rx343_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_345_done
- rxcap_345_fail:
- goto rx340_fail
- rxcap_345_done:
+ goto rxcap_348_done
+ rxcap_348_fail:
+ goto rx343_fail
+ rxcap_348_done:
# rx subrule "blorst" subtype=capture negate=
- rx340_cur."!cursor_pos"(rx340_pos)
- $P10 = rx340_cur."blorst"()
- unless $P10, rx340_fail
- rx340_cur."!mark_push"(0, -1, 0, $P10)
+ rx343_cur."!cursor_pos"(rx343_pos)
+ $P10 = rx343_cur."blorst"()
+ unless $P10, rx343_fail
+ rx343_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blorst")
- rx340_pos = $P10."pos"()
+ rx343_pos = $P10."pos"()
# rx pass
- rx340_cur."!cursor_pass"(rx340_pos, "statement_prefix:sym<INIT>")
- rx340_cur."!cursor_debug"("PASS ", "statement_prefix:sym<INIT>", " at pos=", rx340_pos)
- .return (rx340_cur)
- rx340_fail:
+ rx343_cur."!cursor_pass"(rx343_pos, "statement_prefix:sym<INIT>")
+ rx343_cur."!cursor_debug"("PASS ", "statement_prefix:sym<INIT>", " at pos=", rx343_pos)
+ .return (rx343_cur)
+ rx343_fail:
.annotate "line", 4
- (rx340_rep, rx340_pos, $I10, $P10) = rx340_cur."!mark_fail"(0)
- lt rx340_pos, -1, rx340_done
- eq rx340_pos, -1, rx340_fail
+ (rx343_rep, rx343_pos, $I10, $P10) = rx343_cur."!mark_fail"(0)
+ lt rx343_pos, -1, rx343_done
+ eq rx343_pos, -1, rx343_fail
jump $I10
- rx340_done:
- rx340_cur."!cursor_fail"()
- rx340_cur."!cursor_debug"("FAIL ", "statement_prefix:sym<INIT>")
- .return (rx340_cur)
+ rx343_done:
+ rx343_cur."!cursor_fail"()
+ rx343_cur."!cursor_debug"("FAIL ", "statement_prefix:sym<INIT>")
+ .return (rx343_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>" :subid("78_1267204702.05125") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>" :subid("78_1272816833.94956") :method
.annotate "line", 4
- $P342 = self."!PREFIX__!subrule"("blorst", "INIT")
- new $P343, "ResizablePMCArray"
- push $P343, $P342
- .return ($P343)
+ $P345 = self."!PREFIX__!subrule"("blorst", "INIT")
+ new $P346, "ResizablePMCArray"
+ push $P346, $P345
+ .return ($P346)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>" :subid("79_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_prefix:sym<try>" :subid("79_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx347_tgt
- .local int rx347_pos
- .local int rx347_off
- .local int rx347_eos
- .local int rx347_rep
- .local pmc rx347_cur
- (rx347_cur, rx347_pos, rx347_tgt) = self."!cursor_start"()
- rx347_cur."!cursor_debug"("START ", "statement_prefix:sym<try>")
- .lex unicode:"$\x{a2}", rx347_cur
- .local pmc match
- .lex "$/", match
- length rx347_eos, rx347_tgt
- set rx347_off, 0
- lt rx347_pos, 2, rx347_start
- sub rx347_off, rx347_pos, 1
- substr rx347_tgt, rx347_tgt, rx347_off
- rx347_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan351_done
- goto rxscan351_scan
- rxscan351_loop:
- ($P10) = rx347_cur."from"()
- inc $P10
- set rx347_pos, $P10
- ge rx347_pos, rx347_eos, rxscan351_done
- rxscan351_scan:
- set_addr $I10, rxscan351_loop
- rx347_cur."!mark_push"(0, rx347_pos, $I10)
- rxscan351_done:
-.annotate "line", 194
+ .local string rx350_tgt
+ .local int rx350_pos
+ .local int rx350_off
+ .local int rx350_eos
+ .local int rx350_rep
+ .local pmc rx350_cur
+ (rx350_cur, rx350_pos, rx350_tgt) = self."!cursor_start"()
+ rx350_cur."!cursor_debug"("START ", "statement_prefix:sym<try>")
+ .lex unicode:"$\x{a2}", rx350_cur
+ .local pmc match
+ .lex "$/", match
+ length rx350_eos, rx350_tgt
+ set rx350_off, 0
+ lt rx350_pos, 2, rx350_start
+ sub rx350_off, rx350_pos, 1
+ substr rx350_tgt, rx350_tgt, rx350_off
+ rx350_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan354_done
+ goto rxscan354_scan
+ rxscan354_loop:
+ ($P10) = rx350_cur."from"()
+ inc $P10
+ set rx350_pos, $P10
+ ge rx350_pos, rx350_eos, rxscan354_done
+ rxscan354_scan:
+ set_addr $I10, rxscan354_loop
+ rx350_cur."!mark_push"(0, rx350_pos, $I10)
+ rxscan354_done:
+.annotate "line", 198
# rx subcapture "sym"
- set_addr $I10, rxcap_352_fail
- rx347_cur."!mark_push"(0, rx347_pos, $I10)
+ set_addr $I10, rxcap_355_fail
+ rx350_cur."!mark_push"(0, rx350_pos, $I10)
# rx literal "try"
- add $I11, rx347_pos, 3
- gt $I11, rx347_eos, rx347_fail
- sub $I11, rx347_pos, rx347_off
- substr $S10, rx347_tgt, $I11, 3
- ne $S10, "try", rx347_fail
- add rx347_pos, 3
- set_addr $I10, rxcap_352_fail
- ($I12, $I11) = rx347_cur."!mark_peek"($I10)
- rx347_cur."!cursor_pos"($I11)
- ($P10) = rx347_cur."!cursor_start"()
- $P10."!cursor_pass"(rx347_pos, "")
- rx347_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx350_pos, 3
+ gt $I11, rx350_eos, rx350_fail
+ sub $I11, rx350_pos, rx350_off
+ substr $S10, rx350_tgt, $I11, 3
+ ne $S10, "try", rx350_fail
+ add rx350_pos, 3
+ set_addr $I10, rxcap_355_fail
+ ($I12, $I11) = rx350_cur."!mark_peek"($I10)
+ rx350_cur."!cursor_pos"($I11)
+ ($P10) = rx350_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx350_pos, "")
+ rx350_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_352_done
- rxcap_352_fail:
- goto rx347_fail
- rxcap_352_done:
-.annotate "line", 195
+ goto rxcap_355_done
+ rxcap_355_fail:
+ goto rx350_fail
+ rxcap_355_done:
+.annotate "line", 199
# rx subrule "blorst" subtype=capture negate=
- rx347_cur."!cursor_pos"(rx347_pos)
- $P10 = rx347_cur."blorst"()
- unless $P10, rx347_fail
- rx347_cur."!mark_push"(0, -1, 0, $P10)
+ rx350_cur."!cursor_pos"(rx350_pos)
+ $P10 = rx350_cur."blorst"()
+ unless $P10, rx350_fail
+ rx350_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blorst")
- rx347_pos = $P10."pos"()
-.annotate "line", 193
+ rx350_pos = $P10."pos"()
+.annotate "line", 197
# rx pass
- rx347_cur."!cursor_pass"(rx347_pos, "statement_prefix:sym<try>")
- rx347_cur."!cursor_debug"("PASS ", "statement_prefix:sym<try>", " at pos=", rx347_pos)
- .return (rx347_cur)
- rx347_fail:
+ rx350_cur."!cursor_pass"(rx350_pos, "statement_prefix:sym<try>")
+ rx350_cur."!cursor_debug"("PASS ", "statement_prefix:sym<try>", " at pos=", rx350_pos)
+ .return (rx350_cur)
+ rx350_fail:
.annotate "line", 4
- (rx347_rep, rx347_pos, $I10, $P10) = rx347_cur."!mark_fail"(0)
- lt rx347_pos, -1, rx347_done
- eq rx347_pos, -1, rx347_fail
+ (rx350_rep, rx350_pos, $I10, $P10) = rx350_cur."!mark_fail"(0)
+ lt rx350_pos, -1, rx350_done
+ eq rx350_pos, -1, rx350_fail
jump $I10
- rx347_done:
- rx347_cur."!cursor_fail"()
- rx347_cur."!cursor_debug"("FAIL ", "statement_prefix:sym<try>")
- .return (rx347_cur)
+ rx350_done:
+ rx350_cur."!cursor_fail"()
+ rx350_cur."!cursor_debug"("FAIL ", "statement_prefix:sym<try>")
+ .return (rx350_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>" :subid("80_1267204702.05125") :method
+.sub "!PREFIX__statement_prefix:sym<try>" :subid("80_1272816833.94956") :method
.annotate "line", 4
- $P349 = self."!PREFIX__!subrule"("blorst", "try")
- new $P350, "ResizablePMCArray"
- push $P350, $P349
- .return ($P350)
+ $P352 = self."!PREFIX__!subrule"("blorst", "try")
+ new $P353, "ResizablePMCArray"
+ push $P353, $P352
+ .return ($P353)
.end
.namespace ["NQP";"Grammar"]
-.sub "blorst" :subid("81_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "blorst" :subid("81_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx354_tgt
- .local int rx354_pos
- .local int rx354_off
- .local int rx354_eos
- .local int rx354_rep
- .local pmc rx354_cur
- (rx354_cur, rx354_pos, rx354_tgt) = self."!cursor_start"()
- rx354_cur."!cursor_debug"("START ", "blorst")
- .lex unicode:"$\x{a2}", rx354_cur
+ .local string rx357_tgt
+ .local int rx357_pos
+ .local int rx357_off
+ .local int rx357_eos
+ .local int rx357_rep
+ .local pmc rx357_cur
+ (rx357_cur, rx357_pos, rx357_tgt) = self."!cursor_start"()
+ rx357_cur."!cursor_debug"("START ", "blorst")
+ .lex unicode:"$\x{a2}", rx357_cur
.local pmc match
.lex "$/", match
- length rx354_eos, rx354_tgt
- set rx354_off, 0
- lt rx354_pos, 2, rx354_start
- sub rx354_off, rx354_pos, 1
- substr rx354_tgt, rx354_tgt, rx354_off
- rx354_start:
+ length rx357_eos, rx357_tgt
+ set rx357_off, 0
+ lt rx357_pos, 2, rx357_start
+ sub rx357_off, rx357_pos, 1
+ substr rx357_tgt, rx357_tgt, rx357_off
+ rx357_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan357_done
- goto rxscan357_scan
- rxscan357_loop:
- ($P10) = rx354_cur."from"()
+ ne $I10, -1, rxscan360_done
+ goto rxscan360_scan
+ rxscan360_loop:
+ ($P10) = rx357_cur."from"()
inc $P10
- set rx354_pos, $P10
- ge rx354_pos, rx354_eos, rxscan357_done
- rxscan357_scan:
- set_addr $I10, rxscan357_loop
- rx354_cur."!mark_push"(0, rx354_pos, $I10)
- rxscan357_done:
-.annotate "line", 199
+ set rx357_pos, $P10
+ ge rx357_pos, rx357_eos, rxscan360_done
+ rxscan360_scan:
+ set_addr $I10, rxscan360_loop
+ rx357_cur."!mark_push"(0, rx357_pos, $I10)
+ rxscan360_done:
+.annotate "line", 203
# rx charclass s
- ge rx354_pos, rx354_eos, rx354_fail
- sub $I10, rx354_pos, rx354_off
- is_cclass $I11, 32, rx354_tgt, $I10
- unless $I11, rx354_fail
- inc rx354_pos
- # rx subrule "ws" subtype=method negate=
- rx354_cur."!cursor_pos"(rx354_pos)
- $P10 = rx354_cur."ws"()
- unless $P10, rx354_fail
- rx354_pos = $P10."pos"()
- alt358_0:
- set_addr $I10, alt358_1
- rx354_cur."!mark_push"(0, rx354_pos, $I10)
+ ge rx357_pos, rx357_eos, rx357_fail
+ sub $I10, rx357_pos, rx357_off
+ is_cclass $I11, 32, rx357_tgt, $I10
+ unless $I11, rx357_fail
+ inc rx357_pos
+ # rx subrule "ws" subtype=method negate=
+ rx357_cur."!cursor_pos"(rx357_pos)
+ $P10 = rx357_cur."ws"()
+ unless $P10, rx357_fail
+ rx357_pos = $P10."pos"()
+ alt361_0:
+ set_addr $I10, alt361_1
+ rx357_cur."!mark_push"(0, rx357_pos, $I10)
# rx enumcharlist negate=0 zerowidth
- ge rx354_pos, rx354_eos, rx354_fail
- sub $I10, rx354_pos, rx354_off
- substr $S10, rx354_tgt, $I10, 1
+ ge rx357_pos, rx357_eos, rx357_fail
+ sub $I10, rx357_pos, rx357_off
+ substr $S10, rx357_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx354_fail
+ lt $I11, 0, rx357_fail
# rx subrule "block" subtype=capture negate=
- rx354_cur."!cursor_pos"(rx354_pos)
- $P10 = rx354_cur."block"()
- unless $P10, rx354_fail
- rx354_cur."!mark_push"(0, -1, 0, $P10)
+ rx357_cur."!cursor_pos"(rx357_pos)
+ $P10 = rx357_cur."block"()
+ unless $P10, rx357_fail
+ rx357_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx354_pos = $P10."pos"()
- goto alt358_end
- alt358_1:
+ rx357_pos = $P10."pos"()
+ goto alt361_end
+ alt361_1:
# rx subrule "statement" subtype=capture negate=
- rx354_cur."!cursor_pos"(rx354_pos)
- $P10 = rx354_cur."statement"()
- unless $P10, rx354_fail
- rx354_cur."!mark_push"(0, -1, 0, $P10)
+ rx357_cur."!cursor_pos"(rx357_pos)
+ $P10 = rx357_cur."statement"()
+ unless $P10, rx357_fail
+ rx357_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement")
- rx354_pos = $P10."pos"()
- alt358_end:
-.annotate "line", 198
+ rx357_pos = $P10."pos"()
+ alt361_end:
+.annotate "line", 202
# rx pass
- rx354_cur."!cursor_pass"(rx354_pos, "blorst")
- rx354_cur."!cursor_debug"("PASS ", "blorst", " at pos=", rx354_pos)
- .return (rx354_cur)
- rx354_fail:
+ rx357_cur."!cursor_pass"(rx357_pos, "blorst")
+ rx357_cur."!cursor_debug"("PASS ", "blorst", " at pos=", rx357_pos)
+ .return (rx357_cur)
+ rx357_fail:
.annotate "line", 4
- (rx354_rep, rx354_pos, $I10, $P10) = rx354_cur."!mark_fail"(0)
- lt rx354_pos, -1, rx354_done
- eq rx354_pos, -1, rx354_fail
+ (rx357_rep, rx357_pos, $I10, $P10) = rx357_cur."!mark_fail"(0)
+ lt rx357_pos, -1, rx357_done
+ eq rx357_pos, -1, rx357_fail
jump $I10
- rx354_done:
- rx354_cur."!cursor_fail"()
- rx354_cur."!cursor_debug"("FAIL ", "blorst")
- .return (rx354_cur)
+ rx357_done:
+ rx357_cur."!cursor_fail"()
+ rx357_cur."!cursor_debug"("FAIL ", "blorst")
+ .return (rx357_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst" :subid("82_1267204702.05125") :method
+.sub "!PREFIX__blorst" :subid("82_1272816833.94956") :method
.annotate "line", 4
- new $P356, "ResizablePMCArray"
- push $P356, ""
- .return ($P356)
+ new $P359, "ResizablePMCArray"
+ push $P359, ""
+ .return ($P359)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond" :subid("83_1267204702.05125") :method
-.annotate "line", 204
- $P360 = self."!protoregex"("statement_mod_cond")
- .return ($P360)
+.sub "statement_mod_cond" :subid("83_1272816833.94956") :method
+.annotate "line", 208
+ $P363 = self."!protoregex"("statement_mod_cond")
+ .return ($P363)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond" :subid("84_1267204702.05125") :method
-.annotate "line", 204
- $P362 = self."!PREFIX__!protoregex"("statement_mod_cond")
- .return ($P362)
+.sub "!PREFIX__statement_mod_cond" :subid("84_1272816833.94956") :method
+.annotate "line", 208
+ $P365 = self."!PREFIX__!protoregex"("statement_mod_cond")
+ .return ($P365)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>" :subid("85_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_mod_cond:sym<if>" :subid("85_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx364_tgt
- .local int rx364_pos
- .local int rx364_off
- .local int rx364_eos
- .local int rx364_rep
- .local pmc rx364_cur
- (rx364_cur, rx364_pos, rx364_tgt) = self."!cursor_start"()
- rx364_cur."!cursor_debug"("START ", "statement_mod_cond:sym<if>")
- .lex unicode:"$\x{a2}", rx364_cur
- .local pmc match
- .lex "$/", match
- length rx364_eos, rx364_tgt
- set rx364_off, 0
- lt rx364_pos, 2, rx364_start
- sub rx364_off, rx364_pos, 1
- substr rx364_tgt, rx364_tgt, rx364_off
- rx364_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan367_done
- goto rxscan367_scan
- rxscan367_loop:
- ($P10) = rx364_cur."from"()
- inc $P10
- set rx364_pos, $P10
- ge rx364_pos, rx364_eos, rxscan367_done
- rxscan367_scan:
- set_addr $I10, rxscan367_loop
- rx364_cur."!mark_push"(0, rx364_pos, $I10)
- rxscan367_done:
-.annotate "line", 206
+ .local string rx367_tgt
+ .local int rx367_pos
+ .local int rx367_off
+ .local int rx367_eos
+ .local int rx367_rep
+ .local pmc rx367_cur
+ (rx367_cur, rx367_pos, rx367_tgt) = self."!cursor_start"()
+ rx367_cur."!cursor_debug"("START ", "statement_mod_cond:sym<if>")
+ .lex unicode:"$\x{a2}", rx367_cur
+ .local pmc match
+ .lex "$/", match
+ length rx367_eos, rx367_tgt
+ set rx367_off, 0
+ lt rx367_pos, 2, rx367_start
+ sub rx367_off, rx367_pos, 1
+ substr rx367_tgt, rx367_tgt, rx367_off
+ rx367_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan370_done
+ goto rxscan370_scan
+ rxscan370_loop:
+ ($P10) = rx367_cur."from"()
+ inc $P10
+ set rx367_pos, $P10
+ ge rx367_pos, rx367_eos, rxscan370_done
+ rxscan370_scan:
+ set_addr $I10, rxscan370_loop
+ rx367_cur."!mark_push"(0, rx367_pos, $I10)
+ rxscan370_done:
+.annotate "line", 210
# rx subcapture "sym"
- set_addr $I10, rxcap_368_fail
- rx364_cur."!mark_push"(0, rx364_pos, $I10)
+ set_addr $I10, rxcap_371_fail
+ rx367_cur."!mark_push"(0, rx367_pos, $I10)
# rx literal "if"
- add $I11, rx364_pos, 2
- gt $I11, rx364_eos, rx364_fail
- sub $I11, rx364_pos, rx364_off
- substr $S10, rx364_tgt, $I11, 2
- ne $S10, "if", rx364_fail
- add rx364_pos, 2
- set_addr $I10, rxcap_368_fail
- ($I12, $I11) = rx364_cur."!mark_peek"($I10)
- rx364_cur."!cursor_pos"($I11)
- ($P10) = rx364_cur."!cursor_start"()
- $P10."!cursor_pass"(rx364_pos, "")
- rx364_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx367_pos, 2
+ gt $I11, rx367_eos, rx367_fail
+ sub $I11, rx367_pos, rx367_off
+ substr $S10, rx367_tgt, $I11, 2
+ ne $S10, "if", rx367_fail
+ add rx367_pos, 2
+ set_addr $I10, rxcap_371_fail
+ ($I12, $I11) = rx367_cur."!mark_peek"($I10)
+ rx367_cur."!cursor_pos"($I11)
+ ($P10) = rx367_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx367_pos, "")
+ rx367_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_368_done
- rxcap_368_fail:
- goto rx364_fail
- rxcap_368_done:
- # rx subrule "ws" subtype=method negate=
- rx364_cur."!cursor_pos"(rx364_pos)
- $P10 = rx364_cur."ws"()
- unless $P10, rx364_fail
- rx364_pos = $P10."pos"()
+ goto rxcap_371_done
+ rxcap_371_fail:
+ goto rx367_fail
+ rxcap_371_done:
+ # rx subrule "ws" subtype=method negate=
+ rx367_cur."!cursor_pos"(rx367_pos)
+ $P10 = rx367_cur."ws"()
+ unless $P10, rx367_fail
+ rx367_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx364_cur."!cursor_pos"(rx364_pos)
- $P10 = rx364_cur."EXPR"()
- unless $P10, rx364_fail
- rx364_cur."!mark_push"(0, -1, 0, $P10)
+ rx367_cur."!cursor_pos"(rx367_pos)
+ $P10 = rx367_cur."EXPR"()
+ unless $P10, rx367_fail
+ rx367_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("cond")
- rx364_pos = $P10."pos"()
+ rx367_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx364_cur."!cursor_pos"(rx364_pos)
- $P10 = rx364_cur."ws"()
- unless $P10, rx364_fail
- rx364_pos = $P10."pos"()
+ rx367_cur."!cursor_pos"(rx367_pos)
+ $P10 = rx367_cur."ws"()
+ unless $P10, rx367_fail
+ rx367_pos = $P10."pos"()
# rx pass
- rx364_cur."!cursor_pass"(rx364_pos, "statement_mod_cond:sym<if>")
- rx364_cur."!cursor_debug"("PASS ", "statement_mod_cond:sym<if>", " at pos=", rx364_pos)
- .return (rx364_cur)
- rx364_fail:
+ rx367_cur."!cursor_pass"(rx367_pos, "statement_mod_cond:sym<if>")
+ rx367_cur."!cursor_debug"("PASS ", "statement_mod_cond:sym<if>", " at pos=", rx367_pos)
+ .return (rx367_cur)
+ rx367_fail:
.annotate "line", 4
- (rx364_rep, rx364_pos, $I10, $P10) = rx364_cur."!mark_fail"(0)
- lt rx364_pos, -1, rx364_done
- eq rx364_pos, -1, rx364_fail
+ (rx367_rep, rx367_pos, $I10, $P10) = rx367_cur."!mark_fail"(0)
+ lt rx367_pos, -1, rx367_done
+ eq rx367_pos, -1, rx367_fail
jump $I10
- rx364_done:
- rx364_cur."!cursor_fail"()
- rx364_cur."!cursor_debug"("FAIL ", "statement_mod_cond:sym<if>")
- .return (rx364_cur)
+ rx367_done:
+ rx367_cur."!cursor_fail"()
+ rx367_cur."!cursor_debug"("FAIL ", "statement_mod_cond:sym<if>")
+ .return (rx367_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>" :subid("86_1267204702.05125") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>" :subid("86_1272816833.94956") :method
.annotate "line", 4
- new $P366, "ResizablePMCArray"
- push $P366, "if"
- .return ($P366)
+ new $P369, "ResizablePMCArray"
+ push $P369, "if"
+ .return ($P369)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>" :subid("87_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_mod_cond:sym<unless>" :subid("87_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx372_tgt
- .local int rx372_pos
- .local int rx372_off
- .local int rx372_eos
- .local int rx372_rep
- .local pmc rx372_cur
- (rx372_cur, rx372_pos, rx372_tgt) = self."!cursor_start"()
- rx372_cur."!cursor_debug"("START ", "statement_mod_cond:sym<unless>")
- .lex unicode:"$\x{a2}", rx372_cur
+ .local string rx375_tgt
+ .local int rx375_pos
+ .local int rx375_off
+ .local int rx375_eos
+ .local int rx375_rep
+ .local pmc rx375_cur
+ (rx375_cur, rx375_pos, rx375_tgt) = self."!cursor_start"()
+ rx375_cur."!cursor_debug"("START ", "statement_mod_cond:sym<unless>")
+ .lex unicode:"$\x{a2}", rx375_cur
.local pmc match
.lex "$/", match
- length rx372_eos, rx372_tgt
- set rx372_off, 0
- lt rx372_pos, 2, rx372_start
- sub rx372_off, rx372_pos, 1
- substr rx372_tgt, rx372_tgt, rx372_off
- rx372_start:
+ length rx375_eos, rx375_tgt
+ set rx375_off, 0
+ lt rx375_pos, 2, rx375_start
+ sub rx375_off, rx375_pos, 1
+ substr rx375_tgt, rx375_tgt, rx375_off
+ rx375_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan375_done
- goto rxscan375_scan
- rxscan375_loop:
- ($P10) = rx372_cur."from"()
+ ne $I10, -1, rxscan378_done
+ goto rxscan378_scan
+ rxscan378_loop:
+ ($P10) = rx375_cur."from"()
inc $P10
- set rx372_pos, $P10
- ge rx372_pos, rx372_eos, rxscan375_done
- rxscan375_scan:
- set_addr $I10, rxscan375_loop
- rx372_cur."!mark_push"(0, rx372_pos, $I10)
- rxscan375_done:
-.annotate "line", 207
+ set rx375_pos, $P10
+ ge rx375_pos, rx375_eos, rxscan378_done
+ rxscan378_scan:
+ set_addr $I10, rxscan378_loop
+ rx375_cur."!mark_push"(0, rx375_pos, $I10)
+ rxscan378_done:
+.annotate "line", 211
# rx subcapture "sym"
- set_addr $I10, rxcap_376_fail
- rx372_cur."!mark_push"(0, rx372_pos, $I10)
+ set_addr $I10, rxcap_379_fail
+ rx375_cur."!mark_push"(0, rx375_pos, $I10)
# rx literal "unless"
- add $I11, rx372_pos, 6
- gt $I11, rx372_eos, rx372_fail
- sub $I11, rx372_pos, rx372_off
- substr $S10, rx372_tgt, $I11, 6
- ne $S10, "unless", rx372_fail
- add rx372_pos, 6
- set_addr $I10, rxcap_376_fail
- ($I12, $I11) = rx372_cur."!mark_peek"($I10)
- rx372_cur."!cursor_pos"($I11)
- ($P10) = rx372_cur."!cursor_start"()
- $P10."!cursor_pass"(rx372_pos, "")
- rx372_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx375_pos, 6
+ gt $I11, rx375_eos, rx375_fail
+ sub $I11, rx375_pos, rx375_off
+ substr $S10, rx375_tgt, $I11, 6
+ ne $S10, "unless", rx375_fail
+ add rx375_pos, 6
+ set_addr $I10, rxcap_379_fail
+ ($I12, $I11) = rx375_cur."!mark_peek"($I10)
+ rx375_cur."!cursor_pos"($I11)
+ ($P10) = rx375_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx375_pos, "")
+ rx375_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_376_done
- rxcap_376_fail:
- goto rx372_fail
- rxcap_376_done:
- # rx subrule "ws" subtype=method negate=
- rx372_cur."!cursor_pos"(rx372_pos)
- $P10 = rx372_cur."ws"()
- unless $P10, rx372_fail
- rx372_pos = $P10."pos"()
+ goto rxcap_379_done
+ rxcap_379_fail:
+ goto rx375_fail
+ rxcap_379_done:
+ # rx subrule "ws" subtype=method negate=
+ rx375_cur."!cursor_pos"(rx375_pos)
+ $P10 = rx375_cur."ws"()
+ unless $P10, rx375_fail
+ rx375_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx372_cur."!cursor_pos"(rx372_pos)
- $P10 = rx372_cur."EXPR"()
- unless $P10, rx372_fail
- rx372_cur."!mark_push"(0, -1, 0, $P10)
+ rx375_cur."!cursor_pos"(rx375_pos)
+ $P10 = rx375_cur."EXPR"()
+ unless $P10, rx375_fail
+ rx375_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("cond")
- rx372_pos = $P10."pos"()
+ rx375_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx372_cur."!cursor_pos"(rx372_pos)
- $P10 = rx372_cur."ws"()
- unless $P10, rx372_fail
- rx372_pos = $P10."pos"()
+ rx375_cur."!cursor_pos"(rx375_pos)
+ $P10 = rx375_cur."ws"()
+ unless $P10, rx375_fail
+ rx375_pos = $P10."pos"()
# rx pass
- rx372_cur."!cursor_pass"(rx372_pos, "statement_mod_cond:sym<unless>")
- rx372_cur."!cursor_debug"("PASS ", "statement_mod_cond:sym<unless>", " at pos=", rx372_pos)
- .return (rx372_cur)
- rx372_fail:
+ rx375_cur."!cursor_pass"(rx375_pos, "statement_mod_cond:sym<unless>")
+ rx375_cur."!cursor_debug"("PASS ", "statement_mod_cond:sym<unless>", " at pos=", rx375_pos)
+ .return (rx375_cur)
+ rx375_fail:
.annotate "line", 4
- (rx372_rep, rx372_pos, $I10, $P10) = rx372_cur."!mark_fail"(0)
- lt rx372_pos, -1, rx372_done
- eq rx372_pos, -1, rx372_fail
+ (rx375_rep, rx375_pos, $I10, $P10) = rx375_cur."!mark_fail"(0)
+ lt rx375_pos, -1, rx375_done
+ eq rx375_pos, -1, rx375_fail
jump $I10
- rx372_done:
- rx372_cur."!cursor_fail"()
- rx372_cur."!cursor_debug"("FAIL ", "statement_mod_cond:sym<unless>")
- .return (rx372_cur)
+ rx375_done:
+ rx375_cur."!cursor_fail"()
+ rx375_cur."!cursor_debug"("FAIL ", "statement_mod_cond:sym<unless>")
+ .return (rx375_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>" :subid("88_1267204702.05125") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>" :subid("88_1272816833.94956") :method
.annotate "line", 4
- new $P374, "ResizablePMCArray"
- push $P374, "unless"
- .return ($P374)
+ new $P377, "ResizablePMCArray"
+ push $P377, "unless"
+ .return ($P377)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop" :subid("89_1267204702.05125") :method
-.annotate "line", 209
- $P380 = self."!protoregex"("statement_mod_loop")
- .return ($P380)
+.sub "statement_mod_loop" :subid("89_1272816833.94956") :method
+.annotate "line", 213
+ $P383 = self."!protoregex"("statement_mod_loop")
+ .return ($P383)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop" :subid("90_1267204702.05125") :method
-.annotate "line", 209
- $P382 = self."!PREFIX__!protoregex"("statement_mod_loop")
- .return ($P382)
+.sub "!PREFIX__statement_mod_loop" :subid("90_1272816833.94956") :method
+.annotate "line", 213
+ $P385 = self."!PREFIX__!protoregex"("statement_mod_loop")
+ .return ($P385)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>" :subid("91_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_mod_loop:sym<while>" :subid("91_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx384_tgt
- .local int rx384_pos
- .local int rx384_off
- .local int rx384_eos
- .local int rx384_rep
- .local pmc rx384_cur
- (rx384_cur, rx384_pos, rx384_tgt) = self."!cursor_start"()
- rx384_cur."!cursor_debug"("START ", "statement_mod_loop:sym<while>")
- .lex unicode:"$\x{a2}", rx384_cur
- .local pmc match
- .lex "$/", match
- length rx384_eos, rx384_tgt
- set rx384_off, 0
- lt rx384_pos, 2, rx384_start
- sub rx384_off, rx384_pos, 1
- substr rx384_tgt, rx384_tgt, rx384_off
- rx384_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan387_done
- goto rxscan387_scan
- rxscan387_loop:
- ($P10) = rx384_cur."from"()
- inc $P10
- set rx384_pos, $P10
- ge rx384_pos, rx384_eos, rxscan387_done
- rxscan387_scan:
- set_addr $I10, rxscan387_loop
- rx384_cur."!mark_push"(0, rx384_pos, $I10)
- rxscan387_done:
-.annotate "line", 211
+ .local string rx387_tgt
+ .local int rx387_pos
+ .local int rx387_off
+ .local int rx387_eos
+ .local int rx387_rep
+ .local pmc rx387_cur
+ (rx387_cur, rx387_pos, rx387_tgt) = self."!cursor_start"()
+ rx387_cur."!cursor_debug"("START ", "statement_mod_loop:sym<while>")
+ .lex unicode:"$\x{a2}", rx387_cur
+ .local pmc match
+ .lex "$/", match
+ length rx387_eos, rx387_tgt
+ set rx387_off, 0
+ lt rx387_pos, 2, rx387_start
+ sub rx387_off, rx387_pos, 1
+ substr rx387_tgt, rx387_tgt, rx387_off
+ rx387_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan390_done
+ goto rxscan390_scan
+ rxscan390_loop:
+ ($P10) = rx387_cur."from"()
+ inc $P10
+ set rx387_pos, $P10
+ ge rx387_pos, rx387_eos, rxscan390_done
+ rxscan390_scan:
+ set_addr $I10, rxscan390_loop
+ rx387_cur."!mark_push"(0, rx387_pos, $I10)
+ rxscan390_done:
+.annotate "line", 215
# rx subcapture "sym"
- set_addr $I10, rxcap_388_fail
- rx384_cur."!mark_push"(0, rx384_pos, $I10)
+ set_addr $I10, rxcap_391_fail
+ rx387_cur."!mark_push"(0, rx387_pos, $I10)
# rx literal "while"
- add $I11, rx384_pos, 5
- gt $I11, rx384_eos, rx384_fail
- sub $I11, rx384_pos, rx384_off
- substr $S10, rx384_tgt, $I11, 5
- ne $S10, "while", rx384_fail
- add rx384_pos, 5
- set_addr $I10, rxcap_388_fail
- ($I12, $I11) = rx384_cur."!mark_peek"($I10)
- rx384_cur."!cursor_pos"($I11)
- ($P10) = rx384_cur."!cursor_start"()
- $P10."!cursor_pass"(rx384_pos, "")
- rx384_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx387_pos, 5
+ gt $I11, rx387_eos, rx387_fail
+ sub $I11, rx387_pos, rx387_off
+ substr $S10, rx387_tgt, $I11, 5
+ ne $S10, "while", rx387_fail
+ add rx387_pos, 5
+ set_addr $I10, rxcap_391_fail
+ ($I12, $I11) = rx387_cur."!mark_peek"($I10)
+ rx387_cur."!cursor_pos"($I11)
+ ($P10) = rx387_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx387_pos, "")
+ rx387_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_388_done
- rxcap_388_fail:
- goto rx384_fail
- rxcap_388_done:
- # rx subrule "ws" subtype=method negate=
- rx384_cur."!cursor_pos"(rx384_pos)
- $P10 = rx384_cur."ws"()
- unless $P10, rx384_fail
- rx384_pos = $P10."pos"()
+ goto rxcap_391_done
+ rxcap_391_fail:
+ goto rx387_fail
+ rxcap_391_done:
+ # rx subrule "ws" subtype=method negate=
+ rx387_cur."!cursor_pos"(rx387_pos)
+ $P10 = rx387_cur."ws"()
+ unless $P10, rx387_fail
+ rx387_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx384_cur."!cursor_pos"(rx384_pos)
- $P10 = rx384_cur."EXPR"()
- unless $P10, rx384_fail
- rx384_cur."!mark_push"(0, -1, 0, $P10)
+ rx387_cur."!cursor_pos"(rx387_pos)
+ $P10 = rx387_cur."EXPR"()
+ unless $P10, rx387_fail
+ rx387_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("cond")
- rx384_pos = $P10."pos"()
+ rx387_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx384_cur."!cursor_pos"(rx384_pos)
- $P10 = rx384_cur."ws"()
- unless $P10, rx384_fail
- rx384_pos = $P10."pos"()
+ rx387_cur."!cursor_pos"(rx387_pos)
+ $P10 = rx387_cur."ws"()
+ unless $P10, rx387_fail
+ rx387_pos = $P10."pos"()
# rx pass
- rx384_cur."!cursor_pass"(rx384_pos, "statement_mod_loop:sym<while>")
- rx384_cur."!cursor_debug"("PASS ", "statement_mod_loop:sym<while>", " at pos=", rx384_pos)
- .return (rx384_cur)
- rx384_fail:
+ rx387_cur."!cursor_pass"(rx387_pos, "statement_mod_loop:sym<while>")
+ rx387_cur."!cursor_debug"("PASS ", "statement_mod_loop:sym<while>", " at pos=", rx387_pos)
+ .return (rx387_cur)
+ rx387_fail:
.annotate "line", 4
- (rx384_rep, rx384_pos, $I10, $P10) = rx384_cur."!mark_fail"(0)
- lt rx384_pos, -1, rx384_done
- eq rx384_pos, -1, rx384_fail
+ (rx387_rep, rx387_pos, $I10, $P10) = rx387_cur."!mark_fail"(0)
+ lt rx387_pos, -1, rx387_done
+ eq rx387_pos, -1, rx387_fail
jump $I10
- rx384_done:
- rx384_cur."!cursor_fail"()
- rx384_cur."!cursor_debug"("FAIL ", "statement_mod_loop:sym<while>")
- .return (rx384_cur)
+ rx387_done:
+ rx387_cur."!cursor_fail"()
+ rx387_cur."!cursor_debug"("FAIL ", "statement_mod_loop:sym<while>")
+ .return (rx387_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>" :subid("92_1267204702.05125") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>" :subid("92_1272816833.94956") :method
.annotate "line", 4
- new $P386, "ResizablePMCArray"
- push $P386, "while"
- .return ($P386)
+ new $P389, "ResizablePMCArray"
+ push $P389, "while"
+ .return ($P389)
.end
.namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>" :subid("93_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "statement_mod_loop:sym<until>" :subid("93_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx392_tgt
- .local int rx392_pos
- .local int rx392_off
- .local int rx392_eos
- .local int rx392_rep
- .local pmc rx392_cur
- (rx392_cur, rx392_pos, rx392_tgt) = self."!cursor_start"()
- rx392_cur."!cursor_debug"("START ", "statement_mod_loop:sym<until>")
- .lex unicode:"$\x{a2}", rx392_cur
+ .local string rx395_tgt
+ .local int rx395_pos
+ .local int rx395_off
+ .local int rx395_eos
+ .local int rx395_rep
+ .local pmc rx395_cur
+ (rx395_cur, rx395_pos, rx395_tgt) = self."!cursor_start"()
+ rx395_cur."!cursor_debug"("START ", "statement_mod_loop:sym<until>")
+ .lex unicode:"$\x{a2}", rx395_cur
.local pmc match
.lex "$/", match
- length rx392_eos, rx392_tgt
- set rx392_off, 0
- lt rx392_pos, 2, rx392_start
- sub rx392_off, rx392_pos, 1
- substr rx392_tgt, rx392_tgt, rx392_off
- rx392_start:
+ length rx395_eos, rx395_tgt
+ set rx395_off, 0
+ lt rx395_pos, 2, rx395_start
+ sub rx395_off, rx395_pos, 1
+ substr rx395_tgt, rx395_tgt, rx395_off
+ rx395_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan395_done
- goto rxscan395_scan
- rxscan395_loop:
- ($P10) = rx392_cur."from"()
+ ne $I10, -1, rxscan398_done
+ goto rxscan398_scan
+ rxscan398_loop:
+ ($P10) = rx395_cur."from"()
inc $P10
- set rx392_pos, $P10
- ge rx392_pos, rx392_eos, rxscan395_done
- rxscan395_scan:
- set_addr $I10, rxscan395_loop
- rx392_cur."!mark_push"(0, rx392_pos, $I10)
- rxscan395_done:
-.annotate "line", 212
+ set rx395_pos, $P10
+ ge rx395_pos, rx395_eos, rxscan398_done
+ rxscan398_scan:
+ set_addr $I10, rxscan398_loop
+ rx395_cur."!mark_push"(0, rx395_pos, $I10)
+ rxscan398_done:
+.annotate "line", 216
# rx subcapture "sym"
- set_addr $I10, rxcap_396_fail
- rx392_cur."!mark_push"(0, rx392_pos, $I10)
+ set_addr $I10, rxcap_399_fail
+ rx395_cur."!mark_push"(0, rx395_pos, $I10)
# rx literal "until"
- add $I11, rx392_pos, 5
- gt $I11, rx392_eos, rx392_fail
- sub $I11, rx392_pos, rx392_off
- substr $S10, rx392_tgt, $I11, 5
- ne $S10, "until", rx392_fail
- add rx392_pos, 5
- set_addr $I10, rxcap_396_fail
- ($I12, $I11) = rx392_cur."!mark_peek"($I10)
- rx392_cur."!cursor_pos"($I11)
- ($P10) = rx392_cur."!cursor_start"()
- $P10."!cursor_pass"(rx392_pos, "")
- rx392_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx395_pos, 5
+ gt $I11, rx395_eos, rx395_fail
+ sub $I11, rx395_pos, rx395_off
+ substr $S10, rx395_tgt, $I11, 5
+ ne $S10, "until", rx395_fail
+ add rx395_pos, 5
+ set_addr $I10, rxcap_399_fail
+ ($I12, $I11) = rx395_cur."!mark_peek"($I10)
+ rx395_cur."!cursor_pos"($I11)
+ ($P10) = rx395_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx395_pos, "")
+ rx395_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_396_done
- rxcap_396_fail:
- goto rx392_fail
- rxcap_396_done:
- # rx subrule "ws" subtype=method negate=
- rx392_cur."!cursor_pos"(rx392_pos)
- $P10 = rx392_cur."ws"()
- unless $P10, rx392_fail
- rx392_pos = $P10."pos"()
+ goto rxcap_399_done
+ rxcap_399_fail:
+ goto rx395_fail
+ rxcap_399_done:
+ # rx subrule "ws" subtype=method negate=
+ rx395_cur."!cursor_pos"(rx395_pos)
+ $P10 = rx395_cur."ws"()
+ unless $P10, rx395_fail
+ rx395_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx392_cur."!cursor_pos"(rx392_pos)
- $P10 = rx392_cur."EXPR"()
- unless $P10, rx392_fail
- rx392_cur."!mark_push"(0, -1, 0, $P10)
+ rx395_cur."!cursor_pos"(rx395_pos)
+ $P10 = rx395_cur."EXPR"()
+ unless $P10, rx395_fail
+ rx395_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("cond")
- rx392_pos = $P10."pos"()
+ rx395_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx392_cur."!cursor_pos"(rx392_pos)
- $P10 = rx392_cur."ws"()
- unless $P10, rx392_fail
- rx392_pos = $P10."pos"()
+ rx395_cur."!cursor_pos"(rx395_pos)
+ $P10 = rx395_cur."ws"()
+ unless $P10, rx395_fail
+ rx395_pos = $P10."pos"()
# rx pass
- rx392_cur."!cursor_pass"(rx392_pos, "statement_mod_loop:sym<until>")
- rx392_cur."!cursor_debug"("PASS ", "statement_mod_loop:sym<until>", " at pos=", rx392_pos)
- .return (rx392_cur)
- rx392_fail:
+ rx395_cur."!cursor_pass"(rx395_pos, "statement_mod_loop:sym<until>")
+ rx395_cur."!cursor_debug"("PASS ", "statement_mod_loop:sym<until>", " at pos=", rx395_pos)
+ .return (rx395_cur)
+ rx395_fail:
.annotate "line", 4
- (rx392_rep, rx392_pos, $I10, $P10) = rx392_cur."!mark_fail"(0)
- lt rx392_pos, -1, rx392_done
- eq rx392_pos, -1, rx392_fail
+ (rx395_rep, rx395_pos, $I10, $P10) = rx395_cur."!mark_fail"(0)
+ lt rx395_pos, -1, rx395_done
+ eq rx395_pos, -1, rx395_fail
jump $I10
- rx392_done:
- rx392_cur."!cursor_fail"()
- rx392_cur."!cursor_debug"("FAIL ", "statement_mod_loop:sym<until>")
- .return (rx392_cur)
+ rx395_done:
+ rx395_cur."!cursor_fail"()
+ rx395_cur."!cursor_debug"("FAIL ", "statement_mod_loop:sym<until>")
+ .return (rx395_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>" :subid("94_1267204702.05125") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>" :subid("94_1272816833.94956") :method
.annotate "line", 4
- new $P394, "ResizablePMCArray"
- push $P394, "until"
- .return ($P394)
+ new $P397, "ResizablePMCArray"
+ push $P397, "until"
+ .return ($P397)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>" :subid("95_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<fatarrow>" :subid("95_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx400_tgt
- .local int rx400_pos
- .local int rx400_off
- .local int rx400_eos
- .local int rx400_rep
- .local pmc rx400_cur
- (rx400_cur, rx400_pos, rx400_tgt) = self."!cursor_start"()
- rx400_cur."!cursor_debug"("START ", "term:sym<fatarrow>")
- .lex unicode:"$\x{a2}", rx400_cur
+ .local string rx403_tgt
+ .local int rx403_pos
+ .local int rx403_off
+ .local int rx403_eos
+ .local int rx403_rep
+ .local pmc rx403_cur
+ (rx403_cur, rx403_pos, rx403_tgt) = self."!cursor_start"()
+ rx403_cur."!cursor_debug"("START ", "term:sym<fatarrow>")
+ .lex unicode:"$\x{a2}", rx403_cur
.local pmc match
.lex "$/", match
- length rx400_eos, rx400_tgt
- set rx400_off, 0
- lt rx400_pos, 2, rx400_start
- sub rx400_off, rx400_pos, 1
- substr rx400_tgt, rx400_tgt, rx400_off
- rx400_start:
+ length rx403_eos, rx403_tgt
+ set rx403_off, 0
+ lt rx403_pos, 2, rx403_start
+ sub rx403_off, rx403_pos, 1
+ substr rx403_tgt, rx403_tgt, rx403_off
+ rx403_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan404_done
- goto rxscan404_scan
- rxscan404_loop:
- ($P10) = rx400_cur."from"()
+ ne $I10, -1, rxscan407_done
+ goto rxscan407_scan
+ rxscan407_loop:
+ ($P10) = rx403_cur."from"()
inc $P10
- set rx400_pos, $P10
- ge rx400_pos, rx400_eos, rxscan404_done
- rxscan404_scan:
- set_addr $I10, rxscan404_loop
- rx400_cur."!mark_push"(0, rx400_pos, $I10)
- rxscan404_done:
-.annotate "line", 216
+ set rx403_pos, $P10
+ ge rx403_pos, rx403_eos, rxscan407_done
+ rxscan407_scan:
+ set_addr $I10, rxscan407_loop
+ rx403_cur."!mark_push"(0, rx403_pos, $I10)
+ rxscan407_done:
+.annotate "line", 220
# rx subrule "fatarrow" subtype=capture negate=
- rx400_cur."!cursor_pos"(rx400_pos)
- $P10 = rx400_cur."fatarrow"()
- unless $P10, rx400_fail
- rx400_cur."!mark_push"(0, -1, 0, $P10)
+ rx403_cur."!cursor_pos"(rx403_pos)
+ $P10 = rx403_cur."fatarrow"()
+ unless $P10, rx403_fail
+ rx403_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("fatarrow")
- rx400_pos = $P10."pos"()
+ rx403_pos = $P10."pos"()
# rx pass
- rx400_cur."!cursor_pass"(rx400_pos, "term:sym<fatarrow>")
- rx400_cur."!cursor_debug"("PASS ", "term:sym<fatarrow>", " at pos=", rx400_pos)
- .return (rx400_cur)
- rx400_fail:
+ rx403_cur."!cursor_pass"(rx403_pos, "term:sym<fatarrow>")
+ rx403_cur."!cursor_debug"("PASS ", "term:sym<fatarrow>", " at pos=", rx403_pos)
+ .return (rx403_cur)
+ rx403_fail:
.annotate "line", 4
- (rx400_rep, rx400_pos, $I10, $P10) = rx400_cur."!mark_fail"(0)
- lt rx400_pos, -1, rx400_done
- eq rx400_pos, -1, rx400_fail
+ (rx403_rep, rx403_pos, $I10, $P10) = rx403_cur."!mark_fail"(0)
+ lt rx403_pos, -1, rx403_done
+ eq rx403_pos, -1, rx403_fail
jump $I10
- rx400_done:
- rx400_cur."!cursor_fail"()
- rx400_cur."!cursor_debug"("FAIL ", "term:sym<fatarrow>")
- .return (rx400_cur)
+ rx403_done:
+ rx403_cur."!cursor_fail"()
+ rx403_cur."!cursor_debug"("FAIL ", "term:sym<fatarrow>")
+ .return (rx403_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>" :subid("96_1267204702.05125") :method
+.sub "!PREFIX__term:sym<fatarrow>" :subid("96_1272816833.94956") :method
.annotate "line", 4
- $P402 = self."!PREFIX__!subrule"("fatarrow", "")
- new $P403, "ResizablePMCArray"
- push $P403, $P402
- .return ($P403)
+ $P405 = self."!PREFIX__!subrule"("fatarrow", "")
+ new $P406, "ResizablePMCArray"
+ push $P406, $P405
+ .return ($P406)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>" :subid("97_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<colonpair>" :subid("97_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx406_tgt
- .local int rx406_pos
- .local int rx406_off
- .local int rx406_eos
- .local int rx406_rep
- .local pmc rx406_cur
- (rx406_cur, rx406_pos, rx406_tgt) = self."!cursor_start"()
- rx406_cur."!cursor_debug"("START ", "term:sym<colonpair>")
- .lex unicode:"$\x{a2}", rx406_cur
+ .local string rx409_tgt
+ .local int rx409_pos
+ .local int rx409_off
+ .local int rx409_eos
+ .local int rx409_rep
+ .local pmc rx409_cur
+ (rx409_cur, rx409_pos, rx409_tgt) = self."!cursor_start"()
+ rx409_cur."!cursor_debug"("START ", "term:sym<colonpair>")
+ .lex unicode:"$\x{a2}", rx409_cur
.local pmc match
.lex "$/", match
- length rx406_eos, rx406_tgt
- set rx406_off, 0
- lt rx406_pos, 2, rx406_start
- sub rx406_off, rx406_pos, 1
- substr rx406_tgt, rx406_tgt, rx406_off
- rx406_start:
+ length rx409_eos, rx409_tgt
+ set rx409_off, 0
+ lt rx409_pos, 2, rx409_start
+ sub rx409_off, rx409_pos, 1
+ substr rx409_tgt, rx409_tgt, rx409_off
+ rx409_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan410_done
- goto rxscan410_scan
- rxscan410_loop:
- ($P10) = rx406_cur."from"()
+ ne $I10, -1, rxscan413_done
+ goto rxscan413_scan
+ rxscan413_loop:
+ ($P10) = rx409_cur."from"()
inc $P10
- set rx406_pos, $P10
- ge rx406_pos, rx406_eos, rxscan410_done
- rxscan410_scan:
- set_addr $I10, rxscan410_loop
- rx406_cur."!mark_push"(0, rx406_pos, $I10)
- rxscan410_done:
-.annotate "line", 217
+ set rx409_pos, $P10
+ ge rx409_pos, rx409_eos, rxscan413_done
+ rxscan413_scan:
+ set_addr $I10, rxscan413_loop
+ rx409_cur."!mark_push"(0, rx409_pos, $I10)
+ rxscan413_done:
+.annotate "line", 221
# rx subrule "colonpair" subtype=capture negate=
- rx406_cur."!cursor_pos"(rx406_pos)
- $P10 = rx406_cur."colonpair"()
- unless $P10, rx406_fail
- rx406_cur."!mark_push"(0, -1, 0, $P10)
+ rx409_cur."!cursor_pos"(rx409_pos)
+ $P10 = rx409_cur."colonpair"()
+ unless $P10, rx409_fail
+ rx409_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("colonpair")
- rx406_pos = $P10."pos"()
+ rx409_pos = $P10."pos"()
# rx pass
- rx406_cur."!cursor_pass"(rx406_pos, "term:sym<colonpair>")
- rx406_cur."!cursor_debug"("PASS ", "term:sym<colonpair>", " at pos=", rx406_pos)
- .return (rx406_cur)
- rx406_fail:
+ rx409_cur."!cursor_pass"(rx409_pos, "term:sym<colonpair>")
+ rx409_cur."!cursor_debug"("PASS ", "term:sym<colonpair>", " at pos=", rx409_pos)
+ .return (rx409_cur)
+ rx409_fail:
.annotate "line", 4
- (rx406_rep, rx406_pos, $I10, $P10) = rx406_cur."!mark_fail"(0)
- lt rx406_pos, -1, rx406_done
- eq rx406_pos, -1, rx406_fail
+ (rx409_rep, rx409_pos, $I10, $P10) = rx409_cur."!mark_fail"(0)
+ lt rx409_pos, -1, rx409_done
+ eq rx409_pos, -1, rx409_fail
jump $I10
- rx406_done:
- rx406_cur."!cursor_fail"()
- rx406_cur."!cursor_debug"("FAIL ", "term:sym<colonpair>")
- .return (rx406_cur)
+ rx409_done:
+ rx409_cur."!cursor_fail"()
+ rx409_cur."!cursor_debug"("FAIL ", "term:sym<colonpair>")
+ .return (rx409_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>" :subid("98_1267204702.05125") :method
+.sub "!PREFIX__term:sym<colonpair>" :subid("98_1272816833.94956") :method
.annotate "line", 4
- $P408 = self."!PREFIX__!subrule"("colonpair", "")
- new $P409, "ResizablePMCArray"
- push $P409, $P408
- .return ($P409)
+ $P411 = self."!PREFIX__!subrule"("colonpair", "")
+ new $P412, "ResizablePMCArray"
+ push $P412, $P411
+ .return ($P412)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>" :subid("99_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<variable>" :subid("99_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx412_tgt
- .local int rx412_pos
- .local int rx412_off
- .local int rx412_eos
- .local int rx412_rep
- .local pmc rx412_cur
- (rx412_cur, rx412_pos, rx412_tgt) = self."!cursor_start"()
- rx412_cur."!cursor_debug"("START ", "term:sym<variable>")
- .lex unicode:"$\x{a2}", rx412_cur
+ .local string rx415_tgt
+ .local int rx415_pos
+ .local int rx415_off
+ .local int rx415_eos
+ .local int rx415_rep
+ .local pmc rx415_cur
+ (rx415_cur, rx415_pos, rx415_tgt) = self."!cursor_start"()
+ rx415_cur."!cursor_debug"("START ", "term:sym<variable>")
+ .lex unicode:"$\x{a2}", rx415_cur
.local pmc match
.lex "$/", match
- length rx412_eos, rx412_tgt
- set rx412_off, 0
- lt rx412_pos, 2, rx412_start
- sub rx412_off, rx412_pos, 1
- substr rx412_tgt, rx412_tgt, rx412_off
- rx412_start:
+ length rx415_eos, rx415_tgt
+ set rx415_off, 0
+ lt rx415_pos, 2, rx415_start
+ sub rx415_off, rx415_pos, 1
+ substr rx415_tgt, rx415_tgt, rx415_off
+ rx415_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan416_done
- goto rxscan416_scan
- rxscan416_loop:
- ($P10) = rx412_cur."from"()
+ ne $I10, -1, rxscan419_done
+ goto rxscan419_scan
+ rxscan419_loop:
+ ($P10) = rx415_cur."from"()
inc $P10
- set rx412_pos, $P10
- ge rx412_pos, rx412_eos, rxscan416_done
- rxscan416_scan:
- set_addr $I10, rxscan416_loop
- rx412_cur."!mark_push"(0, rx412_pos, $I10)
- rxscan416_done:
-.annotate "line", 218
+ set rx415_pos, $P10
+ ge rx415_pos, rx415_eos, rxscan419_done
+ rxscan419_scan:
+ set_addr $I10, rxscan419_loop
+ rx415_cur."!mark_push"(0, rx415_pos, $I10)
+ rxscan419_done:
+.annotate "line", 222
# rx subrule "variable" subtype=capture negate=
- rx412_cur."!cursor_pos"(rx412_pos)
- $P10 = rx412_cur."variable"()
- unless $P10, rx412_fail
- rx412_cur."!mark_push"(0, -1, 0, $P10)
+ rx415_cur."!cursor_pos"(rx415_pos)
+ $P10 = rx415_cur."variable"()
+ unless $P10, rx415_fail
+ rx415_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("variable")
- rx412_pos = $P10."pos"()
+ rx415_pos = $P10."pos"()
# rx pass
- rx412_cur."!cursor_pass"(rx412_pos, "term:sym<variable>")
- rx412_cur."!cursor_debug"("PASS ", "term:sym<variable>", " at pos=", rx412_pos)
- .return (rx412_cur)
- rx412_fail:
+ rx415_cur."!cursor_pass"(rx415_pos, "term:sym<variable>")
+ rx415_cur."!cursor_debug"("PASS ", "term:sym<variable>", " at pos=", rx415_pos)
+ .return (rx415_cur)
+ rx415_fail:
.annotate "line", 4
- (rx412_rep, rx412_pos, $I10, $P10) = rx412_cur."!mark_fail"(0)
- lt rx412_pos, -1, rx412_done
- eq rx412_pos, -1, rx412_fail
+ (rx415_rep, rx415_pos, $I10, $P10) = rx415_cur."!mark_fail"(0)
+ lt rx415_pos, -1, rx415_done
+ eq rx415_pos, -1, rx415_fail
jump $I10
- rx412_done:
- rx412_cur."!cursor_fail"()
- rx412_cur."!cursor_debug"("FAIL ", "term:sym<variable>")
- .return (rx412_cur)
+ rx415_done:
+ rx415_cur."!cursor_fail"()
+ rx415_cur."!cursor_debug"("FAIL ", "term:sym<variable>")
+ .return (rx415_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>" :subid("100_1267204702.05125") :method
+.sub "!PREFIX__term:sym<variable>" :subid("100_1272816833.94956") :method
.annotate "line", 4
- $P414 = self."!PREFIX__!subrule"("variable", "")
- new $P415, "ResizablePMCArray"
- push $P415, $P414
- .return ($P415)
+ $P417 = self."!PREFIX__!subrule"("variable", "")
+ new $P418, "ResizablePMCArray"
+ push $P418, $P417
+ .return ($P418)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>" :subid("101_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<package_declarator>" :subid("101_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx418_tgt
- .local int rx418_pos
- .local int rx418_off
- .local int rx418_eos
- .local int rx418_rep
- .local pmc rx418_cur
- (rx418_cur, rx418_pos, rx418_tgt) = self."!cursor_start"()
- rx418_cur."!cursor_debug"("START ", "term:sym<package_declarator>")
- .lex unicode:"$\x{a2}", rx418_cur
+ .local string rx421_tgt
+ .local int rx421_pos
+ .local int rx421_off
+ .local int rx421_eos
+ .local int rx421_rep
+ .local pmc rx421_cur
+ (rx421_cur, rx421_pos, rx421_tgt) = self."!cursor_start"()
+ rx421_cur."!cursor_debug"("START ", "term:sym<package_declarator>")
+ .lex unicode:"$\x{a2}", rx421_cur
.local pmc match
.lex "$/", match
- length rx418_eos, rx418_tgt
- set rx418_off, 0
- lt rx418_pos, 2, rx418_start
- sub rx418_off, rx418_pos, 1
- substr rx418_tgt, rx418_tgt, rx418_off
- rx418_start:
+ length rx421_eos, rx421_tgt
+ set rx421_off, 0
+ lt rx421_pos, 2, rx421_start
+ sub rx421_off, rx421_pos, 1
+ substr rx421_tgt, rx421_tgt, rx421_off
+ rx421_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan422_done
- goto rxscan422_scan
- rxscan422_loop:
- ($P10) = rx418_cur."from"()
+ ne $I10, -1, rxscan425_done
+ goto rxscan425_scan
+ rxscan425_loop:
+ ($P10) = rx421_cur."from"()
inc $P10
- set rx418_pos, $P10
- ge rx418_pos, rx418_eos, rxscan422_done
- rxscan422_scan:
- set_addr $I10, rxscan422_loop
- rx418_cur."!mark_push"(0, rx418_pos, $I10)
- rxscan422_done:
-.annotate "line", 219
+ set rx421_pos, $P10
+ ge rx421_pos, rx421_eos, rxscan425_done
+ rxscan425_scan:
+ set_addr $I10, rxscan425_loop
+ rx421_cur."!mark_push"(0, rx421_pos, $I10)
+ rxscan425_done:
+.annotate "line", 223
# rx subrule "package_declarator" subtype=capture negate=
- rx418_cur."!cursor_pos"(rx418_pos)
- $P10 = rx418_cur."package_declarator"()
- unless $P10, rx418_fail
- rx418_cur."!mark_push"(0, -1, 0, $P10)
+ rx421_cur."!cursor_pos"(rx421_pos)
+ $P10 = rx421_cur."package_declarator"()
+ unless $P10, rx421_fail
+ rx421_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("package_declarator")
- rx418_pos = $P10."pos"()
+ rx421_pos = $P10."pos"()
# rx pass
- rx418_cur."!cursor_pass"(rx418_pos, "term:sym<package_declarator>")
- rx418_cur."!cursor_debug"("PASS ", "term:sym<package_declarator>", " at pos=", rx418_pos)
- .return (rx418_cur)
- rx418_fail:
+ rx421_cur."!cursor_pass"(rx421_pos, "term:sym<package_declarator>")
+ rx421_cur."!cursor_debug"("PASS ", "term:sym<package_declarator>", " at pos=", rx421_pos)
+ .return (rx421_cur)
+ rx421_fail:
.annotate "line", 4
- (rx418_rep, rx418_pos, $I10, $P10) = rx418_cur."!mark_fail"(0)
- lt rx418_pos, -1, rx418_done
- eq rx418_pos, -1, rx418_fail
+ (rx421_rep, rx421_pos, $I10, $P10) = rx421_cur."!mark_fail"(0)
+ lt rx421_pos, -1, rx421_done
+ eq rx421_pos, -1, rx421_fail
jump $I10
- rx418_done:
- rx418_cur."!cursor_fail"()
- rx418_cur."!cursor_debug"("FAIL ", "term:sym<package_declarator>")
- .return (rx418_cur)
+ rx421_done:
+ rx421_cur."!cursor_fail"()
+ rx421_cur."!cursor_debug"("FAIL ", "term:sym<package_declarator>")
+ .return (rx421_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>" :subid("102_1267204702.05125") :method
+.sub "!PREFIX__term:sym<package_declarator>" :subid("102_1272816833.94956") :method
.annotate "line", 4
- $P420 = self."!PREFIX__!subrule"("package_declarator", "")
- new $P421, "ResizablePMCArray"
- push $P421, $P420
- .return ($P421)
+ $P423 = self."!PREFIX__!subrule"("package_declarator", "")
+ new $P424, "ResizablePMCArray"
+ push $P424, $P423
+ .return ($P424)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>" :subid("103_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<scope_declarator>" :subid("103_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx424_tgt
- .local int rx424_pos
- .local int rx424_off
- .local int rx424_eos
- .local int rx424_rep
- .local pmc rx424_cur
- (rx424_cur, rx424_pos, rx424_tgt) = self."!cursor_start"()
- rx424_cur."!cursor_debug"("START ", "term:sym<scope_declarator>")
- .lex unicode:"$\x{a2}", rx424_cur
+ .local string rx427_tgt
+ .local int rx427_pos
+ .local int rx427_off
+ .local int rx427_eos
+ .local int rx427_rep
+ .local pmc rx427_cur
+ (rx427_cur, rx427_pos, rx427_tgt) = self."!cursor_start"()
+ rx427_cur."!cursor_debug"("START ", "term:sym<scope_declarator>")
+ .lex unicode:"$\x{a2}", rx427_cur
.local pmc match
.lex "$/", match
- length rx424_eos, rx424_tgt
- set rx424_off, 0
- lt rx424_pos, 2, rx424_start
- sub rx424_off, rx424_pos, 1
- substr rx424_tgt, rx424_tgt, rx424_off
- rx424_start:
+ length rx427_eos, rx427_tgt
+ set rx427_off, 0
+ lt rx427_pos, 2, rx427_start
+ sub rx427_off, rx427_pos, 1
+ substr rx427_tgt, rx427_tgt, rx427_off
+ rx427_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan428_done
- goto rxscan428_scan
- rxscan428_loop:
- ($P10) = rx424_cur."from"()
+ ne $I10, -1, rxscan431_done
+ goto rxscan431_scan
+ rxscan431_loop:
+ ($P10) = rx427_cur."from"()
inc $P10
- set rx424_pos, $P10
- ge rx424_pos, rx424_eos, rxscan428_done
- rxscan428_scan:
- set_addr $I10, rxscan428_loop
- rx424_cur."!mark_push"(0, rx424_pos, $I10)
- rxscan428_done:
-.annotate "line", 220
+ set rx427_pos, $P10
+ ge rx427_pos, rx427_eos, rxscan431_done
+ rxscan431_scan:
+ set_addr $I10, rxscan431_loop
+ rx427_cur."!mark_push"(0, rx427_pos, $I10)
+ rxscan431_done:
+.annotate "line", 224
# rx subrule "scope_declarator" subtype=capture negate=
- rx424_cur."!cursor_pos"(rx424_pos)
- $P10 = rx424_cur."scope_declarator"()
- unless $P10, rx424_fail
- rx424_cur."!mark_push"(0, -1, 0, $P10)
+ rx427_cur."!cursor_pos"(rx427_pos)
+ $P10 = rx427_cur."scope_declarator"()
+ unless $P10, rx427_fail
+ rx427_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("scope_declarator")
- rx424_pos = $P10."pos"()
+ rx427_pos = $P10."pos"()
# rx pass
- rx424_cur."!cursor_pass"(rx424_pos, "term:sym<scope_declarator>")
- rx424_cur."!cursor_debug"("PASS ", "term:sym<scope_declarator>", " at pos=", rx424_pos)
- .return (rx424_cur)
- rx424_fail:
+ rx427_cur."!cursor_pass"(rx427_pos, "term:sym<scope_declarator>")
+ rx427_cur."!cursor_debug"("PASS ", "term:sym<scope_declarator>", " at pos=", rx427_pos)
+ .return (rx427_cur)
+ rx427_fail:
.annotate "line", 4
- (rx424_rep, rx424_pos, $I10, $P10) = rx424_cur."!mark_fail"(0)
- lt rx424_pos, -1, rx424_done
- eq rx424_pos, -1, rx424_fail
+ (rx427_rep, rx427_pos, $I10, $P10) = rx427_cur."!mark_fail"(0)
+ lt rx427_pos, -1, rx427_done
+ eq rx427_pos, -1, rx427_fail
jump $I10
- rx424_done:
- rx424_cur."!cursor_fail"()
- rx424_cur."!cursor_debug"("FAIL ", "term:sym<scope_declarator>")
- .return (rx424_cur)
+ rx427_done:
+ rx427_cur."!cursor_fail"()
+ rx427_cur."!cursor_debug"("FAIL ", "term:sym<scope_declarator>")
+ .return (rx427_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>" :subid("104_1267204702.05125") :method
+.sub "!PREFIX__term:sym<scope_declarator>" :subid("104_1272816833.94956") :method
.annotate "line", 4
- $P426 = self."!PREFIX__!subrule"("scope_declarator", "")
- new $P427, "ResizablePMCArray"
- push $P427, $P426
- .return ($P427)
+ $P429 = self."!PREFIX__!subrule"("scope_declarator", "")
+ new $P430, "ResizablePMCArray"
+ push $P430, $P429
+ .return ($P430)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>" :subid("105_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<routine_declarator>" :subid("105_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx430_tgt
- .local int rx430_pos
- .local int rx430_off
- .local int rx430_eos
- .local int rx430_rep
- .local pmc rx430_cur
- (rx430_cur, rx430_pos, rx430_tgt) = self."!cursor_start"()
- rx430_cur."!cursor_debug"("START ", "term:sym<routine_declarator>")
- .lex unicode:"$\x{a2}", rx430_cur
+ .local string rx433_tgt
+ .local int rx433_pos
+ .local int rx433_off
+ .local int rx433_eos
+ .local int rx433_rep
+ .local pmc rx433_cur
+ (rx433_cur, rx433_pos, rx433_tgt) = self."!cursor_start"()
+ rx433_cur."!cursor_debug"("START ", "term:sym<routine_declarator>")
+ .lex unicode:"$\x{a2}", rx433_cur
.local pmc match
.lex "$/", match
- length rx430_eos, rx430_tgt
- set rx430_off, 0
- lt rx430_pos, 2, rx430_start
- sub rx430_off, rx430_pos, 1
- substr rx430_tgt, rx430_tgt, rx430_off
- rx430_start:
+ length rx433_eos, rx433_tgt
+ set rx433_off, 0
+ lt rx433_pos, 2, rx433_start
+ sub rx433_off, rx433_pos, 1
+ substr rx433_tgt, rx433_tgt, rx433_off
+ rx433_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan434_done
- goto rxscan434_scan
- rxscan434_loop:
- ($P10) = rx430_cur."from"()
+ ne $I10, -1, rxscan437_done
+ goto rxscan437_scan
+ rxscan437_loop:
+ ($P10) = rx433_cur."from"()
inc $P10
- set rx430_pos, $P10
- ge rx430_pos, rx430_eos, rxscan434_done
- rxscan434_scan:
- set_addr $I10, rxscan434_loop
- rx430_cur."!mark_push"(0, rx430_pos, $I10)
- rxscan434_done:
-.annotate "line", 221
+ set rx433_pos, $P10
+ ge rx433_pos, rx433_eos, rxscan437_done
+ rxscan437_scan:
+ set_addr $I10, rxscan437_loop
+ rx433_cur."!mark_push"(0, rx433_pos, $I10)
+ rxscan437_done:
+.annotate "line", 225
# rx subrule "routine_declarator" subtype=capture negate=
- rx430_cur."!cursor_pos"(rx430_pos)
- $P10 = rx430_cur."routine_declarator"()
- unless $P10, rx430_fail
- rx430_cur."!mark_push"(0, -1, 0, $P10)
+ rx433_cur."!cursor_pos"(rx433_pos)
+ $P10 = rx433_cur."routine_declarator"()
+ unless $P10, rx433_fail
+ rx433_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("routine_declarator")
- rx430_pos = $P10."pos"()
+ rx433_pos = $P10."pos"()
# rx pass
- rx430_cur."!cursor_pass"(rx430_pos, "term:sym<routine_declarator>")
- rx430_cur."!cursor_debug"("PASS ", "term:sym<routine_declarator>", " at pos=", rx430_pos)
- .return (rx430_cur)
- rx430_fail:
+ rx433_cur."!cursor_pass"(rx433_pos, "term:sym<routine_declarator>")
+ rx433_cur."!cursor_debug"("PASS ", "term:sym<routine_declarator>", " at pos=", rx433_pos)
+ .return (rx433_cur)
+ rx433_fail:
.annotate "line", 4
- (rx430_rep, rx430_pos, $I10, $P10) = rx430_cur."!mark_fail"(0)
- lt rx430_pos, -1, rx430_done
- eq rx430_pos, -1, rx430_fail
+ (rx433_rep, rx433_pos, $I10, $P10) = rx433_cur."!mark_fail"(0)
+ lt rx433_pos, -1, rx433_done
+ eq rx433_pos, -1, rx433_fail
jump $I10
- rx430_done:
- rx430_cur."!cursor_fail"()
- rx430_cur."!cursor_debug"("FAIL ", "term:sym<routine_declarator>")
- .return (rx430_cur)
+ rx433_done:
+ rx433_cur."!cursor_fail"()
+ rx433_cur."!cursor_debug"("FAIL ", "term:sym<routine_declarator>")
+ .return (rx433_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>" :subid("106_1267204702.05125") :method
+.sub "!PREFIX__term:sym<routine_declarator>" :subid("106_1272816833.94956") :method
.annotate "line", 4
- $P432 = self."!PREFIX__!subrule"("routine_declarator", "")
- new $P433, "ResizablePMCArray"
- push $P433, $P432
- .return ($P433)
+ $P435 = self."!PREFIX__!subrule"("routine_declarator", "")
+ new $P436, "ResizablePMCArray"
+ push $P436, $P435
+ .return ($P436)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>" :subid("107_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<regex_declarator>" :subid("107_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx436_tgt
- .local int rx436_pos
- .local int rx436_off
- .local int rx436_eos
- .local int rx436_rep
- .local pmc rx436_cur
- (rx436_cur, rx436_pos, rx436_tgt) = self."!cursor_start"()
- rx436_cur."!cursor_debug"("START ", "term:sym<regex_declarator>")
- .lex unicode:"$\x{a2}", rx436_cur
+ .local string rx439_tgt
+ .local int rx439_pos
+ .local int rx439_off
+ .local int rx439_eos
+ .local int rx439_rep
+ .local pmc rx439_cur
+ (rx439_cur, rx439_pos, rx439_tgt) = self."!cursor_start"()
+ rx439_cur."!cursor_debug"("START ", "term:sym<regex_declarator>")
+ .lex unicode:"$\x{a2}", rx439_cur
.local pmc match
.lex "$/", match
- length rx436_eos, rx436_tgt
- set rx436_off, 0
- lt rx436_pos, 2, rx436_start
- sub rx436_off, rx436_pos, 1
- substr rx436_tgt, rx436_tgt, rx436_off
- rx436_start:
+ length rx439_eos, rx439_tgt
+ set rx439_off, 0
+ lt rx439_pos, 2, rx439_start
+ sub rx439_off, rx439_pos, 1
+ substr rx439_tgt, rx439_tgt, rx439_off
+ rx439_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan440_done
- goto rxscan440_scan
- rxscan440_loop:
- ($P10) = rx436_cur."from"()
+ ne $I10, -1, rxscan443_done
+ goto rxscan443_scan
+ rxscan443_loop:
+ ($P10) = rx439_cur."from"()
inc $P10
- set rx436_pos, $P10
- ge rx436_pos, rx436_eos, rxscan440_done
- rxscan440_scan:
- set_addr $I10, rxscan440_loop
- rx436_cur."!mark_push"(0, rx436_pos, $I10)
- rxscan440_done:
-.annotate "line", 222
+ set rx439_pos, $P10
+ ge rx439_pos, rx439_eos, rxscan443_done
+ rxscan443_scan:
+ set_addr $I10, rxscan443_loop
+ rx439_cur."!mark_push"(0, rx439_pos, $I10)
+ rxscan443_done:
+.annotate "line", 226
# rx subrule "regex_declarator" subtype=capture negate=
- rx436_cur."!cursor_pos"(rx436_pos)
- $P10 = rx436_cur."regex_declarator"()
- unless $P10, rx436_fail
- rx436_cur."!mark_push"(0, -1, 0, $P10)
+ rx439_cur."!cursor_pos"(rx439_pos)
+ $P10 = rx439_cur."regex_declarator"()
+ unless $P10, rx439_fail
+ rx439_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("regex_declarator")
- rx436_pos = $P10."pos"()
+ rx439_pos = $P10."pos"()
# rx pass
- rx436_cur."!cursor_pass"(rx436_pos, "term:sym<regex_declarator>")
- rx436_cur."!cursor_debug"("PASS ", "term:sym<regex_declarator>", " at pos=", rx436_pos)
- .return (rx436_cur)
- rx436_fail:
+ rx439_cur."!cursor_pass"(rx439_pos, "term:sym<regex_declarator>")
+ rx439_cur."!cursor_debug"("PASS ", "term:sym<regex_declarator>", " at pos=", rx439_pos)
+ .return (rx439_cur)
+ rx439_fail:
.annotate "line", 4
- (rx436_rep, rx436_pos, $I10, $P10) = rx436_cur."!mark_fail"(0)
- lt rx436_pos, -1, rx436_done
- eq rx436_pos, -1, rx436_fail
+ (rx439_rep, rx439_pos, $I10, $P10) = rx439_cur."!mark_fail"(0)
+ lt rx439_pos, -1, rx439_done
+ eq rx439_pos, -1, rx439_fail
jump $I10
- rx436_done:
- rx436_cur."!cursor_fail"()
- rx436_cur."!cursor_debug"("FAIL ", "term:sym<regex_declarator>")
- .return (rx436_cur)
+ rx439_done:
+ rx439_cur."!cursor_fail"()
+ rx439_cur."!cursor_debug"("FAIL ", "term:sym<regex_declarator>")
+ .return (rx439_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>" :subid("108_1267204702.05125") :method
+.sub "!PREFIX__term:sym<regex_declarator>" :subid("108_1272816833.94956") :method
.annotate "line", 4
- $P438 = self."!PREFIX__!subrule"("regex_declarator", "")
- new $P439, "ResizablePMCArray"
- push $P439, $P438
- .return ($P439)
+ $P441 = self."!PREFIX__!subrule"("regex_declarator", "")
+ new $P442, "ResizablePMCArray"
+ push $P442, $P441
+ .return ($P442)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>" :subid("109_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<statement_prefix>" :subid("109_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx442_tgt
- .local int rx442_pos
- .local int rx442_off
- .local int rx442_eos
- .local int rx442_rep
- .local pmc rx442_cur
- (rx442_cur, rx442_pos, rx442_tgt) = self."!cursor_start"()
- rx442_cur."!cursor_debug"("START ", "term:sym<statement_prefix>")
- .lex unicode:"$\x{a2}", rx442_cur
+ .local string rx445_tgt
+ .local int rx445_pos
+ .local int rx445_off
+ .local int rx445_eos
+ .local int rx445_rep
+ .local pmc rx445_cur
+ (rx445_cur, rx445_pos, rx445_tgt) = self."!cursor_start"()
+ rx445_cur."!cursor_debug"("START ", "term:sym<statement_prefix>")
+ .lex unicode:"$\x{a2}", rx445_cur
.local pmc match
.lex "$/", match
- length rx442_eos, rx442_tgt
- set rx442_off, 0
- lt rx442_pos, 2, rx442_start
- sub rx442_off, rx442_pos, 1
- substr rx442_tgt, rx442_tgt, rx442_off
- rx442_start:
+ length rx445_eos, rx445_tgt
+ set rx445_off, 0
+ lt rx445_pos, 2, rx445_start
+ sub rx445_off, rx445_pos, 1
+ substr rx445_tgt, rx445_tgt, rx445_off
+ rx445_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan446_done
- goto rxscan446_scan
- rxscan446_loop:
- ($P10) = rx442_cur."from"()
+ ne $I10, -1, rxscan449_done
+ goto rxscan449_scan
+ rxscan449_loop:
+ ($P10) = rx445_cur."from"()
inc $P10
- set rx442_pos, $P10
- ge rx442_pos, rx442_eos, rxscan446_done
- rxscan446_scan:
- set_addr $I10, rxscan446_loop
- rx442_cur."!mark_push"(0, rx442_pos, $I10)
- rxscan446_done:
-.annotate "line", 223
+ set rx445_pos, $P10
+ ge rx445_pos, rx445_eos, rxscan449_done
+ rxscan449_scan:
+ set_addr $I10, rxscan449_loop
+ rx445_cur."!mark_push"(0, rx445_pos, $I10)
+ rxscan449_done:
+.annotate "line", 227
# rx subrule "statement_prefix" subtype=capture negate=
- rx442_cur."!cursor_pos"(rx442_pos)
- $P10 = rx442_cur."statement_prefix"()
- unless $P10, rx442_fail
- rx442_cur."!mark_push"(0, -1, 0, $P10)
+ rx445_cur."!cursor_pos"(rx445_pos)
+ $P10 = rx445_cur."statement_prefix"()
+ unless $P10, rx445_fail
+ rx445_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement_prefix")
- rx442_pos = $P10."pos"()
+ rx445_pos = $P10."pos"()
# rx pass
- rx442_cur."!cursor_pass"(rx442_pos, "term:sym<statement_prefix>")
- rx442_cur."!cursor_debug"("PASS ", "term:sym<statement_prefix>", " at pos=", rx442_pos)
- .return (rx442_cur)
- rx442_fail:
+ rx445_cur."!cursor_pass"(rx445_pos, "term:sym<statement_prefix>")
+ rx445_cur."!cursor_debug"("PASS ", "term:sym<statement_prefix>", " at pos=", rx445_pos)
+ .return (rx445_cur)
+ rx445_fail:
.annotate "line", 4
- (rx442_rep, rx442_pos, $I10, $P10) = rx442_cur."!mark_fail"(0)
- lt rx442_pos, -1, rx442_done
- eq rx442_pos, -1, rx442_fail
+ (rx445_rep, rx445_pos, $I10, $P10) = rx445_cur."!mark_fail"(0)
+ lt rx445_pos, -1, rx445_done
+ eq rx445_pos, -1, rx445_fail
jump $I10
- rx442_done:
- rx442_cur."!cursor_fail"()
- rx442_cur."!cursor_debug"("FAIL ", "term:sym<statement_prefix>")
- .return (rx442_cur)
+ rx445_done:
+ rx445_cur."!cursor_fail"()
+ rx445_cur."!cursor_debug"("FAIL ", "term:sym<statement_prefix>")
+ .return (rx445_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>" :subid("110_1267204702.05125") :method
+.sub "!PREFIX__term:sym<statement_prefix>" :subid("110_1272816833.94956") :method
.annotate "line", 4
- $P444 = self."!PREFIX__!subrule"("statement_prefix", "")
- new $P445, "ResizablePMCArray"
- push $P445, $P444
- .return ($P445)
+ $P447 = self."!PREFIX__!subrule"("statement_prefix", "")
+ new $P448, "ResizablePMCArray"
+ push $P448, $P447
+ .return ($P448)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>" :subid("111_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<lambda>" :subid("111_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx448_tgt
- .local int rx448_pos
- .local int rx448_off
- .local int rx448_eos
- .local int rx448_rep
- .local pmc rx448_cur
- (rx448_cur, rx448_pos, rx448_tgt) = self."!cursor_start"()
- rx448_cur."!cursor_debug"("START ", "term:sym<lambda>")
- .lex unicode:"$\x{a2}", rx448_cur
+ .local string rx451_tgt
+ .local int rx451_pos
+ .local int rx451_off
+ .local int rx451_eos
+ .local int rx451_rep
+ .local pmc rx451_cur
+ (rx451_cur, rx451_pos, rx451_tgt) = self."!cursor_start"()
+ rx451_cur."!cursor_debug"("START ", "term:sym<lambda>")
+ .lex unicode:"$\x{a2}", rx451_cur
.local pmc match
.lex "$/", match
- length rx448_eos, rx448_tgt
- set rx448_off, 0
- lt rx448_pos, 2, rx448_start
- sub rx448_off, rx448_pos, 1
- substr rx448_tgt, rx448_tgt, rx448_off
- rx448_start:
+ length rx451_eos, rx451_tgt
+ set rx451_off, 0
+ lt rx451_pos, 2, rx451_start
+ sub rx451_off, rx451_pos, 1
+ substr rx451_tgt, rx451_tgt, rx451_off
+ rx451_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan451_done
- goto rxscan451_scan
- rxscan451_loop:
- ($P10) = rx448_cur."from"()
+ ne $I10, -1, rxscan454_done
+ goto rxscan454_scan
+ rxscan454_loop:
+ ($P10) = rx451_cur."from"()
inc $P10
- set rx448_pos, $P10
- ge rx448_pos, rx448_eos, rxscan451_done
- rxscan451_scan:
- set_addr $I10, rxscan451_loop
- rx448_cur."!mark_push"(0, rx448_pos, $I10)
- rxscan451_done:
-.annotate "line", 224
+ set rx451_pos, $P10
+ ge rx451_pos, rx451_eos, rxscan454_done
+ rxscan454_scan:
+ set_addr $I10, rxscan454_loop
+ rx451_cur."!mark_push"(0, rx451_pos, $I10)
+ rxscan454_done:
+.annotate "line", 228
# rx subrule "lambda" subtype=zerowidth negate=
- rx448_cur."!cursor_pos"(rx448_pos)
- $P10 = rx448_cur."lambda"()
- unless $P10, rx448_fail
+ rx451_cur."!cursor_pos"(rx451_pos)
+ $P10 = rx451_cur."lambda"()
+ unless $P10, rx451_fail
# rx subrule "pblock" subtype=capture negate=
- rx448_cur."!cursor_pos"(rx448_pos)
- $P10 = rx448_cur."pblock"()
- unless $P10, rx448_fail
- rx448_cur."!mark_push"(0, -1, 0, $P10)
+ rx451_cur."!cursor_pos"(rx451_pos)
+ $P10 = rx451_cur."pblock"()
+ unless $P10, rx451_fail
+ rx451_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("pblock")
- rx448_pos = $P10."pos"()
+ rx451_pos = $P10."pos"()
# rx pass
- rx448_cur."!cursor_pass"(rx448_pos, "term:sym<lambda>")
- rx448_cur."!cursor_debug"("PASS ", "term:sym<lambda>", " at pos=", rx448_pos)
- .return (rx448_cur)
- rx448_fail:
+ rx451_cur."!cursor_pass"(rx451_pos, "term:sym<lambda>")
+ rx451_cur."!cursor_debug"("PASS ", "term:sym<lambda>", " at pos=", rx451_pos)
+ .return (rx451_cur)
+ rx451_fail:
.annotate "line", 4
- (rx448_rep, rx448_pos, $I10, $P10) = rx448_cur."!mark_fail"(0)
- lt rx448_pos, -1, rx448_done
- eq rx448_pos, -1, rx448_fail
+ (rx451_rep, rx451_pos, $I10, $P10) = rx451_cur."!mark_fail"(0)
+ lt rx451_pos, -1, rx451_done
+ eq rx451_pos, -1, rx451_fail
jump $I10
- rx448_done:
- rx448_cur."!cursor_fail"()
- rx448_cur."!cursor_debug"("FAIL ", "term:sym<lambda>")
- .return (rx448_cur)
+ rx451_done:
+ rx451_cur."!cursor_fail"()
+ rx451_cur."!cursor_debug"("FAIL ", "term:sym<lambda>")
+ .return (rx451_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>" :subid("112_1267204702.05125") :method
+.sub "!PREFIX__term:sym<lambda>" :subid("112_1272816833.94956") :method
.annotate "line", 4
- new $P450, "ResizablePMCArray"
- push $P450, ""
- .return ($P450)
+ new $P453, "ResizablePMCArray"
+ push $P453, ""
+ .return ($P453)
.end
.namespace ["NQP";"Grammar"]
-.sub "fatarrow" :subid("113_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "fatarrow" :subid("113_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx453_tgt
- .local int rx453_pos
- .local int rx453_off
- .local int rx453_eos
- .local int rx453_rep
- .local pmc rx453_cur
- (rx453_cur, rx453_pos, rx453_tgt) = self."!cursor_start"()
- rx453_cur."!cursor_debug"("START ", "fatarrow")
- .lex unicode:"$\x{a2}", rx453_cur
+ .local string rx456_tgt
+ .local int rx456_pos
+ .local int rx456_off
+ .local int rx456_eos
+ .local int rx456_rep
+ .local pmc rx456_cur
+ (rx456_cur, rx456_pos, rx456_tgt) = self."!cursor_start"()
+ rx456_cur."!cursor_debug"("START ", "fatarrow")
+ .lex unicode:"$\x{a2}", rx456_cur
.local pmc match
.lex "$/", match
- length rx453_eos, rx453_tgt
- set rx453_off, 0
- lt rx453_pos, 2, rx453_start
- sub rx453_off, rx453_pos, 1
- substr rx453_tgt, rx453_tgt, rx453_off
- rx453_start:
+ length rx456_eos, rx456_tgt
+ set rx456_off, 0
+ lt rx456_pos, 2, rx456_start
+ sub rx456_off, rx456_pos, 1
+ substr rx456_tgt, rx456_tgt, rx456_off
+ rx456_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan457_done
- goto rxscan457_scan
- rxscan457_loop:
- ($P10) = rx453_cur."from"()
+ ne $I10, -1, rxscan460_done
+ goto rxscan460_scan
+ rxscan460_loop:
+ ($P10) = rx456_cur."from"()
inc $P10
- set rx453_pos, $P10
- ge rx453_pos, rx453_eos, rxscan457_done
- rxscan457_scan:
- set_addr $I10, rxscan457_loop
- rx453_cur."!mark_push"(0, rx453_pos, $I10)
- rxscan457_done:
-.annotate "line", 227
+ set rx456_pos, $P10
+ ge rx456_pos, rx456_eos, rxscan460_done
+ rxscan460_scan:
+ set_addr $I10, rxscan460_loop
+ rx456_cur."!mark_push"(0, rx456_pos, $I10)
+ rxscan460_done:
+.annotate "line", 231
# rx subrule "identifier" subtype=capture negate=
- rx453_cur."!cursor_pos"(rx453_pos)
- $P10 = rx453_cur."identifier"()
- unless $P10, rx453_fail
- rx453_cur."!mark_push"(0, -1, 0, $P10)
+ rx456_cur."!cursor_pos"(rx456_pos)
+ $P10 = rx456_cur."identifier"()
+ unless $P10, rx456_fail
+ rx456_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("key")
- rx453_pos = $P10."pos"()
- # rx rxquantr458 ** 0..*
- set_addr $I459, rxquantr458_done
- rx453_cur."!mark_push"(0, rx453_pos, $I459)
- rxquantr458_loop:
+ rx456_pos = $P10."pos"()
+ # rx rxquantr461 ** 0..*
+ set_addr $I462, rxquantr461_done
+ rx456_cur."!mark_push"(0, rx456_pos, $I462)
+ rxquantr461_loop:
# rx enumcharlist negate=0
- ge rx453_pos, rx453_eos, rx453_fail
- sub $I10, rx453_pos, rx453_off
- substr $S10, rx453_tgt, $I10, 1
+ ge rx456_pos, rx456_eos, rx456_fail
+ sub $I10, rx456_pos, rx456_off
+ substr $S10, rx456_tgt, $I10, 1
index $I11, unicode:"\t \x{a0}\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000", $S10
- lt $I11, 0, rx453_fail
- inc rx453_pos
- (rx453_rep) = rx453_cur."!mark_commit"($I459)
- rx453_cur."!mark_push"(rx453_rep, rx453_pos, $I459)
- goto rxquantr458_loop
- rxquantr458_done:
+ lt $I11, 0, rx456_fail
+ inc rx456_pos
+ (rx456_rep) = rx456_cur."!mark_commit"($I462)
+ rx456_cur."!mark_push"(rx456_rep, rx456_pos, $I462)
+ goto rxquantr461_loop
+ rxquantr461_done:
# rx literal "=>"
- add $I11, rx453_pos, 2
- gt $I11, rx453_eos, rx453_fail
- sub $I11, rx453_pos, rx453_off
- substr $S10, rx453_tgt, $I11, 2
- ne $S10, "=>", rx453_fail
- add rx453_pos, 2
- # rx subrule "ws" subtype=method negate=
- rx453_cur."!cursor_pos"(rx453_pos)
- $P10 = rx453_cur."ws"()
- unless $P10, rx453_fail
- rx453_pos = $P10."pos"()
+ add $I11, rx456_pos, 2
+ gt $I11, rx456_eos, rx456_fail
+ sub $I11, rx456_pos, rx456_off
+ substr $S10, rx456_tgt, $I11, 2
+ ne $S10, "=>", rx456_fail
+ add rx456_pos, 2
+ # rx subrule "ws" subtype=method negate=
+ rx456_cur."!cursor_pos"(rx456_pos)
+ $P10 = rx456_cur."ws"()
+ unless $P10, rx456_fail
+ rx456_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx453_cur."!cursor_pos"(rx453_pos)
- $P10 = rx453_cur."EXPR"("i=")
- unless $P10, rx453_fail
- rx453_cur."!mark_push"(0, -1, 0, $P10)
+ rx456_cur."!cursor_pos"(rx456_pos)
+ $P10 = rx456_cur."EXPR"("i=")
+ unless $P10, rx456_fail
+ rx456_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("val")
- rx453_pos = $P10."pos"()
-.annotate "line", 226
+ rx456_pos = $P10."pos"()
+.annotate "line", 230
# rx pass
- rx453_cur."!cursor_pass"(rx453_pos, "fatarrow")
- rx453_cur."!cursor_debug"("PASS ", "fatarrow", " at pos=", rx453_pos)
- .return (rx453_cur)
- rx453_fail:
+ rx456_cur."!cursor_pass"(rx456_pos, "fatarrow")
+ rx456_cur."!cursor_debug"("PASS ", "fatarrow", " at pos=", rx456_pos)
+ .return (rx456_cur)
+ rx456_fail:
.annotate "line", 4
- (rx453_rep, rx453_pos, $I10, $P10) = rx453_cur."!mark_fail"(0)
- lt rx453_pos, -1, rx453_done
- eq rx453_pos, -1, rx453_fail
+ (rx456_rep, rx456_pos, $I10, $P10) = rx456_cur."!mark_fail"(0)
+ lt rx456_pos, -1, rx456_done
+ eq rx456_pos, -1, rx456_fail
jump $I10
- rx453_done:
- rx453_cur."!cursor_fail"()
- rx453_cur."!cursor_debug"("FAIL ", "fatarrow")
- .return (rx453_cur)
+ rx456_done:
+ rx456_cur."!cursor_fail"()
+ rx456_cur."!cursor_debug"("FAIL ", "fatarrow")
+ .return (rx456_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow" :subid("114_1267204702.05125") :method
+.sub "!PREFIX__fatarrow" :subid("114_1272816833.94956") :method
.annotate "line", 4
- $P455 = self."!PREFIX__!subrule"("key", "")
- new $P456, "ResizablePMCArray"
- push $P456, $P455
- .return ($P456)
+ $P458 = self."!PREFIX__!subrule"("key", "")
+ new $P459, "ResizablePMCArray"
+ push $P459, $P458
+ .return ($P459)
.end
.namespace ["NQP";"Grammar"]
-.sub "colonpair" :subid("115_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "colonpair" :subid("115_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx461_tgt
- .local int rx461_pos
- .local int rx461_off
- .local int rx461_eos
- .local int rx461_rep
- .local pmc rx461_cur
- (rx461_cur, rx461_pos, rx461_tgt) = self."!cursor_start"()
- rx461_cur."!cursor_debug"("START ", "colonpair")
- rx461_cur."!cursor_caparray"("circumfix")
- .lex unicode:"$\x{a2}", rx461_cur
+ .local string rx464_tgt
+ .local int rx464_pos
+ .local int rx464_off
+ .local int rx464_eos
+ .local int rx464_rep
+ .local pmc rx464_cur
+ (rx464_cur, rx464_pos, rx464_tgt) = self."!cursor_start"()
+ rx464_cur."!cursor_debug"("START ", "colonpair")
+ rx464_cur."!cursor_caparray"("circumfix")
+ .lex unicode:"$\x{a2}", rx464_cur
.local pmc match
.lex "$/", match
- length rx461_eos, rx461_tgt
- set rx461_off, 0
- lt rx461_pos, 2, rx461_start
- sub rx461_off, rx461_pos, 1
- substr rx461_tgt, rx461_tgt, rx461_off
- rx461_start:
+ length rx464_eos, rx464_tgt
+ set rx464_off, 0
+ lt rx464_pos, 2, rx464_start
+ sub rx464_off, rx464_pos, 1
+ substr rx464_tgt, rx464_tgt, rx464_off
+ rx464_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan467_done
- goto rxscan467_scan
- rxscan467_loop:
- ($P10) = rx461_cur."from"()
+ ne $I10, -1, rxscan470_done
+ goto rxscan470_scan
+ rxscan470_loop:
+ ($P10) = rx464_cur."from"()
inc $P10
- set rx461_pos, $P10
- ge rx461_pos, rx461_eos, rxscan467_done
- rxscan467_scan:
- set_addr $I10, rxscan467_loop
- rx461_cur."!mark_push"(0, rx461_pos, $I10)
- rxscan467_done:
-.annotate "line", 231
+ set rx464_pos, $P10
+ ge rx464_pos, rx464_eos, rxscan470_done
+ rxscan470_scan:
+ set_addr $I10, rxscan470_loop
+ rx464_cur."!mark_push"(0, rx464_pos, $I10)
+ rxscan470_done:
+.annotate "line", 235
# rx literal ":"
- add $I11, rx461_pos, 1
- gt $I11, rx461_eos, rx461_fail
- sub $I11, rx461_pos, rx461_off
- substr $S10, rx461_tgt, $I11, 1
- ne $S10, ":", rx461_fail
- add rx461_pos, 1
- alt468_0:
-.annotate "line", 232
- set_addr $I10, alt468_1
- rx461_cur."!mark_push"(0, rx461_pos, $I10)
-.annotate "line", 233
+ add $I11, rx464_pos, 1
+ gt $I11, rx464_eos, rx464_fail
+ sub $I11, rx464_pos, rx464_off
+ substr $S10, rx464_tgt, $I11, 1
+ ne $S10, ":", rx464_fail
+ add rx464_pos, 1
+ alt471_0:
+.annotate "line", 236
+ set_addr $I10, alt471_1
+ rx464_cur."!mark_push"(0, rx464_pos, $I10)
+.annotate "line", 237
# rx subcapture "not"
- set_addr $I10, rxcap_469_fail
- rx461_cur."!mark_push"(0, rx461_pos, $I10)
+ set_addr $I10, rxcap_472_fail
+ rx464_cur."!mark_push"(0, rx464_pos, $I10)
# rx literal "!"
- add $I11, rx461_pos, 1
- gt $I11, rx461_eos, rx461_fail
- sub $I11, rx461_pos, rx461_off
- substr $S10, rx461_tgt, $I11, 1
- ne $S10, "!", rx461_fail
- add rx461_pos, 1
- set_addr $I10, rxcap_469_fail
- ($I12, $I11) = rx461_cur."!mark_peek"($I10)
- rx461_cur."!cursor_pos"($I11)
- ($P10) = rx461_cur."!cursor_start"()
- $P10."!cursor_pass"(rx461_pos, "")
- rx461_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx464_pos, 1
+ gt $I11, rx464_eos, rx464_fail
+ sub $I11, rx464_pos, rx464_off
+ substr $S10, rx464_tgt, $I11, 1
+ ne $S10, "!", rx464_fail
+ add rx464_pos, 1
+ set_addr $I10, rxcap_472_fail
+ ($I12, $I11) = rx464_cur."!mark_peek"($I10)
+ rx464_cur."!cursor_pos"($I11)
+ ($P10) = rx464_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx464_pos, "")
+ rx464_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("not")
- goto rxcap_469_done
- rxcap_469_fail:
- goto rx461_fail
- rxcap_469_done:
+ goto rxcap_472_done
+ rxcap_472_fail:
+ goto rx464_fail
+ rxcap_472_done:
# rx subrule "identifier" subtype=capture negate=
- rx461_cur."!cursor_pos"(rx461_pos)
- $P10 = rx461_cur."identifier"()
- unless $P10, rx461_fail
- rx461_cur."!mark_push"(0, -1, 0, $P10)
+ rx464_cur."!cursor_pos"(rx464_pos)
+ $P10 = rx464_cur."identifier"()
+ unless $P10, rx464_fail
+ rx464_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("identifier")
- rx461_pos = $P10."pos"()
- goto alt468_end
- alt468_1:
- set_addr $I10, alt468_2
- rx461_cur."!mark_push"(0, rx461_pos, $I10)
-.annotate "line", 234
+ rx464_pos = $P10."pos"()
+ goto alt471_end
+ alt471_1:
+ set_addr $I10, alt471_2
+ rx464_cur."!mark_push"(0, rx464_pos, $I10)
+.annotate "line", 238
# rx subrule "identifier" subtype=capture negate=
- rx461_cur."!cursor_pos"(rx461_pos)
- $P10 = rx461_cur."identifier"()
- unless $P10, rx461_fail
- rx461_cur."!mark_push"(0, -1, 0, $P10)
+ rx464_cur."!cursor_pos"(rx464_pos)
+ $P10 = rx464_cur."identifier"()
+ unless $P10, rx464_fail
+ rx464_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("identifier")
- rx461_pos = $P10."pos"()
- # rx rxquantr470 ** 0..1
- set_addr $I471, rxquantr470_done
- rx461_cur."!mark_push"(0, rx461_pos, $I471)
- rxquantr470_loop:
+ rx464_pos = $P10."pos"()
+ # rx rxquantr473 ** 0..1
+ set_addr $I474, rxquantr473_done
+ rx464_cur."!mark_push"(0, rx464_pos, $I474)
+ rxquantr473_loop:
# rx subrule "circumfix" subtype=capture negate=
- rx461_cur."!cursor_pos"(rx461_pos)
- $P10 = rx461_cur."circumfix"()
- unless $P10, rx461_fail
- rx461_cur."!mark_push"(0, -1, 0, $P10)
+ rx464_cur."!cursor_pos"(rx464_pos)
+ $P10 = rx464_cur."circumfix"()
+ unless $P10, rx464_fail
+ rx464_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("circumfix")
- rx461_pos = $P10."pos"()
- (rx461_rep) = rx461_cur."!mark_commit"($I471)
- rxquantr470_done:
- goto alt468_end
- alt468_2:
-.annotate "line", 235
+ rx464_pos = $P10."pos"()
+ (rx464_rep) = rx464_cur."!mark_commit"($I474)
+ rxquantr473_done:
+ goto alt471_end
+ alt471_2:
+.annotate "line", 239
# rx subrule "circumfix" subtype=capture negate=
- rx461_cur."!cursor_pos"(rx461_pos)
- $P10 = rx461_cur."circumfix"()
- unless $P10, rx461_fail
- rx461_cur."!mark_push"(0, -1, 0, $P10)
+ rx464_cur."!cursor_pos"(rx464_pos)
+ $P10 = rx464_cur."circumfix"()
+ unless $P10, rx464_fail
+ rx464_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("circumfix")
- rx461_pos = $P10."pos"()
- alt468_end:
-.annotate "line", 230
+ rx464_pos = $P10."pos"()
+ alt471_end:
+.annotate "line", 234
# rx pass
- rx461_cur."!cursor_pass"(rx461_pos, "colonpair")
- rx461_cur."!cursor_debug"("PASS ", "colonpair", " at pos=", rx461_pos)
- .return (rx461_cur)
- rx461_fail:
+ rx464_cur."!cursor_pass"(rx464_pos, "colonpair")
+ rx464_cur."!cursor_debug"("PASS ", "colonpair", " at pos=", rx464_pos)
+ .return (rx464_cur)
+ rx464_fail:
.annotate "line", 4
- (rx461_rep, rx461_pos, $I10, $P10) = rx461_cur."!mark_fail"(0)
- lt rx461_pos, -1, rx461_done
- eq rx461_pos, -1, rx461_fail
+ (rx464_rep, rx464_pos, $I10, $P10) = rx464_cur."!mark_fail"(0)
+ lt rx464_pos, -1, rx464_done
+ eq rx464_pos, -1, rx464_fail
jump $I10
- rx461_done:
- rx461_cur."!cursor_fail"()
- rx461_cur."!cursor_debug"("FAIL ", "colonpair")
- .return (rx461_cur)
+ rx464_done:
+ rx464_cur."!cursor_fail"()
+ rx464_cur."!cursor_debug"("FAIL ", "colonpair")
+ .return (rx464_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair" :subid("116_1267204702.05125") :method
+.sub "!PREFIX__colonpair" :subid("116_1272816833.94956") :method
.annotate "line", 4
- $P463 = self."!PREFIX__!subrule"("circumfix", ":")
- $P464 = self."!PREFIX__!subrule"("identifier", ":")
- $P465 = self."!PREFIX__!subrule"("identifier", ":!")
- new $P466, "ResizablePMCArray"
- push $P466, $P463
- push $P466, $P464
- push $P466, $P465
- .return ($P466)
+ $P466 = self."!PREFIX__!subrule"("circumfix", ":")
+ $P467 = self."!PREFIX__!subrule"("identifier", ":")
+ $P468 = self."!PREFIX__!subrule"("identifier", ":!")
+ new $P469, "ResizablePMCArray"
+ push $P469, $P466
+ push $P469, $P467
+ push $P469, $P468
+ .return ($P469)
.end
.namespace ["NQP";"Grammar"]
-.sub "variable" :subid("117_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "variable" :subid("117_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx473_tgt
- .local int rx473_pos
- .local int rx473_off
- .local int rx473_eos
- .local int rx473_rep
- .local pmc rx473_cur
- (rx473_cur, rx473_pos, rx473_tgt) = self."!cursor_start"()
- rx473_cur."!cursor_debug"("START ", "variable")
- rx473_cur."!cursor_caparray"("twigil")
- .lex unicode:"$\x{a2}", rx473_cur
+ .local string rx476_tgt
+ .local int rx476_pos
+ .local int rx476_off
+ .local int rx476_eos
+ .local int rx476_rep
+ .local pmc rx476_cur
+ (rx476_cur, rx476_pos, rx476_tgt) = self."!cursor_start"()
+ rx476_cur."!cursor_debug"("START ", "variable")
+ rx476_cur."!cursor_caparray"("twigil")
+ .lex unicode:"$\x{a2}", rx476_cur
.local pmc match
.lex "$/", match
- length rx473_eos, rx473_tgt
- set rx473_off, 0
- lt rx473_pos, 2, rx473_start
- sub rx473_off, rx473_pos, 1
- substr rx473_tgt, rx473_tgt, rx473_off
- rx473_start:
+ length rx476_eos, rx476_tgt
+ set rx476_off, 0
+ lt rx476_pos, 2, rx476_start
+ sub rx476_off, rx476_pos, 1
+ substr rx476_tgt, rx476_tgt, rx476_off
+ rx476_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan478_done
- goto rxscan478_scan
- rxscan478_loop:
- ($P10) = rx473_cur."from"()
+ ne $I10, -1, rxscan481_done
+ goto rxscan481_scan
+ rxscan481_loop:
+ ($P10) = rx476_cur."from"()
inc $P10
- set rx473_pos, $P10
- ge rx473_pos, rx473_eos, rxscan478_done
- rxscan478_scan:
- set_addr $I10, rxscan478_loop
- rx473_cur."!mark_push"(0, rx473_pos, $I10)
- rxscan478_done:
- alt479_0:
-.annotate "line", 239
- set_addr $I10, alt479_1
- rx473_cur."!mark_push"(0, rx473_pos, $I10)
-.annotate "line", 240
+ set rx476_pos, $P10
+ ge rx476_pos, rx476_eos, rxscan481_done
+ rxscan481_scan:
+ set_addr $I10, rxscan481_loop
+ rx476_cur."!mark_push"(0, rx476_pos, $I10)
+ rxscan481_done:
+ alt482_0:
+.annotate "line", 243
+ set_addr $I10, alt482_1
+ rx476_cur."!mark_push"(0, rx476_pos, $I10)
+.annotate "line", 244
# rx subrule "sigil" subtype=capture negate=
- rx473_cur."!cursor_pos"(rx473_pos)
- $P10 = rx473_cur."sigil"()
- unless $P10, rx473_fail
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ rx476_cur."!cursor_pos"(rx476_pos)
+ $P10 = rx476_cur."sigil"()
+ unless $P10, rx476_fail
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- rx473_pos = $P10."pos"()
- # rx rxquantr480 ** 0..1
- set_addr $I481, rxquantr480_done
- rx473_cur."!mark_push"(0, rx473_pos, $I481)
- rxquantr480_loop:
+ rx476_pos = $P10."pos"()
+ # rx rxquantr483 ** 0..1
+ set_addr $I484, rxquantr483_done
+ rx476_cur."!mark_push"(0, rx476_pos, $I484)
+ rxquantr483_loop:
# rx subrule "twigil" subtype=capture negate=
- rx473_cur."!cursor_pos"(rx473_pos)
- $P10 = rx473_cur."twigil"()
- unless $P10, rx473_fail
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ rx476_cur."!cursor_pos"(rx476_pos)
+ $P10 = rx476_cur."twigil"()
+ unless $P10, rx476_fail
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("twigil")
- rx473_pos = $P10."pos"()
- (rx473_rep) = rx473_cur."!mark_commit"($I481)
- rxquantr480_done:
+ rx476_pos = $P10."pos"()
+ (rx476_rep) = rx476_cur."!mark_commit"($I484)
+ rxquantr483_done:
# rx subrule "name" subtype=capture negate=
- rx473_cur."!cursor_pos"(rx473_pos)
- $P10 = rx473_cur."name"()
- unless $P10, rx473_fail
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ rx476_cur."!cursor_pos"(rx476_pos)
+ $P10 = rx476_cur."name"()
+ unless $P10, rx476_fail
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("desigilname")
- rx473_pos = $P10."pos"()
- goto alt479_end
- alt479_1:
- set_addr $I10, alt479_2
- rx473_cur."!mark_push"(0, rx473_pos, $I10)
-.annotate "line", 241
+ rx476_pos = $P10."pos"()
+ goto alt482_end
+ alt482_1:
+ set_addr $I10, alt482_2
+ rx476_cur."!mark_push"(0, rx476_pos, $I10)
+.annotate "line", 245
# rx subrule "sigil" subtype=capture negate=
- rx473_cur."!cursor_pos"(rx473_pos)
- $P10 = rx473_cur."sigil"()
- unless $P10, rx473_fail
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ rx476_cur."!cursor_pos"(rx476_pos)
+ $P10 = rx476_cur."sigil"()
+ unless $P10, rx476_fail
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- rx473_pos = $P10."pos"()
+ rx476_pos = $P10."pos"()
# rx enumcharlist negate=0 zerowidth
- ge rx473_pos, rx473_eos, rx473_fail
- sub $I10, rx473_pos, rx473_off
- substr $S10, rx473_tgt, $I10, 1
+ ge rx476_pos, rx476_eos, rx476_fail
+ sub $I10, rx476_pos, rx476_off
+ substr $S10, rx476_tgt, $I10, 1
index $I11, "<[", $S10
- lt $I11, 0, rx473_fail
+ lt $I11, 0, rx476_fail
# rx subrule "postcircumfix" subtype=capture negate=
- rx473_cur."!cursor_pos"(rx473_pos)
- $P10 = rx473_cur."postcircumfix"()
- unless $P10, rx473_fail
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ rx476_cur."!cursor_pos"(rx476_pos)
+ $P10 = rx476_cur."postcircumfix"()
+ unless $P10, rx476_fail
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("postcircumfix")
- rx473_pos = $P10."pos"()
- goto alt479_end
- alt479_2:
-.annotate "line", 242
+ rx476_pos = $P10."pos"()
+ goto alt482_end
+ alt482_2:
+.annotate "line", 246
# rx subcapture "sigil"
- set_addr $I10, rxcap_482_fail
- rx473_cur."!mark_push"(0, rx473_pos, $I10)
+ set_addr $I10, rxcap_485_fail
+ rx476_cur."!mark_push"(0, rx476_pos, $I10)
# rx literal "$"
- add $I11, rx473_pos, 1
- gt $I11, rx473_eos, rx473_fail
- sub $I11, rx473_pos, rx473_off
- substr $S10, rx473_tgt, $I11, 1
- ne $S10, "$", rx473_fail
- add rx473_pos, 1
- set_addr $I10, rxcap_482_fail
- ($I12, $I11) = rx473_cur."!mark_peek"($I10)
- rx473_cur."!cursor_pos"($I11)
- ($P10) = rx473_cur."!cursor_start"()
- $P10."!cursor_pass"(rx473_pos, "")
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx476_pos, 1
+ gt $I11, rx476_eos, rx476_fail
+ sub $I11, rx476_pos, rx476_off
+ substr $S10, rx476_tgt, $I11, 1
+ ne $S10, "$", rx476_fail
+ add rx476_pos, 1
+ set_addr $I10, rxcap_485_fail
+ ($I12, $I11) = rx476_cur."!mark_peek"($I10)
+ rx476_cur."!cursor_pos"($I11)
+ ($P10) = rx476_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx476_pos, "")
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- goto rxcap_482_done
- rxcap_482_fail:
- goto rx473_fail
- rxcap_482_done:
+ goto rxcap_485_done
+ rxcap_485_fail:
+ goto rx476_fail
+ rxcap_485_done:
# rx subcapture "desigilname"
- set_addr $I10, rxcap_483_fail
- rx473_cur."!mark_push"(0, rx473_pos, $I10)
+ set_addr $I10, rxcap_486_fail
+ rx476_cur."!mark_push"(0, rx476_pos, $I10)
# rx enumcharlist negate=0
- ge rx473_pos, rx473_eos, rx473_fail
- sub $I10, rx473_pos, rx473_off
- substr $S10, rx473_tgt, $I10, 1
+ ge rx476_pos, rx476_eos, rx476_fail
+ sub $I10, rx476_pos, rx476_off
+ substr $S10, rx476_tgt, $I10, 1
index $I11, "/_!", $S10
- lt $I11, 0, rx473_fail
- inc rx473_pos
- set_addr $I10, rxcap_483_fail
- ($I12, $I11) = rx473_cur."!mark_peek"($I10)
- rx473_cur."!cursor_pos"($I11)
- ($P10) = rx473_cur."!cursor_start"()
- $P10."!cursor_pass"(rx473_pos, "")
- rx473_cur."!mark_push"(0, -1, 0, $P10)
+ lt $I11, 0, rx476_fail
+ inc rx476_pos
+ set_addr $I10, rxcap_486_fail
+ ($I12, $I11) = rx476_cur."!mark_peek"($I10)
+ rx476_cur."!cursor_pos"($I11)
+ ($P10) = rx476_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx476_pos, "")
+ rx476_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("desigilname")
- goto rxcap_483_done
- rxcap_483_fail:
- goto rx473_fail
- rxcap_483_done:
- alt479_end:
-.annotate "line", 239
+ goto rxcap_486_done
+ rxcap_486_fail:
+ goto rx476_fail
+ rxcap_486_done:
+ alt482_end:
+.annotate "line", 243
# rx pass
- rx473_cur."!cursor_pass"(rx473_pos, "variable")
- rx473_cur."!cursor_debug"("PASS ", "variable", " at pos=", rx473_pos)
- .return (rx473_cur)
- rx473_fail:
+ rx476_cur."!cursor_pass"(rx476_pos, "variable")
+ rx476_cur."!cursor_debug"("PASS ", "variable", " at pos=", rx476_pos)
+ .return (rx476_cur)
+ rx476_fail:
.annotate "line", 4
- (rx473_rep, rx473_pos, $I10, $P10) = rx473_cur."!mark_fail"(0)
- lt rx473_pos, -1, rx473_done
- eq rx473_pos, -1, rx473_fail
+ (rx476_rep, rx476_pos, $I10, $P10) = rx476_cur."!mark_fail"(0)
+ lt rx476_pos, -1, rx476_done
+ eq rx476_pos, -1, rx476_fail
jump $I10
- rx473_done:
- rx473_cur."!cursor_fail"()
- rx473_cur."!cursor_debug"("FAIL ", "variable")
- .return (rx473_cur)
+ rx476_done:
+ rx476_cur."!cursor_fail"()
+ rx476_cur."!cursor_debug"("FAIL ", "variable")
+ .return (rx476_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable" :subid("118_1267204702.05125") :method
+.sub "!PREFIX__variable" :subid("118_1272816833.94956") :method
.annotate "line", 4
- $P475 = self."!PREFIX__!subrule"("sigil", "")
- $P476 = self."!PREFIX__!subrule"("sigil", "")
- new $P477, "ResizablePMCArray"
- push $P477, "$!"
- push $P477, "$_"
- push $P477, "$/"
- push $P477, $P475
- push $P477, $P476
- .return ($P477)
+ $P478 = self."!PREFIX__!subrule"("sigil", "")
+ $P479 = self."!PREFIX__!subrule"("sigil", "")
+ new $P480, "ResizablePMCArray"
+ push $P480, "$!"
+ push $P480, "$_"
+ push $P480, "$/"
+ push $P480, $P478
+ push $P480, $P479
+ .return ($P480)
.end
.namespace ["NQP";"Grammar"]
-.sub "sigil" :subid("119_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "sigil" :subid("119_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx485_tgt
- .local int rx485_pos
- .local int rx485_off
- .local int rx485_eos
- .local int rx485_rep
- .local pmc rx485_cur
- (rx485_cur, rx485_pos, rx485_tgt) = self."!cursor_start"()
- rx485_cur."!cursor_debug"("START ", "sigil")
- .lex unicode:"$\x{a2}", rx485_cur
+ .local string rx488_tgt
+ .local int rx488_pos
+ .local int rx488_off
+ .local int rx488_eos
+ .local int rx488_rep
+ .local pmc rx488_cur
+ (rx488_cur, rx488_pos, rx488_tgt) = self."!cursor_start"()
+ rx488_cur."!cursor_debug"("START ", "sigil")
+ .lex unicode:"$\x{a2}", rx488_cur
.local pmc match
.lex "$/", match
- length rx485_eos, rx485_tgt
- set rx485_off, 0
- lt rx485_pos, 2, rx485_start
- sub rx485_off, rx485_pos, 1
- substr rx485_tgt, rx485_tgt, rx485_off
- rx485_start:
+ length rx488_eos, rx488_tgt
+ set rx488_off, 0
+ lt rx488_pos, 2, rx488_start
+ sub rx488_off, rx488_pos, 1
+ substr rx488_tgt, rx488_tgt, rx488_off
+ rx488_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan488_done
- goto rxscan488_scan
- rxscan488_loop:
- ($P10) = rx485_cur."from"()
+ ne $I10, -1, rxscan491_done
+ goto rxscan491_scan
+ rxscan491_loop:
+ ($P10) = rx488_cur."from"()
inc $P10
- set rx485_pos, $P10
- ge rx485_pos, rx485_eos, rxscan488_done
- rxscan488_scan:
- set_addr $I10, rxscan488_loop
- rx485_cur."!mark_push"(0, rx485_pos, $I10)
- rxscan488_done:
-.annotate "line", 245
+ set rx488_pos, $P10
+ ge rx488_pos, rx488_eos, rxscan491_done
+ rxscan491_scan:
+ set_addr $I10, rxscan491_loop
+ rx488_cur."!mark_push"(0, rx488_pos, $I10)
+ rxscan491_done:
+.annotate "line", 249
# rx enumcharlist negate=0
- ge rx485_pos, rx485_eos, rx485_fail
- sub $I10, rx485_pos, rx485_off
- substr $S10, rx485_tgt, $I10, 1
+ ge rx488_pos, rx488_eos, rx488_fail
+ sub $I10, rx488_pos, rx488_off
+ substr $S10, rx488_tgt, $I10, 1
index $I11, "$@%&", $S10
- lt $I11, 0, rx485_fail
- inc rx485_pos
+ lt $I11, 0, rx488_fail
+ inc rx488_pos
# rx pass
- rx485_cur."!cursor_pass"(rx485_pos, "sigil")
- rx485_cur."!cursor_debug"("PASS ", "sigil", " at pos=", rx485_pos)
- .return (rx485_cur)
- rx485_fail:
+ rx488_cur."!cursor_pass"(rx488_pos, "sigil")
+ rx488_cur."!cursor_debug"("PASS ", "sigil", " at pos=", rx488_pos)
+ .return (rx488_cur)
+ rx488_fail:
.annotate "line", 4
- (rx485_rep, rx485_pos, $I10, $P10) = rx485_cur."!mark_fail"(0)
- lt rx485_pos, -1, rx485_done
- eq rx485_pos, -1, rx485_fail
+ (rx488_rep, rx488_pos, $I10, $P10) = rx488_cur."!mark_fail"(0)
+ lt rx488_pos, -1, rx488_done
+ eq rx488_pos, -1, rx488_fail
jump $I10
- rx485_done:
- rx485_cur."!cursor_fail"()
- rx485_cur."!cursor_debug"("FAIL ", "sigil")
- .return (rx485_cur)
+ rx488_done:
+ rx488_cur."!cursor_fail"()
+ rx488_cur."!cursor_debug"("FAIL ", "sigil")
+ .return (rx488_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil" :subid("120_1267204702.05125") :method
+.sub "!PREFIX__sigil" :subid("120_1272816833.94956") :method
.annotate "line", 4
- new $P487, "ResizablePMCArray"
- push $P487, "&"
- push $P487, "%"
- push $P487, "@"
- push $P487, "$"
- .return ($P487)
+ new $P490, "ResizablePMCArray"
+ push $P490, "&"
+ push $P490, "%"
+ push $P490, "@"
+ push $P490, "$"
+ .return ($P490)
.end
.namespace ["NQP";"Grammar"]
-.sub "twigil" :subid("121_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "twigil" :subid("121_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx490_tgt
- .local int rx490_pos
- .local int rx490_off
- .local int rx490_eos
- .local int rx490_rep
- .local pmc rx490_cur
- (rx490_cur, rx490_pos, rx490_tgt) = self."!cursor_start"()
- rx490_cur."!cursor_debug"("START ", "twigil")
- .lex unicode:"$\x{a2}", rx490_cur
+ .local string rx493_tgt
+ .local int rx493_pos
+ .local int rx493_off
+ .local int rx493_eos
+ .local int rx493_rep
+ .local pmc rx493_cur
+ (rx493_cur, rx493_pos, rx493_tgt) = self."!cursor_start"()
+ rx493_cur."!cursor_debug"("START ", "twigil")
+ .lex unicode:"$\x{a2}", rx493_cur
.local pmc match
.lex "$/", match
- length rx490_eos, rx490_tgt
- set rx490_off, 0
- lt rx490_pos, 2, rx490_start
- sub rx490_off, rx490_pos, 1
- substr rx490_tgt, rx490_tgt, rx490_off
- rx490_start:
+ length rx493_eos, rx493_tgt
+ set rx493_off, 0
+ lt rx493_pos, 2, rx493_start
+ sub rx493_off, rx493_pos, 1
+ substr rx493_tgt, rx493_tgt, rx493_off
+ rx493_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan493_done
- goto rxscan493_scan
- rxscan493_loop:
- ($P10) = rx490_cur."from"()
+ ne $I10, -1, rxscan496_done
+ goto rxscan496_scan
+ rxscan496_loop:
+ ($P10) = rx493_cur."from"()
inc $P10
- set rx490_pos, $P10
- ge rx490_pos, rx490_eos, rxscan493_done
- rxscan493_scan:
- set_addr $I10, rxscan493_loop
- rx490_cur."!mark_push"(0, rx490_pos, $I10)
- rxscan493_done:
-.annotate "line", 247
+ set rx493_pos, $P10
+ ge rx493_pos, rx493_eos, rxscan496_done
+ rxscan496_scan:
+ set_addr $I10, rxscan496_loop
+ rx493_cur."!mark_push"(0, rx493_pos, $I10)
+ rxscan496_done:
+.annotate "line", 251
# rx enumcharlist negate=0
- ge rx490_pos, rx490_eos, rx490_fail
- sub $I10, rx490_pos, rx490_off
- substr $S10, rx490_tgt, $I10, 1
+ ge rx493_pos, rx493_eos, rx493_fail
+ sub $I10, rx493_pos, rx493_off
+ substr $S10, rx493_tgt, $I10, 1
index $I11, "*!?", $S10
- lt $I11, 0, rx490_fail
- inc rx490_pos
+ lt $I11, 0, rx493_fail
+ inc rx493_pos
# rx pass
- rx490_cur."!cursor_pass"(rx490_pos, "twigil")
- rx490_cur."!cursor_debug"("PASS ", "twigil", " at pos=", rx490_pos)
- .return (rx490_cur)
- rx490_fail:
+ rx493_cur."!cursor_pass"(rx493_pos, "twigil")
+ rx493_cur."!cursor_debug"("PASS ", "twigil", " at pos=", rx493_pos)
+ .return (rx493_cur)
+ rx493_fail:
.annotate "line", 4
- (rx490_rep, rx490_pos, $I10, $P10) = rx490_cur."!mark_fail"(0)
- lt rx490_pos, -1, rx490_done
- eq rx490_pos, -1, rx490_fail
+ (rx493_rep, rx493_pos, $I10, $P10) = rx493_cur."!mark_fail"(0)
+ lt rx493_pos, -1, rx493_done
+ eq rx493_pos, -1, rx493_fail
jump $I10
- rx490_done:
- rx490_cur."!cursor_fail"()
- rx490_cur."!cursor_debug"("FAIL ", "twigil")
- .return (rx490_cur)
+ rx493_done:
+ rx493_cur."!cursor_fail"()
+ rx493_cur."!cursor_debug"("FAIL ", "twigil")
+ .return (rx493_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil" :subid("122_1267204702.05125") :method
+.sub "!PREFIX__twigil" :subid("122_1272816833.94956") :method
.annotate "line", 4
- new $P492, "ResizablePMCArray"
- push $P492, "?"
- push $P492, "!"
- push $P492, "*"
- .return ($P492)
+ new $P495, "ResizablePMCArray"
+ push $P495, "?"
+ push $P495, "!"
+ push $P495, "*"
+ .return ($P495)
.end
.namespace ["NQP";"Grammar"]
-.sub "package_declarator" :subid("123_1267204702.05125") :method
-.annotate "line", 249
- $P495 = self."!protoregex"("package_declarator")
- .return ($P495)
+.sub "package_declarator" :subid("123_1272816833.94956") :method
+.annotate "line", 253
+ $P498 = self."!protoregex"("package_declarator")
+ .return ($P498)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator" :subid("124_1267204702.05125") :method
-.annotate "line", 249
- $P497 = self."!PREFIX__!protoregex"("package_declarator")
- .return ($P497)
+.sub "!PREFIX__package_declarator" :subid("124_1272816833.94956") :method
+.annotate "line", 253
+ $P500 = self."!PREFIX__!protoregex"("package_declarator")
+ .return ($P500)
.end
.namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>" :subid("125_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "package_declarator:sym<module>" :subid("125_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx499_tgt
- .local int rx499_pos
- .local int rx499_off
- .local int rx499_eos
- .local int rx499_rep
- .local pmc rx499_cur
- (rx499_cur, rx499_pos, rx499_tgt) = self."!cursor_start"()
- rx499_cur."!cursor_debug"("START ", "package_declarator:sym<module>")
- .lex unicode:"$\x{a2}", rx499_cur
- .local pmc match
- .lex "$/", match
- length rx499_eos, rx499_tgt
- set rx499_off, 0
- lt rx499_pos, 2, rx499_start
- sub rx499_off, rx499_pos, 1
- substr rx499_tgt, rx499_tgt, rx499_off
- rx499_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan503_done
- goto rxscan503_scan
- rxscan503_loop:
- ($P10) = rx499_cur."from"()
- inc $P10
- set rx499_pos, $P10
- ge rx499_pos, rx499_eos, rxscan503_done
- rxscan503_scan:
- set_addr $I10, rxscan503_loop
- rx499_cur."!mark_push"(0, rx499_pos, $I10)
- rxscan503_done:
-.annotate "line", 250
+ .local string rx502_tgt
+ .local int rx502_pos
+ .local int rx502_off
+ .local int rx502_eos
+ .local int rx502_rep
+ .local pmc rx502_cur
+ (rx502_cur, rx502_pos, rx502_tgt) = self."!cursor_start"()
+ rx502_cur."!cursor_debug"("START ", "package_declarator:sym<module>")
+ .lex unicode:"$\x{a2}", rx502_cur
+ .local pmc match
+ .lex "$/", match
+ length rx502_eos, rx502_tgt
+ set rx502_off, 0
+ lt rx502_pos, 2, rx502_start
+ sub rx502_off, rx502_pos, 1
+ substr rx502_tgt, rx502_tgt, rx502_off
+ rx502_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan506_done
+ goto rxscan506_scan
+ rxscan506_loop:
+ ($P10) = rx502_cur."from"()
+ inc $P10
+ set rx502_pos, $P10
+ ge rx502_pos, rx502_eos, rxscan506_done
+ rxscan506_scan:
+ set_addr $I10, rxscan506_loop
+ rx502_cur."!mark_push"(0, rx502_pos, $I10)
+ rxscan506_done:
+.annotate "line", 254
# rx subcapture "sym"
- set_addr $I10, rxcap_504_fail
- rx499_cur."!mark_push"(0, rx499_pos, $I10)
+ set_addr $I10, rxcap_507_fail
+ rx502_cur."!mark_push"(0, rx502_pos, $I10)
# rx literal "module"
- add $I11, rx499_pos, 6
- gt $I11, rx499_eos, rx499_fail
- sub $I11, rx499_pos, rx499_off
- substr $S10, rx499_tgt, $I11, 6
- ne $S10, "module", rx499_fail
- add rx499_pos, 6
- set_addr $I10, rxcap_504_fail
- ($I12, $I11) = rx499_cur."!mark_peek"($I10)
- rx499_cur."!cursor_pos"($I11)
- ($P10) = rx499_cur."!cursor_start"()
- $P10."!cursor_pass"(rx499_pos, "")
- rx499_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx502_pos, 6
+ gt $I11, rx502_eos, rx502_fail
+ sub $I11, rx502_pos, rx502_off
+ substr $S10, rx502_tgt, $I11, 6
+ ne $S10, "module", rx502_fail
+ add rx502_pos, 6
+ set_addr $I10, rxcap_507_fail
+ ($I12, $I11) = rx502_cur."!mark_peek"($I10)
+ rx502_cur."!cursor_pos"($I11)
+ ($P10) = rx502_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx502_pos, "")
+ rx502_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_504_done
- rxcap_504_fail:
- goto rx499_fail
- rxcap_504_done:
+ goto rxcap_507_done
+ rxcap_507_fail:
+ goto rx502_fail
+ rxcap_507_done:
# rx subrule "package_def" subtype=capture negate=
- rx499_cur."!cursor_pos"(rx499_pos)
- $P10 = rx499_cur."package_def"()
- unless $P10, rx499_fail
- rx499_cur."!mark_push"(0, -1, 0, $P10)
+ rx502_cur."!cursor_pos"(rx502_pos)
+ $P10 = rx502_cur."package_def"()
+ unless $P10, rx502_fail
+ rx502_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("package_def")
- rx499_pos = $P10."pos"()
+ rx502_pos = $P10."pos"()
# rx pass
- rx499_cur."!cursor_pass"(rx499_pos, "package_declarator:sym<module>")
- rx499_cur."!cursor_debug"("PASS ", "package_declarator:sym<module>", " at pos=", rx499_pos)
- .return (rx499_cur)
- rx499_fail:
+ rx502_cur."!cursor_pass"(rx502_pos, "package_declarator:sym<module>")
+ rx502_cur."!cursor_debug"("PASS ", "package_declarator:sym<module>", " at pos=", rx502_pos)
+ .return (rx502_cur)
+ rx502_fail:
.annotate "line", 4
- (rx499_rep, rx499_pos, $I10, $P10) = rx499_cur."!mark_fail"(0)
- lt rx499_pos, -1, rx499_done
- eq rx499_pos, -1, rx499_fail
+ (rx502_rep, rx502_pos, $I10, $P10) = rx502_cur."!mark_fail"(0)
+ lt rx502_pos, -1, rx502_done
+ eq rx502_pos, -1, rx502_fail
jump $I10
- rx499_done:
- rx499_cur."!cursor_fail"()
- rx499_cur."!cursor_debug"("FAIL ", "package_declarator:sym<module>")
- .return (rx499_cur)
+ rx502_done:
+ rx502_cur."!cursor_fail"()
+ rx502_cur."!cursor_debug"("FAIL ", "package_declarator:sym<module>")
+ .return (rx502_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>" :subid("126_1267204702.05125") :method
+.sub "!PREFIX__package_declarator:sym<module>" :subid("126_1272816833.94956") :method
.annotate "line", 4
- $P501 = self."!PREFIX__!subrule"("package_def", "module")
- new $P502, "ResizablePMCArray"
- push $P502, $P501
- .return ($P502)
+ $P504 = self."!PREFIX__!subrule"("package_def", "module")
+ new $P505, "ResizablePMCArray"
+ push $P505, $P504
+ .return ($P505)
.end
.namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>" :subid("127_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "package_declarator:sym<class>" :subid("127_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx506_tgt
- .local int rx506_pos
- .local int rx506_off
- .local int rx506_eos
- .local int rx506_rep
- .local pmc rx506_cur
- (rx506_cur, rx506_pos, rx506_tgt) = self."!cursor_start"()
- rx506_cur."!cursor_debug"("START ", "package_declarator:sym<class>")
- .lex unicode:"$\x{a2}", rx506_cur
+ .local string rx509_tgt
+ .local int rx509_pos
+ .local int rx509_off
+ .local int rx509_eos
+ .local int rx509_rep
+ .local pmc rx509_cur
+ (rx509_cur, rx509_pos, rx509_tgt) = self."!cursor_start"()
+ rx509_cur."!cursor_debug"("START ", "package_declarator:sym<class>")
+ .lex unicode:"$\x{a2}", rx509_cur
.local pmc match
.lex "$/", match
- length rx506_eos, rx506_tgt
- set rx506_off, 0
- lt rx506_pos, 2, rx506_start
- sub rx506_off, rx506_pos, 1
- substr rx506_tgt, rx506_tgt, rx506_off
- rx506_start:
+ length rx509_eos, rx509_tgt
+ set rx509_off, 0
+ lt rx509_pos, 2, rx509_start
+ sub rx509_off, rx509_pos, 1
+ substr rx509_tgt, rx509_tgt, rx509_off
+ rx509_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan511_done
- goto rxscan511_scan
- rxscan511_loop:
- ($P10) = rx506_cur."from"()
+ ne $I10, -1, rxscan514_done
+ goto rxscan514_scan
+ rxscan514_loop:
+ ($P10) = rx509_cur."from"()
inc $P10
- set rx506_pos, $P10
- ge rx506_pos, rx506_eos, rxscan511_done
- rxscan511_scan:
- set_addr $I10, rxscan511_loop
- rx506_cur."!mark_push"(0, rx506_pos, $I10)
- rxscan511_done:
-.annotate "line", 251
+ set rx509_pos, $P10
+ ge rx509_pos, rx509_eos, rxscan514_done
+ rxscan514_scan:
+ set_addr $I10, rxscan514_loop
+ rx509_cur."!mark_push"(0, rx509_pos, $I10)
+ rxscan514_done:
+.annotate "line", 255
# rx subcapture "sym"
- set_addr $I10, rxcap_513_fail
- rx506_cur."!mark_push"(0, rx506_pos, $I10)
- alt512_0:
- set_addr $I10, alt512_1
- rx506_cur."!mark_push"(0, rx506_pos, $I10)
+ set_addr $I10, rxcap_516_fail
+ rx509_cur."!mark_push"(0, rx509_pos, $I10)
+ alt515_0:
+ set_addr $I10, alt515_1
+ rx509_cur."!mark_push"(0, rx509_pos, $I10)
# rx literal "class"
- add $I11, rx506_pos, 5
- gt $I11, rx506_eos, rx506_fail
- sub $I11, rx506_pos, rx506_off
- substr $S10, rx506_tgt, $I11, 5
- ne $S10, "class", rx506_fail
- add rx506_pos, 5
- goto alt512_end
- alt512_1:
+ add $I11, rx509_pos, 5
+ gt $I11, rx509_eos, rx509_fail
+ sub $I11, rx509_pos, rx509_off
+ substr $S10, rx509_tgt, $I11, 5
+ ne $S10, "class", rx509_fail
+ add rx509_pos, 5
+ goto alt515_end
+ alt515_1:
# rx literal "grammar"
- add $I11, rx506_pos, 7
- gt $I11, rx506_eos, rx506_fail
- sub $I11, rx506_pos, rx506_off
- substr $S10, rx506_tgt, $I11, 7
- ne $S10, "grammar", rx506_fail
- add rx506_pos, 7
- alt512_end:
- set_addr $I10, rxcap_513_fail
- ($I12, $I11) = rx506_cur."!mark_peek"($I10)
- rx506_cur."!cursor_pos"($I11)
- ($P10) = rx506_cur."!cursor_start"()
- $P10."!cursor_pass"(rx506_pos, "")
- rx506_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx509_pos, 7
+ gt $I11, rx509_eos, rx509_fail
+ sub $I11, rx509_pos, rx509_off
+ substr $S10, rx509_tgt, $I11, 7
+ ne $S10, "grammar", rx509_fail
+ add rx509_pos, 7
+ alt515_end:
+ set_addr $I10, rxcap_516_fail
+ ($I12, $I11) = rx509_cur."!mark_peek"($I10)
+ rx509_cur."!cursor_pos"($I11)
+ ($P10) = rx509_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx509_pos, "")
+ rx509_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_513_done
- rxcap_513_fail:
- goto rx506_fail
- rxcap_513_done:
+ goto rxcap_516_done
+ rxcap_516_fail:
+ goto rx509_fail
+ rxcap_516_done:
# rx subrule "package_def" subtype=capture negate=
- rx506_cur."!cursor_pos"(rx506_pos)
- $P10 = rx506_cur."package_def"()
- unless $P10, rx506_fail
- rx506_cur."!mark_push"(0, -1, 0, $P10)
+ rx509_cur."!cursor_pos"(rx509_pos)
+ $P10 = rx509_cur."package_def"()
+ unless $P10, rx509_fail
+ rx509_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("package_def")
- rx506_pos = $P10."pos"()
+ rx509_pos = $P10."pos"()
# rx pass
- rx506_cur."!cursor_pass"(rx506_pos, "package_declarator:sym<class>")
- rx506_cur."!cursor_debug"("PASS ", "package_declarator:sym<class>", " at pos=", rx506_pos)
- .return (rx506_cur)
- rx506_fail:
+ rx509_cur."!cursor_pass"(rx509_pos, "package_declarator:sym<class>")
+ rx509_cur."!cursor_debug"("PASS ", "package_declarator:sym<class>", " at pos=", rx509_pos)
+ .return (rx509_cur)
+ rx509_fail:
.annotate "line", 4
- (rx506_rep, rx506_pos, $I10, $P10) = rx506_cur."!mark_fail"(0)
- lt rx506_pos, -1, rx506_done
- eq rx506_pos, -1, rx506_fail
+ (rx509_rep, rx509_pos, $I10, $P10) = rx509_cur."!mark_fail"(0)
+ lt rx509_pos, -1, rx509_done
+ eq rx509_pos, -1, rx509_fail
jump $I10
- rx506_done:
- rx506_cur."!cursor_fail"()
- rx506_cur."!cursor_debug"("FAIL ", "package_declarator:sym<class>")
- .return (rx506_cur)
+ rx509_done:
+ rx509_cur."!cursor_fail"()
+ rx509_cur."!cursor_debug"("FAIL ", "package_declarator:sym<class>")
+ .return (rx509_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>" :subid("128_1267204702.05125") :method
+.sub "!PREFIX__package_declarator:sym<class>" :subid("128_1272816833.94956") :method
.annotate "line", 4
- $P508 = self."!PREFIX__!subrule"("package_def", "grammar")
- $P509 = self."!PREFIX__!subrule"("package_def", "class")
- new $P510, "ResizablePMCArray"
- push $P510, $P508
- push $P510, $P509
- .return ($P510)
+ $P511 = self."!PREFIX__!subrule"("package_def", "grammar")
+ $P512 = self."!PREFIX__!subrule"("package_def", "class")
+ new $P513, "ResizablePMCArray"
+ push $P513, $P511
+ push $P513, $P512
+ .return ($P513)
.end
.namespace ["NQP";"Grammar"]
-.sub "package_def" :subid("129_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "package_def" :subid("129_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx515_tgt
- .local int rx515_pos
- .local int rx515_off
- .local int rx515_eos
- .local int rx515_rep
- .local pmc rx515_cur
- (rx515_cur, rx515_pos, rx515_tgt) = self."!cursor_start"()
- rx515_cur."!cursor_debug"("START ", "package_def")
- rx515_cur."!cursor_caparray"("parent")
- .lex unicode:"$\x{a2}", rx515_cur
+ .local string rx518_tgt
+ .local int rx518_pos
+ .local int rx518_off
+ .local int rx518_eos
+ .local int rx518_rep
+ .local pmc rx518_cur
+ (rx518_cur, rx518_pos, rx518_tgt) = self."!cursor_start"()
+ rx518_cur."!cursor_debug"("START ", "package_def")
+ rx518_cur."!cursor_caparray"("parent")
+ .lex unicode:"$\x{a2}", rx518_cur
.local pmc match
.lex "$/", match
- length rx515_eos, rx515_tgt
- set rx515_off, 0
- lt rx515_pos, 2, rx515_start
- sub rx515_off, rx515_pos, 1
- substr rx515_tgt, rx515_tgt, rx515_off
- rx515_start:
+ length rx518_eos, rx518_tgt
+ set rx518_off, 0
+ lt rx518_pos, 2, rx518_start
+ sub rx518_off, rx518_pos, 1
+ substr rx518_tgt, rx518_tgt, rx518_off
+ rx518_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan518_done
- goto rxscan518_scan
- rxscan518_loop:
- ($P10) = rx515_cur."from"()
+ ne $I10, -1, rxscan521_done
+ goto rxscan521_scan
+ rxscan521_loop:
+ ($P10) = rx518_cur."from"()
inc $P10
- set rx515_pos, $P10
- ge rx515_pos, rx515_eos, rxscan518_done
- rxscan518_scan:
- set_addr $I10, rxscan518_loop
- rx515_cur."!mark_push"(0, rx515_pos, $I10)
- rxscan518_done:
-.annotate "line", 253
+ set rx518_pos, $P10
+ ge rx518_pos, rx518_eos, rxscan521_done
+ rxscan521_scan:
+ set_addr $I10, rxscan521_loop
+ rx518_cur."!mark_push"(0, rx518_pos, $I10)
+ rxscan521_done:
+.annotate "line", 257
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
-.annotate "line", 254
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+.annotate "line", 258
# rx subrule "name" subtype=capture negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."name"()
- unless $P10, rx515_fail
- rx515_cur."!mark_push"(0, -1, 0, $P10)
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."name"()
+ unless $P10, rx518_fail
+ rx518_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("name")
- rx515_pos = $P10."pos"()
+ rx518_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
-.annotate "line", 255
- # rx rxquantr521 ** 0..1
- set_addr $I525, rxquantr521_done
- rx515_cur."!mark_push"(0, rx515_pos, $I525)
- rxquantr521_loop:
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+.annotate "line", 259
+ # rx rxquantr524 ** 0..1
+ set_addr $I528, rxquantr524_done
+ rx518_cur."!mark_push"(0, rx518_pos, $I528)
+ rxquantr524_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx literal "is"
- add $I11, rx515_pos, 2
- gt $I11, rx515_eos, rx515_fail
- sub $I11, rx515_pos, rx515_off
- substr $S10, rx515_tgt, $I11, 2
- ne $S10, "is", rx515_fail
- add rx515_pos, 2
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ add $I11, rx518_pos, 2
+ gt $I11, rx518_eos, rx518_fail
+ sub $I11, rx518_pos, rx518_off
+ substr $S10, rx518_tgt, $I11, 2
+ ne $S10, "is", rx518_fail
+ add rx518_pos, 2
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx subrule "name" subtype=capture negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."name"()
- unless $P10, rx515_fail
- rx515_cur."!mark_push"(0, -1, 0, $P10)
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."name"()
+ unless $P10, rx518_fail
+ rx518_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("parent")
- rx515_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- (rx515_rep) = rx515_cur."!mark_commit"($I525)
- rxquantr521_done:
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- alt527_0:
-.annotate "line", 256
- set_addr $I10, alt527_1
- rx515_cur."!mark_push"(0, rx515_pos, $I10)
-.annotate "line", 257
+ rx518_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ (rx518_rep) = rx518_cur."!mark_commit"($I528)
+ rxquantr524_done:
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ alt530_0:
+.annotate "line", 260
+ set_addr $I10, alt530_1
+ rx518_cur."!mark_push"(0, rx518_pos, $I10)
+.annotate "line", 261
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx literal ";"
- add $I11, rx515_pos, 1
- gt $I11, rx515_eos, rx515_fail
- sub $I11, rx515_pos, rx515_off
- substr $S10, rx515_tgt, $I11, 1
- ne $S10, ";", rx515_fail
- add rx515_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ add $I11, rx518_pos, 1
+ gt $I11, rx518_eos, rx518_fail
+ sub $I11, rx518_pos, rx518_off
+ substr $S10, rx518_tgt, $I11, 1
+ ne $S10, ";", rx518_fail
+ add rx518_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx subrule "comp_unit" subtype=capture negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."comp_unit"()
- unless $P10, rx515_fail
- rx515_cur."!mark_push"(0, -1, 0, $P10)
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."comp_unit"()
+ unless $P10, rx518_fail
+ rx518_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("comp_unit")
- rx515_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- goto alt527_end
- alt527_1:
- set_addr $I10, alt527_2
- rx515_cur."!mark_push"(0, rx515_pos, $I10)
-.annotate "line", 258
+ rx518_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ goto alt530_end
+ alt530_1:
+ set_addr $I10, alt530_2
+ rx518_cur."!mark_push"(0, rx518_pos, $I10)
+.annotate "line", 262
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx enumcharlist negate=0 zerowidth
- ge rx515_pos, rx515_eos, rx515_fail
- sub $I10, rx515_pos, rx515_off
- substr $S10, rx515_tgt, $I10, 1
+ ge rx518_pos, rx518_eos, rx518_fail
+ sub $I10, rx518_pos, rx518_off
+ substr $S10, rx518_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx515_fail
+ lt $I11, 0, rx518_fail
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx subrule "block" subtype=capture negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."block"()
- unless $P10, rx515_fail
- rx515_cur."!mark_push"(0, -1, 0, $P10)
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."block"()
+ unless $P10, rx518_fail
+ rx518_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx515_pos = $P10."pos"()
+ rx518_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- goto alt527_end
- alt527_2:
-.annotate "line", 259
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ goto alt530_end
+ alt530_2:
+.annotate "line", 263
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
# rx subrule "panic" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."panic"("Malformed package declaration")
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
- alt527_end:
-.annotate "line", 260
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."panic"("Malformed package declaration")
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+ alt530_end:
+.annotate "line", 264
# rx subrule "ws" subtype=method negate=
- rx515_cur."!cursor_pos"(rx515_pos)
- $P10 = rx515_cur."ws"()
- unless $P10, rx515_fail
- rx515_pos = $P10."pos"()
-.annotate "line", 253
+ rx518_cur."!cursor_pos"(rx518_pos)
+ $P10 = rx518_cur."ws"()
+ unless $P10, rx518_fail
+ rx518_pos = $P10."pos"()
+.annotate "line", 257
# rx pass
- rx515_cur."!cursor_pass"(rx515_pos, "package_def")
- rx515_cur."!cursor_debug"("PASS ", "package_def", " at pos=", rx515_pos)
- .return (rx515_cur)
- rx515_fail:
+ rx518_cur."!cursor_pass"(rx518_pos, "package_def")
+ rx518_cur."!cursor_debug"("PASS ", "package_def", " at pos=", rx518_pos)
+ .return (rx518_cur)
+ rx518_fail:
.annotate "line", 4
- (rx515_rep, rx515_pos, $I10, $P10) = rx515_cur."!mark_fail"(0)
- lt rx515_pos, -1, rx515_done
- eq rx515_pos, -1, rx515_fail
+ (rx518_rep, rx518_pos, $I10, $P10) = rx518_cur."!mark_fail"(0)
+ lt rx518_pos, -1, rx518_done
+ eq rx518_pos, -1, rx518_fail
jump $I10
- rx515_done:
- rx515_cur."!cursor_fail"()
- rx515_cur."!cursor_debug"("FAIL ", "package_def")
- .return (rx515_cur)
+ rx518_done:
+ rx518_cur."!cursor_fail"()
+ rx518_cur."!cursor_debug"("FAIL ", "package_def")
+ .return (rx518_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def" :subid("130_1267204702.05125") :method
+.sub "!PREFIX__package_def" :subid("130_1272816833.94956") :method
.annotate "line", 4
- new $P517, "ResizablePMCArray"
- push $P517, ""
- .return ($P517)
+ new $P520, "ResizablePMCArray"
+ push $P520, ""
+ .return ($P520)
.end
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator" :subid("131_1267204702.05125") :method
-.annotate "line", 263
- $P538 = self."!protoregex"("scope_declarator")
- .return ($P538)
+.sub "scope_declarator" :subid("131_1272816833.94956") :method
+.annotate "line", 267
+ $P541 = self."!protoregex"("scope_declarator")
+ .return ($P541)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator" :subid("132_1267204702.05125") :method
-.annotate "line", 263
- $P540 = self."!PREFIX__!protoregex"("scope_declarator")
- .return ($P540)
+.sub "!PREFIX__scope_declarator" :subid("132_1272816833.94956") :method
+.annotate "line", 267
+ $P543 = self."!PREFIX__!protoregex"("scope_declarator")
+ .return ($P543)
.end
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>" :subid("133_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "scope_declarator:sym<my>" :subid("133_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx542_tgt
- .local int rx542_pos
- .local int rx542_off
- .local int rx542_eos
- .local int rx542_rep
- .local pmc rx542_cur
- (rx542_cur, rx542_pos, rx542_tgt) = self."!cursor_start"()
- rx542_cur."!cursor_debug"("START ", "scope_declarator:sym<my>")
- .lex unicode:"$\x{a2}", rx542_cur
- .local pmc match
- .lex "$/", match
- length rx542_eos, rx542_tgt
- set rx542_off, 0
- lt rx542_pos, 2, rx542_start
- sub rx542_off, rx542_pos, 1
- substr rx542_tgt, rx542_tgt, rx542_off
- rx542_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan546_done
- goto rxscan546_scan
- rxscan546_loop:
- ($P10) = rx542_cur."from"()
- inc $P10
- set rx542_pos, $P10
- ge rx542_pos, rx542_eos, rxscan546_done
- rxscan546_scan:
- set_addr $I10, rxscan546_loop
- rx542_cur."!mark_push"(0, rx542_pos, $I10)
- rxscan546_done:
-.annotate "line", 264
+ .local string rx545_tgt
+ .local int rx545_pos
+ .local int rx545_off
+ .local int rx545_eos
+ .local int rx545_rep
+ .local pmc rx545_cur
+ (rx545_cur, rx545_pos, rx545_tgt) = self."!cursor_start"()
+ rx545_cur."!cursor_debug"("START ", "scope_declarator:sym<my>")
+ .lex unicode:"$\x{a2}", rx545_cur
+ .local pmc match
+ .lex "$/", match
+ length rx545_eos, rx545_tgt
+ set rx545_off, 0
+ lt rx545_pos, 2, rx545_start
+ sub rx545_off, rx545_pos, 1
+ substr rx545_tgt, rx545_tgt, rx545_off
+ rx545_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan549_done
+ goto rxscan549_scan
+ rxscan549_loop:
+ ($P10) = rx545_cur."from"()
+ inc $P10
+ set rx545_pos, $P10
+ ge rx545_pos, rx545_eos, rxscan549_done
+ rxscan549_scan:
+ set_addr $I10, rxscan549_loop
+ rx545_cur."!mark_push"(0, rx545_pos, $I10)
+ rxscan549_done:
+.annotate "line", 268
# rx subcapture "sym"
- set_addr $I10, rxcap_547_fail
- rx542_cur."!mark_push"(0, rx542_pos, $I10)
+ set_addr $I10, rxcap_550_fail
+ rx545_cur."!mark_push"(0, rx545_pos, $I10)
# rx literal "my"
- add $I11, rx542_pos, 2
- gt $I11, rx542_eos, rx542_fail
- sub $I11, rx542_pos, rx542_off
- substr $S10, rx542_tgt, $I11, 2
- ne $S10, "my", rx542_fail
- add rx542_pos, 2
- set_addr $I10, rxcap_547_fail
- ($I12, $I11) = rx542_cur."!mark_peek"($I10)
- rx542_cur."!cursor_pos"($I11)
- ($P10) = rx542_cur."!cursor_start"()
- $P10."!cursor_pass"(rx542_pos, "")
- rx542_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx545_pos, 2
+ gt $I11, rx545_eos, rx545_fail
+ sub $I11, rx545_pos, rx545_off
+ substr $S10, rx545_tgt, $I11, 2
+ ne $S10, "my", rx545_fail
+ add rx545_pos, 2
+ set_addr $I10, rxcap_550_fail
+ ($I12, $I11) = rx545_cur."!mark_peek"($I10)
+ rx545_cur."!cursor_pos"($I11)
+ ($P10) = rx545_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx545_pos, "")
+ rx545_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_547_done
- rxcap_547_fail:
- goto rx542_fail
- rxcap_547_done:
+ goto rxcap_550_done
+ rxcap_550_fail:
+ goto rx545_fail
+ rxcap_550_done:
# rx subrule "scoped" subtype=capture negate=
- rx542_cur."!cursor_pos"(rx542_pos)
- $P10 = rx542_cur."scoped"("my")
- unless $P10, rx542_fail
- rx542_cur."!mark_push"(0, -1, 0, $P10)
+ rx545_cur."!cursor_pos"(rx545_pos)
+ $P10 = rx545_cur."scoped"("my")
+ unless $P10, rx545_fail
+ rx545_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("scoped")
- rx542_pos = $P10."pos"()
+ rx545_pos = $P10."pos"()
# rx pass
- rx542_cur."!cursor_pass"(rx542_pos, "scope_declarator:sym<my>")
- rx542_cur."!cursor_debug"("PASS ", "scope_declarator:sym<my>", " at pos=", rx542_pos)
- .return (rx542_cur)
- rx542_fail:
+ rx545_cur."!cursor_pass"(rx545_pos, "scope_declarator:sym<my>")
+ rx545_cur."!cursor_debug"("PASS ", "scope_declarator:sym<my>", " at pos=", rx545_pos)
+ .return (rx545_cur)
+ rx545_fail:
.annotate "line", 4
- (rx542_rep, rx542_pos, $I10, $P10) = rx542_cur."!mark_fail"(0)
- lt rx542_pos, -1, rx542_done
- eq rx542_pos, -1, rx542_fail
+ (rx545_rep, rx545_pos, $I10, $P10) = rx545_cur."!mark_fail"(0)
+ lt rx545_pos, -1, rx545_done
+ eq rx545_pos, -1, rx545_fail
jump $I10
- rx542_done:
- rx542_cur."!cursor_fail"()
- rx542_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<my>")
- .return (rx542_cur)
+ rx545_done:
+ rx545_cur."!cursor_fail"()
+ rx545_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<my>")
+ .return (rx545_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>" :subid("134_1267204702.05125") :method
+.sub "!PREFIX__scope_declarator:sym<my>" :subid("134_1272816833.94956") :method
.annotate "line", 4
- $P544 = self."!PREFIX__!subrule"("scoped", "my")
- new $P545, "ResizablePMCArray"
- push $P545, $P544
- .return ($P545)
+ $P547 = self."!PREFIX__!subrule"("scoped", "my")
+ new $P548, "ResizablePMCArray"
+ push $P548, $P547
+ .return ($P548)
.end
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>" :subid("135_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "scope_declarator:sym<our>" :subid("135_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx549_tgt
- .local int rx549_pos
- .local int rx549_off
- .local int rx549_eos
- .local int rx549_rep
- .local pmc rx549_cur
- (rx549_cur, rx549_pos, rx549_tgt) = self."!cursor_start"()
- rx549_cur."!cursor_debug"("START ", "scope_declarator:sym<our>")
- .lex unicode:"$\x{a2}", rx549_cur
+ .local string rx552_tgt
+ .local int rx552_pos
+ .local int rx552_off
+ .local int rx552_eos
+ .local int rx552_rep
+ .local pmc rx552_cur
+ (rx552_cur, rx552_pos, rx552_tgt) = self."!cursor_start"()
+ rx552_cur."!cursor_debug"("START ", "scope_declarator:sym<our>")
+ .lex unicode:"$\x{a2}", rx552_cur
.local pmc match
.lex "$/", match
- length rx549_eos, rx549_tgt
- set rx549_off, 0
- lt rx549_pos, 2, rx549_start
- sub rx549_off, rx549_pos, 1
- substr rx549_tgt, rx549_tgt, rx549_off
- rx549_start:
+ length rx552_eos, rx552_tgt
+ set rx552_off, 0
+ lt rx552_pos, 2, rx552_start
+ sub rx552_off, rx552_pos, 1
+ substr rx552_tgt, rx552_tgt, rx552_off
+ rx552_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan553_done
- goto rxscan553_scan
- rxscan553_loop:
- ($P10) = rx549_cur."from"()
+ ne $I10, -1, rxscan556_done
+ goto rxscan556_scan
+ rxscan556_loop:
+ ($P10) = rx552_cur."from"()
inc $P10
- set rx549_pos, $P10
- ge rx549_pos, rx549_eos, rxscan553_done
- rxscan553_scan:
- set_addr $I10, rxscan553_loop
- rx549_cur."!mark_push"(0, rx549_pos, $I10)
- rxscan553_done:
-.annotate "line", 265
+ set rx552_pos, $P10
+ ge rx552_pos, rx552_eos, rxscan556_done
+ rxscan556_scan:
+ set_addr $I10, rxscan556_loop
+ rx552_cur."!mark_push"(0, rx552_pos, $I10)
+ rxscan556_done:
+.annotate "line", 269
# rx subcapture "sym"
- set_addr $I10, rxcap_554_fail
- rx549_cur."!mark_push"(0, rx549_pos, $I10)
+ set_addr $I10, rxcap_557_fail
+ rx552_cur."!mark_push"(0, rx552_pos, $I10)
# rx literal "our"
- add $I11, rx549_pos, 3
- gt $I11, rx549_eos, rx549_fail
- sub $I11, rx549_pos, rx549_off
- substr $S10, rx549_tgt, $I11, 3
- ne $S10, "our", rx549_fail
- add rx549_pos, 3
- set_addr $I10, rxcap_554_fail
- ($I12, $I11) = rx549_cur."!mark_peek"($I10)
- rx549_cur."!cursor_pos"($I11)
- ($P10) = rx549_cur."!cursor_start"()
- $P10."!cursor_pass"(rx549_pos, "")
- rx549_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx552_pos, 3
+ gt $I11, rx552_eos, rx552_fail
+ sub $I11, rx552_pos, rx552_off
+ substr $S10, rx552_tgt, $I11, 3
+ ne $S10, "our", rx552_fail
+ add rx552_pos, 3
+ set_addr $I10, rxcap_557_fail
+ ($I12, $I11) = rx552_cur."!mark_peek"($I10)
+ rx552_cur."!cursor_pos"($I11)
+ ($P10) = rx552_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx552_pos, "")
+ rx552_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_554_done
- rxcap_554_fail:
- goto rx549_fail
- rxcap_554_done:
+ goto rxcap_557_done
+ rxcap_557_fail:
+ goto rx552_fail
+ rxcap_557_done:
# rx subrule "scoped" subtype=capture negate=
- rx549_cur."!cursor_pos"(rx549_pos)
- $P10 = rx549_cur."scoped"("our")
- unless $P10, rx549_fail
- rx549_cur."!mark_push"(0, -1, 0, $P10)
+ rx552_cur."!cursor_pos"(rx552_pos)
+ $P10 = rx552_cur."scoped"("our")
+ unless $P10, rx552_fail
+ rx552_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("scoped")
- rx549_pos = $P10."pos"()
+ rx552_pos = $P10."pos"()
# rx pass
- rx549_cur."!cursor_pass"(rx549_pos, "scope_declarator:sym<our>")
- rx549_cur."!cursor_debug"("PASS ", "scope_declarator:sym<our>", " at pos=", rx549_pos)
- .return (rx549_cur)
- rx549_fail:
+ rx552_cur."!cursor_pass"(rx552_pos, "scope_declarator:sym<our>")
+ rx552_cur."!cursor_debug"("PASS ", "scope_declarator:sym<our>", " at pos=", rx552_pos)
+ .return (rx552_cur)
+ rx552_fail:
.annotate "line", 4
- (rx549_rep, rx549_pos, $I10, $P10) = rx549_cur."!mark_fail"(0)
- lt rx549_pos, -1, rx549_done
- eq rx549_pos, -1, rx549_fail
+ (rx552_rep, rx552_pos, $I10, $P10) = rx552_cur."!mark_fail"(0)
+ lt rx552_pos, -1, rx552_done
+ eq rx552_pos, -1, rx552_fail
jump $I10
- rx549_done:
- rx549_cur."!cursor_fail"()
- rx549_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<our>")
- .return (rx549_cur)
+ rx552_done:
+ rx552_cur."!cursor_fail"()
+ rx552_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<our>")
+ .return (rx552_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>" :subid("136_1267204702.05125") :method
+.sub "!PREFIX__scope_declarator:sym<our>" :subid("136_1272816833.94956") :method
.annotate "line", 4
- $P551 = self."!PREFIX__!subrule"("scoped", "our")
- new $P552, "ResizablePMCArray"
- push $P552, $P551
- .return ($P552)
+ $P554 = self."!PREFIX__!subrule"("scoped", "our")
+ new $P555, "ResizablePMCArray"
+ push $P555, $P554
+ .return ($P555)
.end
.namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>" :subid("137_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "scope_declarator:sym<has>" :subid("137_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx556_tgt
- .local int rx556_pos
- .local int rx556_off
- .local int rx556_eos
- .local int rx556_rep
- .local pmc rx556_cur
- (rx556_cur, rx556_pos, rx556_tgt) = self."!cursor_start"()
- rx556_cur."!cursor_debug"("START ", "scope_declarator:sym<has>")
- .lex unicode:"$\x{a2}", rx556_cur
+ .local string rx559_tgt
+ .local int rx559_pos
+ .local int rx559_off
+ .local int rx559_eos
+ .local int rx559_rep
+ .local pmc rx559_cur
+ (rx559_cur, rx559_pos, rx559_tgt) = self."!cursor_start"()
+ rx559_cur."!cursor_debug"("START ", "scope_declarator:sym<has>")
+ .lex unicode:"$\x{a2}", rx559_cur
.local pmc match
.lex "$/", match
- length rx556_eos, rx556_tgt
- set rx556_off, 0
- lt rx556_pos, 2, rx556_start
- sub rx556_off, rx556_pos, 1
- substr rx556_tgt, rx556_tgt, rx556_off
- rx556_start:
+ length rx559_eos, rx559_tgt
+ set rx559_off, 0
+ lt rx559_pos, 2, rx559_start
+ sub rx559_off, rx559_pos, 1
+ substr rx559_tgt, rx559_tgt, rx559_off
+ rx559_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan560_done
- goto rxscan560_scan
- rxscan560_loop:
- ($P10) = rx556_cur."from"()
+ ne $I10, -1, rxscan563_done
+ goto rxscan563_scan
+ rxscan563_loop:
+ ($P10) = rx559_cur."from"()
inc $P10
- set rx556_pos, $P10
- ge rx556_pos, rx556_eos, rxscan560_done
- rxscan560_scan:
- set_addr $I10, rxscan560_loop
- rx556_cur."!mark_push"(0, rx556_pos, $I10)
- rxscan560_done:
-.annotate "line", 266
+ set rx559_pos, $P10
+ ge rx559_pos, rx559_eos, rxscan563_done
+ rxscan563_scan:
+ set_addr $I10, rxscan563_loop
+ rx559_cur."!mark_push"(0, rx559_pos, $I10)
+ rxscan563_done:
+.annotate "line", 270
# rx subcapture "sym"
- set_addr $I10, rxcap_561_fail
- rx556_cur."!mark_push"(0, rx556_pos, $I10)
+ set_addr $I10, rxcap_564_fail
+ rx559_cur."!mark_push"(0, rx559_pos, $I10)
# rx literal "has"
- add $I11, rx556_pos, 3
- gt $I11, rx556_eos, rx556_fail
- sub $I11, rx556_pos, rx556_off
- substr $S10, rx556_tgt, $I11, 3
- ne $S10, "has", rx556_fail
- add rx556_pos, 3
- set_addr $I10, rxcap_561_fail
- ($I12, $I11) = rx556_cur."!mark_peek"($I10)
- rx556_cur."!cursor_pos"($I11)
- ($P10) = rx556_cur."!cursor_start"()
- $P10."!cursor_pass"(rx556_pos, "")
- rx556_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx559_pos, 3
+ gt $I11, rx559_eos, rx559_fail
+ sub $I11, rx559_pos, rx559_off
+ substr $S10, rx559_tgt, $I11, 3
+ ne $S10, "has", rx559_fail
+ add rx559_pos, 3
+ set_addr $I10, rxcap_564_fail
+ ($I12, $I11) = rx559_cur."!mark_peek"($I10)
+ rx559_cur."!cursor_pos"($I11)
+ ($P10) = rx559_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx559_pos, "")
+ rx559_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_561_done
- rxcap_561_fail:
- goto rx556_fail
- rxcap_561_done:
+ goto rxcap_564_done
+ rxcap_564_fail:
+ goto rx559_fail
+ rxcap_564_done:
# rx subrule "scoped" subtype=capture negate=
- rx556_cur."!cursor_pos"(rx556_pos)
- $P10 = rx556_cur."scoped"("has")
- unless $P10, rx556_fail
- rx556_cur."!mark_push"(0, -1, 0, $P10)
+ rx559_cur."!cursor_pos"(rx559_pos)
+ $P10 = rx559_cur."scoped"("has")
+ unless $P10, rx559_fail
+ rx559_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("scoped")
- rx556_pos = $P10."pos"()
+ rx559_pos = $P10."pos"()
# rx pass
- rx556_cur."!cursor_pass"(rx556_pos, "scope_declarator:sym<has>")
- rx556_cur."!cursor_debug"("PASS ", "scope_declarator:sym<has>", " at pos=", rx556_pos)
- .return (rx556_cur)
- rx556_fail:
+ rx559_cur."!cursor_pass"(rx559_pos, "scope_declarator:sym<has>")
+ rx559_cur."!cursor_debug"("PASS ", "scope_declarator:sym<has>", " at pos=", rx559_pos)
+ .return (rx559_cur)
+ rx559_fail:
.annotate "line", 4
- (rx556_rep, rx556_pos, $I10, $P10) = rx556_cur."!mark_fail"(0)
- lt rx556_pos, -1, rx556_done
- eq rx556_pos, -1, rx556_fail
+ (rx559_rep, rx559_pos, $I10, $P10) = rx559_cur."!mark_fail"(0)
+ lt rx559_pos, -1, rx559_done
+ eq rx559_pos, -1, rx559_fail
jump $I10
- rx556_done:
- rx556_cur."!cursor_fail"()
- rx556_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<has>")
- .return (rx556_cur)
+ rx559_done:
+ rx559_cur."!cursor_fail"()
+ rx559_cur."!cursor_debug"("FAIL ", "scope_declarator:sym<has>")
+ .return (rx559_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>" :subid("138_1267204702.05125") :method
+.sub "!PREFIX__scope_declarator:sym<has>" :subid("138_1272816833.94956") :method
.annotate "line", 4
- $P558 = self."!PREFIX__!subrule"("scoped", "has")
- new $P559, "ResizablePMCArray"
- push $P559, $P558
- .return ($P559)
+ $P561 = self."!PREFIX__!subrule"("scoped", "has")
+ new $P562, "ResizablePMCArray"
+ push $P562, $P561
+ .return ($P562)
.end
.namespace ["NQP";"Grammar"]
-.sub "scoped" :subid("139_1267204702.05125") :method :outer("11_1267204702.05125")
- .param pmc param_563
-.annotate "line", 268
- .lex "$*SCOPE", param_563
+.sub "scoped" :subid("139_1272816833.94956") :method :outer("11_1272816833.94956")
+ .param pmc param_566
+.annotate "line", 272
+ .lex "$*SCOPE", param_566
.annotate "line", 4
- .local string rx564_tgt
- .local int rx564_pos
- .local int rx564_off
- .local int rx564_eos
- .local int rx564_rep
- .local pmc rx564_cur
- (rx564_cur, rx564_pos, rx564_tgt) = self."!cursor_start"()
- rx564_cur."!cursor_debug"("START ", "scoped")
- .lex unicode:"$\x{a2}", rx564_cur
- .local pmc match
- .lex "$/", match
- length rx564_eos, rx564_tgt
- set rx564_off, 0
- lt rx564_pos, 2, rx564_start
- sub rx564_off, rx564_pos, 1
- substr rx564_tgt, rx564_tgt, rx564_off
- rx564_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan567_done
- goto rxscan567_scan
- rxscan567_loop:
- ($P10) = rx564_cur."from"()
- inc $P10
- set rx564_pos, $P10
- ge rx564_pos, rx564_eos, rxscan567_done
- rxscan567_scan:
- set_addr $I10, rxscan567_loop
- rx564_cur."!mark_push"(0, rx564_pos, $I10)
- rxscan567_done:
- alt568_0:
-.annotate "line", 268
- set_addr $I10, alt568_1
- rx564_cur."!mark_push"(0, rx564_pos, $I10)
-.annotate "line", 269
+ .local string rx567_tgt
+ .local int rx567_pos
+ .local int rx567_off
+ .local int rx567_eos
+ .local int rx567_rep
+ .local pmc rx567_cur
+ (rx567_cur, rx567_pos, rx567_tgt) = self."!cursor_start"()
+ rx567_cur."!cursor_debug"("START ", "scoped")
+ .lex unicode:"$\x{a2}", rx567_cur
+ .local pmc match
+ .lex "$/", match
+ length rx567_eos, rx567_tgt
+ set rx567_off, 0
+ lt rx567_pos, 2, rx567_start
+ sub rx567_off, rx567_pos, 1
+ substr rx567_tgt, rx567_tgt, rx567_off
+ rx567_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan570_done
+ goto rxscan570_scan
+ rxscan570_loop:
+ ($P10) = rx567_cur."from"()
+ inc $P10
+ set rx567_pos, $P10
+ ge rx567_pos, rx567_eos, rxscan570_done
+ rxscan570_scan:
+ set_addr $I10, rxscan570_loop
+ rx567_cur."!mark_push"(0, rx567_pos, $I10)
+ rxscan570_done:
+ alt571_0:
+.annotate "line", 272
+ set_addr $I10, alt571_1
+ rx567_cur."!mark_push"(0, rx567_pos, $I10)
+.annotate "line", 273
# rx subrule "ws" subtype=method negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."ws"()
- unless $P10, rx564_fail
- rx564_pos = $P10."pos"()
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."ws"()
+ unless $P10, rx567_fail
+ rx567_pos = $P10."pos"()
# rx subrule "variable_declarator" subtype=capture negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."variable_declarator"()
- unless $P10, rx564_fail
- rx564_cur."!mark_push"(0, -1, 0, $P10)
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."variable_declarator"()
+ unless $P10, rx567_fail
+ rx567_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("variable_declarator")
- rx564_pos = $P10."pos"()
+ rx567_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."ws"()
- unless $P10, rx564_fail
- rx564_pos = $P10."pos"()
- goto alt568_end
- alt568_1:
-.annotate "line", 270
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."ws"()
+ unless $P10, rx567_fail
+ rx567_pos = $P10."pos"()
+ goto alt571_end
+ alt571_1:
+.annotate "line", 274
# rx subrule "ws" subtype=method negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."ws"()
- unless $P10, rx564_fail
- rx564_pos = $P10."pos"()
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."ws"()
+ unless $P10, rx567_fail
+ rx567_pos = $P10."pos"()
# rx subrule "routine_declarator" subtype=capture negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."routine_declarator"()
- unless $P10, rx564_fail
- rx564_cur."!mark_push"(0, -1, 0, $P10)
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."routine_declarator"()
+ unless $P10, rx567_fail
+ rx567_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("routine_declarator")
- rx564_pos = $P10."pos"()
+ rx567_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx564_cur."!cursor_pos"(rx564_pos)
- $P10 = rx564_cur."ws"()
- unless $P10, rx564_fail
- rx564_pos = $P10."pos"()
- alt568_end:
-.annotate "line", 268
+ rx567_cur."!cursor_pos"(rx567_pos)
+ $P10 = rx567_cur."ws"()
+ unless $P10, rx567_fail
+ rx567_pos = $P10."pos"()
+ alt571_end:
+.annotate "line", 272
# rx pass
- rx564_cur."!cursor_pass"(rx564_pos, "scoped")
- rx564_cur."!cursor_debug"("PASS ", "scoped", " at pos=", rx564_pos)
- .return (rx564_cur)
- rx564_fail:
+ rx567_cur."!cursor_pass"(rx567_pos, "scoped")
+ rx567_cur."!cursor_debug"("PASS ", "scoped", " at pos=", rx567_pos)
+ .return (rx567_cur)
+ rx567_fail:
.annotate "line", 4
- (rx564_rep, rx564_pos, $I10, $P10) = rx564_cur."!mark_fail"(0)
- lt rx564_pos, -1, rx564_done
- eq rx564_pos, -1, rx564_fail
+ (rx567_rep, rx567_pos, $I10, $P10) = rx567_cur."!mark_fail"(0)
+ lt rx567_pos, -1, rx567_done
+ eq rx567_pos, -1, rx567_fail
jump $I10
- rx564_done:
- rx564_cur."!cursor_fail"()
- rx564_cur."!cursor_debug"("FAIL ", "scoped")
- .return (rx564_cur)
+ rx567_done:
+ rx567_cur."!cursor_fail"()
+ rx567_cur."!cursor_debug"("FAIL ", "scoped")
+ .return (rx567_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped" :subid("140_1267204702.05125") :method
+.sub "!PREFIX__scoped" :subid("140_1272816833.94956") :method
.annotate "line", 4
- new $P566, "ResizablePMCArray"
- push $P566, ""
- push $P566, ""
- .return ($P566)
+ new $P569, "ResizablePMCArray"
+ push $P569, ""
+ push $P569, ""
+ .return ($P569)
.end
.namespace ["NQP";"Grammar"]
-.sub "variable_declarator" :subid("141_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "variable_declarator" :subid("141_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx574_tgt
- .local int rx574_pos
- .local int rx574_off
- .local int rx574_eos
- .local int rx574_rep
- .local pmc rx574_cur
- (rx574_cur, rx574_pos, rx574_tgt) = self."!cursor_start"()
- rx574_cur."!cursor_debug"("START ", "variable_declarator")
- .lex unicode:"$\x{a2}", rx574_cur
- .local pmc match
- .lex "$/", match
- length rx574_eos, rx574_tgt
- set rx574_off, 0
- lt rx574_pos, 2, rx574_start
- sub rx574_off, rx574_pos, 1
- substr rx574_tgt, rx574_tgt, rx574_off
- rx574_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan578_done
- goto rxscan578_scan
- rxscan578_loop:
- ($P10) = rx574_cur."from"()
- inc $P10
- set rx574_pos, $P10
- ge rx574_pos, rx574_eos, rxscan578_done
- rxscan578_scan:
- set_addr $I10, rxscan578_loop
- rx574_cur."!mark_push"(0, rx574_pos, $I10)
- rxscan578_done:
-.annotate "line", 273
+ .local string rx577_tgt
+ .local int rx577_pos
+ .local int rx577_off
+ .local int rx577_eos
+ .local int rx577_rep
+ .local pmc rx577_cur
+ (rx577_cur, rx577_pos, rx577_tgt) = self."!cursor_start"()
+ rx577_cur."!cursor_debug"("START ", "variable_declarator")
+ .lex unicode:"$\x{a2}", rx577_cur
+ .local pmc match
+ .lex "$/", match
+ length rx577_eos, rx577_tgt
+ set rx577_off, 0
+ lt rx577_pos, 2, rx577_start
+ sub rx577_off, rx577_pos, 1
+ substr rx577_tgt, rx577_tgt, rx577_off
+ rx577_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan581_done
+ goto rxscan581_scan
+ rxscan581_loop:
+ ($P10) = rx577_cur."from"()
+ inc $P10
+ set rx577_pos, $P10
+ ge rx577_pos, rx577_eos, rxscan581_done
+ rxscan581_scan:
+ set_addr $I10, rxscan581_loop
+ rx577_cur."!mark_push"(0, rx577_pos, $I10)
+ rxscan581_done:
+.annotate "line", 277
# rx subrule "variable" subtype=capture negate=
- rx574_cur."!cursor_pos"(rx574_pos)
- $P10 = rx574_cur."variable"()
- unless $P10, rx574_fail
- rx574_cur."!mark_push"(0, -1, 0, $P10)
+ rx577_cur."!cursor_pos"(rx577_pos)
+ $P10 = rx577_cur."variable"()
+ unless $P10, rx577_fail
+ rx577_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("variable")
- rx574_pos = $P10."pos"()
+ rx577_pos = $P10."pos"()
# rx pass
- rx574_cur."!cursor_pass"(rx574_pos, "variable_declarator")
- rx574_cur."!cursor_debug"("PASS ", "variable_declarator", " at pos=", rx574_pos)
- .return (rx574_cur)
- rx574_fail:
+ rx577_cur."!cursor_pass"(rx577_pos, "variable_declarator")
+ rx577_cur."!cursor_debug"("PASS ", "variable_declarator", " at pos=", rx577_pos)
+ .return (rx577_cur)
+ rx577_fail:
.annotate "line", 4
- (rx574_rep, rx574_pos, $I10, $P10) = rx574_cur."!mark_fail"(0)
- lt rx574_pos, -1, rx574_done
- eq rx574_pos, -1, rx574_fail
+ (rx577_rep, rx577_pos, $I10, $P10) = rx577_cur."!mark_fail"(0)
+ lt rx577_pos, -1, rx577_done
+ eq rx577_pos, -1, rx577_fail
jump $I10
- rx574_done:
- rx574_cur."!cursor_fail"()
- rx574_cur."!cursor_debug"("FAIL ", "variable_declarator")
- .return (rx574_cur)
+ rx577_done:
+ rx577_cur."!cursor_fail"()
+ rx577_cur."!cursor_debug"("FAIL ", "variable_declarator")
+ .return (rx577_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator" :subid("142_1267204702.05125") :method
+.sub "!PREFIX__variable_declarator" :subid("142_1272816833.94956") :method
.annotate "line", 4
- $P576 = self."!PREFIX__!subrule"("variable", "")
- new $P577, "ResizablePMCArray"
- push $P577, $P576
- .return ($P577)
+ $P579 = self."!PREFIX__!subrule"("variable", "")
+ new $P580, "ResizablePMCArray"
+ push $P580, $P579
+ .return ($P580)
.end
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator" :subid("143_1267204702.05125") :method
-.annotate "line", 275
- $P580 = self."!protoregex"("routine_declarator")
- .return ($P580)
+.sub "routine_declarator" :subid("143_1272816833.94956") :method
+.annotate "line", 279
+ $P583 = self."!protoregex"("routine_declarator")
+ .return ($P583)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator" :subid("144_1267204702.05125") :method
-.annotate "line", 275
- $P582 = self."!PREFIX__!protoregex"("routine_declarator")
- .return ($P582)
+.sub "!PREFIX__routine_declarator" :subid("144_1272816833.94956") :method
+.annotate "line", 279
+ $P585 = self."!PREFIX__!protoregex"("routine_declarator")
+ .return ($P585)
.end
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>" :subid("145_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "routine_declarator:sym<sub>" :subid("145_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx584_tgt
- .local int rx584_pos
- .local int rx584_off
- .local int rx584_eos
- .local int rx584_rep
- .local pmc rx584_cur
- (rx584_cur, rx584_pos, rx584_tgt) = self."!cursor_start"()
- rx584_cur."!cursor_debug"("START ", "routine_declarator:sym<sub>")
- .lex unicode:"$\x{a2}", rx584_cur
- .local pmc match
- .lex "$/", match
- length rx584_eos, rx584_tgt
- set rx584_off, 0
- lt rx584_pos, 2, rx584_start
- sub rx584_off, rx584_pos, 1
- substr rx584_tgt, rx584_tgt, rx584_off
- rx584_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan588_done
- goto rxscan588_scan
- rxscan588_loop:
- ($P10) = rx584_cur."from"()
- inc $P10
- set rx584_pos, $P10
- ge rx584_pos, rx584_eos, rxscan588_done
- rxscan588_scan:
- set_addr $I10, rxscan588_loop
- rx584_cur."!mark_push"(0, rx584_pos, $I10)
- rxscan588_done:
-.annotate "line", 276
+ .local string rx587_tgt
+ .local int rx587_pos
+ .local int rx587_off
+ .local int rx587_eos
+ .local int rx587_rep
+ .local pmc rx587_cur
+ (rx587_cur, rx587_pos, rx587_tgt) = self."!cursor_start"()
+ rx587_cur."!cursor_debug"("START ", "routine_declarator:sym<sub>")
+ .lex unicode:"$\x{a2}", rx587_cur
+ .local pmc match
+ .lex "$/", match
+ length rx587_eos, rx587_tgt
+ set rx587_off, 0
+ lt rx587_pos, 2, rx587_start
+ sub rx587_off, rx587_pos, 1
+ substr rx587_tgt, rx587_tgt, rx587_off
+ rx587_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan591_done
+ goto rxscan591_scan
+ rxscan591_loop:
+ ($P10) = rx587_cur."from"()
+ inc $P10
+ set rx587_pos, $P10
+ ge rx587_pos, rx587_eos, rxscan591_done
+ rxscan591_scan:
+ set_addr $I10, rxscan591_loop
+ rx587_cur."!mark_push"(0, rx587_pos, $I10)
+ rxscan591_done:
+.annotate "line", 280
# rx subcapture "sym"
- set_addr $I10, rxcap_589_fail
- rx584_cur."!mark_push"(0, rx584_pos, $I10)
+ set_addr $I10, rxcap_592_fail
+ rx587_cur."!mark_push"(0, rx587_pos, $I10)
# rx literal "sub"
- add $I11, rx584_pos, 3
- gt $I11, rx584_eos, rx584_fail
- sub $I11, rx584_pos, rx584_off
- substr $S10, rx584_tgt, $I11, 3
- ne $S10, "sub", rx584_fail
- add rx584_pos, 3
- set_addr $I10, rxcap_589_fail
- ($I12, $I11) = rx584_cur."!mark_peek"($I10)
- rx584_cur."!cursor_pos"($I11)
- ($P10) = rx584_cur."!cursor_start"()
- $P10."!cursor_pass"(rx584_pos, "")
- rx584_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx587_pos, 3
+ gt $I11, rx587_eos, rx587_fail
+ sub $I11, rx587_pos, rx587_off
+ substr $S10, rx587_tgt, $I11, 3
+ ne $S10, "sub", rx587_fail
+ add rx587_pos, 3
+ set_addr $I10, rxcap_592_fail
+ ($I12, $I11) = rx587_cur."!mark_peek"($I10)
+ rx587_cur."!cursor_pos"($I11)
+ ($P10) = rx587_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx587_pos, "")
+ rx587_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_589_done
- rxcap_589_fail:
- goto rx584_fail
- rxcap_589_done:
+ goto rxcap_592_done
+ rxcap_592_fail:
+ goto rx587_fail
+ rxcap_592_done:
# rx subrule "routine_def" subtype=capture negate=
- rx584_cur."!cursor_pos"(rx584_pos)
- $P10 = rx584_cur."routine_def"()
- unless $P10, rx584_fail
- rx584_cur."!mark_push"(0, -1, 0, $P10)
+ rx587_cur."!cursor_pos"(rx587_pos)
+ $P10 = rx587_cur."routine_def"()
+ unless $P10, rx587_fail
+ rx587_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("routine_def")
- rx584_pos = $P10."pos"()
+ rx587_pos = $P10."pos"()
# rx pass
- rx584_cur."!cursor_pass"(rx584_pos, "routine_declarator:sym<sub>")
- rx584_cur."!cursor_debug"("PASS ", "routine_declarator:sym<sub>", " at pos=", rx584_pos)
- .return (rx584_cur)
- rx584_fail:
+ rx587_cur."!cursor_pass"(rx587_pos, "routine_declarator:sym<sub>")
+ rx587_cur."!cursor_debug"("PASS ", "routine_declarator:sym<sub>", " at pos=", rx587_pos)
+ .return (rx587_cur)
+ rx587_fail:
.annotate "line", 4
- (rx584_rep, rx584_pos, $I10, $P10) = rx584_cur."!mark_fail"(0)
- lt rx584_pos, -1, rx584_done
- eq rx584_pos, -1, rx584_fail
+ (rx587_rep, rx587_pos, $I10, $P10) = rx587_cur."!mark_fail"(0)
+ lt rx587_pos, -1, rx587_done
+ eq rx587_pos, -1, rx587_fail
jump $I10
- rx584_done:
- rx584_cur."!cursor_fail"()
- rx584_cur."!cursor_debug"("FAIL ", "routine_declarator:sym<sub>")
- .return (rx584_cur)
+ rx587_done:
+ rx587_cur."!cursor_fail"()
+ rx587_cur."!cursor_debug"("FAIL ", "routine_declarator:sym<sub>")
+ .return (rx587_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>" :subid("146_1267204702.05125") :method
+.sub "!PREFIX__routine_declarator:sym<sub>" :subid("146_1272816833.94956") :method
.annotate "line", 4
- $P586 = self."!PREFIX__!subrule"("routine_def", "sub")
- new $P587, "ResizablePMCArray"
- push $P587, $P586
- .return ($P587)
+ $P589 = self."!PREFIX__!subrule"("routine_def", "sub")
+ new $P590, "ResizablePMCArray"
+ push $P590, $P589
+ .return ($P590)
.end
.namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>" :subid("147_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "routine_declarator:sym<method>" :subid("147_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx591_tgt
- .local int rx591_pos
- .local int rx591_off
- .local int rx591_eos
- .local int rx591_rep
- .local pmc rx591_cur
- (rx591_cur, rx591_pos, rx591_tgt) = self."!cursor_start"()
- rx591_cur."!cursor_debug"("START ", "routine_declarator:sym<method>")
- .lex unicode:"$\x{a2}", rx591_cur
- .local pmc match
- .lex "$/", match
- length rx591_eos, rx591_tgt
- set rx591_off, 0
- lt rx591_pos, 2, rx591_start
- sub rx591_off, rx591_pos, 1
- substr rx591_tgt, rx591_tgt, rx591_off
- rx591_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan595_done
- goto rxscan595_scan
- rxscan595_loop:
- ($P10) = rx591_cur."from"()
- inc $P10
- set rx591_pos, $P10
- ge rx591_pos, rx591_eos, rxscan595_done
- rxscan595_scan:
- set_addr $I10, rxscan595_loop
- rx591_cur."!mark_push"(0, rx591_pos, $I10)
- rxscan595_done:
-.annotate "line", 277
+ .local string rx594_tgt
+ .local int rx594_pos
+ .local int rx594_off
+ .local int rx594_eos
+ .local int rx594_rep
+ .local pmc rx594_cur
+ (rx594_cur, rx594_pos, rx594_tgt) = self."!cursor_start"()
+ rx594_cur."!cursor_debug"("START ", "routine_declarator:sym<method>")
+ .lex unicode:"$\x{a2}", rx594_cur
+ .local pmc match
+ .lex "$/", match
+ length rx594_eos, rx594_tgt
+ set rx594_off, 0
+ lt rx594_pos, 2, rx594_start
+ sub rx594_off, rx594_pos, 1
+ substr rx594_tgt, rx594_tgt, rx594_off
+ rx594_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan598_done
+ goto rxscan598_scan
+ rxscan598_loop:
+ ($P10) = rx594_cur."from"()
+ inc $P10
+ set rx594_pos, $P10
+ ge rx594_pos, rx594_eos, rxscan598_done
+ rxscan598_scan:
+ set_addr $I10, rxscan598_loop
+ rx594_cur."!mark_push"(0, rx594_pos, $I10)
+ rxscan598_done:
+.annotate "line", 281
# rx subcapture "sym"
- set_addr $I10, rxcap_596_fail
- rx591_cur."!mark_push"(0, rx591_pos, $I10)
+ set_addr $I10, rxcap_599_fail
+ rx594_cur."!mark_push"(0, rx594_pos, $I10)
# rx literal "method"
- add $I11, rx591_pos, 6
- gt $I11, rx591_eos, rx591_fail
- sub $I11, rx591_pos, rx591_off
- substr $S10, rx591_tgt, $I11, 6
- ne $S10, "method", rx591_fail
- add rx591_pos, 6
- set_addr $I10, rxcap_596_fail
- ($I12, $I11) = rx591_cur."!mark_peek"($I10)
- rx591_cur."!cursor_pos"($I11)
- ($P10) = rx591_cur."!cursor_start"()
- $P10."!cursor_pass"(rx591_pos, "")
- rx591_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx594_pos, 6
+ gt $I11, rx594_eos, rx594_fail
+ sub $I11, rx594_pos, rx594_off
+ substr $S10, rx594_tgt, $I11, 6
+ ne $S10, "method", rx594_fail
+ add rx594_pos, 6
+ set_addr $I10, rxcap_599_fail
+ ($I12, $I11) = rx594_cur."!mark_peek"($I10)
+ rx594_cur."!cursor_pos"($I11)
+ ($P10) = rx594_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx594_pos, "")
+ rx594_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_596_done
- rxcap_596_fail:
- goto rx591_fail
- rxcap_596_done:
+ goto rxcap_599_done
+ rxcap_599_fail:
+ goto rx594_fail
+ rxcap_599_done:
# rx subrule "method_def" subtype=capture negate=
- rx591_cur."!cursor_pos"(rx591_pos)
- $P10 = rx591_cur."method_def"()
- unless $P10, rx591_fail
- rx591_cur."!mark_push"(0, -1, 0, $P10)
+ rx594_cur."!cursor_pos"(rx594_pos)
+ $P10 = rx594_cur."method_def"()
+ unless $P10, rx594_fail
+ rx594_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("method_def")
- rx591_pos = $P10."pos"()
+ rx594_pos = $P10."pos"()
# rx pass
- rx591_cur."!cursor_pass"(rx591_pos, "routine_declarator:sym<method>")
- rx591_cur."!cursor_debug"("PASS ", "routine_declarator:sym<method>", " at pos=", rx591_pos)
- .return (rx591_cur)
- rx591_fail:
+ rx594_cur."!cursor_pass"(rx594_pos, "routine_declarator:sym<method>")
+ rx594_cur."!cursor_debug"("PASS ", "routine_declarator:sym<method>", " at pos=", rx594_pos)
+ .return (rx594_cur)
+ rx594_fail:
.annotate "line", 4
- (rx591_rep, rx591_pos, $I10, $P10) = rx591_cur."!mark_fail"(0)
- lt rx591_pos, -1, rx591_done
- eq rx591_pos, -1, rx591_fail
+ (rx594_rep, rx594_pos, $I10, $P10) = rx594_cur."!mark_fail"(0)
+ lt rx594_pos, -1, rx594_done
+ eq rx594_pos, -1, rx594_fail
jump $I10
- rx591_done:
- rx591_cur."!cursor_fail"()
- rx591_cur."!cursor_debug"("FAIL ", "routine_declarator:sym<method>")
- .return (rx591_cur)
+ rx594_done:
+ rx594_cur."!cursor_fail"()
+ rx594_cur."!cursor_debug"("FAIL ", "routine_declarator:sym<method>")
+ .return (rx594_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>" :subid("148_1267204702.05125") :method
+.sub "!PREFIX__routine_declarator:sym<method>" :subid("148_1272816833.94956") :method
.annotate "line", 4
- $P593 = self."!PREFIX__!subrule"("method_def", "method")
- new $P594, "ResizablePMCArray"
- push $P594, $P593
- .return ($P594)
+ $P596 = self."!PREFIX__!subrule"("method_def", "method")
+ new $P597, "ResizablePMCArray"
+ push $P597, $P596
+ .return ($P597)
.end
.namespace ["NQP";"Grammar"]
-.sub "routine_def" :subid("149_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "routine_def" :subid("149_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx598_tgt
- .local int rx598_pos
- .local int rx598_off
- .local int rx598_eos
- .local int rx598_rep
- .local pmc rx598_cur
- (rx598_cur, rx598_pos, rx598_tgt) = self."!cursor_start"()
- rx598_cur."!cursor_debug"("START ", "routine_def")
- rx598_cur."!cursor_caparray"("deflongname", "sigil")
- .lex unicode:"$\x{a2}", rx598_cur
+ .local string rx601_tgt
+ .local int rx601_pos
+ .local int rx601_off
+ .local int rx601_eos
+ .local int rx601_rep
+ .local pmc rx601_cur
+ (rx601_cur, rx601_pos, rx601_tgt) = self."!cursor_start"()
+ rx601_cur."!cursor_debug"("START ", "routine_def")
+ rx601_cur."!cursor_caparray"("sigil", "deflongname")
+ .lex unicode:"$\x{a2}", rx601_cur
.local pmc match
.lex "$/", match
- length rx598_eos, rx598_tgt
- set rx598_off, 0
- lt rx598_pos, 2, rx598_start
- sub rx598_off, rx598_pos, 1
- substr rx598_tgt, rx598_tgt, rx598_off
- rx598_start:
+ length rx601_eos, rx601_tgt
+ set rx601_off, 0
+ lt rx601_pos, 2, rx601_start
+ sub rx601_off, rx601_pos, 1
+ substr rx601_tgt, rx601_tgt, rx601_off
+ rx601_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan601_done
- goto rxscan601_scan
- rxscan601_loop:
- ($P10) = rx598_cur."from"()
+ ne $I10, -1, rxscan604_done
+ goto rxscan604_scan
+ rxscan604_loop:
+ ($P10) = rx601_cur."from"()
inc $P10
- set rx598_pos, $P10
- ge rx598_pos, rx598_eos, rxscan601_done
- rxscan601_scan:
- set_addr $I10, rxscan601_loop
- rx598_cur."!mark_push"(0, rx598_pos, $I10)
- rxscan601_done:
-.annotate "line", 279
+ set rx601_pos, $P10
+ ge rx601_pos, rx601_eos, rxscan604_done
+ rxscan604_scan:
+ set_addr $I10, rxscan604_loop
+ rx601_cur."!mark_push"(0, rx601_pos, $I10)
+ rxscan604_done:
+.annotate "line", 283
# rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
-.annotate "line", 280
- # rx rxquantr603 ** 0..1
- set_addr $I609, rxquantr603_done
- rx598_cur."!mark_push"(0, rx598_pos, $I609)
- rxquantr603_loop:
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+.annotate "line", 284
+ # rx rxquantr606 ** 0..1
+ set_addr $I612, rxquantr606_done
+ rx601_cur."!mark_push"(0, rx601_pos, $I612)
+ rxquantr606_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
# rx subcapture "sigil"
- set_addr $I10, rxcap_607_fail
- rx598_cur."!mark_push"(0, rx598_pos, $I10)
- # rx rxquantr605 ** 0..1
- set_addr $I606, rxquantr605_done
- rx598_cur."!mark_push"(0, rx598_pos, $I606)
- rxquantr605_loop:
+ set_addr $I10, rxcap_610_fail
+ rx601_cur."!mark_push"(0, rx601_pos, $I10)
+ # rx rxquantr608 ** 0..1
+ set_addr $I609, rxquantr608_done
+ rx601_cur."!mark_push"(0, rx601_pos, $I609)
+ rxquantr608_loop:
# rx literal "&"
- add $I11, rx598_pos, 1
- gt $I11, rx598_eos, rx598_fail
- sub $I11, rx598_pos, rx598_off
- substr $S10, rx598_tgt, $I11, 1
- ne $S10, "&", rx598_fail
- add rx598_pos, 1
- (rx598_rep) = rx598_cur."!mark_commit"($I606)
- rxquantr605_done:
- set_addr $I10, rxcap_607_fail
- ($I12, $I11) = rx598_cur."!mark_peek"($I10)
- rx598_cur."!cursor_pos"($I11)
- ($P10) = rx598_cur."!cursor_start"()
- $P10."!cursor_pass"(rx598_pos, "")
- rx598_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx601_pos, 1
+ gt $I11, rx601_eos, rx601_fail
+ sub $I11, rx601_pos, rx601_off
+ substr $S10, rx601_tgt, $I11, 1
+ ne $S10, "&", rx601_fail
+ add rx601_pos, 1
+ (rx601_rep) = rx601_cur."!mark_commit"($I609)
+ rxquantr608_done:
+ set_addr $I10, rxcap_610_fail
+ ($I12, $I11) = rx601_cur."!mark_peek"($I10)
+ rx601_cur."!cursor_pos"($I11)
+ ($P10) = rx601_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx601_pos, "")
+ rx601_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- goto rxcap_607_done
- rxcap_607_fail:
- goto rx598_fail
- rxcap_607_done:
+ goto rxcap_610_done
+ rxcap_610_fail:
+ goto rx601_fail
+ rxcap_610_done:
# rx subrule "deflongname" subtype=capture negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."deflongname"()
- unless $P10, rx598_fail
- rx598_cur."!mark_push"(0, -1, 0, $P10)
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."deflongname"()
+ unless $P10, rx601_fail
+ rx601_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("deflongname")
- rx598_pos = $P10."pos"()
+ rx601_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- (rx598_rep) = rx598_cur."!mark_commit"($I609)
- rxquantr603_done:
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
-.annotate "line", 281
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ (rx601_rep) = rx601_cur."!mark_commit"($I612)
+ rxquantr606_done:
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+.annotate "line", 285
# rx subrule "newpad" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."newpad"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- alt612_0:
-.annotate "line", 282
- set_addr $I10, alt612_1
- rx598_cur."!mark_push"(0, rx598_pos, $I10)
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."newpad"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ alt615_0:
+.annotate "line", 286
+ set_addr $I10, alt615_1
+ rx601_cur."!mark_push"(0, rx601_pos, $I10)
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
# rx literal "("
- add $I11, rx598_pos, 1
- gt $I11, rx598_eos, rx598_fail
- sub $I11, rx598_pos, rx598_off
- substr $S10, rx598_tgt, $I11, 1
- ne $S10, "(", rx598_fail
- add rx598_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
+ add $I11, rx601_pos, 1
+ gt $I11, rx601_eos, rx601_fail
+ sub $I11, rx601_pos, rx601_off
+ substr $S10, rx601_tgt, $I11, 1
+ ne $S10, "(", rx601_fail
+ add rx601_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
# rx subrule "signature" subtype=capture negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."signature"()
- unless $P10, rx598_fail
- rx598_cur."!mark_push"(0, -1, 0, $P10)
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."signature"()
+ unless $P10, rx601_fail
+ rx601_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("signature")
- rx598_pos = $P10."pos"()
+ rx601_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx598_pos, 1
- gt $I11, rx598_eos, rx598_fail
- sub $I11, rx598_pos, rx598_off
- substr $S10, rx598_tgt, $I11, 1
- ne $S10, ")", rx598_fail
- add rx598_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- goto alt612_end
- alt612_1:
-.annotate "line", 283
+ add $I11, rx601_pos, 1
+ gt $I11, rx601_eos, rx601_fail
+ sub $I11, rx601_pos, rx601_off
+ substr $S10, rx601_tgt, $I11, 1
+ ne $S10, ")", rx601_fail
+ add rx601_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ goto alt615_end
+ alt615_1:
+.annotate "line", 287
# rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
# rx subrule "panic" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."panic"("Routine declaration requires a signature")
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
- alt612_end:
- # rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
-.annotate "line", 284
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."panic"("Routine declaration requires a signature")
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+ alt615_end:
+ # rx subrule "ws" subtype=method negate=
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+.annotate "line", 288
# rx subrule "blockoid" subtype=capture negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."blockoid"()
- unless $P10, rx598_fail
- rx598_cur."!mark_push"(0, -1, 0, $P10)
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."blockoid"()
+ unless $P10, rx601_fail
+ rx601_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blockoid")
- rx598_pos = $P10."pos"()
+ rx601_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx598_cur."!cursor_pos"(rx598_pos)
- $P10 = rx598_cur."ws"()
- unless $P10, rx598_fail
- rx598_pos = $P10."pos"()
-.annotate "line", 279
+ rx601_cur."!cursor_pos"(rx601_pos)
+ $P10 = rx601_cur."ws"()
+ unless $P10, rx601_fail
+ rx601_pos = $P10."pos"()
+.annotate "line", 283
# rx pass
- rx598_cur."!cursor_pass"(rx598_pos, "routine_def")
- rx598_cur."!cursor_debug"("PASS ", "routine_def", " at pos=", rx598_pos)
- .return (rx598_cur)
- rx598_fail:
+ rx601_cur."!cursor_pass"(rx601_pos, "routine_def")
+ rx601_cur."!cursor_debug"("PASS ", "routine_def", " at pos=", rx601_pos)
+ .return (rx601_cur)
+ rx601_fail:
.annotate "line", 4
- (rx598_rep, rx598_pos, $I10, $P10) = rx598_cur."!mark_fail"(0)
- lt rx598_pos, -1, rx598_done
- eq rx598_pos, -1, rx598_fail
+ (rx601_rep, rx601_pos, $I10, $P10) = rx601_cur."!mark_fail"(0)
+ lt rx601_pos, -1, rx601_done
+ eq rx601_pos, -1, rx601_fail
jump $I10
- rx598_done:
- rx598_cur."!cursor_fail"()
- rx598_cur."!cursor_debug"("FAIL ", "routine_def")
- .return (rx598_cur)
+ rx601_done:
+ rx601_cur."!cursor_fail"()
+ rx601_cur."!cursor_debug"("FAIL ", "routine_def")
+ .return (rx601_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def" :subid("150_1267204702.05125") :method
+.sub "!PREFIX__routine_def" :subid("150_1272816833.94956") :method
.annotate "line", 4
- new $P600, "ResizablePMCArray"
- push $P600, ""
- .return ($P600)
+ new $P603, "ResizablePMCArray"
+ push $P603, ""
+ .return ($P603)
.end
.namespace ["NQP";"Grammar"]
-.sub "method_def" :subid("151_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "method_def" :subid("151_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx622_tgt
- .local int rx622_pos
- .local int rx622_off
- .local int rx622_eos
- .local int rx622_rep
- .local pmc rx622_cur
- (rx622_cur, rx622_pos, rx622_tgt) = self."!cursor_start"()
- rx622_cur."!cursor_debug"("START ", "method_def")
- rx622_cur."!cursor_caparray"("deflongname")
- .lex unicode:"$\x{a2}", rx622_cur
- .local pmc match
- .lex "$/", match
- length rx622_eos, rx622_tgt
- set rx622_off, 0
- lt rx622_pos, 2, rx622_start
- sub rx622_off, rx622_pos, 1
- substr rx622_tgt, rx622_tgt, rx622_off
- rx622_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan625_done
- goto rxscan625_scan
- rxscan625_loop:
- ($P10) = rx622_cur."from"()
- inc $P10
- set rx622_pos, $P10
- ge rx622_pos, rx622_eos, rxscan625_done
- rxscan625_scan:
- set_addr $I10, rxscan625_loop
- rx622_cur."!mark_push"(0, rx622_pos, $I10)
- rxscan625_done:
-.annotate "line", 287
+ .local string rx625_tgt
+ .local int rx625_pos
+ .local int rx625_off
+ .local int rx625_eos
+ .local int rx625_rep
+ .local pmc rx625_cur
+ (rx625_cur, rx625_pos, rx625_tgt) = self."!cursor_start"()
+ rx625_cur."!cursor_debug"("START ", "method_def")
+ rx625_cur."!cursor_caparray"("deflongname")
+ .lex unicode:"$\x{a2}", rx625_cur
+ .local pmc match
+ .lex "$/", match
+ length rx625_eos, rx625_tgt
+ set rx625_off, 0
+ lt rx625_pos, 2, rx625_start
+ sub rx625_off, rx625_pos, 1
+ substr rx625_tgt, rx625_tgt, rx625_off
+ rx625_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan628_done
+ goto rxscan628_scan
+ rxscan628_loop:
+ ($P10) = rx625_cur."from"()
+ inc $P10
+ set rx625_pos, $P10
+ ge rx625_pos, rx625_eos, rxscan628_done
+ rxscan628_scan:
+ set_addr $I10, rxscan628_loop
+ rx625_cur."!mark_push"(0, rx625_pos, $I10)
+ rxscan628_done:
+.annotate "line", 291
# rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
-.annotate "line", 288
- # rx rxquantr627 ** 0..1
- set_addr $I628, rxquantr627_done
- rx622_cur."!mark_push"(0, rx622_pos, $I628)
- rxquantr627_loop:
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+.annotate "line", 292
+ # rx rxquantr630 ** 0..1
+ set_addr $I631, rxquantr630_done
+ rx625_cur."!mark_push"(0, rx625_pos, $I631)
+ rxquantr630_loop:
# rx subrule "deflongname" subtype=capture negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."deflongname"()
- unless $P10, rx622_fail
- rx622_cur."!mark_push"(0, -1, 0, $P10)
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."deflongname"()
+ unless $P10, rx625_fail
+ rx625_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("deflongname")
- rx622_pos = $P10."pos"()
- (rx622_rep) = rx622_cur."!mark_commit"($I628)
- rxquantr627_done:
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
-.annotate "line", 289
+ rx625_pos = $P10."pos"()
+ (rx625_rep) = rx625_cur."!mark_commit"($I631)
+ rxquantr630_done:
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+.annotate "line", 293
# rx subrule "newpad" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."newpad"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
- alt631_0:
-.annotate "line", 290
- set_addr $I10, alt631_1
- rx622_cur."!mark_push"(0, rx622_pos, $I10)
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."newpad"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+ alt634_0:
+.annotate "line", 294
+ set_addr $I10, alt634_1
+ rx625_cur."!mark_push"(0, rx625_pos, $I10)
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
# rx literal "("
- add $I11, rx622_pos, 1
- gt $I11, rx622_eos, rx622_fail
- sub $I11, rx622_pos, rx622_off
- substr $S10, rx622_tgt, $I11, 1
- ne $S10, "(", rx622_fail
- add rx622_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
+ add $I11, rx625_pos, 1
+ gt $I11, rx625_eos, rx625_fail
+ sub $I11, rx625_pos, rx625_off
+ substr $S10, rx625_tgt, $I11, 1
+ ne $S10, "(", rx625_fail
+ add rx625_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
# rx subrule "signature" subtype=capture negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."signature"()
- unless $P10, rx622_fail
- rx622_cur."!mark_push"(0, -1, 0, $P10)
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."signature"()
+ unless $P10, rx625_fail
+ rx625_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("signature")
- rx622_pos = $P10."pos"()
+ rx625_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx622_pos, 1
- gt $I11, rx622_eos, rx622_fail
- sub $I11, rx622_pos, rx622_off
- substr $S10, rx622_tgt, $I11, 1
- ne $S10, ")", rx622_fail
- add rx622_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
- goto alt631_end
- alt631_1:
-.annotate "line", 291
+ add $I11, rx625_pos, 1
+ gt $I11, rx625_eos, rx625_fail
+ sub $I11, rx625_pos, rx625_off
+ substr $S10, rx625_tgt, $I11, 1
+ ne $S10, ")", rx625_fail
+ add rx625_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+ goto alt634_end
+ alt634_1:
+.annotate "line", 295
# rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
# rx subrule "panic" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."panic"("Routine declaration requires a signature")
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
- alt631_end:
- # rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
-.annotate "line", 292
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."panic"("Routine declaration requires a signature")
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+ alt634_end:
+ # rx subrule "ws" subtype=method negate=
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+.annotate "line", 296
# rx subrule "blockoid" subtype=capture negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."blockoid"()
- unless $P10, rx622_fail
- rx622_cur."!mark_push"(0, -1, 0, $P10)
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."blockoid"()
+ unless $P10, rx625_fail
+ rx625_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("blockoid")
- rx622_pos = $P10."pos"()
+ rx625_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx622_cur."!cursor_pos"(rx622_pos)
- $P10 = rx622_cur."ws"()
- unless $P10, rx622_fail
- rx622_pos = $P10."pos"()
-.annotate "line", 287
+ rx625_cur."!cursor_pos"(rx625_pos)
+ $P10 = rx625_cur."ws"()
+ unless $P10, rx625_fail
+ rx625_pos = $P10."pos"()
+.annotate "line", 291
# rx pass
- rx622_cur."!cursor_pass"(rx622_pos, "method_def")
- rx622_cur."!cursor_debug"("PASS ", "method_def", " at pos=", rx622_pos)
- .return (rx622_cur)
- rx622_fail:
+ rx625_cur."!cursor_pass"(rx625_pos, "method_def")
+ rx625_cur."!cursor_debug"("PASS ", "method_def", " at pos=", rx625_pos)
+ .return (rx625_cur)
+ rx625_fail:
.annotate "line", 4
- (rx622_rep, rx622_pos, $I10, $P10) = rx622_cur."!mark_fail"(0)
- lt rx622_pos, -1, rx622_done
- eq rx622_pos, -1, rx622_fail
+ (rx625_rep, rx625_pos, $I10, $P10) = rx625_cur."!mark_fail"(0)
+ lt rx625_pos, -1, rx625_done
+ eq rx625_pos, -1, rx625_fail
jump $I10
- rx622_done:
- rx622_cur."!cursor_fail"()
- rx622_cur."!cursor_debug"("FAIL ", "method_def")
- .return (rx622_cur)
+ rx625_done:
+ rx625_cur."!cursor_fail"()
+ rx625_cur."!cursor_debug"("FAIL ", "method_def")
+ .return (rx625_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def" :subid("152_1267204702.05125") :method
+.sub "!PREFIX__method_def" :subid("152_1272816833.94956") :method
.annotate "line", 4
- new $P624, "ResizablePMCArray"
- push $P624, ""
- .return ($P624)
+ new $P627, "ResizablePMCArray"
+ push $P627, ""
+ .return ($P627)
.end
.namespace ["NQP";"Grammar"]
-.sub "signature" :subid("153_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "signature" :subid("153_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx641_tgt
- .local int rx641_pos
- .local int rx641_off
- .local int rx641_eos
- .local int rx641_rep
- .local pmc rx641_cur
- (rx641_cur, rx641_pos, rx641_tgt) = self."!cursor_start"()
- rx641_cur."!cursor_debug"("START ", "signature")
- rx641_cur."!cursor_caparray"("parameter")
- .lex unicode:"$\x{a2}", rx641_cur
+ .local string rx644_tgt
+ .local int rx644_pos
+ .local int rx644_off
+ .local int rx644_eos
+ .local int rx644_rep
+ .local pmc rx644_cur
+ (rx644_cur, rx644_pos, rx644_tgt) = self."!cursor_start"()
+ rx644_cur."!cursor_debug"("START ", "signature")
+ rx644_cur."!cursor_caparray"("parameter")
+ .lex unicode:"$\x{a2}", rx644_cur
.local pmc match
.lex "$/", match
- length rx641_eos, rx641_tgt
- set rx641_off, 0
- lt rx641_pos, 2, rx641_start
- sub rx641_off, rx641_pos, 1
- substr rx641_tgt, rx641_tgt, rx641_off
- rx641_start:
+ length rx644_eos, rx644_tgt
+ set rx644_off, 0
+ lt rx644_pos, 2, rx644_start
+ sub rx644_off, rx644_pos, 1
+ substr rx644_tgt, rx644_tgt, rx644_off
+ rx644_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan644_done
- goto rxscan644_scan
- rxscan644_loop:
- ($P10) = rx641_cur."from"()
+ ne $I10, -1, rxscan647_done
+ goto rxscan647_scan
+ rxscan647_loop:
+ ($P10) = rx644_cur."from"()
inc $P10
- set rx641_pos, $P10
- ge rx641_pos, rx641_eos, rxscan644_done
- rxscan644_scan:
- set_addr $I10, rxscan644_loop
- rx641_cur."!mark_push"(0, rx641_pos, $I10)
- rxscan644_done:
-.annotate "line", 295
- # rx rxquantr645 ** 0..1
- set_addr $I648, rxquantr645_done
- rx641_cur."!mark_push"(0, rx641_pos, $I648)
- rxquantr645_loop:
- # rx rxquantr646 ** 1..*
- set_addr $I647, rxquantr646_done
- rx641_cur."!mark_push"(0, -1, $I647)
- rxquantr646_loop:
- # rx subrule "ws" subtype=method negate=
- rx641_cur."!cursor_pos"(rx641_pos)
- $P10 = rx641_cur."ws"()
- unless $P10, rx641_fail
- rx641_pos = $P10."pos"()
+ set rx644_pos, $P10
+ ge rx644_pos, rx644_eos, rxscan647_done
+ rxscan647_scan:
+ set_addr $I10, rxscan647_loop
+ rx644_cur."!mark_push"(0, rx644_pos, $I10)
+ rxscan647_done:
+.annotate "line", 299
+ # rx rxquantr648 ** 0..1
+ set_addr $I651, rxquantr648_done
+ rx644_cur."!mark_push"(0, rx644_pos, $I651)
+ rxquantr648_loop:
+ # rx rxquantr649 ** 1..*
+ set_addr $I650, rxquantr649_done
+ rx644_cur."!mark_push"(0, -1, $I650)
+ rxquantr649_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx644_cur."!cursor_pos"(rx644_pos)
+ $P10 = rx644_cur."ws"()
+ unless $P10, rx644_fail
+ rx644_pos = $P10."pos"()
# rx subrule "parameter" subtype=capture negate=
- rx641_cur."!cursor_pos"(rx641_pos)
- $P10 = rx641_cur."parameter"()
- unless $P10, rx641_fail
- rx641_cur."!mark_push"(0, -1, 0, $P10)
+ rx644_cur."!cursor_pos"(rx644_pos)
+ $P10 = rx644_cur."parameter"()
+ unless $P10, rx644_fail
+ rx644_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("parameter")
- rx641_pos = $P10."pos"()
+ rx644_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx641_cur."!cursor_pos"(rx641_pos)
- $P10 = rx641_cur."ws"()
- unless $P10, rx641_fail
- rx641_pos = $P10."pos"()
- (rx641_rep) = rx641_cur."!mark_commit"($I647)
- rx641_cur."!mark_push"(rx641_rep, rx641_pos, $I647)
+ rx644_cur."!cursor_pos"(rx644_pos)
+ $P10 = rx644_cur."ws"()
+ unless $P10, rx644_fail
+ rx644_pos = $P10."pos"()
+ (rx644_rep) = rx644_cur."!mark_commit"($I650)
+ rx644_cur."!mark_push"(rx644_rep, rx644_pos, $I650)
# rx literal ","
- add $I11, rx641_pos, 1
- gt $I11, rx641_eos, rx641_fail
- sub $I11, rx641_pos, rx641_off
- substr $S10, rx641_tgt, $I11, 1
- ne $S10, ",", rx641_fail
- add rx641_pos, 1
- goto rxquantr646_loop
- rxquantr646_done:
- (rx641_rep) = rx641_cur."!mark_commit"($I648)
- rxquantr645_done:
+ add $I11, rx644_pos, 1
+ gt $I11, rx644_eos, rx644_fail
+ sub $I11, rx644_pos, rx644_off
+ substr $S10, rx644_tgt, $I11, 1
+ ne $S10, ",", rx644_fail
+ add rx644_pos, 1
+ goto rxquantr649_loop
+ rxquantr649_done:
+ (rx644_rep) = rx644_cur."!mark_commit"($I651)
+ rxquantr648_done:
# rx pass
- rx641_cur."!cursor_pass"(rx641_pos, "signature")
- rx641_cur."!cursor_debug"("PASS ", "signature", " at pos=", rx641_pos)
- .return (rx641_cur)
- rx641_fail:
+ rx644_cur."!cursor_pass"(rx644_pos, "signature")
+ rx644_cur."!cursor_debug"("PASS ", "signature", " at pos=", rx644_pos)
+ .return (rx644_cur)
+ rx644_fail:
.annotate "line", 4
- (rx641_rep, rx641_pos, $I10, $P10) = rx641_cur."!mark_fail"(0)
- lt rx641_pos, -1, rx641_done
- eq rx641_pos, -1, rx641_fail
+ (rx644_rep, rx644_pos, $I10, $P10) = rx644_cur."!mark_fail"(0)
+ lt rx644_pos, -1, rx644_done
+ eq rx644_pos, -1, rx644_fail
jump $I10
- rx641_done:
- rx641_cur."!cursor_fail"()
- rx641_cur."!cursor_debug"("FAIL ", "signature")
- .return (rx641_cur)
+ rx644_done:
+ rx644_cur."!cursor_fail"()
+ rx644_cur."!cursor_debug"("FAIL ", "signature")
+ .return (rx644_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature" :subid("154_1267204702.05125") :method
+.sub "!PREFIX__signature" :subid("154_1272816833.94956") :method
.annotate "line", 4
- new $P643, "ResizablePMCArray"
- push $P643, ""
- .return ($P643)
+ new $P646, "ResizablePMCArray"
+ push $P646, ""
+ .return ($P646)
.end
.namespace ["NQP";"Grammar"]
-.sub "parameter" :subid("155_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "parameter" :subid("155_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx650_tgt
- .local int rx650_pos
- .local int rx650_off
- .local int rx650_eos
- .local int rx650_rep
- .local pmc rx650_cur
- (rx650_cur, rx650_pos, rx650_tgt) = self."!cursor_start"()
- rx650_cur."!cursor_debug"("START ", "parameter")
- rx650_cur."!cursor_caparray"("default_value")
- .lex unicode:"$\x{a2}", rx650_cur
+ .local string rx653_tgt
+ .local int rx653_pos
+ .local int rx653_off
+ .local int rx653_eos
+ .local int rx653_rep
+ .local pmc rx653_cur
+ (rx653_cur, rx653_pos, rx653_tgt) = self."!cursor_start"()
+ rx653_cur."!cursor_debug"("START ", "parameter")
+ rx653_cur."!cursor_caparray"("default_value")
+ .lex unicode:"$\x{a2}", rx653_cur
.local pmc match
.lex "$/", match
- length rx650_eos, rx650_tgt
- set rx650_off, 0
- lt rx650_pos, 2, rx650_start
- sub rx650_off, rx650_pos, 1
- substr rx650_tgt, rx650_tgt, rx650_off
- rx650_start:
+ length rx653_eos, rx653_tgt
+ set rx653_off, 0
+ lt rx653_pos, 2, rx653_start
+ sub rx653_off, rx653_pos, 1
+ substr rx653_tgt, rx653_tgt, rx653_off
+ rx653_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan656_done
- goto rxscan656_scan
- rxscan656_loop:
- ($P10) = rx650_cur."from"()
+ ne $I10, -1, rxscan659_done
+ goto rxscan659_scan
+ rxscan659_loop:
+ ($P10) = rx653_cur."from"()
inc $P10
- set rx650_pos, $P10
- ge rx650_pos, rx650_eos, rxscan656_done
- rxscan656_scan:
- set_addr $I10, rxscan656_loop
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
- rxscan656_done:
- alt657_0:
-.annotate "line", 298
- set_addr $I10, alt657_1
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
-.annotate "line", 299
+ set rx653_pos, $P10
+ ge rx653_pos, rx653_eos, rxscan659_done
+ rxscan659_scan:
+ set_addr $I10, rxscan659_loop
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
+ rxscan659_done:
+ alt660_0:
+.annotate "line", 302
+ set_addr $I10, alt660_1
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
+.annotate "line", 303
# rx subcapture "quant"
- set_addr $I10, rxcap_658_fail
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
+ set_addr $I10, rxcap_661_fail
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
# rx literal "*"
- add $I11, rx650_pos, 1
- gt $I11, rx650_eos, rx650_fail
- sub $I11, rx650_pos, rx650_off
- substr $S10, rx650_tgt, $I11, 1
- ne $S10, "*", rx650_fail
- add rx650_pos, 1
- set_addr $I10, rxcap_658_fail
- ($I12, $I11) = rx650_cur."!mark_peek"($I10)
- rx650_cur."!cursor_pos"($I11)
- ($P10) = rx650_cur."!cursor_start"()
- $P10."!cursor_pass"(rx650_pos, "")
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx653_pos, 1
+ gt $I11, rx653_eos, rx653_fail
+ sub $I11, rx653_pos, rx653_off
+ substr $S10, rx653_tgt, $I11, 1
+ ne $S10, "*", rx653_fail
+ add rx653_pos, 1
+ set_addr $I10, rxcap_661_fail
+ ($I12, $I11) = rx653_cur."!mark_peek"($I10)
+ rx653_cur."!cursor_pos"($I11)
+ ($P10) = rx653_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx653_pos, "")
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quant")
- goto rxcap_658_done
- rxcap_658_fail:
- goto rx650_fail
- rxcap_658_done:
+ goto rxcap_661_done
+ rxcap_661_fail:
+ goto rx653_fail
+ rxcap_661_done:
# rx subrule "param_var" subtype=capture negate=
- rx650_cur."!cursor_pos"(rx650_pos)
- $P10 = rx650_cur."param_var"()
- unless $P10, rx650_fail
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ rx653_cur."!cursor_pos"(rx653_pos)
+ $P10 = rx653_cur."param_var"()
+ unless $P10, rx653_fail
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("param_var")
- rx650_pos = $P10."pos"()
- goto alt657_end
- alt657_1:
- alt659_0:
-.annotate "line", 300
- set_addr $I10, alt659_1
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
+ rx653_pos = $P10."pos"()
+ goto alt660_end
+ alt660_1:
+ alt662_0:
+.annotate "line", 304
+ set_addr $I10, alt662_1
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
# rx subrule "param_var" subtype=capture negate=
- rx650_cur."!cursor_pos"(rx650_pos)
- $P10 = rx650_cur."param_var"()
- unless $P10, rx650_fail
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ rx653_cur."!cursor_pos"(rx653_pos)
+ $P10 = rx653_cur."param_var"()
+ unless $P10, rx653_fail
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("param_var")
- rx650_pos = $P10."pos"()
- goto alt659_end
- alt659_1:
+ rx653_pos = $P10."pos"()
+ goto alt662_end
+ alt662_1:
# rx subrule "named_param" subtype=capture negate=
- rx650_cur."!cursor_pos"(rx650_pos)
- $P10 = rx650_cur."named_param"()
- unless $P10, rx650_fail
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ rx653_cur."!cursor_pos"(rx653_pos)
+ $P10 = rx653_cur."named_param"()
+ unless $P10, rx653_fail
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("named_param")
- rx650_pos = $P10."pos"()
- alt659_end:
+ rx653_pos = $P10."pos"()
+ alt662_end:
# rx subcapture "quant"
- set_addr $I10, rxcap_661_fail
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
- alt660_0:
- set_addr $I10, alt660_1
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
+ set_addr $I10, rxcap_664_fail
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
+ alt663_0:
+ set_addr $I10, alt663_1
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
# rx literal "?"
- add $I11, rx650_pos, 1
- gt $I11, rx650_eos, rx650_fail
- sub $I11, rx650_pos, rx650_off
- substr $S10, rx650_tgt, $I11, 1
- ne $S10, "?", rx650_fail
- add rx650_pos, 1
- goto alt660_end
- alt660_1:
- set_addr $I10, alt660_2
- rx650_cur."!mark_push"(0, rx650_pos, $I10)
+ add $I11, rx653_pos, 1
+ gt $I11, rx653_eos, rx653_fail
+ sub $I11, rx653_pos, rx653_off
+ substr $S10, rx653_tgt, $I11, 1
+ ne $S10, "?", rx653_fail
+ add rx653_pos, 1
+ goto alt663_end
+ alt663_1:
+ set_addr $I10, alt663_2
+ rx653_cur."!mark_push"(0, rx653_pos, $I10)
# rx literal "!"
- add $I11, rx650_pos, 1
- gt $I11, rx650_eos, rx650_fail
- sub $I11, rx650_pos, rx650_off
- substr $S10, rx650_tgt, $I11, 1
- ne $S10, "!", rx650_fail
- add rx650_pos, 1
- goto alt660_end
- alt660_2:
- alt660_end:
- set_addr $I10, rxcap_661_fail
- ($I12, $I11) = rx650_cur."!mark_peek"($I10)
- rx650_cur."!cursor_pos"($I11)
- ($P10) = rx650_cur."!cursor_start"()
- $P10."!cursor_pass"(rx650_pos, "")
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx653_pos, 1
+ gt $I11, rx653_eos, rx653_fail
+ sub $I11, rx653_pos, rx653_off
+ substr $S10, rx653_tgt, $I11, 1
+ ne $S10, "!", rx653_fail
+ add rx653_pos, 1
+ goto alt663_end
+ alt663_2:
+ alt663_end:
+ set_addr $I10, rxcap_664_fail
+ ($I12, $I11) = rx653_cur."!mark_peek"($I10)
+ rx653_cur."!cursor_pos"($I11)
+ ($P10) = rx653_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx653_pos, "")
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quant")
- goto rxcap_661_done
- rxcap_661_fail:
- goto rx650_fail
- rxcap_661_done:
- alt657_end:
-.annotate "line", 302
- # rx rxquantr662 ** 0..1
- set_addr $I663, rxquantr662_done
- rx650_cur."!mark_push"(0, rx650_pos, $I663)
- rxquantr662_loop:
+ goto rxcap_664_done
+ rxcap_664_fail:
+ goto rx653_fail
+ rxcap_664_done:
+ alt660_end:
+.annotate "line", 306
+ # rx rxquantr665 ** 0..1
+ set_addr $I666, rxquantr665_done
+ rx653_cur."!mark_push"(0, rx653_pos, $I666)
+ rxquantr665_loop:
# rx subrule "default_value" subtype=capture negate=
- rx650_cur."!cursor_pos"(rx650_pos)
- $P10 = rx650_cur."default_value"()
- unless $P10, rx650_fail
- rx650_cur."!mark_push"(0, -1, 0, $P10)
+ rx653_cur."!cursor_pos"(rx653_pos)
+ $P10 = rx653_cur."default_value"()
+ unless $P10, rx653_fail
+ rx653_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("default_value")
- rx650_pos = $P10."pos"()
- (rx650_rep) = rx650_cur."!mark_commit"($I663)
- rxquantr662_done:
-.annotate "line", 297
+ rx653_pos = $P10."pos"()
+ (rx653_rep) = rx653_cur."!mark_commit"($I666)
+ rxquantr665_done:
+.annotate "line", 301
# rx pass
- rx650_cur."!cursor_pass"(rx650_pos, "parameter")
- rx650_cur."!cursor_debug"("PASS ", "parameter", " at pos=", rx650_pos)
- .return (rx650_cur)
- rx650_fail:
+ rx653_cur."!cursor_pass"(rx653_pos, "parameter")
+ rx653_cur."!cursor_debug"("PASS ", "parameter", " at pos=", rx653_pos)
+ .return (rx653_cur)
+ rx653_fail:
.annotate "line", 4
- (rx650_rep, rx650_pos, $I10, $P10) = rx650_cur."!mark_fail"(0)
- lt rx650_pos, -1, rx650_done
- eq rx650_pos, -1, rx650_fail
+ (rx653_rep, rx653_pos, $I10, $P10) = rx653_cur."!mark_fail"(0)
+ lt rx653_pos, -1, rx653_done
+ eq rx653_pos, -1, rx653_fail
jump $I10
- rx650_done:
- rx650_cur."!cursor_fail"()
- rx650_cur."!cursor_debug"("FAIL ", "parameter")
- .return (rx650_cur)
+ rx653_done:
+ rx653_cur."!cursor_fail"()
+ rx653_cur."!cursor_debug"("FAIL ", "parameter")
+ .return (rx653_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter" :subid("156_1267204702.05125") :method
+.sub "!PREFIX__parameter" :subid("156_1272816833.94956") :method
.annotate "line", 4
- $P652 = self."!PREFIX__!subrule"("named_param", "")
- $P653 = self."!PREFIX__!subrule"("param_var", "")
- $P654 = self."!PREFIX__!subrule"("param_var", "*")
- new $P655, "ResizablePMCArray"
- push $P655, $P652
- push $P655, $P653
- push $P655, $P654
- .return ($P655)
+ $P655 = self."!PREFIX__!subrule"("named_param", "")
+ $P656 = self."!PREFIX__!subrule"("param_var", "")
+ $P657 = self."!PREFIX__!subrule"("param_var", "*")
+ new $P658, "ResizablePMCArray"
+ push $P658, $P655
+ push $P658, $P656
+ push $P658, $P657
+ .return ($P658)
.end
.namespace ["NQP";"Grammar"]
-.sub "param_var" :subid("157_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "param_var" :subid("157_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx665_tgt
- .local int rx665_pos
- .local int rx665_off
- .local int rx665_eos
- .local int rx665_rep
- .local pmc rx665_cur
- (rx665_cur, rx665_pos, rx665_tgt) = self."!cursor_start"()
- rx665_cur."!cursor_debug"("START ", "param_var")
- rx665_cur."!cursor_caparray"("twigil")
- .lex unicode:"$\x{a2}", rx665_cur
+ .local string rx668_tgt
+ .local int rx668_pos
+ .local int rx668_off
+ .local int rx668_eos
+ .local int rx668_rep
+ .local pmc rx668_cur
+ (rx668_cur, rx668_pos, rx668_tgt) = self."!cursor_start"()
+ rx668_cur."!cursor_debug"("START ", "param_var")
+ rx668_cur."!cursor_caparray"("twigil")
+ .lex unicode:"$\x{a2}", rx668_cur
.local pmc match
.lex "$/", match
- length rx665_eos, rx665_tgt
- set rx665_off, 0
- lt rx665_pos, 2, rx665_start
- sub rx665_off, rx665_pos, 1
- substr rx665_tgt, rx665_tgt, rx665_off
- rx665_start:
+ length rx668_eos, rx668_tgt
+ set rx668_off, 0
+ lt rx668_pos, 2, rx668_start
+ sub rx668_off, rx668_pos, 1
+ substr rx668_tgt, rx668_tgt, rx668_off
+ rx668_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan669_done
- goto rxscan669_scan
- rxscan669_loop:
- ($P10) = rx665_cur."from"()
+ ne $I10, -1, rxscan672_done
+ goto rxscan672_scan
+ rxscan672_loop:
+ ($P10) = rx668_cur."from"()
inc $P10
- set rx665_pos, $P10
- ge rx665_pos, rx665_eos, rxscan669_done
- rxscan669_scan:
- set_addr $I10, rxscan669_loop
- rx665_cur."!mark_push"(0, rx665_pos, $I10)
- rxscan669_done:
-.annotate "line", 306
+ set rx668_pos, $P10
+ ge rx668_pos, rx668_eos, rxscan672_done
+ rxscan672_scan:
+ set_addr $I10, rxscan672_loop
+ rx668_cur."!mark_push"(0, rx668_pos, $I10)
+ rxscan672_done:
+.annotate "line", 310
# rx subrule "sigil" subtype=capture negate=
- rx665_cur."!cursor_pos"(rx665_pos)
- $P10 = rx665_cur."sigil"()
- unless $P10, rx665_fail
- rx665_cur."!mark_push"(0, -1, 0, $P10)
+ rx668_cur."!cursor_pos"(rx668_pos)
+ $P10 = rx668_cur."sigil"()
+ unless $P10, rx668_fail
+ rx668_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- rx665_pos = $P10."pos"()
- # rx rxquantr670 ** 0..1
- set_addr $I671, rxquantr670_done
- rx665_cur."!mark_push"(0, rx665_pos, $I671)
- rxquantr670_loop:
+ rx668_pos = $P10."pos"()
+ # rx rxquantr673 ** 0..1
+ set_addr $I674, rxquantr673_done
+ rx668_cur."!mark_push"(0, rx668_pos, $I674)
+ rxquantr673_loop:
# rx subrule "twigil" subtype=capture negate=
- rx665_cur."!cursor_pos"(rx665_pos)
- $P10 = rx665_cur."twigil"()
- unless $P10, rx665_fail
- rx665_cur."!mark_push"(0, -1, 0, $P10)
+ rx668_cur."!cursor_pos"(rx668_pos)
+ $P10 = rx668_cur."twigil"()
+ unless $P10, rx668_fail
+ rx668_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("twigil")
- rx665_pos = $P10."pos"()
- (rx665_rep) = rx665_cur."!mark_commit"($I671)
- rxquantr670_done:
- alt672_0:
-.annotate "line", 307
- set_addr $I10, alt672_1
- rx665_cur."!mark_push"(0, rx665_pos, $I10)
+ rx668_pos = $P10."pos"()
+ (rx668_rep) = rx668_cur."!mark_commit"($I674)
+ rxquantr673_done:
+ alt675_0:
+.annotate "line", 311
+ set_addr $I10, alt675_1
+ rx668_cur."!mark_push"(0, rx668_pos, $I10)
# rx subrule "ident" subtype=capture negate=
- rx665_cur."!cursor_pos"(rx665_pos)
- $P10 = rx665_cur."ident"()
- unless $P10, rx665_fail
- rx665_cur."!mark_push"(0, -1, 0, $P10)
+ rx668_cur."!cursor_pos"(rx668_pos)
+ $P10 = rx668_cur."ident"()
+ unless $P10, rx668_fail
+ rx668_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("name")
- rx665_pos = $P10."pos"()
- goto alt672_end
- alt672_1:
+ rx668_pos = $P10."pos"()
+ goto alt675_end
+ alt675_1:
# rx subcapture "name"
- set_addr $I10, rxcap_673_fail
- rx665_cur."!mark_push"(0, rx665_pos, $I10)
+ set_addr $I10, rxcap_676_fail
+ rx668_cur."!mark_push"(0, rx668_pos, $I10)
# rx enumcharlist negate=0
- ge rx665_pos, rx665_eos, rx665_fail
- sub $I10, rx665_pos, rx665_off
- substr $S10, rx665_tgt, $I10, 1
+ ge rx668_pos, rx668_eos, rx668_fail
+ sub $I10, rx668_pos, rx668_off
+ substr $S10, rx668_tgt, $I10, 1
index $I11, "/!", $S10
- lt $I11, 0, rx665_fail
- inc rx665_pos
- set_addr $I10, rxcap_673_fail
- ($I12, $I11) = rx665_cur."!mark_peek"($I10)
- rx665_cur."!cursor_pos"($I11)
- ($P10) = rx665_cur."!cursor_start"()
- $P10."!cursor_pass"(rx665_pos, "")
- rx665_cur."!mark_push"(0, -1, 0, $P10)
+ lt $I11, 0, rx668_fail
+ inc rx668_pos
+ set_addr $I10, rxcap_676_fail
+ ($I12, $I11) = rx668_cur."!mark_peek"($I10)
+ rx668_cur."!cursor_pos"($I11)
+ ($P10) = rx668_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx668_pos, "")
+ rx668_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("name")
- goto rxcap_673_done
- rxcap_673_fail:
- goto rx665_fail
- rxcap_673_done:
- alt672_end:
-.annotate "line", 305
+ goto rxcap_676_done
+ rxcap_676_fail:
+ goto rx668_fail
+ rxcap_676_done:
+ alt675_end:
+.annotate "line", 309
# rx pass
- rx665_cur."!cursor_pass"(rx665_pos, "param_var")
- rx665_cur."!cursor_debug"("PASS ", "param_var", " at pos=", rx665_pos)
- .return (rx665_cur)
- rx665_fail:
+ rx668_cur."!cursor_pass"(rx668_pos, "param_var")
+ rx668_cur."!cursor_debug"("PASS ", "param_var", " at pos=", rx668_pos)
+ .return (rx668_cur)
+ rx668_fail:
.annotate "line", 4
- (rx665_rep, rx665_pos, $I10, $P10) = rx665_cur."!mark_fail"(0)
- lt rx665_pos, -1, rx665_done
- eq rx665_pos, -1, rx665_fail
+ (rx668_rep, rx668_pos, $I10, $P10) = rx668_cur."!mark_fail"(0)
+ lt rx668_pos, -1, rx668_done
+ eq rx668_pos, -1, rx668_fail
jump $I10
- rx665_done:
- rx665_cur."!cursor_fail"()
- rx665_cur."!cursor_debug"("FAIL ", "param_var")
- .return (rx665_cur)
+ rx668_done:
+ rx668_cur."!cursor_fail"()
+ rx668_cur."!cursor_debug"("FAIL ", "param_var")
+ .return (rx668_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var" :subid("158_1267204702.05125") :method
+.sub "!PREFIX__param_var" :subid("158_1272816833.94956") :method
.annotate "line", 4
- $P667 = self."!PREFIX__!subrule"("sigil", "")
- new $P668, "ResizablePMCArray"
- push $P668, $P667
- .return ($P668)
+ $P670 = self."!PREFIX__!subrule"("sigil", "")
+ new $P671, "ResizablePMCArray"
+ push $P671, $P670
+ .return ($P671)
.end
.namespace ["NQP";"Grammar"]
-.sub "named_param" :subid("159_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "named_param" :subid("159_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx675_tgt
- .local int rx675_pos
- .local int rx675_off
- .local int rx675_eos
- .local int rx675_rep
- .local pmc rx675_cur
- (rx675_cur, rx675_pos, rx675_tgt) = self."!cursor_start"()
- rx675_cur."!cursor_debug"("START ", "named_param")
- .lex unicode:"$\x{a2}", rx675_cur
+ .local string rx678_tgt
+ .local int rx678_pos
+ .local int rx678_off
+ .local int rx678_eos
+ .local int rx678_rep
+ .local pmc rx678_cur
+ (rx678_cur, rx678_pos, rx678_tgt) = self."!cursor_start"()
+ rx678_cur."!cursor_debug"("START ", "named_param")
+ .lex unicode:"$\x{a2}", rx678_cur
.local pmc match
.lex "$/", match
- length rx675_eos, rx675_tgt
- set rx675_off, 0
- lt rx675_pos, 2, rx675_start
- sub rx675_off, rx675_pos, 1
- substr rx675_tgt, rx675_tgt, rx675_off
- rx675_start:
+ length rx678_eos, rx678_tgt
+ set rx678_off, 0
+ lt rx678_pos, 2, rx678_start
+ sub rx678_off, rx678_pos, 1
+ substr rx678_tgt, rx678_tgt, rx678_off
+ rx678_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan679_done
- goto rxscan679_scan
- rxscan679_loop:
- ($P10) = rx675_cur."from"()
+ ne $I10, -1, rxscan682_done
+ goto rxscan682_scan
+ rxscan682_loop:
+ ($P10) = rx678_cur."from"()
inc $P10
- set rx675_pos, $P10
- ge rx675_pos, rx675_eos, rxscan679_done
- rxscan679_scan:
- set_addr $I10, rxscan679_loop
- rx675_cur."!mark_push"(0, rx675_pos, $I10)
- rxscan679_done:
-.annotate "line", 311
+ set rx678_pos, $P10
+ ge rx678_pos, rx678_eos, rxscan682_done
+ rxscan682_scan:
+ set_addr $I10, rxscan682_loop
+ rx678_cur."!mark_push"(0, rx678_pos, $I10)
+ rxscan682_done:
+.annotate "line", 315
# rx literal ":"
- add $I11, rx675_pos, 1
- gt $I11, rx675_eos, rx675_fail
- sub $I11, rx675_pos, rx675_off
- substr $S10, rx675_tgt, $I11, 1
- ne $S10, ":", rx675_fail
- add rx675_pos, 1
+ add $I11, rx678_pos, 1
+ gt $I11, rx678_eos, rx678_fail
+ sub $I11, rx678_pos, rx678_off
+ substr $S10, rx678_tgt, $I11, 1
+ ne $S10, ":", rx678_fail
+ add rx678_pos, 1
# rx subrule "param_var" subtype=capture negate=
- rx675_cur."!cursor_pos"(rx675_pos)
- $P10 = rx675_cur."param_var"()
- unless $P10, rx675_fail
- rx675_cur."!mark_push"(0, -1, 0, $P10)
+ rx678_cur."!cursor_pos"(rx678_pos)
+ $P10 = rx678_cur."param_var"()
+ unless $P10, rx678_fail
+ rx678_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("param_var")
- rx675_pos = $P10."pos"()
-.annotate "line", 310
+ rx678_pos = $P10."pos"()
+.annotate "line", 314
# rx pass
- rx675_cur."!cursor_pass"(rx675_pos, "named_param")
- rx675_cur."!cursor_debug"("PASS ", "named_param", " at pos=", rx675_pos)
- .return (rx675_cur)
- rx675_fail:
+ rx678_cur."!cursor_pass"(rx678_pos, "named_param")
+ rx678_cur."!cursor_debug"("PASS ", "named_param", " at pos=", rx678_pos)
+ .return (rx678_cur)
+ rx678_fail:
.annotate "line", 4
- (rx675_rep, rx675_pos, $I10, $P10) = rx675_cur."!mark_fail"(0)
- lt rx675_pos, -1, rx675_done
- eq rx675_pos, -1, rx675_fail
+ (rx678_rep, rx678_pos, $I10, $P10) = rx678_cur."!mark_fail"(0)
+ lt rx678_pos, -1, rx678_done
+ eq rx678_pos, -1, rx678_fail
jump $I10
- rx675_done:
- rx675_cur."!cursor_fail"()
- rx675_cur."!cursor_debug"("FAIL ", "named_param")
- .return (rx675_cur)
+ rx678_done:
+ rx678_cur."!cursor_fail"()
+ rx678_cur."!cursor_debug"("FAIL ", "named_param")
+ .return (rx678_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param" :subid("160_1267204702.05125") :method
+.sub "!PREFIX__named_param" :subid("160_1272816833.94956") :method
.annotate "line", 4
- $P677 = self."!PREFIX__!subrule"("param_var", ":")
- new $P678, "ResizablePMCArray"
- push $P678, $P677
- .return ($P678)
+ $P680 = self."!PREFIX__!subrule"("param_var", ":")
+ new $P681, "ResizablePMCArray"
+ push $P681, $P680
+ .return ($P681)
.end
.namespace ["NQP";"Grammar"]
-.sub "default_value" :subid("161_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "default_value" :subid("161_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx681_tgt
- .local int rx681_pos
- .local int rx681_off
- .local int rx681_eos
- .local int rx681_rep
- .local pmc rx681_cur
- (rx681_cur, rx681_pos, rx681_tgt) = self."!cursor_start"()
- rx681_cur."!cursor_debug"("START ", "default_value")
- .lex unicode:"$\x{a2}", rx681_cur
+ .local string rx684_tgt
+ .local int rx684_pos
+ .local int rx684_off
+ .local int rx684_eos
+ .local int rx684_rep
+ .local pmc rx684_cur
+ (rx684_cur, rx684_pos, rx684_tgt) = self."!cursor_start"()
+ rx684_cur."!cursor_debug"("START ", "default_value")
+ .lex unicode:"$\x{a2}", rx684_cur
.local pmc match
.lex "$/", match
- length rx681_eos, rx681_tgt
- set rx681_off, 0
- lt rx681_pos, 2, rx681_start
- sub rx681_off, rx681_pos, 1
- substr rx681_tgt, rx681_tgt, rx681_off
- rx681_start:
+ length rx684_eos, rx684_tgt
+ set rx684_off, 0
+ lt rx684_pos, 2, rx684_start
+ sub rx684_off, rx684_pos, 1
+ substr rx684_tgt, rx684_tgt, rx684_off
+ rx684_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan684_done
- goto rxscan684_scan
- rxscan684_loop:
- ($P10) = rx681_cur."from"()
+ ne $I10, -1, rxscan687_done
+ goto rxscan687_scan
+ rxscan687_loop:
+ ($P10) = rx684_cur."from"()
inc $P10
- set rx681_pos, $P10
- ge rx681_pos, rx681_eos, rxscan684_done
- rxscan684_scan:
- set_addr $I10, rxscan684_loop
- rx681_cur."!mark_push"(0, rx681_pos, $I10)
- rxscan684_done:
-.annotate "line", 314
+ set rx684_pos, $P10
+ ge rx684_pos, rx684_eos, rxscan687_done
+ rxscan687_scan:
+ set_addr $I10, rxscan687_loop
+ rx684_cur."!mark_push"(0, rx684_pos, $I10)
+ rxscan687_done:
+.annotate "line", 318
# rx subrule "ws" subtype=method negate=
- rx681_cur."!cursor_pos"(rx681_pos)
- $P10 = rx681_cur."ws"()
- unless $P10, rx681_fail
- rx681_pos = $P10."pos"()
+ rx684_cur."!cursor_pos"(rx684_pos)
+ $P10 = rx684_cur."ws"()
+ unless $P10, rx684_fail
+ rx684_pos = $P10."pos"()
# rx literal "="
- add $I11, rx681_pos, 1
- gt $I11, rx681_eos, rx681_fail
- sub $I11, rx681_pos, rx681_off
- substr $S10, rx681_tgt, $I11, 1
- ne $S10, "=", rx681_fail
- add rx681_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx681_cur."!cursor_pos"(rx681_pos)
- $P10 = rx681_cur."ws"()
- unless $P10, rx681_fail
- rx681_pos = $P10."pos"()
+ add $I11, rx684_pos, 1
+ gt $I11, rx684_eos, rx684_fail
+ sub $I11, rx684_pos, rx684_off
+ substr $S10, rx684_tgt, $I11, 1
+ ne $S10, "=", rx684_fail
+ add rx684_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx684_cur."!cursor_pos"(rx684_pos)
+ $P10 = rx684_cur."ws"()
+ unless $P10, rx684_fail
+ rx684_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx681_cur."!cursor_pos"(rx681_pos)
- $P10 = rx681_cur."EXPR"("i=")
- unless $P10, rx681_fail
- rx681_cur."!mark_push"(0, -1, 0, $P10)
+ rx684_cur."!cursor_pos"(rx684_pos)
+ $P10 = rx684_cur."EXPR"("i=")
+ unless $P10, rx684_fail
+ rx684_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx681_pos = $P10."pos"()
+ rx684_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx681_cur."!cursor_pos"(rx681_pos)
- $P10 = rx681_cur."ws"()
- unless $P10, rx681_fail
- rx681_pos = $P10."pos"()
+ rx684_cur."!cursor_pos"(rx684_pos)
+ $P10 = rx684_cur."ws"()
+ unless $P10, rx684_fail
+ rx684_pos = $P10."pos"()
# rx pass
- rx681_cur."!cursor_pass"(rx681_pos, "default_value")
- rx681_cur."!cursor_debug"("PASS ", "default_value", " at pos=", rx681_pos)
- .return (rx681_cur)
- rx681_fail:
+ rx684_cur."!cursor_pass"(rx684_pos, "default_value")
+ rx684_cur."!cursor_debug"("PASS ", "default_value", " at pos=", rx684_pos)
+ .return (rx684_cur)
+ rx684_fail:
.annotate "line", 4
- (rx681_rep, rx681_pos, $I10, $P10) = rx681_cur."!mark_fail"(0)
- lt rx681_pos, -1, rx681_done
- eq rx681_pos, -1, rx681_fail
+ (rx684_rep, rx684_pos, $I10, $P10) = rx684_cur."!mark_fail"(0)
+ lt rx684_pos, -1, rx684_done
+ eq rx684_pos, -1, rx684_fail
jump $I10
- rx681_done:
- rx681_cur."!cursor_fail"()
- rx681_cur."!cursor_debug"("FAIL ", "default_value")
- .return (rx681_cur)
+ rx684_done:
+ rx684_cur."!cursor_fail"()
+ rx684_cur."!cursor_debug"("FAIL ", "default_value")
+ .return (rx684_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value" :subid("162_1267204702.05125") :method
+.sub "!PREFIX__default_value" :subid("162_1272816833.94956") :method
.annotate "line", 4
- new $P683, "ResizablePMCArray"
- push $P683, ""
- .return ($P683)
+ new $P686, "ResizablePMCArray"
+ push $P686, ""
+ .return ($P686)
.end
.namespace ["NQP";"Grammar"]
-.sub "regex_declarator" :subid("163_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "regex_declarator" :subid("163_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx689_tgt
- .local int rx689_pos
- .local int rx689_off
- .local int rx689_eos
- .local int rx689_rep
- .local pmc rx689_cur
- (rx689_cur, rx689_pos, rx689_tgt) = self."!cursor_start"()
- rx689_cur."!cursor_debug"("START ", "regex_declarator")
- rx689_cur."!cursor_caparray"("signature")
- .lex unicode:"$\x{a2}", rx689_cur
- .local pmc match
- .lex "$/", match
- length rx689_eos, rx689_tgt
- set rx689_off, 0
- lt rx689_pos, 2, rx689_start
- sub rx689_off, rx689_pos, 1
- substr rx689_tgt, rx689_tgt, rx689_off
- rx689_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan692_done
- goto rxscan692_scan
- rxscan692_loop:
- ($P10) = rx689_cur."from"()
- inc $P10
- set rx689_pos, $P10
- ge rx689_pos, rx689_eos, rxscan692_done
- rxscan692_scan:
- set_addr $I10, rxscan692_loop
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
- rxscan692_done:
-.annotate "line", 316
+ .local string rx692_tgt
+ .local int rx692_pos
+ .local int rx692_off
+ .local int rx692_eos
+ .local int rx692_rep
+ .local pmc rx692_cur
+ (rx692_cur, rx692_pos, rx692_tgt) = self."!cursor_start"()
+ rx692_cur."!cursor_debug"("START ", "regex_declarator")
+ rx692_cur."!cursor_caparray"("signature")
+ .lex unicode:"$\x{a2}", rx692_cur
+ .local pmc match
+ .lex "$/", match
+ length rx692_eos, rx692_tgt
+ set rx692_off, 0
+ lt rx692_pos, 2, rx692_start
+ sub rx692_off, rx692_pos, 1
+ substr rx692_tgt, rx692_tgt, rx692_off
+ rx692_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan695_done
+ goto rxscan695_scan
+ rxscan695_loop:
+ ($P10) = rx692_cur."from"()
+ inc $P10
+ set rx692_pos, $P10
+ ge rx692_pos, rx692_eos, rxscan695_done
+ rxscan695_scan:
+ set_addr $I10, rxscan695_loop
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
+ rxscan695_done:
+.annotate "line", 320
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- alt694_0:
-.annotate "line", 317
- set_addr $I10, alt694_1
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
-.annotate "line", 318
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ alt697_0:
+.annotate "line", 321
+ set_addr $I10, alt697_1
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
+.annotate "line", 322
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx subcapture "proto"
- set_addr $I10, rxcap_696_fail
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
+ set_addr $I10, rxcap_699_fail
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
# rx literal "proto"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "proto", rx689_fail
- add rx689_pos, 5
- set_addr $I10, rxcap_696_fail
- ($I12, $I11) = rx689_cur."!mark_peek"($I10)
- rx689_cur."!cursor_pos"($I11)
- ($P10) = rx689_cur."!cursor_start"()
- $P10."!cursor_pass"(rx689_pos, "")
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "proto", rx692_fail
+ add rx692_pos, 5
+ set_addr $I10, rxcap_699_fail
+ ($I12, $I11) = rx692_cur."!mark_peek"($I10)
+ rx692_cur."!cursor_pos"($I11)
+ ($P10) = rx692_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx692_pos, "")
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("proto")
- goto rxcap_696_done
- rxcap_696_fail:
- goto rx689_fail
- rxcap_696_done:
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- alt698_0:
- set_addr $I10, alt698_1
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
+ goto rxcap_699_done
+ rxcap_699_fail:
+ goto rx692_fail
+ rxcap_699_done:
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ alt701_0:
+ set_addr $I10, alt701_1
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
# rx literal "regex"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "regex", rx689_fail
- add rx689_pos, 5
- goto alt698_end
- alt698_1:
- set_addr $I10, alt698_2
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "regex", rx692_fail
+ add rx692_pos, 5
+ goto alt701_end
+ alt701_1:
+ set_addr $I10, alt701_2
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
# rx literal "token"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "token", rx689_fail
- add rx689_pos, 5
- goto alt698_end
- alt698_2:
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "token", rx692_fail
+ add rx692_pos, 5
+ goto alt701_end
+ alt701_2:
# rx literal "rule"
- add $I11, rx689_pos, 4
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 4
- ne $S10, "rule", rx689_fail
- add rx689_pos, 4
- alt698_end:
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 319
+ add $I11, rx692_pos, 4
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 4
+ ne $S10, "rule", rx692_fail
+ add rx692_pos, 4
+ alt701_end:
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 323
# rx subrule "deflongname" subtype=capture negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."deflongname"()
- unless $P10, rx689_fail
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."deflongname"()
+ unless $P10, rx692_fail
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("deflongname")
- rx689_pos = $P10."pos"()
+ rx692_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- alt701_0:
-.annotate "line", 320
- set_addr $I10, alt701_1
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
-.annotate "line", 321
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ alt704_0:
+.annotate "line", 324
+ set_addr $I10, alt704_1
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
+.annotate "line", 325
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx literal "{"
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, "{", rx689_fail
- add rx689_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, "{", rx692_fail
+ add rx692_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx literal "<...>"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "<...>", rx689_fail
- add rx689_pos, 5
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "<...>", rx692_fail
+ add rx692_pos, 5
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx literal "}"
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, "}", rx689_fail
- add rx689_pos, 1
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, "}", rx692_fail
+ add rx692_pos, 1
# rx subrule "ENDSTMT" subtype=zerowidth negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ENDSTMT"()
- unless $P10, rx689_fail
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- goto alt701_end
- alt701_1:
-.annotate "line", 322
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ENDSTMT"()
+ unless $P10, rx692_fail
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ goto alt704_end
+ alt704_1:
+.annotate "line", 326
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx subrule "panic" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."panic"("Proto regex body must be <...>")
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- alt701_end:
-.annotate "line", 323
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."panic"("Proto regex body must be <...>")
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ alt704_end:
+.annotate "line", 327
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 318
- goto alt694_end
- alt694_1:
-.annotate "line", 324
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 322
+ goto alt697_end
+ alt697_1:
+.annotate "line", 328
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx subcapture "sym"
- set_addr $I10, rxcap_711_fail
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
- alt710_0:
- set_addr $I10, alt710_1
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
+ set_addr $I10, rxcap_714_fail
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
+ alt713_0:
+ set_addr $I10, alt713_1
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
# rx literal "regex"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "regex", rx689_fail
- add rx689_pos, 5
- goto alt710_end
- alt710_1:
- set_addr $I10, alt710_2
- rx689_cur."!mark_push"(0, rx689_pos, $I10)
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "regex", rx692_fail
+ add rx692_pos, 5
+ goto alt713_end
+ alt713_1:
+ set_addr $I10, alt713_2
+ rx692_cur."!mark_push"(0, rx692_pos, $I10)
# rx literal "token"
- add $I11, rx689_pos, 5
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 5
- ne $S10, "token", rx689_fail
- add rx689_pos, 5
- goto alt710_end
- alt710_2:
+ add $I11, rx692_pos, 5
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 5
+ ne $S10, "token", rx692_fail
+ add rx692_pos, 5
+ goto alt713_end
+ alt713_2:
# rx literal "rule"
- add $I11, rx689_pos, 4
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 4
- ne $S10, "rule", rx689_fail
- add rx689_pos, 4
- alt710_end:
- set_addr $I10, rxcap_711_fail
- ($I12, $I11) = rx689_cur."!mark_peek"($I10)
- rx689_cur."!cursor_pos"($I11)
- ($P10) = rx689_cur."!cursor_start"()
- $P10."!cursor_pass"(rx689_pos, "")
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx692_pos, 4
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 4
+ ne $S10, "rule", rx692_fail
+ add rx692_pos, 4
+ alt713_end:
+ set_addr $I10, rxcap_714_fail
+ ($I12, $I11) = rx692_cur."!mark_peek"($I10)
+ rx692_cur."!cursor_pos"($I11)
+ ($P10) = rx692_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx692_pos, "")
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_711_done
- rxcap_711_fail:
- goto rx689_fail
- rxcap_711_done:
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 325
+ goto rxcap_714_done
+ rxcap_714_fail:
+ goto rx692_fail
+ rxcap_714_done:
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 329
# rx subrule "deflongname" subtype=capture negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."deflongname"()
- unless $P10, rx689_fail
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."deflongname"()
+ unless $P10, rx692_fail
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("deflongname")
- rx689_pos = $P10."pos"()
+ rx692_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 326
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 330
# rx subrule "newpad" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."newpad"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 327
- # rx rxquantr715 ** 0..1
- set_addr $I720, rxquantr715_done
- rx689_cur."!mark_push"(0, rx689_pos, $I720)
- rxquantr715_loop:
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."newpad"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 331
+ # rx rxquantr718 ** 0..1
+ set_addr $I723, rxquantr718_done
+ rx692_cur."!mark_push"(0, rx692_pos, $I723)
+ rxquantr718_loop:
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx literal "("
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, "(", rx689_fail
- add rx689_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, "(", rx692_fail
+ add rx692_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx subrule "signature" subtype=capture negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."signature"()
- unless $P10, rx689_fail
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."signature"()
+ unless $P10, rx692_fail
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("signature")
- rx689_pos = $P10."pos"()
+ rx692_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, ")", rx689_fail
- add rx689_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- (rx689_rep) = rx689_cur."!mark_commit"($I720)
- rxquantr715_done:
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 328
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, ")", rx692_fail
+ add rx692_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ (rx692_rep) = rx692_cur."!mark_commit"($I723)
+ rxquantr718_done:
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 332
# rx reduce name="regex_declarator" key="open"
- rx689_cur."!cursor_pos"(rx689_pos)
- rx689_cur."!reduce"("regex_declarator", "open")
+ rx692_cur."!cursor_pos"(rx692_pos)
+ rx692_cur."!reduce"("regex_declarator", "open")
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 329
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 333
# rx literal "{"
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, "{", rx689_fail
- add rx689_pos, 1
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, "{", rx692_fail
+ add rx692_pos, 1
# rx subrule "LANG" subtype=capture negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."LANG"("Regex", "nibbler")
- unless $P10, rx689_fail
- rx689_cur."!mark_push"(0, -1, 0, $P10)
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."LANG"("Regex", "nibbler")
+ unless $P10, rx692_fail
+ rx692_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("p6regex")
- rx689_pos = $P10."pos"()
+ rx692_pos = $P10."pos"()
# rx literal "}"
- add $I11, rx689_pos, 1
- gt $I11, rx689_eos, rx689_fail
- sub $I11, rx689_pos, rx689_off
- substr $S10, rx689_tgt, $I11, 1
- ne $S10, "}", rx689_fail
- add rx689_pos, 1
+ add $I11, rx692_pos, 1
+ gt $I11, rx692_eos, rx692_fail
+ sub $I11, rx692_pos, rx692_off
+ substr $S10, rx692_tgt, $I11, 1
+ ne $S10, "}", rx692_fail
+ add rx692_pos, 1
# rx subrule "ENDSTMT" subtype=zerowidth negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ENDSTMT"()
- unless $P10, rx689_fail
- # rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
- alt694_end:
-.annotate "line", 330
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ENDSTMT"()
+ unless $P10, rx692_fail
+ # rx subrule "ws" subtype=method negate=
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+ alt697_end:
+.annotate "line", 334
# rx subrule "ws" subtype=method negate=
- rx689_cur."!cursor_pos"(rx689_pos)
- $P10 = rx689_cur."ws"()
- unless $P10, rx689_fail
- rx689_pos = $P10."pos"()
-.annotate "line", 316
+ rx692_cur."!cursor_pos"(rx692_pos)
+ $P10 = rx692_cur."ws"()
+ unless $P10, rx692_fail
+ rx692_pos = $P10."pos"()
+.annotate "line", 320
# rx pass
- rx689_cur."!cursor_pass"(rx689_pos, "regex_declarator")
- rx689_cur."!cursor_debug"("PASS ", "regex_declarator", " at pos=", rx689_pos)
- .return (rx689_cur)
- rx689_fail:
+ rx692_cur."!cursor_pass"(rx692_pos, "regex_declarator")
+ rx692_cur."!cursor_debug"("PASS ", "regex_declarator", " at pos=", rx692_pos)
+ .return (rx692_cur)
+ rx692_fail:
.annotate "line", 4
- (rx689_rep, rx689_pos, $I10, $P10) = rx689_cur."!mark_fail"(0)
- lt rx689_pos, -1, rx689_done
- eq rx689_pos, -1, rx689_fail
+ (rx692_rep, rx692_pos, $I10, $P10) = rx692_cur."!mark_fail"(0)
+ lt rx692_pos, -1, rx692_done
+ eq rx692_pos, -1, rx692_fail
jump $I10
- rx689_done:
- rx689_cur."!cursor_fail"()
- rx689_cur."!cursor_debug"("FAIL ", "regex_declarator")
- .return (rx689_cur)
+ rx692_done:
+ rx692_cur."!cursor_fail"()
+ rx692_cur."!cursor_debug"("FAIL ", "regex_declarator")
+ .return (rx692_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator" :subid("164_1267204702.05125") :method
+.sub "!PREFIX__regex_declarator" :subid("164_1272816833.94956") :method
.annotate "line", 4
- new $P691, "ResizablePMCArray"
- push $P691, ""
- .return ($P691)
+ new $P694, "ResizablePMCArray"
+ push $P694, ""
+ .return ($P694)
.end
.namespace ["NQP";"Grammar"]
-.sub "dotty" :subid("165_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "dotty" :subid("165_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx726_tgt
- .local int rx726_pos
- .local int rx726_off
- .local int rx726_eos
- .local int rx726_rep
- .local pmc rx726_cur
- (rx726_cur, rx726_pos, rx726_tgt) = self."!cursor_start"()
- rx726_cur."!cursor_debug"("START ", "dotty")
- rx726_cur."!cursor_caparray"("args")
- .lex unicode:"$\x{a2}", rx726_cur
+ .local string rx729_tgt
+ .local int rx729_pos
+ .local int rx729_off
+ .local int rx729_eos
+ .local int rx729_rep
+ .local pmc rx729_cur
+ (rx729_cur, rx729_pos, rx729_tgt) = self."!cursor_start"()
+ rx729_cur."!cursor_debug"("START ", "dotty")
+ rx729_cur."!cursor_caparray"("args")
+ .lex unicode:"$\x{a2}", rx729_cur
.local pmc match
.lex "$/", match
- length rx726_eos, rx726_tgt
- set rx726_off, 0
- lt rx726_pos, 2, rx726_start
- sub rx726_off, rx726_pos, 1
- substr rx726_tgt, rx726_tgt, rx726_off
- rx726_start:
+ length rx729_eos, rx729_tgt
+ set rx729_off, 0
+ lt rx729_pos, 2, rx729_start
+ sub rx729_off, rx729_pos, 1
+ substr rx729_tgt, rx729_tgt, rx729_off
+ rx729_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan730_done
- goto rxscan730_scan
- rxscan730_loop:
- ($P10) = rx726_cur."from"()
+ ne $I10, -1, rxscan733_done
+ goto rxscan733_scan
+ rxscan733_loop:
+ ($P10) = rx729_cur."from"()
inc $P10
- set rx726_pos, $P10
- ge rx726_pos, rx726_eos, rxscan730_done
- rxscan730_scan:
- set_addr $I10, rxscan730_loop
- rx726_cur."!mark_push"(0, rx726_pos, $I10)
- rxscan730_done:
-.annotate "line", 334
+ set rx729_pos, $P10
+ ge rx729_pos, rx729_eos, rxscan733_done
+ rxscan733_scan:
+ set_addr $I10, rxscan733_loop
+ rx729_cur."!mark_push"(0, rx729_pos, $I10)
+ rxscan733_done:
+.annotate "line", 338
# rx literal "."
- add $I11, rx726_pos, 1
- gt $I11, rx726_eos, rx726_fail
- sub $I11, rx726_pos, rx726_off
- substr $S10, rx726_tgt, $I11, 1
- ne $S10, ".", rx726_fail
- add rx726_pos, 1
- alt731_0:
-.annotate "line", 335
- set_addr $I10, alt731_1
- rx726_cur."!mark_push"(0, rx726_pos, $I10)
+ add $I11, rx729_pos, 1
+ gt $I11, rx729_eos, rx729_fail
+ sub $I11, rx729_pos, rx729_off
+ substr $S10, rx729_tgt, $I11, 1
+ ne $S10, ".", rx729_fail
+ add rx729_pos, 1
+ alt734_0:
+.annotate "line", 339
+ set_addr $I10, alt734_1
+ rx729_cur."!mark_push"(0, rx729_pos, $I10)
# rx subrule "identifier" subtype=capture negate=
- rx726_cur."!cursor_pos"(rx726_pos)
- $P10 = rx726_cur."identifier"()
- unless $P10, rx726_fail
- rx726_cur."!mark_push"(0, -1, 0, $P10)
+ rx729_cur."!cursor_pos"(rx729_pos)
+ $P10 = rx729_cur."identifier"()
+ unless $P10, rx729_fail
+ rx729_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("longname=identifier")
- rx726_pos = $P10."pos"()
- goto alt731_end
- alt731_1:
-.annotate "line", 336
+ rx729_pos = $P10."pos"()
+ goto alt734_end
+ alt734_1:
+.annotate "line", 340
# rx enumcharlist negate=0 zerowidth
- ge rx726_pos, rx726_eos, rx726_fail
- sub $I10, rx726_pos, rx726_off
- substr $S10, rx726_tgt, $I10, 1
+ ge rx729_pos, rx729_eos, rx729_fail
+ sub $I10, rx729_pos, rx729_off
+ substr $S10, rx729_tgt, $I10, 1
index $I11, "'\"", $S10
- lt $I11, 0, rx726_fail
+ lt $I11, 0, rx729_fail
# rx subrule "quote" subtype=capture negate=
- rx726_cur."!cursor_pos"(rx726_pos)
- $P10 = rx726_cur."quote"()
- unless $P10, rx726_fail
- rx726_cur."!mark_push"(0, -1, 0, $P10)
+ rx729_cur."!cursor_pos"(rx729_pos)
+ $P10 = rx729_cur."quote"()
+ unless $P10, rx729_fail
+ rx729_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote")
- rx726_pos = $P10."pos"()
- alt732_0:
-.annotate "line", 337
- set_addr $I10, alt732_1
- rx726_cur."!mark_push"(0, rx726_pos, $I10)
+ rx729_pos = $P10."pos"()
+ alt735_0:
+.annotate "line", 341
+ set_addr $I10, alt735_1
+ rx729_cur."!mark_push"(0, rx729_pos, $I10)
# rx enumcharlist negate=0 zerowidth
- ge rx726_pos, rx726_eos, rx726_fail
- sub $I10, rx726_pos, rx726_off
- substr $S10, rx726_tgt, $I10, 1
+ ge rx729_pos, rx729_eos, rx729_fail
+ sub $I10, rx729_pos, rx729_off
+ substr $S10, rx729_tgt, $I10, 1
index $I11, "(", $S10
- lt $I11, 0, rx726_fail
- goto alt732_end
- alt732_1:
+ lt $I11, 0, rx729_fail
+ goto alt735_end
+ alt735_1:
# rx subrule "panic" subtype=method negate=
- rx726_cur."!cursor_pos"(rx726_pos)
- $P10 = rx726_cur."panic"("Quoted method name requires parenthesized arguments")
- unless $P10, rx726_fail
- rx726_pos = $P10."pos"()
- alt732_end:
- alt731_end:
-.annotate "line", 343
- # rx rxquantr733 ** 0..1
- set_addr $I735, rxquantr733_done
- rx726_cur."!mark_push"(0, rx726_pos, $I735)
- rxquantr733_loop:
- alt734_0:
-.annotate "line", 340
- set_addr $I10, alt734_1
- rx726_cur."!mark_push"(0, rx726_pos, $I10)
-.annotate "line", 341
+ rx729_cur."!cursor_pos"(rx729_pos)
+ $P10 = rx729_cur."panic"("Quoted method name requires parenthesized arguments")
+ unless $P10, rx729_fail
+ rx729_pos = $P10."pos"()
+ alt735_end:
+ alt734_end:
+.annotate "line", 347
+ # rx rxquantr736 ** 0..1
+ set_addr $I738, rxquantr736_done
+ rx729_cur."!mark_push"(0, rx729_pos, $I738)
+ rxquantr736_loop:
+ alt737_0:
+.annotate "line", 344
+ set_addr $I10, alt737_1
+ rx729_cur."!mark_push"(0, rx729_pos, $I10)
+.annotate "line", 345
# rx enumcharlist negate=0 zerowidth
- ge rx726_pos, rx726_eos, rx726_fail
- sub $I10, rx726_pos, rx726_off
- substr $S10, rx726_tgt, $I10, 1
+ ge rx729_pos, rx729_eos, rx729_fail
+ sub $I10, rx729_pos, rx729_off
+ substr $S10, rx729_tgt, $I10, 1
index $I11, "(", $S10
- lt $I11, 0, rx726_fail
+ lt $I11, 0, rx729_fail
# rx subrule "args" subtype=capture negate=
- rx726_cur."!cursor_pos"(rx726_pos)
- $P10 = rx726_cur."args"()
- unless $P10, rx726_fail
- rx726_cur."!mark_push"(0, -1, 0, $P10)
+ rx729_cur."!cursor_pos"(rx729_pos)
+ $P10 = rx729_cur."args"()
+ unless $P10, rx729_fail
+ rx729_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("args")
- rx726_pos = $P10."pos"()
- goto alt734_end
- alt734_1:
-.annotate "line", 342
+ rx729_pos = $P10."pos"()
+ goto alt737_end
+ alt737_1:
+.annotate "line", 346
# rx literal ":"
- add $I11, rx726_pos, 1
- gt $I11, rx726_eos, rx726_fail
- sub $I11, rx726_pos, rx726_off
- substr $S10, rx726_tgt, $I11, 1
- ne $S10, ":", rx726_fail
- add rx726_pos, 1
+ add $I11, rx729_pos, 1
+ gt $I11, rx729_eos, rx729_fail
+ sub $I11, rx729_pos, rx729_off
+ substr $S10, rx729_tgt, $I11, 1
+ ne $S10, ":", rx729_fail
+ add rx729_pos, 1
# rx charclass s
- ge rx726_pos, rx726_eos, rx726_fail
- sub $I10, rx726_pos, rx726_off
- is_cclass $I11, 32, rx726_tgt, $I10
- unless $I11, rx726_fail
- inc rx726_pos
+ ge rx729_pos, rx729_eos, rx729_fail
+ sub $I10, rx729_pos, rx729_off
+ is_cclass $I11, 32, rx729_tgt, $I10
+ unless $I11, rx729_fail
+ inc rx729_pos
# rx subrule "arglist" subtype=capture negate=
- rx726_cur."!cursor_pos"(rx726_pos)
- $P10 = rx726_cur."arglist"()
- unless $P10, rx726_fail
- rx726_cur."!mark_push"(0, -1, 0, $P10)
+ rx729_cur."!cursor_pos"(rx729_pos)
+ $P10 = rx729_cur."arglist"()
+ unless $P10, rx729_fail
+ rx729_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("args")
- rx726_pos = $P10."pos"()
- alt734_end:
-.annotate "line", 343
- (rx726_rep) = rx726_cur."!mark_commit"($I735)
- rxquantr733_done:
-.annotate "line", 333
+ rx729_pos = $P10."pos"()
+ alt737_end:
+.annotate "line", 347
+ (rx729_rep) = rx729_cur."!mark_commit"($I738)
+ rxquantr736_done:
+.annotate "line", 337
# rx pass
- rx726_cur."!cursor_pass"(rx726_pos, "dotty")
- rx726_cur."!cursor_debug"("PASS ", "dotty", " at pos=", rx726_pos)
- .return (rx726_cur)
- rx726_fail:
+ rx729_cur."!cursor_pass"(rx729_pos, "dotty")
+ rx729_cur."!cursor_debug"("PASS ", "dotty", " at pos=", rx729_pos)
+ .return (rx729_cur)
+ rx729_fail:
.annotate "line", 4
- (rx726_rep, rx726_pos, $I10, $P10) = rx726_cur."!mark_fail"(0)
- lt rx726_pos, -1, rx726_done
- eq rx726_pos, -1, rx726_fail
+ (rx729_rep, rx729_pos, $I10, $P10) = rx729_cur."!mark_fail"(0)
+ lt rx729_pos, -1, rx729_done
+ eq rx729_pos, -1, rx729_fail
jump $I10
- rx726_done:
- rx726_cur."!cursor_fail"()
- rx726_cur."!cursor_debug"("FAIL ", "dotty")
- .return (rx726_cur)
+ rx729_done:
+ rx729_cur."!cursor_fail"()
+ rx729_cur."!cursor_debug"("FAIL ", "dotty")
+ .return (rx729_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty" :subid("166_1267204702.05125") :method
+.sub "!PREFIX__dotty" :subid("166_1272816833.94956") :method
.annotate "line", 4
- $P728 = self."!PREFIX__!subrule"("longname=identifier", ".")
- new $P729, "ResizablePMCArray"
- push $P729, "'"
- push $P729, "\""
- push $P729, $P728
- .return ($P729)
+ $P731 = self."!PREFIX__!subrule"("longname=identifier", ".")
+ new $P732, "ResizablePMCArray"
+ push $P732, "'"
+ push $P732, "\""
+ push $P732, $P731
+ .return ($P732)
.end
.namespace ["NQP";"Grammar"]
-.sub "term" :subid("167_1267204702.05125") :method
-.annotate "line", 347
- $P737 = self."!protoregex"("term")
- .return ($P737)
+.sub "term" :subid("167_1272816833.94956") :method
+.annotate "line", 351
+ $P740 = self."!protoregex"("term")
+ .return ($P740)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term" :subid("168_1267204702.05125") :method
-.annotate "line", 347
- $P739 = self."!PREFIX__!protoregex"("term")
- .return ($P739)
+.sub "!PREFIX__term" :subid("168_1272816833.94956") :method
+.annotate "line", 351
+ $P742 = self."!PREFIX__!protoregex"("term")
+ .return ($P742)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<self>" :subid("169_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<self>" :subid("169_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx741_tgt
- .local int rx741_pos
- .local int rx741_off
- .local int rx741_eos
- .local int rx741_rep
- .local pmc rx741_cur
- (rx741_cur, rx741_pos, rx741_tgt) = self."!cursor_start"()
- rx741_cur."!cursor_debug"("START ", "term:sym<self>")
- .lex unicode:"$\x{a2}", rx741_cur
- .local pmc match
- .lex "$/", match
- length rx741_eos, rx741_tgt
- set rx741_off, 0
- lt rx741_pos, 2, rx741_start
- sub rx741_off, rx741_pos, 1
- substr rx741_tgt, rx741_tgt, rx741_off
- rx741_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan744_done
- goto rxscan744_scan
- rxscan744_loop:
- ($P10) = rx741_cur."from"()
- inc $P10
- set rx741_pos, $P10
- ge rx741_pos, rx741_eos, rxscan744_done
- rxscan744_scan:
- set_addr $I10, rxscan744_loop
- rx741_cur."!mark_push"(0, rx741_pos, $I10)
- rxscan744_done:
-.annotate "line", 349
+ .local string rx744_tgt
+ .local int rx744_pos
+ .local int rx744_off
+ .local int rx744_eos
+ .local int rx744_rep
+ .local pmc rx744_cur
+ (rx744_cur, rx744_pos, rx744_tgt) = self."!cursor_start"()
+ rx744_cur."!cursor_debug"("START ", "term:sym<self>")
+ .lex unicode:"$\x{a2}", rx744_cur
+ .local pmc match
+ .lex "$/", match
+ length rx744_eos, rx744_tgt
+ set rx744_off, 0
+ lt rx744_pos, 2, rx744_start
+ sub rx744_off, rx744_pos, 1
+ substr rx744_tgt, rx744_tgt, rx744_off
+ rx744_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan747_done
+ goto rxscan747_scan
+ rxscan747_loop:
+ ($P10) = rx744_cur."from"()
+ inc $P10
+ set rx744_pos, $P10
+ ge rx744_pos, rx744_eos, rxscan747_done
+ rxscan747_scan:
+ set_addr $I10, rxscan747_loop
+ rx744_cur."!mark_push"(0, rx744_pos, $I10)
+ rxscan747_done:
+.annotate "line", 353
# rx subcapture "sym"
- set_addr $I10, rxcap_745_fail
- rx741_cur."!mark_push"(0, rx741_pos, $I10)
+ set_addr $I10, rxcap_748_fail
+ rx744_cur."!mark_push"(0, rx744_pos, $I10)
# rx literal "self"
- add $I11, rx741_pos, 4
- gt $I11, rx741_eos, rx741_fail
- sub $I11, rx741_pos, rx741_off
- substr $S10, rx741_tgt, $I11, 4
- ne $S10, "self", rx741_fail
- add rx741_pos, 4
- set_addr $I10, rxcap_745_fail
- ($I12, $I11) = rx741_cur."!mark_peek"($I10)
- rx741_cur."!cursor_pos"($I11)
- ($P10) = rx741_cur."!cursor_start"()
- $P10."!cursor_pass"(rx741_pos, "")
- rx741_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx744_pos, 4
+ gt $I11, rx744_eos, rx744_fail
+ sub $I11, rx744_pos, rx744_off
+ substr $S10, rx744_tgt, $I11, 4
+ ne $S10, "self", rx744_fail
+ add rx744_pos, 4
+ set_addr $I10, rxcap_748_fail
+ ($I12, $I11) = rx744_cur."!mark_peek"($I10)
+ rx744_cur."!cursor_pos"($I11)
+ ($P10) = rx744_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx744_pos, "")
+ rx744_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_745_done
- rxcap_745_fail:
- goto rx741_fail
- rxcap_745_done:
+ goto rxcap_748_done
+ rxcap_748_fail:
+ goto rx744_fail
+ rxcap_748_done:
# rxanchor rwb
- le rx741_pos, 0, rx741_fail
- sub $I10, rx741_pos, rx741_off
- is_cclass $I11, 8192, rx741_tgt, $I10
- if $I11, rx741_fail
+ le rx744_pos, 0, rx744_fail
+ sub $I10, rx744_pos, rx744_off
+ is_cclass $I11, 8192, rx744_tgt, $I10
+ if $I11, rx744_fail
dec $I10
- is_cclass $I11, 8192, rx741_tgt, $I10
- unless $I11, rx741_fail
+ is_cclass $I11, 8192, rx744_tgt, $I10
+ unless $I11, rx744_fail
# rx pass
- rx741_cur."!cursor_pass"(rx741_pos, "term:sym<self>")
- rx741_cur."!cursor_debug"("PASS ", "term:sym<self>", " at pos=", rx741_pos)
- .return (rx741_cur)
- rx741_fail:
+ rx744_cur."!cursor_pass"(rx744_pos, "term:sym<self>")
+ rx744_cur."!cursor_debug"("PASS ", "term:sym<self>", " at pos=", rx744_pos)
+ .return (rx744_cur)
+ rx744_fail:
.annotate "line", 4
- (rx741_rep, rx741_pos, $I10, $P10) = rx741_cur."!mark_fail"(0)
- lt rx741_pos, -1, rx741_done
- eq rx741_pos, -1, rx741_fail
+ (rx744_rep, rx744_pos, $I10, $P10) = rx744_cur."!mark_fail"(0)
+ lt rx744_pos, -1, rx744_done
+ eq rx744_pos, -1, rx744_fail
jump $I10
- rx741_done:
- rx741_cur."!cursor_fail"()
- rx741_cur."!cursor_debug"("FAIL ", "term:sym<self>")
- .return (rx741_cur)
+ rx744_done:
+ rx744_cur."!cursor_fail"()
+ rx744_cur."!cursor_debug"("FAIL ", "term:sym<self>")
+ .return (rx744_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>" :subid("170_1267204702.05125") :method
+.sub "!PREFIX__term:sym<self>" :subid("170_1272816833.94956") :method
.annotate "line", 4
- new $P743, "ResizablePMCArray"
- push $P743, "self"
- .return ($P743)
+ new $P746, "ResizablePMCArray"
+ push $P746, "self"
+ .return ($P746)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>" :subid("171_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<identifier>" :subid("171_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx747_tgt
- .local int rx747_pos
- .local int rx747_off
- .local int rx747_eos
- .local int rx747_rep
- .local pmc rx747_cur
- (rx747_cur, rx747_pos, rx747_tgt) = self."!cursor_start"()
- rx747_cur."!cursor_debug"("START ", "term:sym<identifier>")
- .lex unicode:"$\x{a2}", rx747_cur
- .local pmc match
- .lex "$/", match
- length rx747_eos, rx747_tgt
- set rx747_off, 0
- lt rx747_pos, 2, rx747_start
- sub rx747_off, rx747_pos, 1
- substr rx747_tgt, rx747_tgt, rx747_off
- rx747_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan751_done
- goto rxscan751_scan
- rxscan751_loop:
- ($P10) = rx747_cur."from"()
- inc $P10
- set rx747_pos, $P10
- ge rx747_pos, rx747_eos, rxscan751_done
- rxscan751_scan:
- set_addr $I10, rxscan751_loop
- rx747_cur."!mark_push"(0, rx747_pos, $I10)
- rxscan751_done:
-.annotate "line", 352
+ .local string rx750_tgt
+ .local int rx750_pos
+ .local int rx750_off
+ .local int rx750_eos
+ .local int rx750_rep
+ .local pmc rx750_cur
+ (rx750_cur, rx750_pos, rx750_tgt) = self."!cursor_start"()
+ rx750_cur."!cursor_debug"("START ", "term:sym<identifier>")
+ .lex unicode:"$\x{a2}", rx750_cur
+ .local pmc match
+ .lex "$/", match
+ length rx750_eos, rx750_tgt
+ set rx750_off, 0
+ lt rx750_pos, 2, rx750_start
+ sub rx750_off, rx750_pos, 1
+ substr rx750_tgt, rx750_tgt, rx750_off
+ rx750_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan754_done
+ goto rxscan754_scan
+ rxscan754_loop:
+ ($P10) = rx750_cur."from"()
+ inc $P10
+ set rx750_pos, $P10
+ ge rx750_pos, rx750_eos, rxscan754_done
+ rxscan754_scan:
+ set_addr $I10, rxscan754_loop
+ rx750_cur."!mark_push"(0, rx750_pos, $I10)
+ rxscan754_done:
+.annotate "line", 356
# rx subrule "identifier" subtype=capture negate=
- rx747_cur."!cursor_pos"(rx747_pos)
- $P10 = rx747_cur."identifier"()
- unless $P10, rx747_fail
- rx747_cur."!mark_push"(0, -1, 0, $P10)
+ rx750_cur."!cursor_pos"(rx750_pos)
+ $P10 = rx750_cur."identifier"()
+ unless $P10, rx750_fail
+ rx750_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("identifier")
- rx747_pos = $P10."pos"()
+ rx750_pos = $P10."pos"()
# rx enumcharlist negate=0 zerowidth
- ge rx747_pos, rx747_eos, rx747_fail
- sub $I10, rx747_pos, rx747_off
- substr $S10, rx747_tgt, $I10, 1
+ ge rx750_pos, rx750_eos, rx750_fail
+ sub $I10, rx750_pos, rx750_off
+ substr $S10, rx750_tgt, $I10, 1
index $I11, "(", $S10
- lt $I11, 0, rx747_fail
+ lt $I11, 0, rx750_fail
# rx subrule "args" subtype=capture negate=
- rx747_cur."!cursor_pos"(rx747_pos)
- $P10 = rx747_cur."args"()
- unless $P10, rx747_fail
- rx747_cur."!mark_push"(0, -1, 0, $P10)
+ rx750_cur."!cursor_pos"(rx750_pos)
+ $P10 = rx750_cur."args"()
+ unless $P10, rx750_fail
+ rx750_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("args")
- rx747_pos = $P10."pos"()
-.annotate "line", 351
+ rx750_pos = $P10."pos"()
+.annotate "line", 355
# rx pass
- rx747_cur."!cursor_pass"(rx747_pos, "term:sym<identifier>")
- rx747_cur."!cursor_debug"("PASS ", "term:sym<identifier>", " at pos=", rx747_pos)
- .return (rx747_cur)
- rx747_fail:
+ rx750_cur."!cursor_pass"(rx750_pos, "term:sym<identifier>")
+ rx750_cur."!cursor_debug"("PASS ", "term:sym<identifier>", " at pos=", rx750_pos)
+ .return (rx750_cur)
+ rx750_fail:
.annotate "line", 4
- (rx747_rep, rx747_pos, $I10, $P10) = rx747_cur."!mark_fail"(0)
- lt rx747_pos, -1, rx747_done
- eq rx747_pos, -1, rx747_fail
+ (rx750_rep, rx750_pos, $I10, $P10) = rx750_cur."!mark_fail"(0)
+ lt rx750_pos, -1, rx750_done
+ eq rx750_pos, -1, rx750_fail
jump $I10
- rx747_done:
- rx747_cur."!cursor_fail"()
- rx747_cur."!cursor_debug"("FAIL ", "term:sym<identifier>")
- .return (rx747_cur)
+ rx750_done:
+ rx750_cur."!cursor_fail"()
+ rx750_cur."!cursor_debug"("FAIL ", "term:sym<identifier>")
+ .return (rx750_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>" :subid("172_1267204702.05125") :method
+.sub "!PREFIX__term:sym<identifier>" :subid("172_1272816833.94956") :method
.annotate "line", 4
- $P749 = self."!PREFIX__!subrule"("identifier", "")
- new $P750, "ResizablePMCArray"
- push $P750, $P749
- .return ($P750)
+ $P752 = self."!PREFIX__!subrule"("identifier", "")
+ new $P753, "ResizablePMCArray"
+ push $P753, $P752
+ .return ($P753)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<name>" :subid("173_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<name>" :subid("173_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx753_tgt
- .local int rx753_pos
- .local int rx753_off
- .local int rx753_eos
- .local int rx753_rep
- .local pmc rx753_cur
- (rx753_cur, rx753_pos, rx753_tgt) = self."!cursor_start"()
- rx753_cur."!cursor_debug"("START ", "term:sym<name>")
- rx753_cur."!cursor_caparray"("args")
- .lex unicode:"$\x{a2}", rx753_cur
+ .local string rx756_tgt
+ .local int rx756_pos
+ .local int rx756_off
+ .local int rx756_eos
+ .local int rx756_rep
+ .local pmc rx756_cur
+ (rx756_cur, rx756_pos, rx756_tgt) = self."!cursor_start"()
+ rx756_cur."!cursor_debug"("START ", "term:sym<name>")
+ rx756_cur."!cursor_caparray"("args")
+ .lex unicode:"$\x{a2}", rx756_cur
.local pmc match
.lex "$/", match
- length rx753_eos, rx753_tgt
- set rx753_off, 0
- lt rx753_pos, 2, rx753_start
- sub rx753_off, rx753_pos, 1
- substr rx753_tgt, rx753_tgt, rx753_off
- rx753_start:
+ length rx756_eos, rx756_tgt
+ set rx756_off, 0
+ lt rx756_pos, 2, rx756_start
+ sub rx756_off, rx756_pos, 1
+ substr rx756_tgt, rx756_tgt, rx756_off
+ rx756_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan757_done
- goto rxscan757_scan
- rxscan757_loop:
- ($P10) = rx753_cur."from"()
+ ne $I10, -1, rxscan760_done
+ goto rxscan760_scan
+ rxscan760_loop:
+ ($P10) = rx756_cur."from"()
inc $P10
- set rx753_pos, $P10
- ge rx753_pos, rx753_eos, rxscan757_done
- rxscan757_scan:
- set_addr $I10, rxscan757_loop
- rx753_cur."!mark_push"(0, rx753_pos, $I10)
- rxscan757_done:
-.annotate "line", 356
+ set rx756_pos, $P10
+ ge rx756_pos, rx756_eos, rxscan760_done
+ rxscan760_scan:
+ set_addr $I10, rxscan760_loop
+ rx756_cur."!mark_push"(0, rx756_pos, $I10)
+ rxscan760_done:
+.annotate "line", 360
# rx subrule "name" subtype=capture negate=
- rx753_cur."!cursor_pos"(rx753_pos)
- $P10 = rx753_cur."name"()
- unless $P10, rx753_fail
- rx753_cur."!mark_push"(0, -1, 0, $P10)
+ rx756_cur."!cursor_pos"(rx756_pos)
+ $P10 = rx756_cur."name"()
+ unless $P10, rx756_fail
+ rx756_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("name")
- rx753_pos = $P10."pos"()
- # rx rxquantr758 ** 0..1
- set_addr $I759, rxquantr758_done
- rx753_cur."!mark_push"(0, rx753_pos, $I759)
- rxquantr758_loop:
+ rx756_pos = $P10."pos"()
+ # rx rxquantr761 ** 0..1
+ set_addr $I762, rxquantr761_done
+ rx756_cur."!mark_push"(0, rx756_pos, $I762)
+ rxquantr761_loop:
# rx subrule "args" subtype=capture negate=
- rx753_cur."!cursor_pos"(rx753_pos)
- $P10 = rx753_cur."args"()
- unless $P10, rx753_fail
- rx753_cur."!mark_push"(0, -1, 0, $P10)
+ rx756_cur."!cursor_pos"(rx756_pos)
+ $P10 = rx756_cur."args"()
+ unless $P10, rx756_fail
+ rx756_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("args")
- rx753_pos = $P10."pos"()
- (rx753_rep) = rx753_cur."!mark_commit"($I759)
- rxquantr758_done:
-.annotate "line", 355
+ rx756_pos = $P10."pos"()
+ (rx756_rep) = rx756_cur."!mark_commit"($I762)
+ rxquantr761_done:
+.annotate "line", 359
# rx pass
- rx753_cur."!cursor_pass"(rx753_pos, "term:sym<name>")
- rx753_cur."!cursor_debug"("PASS ", "term:sym<name>", " at pos=", rx753_pos)
- .return (rx753_cur)
- rx753_fail:
+ rx756_cur."!cursor_pass"(rx756_pos, "term:sym<name>")
+ rx756_cur."!cursor_debug"("PASS ", "term:sym<name>", " at pos=", rx756_pos)
+ .return (rx756_cur)
+ rx756_fail:
.annotate "line", 4
- (rx753_rep, rx753_pos, $I10, $P10) = rx753_cur."!mark_fail"(0)
- lt rx753_pos, -1, rx753_done
- eq rx753_pos, -1, rx753_fail
+ (rx756_rep, rx756_pos, $I10, $P10) = rx756_cur."!mark_fail"(0)
+ lt rx756_pos, -1, rx756_done
+ eq rx756_pos, -1, rx756_fail
jump $I10
- rx753_done:
- rx753_cur."!cursor_fail"()
- rx753_cur."!cursor_debug"("FAIL ", "term:sym<name>")
- .return (rx753_cur)
+ rx756_done:
+ rx756_cur."!cursor_fail"()
+ rx756_cur."!cursor_debug"("FAIL ", "term:sym<name>")
+ .return (rx756_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>" :subid("174_1267204702.05125") :method
+.sub "!PREFIX__term:sym<name>" :subid("174_1272816833.94956") :method
.annotate "line", 4
- $P755 = self."!PREFIX__!subrule"("name", "")
- new $P756, "ResizablePMCArray"
- push $P756, $P755
- .return ($P756)
+ $P758 = self."!PREFIX__!subrule"("name", "")
+ new $P759, "ResizablePMCArray"
+ push $P759, $P758
+ .return ($P759)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>" :subid("175_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<pir::op>" :subid("175_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx761_tgt
- .local int rx761_pos
- .local int rx761_off
- .local int rx761_eos
- .local int rx761_rep
- .local pmc rx761_cur
- (rx761_cur, rx761_pos, rx761_tgt) = self."!cursor_start"()
- rx761_cur."!cursor_debug"("START ", "term:sym<pir::op>")
- rx761_cur."!cursor_caparray"("args")
- .lex unicode:"$\x{a2}", rx761_cur
- .local pmc match
- .lex "$/", match
- length rx761_eos, rx761_tgt
- set rx761_off, 0
- lt rx761_pos, 2, rx761_start
- sub rx761_off, rx761_pos, 1
- substr rx761_tgt, rx761_tgt, rx761_off
- rx761_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan764_done
- goto rxscan764_scan
- rxscan764_loop:
- ($P10) = rx761_cur."from"()
- inc $P10
- set rx761_pos, $P10
- ge rx761_pos, rx761_eos, rxscan764_done
- rxscan764_scan:
- set_addr $I10, rxscan764_loop
- rx761_cur."!mark_push"(0, rx761_pos, $I10)
- rxscan764_done:
-.annotate "line", 360
+ .local string rx764_tgt
+ .local int rx764_pos
+ .local int rx764_off
+ .local int rx764_eos
+ .local int rx764_rep
+ .local pmc rx764_cur
+ (rx764_cur, rx764_pos, rx764_tgt) = self."!cursor_start"()
+ rx764_cur."!cursor_debug"("START ", "term:sym<pir::op>")
+ rx764_cur."!cursor_caparray"("args")
+ .lex unicode:"$\x{a2}", rx764_cur
+ .local pmc match
+ .lex "$/", match
+ length rx764_eos, rx764_tgt
+ set rx764_off, 0
+ lt rx764_pos, 2, rx764_start
+ sub rx764_off, rx764_pos, 1
+ substr rx764_tgt, rx764_tgt, rx764_off
+ rx764_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan767_done
+ goto rxscan767_scan
+ rxscan767_loop:
+ ($P10) = rx764_cur."from"()
+ inc $P10
+ set rx764_pos, $P10
+ ge rx764_pos, rx764_eos, rxscan767_done
+ rxscan767_scan:
+ set_addr $I10, rxscan767_loop
+ rx764_cur."!mark_push"(0, rx764_pos, $I10)
+ rxscan767_done:
+.annotate "line", 364
# rx literal "pir::"
- add $I11, rx761_pos, 5
- gt $I11, rx761_eos, rx761_fail
- sub $I11, rx761_pos, rx761_off
- substr $S10, rx761_tgt, $I11, 5
- ne $S10, "pir::", rx761_fail
- add rx761_pos, 5
+ add $I11, rx764_pos, 5
+ gt $I11, rx764_eos, rx764_fail
+ sub $I11, rx764_pos, rx764_off
+ substr $S10, rx764_tgt, $I11, 5
+ ne $S10, "pir::", rx764_fail
+ add rx764_pos, 5
# rx subcapture "op"
- set_addr $I10, rxcap_765_fail
- rx761_cur."!mark_push"(0, rx761_pos, $I10)
+ set_addr $I10, rxcap_768_fail
+ rx764_cur."!mark_push"(0, rx764_pos, $I10)
# rx charclass_q w r 1..-1
- sub $I10, rx761_pos, rx761_off
- find_not_cclass $I11, 8192, rx761_tgt, $I10, rx761_eos
+ sub $I10, rx764_pos, rx764_off
+ find_not_cclass $I11, 8192, rx764_tgt, $I10, rx764_eos
add $I12, $I10, 1
- lt $I11, $I12, rx761_fail
- add rx761_pos, rx761_off, $I11
- set_addr $I10, rxcap_765_fail
- ($I12, $I11) = rx761_cur."!mark_peek"($I10)
- rx761_cur."!cursor_pos"($I11)
- ($P10) = rx761_cur."!cursor_start"()
- $P10."!cursor_pass"(rx761_pos, "")
- rx761_cur."!mark_push"(0, -1, 0, $P10)
+ lt $I11, $I12, rx764_fail
+ add rx764_pos, rx764_off, $I11
+ set_addr $I10, rxcap_768_fail
+ ($I12, $I11) = rx764_cur."!mark_peek"($I10)
+ rx764_cur."!cursor_pos"($I11)
+ ($P10) = rx764_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx764_pos, "")
+ rx764_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("op")
- goto rxcap_765_done
- rxcap_765_fail:
- goto rx761_fail
- rxcap_765_done:
- # rx rxquantr766 ** 0..1
- set_addr $I767, rxquantr766_done
- rx761_cur."!mark_push"(0, rx761_pos, $I767)
- rxquantr766_loop:
+ goto rxcap_768_done
+ rxcap_768_fail:
+ goto rx764_fail
+ rxcap_768_done:
+ # rx rxquantr769 ** 0..1
+ set_addr $I770, rxquantr769_done
+ rx764_cur."!mark_push"(0, rx764_pos, $I770)
+ rxquantr769_loop:
# rx subrule "args" subtype=capture negate=
- rx761_cur."!cursor_pos"(rx761_pos)
- $P10 = rx761_cur."args"()
- unless $P10, rx761_fail
- rx761_cur."!mark_push"(0, -1, 0, $P10)
+ rx764_cur."!cursor_pos"(rx764_pos)
+ $P10 = rx764_cur."args"()
+ unless $P10, rx764_fail
+ rx764_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("args")
- rx761_pos = $P10."pos"()
- (rx761_rep) = rx761_cur."!mark_commit"($I767)
- rxquantr766_done:
-.annotate "line", 359
+ rx764_pos = $P10."pos"()
+ (rx764_rep) = rx764_cur."!mark_commit"($I770)
+ rxquantr769_done:
+.annotate "line", 363
# rx pass
- rx761_cur."!cursor_pass"(rx761_pos, "term:sym<pir::op>")
- rx761_cur."!cursor_debug"("PASS ", "term:sym<pir::op>", " at pos=", rx761_pos)
- .return (rx761_cur)
- rx761_fail:
+ rx764_cur."!cursor_pass"(rx764_pos, "term:sym<pir::op>")
+ rx764_cur."!cursor_debug"("PASS ", "term:sym<pir::op>", " at pos=", rx764_pos)
+ .return (rx764_cur)
+ rx764_fail:
.annotate "line", 4
- (rx761_rep, rx761_pos, $I10, $P10) = rx761_cur."!mark_fail"(0)
- lt rx761_pos, -1, rx761_done
- eq rx761_pos, -1, rx761_fail
+ (rx764_rep, rx764_pos, $I10, $P10) = rx764_cur."!mark_fail"(0)
+ lt rx764_pos, -1, rx764_done
+ eq rx764_pos, -1, rx764_fail
jump $I10
- rx761_done:
- rx761_cur."!cursor_fail"()
- rx761_cur."!cursor_debug"("FAIL ", "term:sym<pir::op>")
- .return (rx761_cur)
+ rx764_done:
+ rx764_cur."!cursor_fail"()
+ rx764_cur."!cursor_debug"("FAIL ", "term:sym<pir::op>")
+ .return (rx764_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>" :subid("176_1267204702.05125") :method
+.sub "!PREFIX__term:sym<pir::op>" :subid("176_1272816833.94956") :method
.annotate "line", 4
- new $P763, "ResizablePMCArray"
- push $P763, "pir::"
- .return ($P763)
+ new $P766, "ResizablePMCArray"
+ push $P766, "pir::"
+ .return ($P766)
.end
.namespace ["NQP";"Grammar"]
-.sub "args" :subid("177_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "args" :subid("177_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx769_tgt
- .local int rx769_pos
- .local int rx769_off
- .local int rx769_eos
- .local int rx769_rep
- .local pmc rx769_cur
- (rx769_cur, rx769_pos, rx769_tgt) = self."!cursor_start"()
- rx769_cur."!cursor_debug"("START ", "args")
- .lex unicode:"$\x{a2}", rx769_cur
- .local pmc match
- .lex "$/", match
- length rx769_eos, rx769_tgt
- set rx769_off, 0
- lt rx769_pos, 2, rx769_start
- sub rx769_off, rx769_pos, 1
- substr rx769_tgt, rx769_tgt, rx769_off
- rx769_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan773_done
- goto rxscan773_scan
- rxscan773_loop:
- ($P10) = rx769_cur."from"()
- inc $P10
- set rx769_pos, $P10
- ge rx769_pos, rx769_eos, rxscan773_done
- rxscan773_scan:
- set_addr $I10, rxscan773_loop
- rx769_cur."!mark_push"(0, rx769_pos, $I10)
- rxscan773_done:
-.annotate "line", 364
+ .local string rx772_tgt
+ .local int rx772_pos
+ .local int rx772_off
+ .local int rx772_eos
+ .local int rx772_rep
+ .local pmc rx772_cur
+ (rx772_cur, rx772_pos, rx772_tgt) = self."!cursor_start"()
+ rx772_cur."!cursor_debug"("START ", "args")
+ .lex unicode:"$\x{a2}", rx772_cur
+ .local pmc match
+ .lex "$/", match
+ length rx772_eos, rx772_tgt
+ set rx772_off, 0
+ lt rx772_pos, 2, rx772_start
+ sub rx772_off, rx772_pos, 1
+ substr rx772_tgt, rx772_tgt, rx772_off
+ rx772_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan776_done
+ goto rxscan776_scan
+ rxscan776_loop:
+ ($P10) = rx772_cur."from"()
+ inc $P10
+ set rx772_pos, $P10
+ ge rx772_pos, rx772_eos, rxscan776_done
+ rxscan776_scan:
+ set_addr $I10, rxscan776_loop
+ rx772_cur."!mark_push"(0, rx772_pos, $I10)
+ rxscan776_done:
+.annotate "line", 368
# rx literal "("
- add $I11, rx769_pos, 1
- gt $I11, rx769_eos, rx769_fail
- sub $I11, rx769_pos, rx769_off
- substr $S10, rx769_tgt, $I11, 1
- ne $S10, "(", rx769_fail
- add rx769_pos, 1
+ add $I11, rx772_pos, 1
+ gt $I11, rx772_eos, rx772_fail
+ sub $I11, rx772_pos, rx772_off
+ substr $S10, rx772_tgt, $I11, 1
+ ne $S10, "(", rx772_fail
+ add rx772_pos, 1
# rx subrule "arglist" subtype=capture negate=
- rx769_cur."!cursor_pos"(rx769_pos)
- $P10 = rx769_cur."arglist"()
- unless $P10, rx769_fail
- rx769_cur."!mark_push"(0, -1, 0, $P10)
+ rx772_cur."!cursor_pos"(rx772_pos)
+ $P10 = rx772_cur."arglist"()
+ unless $P10, rx772_fail
+ rx772_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx769_pos = $P10."pos"()
+ rx772_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx769_pos, 1
- gt $I11, rx769_eos, rx769_fail
- sub $I11, rx769_pos, rx769_off
- substr $S10, rx769_tgt, $I11, 1
- ne $S10, ")", rx769_fail
- add rx769_pos, 1
- # rx pass
- rx769_cur."!cursor_pass"(rx769_pos, "args")
- rx769_cur."!cursor_debug"("PASS ", "args", " at pos=", rx769_pos)
- .return (rx769_cur)
- rx769_fail:
-.annotate "line", 4
- (rx769_rep, rx769_pos, $I10, $P10) = rx769_cur."!mark_fail"(0)
- lt rx769_pos, -1, rx769_done
- eq rx769_pos, -1, rx769_fail
- jump $I10
- rx769_done:
- rx769_cur."!cursor_fail"()
- rx769_cur."!cursor_debug"("FAIL ", "args")
- .return (rx769_cur)
+ add $I11, rx772_pos, 1
+ gt $I11, rx772_eos, rx772_fail
+ sub $I11, rx772_pos, rx772_off
+ substr $S10, rx772_tgt, $I11, 1
+ ne $S10, ")", rx772_fail
+ add rx772_pos, 1
+ # rx pass
+ rx772_cur."!cursor_pass"(rx772_pos, "args")
+ rx772_cur."!cursor_debug"("PASS ", "args", " at pos=", rx772_pos)
+ .return (rx772_cur)
+ rx772_fail:
+.annotate "line", 4
+ (rx772_rep, rx772_pos, $I10, $P10) = rx772_cur."!mark_fail"(0)
+ lt rx772_pos, -1, rx772_done
+ eq rx772_pos, -1, rx772_fail
+ jump $I10
+ rx772_done:
+ rx772_cur."!cursor_fail"()
+ rx772_cur."!cursor_debug"("FAIL ", "args")
+ .return (rx772_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args" :subid("178_1267204702.05125") :method
-.annotate "line", 4
- $P771 = self."!PREFIX__!subrule"("arglist", "(")
- new $P772, "ResizablePMCArray"
- push $P772, $P771
- .return ($P772)
-.end
-
-
-.namespace ["NQP";"Grammar"]
-.sub "arglist" :subid("179_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 4
- .local string rx775_tgt
- .local int rx775_pos
- .local int rx775_off
- .local int rx775_eos
- .local int rx775_rep
- .local pmc rx775_cur
- (rx775_cur, rx775_pos, rx775_tgt) = self."!cursor_start"()
- rx775_cur."!cursor_debug"("START ", "arglist")
- .lex unicode:"$\x{a2}", rx775_cur
- .local pmc match
- .lex "$/", match
- length rx775_eos, rx775_tgt
- set rx775_off, 0
- lt rx775_pos, 2, rx775_start
- sub rx775_off, rx775_pos, 1
- substr rx775_tgt, rx775_tgt, rx775_off
- rx775_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan779_done
- goto rxscan779_scan
- rxscan779_loop:
- ($P10) = rx775_cur."from"()
- inc $P10
- set rx775_pos, $P10
- ge rx775_pos, rx775_eos, rxscan779_done
- rxscan779_scan:
- set_addr $I10, rxscan779_loop
- rx775_cur."!mark_push"(0, rx775_pos, $I10)
- rxscan779_done:
-.annotate "line", 368
- # rx subrule "ws" subtype=method negate=
- rx775_cur."!cursor_pos"(rx775_pos)
- $P10 = rx775_cur."ws"()
- unless $P10, rx775_fail
- rx775_pos = $P10."pos"()
- alt780_0:
-.annotate "line", 369
- set_addr $I10, alt780_1
- rx775_cur."!mark_push"(0, rx775_pos, $I10)
-.annotate "line", 370
+.sub "!PREFIX__args" :subid("178_1272816833.94956") :method
+.annotate "line", 4
+ $P774 = self."!PREFIX__!subrule"("arglist", "(")
+ new $P775, "ResizablePMCArray"
+ push $P775, $P774
+ .return ($P775)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "arglist" :subid("179_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx778_tgt
+ .local int rx778_pos
+ .local int rx778_off
+ .local int rx778_eos
+ .local int rx778_rep
+ .local pmc rx778_cur
+ (rx778_cur, rx778_pos, rx778_tgt) = self."!cursor_start"()
+ rx778_cur."!cursor_debug"("START ", "arglist")
+ .lex unicode:"$\x{a2}", rx778_cur
+ .local pmc match
+ .lex "$/", match
+ length rx778_eos, rx778_tgt
+ set rx778_off, 0
+ lt rx778_pos, 2, rx778_start
+ sub rx778_off, rx778_pos, 1
+ substr rx778_tgt, rx778_tgt, rx778_off
+ rx778_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan782_done
+ goto rxscan782_scan
+ rxscan782_loop:
+ ($P10) = rx778_cur."from"()
+ inc $P10
+ set rx778_pos, $P10
+ ge rx778_pos, rx778_eos, rxscan782_done
+ rxscan782_scan:
+ set_addr $I10, rxscan782_loop
+ rx778_cur."!mark_push"(0, rx778_pos, $I10)
+ rxscan782_done:
+.annotate "line", 372
+ # rx subrule "ws" subtype=method negate=
+ rx778_cur."!cursor_pos"(rx778_pos)
+ $P10 = rx778_cur."ws"()
+ unless $P10, rx778_fail
+ rx778_pos = $P10."pos"()
+ alt783_0:
+.annotate "line", 373
+ set_addr $I10, alt783_1
+ rx778_cur."!mark_push"(0, rx778_pos, $I10)
+.annotate "line", 374
# rx subrule "EXPR" subtype=capture negate=
- rx775_cur."!cursor_pos"(rx775_pos)
- $P10 = rx775_cur."EXPR"("f=")
- unless $P10, rx775_fail
- rx775_cur."!mark_push"(0, -1, 0, $P10)
+ rx778_cur."!cursor_pos"(rx778_pos)
+ $P10 = rx778_cur."EXPR"("f=")
+ unless $P10, rx778_fail
+ rx778_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx775_pos = $P10."pos"()
- goto alt780_end
- alt780_1:
- alt780_end:
-.annotate "line", 367
+ rx778_pos = $P10."pos"()
+ goto alt783_end
+ alt783_1:
+ alt783_end:
+.annotate "line", 371
# rx pass
- rx775_cur."!cursor_pass"(rx775_pos, "arglist")
- rx775_cur."!cursor_debug"("PASS ", "arglist", " at pos=", rx775_pos)
- .return (rx775_cur)
- rx775_fail:
+ rx778_cur."!cursor_pass"(rx778_pos, "arglist")
+ rx778_cur."!cursor_debug"("PASS ", "arglist", " at pos=", rx778_pos)
+ .return (rx778_cur)
+ rx778_fail:
.annotate "line", 4
- (rx775_rep, rx775_pos, $I10, $P10) = rx775_cur."!mark_fail"(0)
- lt rx775_pos, -1, rx775_done
- eq rx775_pos, -1, rx775_fail
+ (rx778_rep, rx778_pos, $I10, $P10) = rx778_cur."!mark_fail"(0)
+ lt rx778_pos, -1, rx778_done
+ eq rx778_pos, -1, rx778_fail
jump $I10
- rx775_done:
- rx775_cur."!cursor_fail"()
- rx775_cur."!cursor_debug"("FAIL ", "arglist")
- .return (rx775_cur)
+ rx778_done:
+ rx778_cur."!cursor_fail"()
+ rx778_cur."!cursor_debug"("FAIL ", "arglist")
+ .return (rx778_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist" :subid("180_1267204702.05125") :method
+.sub "!PREFIX__arglist" :subid("180_1272816833.94956") :method
.annotate "line", 4
- $P777 = self."!PREFIX__!subrule"("", "")
- new $P778, "ResizablePMCArray"
- push $P778, $P777
- .return ($P778)
+ $P780 = self."!PREFIX__!subrule"("", "")
+ new $P781, "ResizablePMCArray"
+ push $P781, $P780
+ .return ($P781)
.end
.namespace ["NQP";"Grammar"]
-.sub "term:sym<value>" :subid("181_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "term:sym<value>" :subid("181_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx782_tgt
- .local int rx782_pos
- .local int rx782_off
- .local int rx782_eos
- .local int rx782_rep
- .local pmc rx782_cur
- (rx782_cur, rx782_pos, rx782_tgt) = self."!cursor_start"()
- rx782_cur."!cursor_debug"("START ", "term:sym<value>")
- .lex unicode:"$\x{a2}", rx782_cur
+ .local string rx785_tgt
+ .local int rx785_pos
+ .local int rx785_off
+ .local int rx785_eos
+ .local int rx785_rep
+ .local pmc rx785_cur
+ (rx785_cur, rx785_pos, rx785_tgt) = self."!cursor_start"()
+ rx785_cur."!cursor_debug"("START ", "term:sym<value>")
+ .lex unicode:"$\x{a2}", rx785_cur
.local pmc match
.lex "$/", match
- length rx782_eos, rx782_tgt
- set rx782_off, 0
- lt rx782_pos, 2, rx782_start
- sub rx782_off, rx782_pos, 1
- substr rx782_tgt, rx782_tgt, rx782_off
- rx782_start:
+ length rx785_eos, rx785_tgt
+ set rx785_off, 0
+ lt rx785_pos, 2, rx785_start
+ sub rx785_off, rx785_pos, 1
+ substr rx785_tgt, rx785_tgt, rx785_off
+ rx785_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan786_done
- goto rxscan786_scan
- rxscan786_loop:
- ($P10) = rx782_cur."from"()
+ ne $I10, -1, rxscan789_done
+ goto rxscan789_scan
+ rxscan789_loop:
+ ($P10) = rx785_cur."from"()
inc $P10
- set rx782_pos, $P10
- ge rx782_pos, rx782_eos, rxscan786_done
- rxscan786_scan:
- set_addr $I10, rxscan786_loop
- rx782_cur."!mark_push"(0, rx782_pos, $I10)
- rxscan786_done:
-.annotate "line", 376
+ set rx785_pos, $P10
+ ge rx785_pos, rx785_eos, rxscan789_done
+ rxscan789_scan:
+ set_addr $I10, rxscan789_loop
+ rx785_cur."!mark_push"(0, rx785_pos, $I10)
+ rxscan789_done:
+.annotate "line", 380
# rx subrule "value" subtype=capture negate=
- rx782_cur."!cursor_pos"(rx782_pos)
- $P10 = rx782_cur."value"()
- unless $P10, rx782_fail
- rx782_cur."!mark_push"(0, -1, 0, $P10)
+ rx785_cur."!cursor_pos"(rx785_pos)
+ $P10 = rx785_cur."value"()
+ unless $P10, rx785_fail
+ rx785_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("value")
- rx782_pos = $P10."pos"()
+ rx785_pos = $P10."pos"()
# rx pass
- rx782_cur."!cursor_pass"(rx782_pos, "term:sym<value>")
- rx782_cur."!cursor_debug"("PASS ", "term:sym<value>", " at pos=", rx782_pos)
- .return (rx782_cur)
- rx782_fail:
+ rx785_cur."!cursor_pass"(rx785_pos, "term:sym<value>")
+ rx785_cur."!cursor_debug"("PASS ", "term:sym<value>", " at pos=", rx785_pos)
+ .return (rx785_cur)
+ rx785_fail:
.annotate "line", 4
- (rx782_rep, rx782_pos, $I10, $P10) = rx782_cur."!mark_fail"(0)
- lt rx782_pos, -1, rx782_done
- eq rx782_pos, -1, rx782_fail
+ (rx785_rep, rx785_pos, $I10, $P10) = rx785_cur."!mark_fail"(0)
+ lt rx785_pos, -1, rx785_done
+ eq rx785_pos, -1, rx785_fail
jump $I10
- rx782_done:
- rx782_cur."!cursor_fail"()
- rx782_cur."!cursor_debug"("FAIL ", "term:sym<value>")
- .return (rx782_cur)
+ rx785_done:
+ rx785_cur."!cursor_fail"()
+ rx785_cur."!cursor_debug"("FAIL ", "term:sym<value>")
+ .return (rx785_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>" :subid("182_1267204702.05125") :method
+.sub "!PREFIX__term:sym<value>" :subid("182_1272816833.94956") :method
.annotate "line", 4
- $P784 = self."!PREFIX__!subrule"("value", "")
- new $P785, "ResizablePMCArray"
- push $P785, $P784
- .return ($P785)
+ $P787 = self."!PREFIX__!subrule"("value", "")
+ new $P788, "ResizablePMCArray"
+ push $P788, $P787
+ .return ($P788)
.end
.namespace ["NQP";"Grammar"]
-.sub "value" :subid("183_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "value" :subid("183_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx788_tgt
- .local int rx788_pos
- .local int rx788_off
- .local int rx788_eos
- .local int rx788_rep
- .local pmc rx788_cur
- (rx788_cur, rx788_pos, rx788_tgt) = self."!cursor_start"()
- rx788_cur."!cursor_debug"("START ", "value")
- .lex unicode:"$\x{a2}", rx788_cur
+ .local string rx791_tgt
+ .local int rx791_pos
+ .local int rx791_off
+ .local int rx791_eos
+ .local int rx791_rep
+ .local pmc rx791_cur
+ (rx791_cur, rx791_pos, rx791_tgt) = self."!cursor_start"()
+ rx791_cur."!cursor_debug"("START ", "value")
+ .lex unicode:"$\x{a2}", rx791_cur
.local pmc match
.lex "$/", match
- length rx788_eos, rx788_tgt
- set rx788_off, 0
- lt rx788_pos, 2, rx788_start
- sub rx788_off, rx788_pos, 1
- substr rx788_tgt, rx788_tgt, rx788_off
- rx788_start:
+ length rx791_eos, rx791_tgt
+ set rx791_off, 0
+ lt rx791_pos, 2, rx791_start
+ sub rx791_off, rx791_pos, 1
+ substr rx791_tgt, rx791_tgt, rx791_off
+ rx791_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan793_done
- goto rxscan793_scan
- rxscan793_loop:
- ($P10) = rx788_cur."from"()
+ ne $I10, -1, rxscan796_done
+ goto rxscan796_scan
+ rxscan796_loop:
+ ($P10) = rx791_cur."from"()
inc $P10
- set rx788_pos, $P10
- ge rx788_pos, rx788_eos, rxscan793_done
- rxscan793_scan:
- set_addr $I10, rxscan793_loop
- rx788_cur."!mark_push"(0, rx788_pos, $I10)
- rxscan793_done:
- alt794_0:
-.annotate "line", 378
- set_addr $I10, alt794_1
- rx788_cur."!mark_push"(0, rx788_pos, $I10)
-.annotate "line", 379
+ set rx791_pos, $P10
+ ge rx791_pos, rx791_eos, rxscan796_done
+ rxscan796_scan:
+ set_addr $I10, rxscan796_loop
+ rx791_cur."!mark_push"(0, rx791_pos, $I10)
+ rxscan796_done:
+ alt797_0:
+.annotate "line", 382
+ set_addr $I10, alt797_1
+ rx791_cur."!mark_push"(0, rx791_pos, $I10)
+.annotate "line", 383
# rx subrule "quote" subtype=capture negate=
- rx788_cur."!cursor_pos"(rx788_pos)
- $P10 = rx788_cur."quote"()
- unless $P10, rx788_fail
- rx788_cur."!mark_push"(0, -1, 0, $P10)
+ rx791_cur."!cursor_pos"(rx791_pos)
+ $P10 = rx791_cur."quote"()
+ unless $P10, rx791_fail
+ rx791_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote")
- rx788_pos = $P10."pos"()
- goto alt794_end
- alt794_1:
-.annotate "line", 380
+ rx791_pos = $P10."pos"()
+ goto alt797_end
+ alt797_1:
+.annotate "line", 384
# rx subrule "number" subtype=capture negate=
- rx788_cur."!cursor_pos"(rx788_pos)
- $P10 = rx788_cur."number"()
- unless $P10, rx788_fail
- rx788_cur."!mark_push"(0, -1, 0, $P10)
+ rx791_cur."!cursor_pos"(rx791_pos)
+ $P10 = rx791_cur."number"()
+ unless $P10, rx791_fail
+ rx791_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("number")
- rx788_pos = $P10."pos"()
- alt794_end:
-.annotate "line", 378
+ rx791_pos = $P10."pos"()
+ alt797_end:
+.annotate "line", 382
# rx pass
- rx788_cur."!cursor_pass"(rx788_pos, "value")
- rx788_cur."!cursor_debug"("PASS ", "value", " at pos=", rx788_pos)
- .return (rx788_cur)
- rx788_fail:
+ rx791_cur."!cursor_pass"(rx791_pos, "value")
+ rx791_cur."!cursor_debug"("PASS ", "value", " at pos=", rx791_pos)
+ .return (rx791_cur)
+ rx791_fail:
.annotate "line", 4
- (rx788_rep, rx788_pos, $I10, $P10) = rx788_cur."!mark_fail"(0)
- lt rx788_pos, -1, rx788_done
- eq rx788_pos, -1, rx788_fail
+ (rx791_rep, rx791_pos, $I10, $P10) = rx791_cur."!mark_fail"(0)
+ lt rx791_pos, -1, rx791_done
+ eq rx791_pos, -1, rx791_fail
jump $I10
- rx788_done:
- rx788_cur."!cursor_fail"()
- rx788_cur."!cursor_debug"("FAIL ", "value")
- .return (rx788_cur)
+ rx791_done:
+ rx791_cur."!cursor_fail"()
+ rx791_cur."!cursor_debug"("FAIL ", "value")
+ .return (rx791_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value" :subid("184_1267204702.05125") :method
+.sub "!PREFIX__value" :subid("184_1272816833.94956") :method
.annotate "line", 4
- $P790 = self."!PREFIX__!subrule"("number", "")
- $P791 = self."!PREFIX__!subrule"("quote", "")
- new $P792, "ResizablePMCArray"
- push $P792, $P790
- push $P792, $P791
- .return ($P792)
+ $P793 = self."!PREFIX__!subrule"("number", "")
+ $P794 = self."!PREFIX__!subrule"("quote", "")
+ new $P795, "ResizablePMCArray"
+ push $P795, $P793
+ push $P795, $P794
+ .return ($P795)
.end
.namespace ["NQP";"Grammar"]
-.sub "number" :subid("185_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "number" :subid("185_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx796_tgt
- .local int rx796_pos
- .local int rx796_off
- .local int rx796_eos
- .local int rx796_rep
- .local pmc rx796_cur
- (rx796_cur, rx796_pos, rx796_tgt) = self."!cursor_start"()
- rx796_cur."!cursor_debug"("START ", "number")
- .lex unicode:"$\x{a2}", rx796_cur
+ .local string rx799_tgt
+ .local int rx799_pos
+ .local int rx799_off
+ .local int rx799_eos
+ .local int rx799_rep
+ .local pmc rx799_cur
+ (rx799_cur, rx799_pos, rx799_tgt) = self."!cursor_start"()
+ rx799_cur."!cursor_debug"("START ", "number")
+ .lex unicode:"$\x{a2}", rx799_cur
.local pmc match
.lex "$/", match
- length rx796_eos, rx796_tgt
- set rx796_off, 0
- lt rx796_pos, 2, rx796_start
- sub rx796_off, rx796_pos, 1
- substr rx796_tgt, rx796_tgt, rx796_off
- rx796_start:
+ length rx799_eos, rx799_tgt
+ set rx799_off, 0
+ lt rx799_pos, 2, rx799_start
+ sub rx799_off, rx799_pos, 1
+ substr rx799_tgt, rx799_tgt, rx799_off
+ rx799_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan799_done
- goto rxscan799_scan
- rxscan799_loop:
- ($P10) = rx796_cur."from"()
+ ne $I10, -1, rxscan802_done
+ goto rxscan802_scan
+ rxscan802_loop:
+ ($P10) = rx799_cur."from"()
inc $P10
- set rx796_pos, $P10
- ge rx796_pos, rx796_eos, rxscan799_done
- rxscan799_scan:
- set_addr $I10, rxscan799_loop
- rx796_cur."!mark_push"(0, rx796_pos, $I10)
- rxscan799_done:
-.annotate "line", 384
+ set rx799_pos, $P10
+ ge rx799_pos, rx799_eos, rxscan802_done
+ rxscan802_scan:
+ set_addr $I10, rxscan802_loop
+ rx799_cur."!mark_push"(0, rx799_pos, $I10)
+ rxscan802_done:
+.annotate "line", 388
# rx subcapture "sign"
- set_addr $I10, rxcap_802_fail
- rx796_cur."!mark_push"(0, rx796_pos, $I10)
- # rx rxquantr800 ** 0..1
- set_addr $I801, rxquantr800_done
- rx796_cur."!mark_push"(0, rx796_pos, $I801)
- rxquantr800_loop:
+ set_addr $I10, rxcap_805_fail
+ rx799_cur."!mark_push"(0, rx799_pos, $I10)
+ # rx rxquantr803 ** 0..1
+ set_addr $I804, rxquantr803_done
+ rx799_cur."!mark_push"(0, rx799_pos, $I804)
+ rxquantr803_loop:
# rx enumcharlist negate=0
- ge rx796_pos, rx796_eos, rx796_fail
- sub $I10, rx796_pos, rx796_off
- substr $S10, rx796_tgt, $I10, 1
+ ge rx799_pos, rx799_eos, rx799_fail
+ sub $I10, rx799_pos, rx799_off
+ substr $S10, rx799_tgt, $I10, 1
index $I11, "+-", $S10
- lt $I11, 0, rx796_fail
- inc rx796_pos
- (rx796_rep) = rx796_cur."!mark_commit"($I801)
- rxquantr800_done:
- set_addr $I10, rxcap_802_fail
- ($I12, $I11) = rx796_cur."!mark_peek"($I10)
- rx796_cur."!cursor_pos"($I11)
- ($P10) = rx796_cur."!cursor_start"()
- $P10."!cursor_pass"(rx796_pos, "")
- rx796_cur."!mark_push"(0, -1, 0, $P10)
+ lt $I11, 0, rx799_fail
+ inc rx799_pos
+ (rx799_rep) = rx799_cur."!mark_commit"($I804)
+ rxquantr803_done:
+ set_addr $I10, rxcap_805_fail
+ ($I12, $I11) = rx799_cur."!mark_peek"($I10)
+ rx799_cur."!cursor_pos"($I11)
+ ($P10) = rx799_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx799_pos, "")
+ rx799_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sign")
- goto rxcap_802_done
- rxcap_802_fail:
- goto rx796_fail
- rxcap_802_done:
- alt803_0:
-.annotate "line", 385
- set_addr $I10, alt803_1
- rx796_cur."!mark_push"(0, rx796_pos, $I10)
+ goto rxcap_805_done
+ rxcap_805_fail:
+ goto rx799_fail
+ rxcap_805_done:
+ alt806_0:
+.annotate "line", 389
+ set_addr $I10, alt806_1
+ rx799_cur."!mark_push"(0, rx799_pos, $I10)
# rx subrule "dec_number" subtype=capture negate=
- rx796_cur."!cursor_pos"(rx796_pos)
- $P10 = rx796_cur."dec_number"()
- unless $P10, rx796_fail
- rx796_cur."!mark_push"(0, -1, 0, $P10)
+ rx799_cur."!cursor_pos"(rx799_pos)
+ $P10 = rx799_cur."dec_number"()
+ unless $P10, rx799_fail
+ rx799_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("dec_number")
- rx796_pos = $P10."pos"()
- goto alt803_end
- alt803_1:
+ rx799_pos = $P10."pos"()
+ goto alt806_end
+ alt806_1:
# rx subrule "integer" subtype=capture negate=
- rx796_cur."!cursor_pos"(rx796_pos)
- $P10 = rx796_cur."integer"()
- unless $P10, rx796_fail
- rx796_cur."!mark_push"(0, -1, 0, $P10)
+ rx799_cur."!cursor_pos"(rx799_pos)
+ $P10 = rx799_cur."integer"()
+ unless $P10, rx799_fail
+ rx799_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("integer")
- rx796_pos = $P10."pos"()
- alt803_end:
-.annotate "line", 383
+ rx799_pos = $P10."pos"()
+ alt806_end:
+.annotate "line", 387
# rx pass
- rx796_cur."!cursor_pass"(rx796_pos, "number")
- rx796_cur."!cursor_debug"("PASS ", "number", " at pos=", rx796_pos)
- .return (rx796_cur)
- rx796_fail:
+ rx799_cur."!cursor_pass"(rx799_pos, "number")
+ rx799_cur."!cursor_debug"("PASS ", "number", " at pos=", rx799_pos)
+ .return (rx799_cur)
+ rx799_fail:
.annotate "line", 4
- (rx796_rep, rx796_pos, $I10, $P10) = rx796_cur."!mark_fail"(0)
- lt rx796_pos, -1, rx796_done
- eq rx796_pos, -1, rx796_fail
+ (rx799_rep, rx799_pos, $I10, $P10) = rx799_cur."!mark_fail"(0)
+ lt rx799_pos, -1, rx799_done
+ eq rx799_pos, -1, rx799_fail
jump $I10
- rx796_done:
- rx796_cur."!cursor_fail"()
- rx796_cur."!cursor_debug"("FAIL ", "number")
- .return (rx796_cur)
+ rx799_done:
+ rx799_cur."!cursor_fail"()
+ rx799_cur."!cursor_debug"("FAIL ", "number")
+ .return (rx799_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number" :subid("186_1267204702.05125") :method
+.sub "!PREFIX__number" :subid("186_1272816833.94956") :method
.annotate "line", 4
- new $P798, "ResizablePMCArray"
- push $P798, ""
- .return ($P798)
+ new $P801, "ResizablePMCArray"
+ push $P801, ""
+ .return ($P801)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote" :subid("187_1267204702.05125") :method
-.annotate "line", 388
- $P805 = self."!protoregex"("quote")
- .return ($P805)
+.sub "quote" :subid("187_1272816833.94956") :method
+.annotate "line", 392
+ $P808 = self."!protoregex"("quote")
+ .return ($P808)
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote" :subid("188_1267204702.05125") :method
-.annotate "line", 388
- $P807 = self."!PREFIX__!protoregex"("quote")
- .return ($P807)
+.sub "!PREFIX__quote" :subid("188_1272816833.94956") :method
+.annotate "line", 392
+ $P810 = self."!PREFIX__!protoregex"("quote")
+ .return ($P810)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>" :subid("189_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<apos>" :subid("189_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx809_tgt
- .local int rx809_pos
- .local int rx809_off
- .local int rx809_eos
- .local int rx809_rep
- .local pmc rx809_cur
- (rx809_cur, rx809_pos, rx809_tgt) = self."!cursor_start"()
- rx809_cur."!cursor_debug"("START ", "quote:sym<apos>")
- .lex unicode:"$\x{a2}", rx809_cur
- .local pmc match
- .lex "$/", match
- length rx809_eos, rx809_tgt
- set rx809_off, 0
- lt rx809_pos, 2, rx809_start
- sub rx809_off, rx809_pos, 1
- substr rx809_tgt, rx809_tgt, rx809_off
- rx809_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan812_done
- goto rxscan812_scan
- rxscan812_loop:
- ($P10) = rx809_cur."from"()
- inc $P10
- set rx809_pos, $P10
- ge rx809_pos, rx809_eos, rxscan812_done
- rxscan812_scan:
- set_addr $I10, rxscan812_loop
- rx809_cur."!mark_push"(0, rx809_pos, $I10)
- rxscan812_done:
-.annotate "line", 389
+ .local string rx812_tgt
+ .local int rx812_pos
+ .local int rx812_off
+ .local int rx812_eos
+ .local int rx812_rep
+ .local pmc rx812_cur
+ (rx812_cur, rx812_pos, rx812_tgt) = self."!cursor_start"()
+ rx812_cur."!cursor_debug"("START ", "quote:sym<apos>")
+ .lex unicode:"$\x{a2}", rx812_cur
+ .local pmc match
+ .lex "$/", match
+ length rx812_eos, rx812_tgt
+ set rx812_off, 0
+ lt rx812_pos, 2, rx812_start
+ sub rx812_off, rx812_pos, 1
+ substr rx812_tgt, rx812_tgt, rx812_off
+ rx812_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan815_done
+ goto rxscan815_scan
+ rxscan815_loop:
+ ($P10) = rx812_cur."from"()
+ inc $P10
+ set rx812_pos, $P10
+ ge rx812_pos, rx812_eos, rxscan815_done
+ rxscan815_scan:
+ set_addr $I10, rxscan815_loop
+ rx812_cur."!mark_push"(0, rx812_pos, $I10)
+ rxscan815_done:
+.annotate "line", 393
# rx enumcharlist negate=0 zerowidth
- ge rx809_pos, rx809_eos, rx809_fail
- sub $I10, rx809_pos, rx809_off
- substr $S10, rx809_tgt, $I10, 1
+ ge rx812_pos, rx812_eos, rx812_fail
+ sub $I10, rx812_pos, rx812_off
+ substr $S10, rx812_tgt, $I10, 1
index $I11, "'", $S10
- lt $I11, 0, rx809_fail
+ lt $I11, 0, rx812_fail
# rx subrule "quote_EXPR" subtype=capture negate=
- rx809_cur."!cursor_pos"(rx809_pos)
- $P10 = rx809_cur."quote_EXPR"(":q")
- unless $P10, rx809_fail
- rx809_cur."!mark_push"(0, -1, 0, $P10)
+ rx812_cur."!cursor_pos"(rx812_pos)
+ $P10 = rx812_cur."quote_EXPR"(":q")
+ unless $P10, rx812_fail
+ rx812_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx809_pos = $P10."pos"()
+ rx812_pos = $P10."pos"()
# rx pass
- rx809_cur."!cursor_pass"(rx809_pos, "quote:sym<apos>")
- rx809_cur."!cursor_debug"("PASS ", "quote:sym<apos>", " at pos=", rx809_pos)
- .return (rx809_cur)
- rx809_fail:
+ rx812_cur."!cursor_pass"(rx812_pos, "quote:sym<apos>")
+ rx812_cur."!cursor_debug"("PASS ", "quote:sym<apos>", " at pos=", rx812_pos)
+ .return (rx812_cur)
+ rx812_fail:
.annotate "line", 4
- (rx809_rep, rx809_pos, $I10, $P10) = rx809_cur."!mark_fail"(0)
- lt rx809_pos, -1, rx809_done
- eq rx809_pos, -1, rx809_fail
+ (rx812_rep, rx812_pos, $I10, $P10) = rx812_cur."!mark_fail"(0)
+ lt rx812_pos, -1, rx812_done
+ eq rx812_pos, -1, rx812_fail
jump $I10
- rx809_done:
- rx809_cur."!cursor_fail"()
- rx809_cur."!cursor_debug"("FAIL ", "quote:sym<apos>")
- .return (rx809_cur)
+ rx812_done:
+ rx812_cur."!cursor_fail"()
+ rx812_cur."!cursor_debug"("FAIL ", "quote:sym<apos>")
+ .return (rx812_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>" :subid("190_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<apos>" :subid("190_1272816833.94956") :method
.annotate "line", 4
- new $P811, "ResizablePMCArray"
- push $P811, "'"
- .return ($P811)
+ new $P814, "ResizablePMCArray"
+ push $P814, "'"
+ .return ($P814)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>" :subid("191_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<dblq>" :subid("191_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx814_tgt
- .local int rx814_pos
- .local int rx814_off
- .local int rx814_eos
- .local int rx814_rep
- .local pmc rx814_cur
- (rx814_cur, rx814_pos, rx814_tgt) = self."!cursor_start"()
- rx814_cur."!cursor_debug"("START ", "quote:sym<dblq>")
- .lex unicode:"$\x{a2}", rx814_cur
+ .local string rx817_tgt
+ .local int rx817_pos
+ .local int rx817_off
+ .local int rx817_eos
+ .local int rx817_rep
+ .local pmc rx817_cur
+ (rx817_cur, rx817_pos, rx817_tgt) = self."!cursor_start"()
+ rx817_cur."!cursor_debug"("START ", "quote:sym<dblq>")
+ .lex unicode:"$\x{a2}", rx817_cur
.local pmc match
.lex "$/", match
- length rx814_eos, rx814_tgt
- set rx814_off, 0
- lt rx814_pos, 2, rx814_start
- sub rx814_off, rx814_pos, 1
- substr rx814_tgt, rx814_tgt, rx814_off
- rx814_start:
+ length rx817_eos, rx817_tgt
+ set rx817_off, 0
+ lt rx817_pos, 2, rx817_start
+ sub rx817_off, rx817_pos, 1
+ substr rx817_tgt, rx817_tgt, rx817_off
+ rx817_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan817_done
- goto rxscan817_scan
- rxscan817_loop:
- ($P10) = rx814_cur."from"()
+ ne $I10, -1, rxscan820_done
+ goto rxscan820_scan
+ rxscan820_loop:
+ ($P10) = rx817_cur."from"()
inc $P10
- set rx814_pos, $P10
- ge rx814_pos, rx814_eos, rxscan817_done
- rxscan817_scan:
- set_addr $I10, rxscan817_loop
- rx814_cur."!mark_push"(0, rx814_pos, $I10)
- rxscan817_done:
-.annotate "line", 390
+ set rx817_pos, $P10
+ ge rx817_pos, rx817_eos, rxscan820_done
+ rxscan820_scan:
+ set_addr $I10, rxscan820_loop
+ rx817_cur."!mark_push"(0, rx817_pos, $I10)
+ rxscan820_done:
+.annotate "line", 394
# rx enumcharlist negate=0 zerowidth
- ge rx814_pos, rx814_eos, rx814_fail
- sub $I10, rx814_pos, rx814_off
- substr $S10, rx814_tgt, $I10, 1
+ ge rx817_pos, rx817_eos, rx817_fail
+ sub $I10, rx817_pos, rx817_off
+ substr $S10, rx817_tgt, $I10, 1
index $I11, "\"", $S10
- lt $I11, 0, rx814_fail
+ lt $I11, 0, rx817_fail
# rx subrule "quote_EXPR" subtype=capture negate=
- rx814_cur."!cursor_pos"(rx814_pos)
- $P10 = rx814_cur."quote_EXPR"(":qq")
- unless $P10, rx814_fail
- rx814_cur."!mark_push"(0, -1, 0, $P10)
+ rx817_cur."!cursor_pos"(rx817_pos)
+ $P10 = rx817_cur."quote_EXPR"(":qq")
+ unless $P10, rx817_fail
+ rx817_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx814_pos = $P10."pos"()
+ rx817_pos = $P10."pos"()
# rx pass
- rx814_cur."!cursor_pass"(rx814_pos, "quote:sym<dblq>")
- rx814_cur."!cursor_debug"("PASS ", "quote:sym<dblq>", " at pos=", rx814_pos)
- .return (rx814_cur)
- rx814_fail:
+ rx817_cur."!cursor_pass"(rx817_pos, "quote:sym<dblq>")
+ rx817_cur."!cursor_debug"("PASS ", "quote:sym<dblq>", " at pos=", rx817_pos)
+ .return (rx817_cur)
+ rx817_fail:
.annotate "line", 4
- (rx814_rep, rx814_pos, $I10, $P10) = rx814_cur."!mark_fail"(0)
- lt rx814_pos, -1, rx814_done
- eq rx814_pos, -1, rx814_fail
+ (rx817_rep, rx817_pos, $I10, $P10) = rx817_cur."!mark_fail"(0)
+ lt rx817_pos, -1, rx817_done
+ eq rx817_pos, -1, rx817_fail
jump $I10
- rx814_done:
- rx814_cur."!cursor_fail"()
- rx814_cur."!cursor_debug"("FAIL ", "quote:sym<dblq>")
- .return (rx814_cur)
+ rx817_done:
+ rx817_cur."!cursor_fail"()
+ rx817_cur."!cursor_debug"("FAIL ", "quote:sym<dblq>")
+ .return (rx817_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>" :subid("192_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<dblq>" :subid("192_1272816833.94956") :method
.annotate "line", 4
- new $P816, "ResizablePMCArray"
- push $P816, "\""
- .return ($P816)
+ new $P819, "ResizablePMCArray"
+ push $P819, "\""
+ .return ($P819)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>" :subid("193_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<q>" :subid("193_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx819_tgt
- .local int rx819_pos
- .local int rx819_off
- .local int rx819_eos
- .local int rx819_rep
- .local pmc rx819_cur
- (rx819_cur, rx819_pos, rx819_tgt) = self."!cursor_start"()
- rx819_cur."!cursor_debug"("START ", "quote:sym<q>")
- .lex unicode:"$\x{a2}", rx819_cur
+ .local string rx822_tgt
+ .local int rx822_pos
+ .local int rx822_off
+ .local int rx822_eos
+ .local int rx822_rep
+ .local pmc rx822_cur
+ (rx822_cur, rx822_pos, rx822_tgt) = self."!cursor_start"()
+ rx822_cur."!cursor_debug"("START ", "quote:sym<q>")
+ .lex unicode:"$\x{a2}", rx822_cur
.local pmc match
.lex "$/", match
- length rx819_eos, rx819_tgt
- set rx819_off, 0
- lt rx819_pos, 2, rx819_start
- sub rx819_off, rx819_pos, 1
- substr rx819_tgt, rx819_tgt, rx819_off
- rx819_start:
+ length rx822_eos, rx822_tgt
+ set rx822_off, 0
+ lt rx822_pos, 2, rx822_start
+ sub rx822_off, rx822_pos, 1
+ substr rx822_tgt, rx822_tgt, rx822_off
+ rx822_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan823_done
- goto rxscan823_scan
- rxscan823_loop:
- ($P10) = rx819_cur."from"()
+ ne $I10, -1, rxscan826_done
+ goto rxscan826_scan
+ rxscan826_loop:
+ ($P10) = rx822_cur."from"()
inc $P10
- set rx819_pos, $P10
- ge rx819_pos, rx819_eos, rxscan823_done
- rxscan823_scan:
- set_addr $I10, rxscan823_loop
- rx819_cur."!mark_push"(0, rx819_pos, $I10)
- rxscan823_done:
-.annotate "line", 391
+ set rx822_pos, $P10
+ ge rx822_pos, rx822_eos, rxscan826_done
+ rxscan826_scan:
+ set_addr $I10, rxscan826_loop
+ rx822_cur."!mark_push"(0, rx822_pos, $I10)
+ rxscan826_done:
+.annotate "line", 395
# rx literal "q"
- add $I11, rx819_pos, 1
- gt $I11, rx819_eos, rx819_fail
- sub $I11, rx819_pos, rx819_off
- substr $S10, rx819_tgt, $I11, 1
- ne $S10, "q", rx819_fail
- add rx819_pos, 1
+ add $I11, rx822_pos, 1
+ gt $I11, rx822_eos, rx822_fail
+ sub $I11, rx822_pos, rx822_off
+ substr $S10, rx822_tgt, $I11, 1
+ ne $S10, "q", rx822_fail
+ add rx822_pos, 1
+ # rxanchor rwb
+ le rx822_pos, 0, rx822_fail
+ sub $I10, rx822_pos, rx822_off
+ is_cclass $I11, 8192, rx822_tgt, $I10
+ if $I11, rx822_fail
+ dec $I10
+ is_cclass $I11, 8192, rx822_tgt, $I10
+ unless $I11, rx822_fail
# rx enumcharlist negate=1 zerowidth
- ge rx819_pos, rx819_eos, rx819_fail
- sub $I10, rx819_pos, rx819_off
- substr $S10, rx819_tgt, $I10, 1
+ ge rx822_pos, rx822_eos, rx822_fail
+ sub $I10, rx822_pos, rx822_off
+ substr $S10, rx822_tgt, $I10, 1
index $I11, "(", $S10
- ge $I11, 0, rx819_fail
+ ge $I11, 0, rx822_fail
# rx subrule "ws" subtype=method negate=
- rx819_cur."!cursor_pos"(rx819_pos)
- $P10 = rx819_cur."ws"()
- unless $P10, rx819_fail
- rx819_pos = $P10."pos"()
+ rx822_cur."!cursor_pos"(rx822_pos)
+ $P10 = rx822_cur."ws"()
+ unless $P10, rx822_fail
+ rx822_pos = $P10."pos"()
# rx subrule "quote_EXPR" subtype=capture negate=
- rx819_cur."!cursor_pos"(rx819_pos)
- $P10 = rx819_cur."quote_EXPR"(":q")
- unless $P10, rx819_fail
- rx819_cur."!mark_push"(0, -1, 0, $P10)
+ rx822_cur."!cursor_pos"(rx822_pos)
+ $P10 = rx822_cur."quote_EXPR"(":q")
+ unless $P10, rx822_fail
+ rx822_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx819_pos = $P10."pos"()
+ rx822_pos = $P10."pos"()
# rx pass
- rx819_cur."!cursor_pass"(rx819_pos, "quote:sym<q>")
- rx819_cur."!cursor_debug"("PASS ", "quote:sym<q>", " at pos=", rx819_pos)
- .return (rx819_cur)
- rx819_fail:
+ rx822_cur."!cursor_pass"(rx822_pos, "quote:sym<q>")
+ rx822_cur."!cursor_debug"("PASS ", "quote:sym<q>", " at pos=", rx822_pos)
+ .return (rx822_cur)
+ rx822_fail:
.annotate "line", 4
- (rx819_rep, rx819_pos, $I10, $P10) = rx819_cur."!mark_fail"(0)
- lt rx819_pos, -1, rx819_done
- eq rx819_pos, -1, rx819_fail
+ (rx822_rep, rx822_pos, $I10, $P10) = rx822_cur."!mark_fail"(0)
+ lt rx822_pos, -1, rx822_done
+ eq rx822_pos, -1, rx822_fail
jump $I10
- rx819_done:
- rx819_cur."!cursor_fail"()
- rx819_cur."!cursor_debug"("FAIL ", "quote:sym<q>")
- .return (rx819_cur)
+ rx822_done:
+ rx822_cur."!cursor_fail"()
+ rx822_cur."!cursor_debug"("FAIL ", "quote:sym<q>")
+ .return (rx822_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>" :subid("194_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<q>" :subid("194_1272816833.94956") :method
.annotate "line", 4
- $P821 = self."!PREFIX__!subrule"("", "q")
- new $P822, "ResizablePMCArray"
- push $P822, $P821
- .return ($P822)
+ $P824 = self."!PREFIX__!subrule"("", "q")
+ new $P825, "ResizablePMCArray"
+ push $P825, $P824
+ .return ($P825)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>" :subid("195_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<qq>" :subid("195_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx825_tgt
- .local int rx825_pos
- .local int rx825_off
- .local int rx825_eos
- .local int rx825_rep
- .local pmc rx825_cur
- (rx825_cur, rx825_pos, rx825_tgt) = self."!cursor_start"()
- rx825_cur."!cursor_debug"("START ", "quote:sym<qq>")
- .lex unicode:"$\x{a2}", rx825_cur
+ .local string rx828_tgt
+ .local int rx828_pos
+ .local int rx828_off
+ .local int rx828_eos
+ .local int rx828_rep
+ .local pmc rx828_cur
+ (rx828_cur, rx828_pos, rx828_tgt) = self."!cursor_start"()
+ rx828_cur."!cursor_debug"("START ", "quote:sym<qq>")
+ .lex unicode:"$\x{a2}", rx828_cur
.local pmc match
.lex "$/", match
- length rx825_eos, rx825_tgt
- set rx825_off, 0
- lt rx825_pos, 2, rx825_start
- sub rx825_off, rx825_pos, 1
- substr rx825_tgt, rx825_tgt, rx825_off
- rx825_start:
+ length rx828_eos, rx828_tgt
+ set rx828_off, 0
+ lt rx828_pos, 2, rx828_start
+ sub rx828_off, rx828_pos, 1
+ substr rx828_tgt, rx828_tgt, rx828_off
+ rx828_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan829_done
- goto rxscan829_scan
- rxscan829_loop:
- ($P10) = rx825_cur."from"()
+ ne $I10, -1, rxscan832_done
+ goto rxscan832_scan
+ rxscan832_loop:
+ ($P10) = rx828_cur."from"()
inc $P10
- set rx825_pos, $P10
- ge rx825_pos, rx825_eos, rxscan829_done
- rxscan829_scan:
- set_addr $I10, rxscan829_loop
- rx825_cur."!mark_push"(0, rx825_pos, $I10)
- rxscan829_done:
-.annotate "line", 392
+ set rx828_pos, $P10
+ ge rx828_pos, rx828_eos, rxscan832_done
+ rxscan832_scan:
+ set_addr $I10, rxscan832_loop
+ rx828_cur."!mark_push"(0, rx828_pos, $I10)
+ rxscan832_done:
+.annotate "line", 396
# rx literal "qq"
- add $I11, rx825_pos, 2
- gt $I11, rx825_eos, rx825_fail
- sub $I11, rx825_pos, rx825_off
- substr $S10, rx825_tgt, $I11, 2
- ne $S10, "qq", rx825_fail
- add rx825_pos, 2
+ add $I11, rx828_pos, 2
+ gt $I11, rx828_eos, rx828_fail
+ sub $I11, rx828_pos, rx828_off
+ substr $S10, rx828_tgt, $I11, 2
+ ne $S10, "qq", rx828_fail
+ add rx828_pos, 2
+ # rxanchor rwb
+ le rx828_pos, 0, rx828_fail
+ sub $I10, rx828_pos, rx828_off
+ is_cclass $I11, 8192, rx828_tgt, $I10
+ if $I11, rx828_fail
+ dec $I10
+ is_cclass $I11, 8192, rx828_tgt, $I10
+ unless $I11, rx828_fail
# rx enumcharlist negate=1 zerowidth
- ge rx825_pos, rx825_eos, rx825_fail
- sub $I10, rx825_pos, rx825_off
- substr $S10, rx825_tgt, $I10, 1
+ ge rx828_pos, rx828_eos, rx828_fail
+ sub $I10, rx828_pos, rx828_off
+ substr $S10, rx828_tgt, $I10, 1
index $I11, "(", $S10
- ge $I11, 0, rx825_fail
+ ge $I11, 0, rx828_fail
# rx subrule "ws" subtype=method negate=
- rx825_cur."!cursor_pos"(rx825_pos)
- $P10 = rx825_cur."ws"()
- unless $P10, rx825_fail
- rx825_pos = $P10."pos"()
+ rx828_cur."!cursor_pos"(rx828_pos)
+ $P10 = rx828_cur."ws"()
+ unless $P10, rx828_fail
+ rx828_pos = $P10."pos"()
# rx subrule "quote_EXPR" subtype=capture negate=
- rx825_cur."!cursor_pos"(rx825_pos)
- $P10 = rx825_cur."quote_EXPR"(":qq")
- unless $P10, rx825_fail
- rx825_cur."!mark_push"(0, -1, 0, $P10)
+ rx828_cur."!cursor_pos"(rx828_pos)
+ $P10 = rx828_cur."quote_EXPR"(":qq")
+ unless $P10, rx828_fail
+ rx828_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx825_pos = $P10."pos"()
+ rx828_pos = $P10."pos"()
# rx pass
- rx825_cur."!cursor_pass"(rx825_pos, "quote:sym<qq>")
- rx825_cur."!cursor_debug"("PASS ", "quote:sym<qq>", " at pos=", rx825_pos)
- .return (rx825_cur)
- rx825_fail:
+ rx828_cur."!cursor_pass"(rx828_pos, "quote:sym<qq>")
+ rx828_cur."!cursor_debug"("PASS ", "quote:sym<qq>", " at pos=", rx828_pos)
+ .return (rx828_cur)
+ rx828_fail:
.annotate "line", 4
- (rx825_rep, rx825_pos, $I10, $P10) = rx825_cur."!mark_fail"(0)
- lt rx825_pos, -1, rx825_done
- eq rx825_pos, -1, rx825_fail
+ (rx828_rep, rx828_pos, $I10, $P10) = rx828_cur."!mark_fail"(0)
+ lt rx828_pos, -1, rx828_done
+ eq rx828_pos, -1, rx828_fail
jump $I10
- rx825_done:
- rx825_cur."!cursor_fail"()
- rx825_cur."!cursor_debug"("FAIL ", "quote:sym<qq>")
- .return (rx825_cur)
+ rx828_done:
+ rx828_cur."!cursor_fail"()
+ rx828_cur."!cursor_debug"("FAIL ", "quote:sym<qq>")
+ .return (rx828_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>" :subid("196_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<qq>" :subid("196_1272816833.94956") :method
.annotate "line", 4
- $P827 = self."!PREFIX__!subrule"("", "qq")
- new $P828, "ResizablePMCArray"
- push $P828, $P827
- .return ($P828)
+ $P830 = self."!PREFIX__!subrule"("", "qq")
+ new $P831, "ResizablePMCArray"
+ push $P831, $P830
+ .return ($P831)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>" :subid("197_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<Q>" :subid("197_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx831_tgt
- .local int rx831_pos
- .local int rx831_off
- .local int rx831_eos
- .local int rx831_rep
- .local pmc rx831_cur
- (rx831_cur, rx831_pos, rx831_tgt) = self."!cursor_start"()
- rx831_cur."!cursor_debug"("START ", "quote:sym<Q>")
- .lex unicode:"$\x{a2}", rx831_cur
- .local pmc match
- .lex "$/", match
- length rx831_eos, rx831_tgt
- set rx831_off, 0
- lt rx831_pos, 2, rx831_start
- sub rx831_off, rx831_pos, 1
- substr rx831_tgt, rx831_tgt, rx831_off
- rx831_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan835_done
- goto rxscan835_scan
- rxscan835_loop:
- ($P10) = rx831_cur."from"()
- inc $P10
- set rx831_pos, $P10
- ge rx831_pos, rx831_eos, rxscan835_done
- rxscan835_scan:
- set_addr $I10, rxscan835_loop
- rx831_cur."!mark_push"(0, rx831_pos, $I10)
- rxscan835_done:
-.annotate "line", 393
+ .local string rx834_tgt
+ .local int rx834_pos
+ .local int rx834_off
+ .local int rx834_eos
+ .local int rx834_rep
+ .local pmc rx834_cur
+ (rx834_cur, rx834_pos, rx834_tgt) = self."!cursor_start"()
+ rx834_cur."!cursor_debug"("START ", "quote:sym<Q>")
+ .lex unicode:"$\x{a2}", rx834_cur
+ .local pmc match
+ .lex "$/", match
+ length rx834_eos, rx834_tgt
+ set rx834_off, 0
+ lt rx834_pos, 2, rx834_start
+ sub rx834_off, rx834_pos, 1
+ substr rx834_tgt, rx834_tgt, rx834_off
+ rx834_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan838_done
+ goto rxscan838_scan
+ rxscan838_loop:
+ ($P10) = rx834_cur."from"()
+ inc $P10
+ set rx834_pos, $P10
+ ge rx834_pos, rx834_eos, rxscan838_done
+ rxscan838_scan:
+ set_addr $I10, rxscan838_loop
+ rx834_cur."!mark_push"(0, rx834_pos, $I10)
+ rxscan838_done:
+.annotate "line", 397
# rx literal "Q"
- add $I11, rx831_pos, 1
- gt $I11, rx831_eos, rx831_fail
- sub $I11, rx831_pos, rx831_off
- substr $S10, rx831_tgt, $I11, 1
- ne $S10, "Q", rx831_fail
- add rx831_pos, 1
+ add $I11, rx834_pos, 1
+ gt $I11, rx834_eos, rx834_fail
+ sub $I11, rx834_pos, rx834_off
+ substr $S10, rx834_tgt, $I11, 1
+ ne $S10, "Q", rx834_fail
+ add rx834_pos, 1
+ # rxanchor rwb
+ le rx834_pos, 0, rx834_fail
+ sub $I10, rx834_pos, rx834_off
+ is_cclass $I11, 8192, rx834_tgt, $I10
+ if $I11, rx834_fail
+ dec $I10
+ is_cclass $I11, 8192, rx834_tgt, $I10
+ unless $I11, rx834_fail
# rx enumcharlist negate=1 zerowidth
- ge rx831_pos, rx831_eos, rx831_fail
- sub $I10, rx831_pos, rx831_off
- substr $S10, rx831_tgt, $I10, 1
+ ge rx834_pos, rx834_eos, rx834_fail
+ sub $I10, rx834_pos, rx834_off
+ substr $S10, rx834_tgt, $I10, 1
index $I11, "(", $S10
- ge $I11, 0, rx831_fail
+ ge $I11, 0, rx834_fail
# rx subrule "ws" subtype=method negate=
- rx831_cur."!cursor_pos"(rx831_pos)
- $P10 = rx831_cur."ws"()
- unless $P10, rx831_fail
- rx831_pos = $P10."pos"()
+ rx834_cur."!cursor_pos"(rx834_pos)
+ $P10 = rx834_cur."ws"()
+ unless $P10, rx834_fail
+ rx834_pos = $P10."pos"()
# rx subrule "quote_EXPR" subtype=capture negate=
- rx831_cur."!cursor_pos"(rx831_pos)
- $P10 = rx831_cur."quote_EXPR"()
- unless $P10, rx831_fail
- rx831_cur."!mark_push"(0, -1, 0, $P10)
+ rx834_cur."!cursor_pos"(rx834_pos)
+ $P10 = rx834_cur."quote_EXPR"()
+ unless $P10, rx834_fail
+ rx834_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx831_pos = $P10."pos"()
+ rx834_pos = $P10."pos"()
# rx pass
- rx831_cur."!cursor_pass"(rx831_pos, "quote:sym<Q>")
- rx831_cur."!cursor_debug"("PASS ", "quote:sym<Q>", " at pos=", rx831_pos)
- .return (rx831_cur)
- rx831_fail:
+ rx834_cur."!cursor_pass"(rx834_pos, "quote:sym<Q>")
+ rx834_cur."!cursor_debug"("PASS ", "quote:sym<Q>", " at pos=", rx834_pos)
+ .return (rx834_cur)
+ rx834_fail:
.annotate "line", 4
- (rx831_rep, rx831_pos, $I10, $P10) = rx831_cur."!mark_fail"(0)
- lt rx831_pos, -1, rx831_done
- eq rx831_pos, -1, rx831_fail
+ (rx834_rep, rx834_pos, $I10, $P10) = rx834_cur."!mark_fail"(0)
+ lt rx834_pos, -1, rx834_done
+ eq rx834_pos, -1, rx834_fail
jump $I10
- rx831_done:
- rx831_cur."!cursor_fail"()
- rx831_cur."!cursor_debug"("FAIL ", "quote:sym<Q>")
- .return (rx831_cur)
+ rx834_done:
+ rx834_cur."!cursor_fail"()
+ rx834_cur."!cursor_debug"("FAIL ", "quote:sym<Q>")
+ .return (rx834_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>" :subid("198_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<Q>" :subid("198_1272816833.94956") :method
.annotate "line", 4
- $P833 = self."!PREFIX__!subrule"("", "Q")
- new $P834, "ResizablePMCArray"
- push $P834, $P833
- .return ($P834)
+ $P836 = self."!PREFIX__!subrule"("", "Q")
+ new $P837, "ResizablePMCArray"
+ push $P837, $P836
+ .return ($P837)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>" :subid("199_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym<Q:PIR>" :subid("199_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx837_tgt
- .local int rx837_pos
- .local int rx837_off
- .local int rx837_eos
- .local int rx837_rep
- .local pmc rx837_cur
- (rx837_cur, rx837_pos, rx837_tgt) = self."!cursor_start"()
- rx837_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
- .lex unicode:"$\x{a2}", rx837_cur
+ .local string rx840_tgt
+ .local int rx840_pos
+ .local int rx840_off
+ .local int rx840_eos
+ .local int rx840_rep
+ .local pmc rx840_cur
+ (rx840_cur, rx840_pos, rx840_tgt) = self."!cursor_start"()
+ rx840_cur."!cursor_debug"("START ", "quote:sym<Q:PIR>")
+ .lex unicode:"$\x{a2}", rx840_cur
.local pmc match
.lex "$/", match
- length rx837_eos, rx837_tgt
- set rx837_off, 0
- lt rx837_pos, 2, rx837_start
- sub rx837_off, rx837_pos, 1
- substr rx837_tgt, rx837_tgt, rx837_off
- rx837_start:
+ length rx840_eos, rx840_tgt
+ set rx840_off, 0
+ lt rx840_pos, 2, rx840_start
+ sub rx840_off, rx840_pos, 1
+ substr rx840_tgt, rx840_tgt, rx840_off
+ rx840_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan841_done
- goto rxscan841_scan
- rxscan841_loop:
- ($P10) = rx837_cur."from"()
+ ne $I10, -1, rxscan844_done
+ goto rxscan844_scan
+ rxscan844_loop:
+ ($P10) = rx840_cur."from"()
inc $P10
- set rx837_pos, $P10
- ge rx837_pos, rx837_eos, rxscan841_done
- rxscan841_scan:
- set_addr $I10, rxscan841_loop
- rx837_cur."!mark_push"(0, rx837_pos, $I10)
- rxscan841_done:
-.annotate "line", 394
+ set rx840_pos, $P10
+ ge rx840_pos, rx840_eos, rxscan844_done
+ rxscan844_scan:
+ set_addr $I10, rxscan844_loop
+ rx840_cur."!mark_push"(0, rx840_pos, $I10)
+ rxscan844_done:
+.annotate "line", 398
# rx literal "Q:PIR"
- add $I11, rx837_pos, 5
- gt $I11, rx837_eos, rx837_fail
- sub $I11, rx837_pos, rx837_off
- substr $S10, rx837_tgt, $I11, 5
- ne $S10, "Q:PIR", rx837_fail
- add rx837_pos, 5
- # rx subrule "ws" subtype=method negate=
- rx837_cur."!cursor_pos"(rx837_pos)
- $P10 = rx837_cur."ws"()
- unless $P10, rx837_fail
- rx837_pos = $P10."pos"()
+ add $I11, rx840_pos, 5
+ gt $I11, rx840_eos, rx840_fail
+ sub $I11, rx840_pos, rx840_off
+ substr $S10, rx840_tgt, $I11, 5
+ ne $S10, "Q:PIR", rx840_fail
+ add rx840_pos, 5
+ # rx subrule "ws" subtype=method negate=
+ rx840_cur."!cursor_pos"(rx840_pos)
+ $P10 = rx840_cur."ws"()
+ unless $P10, rx840_fail
+ rx840_pos = $P10."pos"()
# rx subrule "quote_EXPR" subtype=capture negate=
- rx837_cur."!cursor_pos"(rx837_pos)
- $P10 = rx837_cur."quote_EXPR"()
- unless $P10, rx837_fail
- rx837_cur."!mark_push"(0, -1, 0, $P10)
+ rx840_cur."!cursor_pos"(rx840_pos)
+ $P10 = rx840_cur."quote_EXPR"()
+ unless $P10, rx840_fail
+ rx840_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx837_pos = $P10."pos"()
+ rx840_pos = $P10."pos"()
# rx pass
- rx837_cur."!cursor_pass"(rx837_pos, "quote:sym<Q:PIR>")
- rx837_cur."!cursor_debug"("PASS ", "quote:sym<Q:PIR>", " at pos=", rx837_pos)
- .return (rx837_cur)
- rx837_fail:
+ rx840_cur."!cursor_pass"(rx840_pos, "quote:sym<Q:PIR>")
+ rx840_cur."!cursor_debug"("PASS ", "quote:sym<Q:PIR>", " at pos=", rx840_pos)
+ .return (rx840_cur)
+ rx840_fail:
.annotate "line", 4
- (rx837_rep, rx837_pos, $I10, $P10) = rx837_cur."!mark_fail"(0)
- lt rx837_pos, -1, rx837_done
- eq rx837_pos, -1, rx837_fail
+ (rx840_rep, rx840_pos, $I10, $P10) = rx840_cur."!mark_fail"(0)
+ lt rx840_pos, -1, rx840_done
+ eq rx840_pos, -1, rx840_fail
jump $I10
- rx837_done:
- rx837_cur."!cursor_fail"()
- rx837_cur."!cursor_debug"("FAIL ", "quote:sym<Q:PIR>")
- .return (rx837_cur)
+ rx840_done:
+ rx840_cur."!cursor_fail"()
+ rx840_cur."!cursor_debug"("FAIL ", "quote:sym<Q:PIR>")
+ .return (rx840_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>" :subid("200_1267204702.05125") :method
+.sub "!PREFIX__quote:sym<Q:PIR>" :subid("200_1272816833.94956") :method
.annotate "line", 4
- $P839 = self."!PREFIX__!subrule"("", "Q:PIR")
- new $P840, "ResizablePMCArray"
- push $P840, $P839
- .return ($P840)
+ $P842 = self."!PREFIX__!subrule"("", "Q:PIR")
+ new $P843, "ResizablePMCArray"
+ push $P843, $P842
+ .return ($P843)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />" :subid("201_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote:sym</ />" :subid("201_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx843_tgt
- .local int rx843_pos
- .local int rx843_off
- .local int rx843_eos
- .local int rx843_rep
- .local pmc rx843_cur
- (rx843_cur, rx843_pos, rx843_tgt) = self."!cursor_start"()
- rx843_cur."!cursor_debug"("START ", "quote:sym</ />")
- .lex unicode:"$\x{a2}", rx843_cur
+ .local string rx846_tgt
+ .local int rx846_pos
+ .local int rx846_off
+ .local int rx846_eos
+ .local int rx846_rep
+ .local pmc rx846_cur
+ (rx846_cur, rx846_pos, rx846_tgt) = self."!cursor_start"()
+ rx846_cur."!cursor_debug"("START ", "quote:sym</ />")
+ .lex unicode:"$\x{a2}", rx846_cur
.local pmc match
.lex "$/", match
- length rx843_eos, rx843_tgt
- set rx843_off, 0
- lt rx843_pos, 2, rx843_start
- sub rx843_off, rx843_pos, 1
- substr rx843_tgt, rx843_tgt, rx843_off
- rx843_start:
+ length rx846_eos, rx846_tgt
+ set rx846_off, 0
+ lt rx846_pos, 2, rx846_start
+ sub rx846_off, rx846_pos, 1
+ substr rx846_tgt, rx846_tgt, rx846_off
+ rx846_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan847_done
- goto rxscan847_scan
- rxscan847_loop:
- ($P10) = rx843_cur."from"()
+ ne $I10, -1, rxscan850_done
+ goto rxscan850_scan
+ rxscan850_loop:
+ ($P10) = rx846_cur."from"()
inc $P10
- set rx843_pos, $P10
- ge rx843_pos, rx843_eos, rxscan847_done
- rxscan847_scan:
- set_addr $I10, rxscan847_loop
- rx843_cur."!mark_push"(0, rx843_pos, $I10)
- rxscan847_done:
-.annotate "line", 396
+ set rx846_pos, $P10
+ ge rx846_pos, rx846_eos, rxscan850_done
+ rxscan850_scan:
+ set_addr $I10, rxscan850_loop
+ rx846_cur."!mark_push"(0, rx846_pos, $I10)
+ rxscan850_done:
+.annotate "line", 400
# rx literal "/"
- add $I11, rx843_pos, 1
- gt $I11, rx843_eos, rx843_fail
- sub $I11, rx843_pos, rx843_off
- substr $S10, rx843_tgt, $I11, 1
- ne $S10, "/", rx843_fail
- add rx843_pos, 1
-.annotate "line", 397
+ add $I11, rx846_pos, 1
+ gt $I11, rx846_eos, rx846_fail
+ sub $I11, rx846_pos, rx846_off
+ substr $S10, rx846_tgt, $I11, 1
+ ne $S10, "/", rx846_fail
+ add rx846_pos, 1
+.annotate "line", 401
# rx subrule "newpad" subtype=method negate=
- rx843_cur."!cursor_pos"(rx843_pos)
- $P10 = rx843_cur."newpad"()
- unless $P10, rx843_fail
- rx843_pos = $P10."pos"()
-.annotate "line", 398
+ rx846_cur."!cursor_pos"(rx846_pos)
+ $P10 = rx846_cur."newpad"()
+ unless $P10, rx846_fail
+ rx846_pos = $P10."pos"()
+.annotate "line", 402
# rx reduce name="quote:sym</ />" key="open"
- rx843_cur."!cursor_pos"(rx843_pos)
- rx843_cur."!reduce"("quote:sym</ />", "open")
-.annotate "line", 399
+ rx846_cur."!cursor_pos"(rx846_pos)
+ rx846_cur."!reduce"("quote:sym</ />", "open")
+.annotate "line", 403
# rx subrule "LANG" subtype=capture negate=
- rx843_cur."!cursor_pos"(rx843_pos)
- $P10 = rx843_cur."LANG"("Regex", "nibbler")
- unless $P10, rx843_fail
- rx843_cur."!mark_push"(0, -1, 0, $P10)
+ rx846_cur."!cursor_pos"(rx846_pos)
+ $P10 = rx846_cur."LANG"("Regex", "nibbler")
+ unless $P10, rx846_fail
+ rx846_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("p6regex")
- rx843_pos = $P10."pos"()
-.annotate "line", 400
+ rx846_pos = $P10."pos"()
+.annotate "line", 404
# rx literal "/"
- add $I11, rx843_pos, 1
- gt $I11, rx843_eos, rx843_fail
- sub $I11, rx843_pos, rx843_off
- substr $S10, rx843_tgt, $I11, 1
- ne $S10, "/", rx843_fail
- add rx843_pos, 1
-.annotate "line", 395
+ add $I11, rx846_pos, 1
+ gt $I11, rx846_eos, rx846_fail
+ sub $I11, rx846_pos, rx846_off
+ substr $S10, rx846_tgt, $I11, 1
+ ne $S10, "/", rx846_fail
+ add rx846_pos, 1
+.annotate "line", 399
# rx pass
- rx843_cur."!cursor_pass"(rx843_pos, "quote:sym</ />")
- rx843_cur."!cursor_debug"("PASS ", "quote:sym</ />", " at pos=", rx843_pos)
- .return (rx843_cur)
- rx843_fail:
+ rx846_cur."!cursor_pass"(rx846_pos, "quote:sym</ />")
+ rx846_cur."!cursor_debug"("PASS ", "quote:sym</ />", " at pos=", rx846_pos)
+ .return (rx846_cur)
+ rx846_fail:
.annotate "line", 4
- (rx843_rep, rx843_pos, $I10, $P10) = rx843_cur."!mark_fail"(0)
- lt rx843_pos, -1, rx843_done
- eq rx843_pos, -1, rx843_fail
+ (rx846_rep, rx846_pos, $I10, $P10) = rx846_cur."!mark_fail"(0)
+ lt rx846_pos, -1, rx846_done
+ eq rx846_pos, -1, rx846_fail
jump $I10
- rx843_done:
- rx843_cur."!cursor_fail"()
- rx843_cur."!cursor_debug"("FAIL ", "quote:sym</ />")
- .return (rx843_cur)
+ rx846_done:
+ rx846_cur."!cursor_fail"()
+ rx846_cur."!cursor_debug"("FAIL ", "quote:sym</ />")
+ .return (rx846_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />" :subid("202_1267204702.05125") :method
+.sub "!PREFIX__quote:sym</ />" :subid("202_1272816833.94956") :method
.annotate "line", 4
- $P845 = self."!PREFIX__!subrule"("", "/")
- new $P846, "ResizablePMCArray"
- push $P846, $P845
- .return ($P846)
+ $P848 = self."!PREFIX__!subrule"("", "/")
+ new $P849, "ResizablePMCArray"
+ push $P849, $P848
+ .return ($P849)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>" :subid("203_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote_escape:sym<$>" :subid("203_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx849_tgt
- .local int rx849_pos
- .local int rx849_off
- .local int rx849_eos
- .local int rx849_rep
- .local pmc rx849_cur
- (rx849_cur, rx849_pos, rx849_tgt) = self."!cursor_start"()
- rx849_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
- .lex unicode:"$\x{a2}", rx849_cur
+ .local string rx852_tgt
+ .local int rx852_pos
+ .local int rx852_off
+ .local int rx852_eos
+ .local int rx852_rep
+ .local pmc rx852_cur
+ (rx852_cur, rx852_pos, rx852_tgt) = self."!cursor_start"()
+ rx852_cur."!cursor_debug"("START ", "quote_escape:sym<$>")
+ .lex unicode:"$\x{a2}", rx852_cur
.local pmc match
.lex "$/", match
- length rx849_eos, rx849_tgt
- set rx849_off, 0
- lt rx849_pos, 2, rx849_start
- sub rx849_off, rx849_pos, 1
- substr rx849_tgt, rx849_tgt, rx849_off
- rx849_start:
+ length rx852_eos, rx852_tgt
+ set rx852_off, 0
+ lt rx852_pos, 2, rx852_start
+ sub rx852_off, rx852_pos, 1
+ substr rx852_tgt, rx852_tgt, rx852_off
+ rx852_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan852_done
- goto rxscan852_scan
- rxscan852_loop:
- ($P10) = rx849_cur."from"()
+ ne $I10, -1, rxscan855_done
+ goto rxscan855_scan
+ rxscan855_loop:
+ ($P10) = rx852_cur."from"()
inc $P10
- set rx849_pos, $P10
- ge rx849_pos, rx849_eos, rxscan852_done
- rxscan852_scan:
- set_addr $I10, rxscan852_loop
- rx849_cur."!mark_push"(0, rx849_pos, $I10)
- rxscan852_done:
-.annotate "line", 403
+ set rx852_pos, $P10
+ ge rx852_pos, rx852_eos, rxscan855_done
+ rxscan855_scan:
+ set_addr $I10, rxscan855_loop
+ rx852_cur."!mark_push"(0, rx852_pos, $I10)
+ rxscan855_done:
+.annotate "line", 407
# rx enumcharlist negate=0 zerowidth
- ge rx849_pos, rx849_eos, rx849_fail
- sub $I10, rx849_pos, rx849_off
- substr $S10, rx849_tgt, $I10, 1
+ ge rx852_pos, rx852_eos, rx852_fail
+ sub $I10, rx852_pos, rx852_off
+ substr $S10, rx852_tgt, $I10, 1
index $I11, "$", $S10
- lt $I11, 0, rx849_fail
+ lt $I11, 0, rx852_fail
# rx subrule "quotemod_check" subtype=zerowidth negate=
- rx849_cur."!cursor_pos"(rx849_pos)
- $P10 = rx849_cur."quotemod_check"("s")
- unless $P10, rx849_fail
+ rx852_cur."!cursor_pos"(rx852_pos)
+ $P10 = rx852_cur."quotemod_check"("s")
+ unless $P10, rx852_fail
# rx subrule "variable" subtype=capture negate=
- rx849_cur."!cursor_pos"(rx849_pos)
- $P10 = rx849_cur."variable"()
- unless $P10, rx849_fail
- rx849_cur."!mark_push"(0, -1, 0, $P10)
+ rx852_cur."!cursor_pos"(rx852_pos)
+ $P10 = rx852_cur."variable"()
+ unless $P10, rx852_fail
+ rx852_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("variable")
- rx849_pos = $P10."pos"()
+ rx852_pos = $P10."pos"()
# rx pass
- rx849_cur."!cursor_pass"(rx849_pos, "quote_escape:sym<$>")
- rx849_cur."!cursor_debug"("PASS ", "quote_escape:sym<$>", " at pos=", rx849_pos)
- .return (rx849_cur)
- rx849_fail:
+ rx852_cur."!cursor_pass"(rx852_pos, "quote_escape:sym<$>")
+ rx852_cur."!cursor_debug"("PASS ", "quote_escape:sym<$>", " at pos=", rx852_pos)
+ .return (rx852_cur)
+ rx852_fail:
.annotate "line", 4
- (rx849_rep, rx849_pos, $I10, $P10) = rx849_cur."!mark_fail"(0)
- lt rx849_pos, -1, rx849_done
- eq rx849_pos, -1, rx849_fail
+ (rx852_rep, rx852_pos, $I10, $P10) = rx852_cur."!mark_fail"(0)
+ lt rx852_pos, -1, rx852_done
+ eq rx852_pos, -1, rx852_fail
jump $I10
- rx849_done:
- rx849_cur."!cursor_fail"()
- rx849_cur."!cursor_debug"("FAIL ", "quote_escape:sym<$>")
- .return (rx849_cur)
+ rx852_done:
+ rx852_cur."!cursor_fail"()
+ rx852_cur."!cursor_debug"("FAIL ", "quote_escape:sym<$>")
+ .return (rx852_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>" :subid("204_1267204702.05125") :method
+.sub "!PREFIX__quote_escape:sym<$>" :subid("204_1272816833.94956") :method
.annotate "line", 4
- new $P851, "ResizablePMCArray"
- push $P851, "$"
- .return ($P851)
+ new $P854, "ResizablePMCArray"
+ push $P854, "$"
+ .return ($P854)
.end
.namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>" :subid("205_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote_escape:sym<{ }>" :subid("205_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx854_tgt
- .local int rx854_pos
- .local int rx854_off
- .local int rx854_eos
- .local int rx854_rep
- .local pmc rx854_cur
- (rx854_cur, rx854_pos, rx854_tgt) = self."!cursor_start"()
- rx854_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
- .lex unicode:"$\x{a2}", rx854_cur
+ .local string rx857_tgt
+ .local int rx857_pos
+ .local int rx857_off
+ .local int rx857_eos
+ .local int rx857_rep
+ .local pmc rx857_cur
+ (rx857_cur, rx857_pos, rx857_tgt) = self."!cursor_start"()
+ rx857_cur."!cursor_debug"("START ", "quote_escape:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx857_cur
.local pmc match
.lex "$/", match
- length rx854_eos, rx854_tgt
- set rx854_off, 0
- lt rx854_pos, 2, rx854_start
- sub rx854_off, rx854_pos, 1
- substr rx854_tgt, rx854_tgt, rx854_off
- rx854_start:
+ length rx857_eos, rx857_tgt
+ set rx857_off, 0
+ lt rx857_pos, 2, rx857_start
+ sub rx857_off, rx857_pos, 1
+ substr rx857_tgt, rx857_tgt, rx857_off
+ rx857_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan857_done
- goto rxscan857_scan
- rxscan857_loop:
- ($P10) = rx854_cur."from"()
+ ne $I10, -1, rxscan860_done
+ goto rxscan860_scan
+ rxscan860_loop:
+ ($P10) = rx857_cur."from"()
inc $P10
- set rx854_pos, $P10
- ge rx854_pos, rx854_eos, rxscan857_done
- rxscan857_scan:
- set_addr $I10, rxscan857_loop
- rx854_cur."!mark_push"(0, rx854_pos, $I10)
- rxscan857_done:
-.annotate "line", 404
+ set rx857_pos, $P10
+ ge rx857_pos, rx857_eos, rxscan860_done
+ rxscan860_scan:
+ set_addr $I10, rxscan860_loop
+ rx857_cur."!mark_push"(0, rx857_pos, $I10)
+ rxscan860_done:
+.annotate "line", 408
# rx enumcharlist negate=0 zerowidth
- ge rx854_pos, rx854_eos, rx854_fail
- sub $I10, rx854_pos, rx854_off
- substr $S10, rx854_tgt, $I10, 1
+ ge rx857_pos, rx857_eos, rx857_fail
+ sub $I10, rx857_pos, rx857_off
+ substr $S10, rx857_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx854_fail
+ lt $I11, 0, rx857_fail
# rx subrule "quotemod_check" subtype=zerowidth negate=
- rx854_cur."!cursor_pos"(rx854_pos)
- $P10 = rx854_cur."quotemod_check"("c")
- unless $P10, rx854_fail
+ rx857_cur."!cursor_pos"(rx857_pos)
+ $P10 = rx857_cur."quotemod_check"("c")
+ unless $P10, rx857_fail
# rx subrule "block" subtype=capture negate=
- rx854_cur."!cursor_pos"(rx854_pos)
- $P10 = rx854_cur."block"()
- unless $P10, rx854_fail
- rx854_cur."!mark_push"(0, -1, 0, $P10)
+ rx857_cur."!cursor_pos"(rx857_pos)
+ $P10 = rx857_cur."block"()
+ unless $P10, rx857_fail
+ rx857_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx854_pos = $P10."pos"()
+ rx857_pos = $P10."pos"()
# rx pass
- rx854_cur."!cursor_pass"(rx854_pos, "quote_escape:sym<{ }>")
- rx854_cur."!cursor_debug"("PASS ", "quote_escape:sym<{ }>", " at pos=", rx854_pos)
- .return (rx854_cur)
- rx854_fail:
+ rx857_cur."!cursor_pass"(rx857_pos, "quote_escape:sym<{ }>")
+ rx857_cur."!cursor_debug"("PASS ", "quote_escape:sym<{ }>", " at pos=", rx857_pos)
+ .return (rx857_cur)
+ rx857_fail:
.annotate "line", 4
- (rx854_rep, rx854_pos, $I10, $P10) = rx854_cur."!mark_fail"(0)
- lt rx854_pos, -1, rx854_done
- eq rx854_pos, -1, rx854_fail
+ (rx857_rep, rx857_pos, $I10, $P10) = rx857_cur."!mark_fail"(0)
+ lt rx857_pos, -1, rx857_done
+ eq rx857_pos, -1, rx857_fail
jump $I10
- rx854_done:
- rx854_cur."!cursor_fail"()
- rx854_cur."!cursor_debug"("FAIL ", "quote_escape:sym<{ }>")
- .return (rx854_cur)
+ rx857_done:
+ rx857_cur."!cursor_fail"()
+ rx857_cur."!cursor_debug"("FAIL ", "quote_escape:sym<{ }>")
+ .return (rx857_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>" :subid("206_1267204702.05125") :method
+.sub "!PREFIX__quote_escape:sym<{ }>" :subid("206_1272816833.94956") :method
.annotate "line", 4
- new $P856, "ResizablePMCArray"
- push $P856, "{"
- .return ($P856)
+ new $P859, "ResizablePMCArray"
+ push $P859, "{"
+ .return ($P859)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>" :subid("207_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "quote_escape:sym<esc>" :subid("207_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx859_tgt
- .local int rx859_pos
- .local int rx859_off
- .local int rx859_eos
- .local int rx859_rep
- .local pmc rx859_cur
- (rx859_cur, rx859_pos, rx859_tgt) = self."!cursor_start"()
- rx859_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
- rx859_cur."!cursor_caparray"("EXPR")
- .lex unicode:"$\x{a2}", rx859_cur
+ .local string rx862_tgt
+ .local int rx862_pos
+ .local int rx862_off
+ .local int rx862_eos
+ .local int rx862_rep
+ .local pmc rx862_cur
+ (rx862_cur, rx862_pos, rx862_tgt) = self."!cursor_start"()
+ rx862_cur."!cursor_debug"("START ", "quote_escape:sym<esc>")
+ .lex unicode:"$\x{a2}", rx862_cur
.local pmc match
.lex "$/", match
- length rx859_eos, rx859_tgt
- set rx859_off, 0
- lt rx859_pos, 2, rx859_start
- sub rx859_off, rx859_pos, 1
- substr rx859_tgt, rx859_tgt, rx859_off
- rx859_start:
+ length rx862_eos, rx862_tgt
+ set rx862_off, 0
+ lt rx862_pos, 2, rx862_start
+ sub rx862_off, rx862_pos, 1
+ substr rx862_tgt, rx862_tgt, rx862_off
+ rx862_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan863_done
- goto rxscan863_scan
- rxscan863_loop:
- ($P10) = rx859_cur."from"()
+ ne $I10, -1, rxscan865_done
+ goto rxscan865_scan
+ rxscan865_loop:
+ ($P10) = rx862_cur."from"()
inc $P10
- set rx859_pos, $P10
- ge rx859_pos, rx859_eos, rxscan863_done
- rxscan863_scan:
- set_addr $I10, rxscan863_loop
- rx859_cur."!mark_push"(0, rx859_pos, $I10)
- rxscan863_done:
-.annotate "line", 406
- # rx literal "("
- add $I11, rx859_pos, 1
- gt $I11, rx859_eos, rx859_fail
- sub $I11, rx859_pos, rx859_off
- substr $S10, rx859_tgt, $I11, 1
- ne $S10, "(", rx859_fail
- add rx859_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx859_cur."!cursor_pos"(rx859_pos)
- $P10 = rx859_cur."ws"()
- unless $P10, rx859_fail
- rx859_pos = $P10."pos"()
- # rx rxquantr864 ** 0..1
- set_addr $I865, rxquantr864_done
- rx859_cur."!mark_push"(0, rx859_pos, $I865)
- rxquantr864_loop:
- # rx subrule "EXPR" subtype=capture negate=
- rx859_cur."!cursor_pos"(rx859_pos)
- $P10 = rx859_cur."EXPR"()
- unless $P10, rx859_fail
- rx859_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("EXPR")
- rx859_pos = $P10."pos"()
- (rx859_rep) = rx859_cur."!mark_commit"($I865)
- rxquantr864_done:
- # rx literal ")"
- add $I11, rx859_pos, 1
- gt $I11, rx859_eos, rx859_fail
- sub $I11, rx859_pos, rx859_off
- substr $S10, rx859_tgt, $I11, 1
- ne $S10, ")", rx859_fail
- add rx859_pos, 1
+ set rx862_pos, $P10
+ ge rx862_pos, rx862_eos, rxscan865_done
+ rxscan865_scan:
+ set_addr $I10, rxscan865_loop
+ rx862_cur."!mark_push"(0, rx862_pos, $I10)
+ rxscan865_done:
+.annotate "line", 409
+ # rx literal "\\e"
+ add $I11, rx862_pos, 2
+ gt $I11, rx862_eos, rx862_fail
+ sub $I11, rx862_pos, rx862_off
+ substr $S10, rx862_tgt, $I11, 2
+ ne $S10, "\\e", rx862_fail
+ add rx862_pos, 2
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx862_cur."!cursor_pos"(rx862_pos)
+ $P10 = rx862_cur."quotemod_check"("b")
+ unless $P10, rx862_fail
# rx pass
- rx859_cur."!cursor_pass"(rx859_pos, "circumfix:sym<( )>")
- rx859_cur."!cursor_debug"("PASS ", "circumfix:sym<( )>", " at pos=", rx859_pos)
- .return (rx859_cur)
- rx859_fail:
+ rx862_cur."!cursor_pass"(rx862_pos, "quote_escape:sym<esc>")
+ rx862_cur."!cursor_debug"("PASS ", "quote_escape:sym<esc>", " at pos=", rx862_pos)
+ .return (rx862_cur)
+ rx862_fail:
.annotate "line", 4
- (rx859_rep, rx859_pos, $I10, $P10) = rx859_cur."!mark_fail"(0)
- lt rx859_pos, -1, rx859_done
- eq rx859_pos, -1, rx859_fail
+ (rx862_rep, rx862_pos, $I10, $P10) = rx862_cur."!mark_fail"(0)
+ lt rx862_pos, -1, rx862_done
+ eq rx862_pos, -1, rx862_fail
jump $I10
- rx859_done:
- rx859_cur."!cursor_fail"()
- rx859_cur."!cursor_debug"("FAIL ", "circumfix:sym<( )>")
- .return (rx859_cur)
+ rx862_done:
+ rx862_cur."!cursor_fail"()
+ rx862_cur."!cursor_debug"("FAIL ", "quote_escape:sym<esc>")
+ .return (rx862_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>" :subid("208_1267204702.05125") :method
+.sub "!PREFIX__quote_escape:sym<esc>" :subid("208_1272816833.94956") :method
.annotate "line", 4
- $P861 = self."!PREFIX__!subrule"("", "(")
- new $P862, "ResizablePMCArray"
- push $P862, $P861
- .return ($P862)
+ new $P864, "ResizablePMCArray"
+ push $P864, "\\e"
+ .return ($P864)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>" :subid("209_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<( )>" :subid("209_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx867_tgt
.local int rx867_pos
@@ -10343,7 +10390,7 @@
.local int rx867_rep
.local pmc rx867_cur
(rx867_cur, rx867_pos, rx867_tgt) = self."!cursor_start"()
- rx867_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+ rx867_cur."!cursor_debug"("START ", "circumfix:sym<( )>")
rx867_cur."!cursor_caparray"("EXPR")
.lex unicode:"$\x{a2}", rx867_cur
.local pmc match
@@ -10366,13 +10413,13 @@
set_addr $I10, rxscan871_loop
rx867_cur."!mark_push"(0, rx867_pos, $I10)
rxscan871_done:
-.annotate "line", 407
- # rx literal "["
+.annotate "line", 411
+ # rx literal "("
add $I11, rx867_pos, 1
gt $I11, rx867_eos, rx867_fail
sub $I11, rx867_pos, rx867_off
substr $S10, rx867_tgt, $I11, 1
- ne $S10, "[", rx867_fail
+ ne $S10, "(", rx867_fail
add rx867_pos, 1
# rx subrule "ws" subtype=method negate=
rx867_cur."!cursor_pos"(rx867_pos)
@@ -10392,16 +10439,16 @@
rx867_pos = $P10."pos"()
(rx867_rep) = rx867_cur."!mark_commit"($I873)
rxquantr872_done:
- # rx literal "]"
+ # rx literal ")"
add $I11, rx867_pos, 1
gt $I11, rx867_eos, rx867_fail
sub $I11, rx867_pos, rx867_off
substr $S10, rx867_tgt, $I11, 1
- ne $S10, "]", rx867_fail
+ ne $S10, ")", rx867_fail
add rx867_pos, 1
# rx pass
- rx867_cur."!cursor_pass"(rx867_pos, "circumfix:sym<[ ]>")
- rx867_cur."!cursor_debug"("PASS ", "circumfix:sym<[ ]>", " at pos=", rx867_pos)
+ rx867_cur."!cursor_pass"(rx867_pos, "circumfix:sym<( )>")
+ rx867_cur."!cursor_debug"("PASS ", "circumfix:sym<( )>", " at pos=", rx867_pos)
.return (rx867_cur)
rx867_fail:
.annotate "line", 4
@@ -10411,16 +10458,16 @@
jump $I10
rx867_done:
rx867_cur."!cursor_fail"()
- rx867_cur."!cursor_debug"("FAIL ", "circumfix:sym<[ ]>")
+ rx867_cur."!cursor_debug"("FAIL ", "circumfix:sym<( )>")
.return (rx867_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>" :subid("210_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<( )>" :subid("210_1272816833.94956") :method
.annotate "line", 4
- $P869 = self."!PREFIX__!subrule"("", "[")
+ $P869 = self."!PREFIX__!subrule"("", "(")
new $P870, "ResizablePMCArray"
push $P870, $P869
.return ($P870)
@@ -10428,7 +10475,7 @@
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>" :subid("211_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<[ ]>" :subid("211_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx875_tgt
.local int rx875_pos
@@ -10437,7 +10484,8 @@
.local int rx875_rep
.local pmc rx875_cur
(rx875_cur, rx875_pos, rx875_tgt) = self."!cursor_start"()
- rx875_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
+ rx875_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+ rx875_cur."!cursor_caparray"("EXPR")
.lex unicode:"$\x{a2}", rx875_cur
.local pmc match
.lex "$/", match
@@ -10448,34 +10496,53 @@
substr rx875_tgt, rx875_tgt, rx875_off
rx875_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan878_done
- goto rxscan878_scan
- rxscan878_loop:
+ ne $I10, -1, rxscan879_done
+ goto rxscan879_scan
+ rxscan879_loop:
($P10) = rx875_cur."from"()
inc $P10
set rx875_pos, $P10
- ge rx875_pos, rx875_eos, rxscan878_done
- rxscan878_scan:
- set_addr $I10, rxscan878_loop
+ ge rx875_pos, rx875_eos, rxscan879_done
+ rxscan879_scan:
+ set_addr $I10, rxscan879_loop
rx875_cur."!mark_push"(0, rx875_pos, $I10)
- rxscan878_done:
-.annotate "line", 408
- # rx enumcharlist negate=0 zerowidth
- ge rx875_pos, rx875_eos, rx875_fail
- sub $I10, rx875_pos, rx875_off
- substr $S10, rx875_tgt, $I10, 1
- index $I11, "<", $S10
- lt $I11, 0, rx875_fail
- # rx subrule "quote_EXPR" subtype=capture negate=
+ rxscan879_done:
+.annotate "line", 412
+ # rx literal "["
+ add $I11, rx875_pos, 1
+ gt $I11, rx875_eos, rx875_fail
+ sub $I11, rx875_pos, rx875_off
+ substr $S10, rx875_tgt, $I11, 1
+ ne $S10, "[", rx875_fail
+ add rx875_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx875_cur."!cursor_pos"(rx875_pos)
+ $P10 = rx875_cur."ws"()
+ unless $P10, rx875_fail
+ rx875_pos = $P10."pos"()
+ # rx rxquantr880 ** 0..1
+ set_addr $I881, rxquantr880_done
+ rx875_cur."!mark_push"(0, rx875_pos, $I881)
+ rxquantr880_loop:
+ # rx subrule "EXPR" subtype=capture negate=
rx875_cur."!cursor_pos"(rx875_pos)
- $P10 = rx875_cur."quote_EXPR"(":q", ":w")
+ $P10 = rx875_cur."EXPR"()
unless $P10, rx875_fail
rx875_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("quote_EXPR")
+ $P10."!cursor_names"("EXPR")
rx875_pos = $P10."pos"()
+ (rx875_rep) = rx875_cur."!mark_commit"($I881)
+ rxquantr880_done:
+ # rx literal "]"
+ add $I11, rx875_pos, 1
+ gt $I11, rx875_eos, rx875_fail
+ sub $I11, rx875_pos, rx875_off
+ substr $S10, rx875_tgt, $I11, 1
+ ne $S10, "]", rx875_fail
+ add rx875_pos, 1
# rx pass
- rx875_cur."!cursor_pass"(rx875_pos, "circumfix:sym<ang>")
- rx875_cur."!cursor_debug"("PASS ", "circumfix:sym<ang>", " at pos=", rx875_pos)
+ rx875_cur."!cursor_pass"(rx875_pos, "circumfix:sym<[ ]>")
+ rx875_cur."!cursor_debug"("PASS ", "circumfix:sym<[ ]>", " at pos=", rx875_pos)
.return (rx875_cur)
rx875_fail:
.annotate "line", 4
@@ -10485,269 +10552,243 @@
jump $I10
rx875_done:
rx875_cur."!cursor_fail"()
- rx875_cur."!cursor_debug"("FAIL ", "circumfix:sym<ang>")
+ rx875_cur."!cursor_debug"("FAIL ", "circumfix:sym<[ ]>")
.return (rx875_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>" :subid("212_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<[ ]>" :subid("212_1272816833.94956") :method
.annotate "line", 4
- new $P877, "ResizablePMCArray"
- push $P877, "<"
- .return ($P877)
+ $P877 = self."!PREFIX__!subrule"("", "[")
+ new $P878, "ResizablePMCArray"
+ push $P878, $P877
+ .return ($P878)
.end
.namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("213_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 4
- .local string rx880_tgt
- .local int rx880_pos
- .local int rx880_off
- .local int rx880_eos
- .local int rx880_rep
- .local pmc rx880_cur
- (rx880_cur, rx880_pos, rx880_tgt) = self."!cursor_start"()
- rx880_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
- .lex unicode:"$\x{a2}", rx880_cur
- .local pmc match
- .lex "$/", match
- length rx880_eos, rx880_tgt
- set rx880_off, 0
- lt rx880_pos, 2, rx880_start
- sub rx880_off, rx880_pos, 1
- substr rx880_tgt, rx880_tgt, rx880_off
- rx880_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan883_done
- goto rxscan883_scan
- rxscan883_loop:
- ($P10) = rx880_cur."from"()
- inc $P10
- set rx880_pos, $P10
- ge rx880_pos, rx880_eos, rxscan883_done
- rxscan883_scan:
- set_addr $I10, rxscan883_loop
- rx880_cur."!mark_push"(0, rx880_pos, $I10)
- rxscan883_done:
-.annotate "line", 409
+.sub "circumfix:sym<ang>" :subid("213_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx883_tgt
+ .local int rx883_pos
+ .local int rx883_off
+ .local int rx883_eos
+ .local int rx883_rep
+ .local pmc rx883_cur
+ (rx883_cur, rx883_pos, rx883_tgt) = self."!cursor_start"()
+ rx883_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
+ .lex unicode:"$\x{a2}", rx883_cur
+ .local pmc match
+ .lex "$/", match
+ length rx883_eos, rx883_tgt
+ set rx883_off, 0
+ lt rx883_pos, 2, rx883_start
+ sub rx883_off, rx883_pos, 1
+ substr rx883_tgt, rx883_tgt, rx883_off
+ rx883_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan886_done
+ goto rxscan886_scan
+ rxscan886_loop:
+ ($P10) = rx883_cur."from"()
+ inc $P10
+ set rx883_pos, $P10
+ ge rx883_pos, rx883_eos, rxscan886_done
+ rxscan886_scan:
+ set_addr $I10, rxscan886_loop
+ rx883_cur."!mark_push"(0, rx883_pos, $I10)
+ rxscan886_done:
+.annotate "line", 413
# rx enumcharlist negate=0 zerowidth
- ge rx880_pos, rx880_eos, rx880_fail
- sub $I10, rx880_pos, rx880_off
- substr $S10, rx880_tgt, $I10, 1
- index $I11, unicode:"\x{ab}", $S10
- lt $I11, 0, rx880_fail
+ ge rx883_pos, rx883_eos, rx883_fail
+ sub $I10, rx883_pos, rx883_off
+ substr $S10, rx883_tgt, $I10, 1
+ index $I11, "<", $S10
+ lt $I11, 0, rx883_fail
# rx subrule "quote_EXPR" subtype=capture negate=
- rx880_cur."!cursor_pos"(rx880_pos)
- $P10 = rx880_cur."quote_EXPR"(":qq", ":w")
- unless $P10, rx880_fail
- rx880_cur."!mark_push"(0, -1, 0, $P10)
+ rx883_cur."!cursor_pos"(rx883_pos)
+ $P10 = rx883_cur."quote_EXPR"(":q", ":w")
+ unless $P10, rx883_fail
+ rx883_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx880_pos = $P10."pos"()
+ rx883_pos = $P10."pos"()
# rx pass
- rx880_cur."!cursor_pass"(rx880_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
- rx880_cur."!cursor_debug"("PASS ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx880_pos)
- .return (rx880_cur)
- rx880_fail:
+ rx883_cur."!cursor_pass"(rx883_pos, "circumfix:sym<ang>")
+ rx883_cur."!cursor_debug"("PASS ", "circumfix:sym<ang>", " at pos=", rx883_pos)
+ .return (rx883_cur)
+ rx883_fail:
.annotate "line", 4
- (rx880_rep, rx880_pos, $I10, $P10) = rx880_cur."!mark_fail"(0)
- lt rx880_pos, -1, rx880_done
- eq rx880_pos, -1, rx880_fail
+ (rx883_rep, rx883_pos, $I10, $P10) = rx883_cur."!mark_fail"(0)
+ lt rx883_pos, -1, rx883_done
+ eq rx883_pos, -1, rx883_fail
jump $I10
- rx880_done:
- rx880_cur."!cursor_fail"()
- rx880_cur."!cursor_debug"("FAIL ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
- .return (rx880_cur)
+ rx883_done:
+ rx883_cur."!cursor_fail"()
+ rx883_cur."!cursor_debug"("FAIL ", "circumfix:sym<ang>")
+ .return (rx883_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("214_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<ang>" :subid("214_1272816833.94956") :method
.annotate "line", 4
- new $P882, "ResizablePMCArray"
- push $P882, unicode:"\x{ab}"
- .return ($P882)
+ new $P885, "ResizablePMCArray"
+ push $P885, "<"
+ .return ($P885)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>" :subid("215_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("215_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx885_tgt
- .local int rx885_pos
- .local int rx885_off
- .local int rx885_eos
- .local int rx885_rep
- .local pmc rx885_cur
- (rx885_cur, rx885_pos, rx885_tgt) = self."!cursor_start"()
- rx885_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
- .lex unicode:"$\x{a2}", rx885_cur
+ .local string rx888_tgt
+ .local int rx888_pos
+ .local int rx888_off
+ .local int rx888_eos
+ .local int rx888_rep
+ .local pmc rx888_cur
+ (rx888_cur, rx888_pos, rx888_tgt) = self."!cursor_start"()
+ rx888_cur."!cursor_debug"("START ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ .lex unicode:"$\x{a2}", rx888_cur
.local pmc match
.lex "$/", match
- length rx885_eos, rx885_tgt
- set rx885_off, 0
- lt rx885_pos, 2, rx885_start
- sub rx885_off, rx885_pos, 1
- substr rx885_tgt, rx885_tgt, rx885_off
- rx885_start:
+ length rx888_eos, rx888_tgt
+ set rx888_off, 0
+ lt rx888_pos, 2, rx888_start
+ sub rx888_off, rx888_pos, 1
+ substr rx888_tgt, rx888_tgt, rx888_off
+ rx888_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan888_done
- goto rxscan888_scan
- rxscan888_loop:
- ($P10) = rx885_cur."from"()
+ ne $I10, -1, rxscan891_done
+ goto rxscan891_scan
+ rxscan891_loop:
+ ($P10) = rx888_cur."from"()
inc $P10
- set rx885_pos, $P10
- ge rx885_pos, rx885_eos, rxscan888_done
- rxscan888_scan:
- set_addr $I10, rxscan888_loop
- rx885_cur."!mark_push"(0, rx885_pos, $I10)
- rxscan888_done:
-.annotate "line", 410
+ set rx888_pos, $P10
+ ge rx888_pos, rx888_eos, rxscan891_done
+ rxscan891_scan:
+ set_addr $I10, rxscan891_loop
+ rx888_cur."!mark_push"(0, rx888_pos, $I10)
+ rxscan891_done:
+.annotate "line", 414
# rx enumcharlist negate=0 zerowidth
- ge rx885_pos, rx885_eos, rx885_fail
- sub $I10, rx885_pos, rx885_off
- substr $S10, rx885_tgt, $I10, 1
- index $I11, "{", $S10
- lt $I11, 0, rx885_fail
- # rx subrule "pblock" subtype=capture negate=
- rx885_cur."!cursor_pos"(rx885_pos)
- $P10 = rx885_cur."pblock"()
- unless $P10, rx885_fail
- rx885_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("pblock")
- rx885_pos = $P10."pos"()
+ ge rx888_pos, rx888_eos, rx888_fail
+ sub $I10, rx888_pos, rx888_off
+ substr $S10, rx888_tgt, $I10, 1
+ index $I11, unicode:"\x{ab}", $S10
+ lt $I11, 0, rx888_fail
+ # rx subrule "quote_EXPR" subtype=capture negate=
+ rx888_cur."!cursor_pos"(rx888_pos)
+ $P10 = rx888_cur."quote_EXPR"(":qq", ":w")
+ unless $P10, rx888_fail
+ rx888_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("quote_EXPR")
+ rx888_pos = $P10."pos"()
# rx pass
- rx885_cur."!cursor_pass"(rx885_pos, "circumfix:sym<{ }>")
- rx885_cur."!cursor_debug"("PASS ", "circumfix:sym<{ }>", " at pos=", rx885_pos)
- .return (rx885_cur)
- rx885_fail:
+ rx888_cur."!cursor_pass"(rx888_pos, unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ rx888_cur."!cursor_debug"("PASS ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " at pos=", rx888_pos)
+ .return (rx888_cur)
+ rx888_fail:
.annotate "line", 4
- (rx885_rep, rx885_pos, $I10, $P10) = rx885_cur."!mark_fail"(0)
- lt rx885_pos, -1, rx885_done
- eq rx885_pos, -1, rx885_fail
+ (rx888_rep, rx888_pos, $I10, $P10) = rx888_cur."!mark_fail"(0)
+ lt rx888_pos, -1, rx888_done
+ eq rx888_pos, -1, rx888_fail
jump $I10
- rx885_done:
- rx885_cur."!cursor_fail"()
- rx885_cur."!cursor_debug"("FAIL ", "circumfix:sym<{ }>")
- .return (rx885_cur)
+ rx888_done:
+ rx888_cur."!cursor_fail"()
+ rx888_cur."!cursor_debug"("FAIL ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ .return (rx888_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>" :subid("216_1267204702.05125") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("216_1272816833.94956") :method
.annotate "line", 4
- new $P887, "ResizablePMCArray"
- push $P887, "{"
- .return ($P887)
+ new $P890, "ResizablePMCArray"
+ push $P890, unicode:"\x{ab}"
+ .return ($P890)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>" :subid("217_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<{ }>" :subid("217_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
- .local string rx890_tgt
- .local int rx890_pos
- .local int rx890_off
- .local int rx890_eos
- .local int rx890_rep
- .local pmc rx890_cur
- (rx890_cur, rx890_pos, rx890_tgt) = self."!cursor_start"()
- rx890_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
- .lex unicode:"$\x{a2}", rx890_cur
+ .local string rx893_tgt
+ .local int rx893_pos
+ .local int rx893_off
+ .local int rx893_eos
+ .local int rx893_rep
+ .local pmc rx893_cur
+ (rx893_cur, rx893_pos, rx893_tgt) = self."!cursor_start"()
+ rx893_cur."!cursor_debug"("START ", "circumfix:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx893_cur
.local pmc match
.lex "$/", match
- length rx890_eos, rx890_tgt
- set rx890_off, 0
- lt rx890_pos, 2, rx890_start
- sub rx890_off, rx890_pos, 1
- substr rx890_tgt, rx890_tgt, rx890_off
- rx890_start:
+ length rx893_eos, rx893_tgt
+ set rx893_off, 0
+ lt rx893_pos, 2, rx893_start
+ sub rx893_off, rx893_pos, 1
+ substr rx893_tgt, rx893_tgt, rx893_off
+ rx893_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan894_done
- goto rxscan894_scan
- rxscan894_loop:
- ($P10) = rx890_cur."from"()
+ ne $I10, -1, rxscan896_done
+ goto rxscan896_scan
+ rxscan896_loop:
+ ($P10) = rx893_cur."from"()
inc $P10
- set rx890_pos, $P10
- ge rx890_pos, rx890_eos, rxscan894_done
- rxscan894_scan:
- set_addr $I10, rxscan894_loop
- rx890_cur."!mark_push"(0, rx890_pos, $I10)
- rxscan894_done:
-.annotate "line", 411
- # rx subrule "sigil" subtype=capture negate=
- rx890_cur."!cursor_pos"(rx890_pos)
- $P10 = rx890_cur."sigil"()
- unless $P10, rx890_fail
- rx890_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("sigil")
- rx890_pos = $P10."pos"()
- # rx literal "("
- add $I11, rx890_pos, 1
- gt $I11, rx890_eos, rx890_fail
- sub $I11, rx890_pos, rx890_off
- substr $S10, rx890_tgt, $I11, 1
- ne $S10, "(", rx890_fail
- add rx890_pos, 1
- # rx subrule "semilist" subtype=capture negate=
- rx890_cur."!cursor_pos"(rx890_pos)
- $P10 = rx890_cur."semilist"()
- unless $P10, rx890_fail
- rx890_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("semilist")
- rx890_pos = $P10."pos"()
- alt895_0:
- set_addr $I10, alt895_1
- rx890_cur."!mark_push"(0, rx890_pos, $I10)
- # rx literal ")"
- add $I11, rx890_pos, 1
- gt $I11, rx890_eos, rx890_fail
- sub $I11, rx890_pos, rx890_off
- substr $S10, rx890_tgt, $I11, 1
- ne $S10, ")", rx890_fail
- add rx890_pos, 1
- goto alt895_end
- alt895_1:
- # rx subrule "FAILGOAL" subtype=method negate=
- rx890_cur."!cursor_pos"(rx890_pos)
- $P10 = rx890_cur."FAILGOAL"("')'")
- unless $P10, rx890_fail
- rx890_pos = $P10."pos"()
- alt895_end:
+ set rx893_pos, $P10
+ ge rx893_pos, rx893_eos, rxscan896_done
+ rxscan896_scan:
+ set_addr $I10, rxscan896_loop
+ rx893_cur."!mark_push"(0, rx893_pos, $I10)
+ rxscan896_done:
+.annotate "line", 415
+ # rx enumcharlist negate=0 zerowidth
+ ge rx893_pos, rx893_eos, rx893_fail
+ sub $I10, rx893_pos, rx893_off
+ substr $S10, rx893_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx893_fail
+ # rx subrule "pblock" subtype=capture negate=
+ rx893_cur."!cursor_pos"(rx893_pos)
+ $P10 = rx893_cur."pblock"()
+ unless $P10, rx893_fail
+ rx893_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("pblock")
+ rx893_pos = $P10."pos"()
# rx pass
- rx890_cur."!cursor_pass"(rx890_pos, "circumfix:sym<sigil>")
- rx890_cur."!cursor_debug"("PASS ", "circumfix:sym<sigil>", " at pos=", rx890_pos)
- .return (rx890_cur)
- rx890_fail:
+ rx893_cur."!cursor_pass"(rx893_pos, "circumfix:sym<{ }>")
+ rx893_cur."!cursor_debug"("PASS ", "circumfix:sym<{ }>", " at pos=", rx893_pos)
+ .return (rx893_cur)
+ rx893_fail:
.annotate "line", 4
- (rx890_rep, rx890_pos, $I10, $P10) = rx890_cur."!mark_fail"(0)
- lt rx890_pos, -1, rx890_done
- eq rx890_pos, -1, rx890_fail
+ (rx893_rep, rx893_pos, $I10, $P10) = rx893_cur."!mark_fail"(0)
+ lt rx893_pos, -1, rx893_done
+ eq rx893_pos, -1, rx893_fail
jump $I10
- rx890_done:
- rx890_cur."!cursor_fail"()
- rx890_cur."!cursor_debug"("FAIL ", "circumfix:sym<sigil>")
- .return (rx890_cur)
+ rx893_done:
+ rx893_cur."!cursor_fail"()
+ rx893_cur."!cursor_debug"("FAIL ", "circumfix:sym<{ }>")
+ .return (rx893_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>" :subid("218_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<{ }>" :subid("218_1272816833.94956") :method
.annotate "line", 4
- $P892 = self."!PREFIX__!subrule"("sigil", "")
- new $P893, "ResizablePMCArray"
- push $P893, $P892
- .return ($P893)
+ new $P895, "ResizablePMCArray"
+ push $P895, "{"
+ .return ($P895)
.end
.namespace ["NQP";"Grammar"]
-.sub "semilist" :subid("219_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<sigil>" :subid("219_1272816833.94956") :method :outer("11_1272816833.94956")
.annotate "line", 4
.local string rx898_tgt
.local int rx898_pos
@@ -10756,7 +10797,7 @@
.local int rx898_rep
.local pmc rx898_cur
(rx898_cur, rx898_pos, rx898_tgt) = self."!cursor_start"()
- rx898_cur."!cursor_debug"("START ", "semilist")
+ rx898_cur."!cursor_debug"("START ", "circumfix:sym<sigil>")
.lex unicode:"$\x{a2}", rx898_cur
.local pmc match
.lex "$/", match
@@ -10767,38 +10808,60 @@
substr rx898_tgt, rx898_tgt, rx898_off
rx898_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan901_done
- goto rxscan901_scan
- rxscan901_loop:
+ ne $I10, -1, rxscan902_done
+ goto rxscan902_scan
+ rxscan902_loop:
($P10) = rx898_cur."from"()
inc $P10
set rx898_pos, $P10
- ge rx898_pos, rx898_eos, rxscan901_done
- rxscan901_scan:
- set_addr $I10, rxscan901_loop
+ ge rx898_pos, rx898_eos, rxscan902_done
+ rxscan902_scan:
+ set_addr $I10, rxscan902_loop
rx898_cur."!mark_push"(0, rx898_pos, $I10)
- rxscan901_done:
-.annotate "line", 413
- # rx subrule "ws" subtype=method negate=
+ rxscan902_done:
+.annotate "line", 416
+ # rx subrule "sigil" subtype=capture negate=
rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."ws"()
+ $P10 = rx898_cur."sigil"()
unless $P10, rx898_fail
+ rx898_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("sigil")
rx898_pos = $P10."pos"()
- # rx subrule "statement" subtype=capture negate=
+ # rx literal "("
+ add $I11, rx898_pos, 1
+ gt $I11, rx898_eos, rx898_fail
+ sub $I11, rx898_pos, rx898_off
+ substr $S10, rx898_tgt, $I11, 1
+ ne $S10, "(", rx898_fail
+ add rx898_pos, 1
+ # rx subrule "semilist" subtype=capture negate=
rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."statement"()
+ $P10 = rx898_cur."semilist"()
unless $P10, rx898_fail
rx898_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("statement")
+ $P10."!cursor_names"("semilist")
rx898_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
+ alt903_0:
+ set_addr $I10, alt903_1
+ rx898_cur."!mark_push"(0, rx898_pos, $I10)
+ # rx literal ")"
+ add $I11, rx898_pos, 1
+ gt $I11, rx898_eos, rx898_fail
+ sub $I11, rx898_pos, rx898_off
+ substr $S10, rx898_tgt, $I11, 1
+ ne $S10, ")", rx898_fail
+ add rx898_pos, 1
+ goto alt903_end
+ alt903_1:
+ # rx subrule "FAILGOAL" subtype=method negate=
rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."ws"()
+ $P10 = rx898_cur."FAILGOAL"("')'")
unless $P10, rx898_fail
rx898_pos = $P10."pos"()
+ alt903_end:
# rx pass
- rx898_cur."!cursor_pass"(rx898_pos, "semilist")
- rx898_cur."!cursor_debug"("PASS ", "semilist", " at pos=", rx898_pos)
+ rx898_cur."!cursor_pass"(rx898_pos, "circumfix:sym<sigil>")
+ rx898_cur."!cursor_debug"("PASS ", "circumfix:sym<sigil>", " at pos=", rx898_pos)
.return (rx898_cur)
rx898_fail:
.annotate "line", 4
@@ -10808,4578 +10871,4526 @@
jump $I10
rx898_done:
rx898_cur."!cursor_fail"()
- rx898_cur."!cursor_debug"("FAIL ", "semilist")
+ rx898_cur."!cursor_debug"("FAIL ", "circumfix:sym<sigil>")
.return (rx898_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist" :subid("220_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<sigil>" :subid("220_1272816833.94956") :method
.annotate "line", 4
- new $P900, "ResizablePMCArray"
- push $P900, ""
- .return ($P900)
+ $P900 = self."!PREFIX__!subrule"("sigil", "")
+ new $P901, "ResizablePMCArray"
+ push $P901, $P900
+ .return ($P901)
.end
.namespace ["NQP";"Grammar"]
-.sub "infixish" :subid("221_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx905_tgt
- .local int rx905_pos
- .local int rx905_off
- .local int rx905_eos
- .local int rx905_rep
- .local pmc rx905_cur
- (rx905_cur, rx905_pos, rx905_tgt) = self."!cursor_start"()
- rx905_cur."!cursor_debug"("START ", "infixish")
- .lex unicode:"$\x{a2}", rx905_cur
- .local pmc match
- .lex "$/", match
- length rx905_eos, rx905_tgt
- set rx905_off, 0
- lt rx905_pos, 2, rx905_start
- sub rx905_off, rx905_pos, 1
- substr rx905_tgt, rx905_tgt, rx905_off
- rx905_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan908_done
- goto rxscan908_scan
- rxscan908_loop:
- ($P10) = rx905_cur."from"()
- inc $P10
- set rx905_pos, $P10
- ge rx905_pos, rx905_eos, rxscan908_done
- rxscan908_scan:
- set_addr $I10, rxscan908_loop
- rx905_cur."!mark_push"(0, rx905_pos, $I10)
- rxscan908_done:
-.annotate "line", 436
- # rx subrule "infixstopper" subtype=zerowidth negate=1
- rx905_cur."!cursor_pos"(rx905_pos)
- $P10 = rx905_cur."infixstopper"()
- if $P10, rx905_fail
- # rx subrule "infix" subtype=capture negate=
- rx905_cur."!cursor_pos"(rx905_pos)
- $P10 = rx905_cur."infix"()
- unless $P10, rx905_fail
- rx905_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("OPER=infix")
- rx905_pos = $P10."pos"()
+.sub "semilist" :subid("221_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 4
+ .local string rx906_tgt
+ .local int rx906_pos
+ .local int rx906_off
+ .local int rx906_eos
+ .local int rx906_rep
+ .local pmc rx906_cur
+ (rx906_cur, rx906_pos, rx906_tgt) = self."!cursor_start"()
+ rx906_cur."!cursor_debug"("START ", "semilist")
+ .lex unicode:"$\x{a2}", rx906_cur
+ .local pmc match
+ .lex "$/", match
+ length rx906_eos, rx906_tgt
+ set rx906_off, 0
+ lt rx906_pos, 2, rx906_start
+ sub rx906_off, rx906_pos, 1
+ substr rx906_tgt, rx906_tgt, rx906_off
+ rx906_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan909_done
+ goto rxscan909_scan
+ rxscan909_loop:
+ ($P10) = rx906_cur."from"()
+ inc $P10
+ set rx906_pos, $P10
+ ge rx906_pos, rx906_eos, rxscan909_done
+ rxscan909_scan:
+ set_addr $I10, rxscan909_loop
+ rx906_cur."!mark_push"(0, rx906_pos, $I10)
+ rxscan909_done:
+.annotate "line", 418
+ # rx subrule "ws" subtype=method negate=
+ rx906_cur."!cursor_pos"(rx906_pos)
+ $P10 = rx906_cur."ws"()
+ unless $P10, rx906_fail
+ rx906_pos = $P10."pos"()
+ # rx subrule "statement" subtype=capture negate=
+ rx906_cur."!cursor_pos"(rx906_pos)
+ $P10 = rx906_cur."statement"()
+ unless $P10, rx906_fail
+ rx906_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("statement")
+ rx906_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx906_cur."!cursor_pos"(rx906_pos)
+ $P10 = rx906_cur."ws"()
+ unless $P10, rx906_fail
+ rx906_pos = $P10."pos"()
# rx pass
- rx905_cur."!cursor_pass"(rx905_pos, "infixish")
- rx905_cur."!cursor_debug"("PASS ", "infixish", " at pos=", rx905_pos)
- .return (rx905_cur)
- rx905_fail:
-.annotate "line", 417
- (rx905_rep, rx905_pos, $I10, $P10) = rx905_cur."!mark_fail"(0)
- lt rx905_pos, -1, rx905_done
- eq rx905_pos, -1, rx905_fail
- jump $I10
- rx905_done:
- rx905_cur."!cursor_fail"()
- rx905_cur."!cursor_debug"("FAIL ", "infixish")
- .return (rx905_cur)
+ rx906_cur."!cursor_pass"(rx906_pos, "semilist")
+ rx906_cur."!cursor_debug"("PASS ", "semilist", " at pos=", rx906_pos)
+ .return (rx906_cur)
+ rx906_fail:
+.annotate "line", 4
+ (rx906_rep, rx906_pos, $I10, $P10) = rx906_cur."!mark_fail"(0)
+ lt rx906_pos, -1, rx906_done
+ eq rx906_pos, -1, rx906_fail
+ jump $I10
+ rx906_done:
+ rx906_cur."!cursor_fail"()
+ rx906_cur."!cursor_debug"("FAIL ", "semilist")
+ .return (rx906_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish" :subid("222_1267204702.05125") :method
-.annotate "line", 417
- new $P907, "ResizablePMCArray"
- push $P907, ""
- .return ($P907)
+.sub "!PREFIX__semilist" :subid("222_1272816833.94956") :method
+.annotate "line", 4
+ new $P908, "ResizablePMCArray"
+ push $P908, ""
+ .return ($P908)
.end
.namespace ["NQP";"Grammar"]
-.sub "infixstopper" :subid("223_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx910_tgt
- .local int rx910_pos
- .local int rx910_off
- .local int rx910_eos
- .local int rx910_rep
- .local pmc rx910_cur
- (rx910_cur, rx910_pos, rx910_tgt) = self."!cursor_start"()
- rx910_cur."!cursor_debug"("START ", "infixstopper")
- .lex unicode:"$\x{a2}", rx910_cur
- .local pmc match
- .lex "$/", match
- length rx910_eos, rx910_tgt
- set rx910_off, 0
- lt rx910_pos, 2, rx910_start
- sub rx910_off, rx910_pos, 1
- substr rx910_tgt, rx910_tgt, rx910_off
- rx910_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan913_done
- goto rxscan913_scan
- rxscan913_loop:
- ($P10) = rx910_cur."from"()
- inc $P10
- set rx910_pos, $P10
- ge rx910_pos, rx910_eos, rxscan913_done
- rxscan913_scan:
- set_addr $I10, rxscan913_loop
- rx910_cur."!mark_push"(0, rx910_pos, $I10)
- rxscan913_done:
-.annotate "line", 437
+.sub "infixish" :subid("223_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx913_tgt
+ .local int rx913_pos
+ .local int rx913_off
+ .local int rx913_eos
+ .local int rx913_rep
+ .local pmc rx913_cur
+ (rx913_cur, rx913_pos, rx913_tgt) = self."!cursor_start"()
+ rx913_cur."!cursor_debug"("START ", "infixish")
+ .lex unicode:"$\x{a2}", rx913_cur
+ .local pmc match
+ .lex "$/", match
+ length rx913_eos, rx913_tgt
+ set rx913_off, 0
+ lt rx913_pos, 2, rx913_start
+ sub rx913_off, rx913_pos, 1
+ substr rx913_tgt, rx913_tgt, rx913_off
+ rx913_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan916_done
+ goto rxscan916_scan
+ rxscan916_loop:
+ ($P10) = rx913_cur."from"()
+ inc $P10
+ set rx913_pos, $P10
+ ge rx913_pos, rx913_eos, rxscan916_done
+ rxscan916_scan:
+ set_addr $I10, rxscan916_loop
+ rx913_cur."!mark_push"(0, rx913_pos, $I10)
+ rxscan916_done:
+.annotate "line", 441
+ # rx subrule "infixstopper" subtype=zerowidth negate=1
+ rx913_cur."!cursor_pos"(rx913_pos)
+ $P10 = rx913_cur."infixstopper"()
+ if $P10, rx913_fail
+ # rx subrule "infix" subtype=capture negate=
+ rx913_cur."!cursor_pos"(rx913_pos)
+ $P10 = rx913_cur."infix"()
+ unless $P10, rx913_fail
+ rx913_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("OPER=infix")
+ rx913_pos = $P10."pos"()
+ # rx pass
+ rx913_cur."!cursor_pass"(rx913_pos, "infixish")
+ rx913_cur."!cursor_debug"("PASS ", "infixish", " at pos=", rx913_pos)
+ .return (rx913_cur)
+ rx913_fail:
+.annotate "line", 422
+ (rx913_rep, rx913_pos, $I10, $P10) = rx913_cur."!mark_fail"(0)
+ lt rx913_pos, -1, rx913_done
+ eq rx913_pos, -1, rx913_fail
+ jump $I10
+ rx913_done:
+ rx913_cur."!cursor_fail"()
+ rx913_cur."!cursor_debug"("FAIL ", "infixish")
+ .return (rx913_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "!PREFIX__infixish" :subid("224_1272816833.94956") :method
+.annotate "line", 422
+ new $P915, "ResizablePMCArray"
+ push $P915, ""
+ .return ($P915)
+.end
+
+
+.namespace ["NQP";"Grammar"]
+.sub "infixstopper" :subid("225_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx918_tgt
+ .local int rx918_pos
+ .local int rx918_off
+ .local int rx918_eos
+ .local int rx918_rep
+ .local pmc rx918_cur
+ (rx918_cur, rx918_pos, rx918_tgt) = self."!cursor_start"()
+ rx918_cur."!cursor_debug"("START ", "infixstopper")
+ .lex unicode:"$\x{a2}", rx918_cur
+ .local pmc match
+ .lex "$/", match
+ length rx918_eos, rx918_tgt
+ set rx918_off, 0
+ lt rx918_pos, 2, rx918_start
+ sub rx918_off, rx918_pos, 1
+ substr rx918_tgt, rx918_tgt, rx918_off
+ rx918_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan921_done
+ goto rxscan921_scan
+ rxscan921_loop:
+ ($P10) = rx918_cur."from"()
+ inc $P10
+ set rx918_pos, $P10
+ ge rx918_pos, rx918_eos, rxscan921_done
+ rxscan921_scan:
+ set_addr $I10, rxscan921_loop
+ rx918_cur."!mark_push"(0, rx918_pos, $I10)
+ rxscan921_done:
+.annotate "line", 442
# rx subrule "lambda" subtype=zerowidth negate=
- rx910_cur."!cursor_pos"(rx910_pos)
- $P10 = rx910_cur."lambda"()
- unless $P10, rx910_fail
- # rx pass
- rx910_cur."!cursor_pass"(rx910_pos, "infixstopper")
- rx910_cur."!cursor_debug"("PASS ", "infixstopper", " at pos=", rx910_pos)
- .return (rx910_cur)
- rx910_fail:
-.annotate "line", 417
- (rx910_rep, rx910_pos, $I10, $P10) = rx910_cur."!mark_fail"(0)
- lt rx910_pos, -1, rx910_done
- eq rx910_pos, -1, rx910_fail
- jump $I10
- rx910_done:
- rx910_cur."!cursor_fail"()
- rx910_cur."!cursor_debug"("FAIL ", "infixstopper")
- .return (rx910_cur)
+ rx918_cur."!cursor_pos"(rx918_pos)
+ $P10 = rx918_cur."lambda"()
+ unless $P10, rx918_fail
+ # rx pass
+ rx918_cur."!cursor_pass"(rx918_pos, "infixstopper")
+ rx918_cur."!cursor_debug"("PASS ", "infixstopper", " at pos=", rx918_pos)
+ .return (rx918_cur)
+ rx918_fail:
+.annotate "line", 422
+ (rx918_rep, rx918_pos, $I10, $P10) = rx918_cur."!mark_fail"(0)
+ lt rx918_pos, -1, rx918_done
+ eq rx918_pos, -1, rx918_fail
+ jump $I10
+ rx918_done:
+ rx918_cur."!cursor_fail"()
+ rx918_cur."!cursor_debug"("FAIL ", "infixstopper")
+ .return (rx918_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper" :subid("224_1267204702.05125") :method
-.annotate "line", 417
- new $P912, "ResizablePMCArray"
- push $P912, ""
- .return ($P912)
+.sub "!PREFIX__infixstopper" :subid("226_1272816833.94956") :method
+.annotate "line", 422
+ new $P920, "ResizablePMCArray"
+ push $P920, ""
+ .return ($P920)
.end
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>" :subid("225_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx915_tgt
- .local int rx915_pos
- .local int rx915_off
- .local int rx915_eos
- .local int rx915_rep
- .local pmc rx915_cur
- (rx915_cur, rx915_pos, rx915_tgt) = self."!cursor_start"()
- rx915_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
- .lex unicode:"$\x{a2}", rx915_cur
- .local pmc match
- .lex "$/", match
- length rx915_eos, rx915_tgt
- set rx915_off, 0
- lt rx915_pos, 2, rx915_start
- sub rx915_off, rx915_pos, 1
- substr rx915_tgt, rx915_tgt, rx915_off
- rx915_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan919_done
- goto rxscan919_scan
- rxscan919_loop:
- ($P10) = rx915_cur."from"()
- inc $P10
- set rx915_pos, $P10
- ge rx915_pos, rx915_eos, rxscan919_done
- rxscan919_scan:
- set_addr $I10, rxscan919_loop
- rx915_cur."!mark_push"(0, rx915_pos, $I10)
- rxscan919_done:
-.annotate "line", 440
+.sub "postcircumfix:sym<[ ]>" :subid("227_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx923_tgt
+ .local int rx923_pos
+ .local int rx923_off
+ .local int rx923_eos
+ .local int rx923_rep
+ .local pmc rx923_cur
+ (rx923_cur, rx923_pos, rx923_tgt) = self."!cursor_start"()
+ rx923_cur."!cursor_debug"("START ", "postcircumfix:sym<[ ]>")
+ .lex unicode:"$\x{a2}", rx923_cur
+ .local pmc match
+ .lex "$/", match
+ length rx923_eos, rx923_tgt
+ set rx923_off, 0
+ lt rx923_pos, 2, rx923_start
+ sub rx923_off, rx923_pos, 1
+ substr rx923_tgt, rx923_tgt, rx923_off
+ rx923_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan927_done
+ goto rxscan927_scan
+ rxscan927_loop:
+ ($P10) = rx923_cur."from"()
+ inc $P10
+ set rx923_pos, $P10
+ ge rx923_pos, rx923_eos, rxscan927_done
+ rxscan927_scan:
+ set_addr $I10, rxscan927_loop
+ rx923_cur."!mark_push"(0, rx923_pos, $I10)
+ rxscan927_done:
+.annotate "line", 445
# rx literal "["
- add $I11, rx915_pos, 1
- gt $I11, rx915_eos, rx915_fail
- sub $I11, rx915_pos, rx915_off
- substr $S10, rx915_tgt, $I11, 1
- ne $S10, "[", rx915_fail
- add rx915_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx915_cur."!cursor_pos"(rx915_pos)
- $P10 = rx915_cur."ws"()
- unless $P10, rx915_fail
- rx915_pos = $P10."pos"()
+ add $I11, rx923_pos, 1
+ gt $I11, rx923_eos, rx923_fail
+ sub $I11, rx923_pos, rx923_off
+ substr $S10, rx923_tgt, $I11, 1
+ ne $S10, "[", rx923_fail
+ add rx923_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx923_cur."!cursor_pos"(rx923_pos)
+ $P10 = rx923_cur."ws"()
+ unless $P10, rx923_fail
+ rx923_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx915_cur."!cursor_pos"(rx915_pos)
- $P10 = rx915_cur."EXPR"()
- unless $P10, rx915_fail
- rx915_cur."!mark_push"(0, -1, 0, $P10)
+ rx923_cur."!cursor_pos"(rx923_pos)
+ $P10 = rx923_cur."EXPR"()
+ unless $P10, rx923_fail
+ rx923_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx915_pos = $P10."pos"()
+ rx923_pos = $P10."pos"()
# rx literal "]"
- add $I11, rx915_pos, 1
- gt $I11, rx915_eos, rx915_fail
- sub $I11, rx915_pos, rx915_off
- substr $S10, rx915_tgt, $I11, 1
- ne $S10, "]", rx915_fail
- add rx915_pos, 1
-.annotate "line", 441
+ add $I11, rx923_pos, 1
+ gt $I11, rx923_eos, rx923_fail
+ sub $I11, rx923_pos, rx923_off
+ substr $S10, rx923_tgt, $I11, 1
+ ne $S10, "]", rx923_fail
+ add rx923_pos, 1
+.annotate "line", 446
# rx subrule "O" subtype=capture negate=
- rx915_cur."!cursor_pos"(rx915_pos)
- $P10 = rx915_cur."O"("%methodop")
- unless $P10, rx915_fail
- rx915_cur."!mark_push"(0, -1, 0, $P10)
+ rx923_cur."!cursor_pos"(rx923_pos)
+ $P10 = rx923_cur."O"("%methodop")
+ unless $P10, rx923_fail
+ rx923_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx915_pos = $P10."pos"()
-.annotate "line", 439
+ rx923_pos = $P10."pos"()
+.annotate "line", 444
# rx pass
- rx915_cur."!cursor_pass"(rx915_pos, "postcircumfix:sym<[ ]>")
- rx915_cur."!cursor_debug"("PASS ", "postcircumfix:sym<[ ]>", " at pos=", rx915_pos)
- .return (rx915_cur)
- rx915_fail:
-.annotate "line", 417
- (rx915_rep, rx915_pos, $I10, $P10) = rx915_cur."!mark_fail"(0)
- lt rx915_pos, -1, rx915_done
- eq rx915_pos, -1, rx915_fail
+ rx923_cur."!cursor_pass"(rx923_pos, "postcircumfix:sym<[ ]>")
+ rx923_cur."!cursor_debug"("PASS ", "postcircumfix:sym<[ ]>", " at pos=", rx923_pos)
+ .return (rx923_cur)
+ rx923_fail:
+.annotate "line", 422
+ (rx923_rep, rx923_pos, $I10, $P10) = rx923_cur."!mark_fail"(0)
+ lt rx923_pos, -1, rx923_done
+ eq rx923_pos, -1, rx923_fail
jump $I10
- rx915_done:
- rx915_cur."!cursor_fail"()
- rx915_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<[ ]>")
- .return (rx915_cur)
+ rx923_done:
+ rx923_cur."!cursor_fail"()
+ rx923_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<[ ]>")
+ .return (rx923_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>" :subid("226_1267204702.05125") :method
-.annotate "line", 417
- $P917 = self."!PREFIX__!subrule"("", "[")
- new $P918, "ResizablePMCArray"
- push $P918, $P917
- .return ($P918)
+.sub "!PREFIX__postcircumfix:sym<[ ]>" :subid("228_1272816833.94956") :method
+.annotate "line", 422
+ $P925 = self."!PREFIX__!subrule"("", "[")
+ new $P926, "ResizablePMCArray"
+ push $P926, $P925
+ .return ($P926)
.end
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>" :subid("227_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx921_tgt
- .local int rx921_pos
- .local int rx921_off
- .local int rx921_eos
- .local int rx921_rep
- .local pmc rx921_cur
- (rx921_cur, rx921_pos, rx921_tgt) = self."!cursor_start"()
- rx921_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
- .lex unicode:"$\x{a2}", rx921_cur
- .local pmc match
- .lex "$/", match
- length rx921_eos, rx921_tgt
- set rx921_off, 0
- lt rx921_pos, 2, rx921_start
- sub rx921_off, rx921_pos, 1
- substr rx921_tgt, rx921_tgt, rx921_off
- rx921_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan925_done
- goto rxscan925_scan
- rxscan925_loop:
- ($P10) = rx921_cur."from"()
- inc $P10
- set rx921_pos, $P10
- ge rx921_pos, rx921_eos, rxscan925_done
- rxscan925_scan:
- set_addr $I10, rxscan925_loop
- rx921_cur."!mark_push"(0, rx921_pos, $I10)
- rxscan925_done:
-.annotate "line", 445
+.sub "postcircumfix:sym<{ }>" :subid("229_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx929_tgt
+ .local int rx929_pos
+ .local int rx929_off
+ .local int rx929_eos
+ .local int rx929_rep
+ .local pmc rx929_cur
+ (rx929_cur, rx929_pos, rx929_tgt) = self."!cursor_start"()
+ rx929_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx929_cur
+ .local pmc match
+ .lex "$/", match
+ length rx929_eos, rx929_tgt
+ set rx929_off, 0
+ lt rx929_pos, 2, rx929_start
+ sub rx929_off, rx929_pos, 1
+ substr rx929_tgt, rx929_tgt, rx929_off
+ rx929_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan933_done
+ goto rxscan933_scan
+ rxscan933_loop:
+ ($P10) = rx929_cur."from"()
+ inc $P10
+ set rx929_pos, $P10
+ ge rx929_pos, rx929_eos, rxscan933_done
+ rxscan933_scan:
+ set_addr $I10, rxscan933_loop
+ rx929_cur."!mark_push"(0, rx929_pos, $I10)
+ rxscan933_done:
+.annotate "line", 450
# rx literal "{"
- add $I11, rx921_pos, 1
- gt $I11, rx921_eos, rx921_fail
- sub $I11, rx921_pos, rx921_off
- substr $S10, rx921_tgt, $I11, 1
- ne $S10, "{", rx921_fail
- add rx921_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx921_cur."!cursor_pos"(rx921_pos)
- $P10 = rx921_cur."ws"()
- unless $P10, rx921_fail
- rx921_pos = $P10."pos"()
+ add $I11, rx929_pos, 1
+ gt $I11, rx929_eos, rx929_fail
+ sub $I11, rx929_pos, rx929_off
+ substr $S10, rx929_tgt, $I11, 1
+ ne $S10, "{", rx929_fail
+ add rx929_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx929_cur."!cursor_pos"(rx929_pos)
+ $P10 = rx929_cur."ws"()
+ unless $P10, rx929_fail
+ rx929_pos = $P10."pos"()
# rx subrule "EXPR" subtype=capture negate=
- rx921_cur."!cursor_pos"(rx921_pos)
- $P10 = rx921_cur."EXPR"()
- unless $P10, rx921_fail
- rx921_cur."!mark_push"(0, -1, 0, $P10)
+ rx929_cur."!cursor_pos"(rx929_pos)
+ $P10 = rx929_cur."EXPR"()
+ unless $P10, rx929_fail
+ rx929_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx921_pos = $P10."pos"()
+ rx929_pos = $P10."pos"()
# rx literal "}"
- add $I11, rx921_pos, 1
- gt $I11, rx921_eos, rx921_fail
- sub $I11, rx921_pos, rx921_off
- substr $S10, rx921_tgt, $I11, 1
- ne $S10, "}", rx921_fail
- add rx921_pos, 1
-.annotate "line", 446
+ add $I11, rx929_pos, 1
+ gt $I11, rx929_eos, rx929_fail
+ sub $I11, rx929_pos, rx929_off
+ substr $S10, rx929_tgt, $I11, 1
+ ne $S10, "}", rx929_fail
+ add rx929_pos, 1
+.annotate "line", 451
# rx subrule "O" subtype=capture negate=
- rx921_cur."!cursor_pos"(rx921_pos)
- $P10 = rx921_cur."O"("%methodop")
- unless $P10, rx921_fail
- rx921_cur."!mark_push"(0, -1, 0, $P10)
+ rx929_cur."!cursor_pos"(rx929_pos)
+ $P10 = rx929_cur."O"("%methodop")
+ unless $P10, rx929_fail
+ rx929_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx921_pos = $P10."pos"()
-.annotate "line", 444
+ rx929_pos = $P10."pos"()
+.annotate "line", 449
# rx pass
- rx921_cur."!cursor_pass"(rx921_pos, "postcircumfix:sym<{ }>")
- rx921_cur."!cursor_debug"("PASS ", "postcircumfix:sym<{ }>", " at pos=", rx921_pos)
- .return (rx921_cur)
- rx921_fail:
-.annotate "line", 417
- (rx921_rep, rx921_pos, $I10, $P10) = rx921_cur."!mark_fail"(0)
- lt rx921_pos, -1, rx921_done
- eq rx921_pos, -1, rx921_fail
- jump $I10
- rx921_done:
- rx921_cur."!cursor_fail"()
- rx921_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<{ }>")
- .return (rx921_cur)
+ rx929_cur."!cursor_pass"(rx929_pos, "postcircumfix:sym<{ }>")
+ rx929_cur."!cursor_debug"("PASS ", "postcircumfix:sym<{ }>", " at pos=", rx929_pos)
+ .return (rx929_cur)
+ rx929_fail:
+.annotate "line", 422
+ (rx929_rep, rx929_pos, $I10, $P10) = rx929_cur."!mark_fail"(0)
+ lt rx929_pos, -1, rx929_done
+ eq rx929_pos, -1, rx929_fail
+ jump $I10
+ rx929_done:
+ rx929_cur."!cursor_fail"()
+ rx929_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<{ }>")
+ .return (rx929_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>" :subid("228_1267204702.05125") :method
-.annotate "line", 417
- $P923 = self."!PREFIX__!subrule"("", "{")
- new $P924, "ResizablePMCArray"
- push $P924, $P923
- .return ($P924)
+.sub "!PREFIX__postcircumfix:sym<{ }>" :subid("230_1272816833.94956") :method
+.annotate "line", 422
+ $P931 = self."!PREFIX__!subrule"("", "{")
+ new $P932, "ResizablePMCArray"
+ push $P932, $P931
+ .return ($P932)
.end
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>" :subid("229_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx927_tgt
- .local int rx927_pos
- .local int rx927_off
- .local int rx927_eos
- .local int rx927_rep
- .local pmc rx927_cur
- (rx927_cur, rx927_pos, rx927_tgt) = self."!cursor_start"()
- rx927_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
- .lex unicode:"$\x{a2}", rx927_cur
- .local pmc match
- .lex "$/", match
- length rx927_eos, rx927_tgt
- set rx927_off, 0
- lt rx927_pos, 2, rx927_start
- sub rx927_off, rx927_pos, 1
- substr rx927_tgt, rx927_tgt, rx927_off
- rx927_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan930_done
- goto rxscan930_scan
- rxscan930_loop:
- ($P10) = rx927_cur."from"()
- inc $P10
- set rx927_pos, $P10
- ge rx927_pos, rx927_eos, rxscan930_done
- rxscan930_scan:
- set_addr $I10, rxscan930_loop
- rx927_cur."!mark_push"(0, rx927_pos, $I10)
- rxscan930_done:
-.annotate "line", 450
+.sub "postcircumfix:sym<ang>" :subid("231_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx935_tgt
+ .local int rx935_pos
+ .local int rx935_off
+ .local int rx935_eos
+ .local int rx935_rep
+ .local pmc rx935_cur
+ (rx935_cur, rx935_pos, rx935_tgt) = self."!cursor_start"()
+ rx935_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
+ .lex unicode:"$\x{a2}", rx935_cur
+ .local pmc match
+ .lex "$/", match
+ length rx935_eos, rx935_tgt
+ set rx935_off, 0
+ lt rx935_pos, 2, rx935_start
+ sub rx935_off, rx935_pos, 1
+ substr rx935_tgt, rx935_tgt, rx935_off
+ rx935_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan938_done
+ goto rxscan938_scan
+ rxscan938_loop:
+ ($P10) = rx935_cur."from"()
+ inc $P10
+ set rx935_pos, $P10
+ ge rx935_pos, rx935_eos, rxscan938_done
+ rxscan938_scan:
+ set_addr $I10, rxscan938_loop
+ rx935_cur."!mark_push"(0, rx935_pos, $I10)
+ rxscan938_done:
+.annotate "line", 455
# rx enumcharlist negate=0 zerowidth
- ge rx927_pos, rx927_eos, rx927_fail
- sub $I10, rx927_pos, rx927_off
- substr $S10, rx927_tgt, $I10, 1
+ ge rx935_pos, rx935_eos, rx935_fail
+ sub $I10, rx935_pos, rx935_off
+ substr $S10, rx935_tgt, $I10, 1
index $I11, "<", $S10
- lt $I11, 0, rx927_fail
+ lt $I11, 0, rx935_fail
# rx subrule "quote_EXPR" subtype=capture negate=
- rx927_cur."!cursor_pos"(rx927_pos)
- $P10 = rx927_cur."quote_EXPR"(":q")
- unless $P10, rx927_fail
- rx927_cur."!mark_push"(0, -1, 0, $P10)
+ rx935_cur."!cursor_pos"(rx935_pos)
+ $P10 = rx935_cur."quote_EXPR"(":q")
+ unless $P10, rx935_fail
+ rx935_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx927_pos = $P10."pos"()
-.annotate "line", 451
+ rx935_pos = $P10."pos"()
+.annotate "line", 456
# rx subrule "O" subtype=capture negate=
- rx927_cur."!cursor_pos"(rx927_pos)
- $P10 = rx927_cur."O"("%methodop")
- unless $P10, rx927_fail
- rx927_cur."!mark_push"(0, -1, 0, $P10)
+ rx935_cur."!cursor_pos"(rx935_pos)
+ $P10 = rx935_cur."O"("%methodop")
+ unless $P10, rx935_fail
+ rx935_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx927_pos = $P10."pos"()
-.annotate "line", 449
+ rx935_pos = $P10."pos"()
+.annotate "line", 454
# rx pass
- rx927_cur."!cursor_pass"(rx927_pos, "postcircumfix:sym<ang>")
- rx927_cur."!cursor_debug"("PASS ", "postcircumfix:sym<ang>", " at pos=", rx927_pos)
- .return (rx927_cur)
- rx927_fail:
-.annotate "line", 417
- (rx927_rep, rx927_pos, $I10, $P10) = rx927_cur."!mark_fail"(0)
- lt rx927_pos, -1, rx927_done
- eq rx927_pos, -1, rx927_fail
- jump $I10
- rx927_done:
- rx927_cur."!cursor_fail"()
- rx927_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<ang>")
- .return (rx927_cur)
+ rx935_cur."!cursor_pass"(rx935_pos, "postcircumfix:sym<ang>")
+ rx935_cur."!cursor_debug"("PASS ", "postcircumfix:sym<ang>", " at pos=", rx935_pos)
+ .return (rx935_cur)
+ rx935_fail:
+.annotate "line", 422
+ (rx935_rep, rx935_pos, $I10, $P10) = rx935_cur."!mark_fail"(0)
+ lt rx935_pos, -1, rx935_done
+ eq rx935_pos, -1, rx935_fail
+ jump $I10
+ rx935_done:
+ rx935_cur."!cursor_fail"()
+ rx935_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<ang>")
+ .return (rx935_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>" :subid("230_1267204702.05125") :method
-.annotate "line", 417
- new $P929, "ResizablePMCArray"
- push $P929, "<"
- .return ($P929)
+.sub "!PREFIX__postcircumfix:sym<ang>" :subid("232_1272816833.94956") :method
+.annotate "line", 422
+ new $P937, "ResizablePMCArray"
+ push $P937, "<"
+ .return ($P937)
.end
.namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>" :subid("231_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx932_tgt
- .local int rx932_pos
- .local int rx932_off
- .local int rx932_eos
- .local int rx932_rep
- .local pmc rx932_cur
- (rx932_cur, rx932_pos, rx932_tgt) = self."!cursor_start"()
- rx932_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
- .lex unicode:"$\x{a2}", rx932_cur
- .local pmc match
- .lex "$/", match
- length rx932_eos, rx932_tgt
- set rx932_off, 0
- lt rx932_pos, 2, rx932_start
- sub rx932_off, rx932_pos, 1
- substr rx932_tgt, rx932_tgt, rx932_off
- rx932_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan936_done
- goto rxscan936_scan
- rxscan936_loop:
- ($P10) = rx932_cur."from"()
- inc $P10
- set rx932_pos, $P10
- ge rx932_pos, rx932_eos, rxscan936_done
- rxscan936_scan:
- set_addr $I10, rxscan936_loop
- rx932_cur."!mark_push"(0, rx932_pos, $I10)
- rxscan936_done:
-.annotate "line", 455
+.sub "postcircumfix:sym<( )>" :subid("233_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx940_tgt
+ .local int rx940_pos
+ .local int rx940_off
+ .local int rx940_eos
+ .local int rx940_rep
+ .local pmc rx940_cur
+ (rx940_cur, rx940_pos, rx940_tgt) = self."!cursor_start"()
+ rx940_cur."!cursor_debug"("START ", "postcircumfix:sym<( )>")
+ .lex unicode:"$\x{a2}", rx940_cur
+ .local pmc match
+ .lex "$/", match
+ length rx940_eos, rx940_tgt
+ set rx940_off, 0
+ lt rx940_pos, 2, rx940_start
+ sub rx940_off, rx940_pos, 1
+ substr rx940_tgt, rx940_tgt, rx940_off
+ rx940_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan944_done
+ goto rxscan944_scan
+ rxscan944_loop:
+ ($P10) = rx940_cur."from"()
+ inc $P10
+ set rx940_pos, $P10
+ ge rx940_pos, rx940_eos, rxscan944_done
+ rxscan944_scan:
+ set_addr $I10, rxscan944_loop
+ rx940_cur."!mark_push"(0, rx940_pos, $I10)
+ rxscan944_done:
+.annotate "line", 460
# rx literal "("
- add $I11, rx932_pos, 1
- gt $I11, rx932_eos, rx932_fail
- sub $I11, rx932_pos, rx932_off
- substr $S10, rx932_tgt, $I11, 1
- ne $S10, "(", rx932_fail
- add rx932_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx932_cur."!cursor_pos"(rx932_pos)
- $P10 = rx932_cur."ws"()
- unless $P10, rx932_fail
- rx932_pos = $P10."pos"()
+ add $I11, rx940_pos, 1
+ gt $I11, rx940_eos, rx940_fail
+ sub $I11, rx940_pos, rx940_off
+ substr $S10, rx940_tgt, $I11, 1
+ ne $S10, "(", rx940_fail
+ add rx940_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx940_cur."!cursor_pos"(rx940_pos)
+ $P10 = rx940_cur."ws"()
+ unless $P10, rx940_fail
+ rx940_pos = $P10."pos"()
# rx subrule "arglist" subtype=capture negate=
- rx932_cur."!cursor_pos"(rx932_pos)
- $P10 = rx932_cur."arglist"()
- unless $P10, rx932_fail
- rx932_cur."!mark_push"(0, -1, 0, $P10)
+ rx940_cur."!cursor_pos"(rx940_pos)
+ $P10 = rx940_cur."arglist"()
+ unless $P10, rx940_fail
+ rx940_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx932_pos = $P10."pos"()
+ rx940_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx932_pos, 1
- gt $I11, rx932_eos, rx932_fail
- sub $I11, rx932_pos, rx932_off
- substr $S10, rx932_tgt, $I11, 1
- ne $S10, ")", rx932_fail
- add rx932_pos, 1
-.annotate "line", 456
+ add $I11, rx940_pos, 1
+ gt $I11, rx940_eos, rx940_fail
+ sub $I11, rx940_pos, rx940_off
+ substr $S10, rx940_tgt, $I11, 1
+ ne $S10, ")", rx940_fail
+ add rx940_pos, 1
+.annotate "line", 461
# rx subrule "O" subtype=capture negate=
- rx932_cur."!cursor_pos"(rx932_pos)
- $P10 = rx932_cur."O"("%methodop")
- unless $P10, rx932_fail
- rx932_cur."!mark_push"(0, -1, 0, $P10)
+ rx940_cur."!cursor_pos"(rx940_pos)
+ $P10 = rx940_cur."O"("%methodop")
+ unless $P10, rx940_fail
+ rx940_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx932_pos = $P10."pos"()
-.annotate "line", 454
+ rx940_pos = $P10."pos"()
+.annotate "line", 459
# rx pass
- rx932_cur."!cursor_pass"(rx932_pos, "postcircumfix:sym<( )>")
- rx932_cur."!cursor_debug"("PASS ", "postcircumfix:sym<( )>", " at pos=", rx932_pos)
- .return (rx932_cur)
- rx932_fail:
-.annotate "line", 417
- (rx932_rep, rx932_pos, $I10, $P10) = rx932_cur."!mark_fail"(0)
- lt rx932_pos, -1, rx932_done
- eq rx932_pos, -1, rx932_fail
- jump $I10
- rx932_done:
- rx932_cur."!cursor_fail"()
- rx932_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<( )>")
- .return (rx932_cur)
+ rx940_cur."!cursor_pass"(rx940_pos, "postcircumfix:sym<( )>")
+ rx940_cur."!cursor_debug"("PASS ", "postcircumfix:sym<( )>", " at pos=", rx940_pos)
+ .return (rx940_cur)
+ rx940_fail:
+.annotate "line", 422
+ (rx940_rep, rx940_pos, $I10, $P10) = rx940_cur."!mark_fail"(0)
+ lt rx940_pos, -1, rx940_done
+ eq rx940_pos, -1, rx940_fail
+ jump $I10
+ rx940_done:
+ rx940_cur."!cursor_fail"()
+ rx940_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<( )>")
+ .return (rx940_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>" :subid("232_1267204702.05125") :method
-.annotate "line", 417
- $P934 = self."!PREFIX__!subrule"("", "(")
- new $P935, "ResizablePMCArray"
- push $P935, $P934
- .return ($P935)
+.sub "!PREFIX__postcircumfix:sym<( )>" :subid("234_1272816833.94956") :method
+.annotate "line", 422
+ $P942 = self."!PREFIX__!subrule"("", "(")
+ new $P943, "ResizablePMCArray"
+ push $P943, $P942
+ .return ($P943)
.end
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>" :subid("233_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx938_tgt
- .local int rx938_pos
- .local int rx938_off
- .local int rx938_eos
- .local int rx938_rep
- .local pmc rx938_cur
- (rx938_cur, rx938_pos, rx938_tgt) = self."!cursor_start"()
- rx938_cur."!cursor_debug"("START ", "postfix:sym<.>")
- .lex unicode:"$\x{a2}", rx938_cur
- .local pmc match
- .lex "$/", match
- length rx938_eos, rx938_tgt
- set rx938_off, 0
- lt rx938_pos, 2, rx938_start
- sub rx938_off, rx938_pos, 1
- substr rx938_tgt, rx938_tgt, rx938_off
- rx938_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan942_done
- goto rxscan942_scan
- rxscan942_loop:
- ($P10) = rx938_cur."from"()
- inc $P10
- set rx938_pos, $P10
- ge rx938_pos, rx938_eos, rxscan942_done
- rxscan942_scan:
- set_addr $I10, rxscan942_loop
- rx938_cur."!mark_push"(0, rx938_pos, $I10)
- rxscan942_done:
-.annotate "line", 459
+.sub "postfix:sym<.>" :subid("235_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx946_tgt
+ .local int rx946_pos
+ .local int rx946_off
+ .local int rx946_eos
+ .local int rx946_rep
+ .local pmc rx946_cur
+ (rx946_cur, rx946_pos, rx946_tgt) = self."!cursor_start"()
+ rx946_cur."!cursor_debug"("START ", "postfix:sym<.>")
+ .lex unicode:"$\x{a2}", rx946_cur
+ .local pmc match
+ .lex "$/", match
+ length rx946_eos, rx946_tgt
+ set rx946_off, 0
+ lt rx946_pos, 2, rx946_start
+ sub rx946_off, rx946_pos, 1
+ substr rx946_tgt, rx946_tgt, rx946_off
+ rx946_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan950_done
+ goto rxscan950_scan
+ rxscan950_loop:
+ ($P10) = rx946_cur."from"()
+ inc $P10
+ set rx946_pos, $P10
+ ge rx946_pos, rx946_eos, rxscan950_done
+ rxscan950_scan:
+ set_addr $I10, rxscan950_loop
+ rx946_cur."!mark_push"(0, rx946_pos, $I10)
+ rxscan950_done:
+.annotate "line", 464
# rx subrule "dotty" subtype=capture negate=
- rx938_cur."!cursor_pos"(rx938_pos)
- $P10 = rx938_cur."dotty"()
- unless $P10, rx938_fail
- rx938_cur."!mark_push"(0, -1, 0, $P10)
+ rx946_cur."!cursor_pos"(rx946_pos)
+ $P10 = rx946_cur."dotty"()
+ unless $P10, rx946_fail
+ rx946_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("dotty")
- rx938_pos = $P10."pos"()
+ rx946_pos = $P10."pos"()
# rx subrule "O" subtype=capture negate=
- rx938_cur."!cursor_pos"(rx938_pos)
- $P10 = rx938_cur."O"("%methodop")
- unless $P10, rx938_fail
- rx938_cur."!mark_push"(0, -1, 0, $P10)
+ rx946_cur."!cursor_pos"(rx946_pos)
+ $P10 = rx946_cur."O"("%methodop")
+ unless $P10, rx946_fail
+ rx946_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx938_pos = $P10."pos"()
+ rx946_pos = $P10."pos"()
# rx pass
- rx938_cur."!cursor_pass"(rx938_pos, "postfix:sym<.>")
- rx938_cur."!cursor_debug"("PASS ", "postfix:sym<.>", " at pos=", rx938_pos)
- .return (rx938_cur)
- rx938_fail:
-.annotate "line", 417
- (rx938_rep, rx938_pos, $I10, $P10) = rx938_cur."!mark_fail"(0)
- lt rx938_pos, -1, rx938_done
- eq rx938_pos, -1, rx938_fail
- jump $I10
- rx938_done:
- rx938_cur."!cursor_fail"()
- rx938_cur."!cursor_debug"("FAIL ", "postfix:sym<.>")
- .return (rx938_cur)
+ rx946_cur."!cursor_pass"(rx946_pos, "postfix:sym<.>")
+ rx946_cur."!cursor_debug"("PASS ", "postfix:sym<.>", " at pos=", rx946_pos)
+ .return (rx946_cur)
+ rx946_fail:
+.annotate "line", 422
+ (rx946_rep, rx946_pos, $I10, $P10) = rx946_cur."!mark_fail"(0)
+ lt rx946_pos, -1, rx946_done
+ eq rx946_pos, -1, rx946_fail
+ jump $I10
+ rx946_done:
+ rx946_cur."!cursor_fail"()
+ rx946_cur."!cursor_debug"("FAIL ", "postfix:sym<.>")
+ .return (rx946_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>" :subid("234_1267204702.05125") :method
-.annotate "line", 417
- $P940 = self."!PREFIX__!subrule"("dotty", "")
- new $P941, "ResizablePMCArray"
- push $P941, $P940
- .return ($P941)
+.sub "!PREFIX__postfix:sym<.>" :subid("236_1272816833.94956") :method
+.annotate "line", 422
+ $P948 = self."!PREFIX__!subrule"("dotty", "")
+ new $P949, "ResizablePMCArray"
+ push $P949, $P948
+ .return ($P949)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>" :subid("235_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx944_tgt
- .local int rx944_pos
- .local int rx944_off
- .local int rx944_eos
- .local int rx944_rep
- .local pmc rx944_cur
- (rx944_cur, rx944_pos, rx944_tgt) = self."!cursor_start"()
- rx944_cur."!cursor_debug"("START ", "prefix:sym<++>")
- .lex unicode:"$\x{a2}", rx944_cur
- .local pmc match
- .lex "$/", match
- length rx944_eos, rx944_tgt
- set rx944_off, 0
- lt rx944_pos, 2, rx944_start
- sub rx944_off, rx944_pos, 1
- substr rx944_tgt, rx944_tgt, rx944_off
- rx944_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan948_done
- goto rxscan948_scan
- rxscan948_loop:
- ($P10) = rx944_cur."from"()
- inc $P10
- set rx944_pos, $P10
- ge rx944_pos, rx944_eos, rxscan948_done
- rxscan948_scan:
- set_addr $I10, rxscan948_loop
- rx944_cur."!mark_push"(0, rx944_pos, $I10)
- rxscan948_done:
-.annotate "line", 461
+.sub "prefix:sym<++>" :subid("237_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx952_tgt
+ .local int rx952_pos
+ .local int rx952_off
+ .local int rx952_eos
+ .local int rx952_rep
+ .local pmc rx952_cur
+ (rx952_cur, rx952_pos, rx952_tgt) = self."!cursor_start"()
+ rx952_cur."!cursor_debug"("START ", "prefix:sym<++>")
+ .lex unicode:"$\x{a2}", rx952_cur
+ .local pmc match
+ .lex "$/", match
+ length rx952_eos, rx952_tgt
+ set rx952_off, 0
+ lt rx952_pos, 2, rx952_start
+ sub rx952_off, rx952_pos, 1
+ substr rx952_tgt, rx952_tgt, rx952_off
+ rx952_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan956_done
+ goto rxscan956_scan
+ rxscan956_loop:
+ ($P10) = rx952_cur."from"()
+ inc $P10
+ set rx952_pos, $P10
+ ge rx952_pos, rx952_eos, rxscan956_done
+ rxscan956_scan:
+ set_addr $I10, rxscan956_loop
+ rx952_cur."!mark_push"(0, rx952_pos, $I10)
+ rxscan956_done:
+.annotate "line", 466
# rx subcapture "sym"
- set_addr $I10, rxcap_949_fail
- rx944_cur."!mark_push"(0, rx944_pos, $I10)
+ set_addr $I10, rxcap_957_fail
+ rx952_cur."!mark_push"(0, rx952_pos, $I10)
# rx literal "++"
- add $I11, rx944_pos, 2
- gt $I11, rx944_eos, rx944_fail
- sub $I11, rx944_pos, rx944_off
- substr $S10, rx944_tgt, $I11, 2
- ne $S10, "++", rx944_fail
- add rx944_pos, 2
- set_addr $I10, rxcap_949_fail
- ($I12, $I11) = rx944_cur."!mark_peek"($I10)
- rx944_cur."!cursor_pos"($I11)
- ($P10) = rx944_cur."!cursor_start"()
- $P10."!cursor_pass"(rx944_pos, "")
- rx944_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx952_pos, 2
+ gt $I11, rx952_eos, rx952_fail
+ sub $I11, rx952_pos, rx952_off
+ substr $S10, rx952_tgt, $I11, 2
+ ne $S10, "++", rx952_fail
+ add rx952_pos, 2
+ set_addr $I10, rxcap_957_fail
+ ($I12, $I11) = rx952_cur."!mark_peek"($I10)
+ rx952_cur."!cursor_pos"($I11)
+ ($P10) = rx952_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx952_pos, "")
+ rx952_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_949_done
- rxcap_949_fail:
- goto rx944_fail
- rxcap_949_done:
+ goto rxcap_957_done
+ rxcap_957_fail:
+ goto rx952_fail
+ rxcap_957_done:
# rx subrule "O" subtype=capture negate=
- rx944_cur."!cursor_pos"(rx944_pos)
- $P10 = rx944_cur."O"("%autoincrement, :pirop<inc>")
- unless $P10, rx944_fail
- rx944_cur."!mark_push"(0, -1, 0, $P10)
+ rx952_cur."!cursor_pos"(rx952_pos)
+ $P10 = rx952_cur."O"("%autoincrement, :pirop<inc>")
+ unless $P10, rx952_fail
+ rx952_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx944_pos = $P10."pos"()
+ rx952_pos = $P10."pos"()
# rx pass
- rx944_cur."!cursor_pass"(rx944_pos, "prefix:sym<++>")
- rx944_cur."!cursor_debug"("PASS ", "prefix:sym<++>", " at pos=", rx944_pos)
- .return (rx944_cur)
- rx944_fail:
-.annotate "line", 417
- (rx944_rep, rx944_pos, $I10, $P10) = rx944_cur."!mark_fail"(0)
- lt rx944_pos, -1, rx944_done
- eq rx944_pos, -1, rx944_fail
- jump $I10
- rx944_done:
- rx944_cur."!cursor_fail"()
- rx944_cur."!cursor_debug"("FAIL ", "prefix:sym<++>")
- .return (rx944_cur)
+ rx952_cur."!cursor_pass"(rx952_pos, "prefix:sym<++>")
+ rx952_cur."!cursor_debug"("PASS ", "prefix:sym<++>", " at pos=", rx952_pos)
+ .return (rx952_cur)
+ rx952_fail:
+.annotate "line", 422
+ (rx952_rep, rx952_pos, $I10, $P10) = rx952_cur."!mark_fail"(0)
+ lt rx952_pos, -1, rx952_done
+ eq rx952_pos, -1, rx952_fail
+ jump $I10
+ rx952_done:
+ rx952_cur."!cursor_fail"()
+ rx952_cur."!cursor_debug"("FAIL ", "prefix:sym<++>")
+ .return (rx952_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>" :subid("236_1267204702.05125") :method
-.annotate "line", 417
- $P946 = self."!PREFIX__!subrule"("O", "++")
- new $P947, "ResizablePMCArray"
- push $P947, $P946
- .return ($P947)
+.sub "!PREFIX__prefix:sym<++>" :subid("238_1272816833.94956") :method
+.annotate "line", 422
+ $P954 = self."!PREFIX__!subrule"("O", "++")
+ new $P955, "ResizablePMCArray"
+ push $P955, $P954
+ .return ($P955)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->" :subid("237_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx951_tgt
- .local int rx951_pos
- .local int rx951_off
- .local int rx951_eos
- .local int rx951_rep
- .local pmc rx951_cur
- (rx951_cur, rx951_pos, rx951_tgt) = self."!cursor_start"()
- rx951_cur."!cursor_debug"("START ", "prefix:sym<-->")
- .lex unicode:"$\x{a2}", rx951_cur
- .local pmc match
- .lex "$/", match
- length rx951_eos, rx951_tgt
- set rx951_off, 0
- lt rx951_pos, 2, rx951_start
- sub rx951_off, rx951_pos, 1
- substr rx951_tgt, rx951_tgt, rx951_off
- rx951_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan955_done
- goto rxscan955_scan
- rxscan955_loop:
- ($P10) = rx951_cur."from"()
- inc $P10
- set rx951_pos, $P10
- ge rx951_pos, rx951_eos, rxscan955_done
- rxscan955_scan:
- set_addr $I10, rxscan955_loop
- rx951_cur."!mark_push"(0, rx951_pos, $I10)
- rxscan955_done:
-.annotate "line", 462
+.sub "prefix:sym<-->" :subid("239_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx959_tgt
+ .local int rx959_pos
+ .local int rx959_off
+ .local int rx959_eos
+ .local int rx959_rep
+ .local pmc rx959_cur
+ (rx959_cur, rx959_pos, rx959_tgt) = self."!cursor_start"()
+ rx959_cur."!cursor_debug"("START ", "prefix:sym<-->")
+ .lex unicode:"$\x{a2}", rx959_cur
+ .local pmc match
+ .lex "$/", match
+ length rx959_eos, rx959_tgt
+ set rx959_off, 0
+ lt rx959_pos, 2, rx959_start
+ sub rx959_off, rx959_pos, 1
+ substr rx959_tgt, rx959_tgt, rx959_off
+ rx959_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan963_done
+ goto rxscan963_scan
+ rxscan963_loop:
+ ($P10) = rx959_cur."from"()
+ inc $P10
+ set rx959_pos, $P10
+ ge rx959_pos, rx959_eos, rxscan963_done
+ rxscan963_scan:
+ set_addr $I10, rxscan963_loop
+ rx959_cur."!mark_push"(0, rx959_pos, $I10)
+ rxscan963_done:
+.annotate "line", 467
# rx subcapture "sym"
- set_addr $I10, rxcap_956_fail
- rx951_cur."!mark_push"(0, rx951_pos, $I10)
+ set_addr $I10, rxcap_964_fail
+ rx959_cur."!mark_push"(0, rx959_pos, $I10)
# rx literal "--"
- add $I11, rx951_pos, 2
- gt $I11, rx951_eos, rx951_fail
- sub $I11, rx951_pos, rx951_off
- substr $S10, rx951_tgt, $I11, 2
- ne $S10, "--", rx951_fail
- add rx951_pos, 2
- set_addr $I10, rxcap_956_fail
- ($I12, $I11) = rx951_cur."!mark_peek"($I10)
- rx951_cur."!cursor_pos"($I11)
- ($P10) = rx951_cur."!cursor_start"()
- $P10."!cursor_pass"(rx951_pos, "")
- rx951_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx959_pos, 2
+ gt $I11, rx959_eos, rx959_fail
+ sub $I11, rx959_pos, rx959_off
+ substr $S10, rx959_tgt, $I11, 2
+ ne $S10, "--", rx959_fail
+ add rx959_pos, 2
+ set_addr $I10, rxcap_964_fail
+ ($I12, $I11) = rx959_cur."!mark_peek"($I10)
+ rx959_cur."!cursor_pos"($I11)
+ ($P10) = rx959_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx959_pos, "")
+ rx959_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_956_done
- rxcap_956_fail:
- goto rx951_fail
- rxcap_956_done:
+ goto rxcap_964_done
+ rxcap_964_fail:
+ goto rx959_fail
+ rxcap_964_done:
# rx subrule "O" subtype=capture negate=
- rx951_cur."!cursor_pos"(rx951_pos)
- $P10 = rx951_cur."O"("%autoincrement, :pirop<dec>")
- unless $P10, rx951_fail
- rx951_cur."!mark_push"(0, -1, 0, $P10)
+ rx959_cur."!cursor_pos"(rx959_pos)
+ $P10 = rx959_cur."O"("%autoincrement, :pirop<dec>")
+ unless $P10, rx959_fail
+ rx959_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx951_pos = $P10."pos"()
+ rx959_pos = $P10."pos"()
# rx pass
- rx951_cur."!cursor_pass"(rx951_pos, "prefix:sym<-->")
- rx951_cur."!cursor_debug"("PASS ", "prefix:sym<-->", " at pos=", rx951_pos)
- .return (rx951_cur)
- rx951_fail:
-.annotate "line", 417
- (rx951_rep, rx951_pos, $I10, $P10) = rx951_cur."!mark_fail"(0)
- lt rx951_pos, -1, rx951_done
- eq rx951_pos, -1, rx951_fail
- jump $I10
- rx951_done:
- rx951_cur."!cursor_fail"()
- rx951_cur."!cursor_debug"("FAIL ", "prefix:sym<-->")
- .return (rx951_cur)
+ rx959_cur."!cursor_pass"(rx959_pos, "prefix:sym<-->")
+ rx959_cur."!cursor_debug"("PASS ", "prefix:sym<-->", " at pos=", rx959_pos)
+ .return (rx959_cur)
+ rx959_fail:
+.annotate "line", 422
+ (rx959_rep, rx959_pos, $I10, $P10) = rx959_cur."!mark_fail"(0)
+ lt rx959_pos, -1, rx959_done
+ eq rx959_pos, -1, rx959_fail
+ jump $I10
+ rx959_done:
+ rx959_cur."!cursor_fail"()
+ rx959_cur."!cursor_debug"("FAIL ", "prefix:sym<-->")
+ .return (rx959_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->" :subid("238_1267204702.05125") :method
-.annotate "line", 417
- $P953 = self."!PREFIX__!subrule"("O", "--")
- new $P954, "ResizablePMCArray"
- push $P954, $P953
- .return ($P954)
+.sub "!PREFIX__prefix:sym<-->" :subid("240_1272816833.94956") :method
+.annotate "line", 422
+ $P961 = self."!PREFIX__!subrule"("O", "--")
+ new $P962, "ResizablePMCArray"
+ push $P962, $P961
+ .return ($P962)
.end
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>" :subid("239_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx958_tgt
- .local int rx958_pos
- .local int rx958_off
- .local int rx958_eos
- .local int rx958_rep
- .local pmc rx958_cur
- (rx958_cur, rx958_pos, rx958_tgt) = self."!cursor_start"()
- rx958_cur."!cursor_debug"("START ", "postfix:sym<++>")
- .lex unicode:"$\x{a2}", rx958_cur
- .local pmc match
- .lex "$/", match
- length rx958_eos, rx958_tgt
- set rx958_off, 0
- lt rx958_pos, 2, rx958_start
- sub rx958_off, rx958_pos, 1
- substr rx958_tgt, rx958_tgt, rx958_off
- rx958_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan962_done
- goto rxscan962_scan
- rxscan962_loop:
- ($P10) = rx958_cur."from"()
- inc $P10
- set rx958_pos, $P10
- ge rx958_pos, rx958_eos, rxscan962_done
- rxscan962_scan:
- set_addr $I10, rxscan962_loop
- rx958_cur."!mark_push"(0, rx958_pos, $I10)
- rxscan962_done:
-.annotate "line", 465
+.sub "postfix:sym<++>" :subid("241_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx966_tgt
+ .local int rx966_pos
+ .local int rx966_off
+ .local int rx966_eos
+ .local int rx966_rep
+ .local pmc rx966_cur
+ (rx966_cur, rx966_pos, rx966_tgt) = self."!cursor_start"()
+ rx966_cur."!cursor_debug"("START ", "postfix:sym<++>")
+ .lex unicode:"$\x{a2}", rx966_cur
+ .local pmc match
+ .lex "$/", match
+ length rx966_eos, rx966_tgt
+ set rx966_off, 0
+ lt rx966_pos, 2, rx966_start
+ sub rx966_off, rx966_pos, 1
+ substr rx966_tgt, rx966_tgt, rx966_off
+ rx966_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan970_done
+ goto rxscan970_scan
+ rxscan970_loop:
+ ($P10) = rx966_cur."from"()
+ inc $P10
+ set rx966_pos, $P10
+ ge rx966_pos, rx966_eos, rxscan970_done
+ rxscan970_scan:
+ set_addr $I10, rxscan970_loop
+ rx966_cur."!mark_push"(0, rx966_pos, $I10)
+ rxscan970_done:
+.annotate "line", 470
# rx subcapture "sym"
- set_addr $I10, rxcap_963_fail
- rx958_cur."!mark_push"(0, rx958_pos, $I10)
+ set_addr $I10, rxcap_971_fail
+ rx966_cur."!mark_push"(0, rx966_pos, $I10)
# rx literal "++"
- add $I11, rx958_pos, 2
- gt $I11, rx958_eos, rx958_fail
- sub $I11, rx958_pos, rx958_off
- substr $S10, rx958_tgt, $I11, 2
- ne $S10, "++", rx958_fail
- add rx958_pos, 2
- set_addr $I10, rxcap_963_fail
- ($I12, $I11) = rx958_cur."!mark_peek"($I10)
- rx958_cur."!cursor_pos"($I11)
- ($P10) = rx958_cur."!cursor_start"()
- $P10."!cursor_pass"(rx958_pos, "")
- rx958_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx966_pos, 2
+ gt $I11, rx966_eos, rx966_fail
+ sub $I11, rx966_pos, rx966_off
+ substr $S10, rx966_tgt, $I11, 2
+ ne $S10, "++", rx966_fail
+ add rx966_pos, 2
+ set_addr $I10, rxcap_971_fail
+ ($I12, $I11) = rx966_cur."!mark_peek"($I10)
+ rx966_cur."!cursor_pos"($I11)
+ ($P10) = rx966_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx966_pos, "")
+ rx966_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_963_done
- rxcap_963_fail:
- goto rx958_fail
- rxcap_963_done:
+ goto rxcap_971_done
+ rxcap_971_fail:
+ goto rx966_fail
+ rxcap_971_done:
# rx subrule "O" subtype=capture negate=
- rx958_cur."!cursor_pos"(rx958_pos)
- $P10 = rx958_cur."O"("%autoincrement")
- unless $P10, rx958_fail
- rx958_cur."!mark_push"(0, -1, 0, $P10)
+ rx966_cur."!cursor_pos"(rx966_pos)
+ $P10 = rx966_cur."O"("%autoincrement")
+ unless $P10, rx966_fail
+ rx966_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx958_pos = $P10."pos"()
+ rx966_pos = $P10."pos"()
# rx pass
- rx958_cur."!cursor_pass"(rx958_pos, "postfix:sym<++>")
- rx958_cur."!cursor_debug"("PASS ", "postfix:sym<++>", " at pos=", rx958_pos)
- .return (rx958_cur)
- rx958_fail:
-.annotate "line", 417
- (rx958_rep, rx958_pos, $I10, $P10) = rx958_cur."!mark_fail"(0)
- lt rx958_pos, -1, rx958_done
- eq rx958_pos, -1, rx958_fail
- jump $I10
- rx958_done:
- rx958_cur."!cursor_fail"()
- rx958_cur."!cursor_debug"("FAIL ", "postfix:sym<++>")
- .return (rx958_cur)
+ rx966_cur."!cursor_pass"(rx966_pos, "postfix:sym<++>")
+ rx966_cur."!cursor_debug"("PASS ", "postfix:sym<++>", " at pos=", rx966_pos)
+ .return (rx966_cur)
+ rx966_fail:
+.annotate "line", 422
+ (rx966_rep, rx966_pos, $I10, $P10) = rx966_cur."!mark_fail"(0)
+ lt rx966_pos, -1, rx966_done
+ eq rx966_pos, -1, rx966_fail
+ jump $I10
+ rx966_done:
+ rx966_cur."!cursor_fail"()
+ rx966_cur."!cursor_debug"("FAIL ", "postfix:sym<++>")
+ .return (rx966_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>" :subid("240_1267204702.05125") :method
-.annotate "line", 417
- $P960 = self."!PREFIX__!subrule"("O", "++")
- new $P961, "ResizablePMCArray"
- push $P961, $P960
- .return ($P961)
+.sub "!PREFIX__postfix:sym<++>" :subid("242_1272816833.94956") :method
+.annotate "line", 422
+ $P968 = self."!PREFIX__!subrule"("O", "++")
+ new $P969, "ResizablePMCArray"
+ push $P969, $P968
+ .return ($P969)
.end
.namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->" :subid("241_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx965_tgt
- .local int rx965_pos
- .local int rx965_off
- .local int rx965_eos
- .local int rx965_rep
- .local pmc rx965_cur
- (rx965_cur, rx965_pos, rx965_tgt) = self."!cursor_start"()
- rx965_cur."!cursor_debug"("START ", "postfix:sym<-->")
- .lex unicode:"$\x{a2}", rx965_cur
- .local pmc match
- .lex "$/", match
- length rx965_eos, rx965_tgt
- set rx965_off, 0
- lt rx965_pos, 2, rx965_start
- sub rx965_off, rx965_pos, 1
- substr rx965_tgt, rx965_tgt, rx965_off
- rx965_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan969_done
- goto rxscan969_scan
- rxscan969_loop:
- ($P10) = rx965_cur."from"()
- inc $P10
- set rx965_pos, $P10
- ge rx965_pos, rx965_eos, rxscan969_done
- rxscan969_scan:
- set_addr $I10, rxscan969_loop
- rx965_cur."!mark_push"(0, rx965_pos, $I10)
- rxscan969_done:
-.annotate "line", 466
+.sub "postfix:sym<-->" :subid("243_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx973_tgt
+ .local int rx973_pos
+ .local int rx973_off
+ .local int rx973_eos
+ .local int rx973_rep
+ .local pmc rx973_cur
+ (rx973_cur, rx973_pos, rx973_tgt) = self."!cursor_start"()
+ rx973_cur."!cursor_debug"("START ", "postfix:sym<-->")
+ .lex unicode:"$\x{a2}", rx973_cur
+ .local pmc match
+ .lex "$/", match
+ length rx973_eos, rx973_tgt
+ set rx973_off, 0
+ lt rx973_pos, 2, rx973_start
+ sub rx973_off, rx973_pos, 1
+ substr rx973_tgt, rx973_tgt, rx973_off
+ rx973_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan977_done
+ goto rxscan977_scan
+ rxscan977_loop:
+ ($P10) = rx973_cur."from"()
+ inc $P10
+ set rx973_pos, $P10
+ ge rx973_pos, rx973_eos, rxscan977_done
+ rxscan977_scan:
+ set_addr $I10, rxscan977_loop
+ rx973_cur."!mark_push"(0, rx973_pos, $I10)
+ rxscan977_done:
+.annotate "line", 471
# rx subcapture "sym"
- set_addr $I10, rxcap_970_fail
- rx965_cur."!mark_push"(0, rx965_pos, $I10)
+ set_addr $I10, rxcap_978_fail
+ rx973_cur."!mark_push"(0, rx973_pos, $I10)
# rx literal "--"
- add $I11, rx965_pos, 2
- gt $I11, rx965_eos, rx965_fail
- sub $I11, rx965_pos, rx965_off
- substr $S10, rx965_tgt, $I11, 2
- ne $S10, "--", rx965_fail
- add rx965_pos, 2
- set_addr $I10, rxcap_970_fail
- ($I12, $I11) = rx965_cur."!mark_peek"($I10)
- rx965_cur."!cursor_pos"($I11)
- ($P10) = rx965_cur."!cursor_start"()
- $P10."!cursor_pass"(rx965_pos, "")
- rx965_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx973_pos, 2
+ gt $I11, rx973_eos, rx973_fail
+ sub $I11, rx973_pos, rx973_off
+ substr $S10, rx973_tgt, $I11, 2
+ ne $S10, "--", rx973_fail
+ add rx973_pos, 2
+ set_addr $I10, rxcap_978_fail
+ ($I12, $I11) = rx973_cur."!mark_peek"($I10)
+ rx973_cur."!cursor_pos"($I11)
+ ($P10) = rx973_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx973_pos, "")
+ rx973_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_970_done
- rxcap_970_fail:
- goto rx965_fail
- rxcap_970_done:
+ goto rxcap_978_done
+ rxcap_978_fail:
+ goto rx973_fail
+ rxcap_978_done:
# rx subrule "O" subtype=capture negate=
- rx965_cur."!cursor_pos"(rx965_pos)
- $P10 = rx965_cur."O"("%autoincrement")
- unless $P10, rx965_fail
- rx965_cur."!mark_push"(0, -1, 0, $P10)
+ rx973_cur."!cursor_pos"(rx973_pos)
+ $P10 = rx973_cur."O"("%autoincrement")
+ unless $P10, rx973_fail
+ rx973_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx965_pos = $P10."pos"()
+ rx973_pos = $P10."pos"()
# rx pass
- rx965_cur."!cursor_pass"(rx965_pos, "postfix:sym<-->")
- rx965_cur."!cursor_debug"("PASS ", "postfix:sym<-->", " at pos=", rx965_pos)
- .return (rx965_cur)
- rx965_fail:
-.annotate "line", 417
- (rx965_rep, rx965_pos, $I10, $P10) = rx965_cur."!mark_fail"(0)
- lt rx965_pos, -1, rx965_done
- eq rx965_pos, -1, rx965_fail
- jump $I10
- rx965_done:
- rx965_cur."!cursor_fail"()
- rx965_cur."!cursor_debug"("FAIL ", "postfix:sym<-->")
- .return (rx965_cur)
+ rx973_cur."!cursor_pass"(rx973_pos, "postfix:sym<-->")
+ rx973_cur."!cursor_debug"("PASS ", "postfix:sym<-->", " at pos=", rx973_pos)
+ .return (rx973_cur)
+ rx973_fail:
+.annotate "line", 422
+ (rx973_rep, rx973_pos, $I10, $P10) = rx973_cur."!mark_fail"(0)
+ lt rx973_pos, -1, rx973_done
+ eq rx973_pos, -1, rx973_fail
+ jump $I10
+ rx973_done:
+ rx973_cur."!cursor_fail"()
+ rx973_cur."!cursor_debug"("FAIL ", "postfix:sym<-->")
+ .return (rx973_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->" :subid("242_1267204702.05125") :method
-.annotate "line", 417
- $P967 = self."!PREFIX__!subrule"("O", "--")
- new $P968, "ResizablePMCArray"
- push $P968, $P967
- .return ($P968)
+.sub "!PREFIX__postfix:sym<-->" :subid("244_1272816833.94956") :method
+.annotate "line", 422
+ $P975 = self."!PREFIX__!subrule"("O", "--")
+ new $P976, "ResizablePMCArray"
+ push $P976, $P975
+ .return ($P976)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>" :subid("243_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx972_tgt
- .local int rx972_pos
- .local int rx972_off
- .local int rx972_eos
- .local int rx972_rep
- .local pmc rx972_cur
- (rx972_cur, rx972_pos, rx972_tgt) = self."!cursor_start"()
- rx972_cur."!cursor_debug"("START ", "infix:sym<**>")
- .lex unicode:"$\x{a2}", rx972_cur
- .local pmc match
- .lex "$/", match
- length rx972_eos, rx972_tgt
- set rx972_off, 0
- lt rx972_pos, 2, rx972_start
- sub rx972_off, rx972_pos, 1
- substr rx972_tgt, rx972_tgt, rx972_off
- rx972_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan976_done
- goto rxscan976_scan
- rxscan976_loop:
- ($P10) = rx972_cur."from"()
- inc $P10
- set rx972_pos, $P10
- ge rx972_pos, rx972_eos, rxscan976_done
- rxscan976_scan:
- set_addr $I10, rxscan976_loop
- rx972_cur."!mark_push"(0, rx972_pos, $I10)
- rxscan976_done:
-.annotate "line", 468
+.sub "infix:sym<**>" :subid("245_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx980_tgt
+ .local int rx980_pos
+ .local int rx980_off
+ .local int rx980_eos
+ .local int rx980_rep
+ .local pmc rx980_cur
+ (rx980_cur, rx980_pos, rx980_tgt) = self."!cursor_start"()
+ rx980_cur."!cursor_debug"("START ", "infix:sym<**>")
+ .lex unicode:"$\x{a2}", rx980_cur
+ .local pmc match
+ .lex "$/", match
+ length rx980_eos, rx980_tgt
+ set rx980_off, 0
+ lt rx980_pos, 2, rx980_start
+ sub rx980_off, rx980_pos, 1
+ substr rx980_tgt, rx980_tgt, rx980_off
+ rx980_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan984_done
+ goto rxscan984_scan
+ rxscan984_loop:
+ ($P10) = rx980_cur."from"()
+ inc $P10
+ set rx980_pos, $P10
+ ge rx980_pos, rx980_eos, rxscan984_done
+ rxscan984_scan:
+ set_addr $I10, rxscan984_loop
+ rx980_cur."!mark_push"(0, rx980_pos, $I10)
+ rxscan984_done:
+.annotate "line", 473
# rx subcapture "sym"
- set_addr $I10, rxcap_977_fail
- rx972_cur."!mark_push"(0, rx972_pos, $I10)
+ set_addr $I10, rxcap_985_fail
+ rx980_cur."!mark_push"(0, rx980_pos, $I10)
# rx literal "**"
- add $I11, rx972_pos, 2
- gt $I11, rx972_eos, rx972_fail
- sub $I11, rx972_pos, rx972_off
- substr $S10, rx972_tgt, $I11, 2
- ne $S10, "**", rx972_fail
- add rx972_pos, 2
- set_addr $I10, rxcap_977_fail
- ($I12, $I11) = rx972_cur."!mark_peek"($I10)
- rx972_cur."!cursor_pos"($I11)
- ($P10) = rx972_cur."!cursor_start"()
- $P10."!cursor_pass"(rx972_pos, "")
- rx972_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx980_pos, 2
+ gt $I11, rx980_eos, rx980_fail
+ sub $I11, rx980_pos, rx980_off
+ substr $S10, rx980_tgt, $I11, 2
+ ne $S10, "**", rx980_fail
+ add rx980_pos, 2
+ set_addr $I10, rxcap_985_fail
+ ($I12, $I11) = rx980_cur."!mark_peek"($I10)
+ rx980_cur."!cursor_pos"($I11)
+ ($P10) = rx980_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx980_pos, "")
+ rx980_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_977_done
- rxcap_977_fail:
- goto rx972_fail
- rxcap_977_done:
+ goto rxcap_985_done
+ rxcap_985_fail:
+ goto rx980_fail
+ rxcap_985_done:
# rx subrule "O" subtype=capture negate=
- rx972_cur."!cursor_pos"(rx972_pos)
- $P10 = rx972_cur."O"("%exponentiation, :pirop<pow>")
- unless $P10, rx972_fail
- rx972_cur."!mark_push"(0, -1, 0, $P10)
+ rx980_cur."!cursor_pos"(rx980_pos)
+ $P10 = rx980_cur."O"("%exponentiation, :pirop<pow>")
+ unless $P10, rx980_fail
+ rx980_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx972_pos = $P10."pos"()
+ rx980_pos = $P10."pos"()
# rx pass
- rx972_cur."!cursor_pass"(rx972_pos, "infix:sym<**>")
- rx972_cur."!cursor_debug"("PASS ", "infix:sym<**>", " at pos=", rx972_pos)
- .return (rx972_cur)
- rx972_fail:
-.annotate "line", 417
- (rx972_rep, rx972_pos, $I10, $P10) = rx972_cur."!mark_fail"(0)
- lt rx972_pos, -1, rx972_done
- eq rx972_pos, -1, rx972_fail
- jump $I10
- rx972_done:
- rx972_cur."!cursor_fail"()
- rx972_cur."!cursor_debug"("FAIL ", "infix:sym<**>")
- .return (rx972_cur)
+ rx980_cur."!cursor_pass"(rx980_pos, "infix:sym<**>")
+ rx980_cur."!cursor_debug"("PASS ", "infix:sym<**>", " at pos=", rx980_pos)
+ .return (rx980_cur)
+ rx980_fail:
+.annotate "line", 422
+ (rx980_rep, rx980_pos, $I10, $P10) = rx980_cur."!mark_fail"(0)
+ lt rx980_pos, -1, rx980_done
+ eq rx980_pos, -1, rx980_fail
+ jump $I10
+ rx980_done:
+ rx980_cur."!cursor_fail"()
+ rx980_cur."!cursor_debug"("FAIL ", "infix:sym<**>")
+ .return (rx980_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>" :subid("244_1267204702.05125") :method
-.annotate "line", 417
- $P974 = self."!PREFIX__!subrule"("O", "**")
- new $P975, "ResizablePMCArray"
- push $P975, $P974
- .return ($P975)
+.sub "!PREFIX__infix:sym<**>" :subid("246_1272816833.94956") :method
+.annotate "line", 422
+ $P982 = self."!PREFIX__!subrule"("O", "**")
+ new $P983, "ResizablePMCArray"
+ push $P983, $P982
+ .return ($P983)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>" :subid("245_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx979_tgt
- .local int rx979_pos
- .local int rx979_off
- .local int rx979_eos
- .local int rx979_rep
- .local pmc rx979_cur
- (rx979_cur, rx979_pos, rx979_tgt) = self."!cursor_start"()
- rx979_cur."!cursor_debug"("START ", "prefix:sym<+>")
- .lex unicode:"$\x{a2}", rx979_cur
- .local pmc match
- .lex "$/", match
- length rx979_eos, rx979_tgt
- set rx979_off, 0
- lt rx979_pos, 2, rx979_start
- sub rx979_off, rx979_pos, 1
- substr rx979_tgt, rx979_tgt, rx979_off
- rx979_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan983_done
- goto rxscan983_scan
- rxscan983_loop:
- ($P10) = rx979_cur."from"()
- inc $P10
- set rx979_pos, $P10
- ge rx979_pos, rx979_eos, rxscan983_done
- rxscan983_scan:
- set_addr $I10, rxscan983_loop
- rx979_cur."!mark_push"(0, rx979_pos, $I10)
- rxscan983_done:
-.annotate "line", 470
+.sub "prefix:sym<+>" :subid("247_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx987_tgt
+ .local int rx987_pos
+ .local int rx987_off
+ .local int rx987_eos
+ .local int rx987_rep
+ .local pmc rx987_cur
+ (rx987_cur, rx987_pos, rx987_tgt) = self."!cursor_start"()
+ rx987_cur."!cursor_debug"("START ", "prefix:sym<+>")
+ .lex unicode:"$\x{a2}", rx987_cur
+ .local pmc match
+ .lex "$/", match
+ length rx987_eos, rx987_tgt
+ set rx987_off, 0
+ lt rx987_pos, 2, rx987_start
+ sub rx987_off, rx987_pos, 1
+ substr rx987_tgt, rx987_tgt, rx987_off
+ rx987_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan991_done
+ goto rxscan991_scan
+ rxscan991_loop:
+ ($P10) = rx987_cur."from"()
+ inc $P10
+ set rx987_pos, $P10
+ ge rx987_pos, rx987_eos, rxscan991_done
+ rxscan991_scan:
+ set_addr $I10, rxscan991_loop
+ rx987_cur."!mark_push"(0, rx987_pos, $I10)
+ rxscan991_done:
+.annotate "line", 475
# rx subcapture "sym"
- set_addr $I10, rxcap_984_fail
- rx979_cur."!mark_push"(0, rx979_pos, $I10)
+ set_addr $I10, rxcap_992_fail
+ rx987_cur."!mark_push"(0, rx987_pos, $I10)
# rx literal "+"
- add $I11, rx979_pos, 1
- gt $I11, rx979_eos, rx979_fail
- sub $I11, rx979_pos, rx979_off
- substr $S10, rx979_tgt, $I11, 1
- ne $S10, "+", rx979_fail
- add rx979_pos, 1
- set_addr $I10, rxcap_984_fail
- ($I12, $I11) = rx979_cur."!mark_peek"($I10)
- rx979_cur."!cursor_pos"($I11)
- ($P10) = rx979_cur."!cursor_start"()
- $P10."!cursor_pass"(rx979_pos, "")
- rx979_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx987_pos, 1
+ gt $I11, rx987_eos, rx987_fail
+ sub $I11, rx987_pos, rx987_off
+ substr $S10, rx987_tgt, $I11, 1
+ ne $S10, "+", rx987_fail
+ add rx987_pos, 1
+ set_addr $I10, rxcap_992_fail
+ ($I12, $I11) = rx987_cur."!mark_peek"($I10)
+ rx987_cur."!cursor_pos"($I11)
+ ($P10) = rx987_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx987_pos, "")
+ rx987_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_984_done
- rxcap_984_fail:
- goto rx979_fail
- rxcap_984_done:
+ goto rxcap_992_done
+ rxcap_992_fail:
+ goto rx987_fail
+ rxcap_992_done:
# rx subrule "O" subtype=capture negate=
- rx979_cur."!cursor_pos"(rx979_pos)
- $P10 = rx979_cur."O"("%symbolic_unary, :pirop<set N*>")
- unless $P10, rx979_fail
- rx979_cur."!mark_push"(0, -1, 0, $P10)
+ rx987_cur."!cursor_pos"(rx987_pos)
+ $P10 = rx987_cur."O"("%symbolic_unary, :pirop<set N*>")
+ unless $P10, rx987_fail
+ rx987_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx979_pos = $P10."pos"()
+ rx987_pos = $P10."pos"()
# rx pass
- rx979_cur."!cursor_pass"(rx979_pos, "prefix:sym<+>")
- rx979_cur."!cursor_debug"("PASS ", "prefix:sym<+>", " at pos=", rx979_pos)
- .return (rx979_cur)
- rx979_fail:
-.annotate "line", 417
- (rx979_rep, rx979_pos, $I10, $P10) = rx979_cur."!mark_fail"(0)
- lt rx979_pos, -1, rx979_done
- eq rx979_pos, -1, rx979_fail
- jump $I10
- rx979_done:
- rx979_cur."!cursor_fail"()
- rx979_cur."!cursor_debug"("FAIL ", "prefix:sym<+>")
- .return (rx979_cur)
+ rx987_cur."!cursor_pass"(rx987_pos, "prefix:sym<+>")
+ rx987_cur."!cursor_debug"("PASS ", "prefix:sym<+>", " at pos=", rx987_pos)
+ .return (rx987_cur)
+ rx987_fail:
+.annotate "line", 422
+ (rx987_rep, rx987_pos, $I10, $P10) = rx987_cur."!mark_fail"(0)
+ lt rx987_pos, -1, rx987_done
+ eq rx987_pos, -1, rx987_fail
+ jump $I10
+ rx987_done:
+ rx987_cur."!cursor_fail"()
+ rx987_cur."!cursor_debug"("FAIL ", "prefix:sym<+>")
+ .return (rx987_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>" :subid("246_1267204702.05125") :method
-.annotate "line", 417
- $P981 = self."!PREFIX__!subrule"("O", "+")
- new $P982, "ResizablePMCArray"
- push $P982, $P981
- .return ($P982)
+.sub "!PREFIX__prefix:sym<+>" :subid("248_1272816833.94956") :method
+.annotate "line", 422
+ $P989 = self."!PREFIX__!subrule"("O", "+")
+ new $P990, "ResizablePMCArray"
+ push $P990, $P989
+ .return ($P990)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>" :subid("247_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx986_tgt
- .local int rx986_pos
- .local int rx986_off
- .local int rx986_eos
- .local int rx986_rep
- .local pmc rx986_cur
- (rx986_cur, rx986_pos, rx986_tgt) = self."!cursor_start"()
- rx986_cur."!cursor_debug"("START ", "prefix:sym<~>")
- .lex unicode:"$\x{a2}", rx986_cur
- .local pmc match
- .lex "$/", match
- length rx986_eos, rx986_tgt
- set rx986_off, 0
- lt rx986_pos, 2, rx986_start
- sub rx986_off, rx986_pos, 1
- substr rx986_tgt, rx986_tgt, rx986_off
- rx986_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan990_done
- goto rxscan990_scan
- rxscan990_loop:
- ($P10) = rx986_cur."from"()
- inc $P10
- set rx986_pos, $P10
- ge rx986_pos, rx986_eos, rxscan990_done
- rxscan990_scan:
- set_addr $I10, rxscan990_loop
- rx986_cur."!mark_push"(0, rx986_pos, $I10)
- rxscan990_done:
-.annotate "line", 471
+.sub "prefix:sym<~>" :subid("249_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx994_tgt
+ .local int rx994_pos
+ .local int rx994_off
+ .local int rx994_eos
+ .local int rx994_rep
+ .local pmc rx994_cur
+ (rx994_cur, rx994_pos, rx994_tgt) = self."!cursor_start"()
+ rx994_cur."!cursor_debug"("START ", "prefix:sym<~>")
+ .lex unicode:"$\x{a2}", rx994_cur
+ .local pmc match
+ .lex "$/", match
+ length rx994_eos, rx994_tgt
+ set rx994_off, 0
+ lt rx994_pos, 2, rx994_start
+ sub rx994_off, rx994_pos, 1
+ substr rx994_tgt, rx994_tgt, rx994_off
+ rx994_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan998_done
+ goto rxscan998_scan
+ rxscan998_loop:
+ ($P10) = rx994_cur."from"()
+ inc $P10
+ set rx994_pos, $P10
+ ge rx994_pos, rx994_eos, rxscan998_done
+ rxscan998_scan:
+ set_addr $I10, rxscan998_loop
+ rx994_cur."!mark_push"(0, rx994_pos, $I10)
+ rxscan998_done:
+.annotate "line", 476
# rx subcapture "sym"
- set_addr $I10, rxcap_991_fail
- rx986_cur."!mark_push"(0, rx986_pos, $I10)
+ set_addr $I10, rxcap_999_fail
+ rx994_cur."!mark_push"(0, rx994_pos, $I10)
# rx literal "~"
- add $I11, rx986_pos, 1
- gt $I11, rx986_eos, rx986_fail
- sub $I11, rx986_pos, rx986_off
- substr $S10, rx986_tgt, $I11, 1
- ne $S10, "~", rx986_fail
- add rx986_pos, 1
- set_addr $I10, rxcap_991_fail
- ($I12, $I11) = rx986_cur."!mark_peek"($I10)
- rx986_cur."!cursor_pos"($I11)
- ($P10) = rx986_cur."!cursor_start"()
- $P10."!cursor_pass"(rx986_pos, "")
- rx986_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx994_pos, 1
+ gt $I11, rx994_eos, rx994_fail
+ sub $I11, rx994_pos, rx994_off
+ substr $S10, rx994_tgt, $I11, 1
+ ne $S10, "~", rx994_fail
+ add rx994_pos, 1
+ set_addr $I10, rxcap_999_fail
+ ($I12, $I11) = rx994_cur."!mark_peek"($I10)
+ rx994_cur."!cursor_pos"($I11)
+ ($P10) = rx994_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx994_pos, "")
+ rx994_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_991_done
- rxcap_991_fail:
- goto rx986_fail
- rxcap_991_done:
+ goto rxcap_999_done
+ rxcap_999_fail:
+ goto rx994_fail
+ rxcap_999_done:
# rx subrule "O" subtype=capture negate=
- rx986_cur."!cursor_pos"(rx986_pos)
- $P10 = rx986_cur."O"("%symbolic_unary, :pirop<set S*>")
- unless $P10, rx986_fail
- rx986_cur."!mark_push"(0, -1, 0, $P10)
+ rx994_cur."!cursor_pos"(rx994_pos)
+ $P10 = rx994_cur."O"("%symbolic_unary, :pirop<set S*>")
+ unless $P10, rx994_fail
+ rx994_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx986_pos = $P10."pos"()
+ rx994_pos = $P10."pos"()
# rx pass
- rx986_cur."!cursor_pass"(rx986_pos, "prefix:sym<~>")
- rx986_cur."!cursor_debug"("PASS ", "prefix:sym<~>", " at pos=", rx986_pos)
- .return (rx986_cur)
- rx986_fail:
-.annotate "line", 417
- (rx986_rep, rx986_pos, $I10, $P10) = rx986_cur."!mark_fail"(0)
- lt rx986_pos, -1, rx986_done
- eq rx986_pos, -1, rx986_fail
- jump $I10
- rx986_done:
- rx986_cur."!cursor_fail"()
- rx986_cur."!cursor_debug"("FAIL ", "prefix:sym<~>")
- .return (rx986_cur)
+ rx994_cur."!cursor_pass"(rx994_pos, "prefix:sym<~>")
+ rx994_cur."!cursor_debug"("PASS ", "prefix:sym<~>", " at pos=", rx994_pos)
+ .return (rx994_cur)
+ rx994_fail:
+.annotate "line", 422
+ (rx994_rep, rx994_pos, $I10, $P10) = rx994_cur."!mark_fail"(0)
+ lt rx994_pos, -1, rx994_done
+ eq rx994_pos, -1, rx994_fail
+ jump $I10
+ rx994_done:
+ rx994_cur."!cursor_fail"()
+ rx994_cur."!cursor_debug"("FAIL ", "prefix:sym<~>")
+ .return (rx994_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>" :subid("248_1267204702.05125") :method
-.annotate "line", 417
- $P988 = self."!PREFIX__!subrule"("O", "~")
- new $P989, "ResizablePMCArray"
- push $P989, $P988
- .return ($P989)
+.sub "!PREFIX__prefix:sym<~>" :subid("250_1272816833.94956") :method
+.annotate "line", 422
+ $P996 = self."!PREFIX__!subrule"("O", "~")
+ new $P997, "ResizablePMCArray"
+ push $P997, $P996
+ .return ($P997)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->" :subid("249_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx993_tgt
- .local int rx993_pos
- .local int rx993_off
- .local int rx993_eos
- .local int rx993_rep
- .local pmc rx993_cur
- (rx993_cur, rx993_pos, rx993_tgt) = self."!cursor_start"()
- rx993_cur."!cursor_debug"("START ", "prefix:sym<->")
- .lex unicode:"$\x{a2}", rx993_cur
- .local pmc match
- .lex "$/", match
- length rx993_eos, rx993_tgt
- set rx993_off, 0
- lt rx993_pos, 2, rx993_start
- sub rx993_off, rx993_pos, 1
- substr rx993_tgt, rx993_tgt, rx993_off
- rx993_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan996_done
- goto rxscan996_scan
- rxscan996_loop:
- ($P10) = rx993_cur."from"()
- inc $P10
- set rx993_pos, $P10
- ge rx993_pos, rx993_eos, rxscan996_done
- rxscan996_scan:
- set_addr $I10, rxscan996_loop
- rx993_cur."!mark_push"(0, rx993_pos, $I10)
- rxscan996_done:
-.annotate "line", 472
+.sub "prefix:sym<->" :subid("251_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1001_tgt
+ .local int rx1001_pos
+ .local int rx1001_off
+ .local int rx1001_eos
+ .local int rx1001_rep
+ .local pmc rx1001_cur
+ (rx1001_cur, rx1001_pos, rx1001_tgt) = self."!cursor_start"()
+ rx1001_cur."!cursor_debug"("START ", "prefix:sym<->")
+ .lex unicode:"$\x{a2}", rx1001_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1001_eos, rx1001_tgt
+ set rx1001_off, 0
+ lt rx1001_pos, 2, rx1001_start
+ sub rx1001_off, rx1001_pos, 1
+ substr rx1001_tgt, rx1001_tgt, rx1001_off
+ rx1001_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1004_done
+ goto rxscan1004_scan
+ rxscan1004_loop:
+ ($P10) = rx1001_cur."from"()
+ inc $P10
+ set rx1001_pos, $P10
+ ge rx1001_pos, rx1001_eos, rxscan1004_done
+ rxscan1004_scan:
+ set_addr $I10, rxscan1004_loop
+ rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
+ rxscan1004_done:
+.annotate "line", 477
# rx subcapture "sym"
- set_addr $I10, rxcap_997_fail
- rx993_cur."!mark_push"(0, rx993_pos, $I10)
+ set_addr $I10, rxcap_1005_fail
+ rx1001_cur."!mark_push"(0, rx1001_pos, $I10)
# rx literal "-"
- add $I11, rx993_pos, 1
- gt $I11, rx993_eos, rx993_fail
- sub $I11, rx993_pos, rx993_off
- substr $S10, rx993_tgt, $I11, 1
- ne $S10, "-", rx993_fail
- add rx993_pos, 1
- set_addr $I10, rxcap_997_fail
- ($I12, $I11) = rx993_cur."!mark_peek"($I10)
- rx993_cur."!cursor_pos"($I11)
- ($P10) = rx993_cur."!cursor_start"()
- $P10."!cursor_pass"(rx993_pos, "")
- rx993_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1001_pos, 1
+ gt $I11, rx1001_eos, rx1001_fail
+ sub $I11, rx1001_pos, rx1001_off
+ substr $S10, rx1001_tgt, $I11, 1
+ ne $S10, "-", rx1001_fail
+ add rx1001_pos, 1
+ set_addr $I10, rxcap_1005_fail
+ ($I12, $I11) = rx1001_cur."!mark_peek"($I10)
+ rx1001_cur."!cursor_pos"($I11)
+ ($P10) = rx1001_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1001_pos, "")
+ rx1001_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_997_done
- rxcap_997_fail:
- goto rx993_fail
- rxcap_997_done:
+ goto rxcap_1005_done
+ rxcap_1005_fail:
+ goto rx1001_fail
+ rxcap_1005_done:
# rx enumcharlist negate=1 zerowidth
- ge rx993_pos, rx993_eos, rx993_fail
- sub $I10, rx993_pos, rx993_off
- substr $S10, rx993_tgt, $I10, 1
+ ge rx1001_pos, rx1001_eos, rx1001_fail
+ sub $I10, rx1001_pos, rx1001_off
+ substr $S10, rx1001_tgt, $I10, 1
index $I11, ">", $S10
- ge $I11, 0, rx993_fail
+ ge $I11, 0, rx1001_fail
# rx subrule "number" subtype=zerowidth negate=1
- rx993_cur."!cursor_pos"(rx993_pos)
- $P10 = rx993_cur."number"()
- if $P10, rx993_fail
+ rx1001_cur."!cursor_pos"(rx1001_pos)
+ $P10 = rx1001_cur."number"()
+ if $P10, rx1001_fail
# rx subrule "O" subtype=capture negate=
- rx993_cur."!cursor_pos"(rx993_pos)
- $P10 = rx993_cur."O"("%symbolic_unary, :pirop<neg>")
- unless $P10, rx993_fail
- rx993_cur."!mark_push"(0, -1, 0, $P10)
+ rx1001_cur."!cursor_pos"(rx1001_pos)
+ $P10 = rx1001_cur."O"("%symbolic_unary, :pirop<neg>")
+ unless $P10, rx1001_fail
+ rx1001_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx993_pos = $P10."pos"()
+ rx1001_pos = $P10."pos"()
# rx pass
- rx993_cur."!cursor_pass"(rx993_pos, "prefix:sym<->")
- rx993_cur."!cursor_debug"("PASS ", "prefix:sym<->", " at pos=", rx993_pos)
- .return (rx993_cur)
- rx993_fail:
-.annotate "line", 417
- (rx993_rep, rx993_pos, $I10, $P10) = rx993_cur."!mark_fail"(0)
- lt rx993_pos, -1, rx993_done
- eq rx993_pos, -1, rx993_fail
- jump $I10
- rx993_done:
- rx993_cur."!cursor_fail"()
- rx993_cur."!cursor_debug"("FAIL ", "prefix:sym<->")
- .return (rx993_cur)
+ rx1001_cur."!cursor_pass"(rx1001_pos, "prefix:sym<->")
+ rx1001_cur."!cursor_debug"("PASS ", "prefix:sym<->", " at pos=", rx1001_pos)
+ .return (rx1001_cur)
+ rx1001_fail:
+.annotate "line", 422
+ (rx1001_rep, rx1001_pos, $I10, $P10) = rx1001_cur."!mark_fail"(0)
+ lt rx1001_pos, -1, rx1001_done
+ eq rx1001_pos, -1, rx1001_fail
+ jump $I10
+ rx1001_done:
+ rx1001_cur."!cursor_fail"()
+ rx1001_cur."!cursor_debug"("FAIL ", "prefix:sym<->")
+ .return (rx1001_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->" :subid("250_1267204702.05125") :method
-.annotate "line", 417
- new $P995, "ResizablePMCArray"
- push $P995, "-"
- .return ($P995)
+.sub "!PREFIX__prefix:sym<->" :subid("252_1272816833.94956") :method
+.annotate "line", 422
+ new $P1003, "ResizablePMCArray"
+ push $P1003, "-"
+ .return ($P1003)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>" :subid("251_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx999_tgt
- .local int rx999_pos
- .local int rx999_off
- .local int rx999_eos
- .local int rx999_rep
- .local pmc rx999_cur
- (rx999_cur, rx999_pos, rx999_tgt) = self."!cursor_start"()
- rx999_cur."!cursor_debug"("START ", "prefix:sym<?>")
- .lex unicode:"$\x{a2}", rx999_cur
- .local pmc match
- .lex "$/", match
- length rx999_eos, rx999_tgt
- set rx999_off, 0
- lt rx999_pos, 2, rx999_start
- sub rx999_off, rx999_pos, 1
- substr rx999_tgt, rx999_tgt, rx999_off
- rx999_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1003_done
- goto rxscan1003_scan
- rxscan1003_loop:
- ($P10) = rx999_cur."from"()
- inc $P10
- set rx999_pos, $P10
- ge rx999_pos, rx999_eos, rxscan1003_done
- rxscan1003_scan:
- set_addr $I10, rxscan1003_loop
- rx999_cur."!mark_push"(0, rx999_pos, $I10)
- rxscan1003_done:
-.annotate "line", 473
+.sub "prefix:sym<?>" :subid("253_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1007_tgt
+ .local int rx1007_pos
+ .local int rx1007_off
+ .local int rx1007_eos
+ .local int rx1007_rep
+ .local pmc rx1007_cur
+ (rx1007_cur, rx1007_pos, rx1007_tgt) = self."!cursor_start"()
+ rx1007_cur."!cursor_debug"("START ", "prefix:sym<?>")
+ .lex unicode:"$\x{a2}", rx1007_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1007_eos, rx1007_tgt
+ set rx1007_off, 0
+ lt rx1007_pos, 2, rx1007_start
+ sub rx1007_off, rx1007_pos, 1
+ substr rx1007_tgt, rx1007_tgt, rx1007_off
+ rx1007_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1011_done
+ goto rxscan1011_scan
+ rxscan1011_loop:
+ ($P10) = rx1007_cur."from"()
+ inc $P10
+ set rx1007_pos, $P10
+ ge rx1007_pos, rx1007_eos, rxscan1011_done
+ rxscan1011_scan:
+ set_addr $I10, rxscan1011_loop
+ rx1007_cur."!mark_push"(0, rx1007_pos, $I10)
+ rxscan1011_done:
+.annotate "line", 478
# rx subcapture "sym"
- set_addr $I10, rxcap_1004_fail
- rx999_cur."!mark_push"(0, rx999_pos, $I10)
+ set_addr $I10, rxcap_1012_fail
+ rx1007_cur."!mark_push"(0, rx1007_pos, $I10)
# rx literal "?"
- add $I11, rx999_pos, 1
- gt $I11, rx999_eos, rx999_fail
- sub $I11, rx999_pos, rx999_off
- substr $S10, rx999_tgt, $I11, 1
- ne $S10, "?", rx999_fail
- add rx999_pos, 1
- set_addr $I10, rxcap_1004_fail
- ($I12, $I11) = rx999_cur."!mark_peek"($I10)
- rx999_cur."!cursor_pos"($I11)
- ($P10) = rx999_cur."!cursor_start"()
- $P10."!cursor_pass"(rx999_pos, "")
- rx999_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1007_pos, 1
+ gt $I11, rx1007_eos, rx1007_fail
+ sub $I11, rx1007_pos, rx1007_off
+ substr $S10, rx1007_tgt, $I11, 1
+ ne $S10, "?", rx1007_fail
+ add rx1007_pos, 1
+ set_addr $I10, rxcap_1012_fail
+ ($I12, $I11) = rx1007_cur."!mark_peek"($I10)
+ rx1007_cur."!cursor_pos"($I11)
+ ($P10) = rx1007_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1007_pos, "")
+ rx1007_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1004_done
- rxcap_1004_fail:
- goto rx999_fail
- rxcap_1004_done:
+ goto rxcap_1012_done
+ rxcap_1012_fail:
+ goto rx1007_fail
+ rxcap_1012_done:
# rx subrule "O" subtype=capture negate=
- rx999_cur."!cursor_pos"(rx999_pos)
- $P10 = rx999_cur."O"("%symbolic_unary, :pirop<istrue>")
- unless $P10, rx999_fail
- rx999_cur."!mark_push"(0, -1, 0, $P10)
+ rx1007_cur."!cursor_pos"(rx1007_pos)
+ $P10 = rx1007_cur."O"("%symbolic_unary, :pirop<istrue>")
+ unless $P10, rx1007_fail
+ rx1007_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx999_pos = $P10."pos"()
+ rx1007_pos = $P10."pos"()
# rx pass
- rx999_cur."!cursor_pass"(rx999_pos, "prefix:sym<?>")
- rx999_cur."!cursor_debug"("PASS ", "prefix:sym<?>", " at pos=", rx999_pos)
- .return (rx999_cur)
- rx999_fail:
-.annotate "line", 417
- (rx999_rep, rx999_pos, $I10, $P10) = rx999_cur."!mark_fail"(0)
- lt rx999_pos, -1, rx999_done
- eq rx999_pos, -1, rx999_fail
- jump $I10
- rx999_done:
- rx999_cur."!cursor_fail"()
- rx999_cur."!cursor_debug"("FAIL ", "prefix:sym<?>")
- .return (rx999_cur)
+ rx1007_cur."!cursor_pass"(rx1007_pos, "prefix:sym<?>")
+ rx1007_cur."!cursor_debug"("PASS ", "prefix:sym<?>", " at pos=", rx1007_pos)
+ .return (rx1007_cur)
+ rx1007_fail:
+.annotate "line", 422
+ (rx1007_rep, rx1007_pos, $I10, $P10) = rx1007_cur."!mark_fail"(0)
+ lt rx1007_pos, -1, rx1007_done
+ eq rx1007_pos, -1, rx1007_fail
+ jump $I10
+ rx1007_done:
+ rx1007_cur."!cursor_fail"()
+ rx1007_cur."!cursor_debug"("FAIL ", "prefix:sym<?>")
+ .return (rx1007_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>" :subid("252_1267204702.05125") :method
-.annotate "line", 417
- $P1001 = self."!PREFIX__!subrule"("O", "?")
- new $P1002, "ResizablePMCArray"
- push $P1002, $P1001
- .return ($P1002)
+.sub "!PREFIX__prefix:sym<?>" :subid("254_1272816833.94956") :method
+.annotate "line", 422
+ $P1009 = self."!PREFIX__!subrule"("O", "?")
+ new $P1010, "ResizablePMCArray"
+ push $P1010, $P1009
+ .return ($P1010)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>" :subid("253_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1006_tgt
- .local int rx1006_pos
- .local int rx1006_off
- .local int rx1006_eos
- .local int rx1006_rep
- .local pmc rx1006_cur
- (rx1006_cur, rx1006_pos, rx1006_tgt) = self."!cursor_start"()
- rx1006_cur."!cursor_debug"("START ", "prefix:sym<!>")
- .lex unicode:"$\x{a2}", rx1006_cur
- .local pmc match
- .lex "$/", match
- length rx1006_eos, rx1006_tgt
- set rx1006_off, 0
- lt rx1006_pos, 2, rx1006_start
- sub rx1006_off, rx1006_pos, 1
- substr rx1006_tgt, rx1006_tgt, rx1006_off
- rx1006_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1010_done
- goto rxscan1010_scan
- rxscan1010_loop:
- ($P10) = rx1006_cur."from"()
- inc $P10
- set rx1006_pos, $P10
- ge rx1006_pos, rx1006_eos, rxscan1010_done
- rxscan1010_scan:
- set_addr $I10, rxscan1010_loop
- rx1006_cur."!mark_push"(0, rx1006_pos, $I10)
- rxscan1010_done:
-.annotate "line", 474
+.sub "prefix:sym<!>" :subid("255_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1014_tgt
+ .local int rx1014_pos
+ .local int rx1014_off
+ .local int rx1014_eos
+ .local int rx1014_rep
+ .local pmc rx1014_cur
+ (rx1014_cur, rx1014_pos, rx1014_tgt) = self."!cursor_start"()
+ rx1014_cur."!cursor_debug"("START ", "prefix:sym<!>")
+ .lex unicode:"$\x{a2}", rx1014_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1014_eos, rx1014_tgt
+ set rx1014_off, 0
+ lt rx1014_pos, 2, rx1014_start
+ sub rx1014_off, rx1014_pos, 1
+ substr rx1014_tgt, rx1014_tgt, rx1014_off
+ rx1014_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1018_done
+ goto rxscan1018_scan
+ rxscan1018_loop:
+ ($P10) = rx1014_cur."from"()
+ inc $P10
+ set rx1014_pos, $P10
+ ge rx1014_pos, rx1014_eos, rxscan1018_done
+ rxscan1018_scan:
+ set_addr $I10, rxscan1018_loop
+ rx1014_cur."!mark_push"(0, rx1014_pos, $I10)
+ rxscan1018_done:
+.annotate "line", 479
# rx subcapture "sym"
- set_addr $I10, rxcap_1011_fail
- rx1006_cur."!mark_push"(0, rx1006_pos, $I10)
+ set_addr $I10, rxcap_1019_fail
+ rx1014_cur."!mark_push"(0, rx1014_pos, $I10)
# rx literal "!"
- add $I11, rx1006_pos, 1
- gt $I11, rx1006_eos, rx1006_fail
- sub $I11, rx1006_pos, rx1006_off
- substr $S10, rx1006_tgt, $I11, 1
- ne $S10, "!", rx1006_fail
- add rx1006_pos, 1
- set_addr $I10, rxcap_1011_fail
- ($I12, $I11) = rx1006_cur."!mark_peek"($I10)
- rx1006_cur."!cursor_pos"($I11)
- ($P10) = rx1006_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1006_pos, "")
- rx1006_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1014_pos, 1
+ gt $I11, rx1014_eos, rx1014_fail
+ sub $I11, rx1014_pos, rx1014_off
+ substr $S10, rx1014_tgt, $I11, 1
+ ne $S10, "!", rx1014_fail
+ add rx1014_pos, 1
+ set_addr $I10, rxcap_1019_fail
+ ($I12, $I11) = rx1014_cur."!mark_peek"($I10)
+ rx1014_cur."!cursor_pos"($I11)
+ ($P10) = rx1014_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1014_pos, "")
+ rx1014_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1011_done
- rxcap_1011_fail:
- goto rx1006_fail
- rxcap_1011_done:
+ goto rxcap_1019_done
+ rxcap_1019_fail:
+ goto rx1014_fail
+ rxcap_1019_done:
# rx subrule "O" subtype=capture negate=
- rx1006_cur."!cursor_pos"(rx1006_pos)
- $P10 = rx1006_cur."O"("%symbolic_unary, :pirop<isfalse>")
- unless $P10, rx1006_fail
- rx1006_cur."!mark_push"(0, -1, 0, $P10)
+ rx1014_cur."!cursor_pos"(rx1014_pos)
+ $P10 = rx1014_cur."O"("%symbolic_unary, :pirop<isfalse>")
+ unless $P10, rx1014_fail
+ rx1014_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1006_pos = $P10."pos"()
+ rx1014_pos = $P10."pos"()
# rx pass
- rx1006_cur."!cursor_pass"(rx1006_pos, "prefix:sym<!>")
- rx1006_cur."!cursor_debug"("PASS ", "prefix:sym<!>", " at pos=", rx1006_pos)
- .return (rx1006_cur)
- rx1006_fail:
-.annotate "line", 417
- (rx1006_rep, rx1006_pos, $I10, $P10) = rx1006_cur."!mark_fail"(0)
- lt rx1006_pos, -1, rx1006_done
- eq rx1006_pos, -1, rx1006_fail
- jump $I10
- rx1006_done:
- rx1006_cur."!cursor_fail"()
- rx1006_cur."!cursor_debug"("FAIL ", "prefix:sym<!>")
- .return (rx1006_cur)
+ rx1014_cur."!cursor_pass"(rx1014_pos, "prefix:sym<!>")
+ rx1014_cur."!cursor_debug"("PASS ", "prefix:sym<!>", " at pos=", rx1014_pos)
+ .return (rx1014_cur)
+ rx1014_fail:
+.annotate "line", 422
+ (rx1014_rep, rx1014_pos, $I10, $P10) = rx1014_cur."!mark_fail"(0)
+ lt rx1014_pos, -1, rx1014_done
+ eq rx1014_pos, -1, rx1014_fail
+ jump $I10
+ rx1014_done:
+ rx1014_cur."!cursor_fail"()
+ rx1014_cur."!cursor_debug"("FAIL ", "prefix:sym<!>")
+ .return (rx1014_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>" :subid("254_1267204702.05125") :method
-.annotate "line", 417
- $P1008 = self."!PREFIX__!subrule"("O", "!")
- new $P1009, "ResizablePMCArray"
- push $P1009, $P1008
- .return ($P1009)
+.sub "!PREFIX__prefix:sym<!>" :subid("256_1272816833.94956") :method
+.annotate "line", 422
+ $P1016 = self."!PREFIX__!subrule"("O", "!")
+ new $P1017, "ResizablePMCArray"
+ push $P1017, $P1016
+ .return ($P1017)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>" :subid("255_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1013_tgt
- .local int rx1013_pos
- .local int rx1013_off
- .local int rx1013_eos
- .local int rx1013_rep
- .local pmc rx1013_cur
- (rx1013_cur, rx1013_pos, rx1013_tgt) = self."!cursor_start"()
- rx1013_cur."!cursor_debug"("START ", "prefix:sym<|>")
- .lex unicode:"$\x{a2}", rx1013_cur
- .local pmc match
- .lex "$/", match
- length rx1013_eos, rx1013_tgt
- set rx1013_off, 0
- lt rx1013_pos, 2, rx1013_start
- sub rx1013_off, rx1013_pos, 1
- substr rx1013_tgt, rx1013_tgt, rx1013_off
- rx1013_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1017_done
- goto rxscan1017_scan
- rxscan1017_loop:
- ($P10) = rx1013_cur."from"()
- inc $P10
- set rx1013_pos, $P10
- ge rx1013_pos, rx1013_eos, rxscan1017_done
- rxscan1017_scan:
- set_addr $I10, rxscan1017_loop
- rx1013_cur."!mark_push"(0, rx1013_pos, $I10)
- rxscan1017_done:
-.annotate "line", 475
+.sub "prefix:sym<|>" :subid("257_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1021_tgt
+ .local int rx1021_pos
+ .local int rx1021_off
+ .local int rx1021_eos
+ .local int rx1021_rep
+ .local pmc rx1021_cur
+ (rx1021_cur, rx1021_pos, rx1021_tgt) = self."!cursor_start"()
+ rx1021_cur."!cursor_debug"("START ", "prefix:sym<|>")
+ .lex unicode:"$\x{a2}", rx1021_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1021_eos, rx1021_tgt
+ set rx1021_off, 0
+ lt rx1021_pos, 2, rx1021_start
+ sub rx1021_off, rx1021_pos, 1
+ substr rx1021_tgt, rx1021_tgt, rx1021_off
+ rx1021_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1025_done
+ goto rxscan1025_scan
+ rxscan1025_loop:
+ ($P10) = rx1021_cur."from"()
+ inc $P10
+ set rx1021_pos, $P10
+ ge rx1021_pos, rx1021_eos, rxscan1025_done
+ rxscan1025_scan:
+ set_addr $I10, rxscan1025_loop
+ rx1021_cur."!mark_push"(0, rx1021_pos, $I10)
+ rxscan1025_done:
+.annotate "line", 480
# rx subcapture "sym"
- set_addr $I10, rxcap_1018_fail
- rx1013_cur."!mark_push"(0, rx1013_pos, $I10)
+ set_addr $I10, rxcap_1026_fail
+ rx1021_cur."!mark_push"(0, rx1021_pos, $I10)
# rx literal "|"
- add $I11, rx1013_pos, 1
- gt $I11, rx1013_eos, rx1013_fail
- sub $I11, rx1013_pos, rx1013_off
- substr $S10, rx1013_tgt, $I11, 1
- ne $S10, "|", rx1013_fail
- add rx1013_pos, 1
- set_addr $I10, rxcap_1018_fail
- ($I12, $I11) = rx1013_cur."!mark_peek"($I10)
- rx1013_cur."!cursor_pos"($I11)
- ($P10) = rx1013_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1013_pos, "")
- rx1013_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1021_pos, 1
+ gt $I11, rx1021_eos, rx1021_fail
+ sub $I11, rx1021_pos, rx1021_off
+ substr $S10, rx1021_tgt, $I11, 1
+ ne $S10, "|", rx1021_fail
+ add rx1021_pos, 1
+ set_addr $I10, rxcap_1026_fail
+ ($I12, $I11) = rx1021_cur."!mark_peek"($I10)
+ rx1021_cur."!cursor_pos"($I11)
+ ($P10) = rx1021_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1021_pos, "")
+ rx1021_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1018_done
- rxcap_1018_fail:
- goto rx1013_fail
- rxcap_1018_done:
+ goto rxcap_1026_done
+ rxcap_1026_fail:
+ goto rx1021_fail
+ rxcap_1026_done:
# rx subrule "O" subtype=capture negate=
- rx1013_cur."!cursor_pos"(rx1013_pos)
- $P10 = rx1013_cur."O"("%symbolic_unary")
- unless $P10, rx1013_fail
- rx1013_cur."!mark_push"(0, -1, 0, $P10)
+ rx1021_cur."!cursor_pos"(rx1021_pos)
+ $P10 = rx1021_cur."O"("%symbolic_unary")
+ unless $P10, rx1021_fail
+ rx1021_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1013_pos = $P10."pos"()
+ rx1021_pos = $P10."pos"()
# rx pass
- rx1013_cur."!cursor_pass"(rx1013_pos, "prefix:sym<|>")
- rx1013_cur."!cursor_debug"("PASS ", "prefix:sym<|>", " at pos=", rx1013_pos)
- .return (rx1013_cur)
- rx1013_fail:
-.annotate "line", 417
- (rx1013_rep, rx1013_pos, $I10, $P10) = rx1013_cur."!mark_fail"(0)
- lt rx1013_pos, -1, rx1013_done
- eq rx1013_pos, -1, rx1013_fail
- jump $I10
- rx1013_done:
- rx1013_cur."!cursor_fail"()
- rx1013_cur."!cursor_debug"("FAIL ", "prefix:sym<|>")
- .return (rx1013_cur)
+ rx1021_cur."!cursor_pass"(rx1021_pos, "prefix:sym<|>")
+ rx1021_cur."!cursor_debug"("PASS ", "prefix:sym<|>", " at pos=", rx1021_pos)
+ .return (rx1021_cur)
+ rx1021_fail:
+.annotate "line", 422
+ (rx1021_rep, rx1021_pos, $I10, $P10) = rx1021_cur."!mark_fail"(0)
+ lt rx1021_pos, -1, rx1021_done
+ eq rx1021_pos, -1, rx1021_fail
+ jump $I10
+ rx1021_done:
+ rx1021_cur."!cursor_fail"()
+ rx1021_cur."!cursor_debug"("FAIL ", "prefix:sym<|>")
+ .return (rx1021_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>" :subid("256_1267204702.05125") :method
-.annotate "line", 417
- $P1015 = self."!PREFIX__!subrule"("O", "|")
- new $P1016, "ResizablePMCArray"
- push $P1016, $P1015
- .return ($P1016)
+.sub "!PREFIX__prefix:sym<|>" :subid("258_1272816833.94956") :method
+.annotate "line", 422
+ $P1023 = self."!PREFIX__!subrule"("O", "|")
+ new $P1024, "ResizablePMCArray"
+ push $P1024, $P1023
+ .return ($P1024)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>" :subid("257_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1020_tgt
- .local int rx1020_pos
- .local int rx1020_off
- .local int rx1020_eos
- .local int rx1020_rep
- .local pmc rx1020_cur
- (rx1020_cur, rx1020_pos, rx1020_tgt) = self."!cursor_start"()
- rx1020_cur."!cursor_debug"("START ", "infix:sym<*>")
- .lex unicode:"$\x{a2}", rx1020_cur
- .local pmc match
- .lex "$/", match
- length rx1020_eos, rx1020_tgt
- set rx1020_off, 0
- lt rx1020_pos, 2, rx1020_start
- sub rx1020_off, rx1020_pos, 1
- substr rx1020_tgt, rx1020_tgt, rx1020_off
- rx1020_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1024_done
- goto rxscan1024_scan
- rxscan1024_loop:
- ($P10) = rx1020_cur."from"()
- inc $P10
- set rx1020_pos, $P10
- ge rx1020_pos, rx1020_eos, rxscan1024_done
- rxscan1024_scan:
- set_addr $I10, rxscan1024_loop
- rx1020_cur."!mark_push"(0, rx1020_pos, $I10)
- rxscan1024_done:
-.annotate "line", 477
+.sub "infix:sym<*>" :subid("259_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1028_tgt
+ .local int rx1028_pos
+ .local int rx1028_off
+ .local int rx1028_eos
+ .local int rx1028_rep
+ .local pmc rx1028_cur
+ (rx1028_cur, rx1028_pos, rx1028_tgt) = self."!cursor_start"()
+ rx1028_cur."!cursor_debug"("START ", "infix:sym<*>")
+ .lex unicode:"$\x{a2}", rx1028_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1028_eos, rx1028_tgt
+ set rx1028_off, 0
+ lt rx1028_pos, 2, rx1028_start
+ sub rx1028_off, rx1028_pos, 1
+ substr rx1028_tgt, rx1028_tgt, rx1028_off
+ rx1028_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1032_done
+ goto rxscan1032_scan
+ rxscan1032_loop:
+ ($P10) = rx1028_cur."from"()
+ inc $P10
+ set rx1028_pos, $P10
+ ge rx1028_pos, rx1028_eos, rxscan1032_done
+ rxscan1032_scan:
+ set_addr $I10, rxscan1032_loop
+ rx1028_cur."!mark_push"(0, rx1028_pos, $I10)
+ rxscan1032_done:
+.annotate "line", 482
# rx subcapture "sym"
- set_addr $I10, rxcap_1025_fail
- rx1020_cur."!mark_push"(0, rx1020_pos, $I10)
+ set_addr $I10, rxcap_1033_fail
+ rx1028_cur."!mark_push"(0, rx1028_pos, $I10)
# rx literal "*"
- add $I11, rx1020_pos, 1
- gt $I11, rx1020_eos, rx1020_fail
- sub $I11, rx1020_pos, rx1020_off
- substr $S10, rx1020_tgt, $I11, 1
- ne $S10, "*", rx1020_fail
- add rx1020_pos, 1
- set_addr $I10, rxcap_1025_fail
- ($I12, $I11) = rx1020_cur."!mark_peek"($I10)
- rx1020_cur."!cursor_pos"($I11)
- ($P10) = rx1020_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1020_pos, "")
- rx1020_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1028_pos, 1
+ gt $I11, rx1028_eos, rx1028_fail
+ sub $I11, rx1028_pos, rx1028_off
+ substr $S10, rx1028_tgt, $I11, 1
+ ne $S10, "*", rx1028_fail
+ add rx1028_pos, 1
+ set_addr $I10, rxcap_1033_fail
+ ($I12, $I11) = rx1028_cur."!mark_peek"($I10)
+ rx1028_cur."!cursor_pos"($I11)
+ ($P10) = rx1028_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1028_pos, "")
+ rx1028_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1025_done
- rxcap_1025_fail:
- goto rx1020_fail
- rxcap_1025_done:
+ goto rxcap_1033_done
+ rxcap_1033_fail:
+ goto rx1028_fail
+ rxcap_1033_done:
# rx subrule "O" subtype=capture negate=
- rx1020_cur."!cursor_pos"(rx1020_pos)
- $P10 = rx1020_cur."O"("%multiplicative, :pirop<mul>")
- unless $P10, rx1020_fail
- rx1020_cur."!mark_push"(0, -1, 0, $P10)
+ rx1028_cur."!cursor_pos"(rx1028_pos)
+ $P10 = rx1028_cur."O"("%multiplicative, :pirop<mul>")
+ unless $P10, rx1028_fail
+ rx1028_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1020_pos = $P10."pos"()
+ rx1028_pos = $P10."pos"()
# rx pass
- rx1020_cur."!cursor_pass"(rx1020_pos, "infix:sym<*>")
- rx1020_cur."!cursor_debug"("PASS ", "infix:sym<*>", " at pos=", rx1020_pos)
- .return (rx1020_cur)
- rx1020_fail:
-.annotate "line", 417
- (rx1020_rep, rx1020_pos, $I10, $P10) = rx1020_cur."!mark_fail"(0)
- lt rx1020_pos, -1, rx1020_done
- eq rx1020_pos, -1, rx1020_fail
- jump $I10
- rx1020_done:
- rx1020_cur."!cursor_fail"()
- rx1020_cur."!cursor_debug"("FAIL ", "infix:sym<*>")
- .return (rx1020_cur)
+ rx1028_cur."!cursor_pass"(rx1028_pos, "infix:sym<*>")
+ rx1028_cur."!cursor_debug"("PASS ", "infix:sym<*>", " at pos=", rx1028_pos)
+ .return (rx1028_cur)
+ rx1028_fail:
+.annotate "line", 422
+ (rx1028_rep, rx1028_pos, $I10, $P10) = rx1028_cur."!mark_fail"(0)
+ lt rx1028_pos, -1, rx1028_done
+ eq rx1028_pos, -1, rx1028_fail
+ jump $I10
+ rx1028_done:
+ rx1028_cur."!cursor_fail"()
+ rx1028_cur."!cursor_debug"("FAIL ", "infix:sym<*>")
+ .return (rx1028_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>" :subid("258_1267204702.05125") :method
-.annotate "line", 417
- $P1022 = self."!PREFIX__!subrule"("O", "*")
- new $P1023, "ResizablePMCArray"
- push $P1023, $P1022
- .return ($P1023)
+.sub "!PREFIX__infix:sym<*>" :subid("260_1272816833.94956") :method
+.annotate "line", 422
+ $P1030 = self."!PREFIX__!subrule"("O", "*")
+ new $P1031, "ResizablePMCArray"
+ push $P1031, $P1030
+ .return ($P1031)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym</>" :subid("259_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1027_tgt
- .local int rx1027_pos
- .local int rx1027_off
- .local int rx1027_eos
- .local int rx1027_rep
- .local pmc rx1027_cur
- (rx1027_cur, rx1027_pos, rx1027_tgt) = self."!cursor_start"()
- rx1027_cur."!cursor_debug"("START ", "infix:sym</>")
- .lex unicode:"$\x{a2}", rx1027_cur
- .local pmc match
- .lex "$/", match
- length rx1027_eos, rx1027_tgt
- set rx1027_off, 0
- lt rx1027_pos, 2, rx1027_start
- sub rx1027_off, rx1027_pos, 1
- substr rx1027_tgt, rx1027_tgt, rx1027_off
- rx1027_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1031_done
- goto rxscan1031_scan
- rxscan1031_loop:
- ($P10) = rx1027_cur."from"()
- inc $P10
- set rx1027_pos, $P10
- ge rx1027_pos, rx1027_eos, rxscan1031_done
- rxscan1031_scan:
- set_addr $I10, rxscan1031_loop
- rx1027_cur."!mark_push"(0, rx1027_pos, $I10)
- rxscan1031_done:
-.annotate "line", 478
+.sub "infix:sym</>" :subid("261_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1035_tgt
+ .local int rx1035_pos
+ .local int rx1035_off
+ .local int rx1035_eos
+ .local int rx1035_rep
+ .local pmc rx1035_cur
+ (rx1035_cur, rx1035_pos, rx1035_tgt) = self."!cursor_start"()
+ rx1035_cur."!cursor_debug"("START ", "infix:sym</>")
+ .lex unicode:"$\x{a2}", rx1035_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1035_eos, rx1035_tgt
+ set rx1035_off, 0
+ lt rx1035_pos, 2, rx1035_start
+ sub rx1035_off, rx1035_pos, 1
+ substr rx1035_tgt, rx1035_tgt, rx1035_off
+ rx1035_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1039_done
+ goto rxscan1039_scan
+ rxscan1039_loop:
+ ($P10) = rx1035_cur."from"()
+ inc $P10
+ set rx1035_pos, $P10
+ ge rx1035_pos, rx1035_eos, rxscan1039_done
+ rxscan1039_scan:
+ set_addr $I10, rxscan1039_loop
+ rx1035_cur."!mark_push"(0, rx1035_pos, $I10)
+ rxscan1039_done:
+.annotate "line", 483
# rx subcapture "sym"
- set_addr $I10, rxcap_1032_fail
- rx1027_cur."!mark_push"(0, rx1027_pos, $I10)
+ set_addr $I10, rxcap_1040_fail
+ rx1035_cur."!mark_push"(0, rx1035_pos, $I10)
# rx literal "/"
- add $I11, rx1027_pos, 1
- gt $I11, rx1027_eos, rx1027_fail
- sub $I11, rx1027_pos, rx1027_off
- substr $S10, rx1027_tgt, $I11, 1
- ne $S10, "/", rx1027_fail
- add rx1027_pos, 1
- set_addr $I10, rxcap_1032_fail
- ($I12, $I11) = rx1027_cur."!mark_peek"($I10)
- rx1027_cur."!cursor_pos"($I11)
- ($P10) = rx1027_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1027_pos, "")
- rx1027_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1035_pos, 1
+ gt $I11, rx1035_eos, rx1035_fail
+ sub $I11, rx1035_pos, rx1035_off
+ substr $S10, rx1035_tgt, $I11, 1
+ ne $S10, "/", rx1035_fail
+ add rx1035_pos, 1
+ set_addr $I10, rxcap_1040_fail
+ ($I12, $I11) = rx1035_cur."!mark_peek"($I10)
+ rx1035_cur."!cursor_pos"($I11)
+ ($P10) = rx1035_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1035_pos, "")
+ rx1035_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1032_done
- rxcap_1032_fail:
- goto rx1027_fail
- rxcap_1032_done:
+ goto rxcap_1040_done
+ rxcap_1040_fail:
+ goto rx1035_fail
+ rxcap_1040_done:
# rx subrule "O" subtype=capture negate=
- rx1027_cur."!cursor_pos"(rx1027_pos)
- $P10 = rx1027_cur."O"("%multiplicative, :pirop<div>")
- unless $P10, rx1027_fail
- rx1027_cur."!mark_push"(0, -1, 0, $P10)
+ rx1035_cur."!cursor_pos"(rx1035_pos)
+ $P10 = rx1035_cur."O"("%multiplicative, :pirop<div>")
+ unless $P10, rx1035_fail
+ rx1035_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1027_pos = $P10."pos"()
+ rx1035_pos = $P10."pos"()
# rx pass
- rx1027_cur."!cursor_pass"(rx1027_pos, "infix:sym</>")
- rx1027_cur."!cursor_debug"("PASS ", "infix:sym</>", " at pos=", rx1027_pos)
- .return (rx1027_cur)
- rx1027_fail:
-.annotate "line", 417
- (rx1027_rep, rx1027_pos, $I10, $P10) = rx1027_cur."!mark_fail"(0)
- lt rx1027_pos, -1, rx1027_done
- eq rx1027_pos, -1, rx1027_fail
- jump $I10
- rx1027_done:
- rx1027_cur."!cursor_fail"()
- rx1027_cur."!cursor_debug"("FAIL ", "infix:sym</>")
- .return (rx1027_cur)
+ rx1035_cur."!cursor_pass"(rx1035_pos, "infix:sym</>")
+ rx1035_cur."!cursor_debug"("PASS ", "infix:sym</>", " at pos=", rx1035_pos)
+ .return (rx1035_cur)
+ rx1035_fail:
+.annotate "line", 422
+ (rx1035_rep, rx1035_pos, $I10, $P10) = rx1035_cur."!mark_fail"(0)
+ lt rx1035_pos, -1, rx1035_done
+ eq rx1035_pos, -1, rx1035_fail
+ jump $I10
+ rx1035_done:
+ rx1035_cur."!cursor_fail"()
+ rx1035_cur."!cursor_debug"("FAIL ", "infix:sym</>")
+ .return (rx1035_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>" :subid("260_1267204702.05125") :method
-.annotate "line", 417
- $P1029 = self."!PREFIX__!subrule"("O", "/")
- new $P1030, "ResizablePMCArray"
- push $P1030, $P1029
- .return ($P1030)
+.sub "!PREFIX__infix:sym</>" :subid("262_1272816833.94956") :method
+.annotate "line", 422
+ $P1037 = self."!PREFIX__!subrule"("O", "/")
+ new $P1038, "ResizablePMCArray"
+ push $P1038, $P1037
+ .return ($P1038)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>" :subid("261_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1034_tgt
- .local int rx1034_pos
- .local int rx1034_off
- .local int rx1034_eos
- .local int rx1034_rep
- .local pmc rx1034_cur
- (rx1034_cur, rx1034_pos, rx1034_tgt) = self."!cursor_start"()
- rx1034_cur."!cursor_debug"("START ", "infix:sym<%>")
- .lex unicode:"$\x{a2}", rx1034_cur
- .local pmc match
- .lex "$/", match
- length rx1034_eos, rx1034_tgt
- set rx1034_off, 0
- lt rx1034_pos, 2, rx1034_start
- sub rx1034_off, rx1034_pos, 1
- substr rx1034_tgt, rx1034_tgt, rx1034_off
- rx1034_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1038_done
- goto rxscan1038_scan
- rxscan1038_loop:
- ($P10) = rx1034_cur."from"()
- inc $P10
- set rx1034_pos, $P10
- ge rx1034_pos, rx1034_eos, rxscan1038_done
- rxscan1038_scan:
- set_addr $I10, rxscan1038_loop
- rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
- rxscan1038_done:
-.annotate "line", 479
+.sub "infix:sym<%>" :subid("263_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1042_tgt
+ .local int rx1042_pos
+ .local int rx1042_off
+ .local int rx1042_eos
+ .local int rx1042_rep
+ .local pmc rx1042_cur
+ (rx1042_cur, rx1042_pos, rx1042_tgt) = self."!cursor_start"()
+ rx1042_cur."!cursor_debug"("START ", "infix:sym<%>")
+ .lex unicode:"$\x{a2}", rx1042_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1042_eos, rx1042_tgt
+ set rx1042_off, 0
+ lt rx1042_pos, 2, rx1042_start
+ sub rx1042_off, rx1042_pos, 1
+ substr rx1042_tgt, rx1042_tgt, rx1042_off
+ rx1042_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1046_done
+ goto rxscan1046_scan
+ rxscan1046_loop:
+ ($P10) = rx1042_cur."from"()
+ inc $P10
+ set rx1042_pos, $P10
+ ge rx1042_pos, rx1042_eos, rxscan1046_done
+ rxscan1046_scan:
+ set_addr $I10, rxscan1046_loop
+ rx1042_cur."!mark_push"(0, rx1042_pos, $I10)
+ rxscan1046_done:
+.annotate "line", 484
# rx subcapture "sym"
- set_addr $I10, rxcap_1039_fail
- rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
+ set_addr $I10, rxcap_1047_fail
+ rx1042_cur."!mark_push"(0, rx1042_pos, $I10)
# rx literal "%"
- add $I11, rx1034_pos, 1
- gt $I11, rx1034_eos, rx1034_fail
- sub $I11, rx1034_pos, rx1034_off
- substr $S10, rx1034_tgt, $I11, 1
- ne $S10, "%", rx1034_fail
- add rx1034_pos, 1
- set_addr $I10, rxcap_1039_fail
- ($I12, $I11) = rx1034_cur."!mark_peek"($I10)
- rx1034_cur."!cursor_pos"($I11)
- ($P10) = rx1034_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1034_pos, "")
- rx1034_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1042_pos, 1
+ gt $I11, rx1042_eos, rx1042_fail
+ sub $I11, rx1042_pos, rx1042_off
+ substr $S10, rx1042_tgt, $I11, 1
+ ne $S10, "%", rx1042_fail
+ add rx1042_pos, 1
+ set_addr $I10, rxcap_1047_fail
+ ($I12, $I11) = rx1042_cur."!mark_peek"($I10)
+ rx1042_cur."!cursor_pos"($I11)
+ ($P10) = rx1042_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1042_pos, "")
+ rx1042_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1039_done
- rxcap_1039_fail:
- goto rx1034_fail
- rxcap_1039_done:
+ goto rxcap_1047_done
+ rxcap_1047_fail:
+ goto rx1042_fail
+ rxcap_1047_done:
# rx subrule "O" subtype=capture negate=
- rx1034_cur."!cursor_pos"(rx1034_pos)
- $P10 = rx1034_cur."O"("%multiplicative, :pirop<mod>")
- unless $P10, rx1034_fail
- rx1034_cur."!mark_push"(0, -1, 0, $P10)
+ rx1042_cur."!cursor_pos"(rx1042_pos)
+ $P10 = rx1042_cur."O"("%multiplicative, :pirop<mod>")
+ unless $P10, rx1042_fail
+ rx1042_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1034_pos = $P10."pos"()
+ rx1042_pos = $P10."pos"()
# rx pass
- rx1034_cur."!cursor_pass"(rx1034_pos, "infix:sym<%>")
- rx1034_cur."!cursor_debug"("PASS ", "infix:sym<%>", " at pos=", rx1034_pos)
- .return (rx1034_cur)
- rx1034_fail:
-.annotate "line", 417
- (rx1034_rep, rx1034_pos, $I10, $P10) = rx1034_cur."!mark_fail"(0)
- lt rx1034_pos, -1, rx1034_done
- eq rx1034_pos, -1, rx1034_fail
- jump $I10
- rx1034_done:
- rx1034_cur."!cursor_fail"()
- rx1034_cur."!cursor_debug"("FAIL ", "infix:sym<%>")
- .return (rx1034_cur)
+ rx1042_cur."!cursor_pass"(rx1042_pos, "infix:sym<%>")
+ rx1042_cur."!cursor_debug"("PASS ", "infix:sym<%>", " at pos=", rx1042_pos)
+ .return (rx1042_cur)
+ rx1042_fail:
+.annotate "line", 422
+ (rx1042_rep, rx1042_pos, $I10, $P10) = rx1042_cur."!mark_fail"(0)
+ lt rx1042_pos, -1, rx1042_done
+ eq rx1042_pos, -1, rx1042_fail
+ jump $I10
+ rx1042_done:
+ rx1042_cur."!cursor_fail"()
+ rx1042_cur."!cursor_debug"("FAIL ", "infix:sym<%>")
+ .return (rx1042_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>" :subid("262_1267204702.05125") :method
-.annotate "line", 417
- $P1036 = self."!PREFIX__!subrule"("O", "%")
- new $P1037, "ResizablePMCArray"
- push $P1037, $P1036
- .return ($P1037)
+.sub "!PREFIX__infix:sym<%>" :subid("264_1272816833.94956") :method
+.annotate "line", 422
+ $P1044 = self."!PREFIX__!subrule"("O", "%")
+ new $P1045, "ResizablePMCArray"
+ push $P1045, $P1044
+ .return ($P1045)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>" :subid("263_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1041_tgt
- .local int rx1041_pos
- .local int rx1041_off
- .local int rx1041_eos
- .local int rx1041_rep
- .local pmc rx1041_cur
- (rx1041_cur, rx1041_pos, rx1041_tgt) = self."!cursor_start"()
- rx1041_cur."!cursor_debug"("START ", "infix:sym<+>")
- .lex unicode:"$\x{a2}", rx1041_cur
- .local pmc match
- .lex "$/", match
- length rx1041_eos, rx1041_tgt
- set rx1041_off, 0
- lt rx1041_pos, 2, rx1041_start
- sub rx1041_off, rx1041_pos, 1
- substr rx1041_tgt, rx1041_tgt, rx1041_off
- rx1041_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1045_done
- goto rxscan1045_scan
- rxscan1045_loop:
- ($P10) = rx1041_cur."from"()
- inc $P10
- set rx1041_pos, $P10
- ge rx1041_pos, rx1041_eos, rxscan1045_done
- rxscan1045_scan:
- set_addr $I10, rxscan1045_loop
- rx1041_cur."!mark_push"(0, rx1041_pos, $I10)
- rxscan1045_done:
-.annotate "line", 481
+.sub "infix:sym<+>" :subid("265_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1049_tgt
+ .local int rx1049_pos
+ .local int rx1049_off
+ .local int rx1049_eos
+ .local int rx1049_rep
+ .local pmc rx1049_cur
+ (rx1049_cur, rx1049_pos, rx1049_tgt) = self."!cursor_start"()
+ rx1049_cur."!cursor_debug"("START ", "infix:sym<+>")
+ .lex unicode:"$\x{a2}", rx1049_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1049_eos, rx1049_tgt
+ set rx1049_off, 0
+ lt rx1049_pos, 2, rx1049_start
+ sub rx1049_off, rx1049_pos, 1
+ substr rx1049_tgt, rx1049_tgt, rx1049_off
+ rx1049_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1053_done
+ goto rxscan1053_scan
+ rxscan1053_loop:
+ ($P10) = rx1049_cur."from"()
+ inc $P10
+ set rx1049_pos, $P10
+ ge rx1049_pos, rx1049_eos, rxscan1053_done
+ rxscan1053_scan:
+ set_addr $I10, rxscan1053_loop
+ rx1049_cur."!mark_push"(0, rx1049_pos, $I10)
+ rxscan1053_done:
+.annotate "line", 486
# rx subcapture "sym"
- set_addr $I10, rxcap_1046_fail
- rx1041_cur."!mark_push"(0, rx1041_pos, $I10)
+ set_addr $I10, rxcap_1054_fail
+ rx1049_cur."!mark_push"(0, rx1049_pos, $I10)
# rx literal "+"
- add $I11, rx1041_pos, 1
- gt $I11, rx1041_eos, rx1041_fail
- sub $I11, rx1041_pos, rx1041_off
- substr $S10, rx1041_tgt, $I11, 1
- ne $S10, "+", rx1041_fail
- add rx1041_pos, 1
- set_addr $I10, rxcap_1046_fail
- ($I12, $I11) = rx1041_cur."!mark_peek"($I10)
- rx1041_cur."!cursor_pos"($I11)
- ($P10) = rx1041_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1041_pos, "")
- rx1041_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1049_pos, 1
+ gt $I11, rx1049_eos, rx1049_fail
+ sub $I11, rx1049_pos, rx1049_off
+ substr $S10, rx1049_tgt, $I11, 1
+ ne $S10, "+", rx1049_fail
+ add rx1049_pos, 1
+ set_addr $I10, rxcap_1054_fail
+ ($I12, $I11) = rx1049_cur."!mark_peek"($I10)
+ rx1049_cur."!cursor_pos"($I11)
+ ($P10) = rx1049_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1049_pos, "")
+ rx1049_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1046_done
- rxcap_1046_fail:
- goto rx1041_fail
- rxcap_1046_done:
+ goto rxcap_1054_done
+ rxcap_1054_fail:
+ goto rx1049_fail
+ rxcap_1054_done:
# rx subrule "O" subtype=capture negate=
- rx1041_cur."!cursor_pos"(rx1041_pos)
- $P10 = rx1041_cur."O"("%additive, :pirop<add>")
- unless $P10, rx1041_fail
- rx1041_cur."!mark_push"(0, -1, 0, $P10)
+ rx1049_cur."!cursor_pos"(rx1049_pos)
+ $P10 = rx1049_cur."O"("%additive, :pirop<add>")
+ unless $P10, rx1049_fail
+ rx1049_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1041_pos = $P10."pos"()
+ rx1049_pos = $P10."pos"()
# rx pass
- rx1041_cur."!cursor_pass"(rx1041_pos, "infix:sym<+>")
- rx1041_cur."!cursor_debug"("PASS ", "infix:sym<+>", " at pos=", rx1041_pos)
- .return (rx1041_cur)
- rx1041_fail:
-.annotate "line", 417
- (rx1041_rep, rx1041_pos, $I10, $P10) = rx1041_cur."!mark_fail"(0)
- lt rx1041_pos, -1, rx1041_done
- eq rx1041_pos, -1, rx1041_fail
- jump $I10
- rx1041_done:
- rx1041_cur."!cursor_fail"()
- rx1041_cur."!cursor_debug"("FAIL ", "infix:sym<+>")
- .return (rx1041_cur)
+ rx1049_cur."!cursor_pass"(rx1049_pos, "infix:sym<+>")
+ rx1049_cur."!cursor_debug"("PASS ", "infix:sym<+>", " at pos=", rx1049_pos)
+ .return (rx1049_cur)
+ rx1049_fail:
+.annotate "line", 422
+ (rx1049_rep, rx1049_pos, $I10, $P10) = rx1049_cur."!mark_fail"(0)
+ lt rx1049_pos, -1, rx1049_done
+ eq rx1049_pos, -1, rx1049_fail
+ jump $I10
+ rx1049_done:
+ rx1049_cur."!cursor_fail"()
+ rx1049_cur."!cursor_debug"("FAIL ", "infix:sym<+>")
+ .return (rx1049_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>" :subid("264_1267204702.05125") :method
-.annotate "line", 417
- $P1043 = self."!PREFIX__!subrule"("O", "+")
- new $P1044, "ResizablePMCArray"
- push $P1044, $P1043
- .return ($P1044)
+.sub "!PREFIX__infix:sym<+>" :subid("266_1272816833.94956") :method
+.annotate "line", 422
+ $P1051 = self."!PREFIX__!subrule"("O", "+")
+ new $P1052, "ResizablePMCArray"
+ push $P1052, $P1051
+ .return ($P1052)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<->" :subid("265_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1048_tgt
- .local int rx1048_pos
- .local int rx1048_off
- .local int rx1048_eos
- .local int rx1048_rep
- .local pmc rx1048_cur
- (rx1048_cur, rx1048_pos, rx1048_tgt) = self."!cursor_start"()
- rx1048_cur."!cursor_debug"("START ", "infix:sym<->")
- .lex unicode:"$\x{a2}", rx1048_cur
- .local pmc match
- .lex "$/", match
- length rx1048_eos, rx1048_tgt
- set rx1048_off, 0
- lt rx1048_pos, 2, rx1048_start
- sub rx1048_off, rx1048_pos, 1
- substr rx1048_tgt, rx1048_tgt, rx1048_off
- rx1048_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1052_done
- goto rxscan1052_scan
- rxscan1052_loop:
- ($P10) = rx1048_cur."from"()
- inc $P10
- set rx1048_pos, $P10
- ge rx1048_pos, rx1048_eos, rxscan1052_done
- rxscan1052_scan:
- set_addr $I10, rxscan1052_loop
- rx1048_cur."!mark_push"(0, rx1048_pos, $I10)
- rxscan1052_done:
-.annotate "line", 482
+.sub "infix:sym<->" :subid("267_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1056_tgt
+ .local int rx1056_pos
+ .local int rx1056_off
+ .local int rx1056_eos
+ .local int rx1056_rep
+ .local pmc rx1056_cur
+ (rx1056_cur, rx1056_pos, rx1056_tgt) = self."!cursor_start"()
+ rx1056_cur."!cursor_debug"("START ", "infix:sym<->")
+ .lex unicode:"$\x{a2}", rx1056_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1056_eos, rx1056_tgt
+ set rx1056_off, 0
+ lt rx1056_pos, 2, rx1056_start
+ sub rx1056_off, rx1056_pos, 1
+ substr rx1056_tgt, rx1056_tgt, rx1056_off
+ rx1056_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1060_done
+ goto rxscan1060_scan
+ rxscan1060_loop:
+ ($P10) = rx1056_cur."from"()
+ inc $P10
+ set rx1056_pos, $P10
+ ge rx1056_pos, rx1056_eos, rxscan1060_done
+ rxscan1060_scan:
+ set_addr $I10, rxscan1060_loop
+ rx1056_cur."!mark_push"(0, rx1056_pos, $I10)
+ rxscan1060_done:
+.annotate "line", 487
# rx subcapture "sym"
- set_addr $I10, rxcap_1053_fail
- rx1048_cur."!mark_push"(0, rx1048_pos, $I10)
+ set_addr $I10, rxcap_1061_fail
+ rx1056_cur."!mark_push"(0, rx1056_pos, $I10)
# rx literal "-"
- add $I11, rx1048_pos, 1
- gt $I11, rx1048_eos, rx1048_fail
- sub $I11, rx1048_pos, rx1048_off
- substr $S10, rx1048_tgt, $I11, 1
- ne $S10, "-", rx1048_fail
- add rx1048_pos, 1
- set_addr $I10, rxcap_1053_fail
- ($I12, $I11) = rx1048_cur."!mark_peek"($I10)
- rx1048_cur."!cursor_pos"($I11)
- ($P10) = rx1048_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1048_pos, "")
- rx1048_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1056_pos, 1
+ gt $I11, rx1056_eos, rx1056_fail
+ sub $I11, rx1056_pos, rx1056_off
+ substr $S10, rx1056_tgt, $I11, 1
+ ne $S10, "-", rx1056_fail
+ add rx1056_pos, 1
+ set_addr $I10, rxcap_1061_fail
+ ($I12, $I11) = rx1056_cur."!mark_peek"($I10)
+ rx1056_cur."!cursor_pos"($I11)
+ ($P10) = rx1056_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1056_pos, "")
+ rx1056_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1053_done
- rxcap_1053_fail:
- goto rx1048_fail
- rxcap_1053_done:
+ goto rxcap_1061_done
+ rxcap_1061_fail:
+ goto rx1056_fail
+ rxcap_1061_done:
# rx subrule "O" subtype=capture negate=
- rx1048_cur."!cursor_pos"(rx1048_pos)
- $P10 = rx1048_cur."O"("%additive, :pirop<sub>")
- unless $P10, rx1048_fail
- rx1048_cur."!mark_push"(0, -1, 0, $P10)
+ rx1056_cur."!cursor_pos"(rx1056_pos)
+ $P10 = rx1056_cur."O"("%additive, :pirop<sub>")
+ unless $P10, rx1056_fail
+ rx1056_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1048_pos = $P10."pos"()
+ rx1056_pos = $P10."pos"()
# rx pass
- rx1048_cur."!cursor_pass"(rx1048_pos, "infix:sym<->")
- rx1048_cur."!cursor_debug"("PASS ", "infix:sym<->", " at pos=", rx1048_pos)
- .return (rx1048_cur)
- rx1048_fail:
-.annotate "line", 417
- (rx1048_rep, rx1048_pos, $I10, $P10) = rx1048_cur."!mark_fail"(0)
- lt rx1048_pos, -1, rx1048_done
- eq rx1048_pos, -1, rx1048_fail
+ rx1056_cur."!cursor_pass"(rx1056_pos, "infix:sym<->")
+ rx1056_cur."!cursor_debug"("PASS ", "infix:sym<->", " at pos=", rx1056_pos)
+ .return (rx1056_cur)
+ rx1056_fail:
+.annotate "line", 422
+ (rx1056_rep, rx1056_pos, $I10, $P10) = rx1056_cur."!mark_fail"(0)
+ lt rx1056_pos, -1, rx1056_done
+ eq rx1056_pos, -1, rx1056_fail
jump $I10
- rx1048_done:
- rx1048_cur."!cursor_fail"()
- rx1048_cur."!cursor_debug"("FAIL ", "infix:sym<->")
- .return (rx1048_cur)
+ rx1056_done:
+ rx1056_cur."!cursor_fail"()
+ rx1056_cur."!cursor_debug"("FAIL ", "infix:sym<->")
+ .return (rx1056_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->" :subid("266_1267204702.05125") :method
-.annotate "line", 417
- $P1050 = self."!PREFIX__!subrule"("O", "-")
- new $P1051, "ResizablePMCArray"
- push $P1051, $P1050
- .return ($P1051)
+.sub "!PREFIX__infix:sym<->" :subid("268_1272816833.94956") :method
+.annotate "line", 422
+ $P1058 = self."!PREFIX__!subrule"("O", "-")
+ new $P1059, "ResizablePMCArray"
+ push $P1059, $P1058
+ .return ($P1059)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>" :subid("267_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1055_tgt
- .local int rx1055_pos
- .local int rx1055_off
- .local int rx1055_eos
- .local int rx1055_rep
- .local pmc rx1055_cur
- (rx1055_cur, rx1055_pos, rx1055_tgt) = self."!cursor_start"()
- rx1055_cur."!cursor_debug"("START ", "infix:sym<~>")
- .lex unicode:"$\x{a2}", rx1055_cur
- .local pmc match
- .lex "$/", match
- length rx1055_eos, rx1055_tgt
- set rx1055_off, 0
- lt rx1055_pos, 2, rx1055_start
- sub rx1055_off, rx1055_pos, 1
- substr rx1055_tgt, rx1055_tgt, rx1055_off
- rx1055_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1059_done
- goto rxscan1059_scan
- rxscan1059_loop:
- ($P10) = rx1055_cur."from"()
- inc $P10
- set rx1055_pos, $P10
- ge rx1055_pos, rx1055_eos, rxscan1059_done
- rxscan1059_scan:
- set_addr $I10, rxscan1059_loop
- rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
- rxscan1059_done:
-.annotate "line", 484
+.sub "infix:sym<~>" :subid("269_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1063_tgt
+ .local int rx1063_pos
+ .local int rx1063_off
+ .local int rx1063_eos
+ .local int rx1063_rep
+ .local pmc rx1063_cur
+ (rx1063_cur, rx1063_pos, rx1063_tgt) = self."!cursor_start"()
+ rx1063_cur."!cursor_debug"("START ", "infix:sym<~>")
+ .lex unicode:"$\x{a2}", rx1063_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1063_eos, rx1063_tgt
+ set rx1063_off, 0
+ lt rx1063_pos, 2, rx1063_start
+ sub rx1063_off, rx1063_pos, 1
+ substr rx1063_tgt, rx1063_tgt, rx1063_off
+ rx1063_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1067_done
+ goto rxscan1067_scan
+ rxscan1067_loop:
+ ($P10) = rx1063_cur."from"()
+ inc $P10
+ set rx1063_pos, $P10
+ ge rx1063_pos, rx1063_eos, rxscan1067_done
+ rxscan1067_scan:
+ set_addr $I10, rxscan1067_loop
+ rx1063_cur."!mark_push"(0, rx1063_pos, $I10)
+ rxscan1067_done:
+.annotate "line", 489
# rx subcapture "sym"
- set_addr $I10, rxcap_1060_fail
- rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
+ set_addr $I10, rxcap_1068_fail
+ rx1063_cur."!mark_push"(0, rx1063_pos, $I10)
# rx literal "~"
- add $I11, rx1055_pos, 1
- gt $I11, rx1055_eos, rx1055_fail
- sub $I11, rx1055_pos, rx1055_off
- substr $S10, rx1055_tgt, $I11, 1
- ne $S10, "~", rx1055_fail
- add rx1055_pos, 1
- set_addr $I10, rxcap_1060_fail
- ($I12, $I11) = rx1055_cur."!mark_peek"($I10)
- rx1055_cur."!cursor_pos"($I11)
- ($P10) = rx1055_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1055_pos, "")
- rx1055_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1063_pos, 1
+ gt $I11, rx1063_eos, rx1063_fail
+ sub $I11, rx1063_pos, rx1063_off
+ substr $S10, rx1063_tgt, $I11, 1
+ ne $S10, "~", rx1063_fail
+ add rx1063_pos, 1
+ set_addr $I10, rxcap_1068_fail
+ ($I12, $I11) = rx1063_cur."!mark_peek"($I10)
+ rx1063_cur."!cursor_pos"($I11)
+ ($P10) = rx1063_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1063_pos, "")
+ rx1063_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1060_done
- rxcap_1060_fail:
- goto rx1055_fail
- rxcap_1060_done:
+ goto rxcap_1068_done
+ rxcap_1068_fail:
+ goto rx1063_fail
+ rxcap_1068_done:
# rx subrule "O" subtype=capture negate=
- rx1055_cur."!cursor_pos"(rx1055_pos)
- $P10 = rx1055_cur."O"("%concatenation , :pirop<concat>")
- unless $P10, rx1055_fail
- rx1055_cur."!mark_push"(0, -1, 0, $P10)
+ rx1063_cur."!cursor_pos"(rx1063_pos)
+ $P10 = rx1063_cur."O"("%concatenation , :pirop<concat>")
+ unless $P10, rx1063_fail
+ rx1063_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1055_pos = $P10."pos"()
+ rx1063_pos = $P10."pos"()
# rx pass
- rx1055_cur."!cursor_pass"(rx1055_pos, "infix:sym<~>")
- rx1055_cur."!cursor_debug"("PASS ", "infix:sym<~>", " at pos=", rx1055_pos)
- .return (rx1055_cur)
- rx1055_fail:
-.annotate "line", 417
- (rx1055_rep, rx1055_pos, $I10, $P10) = rx1055_cur."!mark_fail"(0)
- lt rx1055_pos, -1, rx1055_done
- eq rx1055_pos, -1, rx1055_fail
- jump $I10
- rx1055_done:
- rx1055_cur."!cursor_fail"()
- rx1055_cur."!cursor_debug"("FAIL ", "infix:sym<~>")
- .return (rx1055_cur)
+ rx1063_cur."!cursor_pass"(rx1063_pos, "infix:sym<~>")
+ rx1063_cur."!cursor_debug"("PASS ", "infix:sym<~>", " at pos=", rx1063_pos)
+ .return (rx1063_cur)
+ rx1063_fail:
+.annotate "line", 422
+ (rx1063_rep, rx1063_pos, $I10, $P10) = rx1063_cur."!mark_fail"(0)
+ lt rx1063_pos, -1, rx1063_done
+ eq rx1063_pos, -1, rx1063_fail
+ jump $I10
+ rx1063_done:
+ rx1063_cur."!cursor_fail"()
+ rx1063_cur."!cursor_debug"("FAIL ", "infix:sym<~>")
+ .return (rx1063_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>" :subid("268_1267204702.05125") :method
-.annotate "line", 417
- $P1057 = self."!PREFIX__!subrule"("O", "~")
- new $P1058, "ResizablePMCArray"
- push $P1058, $P1057
- .return ($P1058)
+.sub "!PREFIX__infix:sym<~>" :subid("270_1272816833.94956") :method
+.annotate "line", 422
+ $P1065 = self."!PREFIX__!subrule"("O", "~")
+ new $P1066, "ResizablePMCArray"
+ push $P1066, $P1065
+ .return ($P1066)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>" :subid("269_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1062_tgt
- .local int rx1062_pos
- .local int rx1062_off
- .local int rx1062_eos
- .local int rx1062_rep
- .local pmc rx1062_cur
- (rx1062_cur, rx1062_pos, rx1062_tgt) = self."!cursor_start"()
- rx1062_cur."!cursor_debug"("START ", "infix:sym<==>")
- .lex unicode:"$\x{a2}", rx1062_cur
- .local pmc match
- .lex "$/", match
- length rx1062_eos, rx1062_tgt
- set rx1062_off, 0
- lt rx1062_pos, 2, rx1062_start
- sub rx1062_off, rx1062_pos, 1
- substr rx1062_tgt, rx1062_tgt, rx1062_off
- rx1062_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1066_done
- goto rxscan1066_scan
- rxscan1066_loop:
- ($P10) = rx1062_cur."from"()
- inc $P10
- set rx1062_pos, $P10
- ge rx1062_pos, rx1062_eos, rxscan1066_done
- rxscan1066_scan:
- set_addr $I10, rxscan1066_loop
- rx1062_cur."!mark_push"(0, rx1062_pos, $I10)
- rxscan1066_done:
-.annotate "line", 486
+.sub "infix:sym<==>" :subid("271_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1070_tgt
+ .local int rx1070_pos
+ .local int rx1070_off
+ .local int rx1070_eos
+ .local int rx1070_rep
+ .local pmc rx1070_cur
+ (rx1070_cur, rx1070_pos, rx1070_tgt) = self."!cursor_start"()
+ rx1070_cur."!cursor_debug"("START ", "infix:sym<==>")
+ .lex unicode:"$\x{a2}", rx1070_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1070_eos, rx1070_tgt
+ set rx1070_off, 0
+ lt rx1070_pos, 2, rx1070_start
+ sub rx1070_off, rx1070_pos, 1
+ substr rx1070_tgt, rx1070_tgt, rx1070_off
+ rx1070_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1074_done
+ goto rxscan1074_scan
+ rxscan1074_loop:
+ ($P10) = rx1070_cur."from"()
+ inc $P10
+ set rx1070_pos, $P10
+ ge rx1070_pos, rx1070_eos, rxscan1074_done
+ rxscan1074_scan:
+ set_addr $I10, rxscan1074_loop
+ rx1070_cur."!mark_push"(0, rx1070_pos, $I10)
+ rxscan1074_done:
+.annotate "line", 491
# rx subcapture "sym"
- set_addr $I10, rxcap_1067_fail
- rx1062_cur."!mark_push"(0, rx1062_pos, $I10)
+ set_addr $I10, rxcap_1075_fail
+ rx1070_cur."!mark_push"(0, rx1070_pos, $I10)
# rx literal "=="
- add $I11, rx1062_pos, 2
- gt $I11, rx1062_eos, rx1062_fail
- sub $I11, rx1062_pos, rx1062_off
- substr $S10, rx1062_tgt, $I11, 2
- ne $S10, "==", rx1062_fail
- add rx1062_pos, 2
- set_addr $I10, rxcap_1067_fail
- ($I12, $I11) = rx1062_cur."!mark_peek"($I10)
- rx1062_cur."!cursor_pos"($I11)
- ($P10) = rx1062_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1062_pos, "")
- rx1062_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1070_pos, 2
+ gt $I11, rx1070_eos, rx1070_fail
+ sub $I11, rx1070_pos, rx1070_off
+ substr $S10, rx1070_tgt, $I11, 2
+ ne $S10, "==", rx1070_fail
+ add rx1070_pos, 2
+ set_addr $I10, rxcap_1075_fail
+ ($I12, $I11) = rx1070_cur."!mark_peek"($I10)
+ rx1070_cur."!cursor_pos"($I11)
+ ($P10) = rx1070_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1070_pos, "")
+ rx1070_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1067_done
- rxcap_1067_fail:
- goto rx1062_fail
- rxcap_1067_done:
+ goto rxcap_1075_done
+ rxcap_1075_fail:
+ goto rx1070_fail
+ rxcap_1075_done:
# rx subrule "O" subtype=capture negate=
- rx1062_cur."!cursor_pos"(rx1062_pos)
- $P10 = rx1062_cur."O"("%relational, :pirop<iseq INn>")
- unless $P10, rx1062_fail
- rx1062_cur."!mark_push"(0, -1, 0, $P10)
+ rx1070_cur."!cursor_pos"(rx1070_pos)
+ $P10 = rx1070_cur."O"("%relational, :pirop<iseq INn>")
+ unless $P10, rx1070_fail
+ rx1070_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1062_pos = $P10."pos"()
+ rx1070_pos = $P10."pos"()
# rx pass
- rx1062_cur."!cursor_pass"(rx1062_pos, "infix:sym<==>")
- rx1062_cur."!cursor_debug"("PASS ", "infix:sym<==>", " at pos=", rx1062_pos)
- .return (rx1062_cur)
- rx1062_fail:
-.annotate "line", 417
- (rx1062_rep, rx1062_pos, $I10, $P10) = rx1062_cur."!mark_fail"(0)
- lt rx1062_pos, -1, rx1062_done
- eq rx1062_pos, -1, rx1062_fail
- jump $I10
- rx1062_done:
- rx1062_cur."!cursor_fail"()
- rx1062_cur."!cursor_debug"("FAIL ", "infix:sym<==>")
- .return (rx1062_cur)
+ rx1070_cur."!cursor_pass"(rx1070_pos, "infix:sym<==>")
+ rx1070_cur."!cursor_debug"("PASS ", "infix:sym<==>", " at pos=", rx1070_pos)
+ .return (rx1070_cur)
+ rx1070_fail:
+.annotate "line", 422
+ (rx1070_rep, rx1070_pos, $I10, $P10) = rx1070_cur."!mark_fail"(0)
+ lt rx1070_pos, -1, rx1070_done
+ eq rx1070_pos, -1, rx1070_fail
+ jump $I10
+ rx1070_done:
+ rx1070_cur."!cursor_fail"()
+ rx1070_cur."!cursor_debug"("FAIL ", "infix:sym<==>")
+ .return (rx1070_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>" :subid("270_1267204702.05125") :method
-.annotate "line", 417
- $P1064 = self."!PREFIX__!subrule"("O", "==")
- new $P1065, "ResizablePMCArray"
- push $P1065, $P1064
- .return ($P1065)
+.sub "!PREFIX__infix:sym<==>" :subid("272_1272816833.94956") :method
+.annotate "line", 422
+ $P1072 = self."!PREFIX__!subrule"("O", "==")
+ new $P1073, "ResizablePMCArray"
+ push $P1073, $P1072
+ .return ($P1073)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>" :subid("271_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1069_tgt
- .local int rx1069_pos
- .local int rx1069_off
- .local int rx1069_eos
- .local int rx1069_rep
- .local pmc rx1069_cur
- (rx1069_cur, rx1069_pos, rx1069_tgt) = self."!cursor_start"()
- rx1069_cur."!cursor_debug"("START ", "infix:sym<!=>")
- .lex unicode:"$\x{a2}", rx1069_cur
- .local pmc match
- .lex "$/", match
- length rx1069_eos, rx1069_tgt
- set rx1069_off, 0
- lt rx1069_pos, 2, rx1069_start
- sub rx1069_off, rx1069_pos, 1
- substr rx1069_tgt, rx1069_tgt, rx1069_off
- rx1069_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1073_done
- goto rxscan1073_scan
- rxscan1073_loop:
- ($P10) = rx1069_cur."from"()
- inc $P10
- set rx1069_pos, $P10
- ge rx1069_pos, rx1069_eos, rxscan1073_done
- rxscan1073_scan:
- set_addr $I10, rxscan1073_loop
- rx1069_cur."!mark_push"(0, rx1069_pos, $I10)
- rxscan1073_done:
-.annotate "line", 487
+.sub "infix:sym<!=>" :subid("273_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1077_tgt
+ .local int rx1077_pos
+ .local int rx1077_off
+ .local int rx1077_eos
+ .local int rx1077_rep
+ .local pmc rx1077_cur
+ (rx1077_cur, rx1077_pos, rx1077_tgt) = self."!cursor_start"()
+ rx1077_cur."!cursor_debug"("START ", "infix:sym<!=>")
+ .lex unicode:"$\x{a2}", rx1077_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1077_eos, rx1077_tgt
+ set rx1077_off, 0
+ lt rx1077_pos, 2, rx1077_start
+ sub rx1077_off, rx1077_pos, 1
+ substr rx1077_tgt, rx1077_tgt, rx1077_off
+ rx1077_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1081_done
+ goto rxscan1081_scan
+ rxscan1081_loop:
+ ($P10) = rx1077_cur."from"()
+ inc $P10
+ set rx1077_pos, $P10
+ ge rx1077_pos, rx1077_eos, rxscan1081_done
+ rxscan1081_scan:
+ set_addr $I10, rxscan1081_loop
+ rx1077_cur."!mark_push"(0, rx1077_pos, $I10)
+ rxscan1081_done:
+.annotate "line", 492
# rx subcapture "sym"
- set_addr $I10, rxcap_1074_fail
- rx1069_cur."!mark_push"(0, rx1069_pos, $I10)
+ set_addr $I10, rxcap_1082_fail
+ rx1077_cur."!mark_push"(0, rx1077_pos, $I10)
# rx literal "!="
- add $I11, rx1069_pos, 2
- gt $I11, rx1069_eos, rx1069_fail
- sub $I11, rx1069_pos, rx1069_off
- substr $S10, rx1069_tgt, $I11, 2
- ne $S10, "!=", rx1069_fail
- add rx1069_pos, 2
- set_addr $I10, rxcap_1074_fail
- ($I12, $I11) = rx1069_cur."!mark_peek"($I10)
- rx1069_cur."!cursor_pos"($I11)
- ($P10) = rx1069_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1069_pos, "")
- rx1069_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1077_pos, 2
+ gt $I11, rx1077_eos, rx1077_fail
+ sub $I11, rx1077_pos, rx1077_off
+ substr $S10, rx1077_tgt, $I11, 2
+ ne $S10, "!=", rx1077_fail
+ add rx1077_pos, 2
+ set_addr $I10, rxcap_1082_fail
+ ($I12, $I11) = rx1077_cur."!mark_peek"($I10)
+ rx1077_cur."!cursor_pos"($I11)
+ ($P10) = rx1077_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1077_pos, "")
+ rx1077_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1074_done
- rxcap_1074_fail:
- goto rx1069_fail
- rxcap_1074_done:
+ goto rxcap_1082_done
+ rxcap_1082_fail:
+ goto rx1077_fail
+ rxcap_1082_done:
# rx subrule "O" subtype=capture negate=
- rx1069_cur."!cursor_pos"(rx1069_pos)
- $P10 = rx1069_cur."O"("%relational, :pirop<isne INn>")
- unless $P10, rx1069_fail
- rx1069_cur."!mark_push"(0, -1, 0, $P10)
+ rx1077_cur."!cursor_pos"(rx1077_pos)
+ $P10 = rx1077_cur."O"("%relational, :pirop<isne INn>")
+ unless $P10, rx1077_fail
+ rx1077_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1069_pos = $P10."pos"()
+ rx1077_pos = $P10."pos"()
# rx pass
- rx1069_cur."!cursor_pass"(rx1069_pos, "infix:sym<!=>")
- rx1069_cur."!cursor_debug"("PASS ", "infix:sym<!=>", " at pos=", rx1069_pos)
- .return (rx1069_cur)
- rx1069_fail:
-.annotate "line", 417
- (rx1069_rep, rx1069_pos, $I10, $P10) = rx1069_cur."!mark_fail"(0)
- lt rx1069_pos, -1, rx1069_done
- eq rx1069_pos, -1, rx1069_fail
- jump $I10
- rx1069_done:
- rx1069_cur."!cursor_fail"()
- rx1069_cur."!cursor_debug"("FAIL ", "infix:sym<!=>")
- .return (rx1069_cur)
+ rx1077_cur."!cursor_pass"(rx1077_pos, "infix:sym<!=>")
+ rx1077_cur."!cursor_debug"("PASS ", "infix:sym<!=>", " at pos=", rx1077_pos)
+ .return (rx1077_cur)
+ rx1077_fail:
+.annotate "line", 422
+ (rx1077_rep, rx1077_pos, $I10, $P10) = rx1077_cur."!mark_fail"(0)
+ lt rx1077_pos, -1, rx1077_done
+ eq rx1077_pos, -1, rx1077_fail
+ jump $I10
+ rx1077_done:
+ rx1077_cur."!cursor_fail"()
+ rx1077_cur."!cursor_debug"("FAIL ", "infix:sym<!=>")
+ .return (rx1077_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>" :subid("272_1267204702.05125") :method
-.annotate "line", 417
- $P1071 = self."!PREFIX__!subrule"("O", "!=")
- new $P1072, "ResizablePMCArray"
- push $P1072, $P1071
- .return ($P1072)
+.sub "!PREFIX__infix:sym<!=>" :subid("274_1272816833.94956") :method
+.annotate "line", 422
+ $P1079 = self."!PREFIX__!subrule"("O", "!=")
+ new $P1080, "ResizablePMCArray"
+ push $P1080, $P1079
+ .return ($P1080)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>" :subid("273_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1076_tgt
- .local int rx1076_pos
- .local int rx1076_off
- .local int rx1076_eos
- .local int rx1076_rep
- .local pmc rx1076_cur
- (rx1076_cur, rx1076_pos, rx1076_tgt) = self."!cursor_start"()
- rx1076_cur."!cursor_debug"("START ", "infix:sym<<=>")
- .lex unicode:"$\x{a2}", rx1076_cur
- .local pmc match
- .lex "$/", match
- length rx1076_eos, rx1076_tgt
- set rx1076_off, 0
- lt rx1076_pos, 2, rx1076_start
- sub rx1076_off, rx1076_pos, 1
- substr rx1076_tgt, rx1076_tgt, rx1076_off
- rx1076_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1080_done
- goto rxscan1080_scan
- rxscan1080_loop:
- ($P10) = rx1076_cur."from"()
- inc $P10
- set rx1076_pos, $P10
- ge rx1076_pos, rx1076_eos, rxscan1080_done
- rxscan1080_scan:
- set_addr $I10, rxscan1080_loop
- rx1076_cur."!mark_push"(0, rx1076_pos, $I10)
- rxscan1080_done:
-.annotate "line", 488
+.sub "infix:sym<<=>" :subid("275_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1084_tgt
+ .local int rx1084_pos
+ .local int rx1084_off
+ .local int rx1084_eos
+ .local int rx1084_rep
+ .local pmc rx1084_cur
+ (rx1084_cur, rx1084_pos, rx1084_tgt) = self."!cursor_start"()
+ rx1084_cur."!cursor_debug"("START ", "infix:sym<<=>")
+ .lex unicode:"$\x{a2}", rx1084_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1084_eos, rx1084_tgt
+ set rx1084_off, 0
+ lt rx1084_pos, 2, rx1084_start
+ sub rx1084_off, rx1084_pos, 1
+ substr rx1084_tgt, rx1084_tgt, rx1084_off
+ rx1084_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1088_done
+ goto rxscan1088_scan
+ rxscan1088_loop:
+ ($P10) = rx1084_cur."from"()
+ inc $P10
+ set rx1084_pos, $P10
+ ge rx1084_pos, rx1084_eos, rxscan1088_done
+ rxscan1088_scan:
+ set_addr $I10, rxscan1088_loop
+ rx1084_cur."!mark_push"(0, rx1084_pos, $I10)
+ rxscan1088_done:
+.annotate "line", 493
# rx subcapture "sym"
- set_addr $I10, rxcap_1081_fail
- rx1076_cur."!mark_push"(0, rx1076_pos, $I10)
+ set_addr $I10, rxcap_1089_fail
+ rx1084_cur."!mark_push"(0, rx1084_pos, $I10)
# rx literal "<="
- add $I11, rx1076_pos, 2
- gt $I11, rx1076_eos, rx1076_fail
- sub $I11, rx1076_pos, rx1076_off
- substr $S10, rx1076_tgt, $I11, 2
- ne $S10, "<=", rx1076_fail
- add rx1076_pos, 2
- set_addr $I10, rxcap_1081_fail
- ($I12, $I11) = rx1076_cur."!mark_peek"($I10)
- rx1076_cur."!cursor_pos"($I11)
- ($P10) = rx1076_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1076_pos, "")
- rx1076_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1084_pos, 2
+ gt $I11, rx1084_eos, rx1084_fail
+ sub $I11, rx1084_pos, rx1084_off
+ substr $S10, rx1084_tgt, $I11, 2
+ ne $S10, "<=", rx1084_fail
+ add rx1084_pos, 2
+ set_addr $I10, rxcap_1089_fail
+ ($I12, $I11) = rx1084_cur."!mark_peek"($I10)
+ rx1084_cur."!cursor_pos"($I11)
+ ($P10) = rx1084_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1084_pos, "")
+ rx1084_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1081_done
- rxcap_1081_fail:
- goto rx1076_fail
- rxcap_1081_done:
+ goto rxcap_1089_done
+ rxcap_1089_fail:
+ goto rx1084_fail
+ rxcap_1089_done:
# rx subrule "O" subtype=capture negate=
- rx1076_cur."!cursor_pos"(rx1076_pos)
- $P10 = rx1076_cur."O"("%relational, :pirop<isle INn>")
- unless $P10, rx1076_fail
- rx1076_cur."!mark_push"(0, -1, 0, $P10)
+ rx1084_cur."!cursor_pos"(rx1084_pos)
+ $P10 = rx1084_cur."O"("%relational, :pirop<isle INn>")
+ unless $P10, rx1084_fail
+ rx1084_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1076_pos = $P10."pos"()
+ rx1084_pos = $P10."pos"()
# rx pass
- rx1076_cur."!cursor_pass"(rx1076_pos, "infix:sym<<=>")
- rx1076_cur."!cursor_debug"("PASS ", "infix:sym<<=>", " at pos=", rx1076_pos)
- .return (rx1076_cur)
- rx1076_fail:
-.annotate "line", 417
- (rx1076_rep, rx1076_pos, $I10, $P10) = rx1076_cur."!mark_fail"(0)
- lt rx1076_pos, -1, rx1076_done
- eq rx1076_pos, -1, rx1076_fail
- jump $I10
- rx1076_done:
- rx1076_cur."!cursor_fail"()
- rx1076_cur."!cursor_debug"("FAIL ", "infix:sym<<=>")
- .return (rx1076_cur)
+ rx1084_cur."!cursor_pass"(rx1084_pos, "infix:sym<<=>")
+ rx1084_cur."!cursor_debug"("PASS ", "infix:sym<<=>", " at pos=", rx1084_pos)
+ .return (rx1084_cur)
+ rx1084_fail:
+.annotate "line", 422
+ (rx1084_rep, rx1084_pos, $I10, $P10) = rx1084_cur."!mark_fail"(0)
+ lt rx1084_pos, -1, rx1084_done
+ eq rx1084_pos, -1, rx1084_fail
+ jump $I10
+ rx1084_done:
+ rx1084_cur."!cursor_fail"()
+ rx1084_cur."!cursor_debug"("FAIL ", "infix:sym<<=>")
+ .return (rx1084_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>" :subid("274_1267204702.05125") :method
-.annotate "line", 417
- $P1078 = self."!PREFIX__!subrule"("O", "<=")
- new $P1079, "ResizablePMCArray"
- push $P1079, $P1078
- .return ($P1079)
+.sub "!PREFIX__infix:sym<<=>" :subid("276_1272816833.94956") :method
+.annotate "line", 422
+ $P1086 = self."!PREFIX__!subrule"("O", "<=")
+ new $P1087, "ResizablePMCArray"
+ push $P1087, $P1086
+ .return ($P1087)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>" :subid("275_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1083_tgt
- .local int rx1083_pos
- .local int rx1083_off
- .local int rx1083_eos
- .local int rx1083_rep
- .local pmc rx1083_cur
- (rx1083_cur, rx1083_pos, rx1083_tgt) = self."!cursor_start"()
- rx1083_cur."!cursor_debug"("START ", "infix:sym<>=>")
- .lex unicode:"$\x{a2}", rx1083_cur
- .local pmc match
- .lex "$/", match
- length rx1083_eos, rx1083_tgt
- set rx1083_off, 0
- lt rx1083_pos, 2, rx1083_start
- sub rx1083_off, rx1083_pos, 1
- substr rx1083_tgt, rx1083_tgt, rx1083_off
- rx1083_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1087_done
- goto rxscan1087_scan
- rxscan1087_loop:
- ($P10) = rx1083_cur."from"()
- inc $P10
- set rx1083_pos, $P10
- ge rx1083_pos, rx1083_eos, rxscan1087_done
- rxscan1087_scan:
- set_addr $I10, rxscan1087_loop
- rx1083_cur."!mark_push"(0, rx1083_pos, $I10)
- rxscan1087_done:
-.annotate "line", 489
+.sub "infix:sym<>=>" :subid("277_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1091_tgt
+ .local int rx1091_pos
+ .local int rx1091_off
+ .local int rx1091_eos
+ .local int rx1091_rep
+ .local pmc rx1091_cur
+ (rx1091_cur, rx1091_pos, rx1091_tgt) = self."!cursor_start"()
+ rx1091_cur."!cursor_debug"("START ", "infix:sym<>=>")
+ .lex unicode:"$\x{a2}", rx1091_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1091_eos, rx1091_tgt
+ set rx1091_off, 0
+ lt rx1091_pos, 2, rx1091_start
+ sub rx1091_off, rx1091_pos, 1
+ substr rx1091_tgt, rx1091_tgt, rx1091_off
+ rx1091_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1095_done
+ goto rxscan1095_scan
+ rxscan1095_loop:
+ ($P10) = rx1091_cur."from"()
+ inc $P10
+ set rx1091_pos, $P10
+ ge rx1091_pos, rx1091_eos, rxscan1095_done
+ rxscan1095_scan:
+ set_addr $I10, rxscan1095_loop
+ rx1091_cur."!mark_push"(0, rx1091_pos, $I10)
+ rxscan1095_done:
+.annotate "line", 494
# rx subcapture "sym"
- set_addr $I10, rxcap_1088_fail
- rx1083_cur."!mark_push"(0, rx1083_pos, $I10)
+ set_addr $I10, rxcap_1096_fail
+ rx1091_cur."!mark_push"(0, rx1091_pos, $I10)
# rx literal ">="
- add $I11, rx1083_pos, 2
- gt $I11, rx1083_eos, rx1083_fail
- sub $I11, rx1083_pos, rx1083_off
- substr $S10, rx1083_tgt, $I11, 2
- ne $S10, ">=", rx1083_fail
- add rx1083_pos, 2
- set_addr $I10, rxcap_1088_fail
- ($I12, $I11) = rx1083_cur."!mark_peek"($I10)
- rx1083_cur."!cursor_pos"($I11)
- ($P10) = rx1083_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1083_pos, "")
- rx1083_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1091_pos, 2
+ gt $I11, rx1091_eos, rx1091_fail
+ sub $I11, rx1091_pos, rx1091_off
+ substr $S10, rx1091_tgt, $I11, 2
+ ne $S10, ">=", rx1091_fail
+ add rx1091_pos, 2
+ set_addr $I10, rxcap_1096_fail
+ ($I12, $I11) = rx1091_cur."!mark_peek"($I10)
+ rx1091_cur."!cursor_pos"($I11)
+ ($P10) = rx1091_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1091_pos, "")
+ rx1091_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1088_done
- rxcap_1088_fail:
- goto rx1083_fail
- rxcap_1088_done:
+ goto rxcap_1096_done
+ rxcap_1096_fail:
+ goto rx1091_fail
+ rxcap_1096_done:
# rx subrule "O" subtype=capture negate=
- rx1083_cur."!cursor_pos"(rx1083_pos)
- $P10 = rx1083_cur."O"("%relational, :pirop<isge INn>")
- unless $P10, rx1083_fail
- rx1083_cur."!mark_push"(0, -1, 0, $P10)
+ rx1091_cur."!cursor_pos"(rx1091_pos)
+ $P10 = rx1091_cur."O"("%relational, :pirop<isge INn>")
+ unless $P10, rx1091_fail
+ rx1091_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1083_pos = $P10."pos"()
+ rx1091_pos = $P10."pos"()
# rx pass
- rx1083_cur."!cursor_pass"(rx1083_pos, "infix:sym<>=>")
- rx1083_cur."!cursor_debug"("PASS ", "infix:sym<>=>", " at pos=", rx1083_pos)
- .return (rx1083_cur)
- rx1083_fail:
-.annotate "line", 417
- (rx1083_rep, rx1083_pos, $I10, $P10) = rx1083_cur."!mark_fail"(0)
- lt rx1083_pos, -1, rx1083_done
- eq rx1083_pos, -1, rx1083_fail
- jump $I10
- rx1083_done:
- rx1083_cur."!cursor_fail"()
- rx1083_cur."!cursor_debug"("FAIL ", "infix:sym<>=>")
- .return (rx1083_cur)
+ rx1091_cur."!cursor_pass"(rx1091_pos, "infix:sym<>=>")
+ rx1091_cur."!cursor_debug"("PASS ", "infix:sym<>=>", " at pos=", rx1091_pos)
+ .return (rx1091_cur)
+ rx1091_fail:
+.annotate "line", 422
+ (rx1091_rep, rx1091_pos, $I10, $P10) = rx1091_cur."!mark_fail"(0)
+ lt rx1091_pos, -1, rx1091_done
+ eq rx1091_pos, -1, rx1091_fail
+ jump $I10
+ rx1091_done:
+ rx1091_cur."!cursor_fail"()
+ rx1091_cur."!cursor_debug"("FAIL ", "infix:sym<>=>")
+ .return (rx1091_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>" :subid("276_1267204702.05125") :method
-.annotate "line", 417
- $P1085 = self."!PREFIX__!subrule"("O", ">=")
- new $P1086, "ResizablePMCArray"
- push $P1086, $P1085
- .return ($P1086)
+.sub "!PREFIX__infix:sym<>=>" :subid("278_1272816833.94956") :method
+.annotate "line", 422
+ $P1093 = self."!PREFIX__!subrule"("O", ">=")
+ new $P1094, "ResizablePMCArray"
+ push $P1094, $P1093
+ .return ($P1094)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>" :subid("277_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1090_tgt
- .local int rx1090_pos
- .local int rx1090_off
- .local int rx1090_eos
- .local int rx1090_rep
- .local pmc rx1090_cur
- (rx1090_cur, rx1090_pos, rx1090_tgt) = self."!cursor_start"()
- rx1090_cur."!cursor_debug"("START ", "infix:sym<<>")
- .lex unicode:"$\x{a2}", rx1090_cur
- .local pmc match
- .lex "$/", match
- length rx1090_eos, rx1090_tgt
- set rx1090_off, 0
- lt rx1090_pos, 2, rx1090_start
- sub rx1090_off, rx1090_pos, 1
- substr rx1090_tgt, rx1090_tgt, rx1090_off
- rx1090_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1094_done
- goto rxscan1094_scan
- rxscan1094_loop:
- ($P10) = rx1090_cur."from"()
- inc $P10
- set rx1090_pos, $P10
- ge rx1090_pos, rx1090_eos, rxscan1094_done
- rxscan1094_scan:
- set_addr $I10, rxscan1094_loop
- rx1090_cur."!mark_push"(0, rx1090_pos, $I10)
- rxscan1094_done:
-.annotate "line", 490
+.sub "infix:sym<<>" :subid("279_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1098_tgt
+ .local int rx1098_pos
+ .local int rx1098_off
+ .local int rx1098_eos
+ .local int rx1098_rep
+ .local pmc rx1098_cur
+ (rx1098_cur, rx1098_pos, rx1098_tgt) = self."!cursor_start"()
+ rx1098_cur."!cursor_debug"("START ", "infix:sym<<>")
+ .lex unicode:"$\x{a2}", rx1098_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1098_eos, rx1098_tgt
+ set rx1098_off, 0
+ lt rx1098_pos, 2, rx1098_start
+ sub rx1098_off, rx1098_pos, 1
+ substr rx1098_tgt, rx1098_tgt, rx1098_off
+ rx1098_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1102_done
+ goto rxscan1102_scan
+ rxscan1102_loop:
+ ($P10) = rx1098_cur."from"()
+ inc $P10
+ set rx1098_pos, $P10
+ ge rx1098_pos, rx1098_eos, rxscan1102_done
+ rxscan1102_scan:
+ set_addr $I10, rxscan1102_loop
+ rx1098_cur."!mark_push"(0, rx1098_pos, $I10)
+ rxscan1102_done:
+.annotate "line", 495
# rx subcapture "sym"
- set_addr $I10, rxcap_1095_fail
- rx1090_cur."!mark_push"(0, rx1090_pos, $I10)
+ set_addr $I10, rxcap_1103_fail
+ rx1098_cur."!mark_push"(0, rx1098_pos, $I10)
# rx literal "<"
- add $I11, rx1090_pos, 1
- gt $I11, rx1090_eos, rx1090_fail
- sub $I11, rx1090_pos, rx1090_off
- substr $S10, rx1090_tgt, $I11, 1
- ne $S10, "<", rx1090_fail
- add rx1090_pos, 1
- set_addr $I10, rxcap_1095_fail
- ($I12, $I11) = rx1090_cur."!mark_peek"($I10)
- rx1090_cur."!cursor_pos"($I11)
- ($P10) = rx1090_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1090_pos, "")
- rx1090_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1098_pos, 1
+ gt $I11, rx1098_eos, rx1098_fail
+ sub $I11, rx1098_pos, rx1098_off
+ substr $S10, rx1098_tgt, $I11, 1
+ ne $S10, "<", rx1098_fail
+ add rx1098_pos, 1
+ set_addr $I10, rxcap_1103_fail
+ ($I12, $I11) = rx1098_cur."!mark_peek"($I10)
+ rx1098_cur."!cursor_pos"($I11)
+ ($P10) = rx1098_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1098_pos, "")
+ rx1098_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1095_done
- rxcap_1095_fail:
- goto rx1090_fail
- rxcap_1095_done:
+ goto rxcap_1103_done
+ rxcap_1103_fail:
+ goto rx1098_fail
+ rxcap_1103_done:
# rx subrule "O" subtype=capture negate=
- rx1090_cur."!cursor_pos"(rx1090_pos)
- $P10 = rx1090_cur."O"("%relational, :pirop<islt INn>")
- unless $P10, rx1090_fail
- rx1090_cur."!mark_push"(0, -1, 0, $P10)
+ rx1098_cur."!cursor_pos"(rx1098_pos)
+ $P10 = rx1098_cur."O"("%relational, :pirop<islt INn>")
+ unless $P10, rx1098_fail
+ rx1098_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1090_pos = $P10."pos"()
+ rx1098_pos = $P10."pos"()
# rx pass
- rx1090_cur."!cursor_pass"(rx1090_pos, "infix:sym<<>")
- rx1090_cur."!cursor_debug"("PASS ", "infix:sym<<>", " at pos=", rx1090_pos)
- .return (rx1090_cur)
- rx1090_fail:
-.annotate "line", 417
- (rx1090_rep, rx1090_pos, $I10, $P10) = rx1090_cur."!mark_fail"(0)
- lt rx1090_pos, -1, rx1090_done
- eq rx1090_pos, -1, rx1090_fail
- jump $I10
- rx1090_done:
- rx1090_cur."!cursor_fail"()
- rx1090_cur."!cursor_debug"("FAIL ", "infix:sym<<>")
- .return (rx1090_cur)
+ rx1098_cur."!cursor_pass"(rx1098_pos, "infix:sym<<>")
+ rx1098_cur."!cursor_debug"("PASS ", "infix:sym<<>", " at pos=", rx1098_pos)
+ .return (rx1098_cur)
+ rx1098_fail:
+.annotate "line", 422
+ (rx1098_rep, rx1098_pos, $I10, $P10) = rx1098_cur."!mark_fail"(0)
+ lt rx1098_pos, -1, rx1098_done
+ eq rx1098_pos, -1, rx1098_fail
+ jump $I10
+ rx1098_done:
+ rx1098_cur."!cursor_fail"()
+ rx1098_cur."!cursor_debug"("FAIL ", "infix:sym<<>")
+ .return (rx1098_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>" :subid("278_1267204702.05125") :method
-.annotate "line", 417
- $P1092 = self."!PREFIX__!subrule"("O", "<")
- new $P1093, "ResizablePMCArray"
- push $P1093, $P1092
- .return ($P1093)
+.sub "!PREFIX__infix:sym<<>" :subid("280_1272816833.94956") :method
+.annotate "line", 422
+ $P1100 = self."!PREFIX__!subrule"("O", "<")
+ new $P1101, "ResizablePMCArray"
+ push $P1101, $P1100
+ .return ($P1101)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>" :subid("279_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1097_tgt
- .local int rx1097_pos
- .local int rx1097_off
- .local int rx1097_eos
- .local int rx1097_rep
- .local pmc rx1097_cur
- (rx1097_cur, rx1097_pos, rx1097_tgt) = self."!cursor_start"()
- rx1097_cur."!cursor_debug"("START ", "infix:sym<>>")
- .lex unicode:"$\x{a2}", rx1097_cur
- .local pmc match
- .lex "$/", match
- length rx1097_eos, rx1097_tgt
- set rx1097_off, 0
- lt rx1097_pos, 2, rx1097_start
- sub rx1097_off, rx1097_pos, 1
- substr rx1097_tgt, rx1097_tgt, rx1097_off
- rx1097_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1101_done
- goto rxscan1101_scan
- rxscan1101_loop:
- ($P10) = rx1097_cur."from"()
- inc $P10
- set rx1097_pos, $P10
- ge rx1097_pos, rx1097_eos, rxscan1101_done
- rxscan1101_scan:
- set_addr $I10, rxscan1101_loop
- rx1097_cur."!mark_push"(0, rx1097_pos, $I10)
- rxscan1101_done:
-.annotate "line", 491
+.sub "infix:sym<>>" :subid("281_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1105_tgt
+ .local int rx1105_pos
+ .local int rx1105_off
+ .local int rx1105_eos
+ .local int rx1105_rep
+ .local pmc rx1105_cur
+ (rx1105_cur, rx1105_pos, rx1105_tgt) = self."!cursor_start"()
+ rx1105_cur."!cursor_debug"("START ", "infix:sym<>>")
+ .lex unicode:"$\x{a2}", rx1105_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1105_eos, rx1105_tgt
+ set rx1105_off, 0
+ lt rx1105_pos, 2, rx1105_start
+ sub rx1105_off, rx1105_pos, 1
+ substr rx1105_tgt, rx1105_tgt, rx1105_off
+ rx1105_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1109_done
+ goto rxscan1109_scan
+ rxscan1109_loop:
+ ($P10) = rx1105_cur."from"()
+ inc $P10
+ set rx1105_pos, $P10
+ ge rx1105_pos, rx1105_eos, rxscan1109_done
+ rxscan1109_scan:
+ set_addr $I10, rxscan1109_loop
+ rx1105_cur."!mark_push"(0, rx1105_pos, $I10)
+ rxscan1109_done:
+.annotate "line", 496
# rx subcapture "sym"
- set_addr $I10, rxcap_1102_fail
- rx1097_cur."!mark_push"(0, rx1097_pos, $I10)
+ set_addr $I10, rxcap_1110_fail
+ rx1105_cur."!mark_push"(0, rx1105_pos, $I10)
# rx literal ">"
- add $I11, rx1097_pos, 1
- gt $I11, rx1097_eos, rx1097_fail
- sub $I11, rx1097_pos, rx1097_off
- substr $S10, rx1097_tgt, $I11, 1
- ne $S10, ">", rx1097_fail
- add rx1097_pos, 1
- set_addr $I10, rxcap_1102_fail
- ($I12, $I11) = rx1097_cur."!mark_peek"($I10)
- rx1097_cur."!cursor_pos"($I11)
- ($P10) = rx1097_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1097_pos, "")
- rx1097_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1105_pos, 1
+ gt $I11, rx1105_eos, rx1105_fail
+ sub $I11, rx1105_pos, rx1105_off
+ substr $S10, rx1105_tgt, $I11, 1
+ ne $S10, ">", rx1105_fail
+ add rx1105_pos, 1
+ set_addr $I10, rxcap_1110_fail
+ ($I12, $I11) = rx1105_cur."!mark_peek"($I10)
+ rx1105_cur."!cursor_pos"($I11)
+ ($P10) = rx1105_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1105_pos, "")
+ rx1105_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1102_done
- rxcap_1102_fail:
- goto rx1097_fail
- rxcap_1102_done:
+ goto rxcap_1110_done
+ rxcap_1110_fail:
+ goto rx1105_fail
+ rxcap_1110_done:
# rx subrule "O" subtype=capture negate=
- rx1097_cur."!cursor_pos"(rx1097_pos)
- $P10 = rx1097_cur."O"("%relational, :pirop<isgt INn>")
- unless $P10, rx1097_fail
- rx1097_cur."!mark_push"(0, -1, 0, $P10)
+ rx1105_cur."!cursor_pos"(rx1105_pos)
+ $P10 = rx1105_cur."O"("%relational, :pirop<isgt INn>")
+ unless $P10, rx1105_fail
+ rx1105_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1097_pos = $P10."pos"()
+ rx1105_pos = $P10."pos"()
# rx pass
- rx1097_cur."!cursor_pass"(rx1097_pos, "infix:sym<>>")
- rx1097_cur."!cursor_debug"("PASS ", "infix:sym<>>", " at pos=", rx1097_pos)
- .return (rx1097_cur)
- rx1097_fail:
-.annotate "line", 417
- (rx1097_rep, rx1097_pos, $I10, $P10) = rx1097_cur."!mark_fail"(0)
- lt rx1097_pos, -1, rx1097_done
- eq rx1097_pos, -1, rx1097_fail
- jump $I10
- rx1097_done:
- rx1097_cur."!cursor_fail"()
- rx1097_cur."!cursor_debug"("FAIL ", "infix:sym<>>")
- .return (rx1097_cur)
+ rx1105_cur."!cursor_pass"(rx1105_pos, "infix:sym<>>")
+ rx1105_cur."!cursor_debug"("PASS ", "infix:sym<>>", " at pos=", rx1105_pos)
+ .return (rx1105_cur)
+ rx1105_fail:
+.annotate "line", 422
+ (rx1105_rep, rx1105_pos, $I10, $P10) = rx1105_cur."!mark_fail"(0)
+ lt rx1105_pos, -1, rx1105_done
+ eq rx1105_pos, -1, rx1105_fail
+ jump $I10
+ rx1105_done:
+ rx1105_cur."!cursor_fail"()
+ rx1105_cur."!cursor_debug"("FAIL ", "infix:sym<>>")
+ .return (rx1105_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>" :subid("280_1267204702.05125") :method
-.annotate "line", 417
- $P1099 = self."!PREFIX__!subrule"("O", ">")
- new $P1100, "ResizablePMCArray"
- push $P1100, $P1099
- .return ($P1100)
+.sub "!PREFIX__infix:sym<>>" :subid("282_1272816833.94956") :method
+.annotate "line", 422
+ $P1107 = self."!PREFIX__!subrule"("O", ">")
+ new $P1108, "ResizablePMCArray"
+ push $P1108, $P1107
+ .return ($P1108)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>" :subid("281_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1104_tgt
- .local int rx1104_pos
- .local int rx1104_off
- .local int rx1104_eos
- .local int rx1104_rep
- .local pmc rx1104_cur
- (rx1104_cur, rx1104_pos, rx1104_tgt) = self."!cursor_start"()
- rx1104_cur."!cursor_debug"("START ", "infix:sym<eq>")
- .lex unicode:"$\x{a2}", rx1104_cur
- .local pmc match
- .lex "$/", match
- length rx1104_eos, rx1104_tgt
- set rx1104_off, 0
- lt rx1104_pos, 2, rx1104_start
- sub rx1104_off, rx1104_pos, 1
- substr rx1104_tgt, rx1104_tgt, rx1104_off
- rx1104_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1108_done
- goto rxscan1108_scan
- rxscan1108_loop:
- ($P10) = rx1104_cur."from"()
- inc $P10
- set rx1104_pos, $P10
- ge rx1104_pos, rx1104_eos, rxscan1108_done
- rxscan1108_scan:
- set_addr $I10, rxscan1108_loop
- rx1104_cur."!mark_push"(0, rx1104_pos, $I10)
- rxscan1108_done:
-.annotate "line", 492
+.sub "infix:sym<eq>" :subid("283_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1112_tgt
+ .local int rx1112_pos
+ .local int rx1112_off
+ .local int rx1112_eos
+ .local int rx1112_rep
+ .local pmc rx1112_cur
+ (rx1112_cur, rx1112_pos, rx1112_tgt) = self."!cursor_start"()
+ rx1112_cur."!cursor_debug"("START ", "infix:sym<eq>")
+ .lex unicode:"$\x{a2}", rx1112_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1112_eos, rx1112_tgt
+ set rx1112_off, 0
+ lt rx1112_pos, 2, rx1112_start
+ sub rx1112_off, rx1112_pos, 1
+ substr rx1112_tgt, rx1112_tgt, rx1112_off
+ rx1112_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1116_done
+ goto rxscan1116_scan
+ rxscan1116_loop:
+ ($P10) = rx1112_cur."from"()
+ inc $P10
+ set rx1112_pos, $P10
+ ge rx1112_pos, rx1112_eos, rxscan1116_done
+ rxscan1116_scan:
+ set_addr $I10, rxscan1116_loop
+ rx1112_cur."!mark_push"(0, rx1112_pos, $I10)
+ rxscan1116_done:
+.annotate "line", 497
# rx subcapture "sym"
- set_addr $I10, rxcap_1109_fail
- rx1104_cur."!mark_push"(0, rx1104_pos, $I10)
+ set_addr $I10, rxcap_1117_fail
+ rx1112_cur."!mark_push"(0, rx1112_pos, $I10)
# rx literal "eq"
- add $I11, rx1104_pos, 2
- gt $I11, rx1104_eos, rx1104_fail
- sub $I11, rx1104_pos, rx1104_off
- substr $S10, rx1104_tgt, $I11, 2
- ne $S10, "eq", rx1104_fail
- add rx1104_pos, 2
- set_addr $I10, rxcap_1109_fail
- ($I12, $I11) = rx1104_cur."!mark_peek"($I10)
- rx1104_cur."!cursor_pos"($I11)
- ($P10) = rx1104_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1104_pos, "")
- rx1104_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1112_pos, 2
+ gt $I11, rx1112_eos, rx1112_fail
+ sub $I11, rx1112_pos, rx1112_off
+ substr $S10, rx1112_tgt, $I11, 2
+ ne $S10, "eq", rx1112_fail
+ add rx1112_pos, 2
+ set_addr $I10, rxcap_1117_fail
+ ($I12, $I11) = rx1112_cur."!mark_peek"($I10)
+ rx1112_cur."!cursor_pos"($I11)
+ ($P10) = rx1112_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1112_pos, "")
+ rx1112_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1109_done
- rxcap_1109_fail:
- goto rx1104_fail
- rxcap_1109_done:
+ goto rxcap_1117_done
+ rxcap_1117_fail:
+ goto rx1112_fail
+ rxcap_1117_done:
# rx subrule "O" subtype=capture negate=
- rx1104_cur."!cursor_pos"(rx1104_pos)
- $P10 = rx1104_cur."O"("%relational, :pirop<iseq ISs>")
- unless $P10, rx1104_fail
- rx1104_cur."!mark_push"(0, -1, 0, $P10)
+ rx1112_cur."!cursor_pos"(rx1112_pos)
+ $P10 = rx1112_cur."O"("%relational, :pirop<iseq ISs>")
+ unless $P10, rx1112_fail
+ rx1112_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1104_pos = $P10."pos"()
+ rx1112_pos = $P10."pos"()
# rx pass
- rx1104_cur."!cursor_pass"(rx1104_pos, "infix:sym<eq>")
- rx1104_cur."!cursor_debug"("PASS ", "infix:sym<eq>", " at pos=", rx1104_pos)
- .return (rx1104_cur)
- rx1104_fail:
-.annotate "line", 417
- (rx1104_rep, rx1104_pos, $I10, $P10) = rx1104_cur."!mark_fail"(0)
- lt rx1104_pos, -1, rx1104_done
- eq rx1104_pos, -1, rx1104_fail
- jump $I10
- rx1104_done:
- rx1104_cur."!cursor_fail"()
- rx1104_cur."!cursor_debug"("FAIL ", "infix:sym<eq>")
- .return (rx1104_cur)
+ rx1112_cur."!cursor_pass"(rx1112_pos, "infix:sym<eq>")
+ rx1112_cur."!cursor_debug"("PASS ", "infix:sym<eq>", " at pos=", rx1112_pos)
+ .return (rx1112_cur)
+ rx1112_fail:
+.annotate "line", 422
+ (rx1112_rep, rx1112_pos, $I10, $P10) = rx1112_cur."!mark_fail"(0)
+ lt rx1112_pos, -1, rx1112_done
+ eq rx1112_pos, -1, rx1112_fail
+ jump $I10
+ rx1112_done:
+ rx1112_cur."!cursor_fail"()
+ rx1112_cur."!cursor_debug"("FAIL ", "infix:sym<eq>")
+ .return (rx1112_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>" :subid("282_1267204702.05125") :method
-.annotate "line", 417
- $P1106 = self."!PREFIX__!subrule"("O", "eq")
- new $P1107, "ResizablePMCArray"
- push $P1107, $P1106
- .return ($P1107)
+.sub "!PREFIX__infix:sym<eq>" :subid("284_1272816833.94956") :method
+.annotate "line", 422
+ $P1114 = self."!PREFIX__!subrule"("O", "eq")
+ new $P1115, "ResizablePMCArray"
+ push $P1115, $P1114
+ .return ($P1115)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>" :subid("283_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1111_tgt
- .local int rx1111_pos
- .local int rx1111_off
- .local int rx1111_eos
- .local int rx1111_rep
- .local pmc rx1111_cur
- (rx1111_cur, rx1111_pos, rx1111_tgt) = self."!cursor_start"()
- rx1111_cur."!cursor_debug"("START ", "infix:sym<ne>")
- .lex unicode:"$\x{a2}", rx1111_cur
- .local pmc match
- .lex "$/", match
- length rx1111_eos, rx1111_tgt
- set rx1111_off, 0
- lt rx1111_pos, 2, rx1111_start
- sub rx1111_off, rx1111_pos, 1
- substr rx1111_tgt, rx1111_tgt, rx1111_off
- rx1111_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1115_done
- goto rxscan1115_scan
- rxscan1115_loop:
- ($P10) = rx1111_cur."from"()
- inc $P10
- set rx1111_pos, $P10
- ge rx1111_pos, rx1111_eos, rxscan1115_done
- rxscan1115_scan:
- set_addr $I10, rxscan1115_loop
- rx1111_cur."!mark_push"(0, rx1111_pos, $I10)
- rxscan1115_done:
-.annotate "line", 493
+.sub "infix:sym<ne>" :subid("285_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1119_tgt
+ .local int rx1119_pos
+ .local int rx1119_off
+ .local int rx1119_eos
+ .local int rx1119_rep
+ .local pmc rx1119_cur
+ (rx1119_cur, rx1119_pos, rx1119_tgt) = self."!cursor_start"()
+ rx1119_cur."!cursor_debug"("START ", "infix:sym<ne>")
+ .lex unicode:"$\x{a2}", rx1119_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1119_eos, rx1119_tgt
+ set rx1119_off, 0
+ lt rx1119_pos, 2, rx1119_start
+ sub rx1119_off, rx1119_pos, 1
+ substr rx1119_tgt, rx1119_tgt, rx1119_off
+ rx1119_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1123_done
+ goto rxscan1123_scan
+ rxscan1123_loop:
+ ($P10) = rx1119_cur."from"()
+ inc $P10
+ set rx1119_pos, $P10
+ ge rx1119_pos, rx1119_eos, rxscan1123_done
+ rxscan1123_scan:
+ set_addr $I10, rxscan1123_loop
+ rx1119_cur."!mark_push"(0, rx1119_pos, $I10)
+ rxscan1123_done:
+.annotate "line", 498
# rx subcapture "sym"
- set_addr $I10, rxcap_1116_fail
- rx1111_cur."!mark_push"(0, rx1111_pos, $I10)
+ set_addr $I10, rxcap_1124_fail
+ rx1119_cur."!mark_push"(0, rx1119_pos, $I10)
# rx literal "ne"
- add $I11, rx1111_pos, 2
- gt $I11, rx1111_eos, rx1111_fail
- sub $I11, rx1111_pos, rx1111_off
- substr $S10, rx1111_tgt, $I11, 2
- ne $S10, "ne", rx1111_fail
- add rx1111_pos, 2
- set_addr $I10, rxcap_1116_fail
- ($I12, $I11) = rx1111_cur."!mark_peek"($I10)
- rx1111_cur."!cursor_pos"($I11)
- ($P10) = rx1111_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1111_pos, "")
- rx1111_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1119_pos, 2
+ gt $I11, rx1119_eos, rx1119_fail
+ sub $I11, rx1119_pos, rx1119_off
+ substr $S10, rx1119_tgt, $I11, 2
+ ne $S10, "ne", rx1119_fail
+ add rx1119_pos, 2
+ set_addr $I10, rxcap_1124_fail
+ ($I12, $I11) = rx1119_cur."!mark_peek"($I10)
+ rx1119_cur."!cursor_pos"($I11)
+ ($P10) = rx1119_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1119_pos, "")
+ rx1119_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1116_done
- rxcap_1116_fail:
- goto rx1111_fail
- rxcap_1116_done:
+ goto rxcap_1124_done
+ rxcap_1124_fail:
+ goto rx1119_fail
+ rxcap_1124_done:
# rx subrule "O" subtype=capture negate=
- rx1111_cur."!cursor_pos"(rx1111_pos)
- $P10 = rx1111_cur."O"("%relational, :pirop<isne ISs>")
- unless $P10, rx1111_fail
- rx1111_cur."!mark_push"(0, -1, 0, $P10)
+ rx1119_cur."!cursor_pos"(rx1119_pos)
+ $P10 = rx1119_cur."O"("%relational, :pirop<isne ISs>")
+ unless $P10, rx1119_fail
+ rx1119_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1111_pos = $P10."pos"()
+ rx1119_pos = $P10."pos"()
# rx pass
- rx1111_cur."!cursor_pass"(rx1111_pos, "infix:sym<ne>")
- rx1111_cur."!cursor_debug"("PASS ", "infix:sym<ne>", " at pos=", rx1111_pos)
- .return (rx1111_cur)
- rx1111_fail:
-.annotate "line", 417
- (rx1111_rep, rx1111_pos, $I10, $P10) = rx1111_cur."!mark_fail"(0)
- lt rx1111_pos, -1, rx1111_done
- eq rx1111_pos, -1, rx1111_fail
- jump $I10
- rx1111_done:
- rx1111_cur."!cursor_fail"()
- rx1111_cur."!cursor_debug"("FAIL ", "infix:sym<ne>")
- .return (rx1111_cur)
+ rx1119_cur."!cursor_pass"(rx1119_pos, "infix:sym<ne>")
+ rx1119_cur."!cursor_debug"("PASS ", "infix:sym<ne>", " at pos=", rx1119_pos)
+ .return (rx1119_cur)
+ rx1119_fail:
+.annotate "line", 422
+ (rx1119_rep, rx1119_pos, $I10, $P10) = rx1119_cur."!mark_fail"(0)
+ lt rx1119_pos, -1, rx1119_done
+ eq rx1119_pos, -1, rx1119_fail
+ jump $I10
+ rx1119_done:
+ rx1119_cur."!cursor_fail"()
+ rx1119_cur."!cursor_debug"("FAIL ", "infix:sym<ne>")
+ .return (rx1119_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>" :subid("284_1267204702.05125") :method
-.annotate "line", 417
- $P1113 = self."!PREFIX__!subrule"("O", "ne")
- new $P1114, "ResizablePMCArray"
- push $P1114, $P1113
- .return ($P1114)
+.sub "!PREFIX__infix:sym<ne>" :subid("286_1272816833.94956") :method
+.annotate "line", 422
+ $P1121 = self."!PREFIX__!subrule"("O", "ne")
+ new $P1122, "ResizablePMCArray"
+ push $P1122, $P1121
+ .return ($P1122)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>" :subid("285_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1118_tgt
- .local int rx1118_pos
- .local int rx1118_off
- .local int rx1118_eos
- .local int rx1118_rep
- .local pmc rx1118_cur
- (rx1118_cur, rx1118_pos, rx1118_tgt) = self."!cursor_start"()
- rx1118_cur."!cursor_debug"("START ", "infix:sym<le>")
- .lex unicode:"$\x{a2}", rx1118_cur
- .local pmc match
- .lex "$/", match
- length rx1118_eos, rx1118_tgt
- set rx1118_off, 0
- lt rx1118_pos, 2, rx1118_start
- sub rx1118_off, rx1118_pos, 1
- substr rx1118_tgt, rx1118_tgt, rx1118_off
- rx1118_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1122_done
- goto rxscan1122_scan
- rxscan1122_loop:
- ($P10) = rx1118_cur."from"()
- inc $P10
- set rx1118_pos, $P10
- ge rx1118_pos, rx1118_eos, rxscan1122_done
- rxscan1122_scan:
- set_addr $I10, rxscan1122_loop
- rx1118_cur."!mark_push"(0, rx1118_pos, $I10)
- rxscan1122_done:
-.annotate "line", 494
+.sub "infix:sym<le>" :subid("287_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1126_tgt
+ .local int rx1126_pos
+ .local int rx1126_off
+ .local int rx1126_eos
+ .local int rx1126_rep
+ .local pmc rx1126_cur
+ (rx1126_cur, rx1126_pos, rx1126_tgt) = self."!cursor_start"()
+ rx1126_cur."!cursor_debug"("START ", "infix:sym<le>")
+ .lex unicode:"$\x{a2}", rx1126_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1126_eos, rx1126_tgt
+ set rx1126_off, 0
+ lt rx1126_pos, 2, rx1126_start
+ sub rx1126_off, rx1126_pos, 1
+ substr rx1126_tgt, rx1126_tgt, rx1126_off
+ rx1126_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1130_done
+ goto rxscan1130_scan
+ rxscan1130_loop:
+ ($P10) = rx1126_cur."from"()
+ inc $P10
+ set rx1126_pos, $P10
+ ge rx1126_pos, rx1126_eos, rxscan1130_done
+ rxscan1130_scan:
+ set_addr $I10, rxscan1130_loop
+ rx1126_cur."!mark_push"(0, rx1126_pos, $I10)
+ rxscan1130_done:
+.annotate "line", 499
# rx subcapture "sym"
- set_addr $I10, rxcap_1123_fail
- rx1118_cur."!mark_push"(0, rx1118_pos, $I10)
+ set_addr $I10, rxcap_1131_fail
+ rx1126_cur."!mark_push"(0, rx1126_pos, $I10)
# rx literal "le"
- add $I11, rx1118_pos, 2
- gt $I11, rx1118_eos, rx1118_fail
- sub $I11, rx1118_pos, rx1118_off
- substr $S10, rx1118_tgt, $I11, 2
- ne $S10, "le", rx1118_fail
- add rx1118_pos, 2
- set_addr $I10, rxcap_1123_fail
- ($I12, $I11) = rx1118_cur."!mark_peek"($I10)
- rx1118_cur."!cursor_pos"($I11)
- ($P10) = rx1118_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1118_pos, "")
- rx1118_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1126_pos, 2
+ gt $I11, rx1126_eos, rx1126_fail
+ sub $I11, rx1126_pos, rx1126_off
+ substr $S10, rx1126_tgt, $I11, 2
+ ne $S10, "le", rx1126_fail
+ add rx1126_pos, 2
+ set_addr $I10, rxcap_1131_fail
+ ($I12, $I11) = rx1126_cur."!mark_peek"($I10)
+ rx1126_cur."!cursor_pos"($I11)
+ ($P10) = rx1126_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1126_pos, "")
+ rx1126_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1123_done
- rxcap_1123_fail:
- goto rx1118_fail
- rxcap_1123_done:
+ goto rxcap_1131_done
+ rxcap_1131_fail:
+ goto rx1126_fail
+ rxcap_1131_done:
# rx subrule "O" subtype=capture negate=
- rx1118_cur."!cursor_pos"(rx1118_pos)
- $P10 = rx1118_cur."O"("%relational, :pirop<isle ISs>")
- unless $P10, rx1118_fail
- rx1118_cur."!mark_push"(0, -1, 0, $P10)
+ rx1126_cur."!cursor_pos"(rx1126_pos)
+ $P10 = rx1126_cur."O"("%relational, :pirop<isle ISs>")
+ unless $P10, rx1126_fail
+ rx1126_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1118_pos = $P10."pos"()
+ rx1126_pos = $P10."pos"()
# rx pass
- rx1118_cur."!cursor_pass"(rx1118_pos, "infix:sym<le>")
- rx1118_cur."!cursor_debug"("PASS ", "infix:sym<le>", " at pos=", rx1118_pos)
- .return (rx1118_cur)
- rx1118_fail:
-.annotate "line", 417
- (rx1118_rep, rx1118_pos, $I10, $P10) = rx1118_cur."!mark_fail"(0)
- lt rx1118_pos, -1, rx1118_done
- eq rx1118_pos, -1, rx1118_fail
- jump $I10
- rx1118_done:
- rx1118_cur."!cursor_fail"()
- rx1118_cur."!cursor_debug"("FAIL ", "infix:sym<le>")
- .return (rx1118_cur)
+ rx1126_cur."!cursor_pass"(rx1126_pos, "infix:sym<le>")
+ rx1126_cur."!cursor_debug"("PASS ", "infix:sym<le>", " at pos=", rx1126_pos)
+ .return (rx1126_cur)
+ rx1126_fail:
+.annotate "line", 422
+ (rx1126_rep, rx1126_pos, $I10, $P10) = rx1126_cur."!mark_fail"(0)
+ lt rx1126_pos, -1, rx1126_done
+ eq rx1126_pos, -1, rx1126_fail
+ jump $I10
+ rx1126_done:
+ rx1126_cur."!cursor_fail"()
+ rx1126_cur."!cursor_debug"("FAIL ", "infix:sym<le>")
+ .return (rx1126_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>" :subid("286_1267204702.05125") :method
-.annotate "line", 417
- $P1120 = self."!PREFIX__!subrule"("O", "le")
- new $P1121, "ResizablePMCArray"
- push $P1121, $P1120
- .return ($P1121)
+.sub "!PREFIX__infix:sym<le>" :subid("288_1272816833.94956") :method
+.annotate "line", 422
+ $P1128 = self."!PREFIX__!subrule"("O", "le")
+ new $P1129, "ResizablePMCArray"
+ push $P1129, $P1128
+ .return ($P1129)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>" :subid("287_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1125_tgt
- .local int rx1125_pos
- .local int rx1125_off
- .local int rx1125_eos
- .local int rx1125_rep
- .local pmc rx1125_cur
- (rx1125_cur, rx1125_pos, rx1125_tgt) = self."!cursor_start"()
- rx1125_cur."!cursor_debug"("START ", "infix:sym<ge>")
- .lex unicode:"$\x{a2}", rx1125_cur
- .local pmc match
- .lex "$/", match
- length rx1125_eos, rx1125_tgt
- set rx1125_off, 0
- lt rx1125_pos, 2, rx1125_start
- sub rx1125_off, rx1125_pos, 1
- substr rx1125_tgt, rx1125_tgt, rx1125_off
- rx1125_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1129_done
- goto rxscan1129_scan
- rxscan1129_loop:
- ($P10) = rx1125_cur."from"()
- inc $P10
- set rx1125_pos, $P10
- ge rx1125_pos, rx1125_eos, rxscan1129_done
- rxscan1129_scan:
- set_addr $I10, rxscan1129_loop
- rx1125_cur."!mark_push"(0, rx1125_pos, $I10)
- rxscan1129_done:
-.annotate "line", 495
+.sub "infix:sym<ge>" :subid("289_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1133_tgt
+ .local int rx1133_pos
+ .local int rx1133_off
+ .local int rx1133_eos
+ .local int rx1133_rep
+ .local pmc rx1133_cur
+ (rx1133_cur, rx1133_pos, rx1133_tgt) = self."!cursor_start"()
+ rx1133_cur."!cursor_debug"("START ", "infix:sym<ge>")
+ .lex unicode:"$\x{a2}", rx1133_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1133_eos, rx1133_tgt
+ set rx1133_off, 0
+ lt rx1133_pos, 2, rx1133_start
+ sub rx1133_off, rx1133_pos, 1
+ substr rx1133_tgt, rx1133_tgt, rx1133_off
+ rx1133_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1137_done
+ goto rxscan1137_scan
+ rxscan1137_loop:
+ ($P10) = rx1133_cur."from"()
+ inc $P10
+ set rx1133_pos, $P10
+ ge rx1133_pos, rx1133_eos, rxscan1137_done
+ rxscan1137_scan:
+ set_addr $I10, rxscan1137_loop
+ rx1133_cur."!mark_push"(0, rx1133_pos, $I10)
+ rxscan1137_done:
+.annotate "line", 500
# rx subcapture "sym"
- set_addr $I10, rxcap_1130_fail
- rx1125_cur."!mark_push"(0, rx1125_pos, $I10)
+ set_addr $I10, rxcap_1138_fail
+ rx1133_cur."!mark_push"(0, rx1133_pos, $I10)
# rx literal "ge"
- add $I11, rx1125_pos, 2
- gt $I11, rx1125_eos, rx1125_fail
- sub $I11, rx1125_pos, rx1125_off
- substr $S10, rx1125_tgt, $I11, 2
- ne $S10, "ge", rx1125_fail
- add rx1125_pos, 2
- set_addr $I10, rxcap_1130_fail
- ($I12, $I11) = rx1125_cur."!mark_peek"($I10)
- rx1125_cur."!cursor_pos"($I11)
- ($P10) = rx1125_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1125_pos, "")
- rx1125_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1133_pos, 2
+ gt $I11, rx1133_eos, rx1133_fail
+ sub $I11, rx1133_pos, rx1133_off
+ substr $S10, rx1133_tgt, $I11, 2
+ ne $S10, "ge", rx1133_fail
+ add rx1133_pos, 2
+ set_addr $I10, rxcap_1138_fail
+ ($I12, $I11) = rx1133_cur."!mark_peek"($I10)
+ rx1133_cur."!cursor_pos"($I11)
+ ($P10) = rx1133_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1133_pos, "")
+ rx1133_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1130_done
- rxcap_1130_fail:
- goto rx1125_fail
- rxcap_1130_done:
+ goto rxcap_1138_done
+ rxcap_1138_fail:
+ goto rx1133_fail
+ rxcap_1138_done:
# rx subrule "O" subtype=capture negate=
- rx1125_cur."!cursor_pos"(rx1125_pos)
- $P10 = rx1125_cur."O"("%relational, :pirop<isge ISs>")
- unless $P10, rx1125_fail
- rx1125_cur."!mark_push"(0, -1, 0, $P10)
+ rx1133_cur."!cursor_pos"(rx1133_pos)
+ $P10 = rx1133_cur."O"("%relational, :pirop<isge ISs>")
+ unless $P10, rx1133_fail
+ rx1133_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1125_pos = $P10."pos"()
+ rx1133_pos = $P10."pos"()
# rx pass
- rx1125_cur."!cursor_pass"(rx1125_pos, "infix:sym<ge>")
- rx1125_cur."!cursor_debug"("PASS ", "infix:sym<ge>", " at pos=", rx1125_pos)
- .return (rx1125_cur)
- rx1125_fail:
-.annotate "line", 417
- (rx1125_rep, rx1125_pos, $I10, $P10) = rx1125_cur."!mark_fail"(0)
- lt rx1125_pos, -1, rx1125_done
- eq rx1125_pos, -1, rx1125_fail
- jump $I10
- rx1125_done:
- rx1125_cur."!cursor_fail"()
- rx1125_cur."!cursor_debug"("FAIL ", "infix:sym<ge>")
- .return (rx1125_cur)
+ rx1133_cur."!cursor_pass"(rx1133_pos, "infix:sym<ge>")
+ rx1133_cur."!cursor_debug"("PASS ", "infix:sym<ge>", " at pos=", rx1133_pos)
+ .return (rx1133_cur)
+ rx1133_fail:
+.annotate "line", 422
+ (rx1133_rep, rx1133_pos, $I10, $P10) = rx1133_cur."!mark_fail"(0)
+ lt rx1133_pos, -1, rx1133_done
+ eq rx1133_pos, -1, rx1133_fail
+ jump $I10
+ rx1133_done:
+ rx1133_cur."!cursor_fail"()
+ rx1133_cur."!cursor_debug"("FAIL ", "infix:sym<ge>")
+ .return (rx1133_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>" :subid("288_1267204702.05125") :method
-.annotate "line", 417
- $P1127 = self."!PREFIX__!subrule"("O", "ge")
- new $P1128, "ResizablePMCArray"
- push $P1128, $P1127
- .return ($P1128)
+.sub "!PREFIX__infix:sym<ge>" :subid("290_1272816833.94956") :method
+.annotate "line", 422
+ $P1135 = self."!PREFIX__!subrule"("O", "ge")
+ new $P1136, "ResizablePMCArray"
+ push $P1136, $P1135
+ .return ($P1136)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>" :subid("289_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1132_tgt
- .local int rx1132_pos
- .local int rx1132_off
- .local int rx1132_eos
- .local int rx1132_rep
- .local pmc rx1132_cur
- (rx1132_cur, rx1132_pos, rx1132_tgt) = self."!cursor_start"()
- rx1132_cur."!cursor_debug"("START ", "infix:sym<lt>")
- .lex unicode:"$\x{a2}", rx1132_cur
- .local pmc match
- .lex "$/", match
- length rx1132_eos, rx1132_tgt
- set rx1132_off, 0
- lt rx1132_pos, 2, rx1132_start
- sub rx1132_off, rx1132_pos, 1
- substr rx1132_tgt, rx1132_tgt, rx1132_off
- rx1132_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1136_done
- goto rxscan1136_scan
- rxscan1136_loop:
- ($P10) = rx1132_cur."from"()
- inc $P10
- set rx1132_pos, $P10
- ge rx1132_pos, rx1132_eos, rxscan1136_done
- rxscan1136_scan:
- set_addr $I10, rxscan1136_loop
- rx1132_cur."!mark_push"(0, rx1132_pos, $I10)
- rxscan1136_done:
-.annotate "line", 496
+.sub "infix:sym<lt>" :subid("291_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1140_tgt
+ .local int rx1140_pos
+ .local int rx1140_off
+ .local int rx1140_eos
+ .local int rx1140_rep
+ .local pmc rx1140_cur
+ (rx1140_cur, rx1140_pos, rx1140_tgt) = self."!cursor_start"()
+ rx1140_cur."!cursor_debug"("START ", "infix:sym<lt>")
+ .lex unicode:"$\x{a2}", rx1140_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1140_eos, rx1140_tgt
+ set rx1140_off, 0
+ lt rx1140_pos, 2, rx1140_start
+ sub rx1140_off, rx1140_pos, 1
+ substr rx1140_tgt, rx1140_tgt, rx1140_off
+ rx1140_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1144_done
+ goto rxscan1144_scan
+ rxscan1144_loop:
+ ($P10) = rx1140_cur."from"()
+ inc $P10
+ set rx1140_pos, $P10
+ ge rx1140_pos, rx1140_eos, rxscan1144_done
+ rxscan1144_scan:
+ set_addr $I10, rxscan1144_loop
+ rx1140_cur."!mark_push"(0, rx1140_pos, $I10)
+ rxscan1144_done:
+.annotate "line", 501
# rx subcapture "sym"
- set_addr $I10, rxcap_1137_fail
- rx1132_cur."!mark_push"(0, rx1132_pos, $I10)
+ set_addr $I10, rxcap_1145_fail
+ rx1140_cur."!mark_push"(0, rx1140_pos, $I10)
# rx literal "lt"
- add $I11, rx1132_pos, 2
- gt $I11, rx1132_eos, rx1132_fail
- sub $I11, rx1132_pos, rx1132_off
- substr $S10, rx1132_tgt, $I11, 2
- ne $S10, "lt", rx1132_fail
- add rx1132_pos, 2
- set_addr $I10, rxcap_1137_fail
- ($I12, $I11) = rx1132_cur."!mark_peek"($I10)
- rx1132_cur."!cursor_pos"($I11)
- ($P10) = rx1132_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1132_pos, "")
- rx1132_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1140_pos, 2
+ gt $I11, rx1140_eos, rx1140_fail
+ sub $I11, rx1140_pos, rx1140_off
+ substr $S10, rx1140_tgt, $I11, 2
+ ne $S10, "lt", rx1140_fail
+ add rx1140_pos, 2
+ set_addr $I10, rxcap_1145_fail
+ ($I12, $I11) = rx1140_cur."!mark_peek"($I10)
+ rx1140_cur."!cursor_pos"($I11)
+ ($P10) = rx1140_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1140_pos, "")
+ rx1140_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1137_done
- rxcap_1137_fail:
- goto rx1132_fail
- rxcap_1137_done:
+ goto rxcap_1145_done
+ rxcap_1145_fail:
+ goto rx1140_fail
+ rxcap_1145_done:
# rx subrule "O" subtype=capture negate=
- rx1132_cur."!cursor_pos"(rx1132_pos)
- $P10 = rx1132_cur."O"("%relational, :pirop<islt ISs>")
- unless $P10, rx1132_fail
- rx1132_cur."!mark_push"(0, -1, 0, $P10)
+ rx1140_cur."!cursor_pos"(rx1140_pos)
+ $P10 = rx1140_cur."O"("%relational, :pirop<islt ISs>")
+ unless $P10, rx1140_fail
+ rx1140_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1132_pos = $P10."pos"()
+ rx1140_pos = $P10."pos"()
# rx pass
- rx1132_cur."!cursor_pass"(rx1132_pos, "infix:sym<lt>")
- rx1132_cur."!cursor_debug"("PASS ", "infix:sym<lt>", " at pos=", rx1132_pos)
- .return (rx1132_cur)
- rx1132_fail:
-.annotate "line", 417
- (rx1132_rep, rx1132_pos, $I10, $P10) = rx1132_cur."!mark_fail"(0)
- lt rx1132_pos, -1, rx1132_done
- eq rx1132_pos, -1, rx1132_fail
- jump $I10
- rx1132_done:
- rx1132_cur."!cursor_fail"()
- rx1132_cur."!cursor_debug"("FAIL ", "infix:sym<lt>")
- .return (rx1132_cur)
+ rx1140_cur."!cursor_pass"(rx1140_pos, "infix:sym<lt>")
+ rx1140_cur."!cursor_debug"("PASS ", "infix:sym<lt>", " at pos=", rx1140_pos)
+ .return (rx1140_cur)
+ rx1140_fail:
+.annotate "line", 422
+ (rx1140_rep, rx1140_pos, $I10, $P10) = rx1140_cur."!mark_fail"(0)
+ lt rx1140_pos, -1, rx1140_done
+ eq rx1140_pos, -1, rx1140_fail
+ jump $I10
+ rx1140_done:
+ rx1140_cur."!cursor_fail"()
+ rx1140_cur."!cursor_debug"("FAIL ", "infix:sym<lt>")
+ .return (rx1140_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>" :subid("290_1267204702.05125") :method
-.annotate "line", 417
- $P1134 = self."!PREFIX__!subrule"("O", "lt")
- new $P1135, "ResizablePMCArray"
- push $P1135, $P1134
- .return ($P1135)
+.sub "!PREFIX__infix:sym<lt>" :subid("292_1272816833.94956") :method
+.annotate "line", 422
+ $P1142 = self."!PREFIX__!subrule"("O", "lt")
+ new $P1143, "ResizablePMCArray"
+ push $P1143, $P1142
+ .return ($P1143)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>" :subid("291_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1139_tgt
- .local int rx1139_pos
- .local int rx1139_off
- .local int rx1139_eos
- .local int rx1139_rep
- .local pmc rx1139_cur
- (rx1139_cur, rx1139_pos, rx1139_tgt) = self."!cursor_start"()
- rx1139_cur."!cursor_debug"("START ", "infix:sym<gt>")
- .lex unicode:"$\x{a2}", rx1139_cur
- .local pmc match
- .lex "$/", match
- length rx1139_eos, rx1139_tgt
- set rx1139_off, 0
- lt rx1139_pos, 2, rx1139_start
- sub rx1139_off, rx1139_pos, 1
- substr rx1139_tgt, rx1139_tgt, rx1139_off
- rx1139_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1143_done
- goto rxscan1143_scan
- rxscan1143_loop:
- ($P10) = rx1139_cur."from"()
- inc $P10
- set rx1139_pos, $P10
- ge rx1139_pos, rx1139_eos, rxscan1143_done
- rxscan1143_scan:
- set_addr $I10, rxscan1143_loop
- rx1139_cur."!mark_push"(0, rx1139_pos, $I10)
- rxscan1143_done:
-.annotate "line", 497
+.sub "infix:sym<gt>" :subid("293_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1147_tgt
+ .local int rx1147_pos
+ .local int rx1147_off
+ .local int rx1147_eos
+ .local int rx1147_rep
+ .local pmc rx1147_cur
+ (rx1147_cur, rx1147_pos, rx1147_tgt) = self."!cursor_start"()
+ rx1147_cur."!cursor_debug"("START ", "infix:sym<gt>")
+ .lex unicode:"$\x{a2}", rx1147_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1147_eos, rx1147_tgt
+ set rx1147_off, 0
+ lt rx1147_pos, 2, rx1147_start
+ sub rx1147_off, rx1147_pos, 1
+ substr rx1147_tgt, rx1147_tgt, rx1147_off
+ rx1147_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1151_done
+ goto rxscan1151_scan
+ rxscan1151_loop:
+ ($P10) = rx1147_cur."from"()
+ inc $P10
+ set rx1147_pos, $P10
+ ge rx1147_pos, rx1147_eos, rxscan1151_done
+ rxscan1151_scan:
+ set_addr $I10, rxscan1151_loop
+ rx1147_cur."!mark_push"(0, rx1147_pos, $I10)
+ rxscan1151_done:
+.annotate "line", 502
# rx subcapture "sym"
- set_addr $I10, rxcap_1144_fail
- rx1139_cur."!mark_push"(0, rx1139_pos, $I10)
+ set_addr $I10, rxcap_1152_fail
+ rx1147_cur."!mark_push"(0, rx1147_pos, $I10)
# rx literal "gt"
- add $I11, rx1139_pos, 2
- gt $I11, rx1139_eos, rx1139_fail
- sub $I11, rx1139_pos, rx1139_off
- substr $S10, rx1139_tgt, $I11, 2
- ne $S10, "gt", rx1139_fail
- add rx1139_pos, 2
- set_addr $I10, rxcap_1144_fail
- ($I12, $I11) = rx1139_cur."!mark_peek"($I10)
- rx1139_cur."!cursor_pos"($I11)
- ($P10) = rx1139_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1139_pos, "")
- rx1139_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1147_pos, 2
+ gt $I11, rx1147_eos, rx1147_fail
+ sub $I11, rx1147_pos, rx1147_off
+ substr $S10, rx1147_tgt, $I11, 2
+ ne $S10, "gt", rx1147_fail
+ add rx1147_pos, 2
+ set_addr $I10, rxcap_1152_fail
+ ($I12, $I11) = rx1147_cur."!mark_peek"($I10)
+ rx1147_cur."!cursor_pos"($I11)
+ ($P10) = rx1147_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1147_pos, "")
+ rx1147_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1144_done
- rxcap_1144_fail:
- goto rx1139_fail
- rxcap_1144_done:
+ goto rxcap_1152_done
+ rxcap_1152_fail:
+ goto rx1147_fail
+ rxcap_1152_done:
# rx subrule "O" subtype=capture negate=
- rx1139_cur."!cursor_pos"(rx1139_pos)
- $P10 = rx1139_cur."O"("%relational, :pirop<isgt ISs>")
- unless $P10, rx1139_fail
- rx1139_cur."!mark_push"(0, -1, 0, $P10)
+ rx1147_cur."!cursor_pos"(rx1147_pos)
+ $P10 = rx1147_cur."O"("%relational, :pirop<isgt ISs>")
+ unless $P10, rx1147_fail
+ rx1147_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1139_pos = $P10."pos"()
+ rx1147_pos = $P10."pos"()
# rx pass
- rx1139_cur."!cursor_pass"(rx1139_pos, "infix:sym<gt>")
- rx1139_cur."!cursor_debug"("PASS ", "infix:sym<gt>", " at pos=", rx1139_pos)
- .return (rx1139_cur)
- rx1139_fail:
-.annotate "line", 417
- (rx1139_rep, rx1139_pos, $I10, $P10) = rx1139_cur."!mark_fail"(0)
- lt rx1139_pos, -1, rx1139_done
- eq rx1139_pos, -1, rx1139_fail
+ rx1147_cur."!cursor_pass"(rx1147_pos, "infix:sym<gt>")
+ rx1147_cur."!cursor_debug"("PASS ", "infix:sym<gt>", " at pos=", rx1147_pos)
+ .return (rx1147_cur)
+ rx1147_fail:
+.annotate "line", 422
+ (rx1147_rep, rx1147_pos, $I10, $P10) = rx1147_cur."!mark_fail"(0)
+ lt rx1147_pos, -1, rx1147_done
+ eq rx1147_pos, -1, rx1147_fail
jump $I10
- rx1139_done:
- rx1139_cur."!cursor_fail"()
- rx1139_cur."!cursor_debug"("FAIL ", "infix:sym<gt>")
- .return (rx1139_cur)
+ rx1147_done:
+ rx1147_cur."!cursor_fail"()
+ rx1147_cur."!cursor_debug"("FAIL ", "infix:sym<gt>")
+ .return (rx1147_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>" :subid("292_1267204702.05125") :method
-.annotate "line", 417
- $P1141 = self."!PREFIX__!subrule"("O", "gt")
- new $P1142, "ResizablePMCArray"
- push $P1142, $P1141
- .return ($P1142)
+.sub "!PREFIX__infix:sym<gt>" :subid("294_1272816833.94956") :method
+.annotate "line", 422
+ $P1149 = self."!PREFIX__!subrule"("O", "gt")
+ new $P1150, "ResizablePMCArray"
+ push $P1150, $P1149
+ .return ($P1150)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>" :subid("293_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1146_tgt
- .local int rx1146_pos
- .local int rx1146_off
- .local int rx1146_eos
- .local int rx1146_rep
- .local pmc rx1146_cur
- (rx1146_cur, rx1146_pos, rx1146_tgt) = self."!cursor_start"()
- rx1146_cur."!cursor_debug"("START ", "infix:sym<=:=>")
- .lex unicode:"$\x{a2}", rx1146_cur
- .local pmc match
- .lex "$/", match
- length rx1146_eos, rx1146_tgt
- set rx1146_off, 0
- lt rx1146_pos, 2, rx1146_start
- sub rx1146_off, rx1146_pos, 1
- substr rx1146_tgt, rx1146_tgt, rx1146_off
- rx1146_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1150_done
- goto rxscan1150_scan
- rxscan1150_loop:
- ($P10) = rx1146_cur."from"()
- inc $P10
- set rx1146_pos, $P10
- ge rx1146_pos, rx1146_eos, rxscan1150_done
- rxscan1150_scan:
- set_addr $I10, rxscan1150_loop
- rx1146_cur."!mark_push"(0, rx1146_pos, $I10)
- rxscan1150_done:
-.annotate "line", 498
+.sub "infix:sym<=:=>" :subid("295_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1154_tgt
+ .local int rx1154_pos
+ .local int rx1154_off
+ .local int rx1154_eos
+ .local int rx1154_rep
+ .local pmc rx1154_cur
+ (rx1154_cur, rx1154_pos, rx1154_tgt) = self."!cursor_start"()
+ rx1154_cur."!cursor_debug"("START ", "infix:sym<=:=>")
+ .lex unicode:"$\x{a2}", rx1154_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1154_eos, rx1154_tgt
+ set rx1154_off, 0
+ lt rx1154_pos, 2, rx1154_start
+ sub rx1154_off, rx1154_pos, 1
+ substr rx1154_tgt, rx1154_tgt, rx1154_off
+ rx1154_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1158_done
+ goto rxscan1158_scan
+ rxscan1158_loop:
+ ($P10) = rx1154_cur."from"()
+ inc $P10
+ set rx1154_pos, $P10
+ ge rx1154_pos, rx1154_eos, rxscan1158_done
+ rxscan1158_scan:
+ set_addr $I10, rxscan1158_loop
+ rx1154_cur."!mark_push"(0, rx1154_pos, $I10)
+ rxscan1158_done:
+.annotate "line", 503
# rx subcapture "sym"
- set_addr $I10, rxcap_1151_fail
- rx1146_cur."!mark_push"(0, rx1146_pos, $I10)
+ set_addr $I10, rxcap_1159_fail
+ rx1154_cur."!mark_push"(0, rx1154_pos, $I10)
# rx literal "=:="
- add $I11, rx1146_pos, 3
- gt $I11, rx1146_eos, rx1146_fail
- sub $I11, rx1146_pos, rx1146_off
- substr $S10, rx1146_tgt, $I11, 3
- ne $S10, "=:=", rx1146_fail
- add rx1146_pos, 3
- set_addr $I10, rxcap_1151_fail
- ($I12, $I11) = rx1146_cur."!mark_peek"($I10)
- rx1146_cur."!cursor_pos"($I11)
- ($P10) = rx1146_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1146_pos, "")
- rx1146_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1154_pos, 3
+ gt $I11, rx1154_eos, rx1154_fail
+ sub $I11, rx1154_pos, rx1154_off
+ substr $S10, rx1154_tgt, $I11, 3
+ ne $S10, "=:=", rx1154_fail
+ add rx1154_pos, 3
+ set_addr $I10, rxcap_1159_fail
+ ($I12, $I11) = rx1154_cur."!mark_peek"($I10)
+ rx1154_cur."!cursor_pos"($I11)
+ ($P10) = rx1154_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1154_pos, "")
+ rx1154_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1151_done
- rxcap_1151_fail:
- goto rx1146_fail
- rxcap_1151_done:
+ goto rxcap_1159_done
+ rxcap_1159_fail:
+ goto rx1154_fail
+ rxcap_1159_done:
# rx subrule "O" subtype=capture negate=
- rx1146_cur."!cursor_pos"(rx1146_pos)
- $P10 = rx1146_cur."O"("%relational, :pirop<issame>")
- unless $P10, rx1146_fail
- rx1146_cur."!mark_push"(0, -1, 0, $P10)
+ rx1154_cur."!cursor_pos"(rx1154_pos)
+ $P10 = rx1154_cur."O"("%relational, :pirop<issame>")
+ unless $P10, rx1154_fail
+ rx1154_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1146_pos = $P10."pos"()
+ rx1154_pos = $P10."pos"()
# rx pass
- rx1146_cur."!cursor_pass"(rx1146_pos, "infix:sym<=:=>")
- rx1146_cur."!cursor_debug"("PASS ", "infix:sym<=:=>", " at pos=", rx1146_pos)
- .return (rx1146_cur)
- rx1146_fail:
-.annotate "line", 417
- (rx1146_rep, rx1146_pos, $I10, $P10) = rx1146_cur."!mark_fail"(0)
- lt rx1146_pos, -1, rx1146_done
- eq rx1146_pos, -1, rx1146_fail
- jump $I10
- rx1146_done:
- rx1146_cur."!cursor_fail"()
- rx1146_cur."!cursor_debug"("FAIL ", "infix:sym<=:=>")
- .return (rx1146_cur)
+ rx1154_cur."!cursor_pass"(rx1154_pos, "infix:sym<=:=>")
+ rx1154_cur."!cursor_debug"("PASS ", "infix:sym<=:=>", " at pos=", rx1154_pos)
+ .return (rx1154_cur)
+ rx1154_fail:
+.annotate "line", 422
+ (rx1154_rep, rx1154_pos, $I10, $P10) = rx1154_cur."!mark_fail"(0)
+ lt rx1154_pos, -1, rx1154_done
+ eq rx1154_pos, -1, rx1154_fail
+ jump $I10
+ rx1154_done:
+ rx1154_cur."!cursor_fail"()
+ rx1154_cur."!cursor_debug"("FAIL ", "infix:sym<=:=>")
+ .return (rx1154_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>" :subid("294_1267204702.05125") :method
-.annotate "line", 417
- $P1148 = self."!PREFIX__!subrule"("O", "=:=")
- new $P1149, "ResizablePMCArray"
- push $P1149, $P1148
- .return ($P1149)
+.sub "!PREFIX__infix:sym<=:=>" :subid("296_1272816833.94956") :method
+.annotate "line", 422
+ $P1156 = self."!PREFIX__!subrule"("O", "=:=")
+ new $P1157, "ResizablePMCArray"
+ push $P1157, $P1156
+ .return ($P1157)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>" :subid("295_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1153_tgt
- .local int rx1153_pos
- .local int rx1153_off
- .local int rx1153_eos
- .local int rx1153_rep
- .local pmc rx1153_cur
- (rx1153_cur, rx1153_pos, rx1153_tgt) = self."!cursor_start"()
- rx1153_cur."!cursor_debug"("START ", "infix:sym<~~>")
- .lex unicode:"$\x{a2}", rx1153_cur
- .local pmc match
- .lex "$/", match
- length rx1153_eos, rx1153_tgt
- set rx1153_off, 0
- lt rx1153_pos, 2, rx1153_start
- sub rx1153_off, rx1153_pos, 1
- substr rx1153_tgt, rx1153_tgt, rx1153_off
- rx1153_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1157_done
- goto rxscan1157_scan
- rxscan1157_loop:
- ($P10) = rx1153_cur."from"()
- inc $P10
- set rx1153_pos, $P10
- ge rx1153_pos, rx1153_eos, rxscan1157_done
- rxscan1157_scan:
- set_addr $I10, rxscan1157_loop
- rx1153_cur."!mark_push"(0, rx1153_pos, $I10)
- rxscan1157_done:
-.annotate "line", 499
+.sub "infix:sym<~~>" :subid("297_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1161_tgt
+ .local int rx1161_pos
+ .local int rx1161_off
+ .local int rx1161_eos
+ .local int rx1161_rep
+ .local pmc rx1161_cur
+ (rx1161_cur, rx1161_pos, rx1161_tgt) = self."!cursor_start"()
+ rx1161_cur."!cursor_debug"("START ", "infix:sym<~~>")
+ .lex unicode:"$\x{a2}", rx1161_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1161_eos, rx1161_tgt
+ set rx1161_off, 0
+ lt rx1161_pos, 2, rx1161_start
+ sub rx1161_off, rx1161_pos, 1
+ substr rx1161_tgt, rx1161_tgt, rx1161_off
+ rx1161_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1165_done
+ goto rxscan1165_scan
+ rxscan1165_loop:
+ ($P10) = rx1161_cur."from"()
+ inc $P10
+ set rx1161_pos, $P10
+ ge rx1161_pos, rx1161_eos, rxscan1165_done
+ rxscan1165_scan:
+ set_addr $I10, rxscan1165_loop
+ rx1161_cur."!mark_push"(0, rx1161_pos, $I10)
+ rxscan1165_done:
+.annotate "line", 504
# rx subcapture "sym"
- set_addr $I10, rxcap_1158_fail
- rx1153_cur."!mark_push"(0, rx1153_pos, $I10)
+ set_addr $I10, rxcap_1166_fail
+ rx1161_cur."!mark_push"(0, rx1161_pos, $I10)
# rx literal "~~"
- add $I11, rx1153_pos, 2
- gt $I11, rx1153_eos, rx1153_fail
- sub $I11, rx1153_pos, rx1153_off
- substr $S10, rx1153_tgt, $I11, 2
- ne $S10, "~~", rx1153_fail
- add rx1153_pos, 2
- set_addr $I10, rxcap_1158_fail
- ($I12, $I11) = rx1153_cur."!mark_peek"($I10)
- rx1153_cur."!cursor_pos"($I11)
- ($P10) = rx1153_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1153_pos, "")
- rx1153_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1161_pos, 2
+ gt $I11, rx1161_eos, rx1161_fail
+ sub $I11, rx1161_pos, rx1161_off
+ substr $S10, rx1161_tgt, $I11, 2
+ ne $S10, "~~", rx1161_fail
+ add rx1161_pos, 2
+ set_addr $I10, rxcap_1166_fail
+ ($I12, $I11) = rx1161_cur."!mark_peek"($I10)
+ rx1161_cur."!cursor_pos"($I11)
+ ($P10) = rx1161_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1161_pos, "")
+ rx1161_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1158_done
- rxcap_1158_fail:
- goto rx1153_fail
- rxcap_1158_done:
+ goto rxcap_1166_done
+ rxcap_1166_fail:
+ goto rx1161_fail
+ rxcap_1166_done:
# rx subrule "O" subtype=capture negate=
- rx1153_cur."!cursor_pos"(rx1153_pos)
- $P10 = rx1153_cur."O"("%relational, :reducecheck<smartmatch>")
- unless $P10, rx1153_fail
- rx1153_cur."!mark_push"(0, -1, 0, $P10)
+ rx1161_cur."!cursor_pos"(rx1161_pos)
+ $P10 = rx1161_cur."O"("%relational, :reducecheck<smartmatch>")
+ unless $P10, rx1161_fail
+ rx1161_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1153_pos = $P10."pos"()
+ rx1161_pos = $P10."pos"()
# rx pass
- rx1153_cur."!cursor_pass"(rx1153_pos, "infix:sym<~~>")
- rx1153_cur."!cursor_debug"("PASS ", "infix:sym<~~>", " at pos=", rx1153_pos)
- .return (rx1153_cur)
- rx1153_fail:
-.annotate "line", 417
- (rx1153_rep, rx1153_pos, $I10, $P10) = rx1153_cur."!mark_fail"(0)
- lt rx1153_pos, -1, rx1153_done
- eq rx1153_pos, -1, rx1153_fail
- jump $I10
- rx1153_done:
- rx1153_cur."!cursor_fail"()
- rx1153_cur."!cursor_debug"("FAIL ", "infix:sym<~~>")
- .return (rx1153_cur)
+ rx1161_cur."!cursor_pass"(rx1161_pos, "infix:sym<~~>")
+ rx1161_cur."!cursor_debug"("PASS ", "infix:sym<~~>", " at pos=", rx1161_pos)
+ .return (rx1161_cur)
+ rx1161_fail:
+.annotate "line", 422
+ (rx1161_rep, rx1161_pos, $I10, $P10) = rx1161_cur."!mark_fail"(0)
+ lt rx1161_pos, -1, rx1161_done
+ eq rx1161_pos, -1, rx1161_fail
+ jump $I10
+ rx1161_done:
+ rx1161_cur."!cursor_fail"()
+ rx1161_cur."!cursor_debug"("FAIL ", "infix:sym<~~>")
+ .return (rx1161_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>" :subid("296_1267204702.05125") :method
-.annotate "line", 417
- $P1155 = self."!PREFIX__!subrule"("O", "~~")
- new $P1156, "ResizablePMCArray"
- push $P1156, $P1155
- .return ($P1156)
+.sub "!PREFIX__infix:sym<~~>" :subid("298_1272816833.94956") :method
+.annotate "line", 422
+ $P1163 = self."!PREFIX__!subrule"("O", "~~")
+ new $P1164, "ResizablePMCArray"
+ push $P1164, $P1163
+ .return ($P1164)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>" :subid("297_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1160_tgt
- .local int rx1160_pos
- .local int rx1160_off
- .local int rx1160_eos
- .local int rx1160_rep
- .local pmc rx1160_cur
- (rx1160_cur, rx1160_pos, rx1160_tgt) = self."!cursor_start"()
- rx1160_cur."!cursor_debug"("START ", "infix:sym<&&>")
- .lex unicode:"$\x{a2}", rx1160_cur
- .local pmc match
- .lex "$/", match
- length rx1160_eos, rx1160_tgt
- set rx1160_off, 0
- lt rx1160_pos, 2, rx1160_start
- sub rx1160_off, rx1160_pos, 1
- substr rx1160_tgt, rx1160_tgt, rx1160_off
- rx1160_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1164_done
- goto rxscan1164_scan
- rxscan1164_loop:
- ($P10) = rx1160_cur."from"()
- inc $P10
- set rx1160_pos, $P10
- ge rx1160_pos, rx1160_eos, rxscan1164_done
- rxscan1164_scan:
- set_addr $I10, rxscan1164_loop
- rx1160_cur."!mark_push"(0, rx1160_pos, $I10)
- rxscan1164_done:
-.annotate "line", 501
+.sub "infix:sym<&&>" :subid("299_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1168_tgt
+ .local int rx1168_pos
+ .local int rx1168_off
+ .local int rx1168_eos
+ .local int rx1168_rep
+ .local pmc rx1168_cur
+ (rx1168_cur, rx1168_pos, rx1168_tgt) = self."!cursor_start"()
+ rx1168_cur."!cursor_debug"("START ", "infix:sym<&&>")
+ .lex unicode:"$\x{a2}", rx1168_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1168_eos, rx1168_tgt
+ set rx1168_off, 0
+ lt rx1168_pos, 2, rx1168_start
+ sub rx1168_off, rx1168_pos, 1
+ substr rx1168_tgt, rx1168_tgt, rx1168_off
+ rx1168_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1172_done
+ goto rxscan1172_scan
+ rxscan1172_loop:
+ ($P10) = rx1168_cur."from"()
+ inc $P10
+ set rx1168_pos, $P10
+ ge rx1168_pos, rx1168_eos, rxscan1172_done
+ rxscan1172_scan:
+ set_addr $I10, rxscan1172_loop
+ rx1168_cur."!mark_push"(0, rx1168_pos, $I10)
+ rxscan1172_done:
+.annotate "line", 506
# rx subcapture "sym"
- set_addr $I10, rxcap_1165_fail
- rx1160_cur."!mark_push"(0, rx1160_pos, $I10)
+ set_addr $I10, rxcap_1173_fail
+ rx1168_cur."!mark_push"(0, rx1168_pos, $I10)
# rx literal "&&"
- add $I11, rx1160_pos, 2
- gt $I11, rx1160_eos, rx1160_fail
- sub $I11, rx1160_pos, rx1160_off
- substr $S10, rx1160_tgt, $I11, 2
- ne $S10, "&&", rx1160_fail
- add rx1160_pos, 2
- set_addr $I10, rxcap_1165_fail
- ($I12, $I11) = rx1160_cur."!mark_peek"($I10)
- rx1160_cur."!cursor_pos"($I11)
- ($P10) = rx1160_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1160_pos, "")
- rx1160_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1168_pos, 2
+ gt $I11, rx1168_eos, rx1168_fail
+ sub $I11, rx1168_pos, rx1168_off
+ substr $S10, rx1168_tgt, $I11, 2
+ ne $S10, "&&", rx1168_fail
+ add rx1168_pos, 2
+ set_addr $I10, rxcap_1173_fail
+ ($I12, $I11) = rx1168_cur."!mark_peek"($I10)
+ rx1168_cur."!cursor_pos"($I11)
+ ($P10) = rx1168_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1168_pos, "")
+ rx1168_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1165_done
- rxcap_1165_fail:
- goto rx1160_fail
- rxcap_1165_done:
+ goto rxcap_1173_done
+ rxcap_1173_fail:
+ goto rx1168_fail
+ rxcap_1173_done:
# rx subrule "O" subtype=capture negate=
- rx1160_cur."!cursor_pos"(rx1160_pos)
- $P10 = rx1160_cur."O"("%tight_and, :pasttype<if>")
- unless $P10, rx1160_fail
- rx1160_cur."!mark_push"(0, -1, 0, $P10)
+ rx1168_cur."!cursor_pos"(rx1168_pos)
+ $P10 = rx1168_cur."O"("%tight_and, :pasttype<if>")
+ unless $P10, rx1168_fail
+ rx1168_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1160_pos = $P10."pos"()
+ rx1168_pos = $P10."pos"()
# rx pass
- rx1160_cur."!cursor_pass"(rx1160_pos, "infix:sym<&&>")
- rx1160_cur."!cursor_debug"("PASS ", "infix:sym<&&>", " at pos=", rx1160_pos)
- .return (rx1160_cur)
- rx1160_fail:
-.annotate "line", 417
- (rx1160_rep, rx1160_pos, $I10, $P10) = rx1160_cur."!mark_fail"(0)
- lt rx1160_pos, -1, rx1160_done
- eq rx1160_pos, -1, rx1160_fail
- jump $I10
- rx1160_done:
- rx1160_cur."!cursor_fail"()
- rx1160_cur."!cursor_debug"("FAIL ", "infix:sym<&&>")
- .return (rx1160_cur)
+ rx1168_cur."!cursor_pass"(rx1168_pos, "infix:sym<&&>")
+ rx1168_cur."!cursor_debug"("PASS ", "infix:sym<&&>", " at pos=", rx1168_pos)
+ .return (rx1168_cur)
+ rx1168_fail:
+.annotate "line", 422
+ (rx1168_rep, rx1168_pos, $I10, $P10) = rx1168_cur."!mark_fail"(0)
+ lt rx1168_pos, -1, rx1168_done
+ eq rx1168_pos, -1, rx1168_fail
+ jump $I10
+ rx1168_done:
+ rx1168_cur."!cursor_fail"()
+ rx1168_cur."!cursor_debug"("FAIL ", "infix:sym<&&>")
+ .return (rx1168_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>" :subid("298_1267204702.05125") :method
-.annotate "line", 417
- $P1162 = self."!PREFIX__!subrule"("O", "&&")
- new $P1163, "ResizablePMCArray"
- push $P1163, $P1162
- .return ($P1163)
+.sub "!PREFIX__infix:sym<&&>" :subid("300_1272816833.94956") :method
+.annotate "line", 422
+ $P1170 = self."!PREFIX__!subrule"("O", "&&")
+ new $P1171, "ResizablePMCArray"
+ push $P1171, $P1170
+ .return ($P1171)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>" :subid("299_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1167_tgt
- .local int rx1167_pos
- .local int rx1167_off
- .local int rx1167_eos
- .local int rx1167_rep
- .local pmc rx1167_cur
- (rx1167_cur, rx1167_pos, rx1167_tgt) = self."!cursor_start"()
- rx1167_cur."!cursor_debug"("START ", "infix:sym<||>")
- .lex unicode:"$\x{a2}", rx1167_cur
- .local pmc match
- .lex "$/", match
- length rx1167_eos, rx1167_tgt
- set rx1167_off, 0
- lt rx1167_pos, 2, rx1167_start
- sub rx1167_off, rx1167_pos, 1
- substr rx1167_tgt, rx1167_tgt, rx1167_off
- rx1167_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1171_done
- goto rxscan1171_scan
- rxscan1171_loop:
- ($P10) = rx1167_cur."from"()
- inc $P10
- set rx1167_pos, $P10
- ge rx1167_pos, rx1167_eos, rxscan1171_done
- rxscan1171_scan:
- set_addr $I10, rxscan1171_loop
- rx1167_cur."!mark_push"(0, rx1167_pos, $I10)
- rxscan1171_done:
-.annotate "line", 503
+.sub "infix:sym<||>" :subid("301_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1175_tgt
+ .local int rx1175_pos
+ .local int rx1175_off
+ .local int rx1175_eos
+ .local int rx1175_rep
+ .local pmc rx1175_cur
+ (rx1175_cur, rx1175_pos, rx1175_tgt) = self."!cursor_start"()
+ rx1175_cur."!cursor_debug"("START ", "infix:sym<||>")
+ .lex unicode:"$\x{a2}", rx1175_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1175_eos, rx1175_tgt
+ set rx1175_off, 0
+ lt rx1175_pos, 2, rx1175_start
+ sub rx1175_off, rx1175_pos, 1
+ substr rx1175_tgt, rx1175_tgt, rx1175_off
+ rx1175_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1179_done
+ goto rxscan1179_scan
+ rxscan1179_loop:
+ ($P10) = rx1175_cur."from"()
+ inc $P10
+ set rx1175_pos, $P10
+ ge rx1175_pos, rx1175_eos, rxscan1179_done
+ rxscan1179_scan:
+ set_addr $I10, rxscan1179_loop
+ rx1175_cur."!mark_push"(0, rx1175_pos, $I10)
+ rxscan1179_done:
+.annotate "line", 508
# rx subcapture "sym"
- set_addr $I10, rxcap_1172_fail
- rx1167_cur."!mark_push"(0, rx1167_pos, $I10)
+ set_addr $I10, rxcap_1180_fail
+ rx1175_cur."!mark_push"(0, rx1175_pos, $I10)
# rx literal "||"
- add $I11, rx1167_pos, 2
- gt $I11, rx1167_eos, rx1167_fail
- sub $I11, rx1167_pos, rx1167_off
- substr $S10, rx1167_tgt, $I11, 2
- ne $S10, "||", rx1167_fail
- add rx1167_pos, 2
- set_addr $I10, rxcap_1172_fail
- ($I12, $I11) = rx1167_cur."!mark_peek"($I10)
- rx1167_cur."!cursor_pos"($I11)
- ($P10) = rx1167_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1167_pos, "")
- rx1167_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1175_pos, 2
+ gt $I11, rx1175_eos, rx1175_fail
+ sub $I11, rx1175_pos, rx1175_off
+ substr $S10, rx1175_tgt, $I11, 2
+ ne $S10, "||", rx1175_fail
+ add rx1175_pos, 2
+ set_addr $I10, rxcap_1180_fail
+ ($I12, $I11) = rx1175_cur."!mark_peek"($I10)
+ rx1175_cur."!cursor_pos"($I11)
+ ($P10) = rx1175_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1175_pos, "")
+ rx1175_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1172_done
- rxcap_1172_fail:
- goto rx1167_fail
- rxcap_1172_done:
+ goto rxcap_1180_done
+ rxcap_1180_fail:
+ goto rx1175_fail
+ rxcap_1180_done:
# rx subrule "O" subtype=capture negate=
- rx1167_cur."!cursor_pos"(rx1167_pos)
- $P10 = rx1167_cur."O"("%tight_or, :pasttype<unless>")
- unless $P10, rx1167_fail
- rx1167_cur."!mark_push"(0, -1, 0, $P10)
+ rx1175_cur."!cursor_pos"(rx1175_pos)
+ $P10 = rx1175_cur."O"("%tight_or, :pasttype<unless>")
+ unless $P10, rx1175_fail
+ rx1175_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1167_pos = $P10."pos"()
+ rx1175_pos = $P10."pos"()
# rx pass
- rx1167_cur."!cursor_pass"(rx1167_pos, "infix:sym<||>")
- rx1167_cur."!cursor_debug"("PASS ", "infix:sym<||>", " at pos=", rx1167_pos)
- .return (rx1167_cur)
- rx1167_fail:
-.annotate "line", 417
- (rx1167_rep, rx1167_pos, $I10, $P10) = rx1167_cur."!mark_fail"(0)
- lt rx1167_pos, -1, rx1167_done
- eq rx1167_pos, -1, rx1167_fail
- jump $I10
- rx1167_done:
- rx1167_cur."!cursor_fail"()
- rx1167_cur."!cursor_debug"("FAIL ", "infix:sym<||>")
- .return (rx1167_cur)
+ rx1175_cur."!cursor_pass"(rx1175_pos, "infix:sym<||>")
+ rx1175_cur."!cursor_debug"("PASS ", "infix:sym<||>", " at pos=", rx1175_pos)
+ .return (rx1175_cur)
+ rx1175_fail:
+.annotate "line", 422
+ (rx1175_rep, rx1175_pos, $I10, $P10) = rx1175_cur."!mark_fail"(0)
+ lt rx1175_pos, -1, rx1175_done
+ eq rx1175_pos, -1, rx1175_fail
+ jump $I10
+ rx1175_done:
+ rx1175_cur."!cursor_fail"()
+ rx1175_cur."!cursor_debug"("FAIL ", "infix:sym<||>")
+ .return (rx1175_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>" :subid("300_1267204702.05125") :method
-.annotate "line", 417
- $P1169 = self."!PREFIX__!subrule"("O", "||")
- new $P1170, "ResizablePMCArray"
- push $P1170, $P1169
- .return ($P1170)
+.sub "!PREFIX__infix:sym<||>" :subid("302_1272816833.94956") :method
+.annotate "line", 422
+ $P1177 = self."!PREFIX__!subrule"("O", "||")
+ new $P1178, "ResizablePMCArray"
+ push $P1178, $P1177
+ .return ($P1178)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>" :subid("301_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1174_tgt
- .local int rx1174_pos
- .local int rx1174_off
- .local int rx1174_eos
- .local int rx1174_rep
- .local pmc rx1174_cur
- (rx1174_cur, rx1174_pos, rx1174_tgt) = self."!cursor_start"()
- rx1174_cur."!cursor_debug"("START ", "infix:sym<//>")
- .lex unicode:"$\x{a2}", rx1174_cur
- .local pmc match
- .lex "$/", match
- length rx1174_eos, rx1174_tgt
- set rx1174_off, 0
- lt rx1174_pos, 2, rx1174_start
- sub rx1174_off, rx1174_pos, 1
- substr rx1174_tgt, rx1174_tgt, rx1174_off
- rx1174_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1178_done
- goto rxscan1178_scan
- rxscan1178_loop:
- ($P10) = rx1174_cur."from"()
- inc $P10
- set rx1174_pos, $P10
- ge rx1174_pos, rx1174_eos, rxscan1178_done
- rxscan1178_scan:
- set_addr $I10, rxscan1178_loop
- rx1174_cur."!mark_push"(0, rx1174_pos, $I10)
- rxscan1178_done:
-.annotate "line", 504
+.sub "infix:sym<//>" :subid("303_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1182_tgt
+ .local int rx1182_pos
+ .local int rx1182_off
+ .local int rx1182_eos
+ .local int rx1182_rep
+ .local pmc rx1182_cur
+ (rx1182_cur, rx1182_pos, rx1182_tgt) = self."!cursor_start"()
+ rx1182_cur."!cursor_debug"("START ", "infix:sym<//>")
+ .lex unicode:"$\x{a2}", rx1182_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1182_eos, rx1182_tgt
+ set rx1182_off, 0
+ lt rx1182_pos, 2, rx1182_start
+ sub rx1182_off, rx1182_pos, 1
+ substr rx1182_tgt, rx1182_tgt, rx1182_off
+ rx1182_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1186_done
+ goto rxscan1186_scan
+ rxscan1186_loop:
+ ($P10) = rx1182_cur."from"()
+ inc $P10
+ set rx1182_pos, $P10
+ ge rx1182_pos, rx1182_eos, rxscan1186_done
+ rxscan1186_scan:
+ set_addr $I10, rxscan1186_loop
+ rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
+ rxscan1186_done:
+.annotate "line", 509
# rx subcapture "sym"
- set_addr $I10, rxcap_1179_fail
- rx1174_cur."!mark_push"(0, rx1174_pos, $I10)
+ set_addr $I10, rxcap_1187_fail
+ rx1182_cur."!mark_push"(0, rx1182_pos, $I10)
# rx literal "//"
- add $I11, rx1174_pos, 2
- gt $I11, rx1174_eos, rx1174_fail
- sub $I11, rx1174_pos, rx1174_off
- substr $S10, rx1174_tgt, $I11, 2
- ne $S10, "//", rx1174_fail
- add rx1174_pos, 2
- set_addr $I10, rxcap_1179_fail
- ($I12, $I11) = rx1174_cur."!mark_peek"($I10)
- rx1174_cur."!cursor_pos"($I11)
- ($P10) = rx1174_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1174_pos, "")
- rx1174_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1182_pos, 2
+ gt $I11, rx1182_eos, rx1182_fail
+ sub $I11, rx1182_pos, rx1182_off
+ substr $S10, rx1182_tgt, $I11, 2
+ ne $S10, "//", rx1182_fail
+ add rx1182_pos, 2
+ set_addr $I10, rxcap_1187_fail
+ ($I12, $I11) = rx1182_cur."!mark_peek"($I10)
+ rx1182_cur."!cursor_pos"($I11)
+ ($P10) = rx1182_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1182_pos, "")
+ rx1182_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1179_done
- rxcap_1179_fail:
- goto rx1174_fail
- rxcap_1179_done:
+ goto rxcap_1187_done
+ rxcap_1187_fail:
+ goto rx1182_fail
+ rxcap_1187_done:
# rx subrule "O" subtype=capture negate=
- rx1174_cur."!cursor_pos"(rx1174_pos)
- $P10 = rx1174_cur."O"("%tight_or, :pasttype<def_or>")
- unless $P10, rx1174_fail
- rx1174_cur."!mark_push"(0, -1, 0, $P10)
+ rx1182_cur."!cursor_pos"(rx1182_pos)
+ $P10 = rx1182_cur."O"("%tight_or, :pasttype<def_or>")
+ unless $P10, rx1182_fail
+ rx1182_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1174_pos = $P10."pos"()
+ rx1182_pos = $P10."pos"()
# rx pass
- rx1174_cur."!cursor_pass"(rx1174_pos, "infix:sym<//>")
- rx1174_cur."!cursor_debug"("PASS ", "infix:sym<//>", " at pos=", rx1174_pos)
- .return (rx1174_cur)
- rx1174_fail:
-.annotate "line", 417
- (rx1174_rep, rx1174_pos, $I10, $P10) = rx1174_cur."!mark_fail"(0)
- lt rx1174_pos, -1, rx1174_done
- eq rx1174_pos, -1, rx1174_fail
- jump $I10
- rx1174_done:
- rx1174_cur."!cursor_fail"()
- rx1174_cur."!cursor_debug"("FAIL ", "infix:sym<//>")
- .return (rx1174_cur)
+ rx1182_cur."!cursor_pass"(rx1182_pos, "infix:sym<//>")
+ rx1182_cur."!cursor_debug"("PASS ", "infix:sym<//>", " at pos=", rx1182_pos)
+ .return (rx1182_cur)
+ rx1182_fail:
+.annotate "line", 422
+ (rx1182_rep, rx1182_pos, $I10, $P10) = rx1182_cur."!mark_fail"(0)
+ lt rx1182_pos, -1, rx1182_done
+ eq rx1182_pos, -1, rx1182_fail
+ jump $I10
+ rx1182_done:
+ rx1182_cur."!cursor_fail"()
+ rx1182_cur."!cursor_debug"("FAIL ", "infix:sym<//>")
+ .return (rx1182_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>" :subid("302_1267204702.05125") :method
-.annotate "line", 417
- $P1176 = self."!PREFIX__!subrule"("O", "//")
- new $P1177, "ResizablePMCArray"
- push $P1177, $P1176
- .return ($P1177)
+.sub "!PREFIX__infix:sym<//>" :subid("304_1272816833.94956") :method
+.annotate "line", 422
+ $P1184 = self."!PREFIX__!subrule"("O", "//")
+ new $P1185, "ResizablePMCArray"
+ push $P1185, $P1184
+ .return ($P1185)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>" :subid("303_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1181_tgt
- .local int rx1181_pos
- .local int rx1181_off
- .local int rx1181_eos
- .local int rx1181_rep
- .local pmc rx1181_cur
- (rx1181_cur, rx1181_pos, rx1181_tgt) = self."!cursor_start"()
- rx1181_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
- .lex unicode:"$\x{a2}", rx1181_cur
- .local pmc match
- .lex "$/", match
- length rx1181_eos, rx1181_tgt
- set rx1181_off, 0
- lt rx1181_pos, 2, rx1181_start
- sub rx1181_off, rx1181_pos, 1
- substr rx1181_tgt, rx1181_tgt, rx1181_off
- rx1181_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1185_done
- goto rxscan1185_scan
- rxscan1185_loop:
- ($P10) = rx1181_cur."from"()
- inc $P10
- set rx1181_pos, $P10
- ge rx1181_pos, rx1181_eos, rxscan1185_done
- rxscan1185_scan:
- set_addr $I10, rxscan1185_loop
- rx1181_cur."!mark_push"(0, rx1181_pos, $I10)
- rxscan1185_done:
-.annotate "line", 507
+.sub "infix:sym<?? !!>" :subid("305_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1189_tgt
+ .local int rx1189_pos
+ .local int rx1189_off
+ .local int rx1189_eos
+ .local int rx1189_rep
+ .local pmc rx1189_cur
+ (rx1189_cur, rx1189_pos, rx1189_tgt) = self."!cursor_start"()
+ rx1189_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
+ .lex unicode:"$\x{a2}", rx1189_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1189_eos, rx1189_tgt
+ set rx1189_off, 0
+ lt rx1189_pos, 2, rx1189_start
+ sub rx1189_off, rx1189_pos, 1
+ substr rx1189_tgt, rx1189_tgt, rx1189_off
+ rx1189_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1193_done
+ goto rxscan1193_scan
+ rxscan1193_loop:
+ ($P10) = rx1189_cur."from"()
+ inc $P10
+ set rx1189_pos, $P10
+ ge rx1189_pos, rx1189_eos, rxscan1193_done
+ rxscan1193_scan:
+ set_addr $I10, rxscan1193_loop
+ rx1189_cur."!mark_push"(0, rx1189_pos, $I10)
+ rxscan1193_done:
+.annotate "line", 512
# rx literal "??"
- add $I11, rx1181_pos, 2
- gt $I11, rx1181_eos, rx1181_fail
- sub $I11, rx1181_pos, rx1181_off
- substr $S10, rx1181_tgt, $I11, 2
- ne $S10, "??", rx1181_fail
- add rx1181_pos, 2
-.annotate "line", 508
- # rx subrule "ws" subtype=method negate=
- rx1181_cur."!cursor_pos"(rx1181_pos)
- $P10 = rx1181_cur."ws"()
- unless $P10, rx1181_fail
- rx1181_pos = $P10."pos"()
-.annotate "line", 509
+ add $I11, rx1189_pos, 2
+ gt $I11, rx1189_eos, rx1189_fail
+ sub $I11, rx1189_pos, rx1189_off
+ substr $S10, rx1189_tgt, $I11, 2
+ ne $S10, "??", rx1189_fail
+ add rx1189_pos, 2
+.annotate "line", 513
+ # rx subrule "ws" subtype=method negate=
+ rx1189_cur."!cursor_pos"(rx1189_pos)
+ $P10 = rx1189_cur."ws"()
+ unless $P10, rx1189_fail
+ rx1189_pos = $P10."pos"()
+.annotate "line", 514
# rx subrule "EXPR" subtype=capture negate=
- rx1181_cur."!cursor_pos"(rx1181_pos)
- $P10 = rx1181_cur."EXPR"("i=")
- unless $P10, rx1181_fail
- rx1181_cur."!mark_push"(0, -1, 0, $P10)
+ rx1189_cur."!cursor_pos"(rx1189_pos)
+ $P10 = rx1189_cur."EXPR"("i=")
+ unless $P10, rx1189_fail
+ rx1189_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx1181_pos = $P10."pos"()
-.annotate "line", 510
+ rx1189_pos = $P10."pos"()
+.annotate "line", 515
# rx literal "!!"
- add $I11, rx1181_pos, 2
- gt $I11, rx1181_eos, rx1181_fail
- sub $I11, rx1181_pos, rx1181_off
- substr $S10, rx1181_tgt, $I11, 2
- ne $S10, "!!", rx1181_fail
- add rx1181_pos, 2
-.annotate "line", 511
+ add $I11, rx1189_pos, 2
+ gt $I11, rx1189_eos, rx1189_fail
+ sub $I11, rx1189_pos, rx1189_off
+ substr $S10, rx1189_tgt, $I11, 2
+ ne $S10, "!!", rx1189_fail
+ add rx1189_pos, 2
+.annotate "line", 516
# rx subrule "O" subtype=capture negate=
- rx1181_cur."!cursor_pos"(rx1181_pos)
- $P10 = rx1181_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
- unless $P10, rx1181_fail
- rx1181_cur."!mark_push"(0, -1, 0, $P10)
+ rx1189_cur."!cursor_pos"(rx1189_pos)
+ $P10 = rx1189_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
+ unless $P10, rx1189_fail
+ rx1189_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1181_pos = $P10."pos"()
-.annotate "line", 506
+ rx1189_pos = $P10."pos"()
+.annotate "line", 511
# rx pass
- rx1181_cur."!cursor_pass"(rx1181_pos, "infix:sym<?? !!>")
- rx1181_cur."!cursor_debug"("PASS ", "infix:sym<?? !!>", " at pos=", rx1181_pos)
- .return (rx1181_cur)
- rx1181_fail:
-.annotate "line", 417
- (rx1181_rep, rx1181_pos, $I10, $P10) = rx1181_cur."!mark_fail"(0)
- lt rx1181_pos, -1, rx1181_done
- eq rx1181_pos, -1, rx1181_fail
- jump $I10
- rx1181_done:
- rx1181_cur."!cursor_fail"()
- rx1181_cur."!cursor_debug"("FAIL ", "infix:sym<?? !!>")
- .return (rx1181_cur)
+ rx1189_cur."!cursor_pass"(rx1189_pos, "infix:sym<?? !!>")
+ rx1189_cur."!cursor_debug"("PASS ", "infix:sym<?? !!>", " at pos=", rx1189_pos)
+ .return (rx1189_cur)
+ rx1189_fail:
+.annotate "line", 422
+ (rx1189_rep, rx1189_pos, $I10, $P10) = rx1189_cur."!mark_fail"(0)
+ lt rx1189_pos, -1, rx1189_done
+ eq rx1189_pos, -1, rx1189_fail
+ jump $I10
+ rx1189_done:
+ rx1189_cur."!cursor_fail"()
+ rx1189_cur."!cursor_debug"("FAIL ", "infix:sym<?? !!>")
+ .return (rx1189_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>" :subid("304_1267204702.05125") :method
-.annotate "line", 417
- $P1183 = self."!PREFIX__!subrule"("", "??")
- new $P1184, "ResizablePMCArray"
- push $P1184, $P1183
- .return ($P1184)
+.sub "!PREFIX__infix:sym<?? !!>" :subid("306_1272816833.94956") :method
+.annotate "line", 422
+ $P1191 = self."!PREFIX__!subrule"("", "??")
+ new $P1192, "ResizablePMCArray"
+ push $P1192, $P1191
+ .return ($P1192)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>" :subid("305_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1187_tgt
- .local int rx1187_pos
- .local int rx1187_off
- .local int rx1187_eos
- .local int rx1187_rep
- .local pmc rx1187_cur
- (rx1187_cur, rx1187_pos, rx1187_tgt) = self."!cursor_start"()
- rx1187_cur."!cursor_debug"("START ", "infix:sym<=>")
- .lex unicode:"$\x{a2}", rx1187_cur
- .local pmc match
- .lex "$/", match
- length rx1187_eos, rx1187_tgt
- set rx1187_off, 0
- lt rx1187_pos, 2, rx1187_start
- sub rx1187_off, rx1187_pos, 1
- substr rx1187_tgt, rx1187_tgt, rx1187_off
- rx1187_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1191_done
- goto rxscan1191_scan
- rxscan1191_loop:
- ($P10) = rx1187_cur."from"()
- inc $P10
- set rx1187_pos, $P10
- ge rx1187_pos, rx1187_eos, rxscan1191_done
- rxscan1191_scan:
- set_addr $I10, rxscan1191_loop
- rx1187_cur."!mark_push"(0, rx1187_pos, $I10)
- rxscan1191_done:
-.annotate "line", 515
+.sub "infix:sym<=>" :subid("307_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1195_tgt
+ .local int rx1195_pos
+ .local int rx1195_off
+ .local int rx1195_eos
+ .local int rx1195_rep
+ .local pmc rx1195_cur
+ (rx1195_cur, rx1195_pos, rx1195_tgt) = self."!cursor_start"()
+ rx1195_cur."!cursor_debug"("START ", "infix:sym<=>")
+ .lex unicode:"$\x{a2}", rx1195_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1195_eos, rx1195_tgt
+ set rx1195_off, 0
+ lt rx1195_pos, 2, rx1195_start
+ sub rx1195_off, rx1195_pos, 1
+ substr rx1195_tgt, rx1195_tgt, rx1195_off
+ rx1195_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1199_done
+ goto rxscan1199_scan
+ rxscan1199_loop:
+ ($P10) = rx1195_cur."from"()
+ inc $P10
+ set rx1195_pos, $P10
+ ge rx1195_pos, rx1195_eos, rxscan1199_done
+ rxscan1199_scan:
+ set_addr $I10, rxscan1199_loop
+ rx1195_cur."!mark_push"(0, rx1195_pos, $I10)
+ rxscan1199_done:
+.annotate "line", 520
# rx subcapture "sym"
- set_addr $I10, rxcap_1192_fail
- rx1187_cur."!mark_push"(0, rx1187_pos, $I10)
+ set_addr $I10, rxcap_1200_fail
+ rx1195_cur."!mark_push"(0, rx1195_pos, $I10)
# rx literal "="
- add $I11, rx1187_pos, 1
- gt $I11, rx1187_eos, rx1187_fail
- sub $I11, rx1187_pos, rx1187_off
- substr $S10, rx1187_tgt, $I11, 1
- ne $S10, "=", rx1187_fail
- add rx1187_pos, 1
- set_addr $I10, rxcap_1192_fail
- ($I12, $I11) = rx1187_cur."!mark_peek"($I10)
- rx1187_cur."!cursor_pos"($I11)
- ($P10) = rx1187_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1187_pos, "")
- rx1187_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1195_pos, 1
+ gt $I11, rx1195_eos, rx1195_fail
+ sub $I11, rx1195_pos, rx1195_off
+ substr $S10, rx1195_tgt, $I11, 1
+ ne $S10, "=", rx1195_fail
+ add rx1195_pos, 1
+ set_addr $I10, rxcap_1200_fail
+ ($I12, $I11) = rx1195_cur."!mark_peek"($I10)
+ rx1195_cur."!cursor_pos"($I11)
+ ($P10) = rx1195_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1195_pos, "")
+ rx1195_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1192_done
- rxcap_1192_fail:
- goto rx1187_fail
- rxcap_1192_done:
+ goto rxcap_1200_done
+ rxcap_1200_fail:
+ goto rx1195_fail
+ rxcap_1200_done:
# rx subrule "panic" subtype=method negate=
- rx1187_cur."!cursor_pos"(rx1187_pos)
- $P10 = rx1187_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
- unless $P10, rx1187_fail
- rx1187_pos = $P10."pos"()
-.annotate "line", 514
- # rx pass
- rx1187_cur."!cursor_pass"(rx1187_pos, "infix:sym<=>")
- rx1187_cur."!cursor_debug"("PASS ", "infix:sym<=>", " at pos=", rx1187_pos)
- .return (rx1187_cur)
- rx1187_fail:
-.annotate "line", 417
- (rx1187_rep, rx1187_pos, $I10, $P10) = rx1187_cur."!mark_fail"(0)
- lt rx1187_pos, -1, rx1187_done
- eq rx1187_pos, -1, rx1187_fail
- jump $I10
- rx1187_done:
- rx1187_cur."!cursor_fail"()
- rx1187_cur."!cursor_debug"("FAIL ", "infix:sym<=>")
- .return (rx1187_cur)
+ rx1195_cur."!cursor_pos"(rx1195_pos)
+ $P10 = rx1195_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
+ unless $P10, rx1195_fail
+ rx1195_pos = $P10."pos"()
+.annotate "line", 519
+ # rx pass
+ rx1195_cur."!cursor_pass"(rx1195_pos, "infix:sym<=>")
+ rx1195_cur."!cursor_debug"("PASS ", "infix:sym<=>", " at pos=", rx1195_pos)
+ .return (rx1195_cur)
+ rx1195_fail:
+.annotate "line", 422
+ (rx1195_rep, rx1195_pos, $I10, $P10) = rx1195_cur."!mark_fail"(0)
+ lt rx1195_pos, -1, rx1195_done
+ eq rx1195_pos, -1, rx1195_fail
+ jump $I10
+ rx1195_done:
+ rx1195_cur."!cursor_fail"()
+ rx1195_cur."!cursor_debug"("FAIL ", "infix:sym<=>")
+ .return (rx1195_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>" :subid("306_1267204702.05125") :method
-.annotate "line", 417
- $P1189 = self."!PREFIX__!subrule"("", "=")
- new $P1190, "ResizablePMCArray"
- push $P1190, $P1189
- .return ($P1190)
+.sub "!PREFIX__infix:sym<=>" :subid("308_1272816833.94956") :method
+.annotate "line", 422
+ $P1197 = self."!PREFIX__!subrule"("", "=")
+ new $P1198, "ResizablePMCArray"
+ push $P1198, $P1197
+ .return ($P1198)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>" :subid("307_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1194_tgt
- .local int rx1194_pos
- .local int rx1194_off
- .local int rx1194_eos
- .local int rx1194_rep
- .local pmc rx1194_cur
- (rx1194_cur, rx1194_pos, rx1194_tgt) = self."!cursor_start"()
- rx1194_cur."!cursor_debug"("START ", "infix:sym<:=>")
- .lex unicode:"$\x{a2}", rx1194_cur
- .local pmc match
- .lex "$/", match
- length rx1194_eos, rx1194_tgt
- set rx1194_off, 0
- lt rx1194_pos, 2, rx1194_start
- sub rx1194_off, rx1194_pos, 1
- substr rx1194_tgt, rx1194_tgt, rx1194_off
- rx1194_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1198_done
- goto rxscan1198_scan
- rxscan1198_loop:
- ($P10) = rx1194_cur."from"()
- inc $P10
- set rx1194_pos, $P10
- ge rx1194_pos, rx1194_eos, rxscan1198_done
- rxscan1198_scan:
- set_addr $I10, rxscan1198_loop
- rx1194_cur."!mark_push"(0, rx1194_pos, $I10)
- rxscan1198_done:
-.annotate "line", 517
+.sub "infix:sym<:=>" :subid("309_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1202_tgt
+ .local int rx1202_pos
+ .local int rx1202_off
+ .local int rx1202_eos
+ .local int rx1202_rep
+ .local pmc rx1202_cur
+ (rx1202_cur, rx1202_pos, rx1202_tgt) = self."!cursor_start"()
+ rx1202_cur."!cursor_debug"("START ", "infix:sym<:=>")
+ .lex unicode:"$\x{a2}", rx1202_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1202_eos, rx1202_tgt
+ set rx1202_off, 0
+ lt rx1202_pos, 2, rx1202_start
+ sub rx1202_off, rx1202_pos, 1
+ substr rx1202_tgt, rx1202_tgt, rx1202_off
+ rx1202_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1206_done
+ goto rxscan1206_scan
+ rxscan1206_loop:
+ ($P10) = rx1202_cur."from"()
+ inc $P10
+ set rx1202_pos, $P10
+ ge rx1202_pos, rx1202_eos, rxscan1206_done
+ rxscan1206_scan:
+ set_addr $I10, rxscan1206_loop
+ rx1202_cur."!mark_push"(0, rx1202_pos, $I10)
+ rxscan1206_done:
+.annotate "line", 522
# rx subcapture "sym"
- set_addr $I10, rxcap_1199_fail
- rx1194_cur."!mark_push"(0, rx1194_pos, $I10)
+ set_addr $I10, rxcap_1207_fail
+ rx1202_cur."!mark_push"(0, rx1202_pos, $I10)
# rx literal ":="
- add $I11, rx1194_pos, 2
- gt $I11, rx1194_eos, rx1194_fail
- sub $I11, rx1194_pos, rx1194_off
- substr $S10, rx1194_tgt, $I11, 2
- ne $S10, ":=", rx1194_fail
- add rx1194_pos, 2
- set_addr $I10, rxcap_1199_fail
- ($I12, $I11) = rx1194_cur."!mark_peek"($I10)
- rx1194_cur."!cursor_pos"($I11)
- ($P10) = rx1194_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1194_pos, "")
- rx1194_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1202_pos, 2
+ gt $I11, rx1202_eos, rx1202_fail
+ sub $I11, rx1202_pos, rx1202_off
+ substr $S10, rx1202_tgt, $I11, 2
+ ne $S10, ":=", rx1202_fail
+ add rx1202_pos, 2
+ set_addr $I10, rxcap_1207_fail
+ ($I12, $I11) = rx1202_cur."!mark_peek"($I10)
+ rx1202_cur."!cursor_pos"($I11)
+ ($P10) = rx1202_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1202_pos, "")
+ rx1202_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1199_done
- rxcap_1199_fail:
- goto rx1194_fail
- rxcap_1199_done:
+ goto rxcap_1207_done
+ rxcap_1207_fail:
+ goto rx1202_fail
+ rxcap_1207_done:
# rx subrule "O" subtype=capture negate=
- rx1194_cur."!cursor_pos"(rx1194_pos)
- $P10 = rx1194_cur."O"("%assignment, :pasttype<bind>")
- unless $P10, rx1194_fail
- rx1194_cur."!mark_push"(0, -1, 0, $P10)
+ rx1202_cur."!cursor_pos"(rx1202_pos)
+ $P10 = rx1202_cur."O"("%assignment, :pasttype<bind>")
+ unless $P10, rx1202_fail
+ rx1202_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1194_pos = $P10."pos"()
+ rx1202_pos = $P10."pos"()
# rx pass
- rx1194_cur."!cursor_pass"(rx1194_pos, "infix:sym<:=>")
- rx1194_cur."!cursor_debug"("PASS ", "infix:sym<:=>", " at pos=", rx1194_pos)
- .return (rx1194_cur)
- rx1194_fail:
-.annotate "line", 417
- (rx1194_rep, rx1194_pos, $I10, $P10) = rx1194_cur."!mark_fail"(0)
- lt rx1194_pos, -1, rx1194_done
- eq rx1194_pos, -1, rx1194_fail
- jump $I10
- rx1194_done:
- rx1194_cur."!cursor_fail"()
- rx1194_cur."!cursor_debug"("FAIL ", "infix:sym<:=>")
- .return (rx1194_cur)
+ rx1202_cur."!cursor_pass"(rx1202_pos, "infix:sym<:=>")
+ rx1202_cur."!cursor_debug"("PASS ", "infix:sym<:=>", " at pos=", rx1202_pos)
+ .return (rx1202_cur)
+ rx1202_fail:
+.annotate "line", 422
+ (rx1202_rep, rx1202_pos, $I10, $P10) = rx1202_cur."!mark_fail"(0)
+ lt rx1202_pos, -1, rx1202_done
+ eq rx1202_pos, -1, rx1202_fail
+ jump $I10
+ rx1202_done:
+ rx1202_cur."!cursor_fail"()
+ rx1202_cur."!cursor_debug"("FAIL ", "infix:sym<:=>")
+ .return (rx1202_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>" :subid("308_1267204702.05125") :method
-.annotate "line", 417
- $P1196 = self."!PREFIX__!subrule"("O", ":=")
- new $P1197, "ResizablePMCArray"
- push $P1197, $P1196
- .return ($P1197)
+.sub "!PREFIX__infix:sym<:=>" :subid("310_1272816833.94956") :method
+.annotate "line", 422
+ $P1204 = self."!PREFIX__!subrule"("O", ":=")
+ new $P1205, "ResizablePMCArray"
+ push $P1205, $P1204
+ .return ($P1205)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>" :subid("309_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1201_tgt
- .local int rx1201_pos
- .local int rx1201_off
- .local int rx1201_eos
- .local int rx1201_rep
- .local pmc rx1201_cur
- (rx1201_cur, rx1201_pos, rx1201_tgt) = self."!cursor_start"()
- rx1201_cur."!cursor_debug"("START ", "infix:sym<::=>")
- .lex unicode:"$\x{a2}", rx1201_cur
- .local pmc match
- .lex "$/", match
- length rx1201_eos, rx1201_tgt
- set rx1201_off, 0
- lt rx1201_pos, 2, rx1201_start
- sub rx1201_off, rx1201_pos, 1
- substr rx1201_tgt, rx1201_tgt, rx1201_off
- rx1201_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1205_done
- goto rxscan1205_scan
- rxscan1205_loop:
- ($P10) = rx1201_cur."from"()
- inc $P10
- set rx1201_pos, $P10
- ge rx1201_pos, rx1201_eos, rxscan1205_done
- rxscan1205_scan:
- set_addr $I10, rxscan1205_loop
- rx1201_cur."!mark_push"(0, rx1201_pos, $I10)
- rxscan1205_done:
-.annotate "line", 518
+.sub "infix:sym<::=>" :subid("311_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1209_tgt
+ .local int rx1209_pos
+ .local int rx1209_off
+ .local int rx1209_eos
+ .local int rx1209_rep
+ .local pmc rx1209_cur
+ (rx1209_cur, rx1209_pos, rx1209_tgt) = self."!cursor_start"()
+ rx1209_cur."!cursor_debug"("START ", "infix:sym<::=>")
+ .lex unicode:"$\x{a2}", rx1209_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1209_eos, rx1209_tgt
+ set rx1209_off, 0
+ lt rx1209_pos, 2, rx1209_start
+ sub rx1209_off, rx1209_pos, 1
+ substr rx1209_tgt, rx1209_tgt, rx1209_off
+ rx1209_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1213_done
+ goto rxscan1213_scan
+ rxscan1213_loop:
+ ($P10) = rx1209_cur."from"()
+ inc $P10
+ set rx1209_pos, $P10
+ ge rx1209_pos, rx1209_eos, rxscan1213_done
+ rxscan1213_scan:
+ set_addr $I10, rxscan1213_loop
+ rx1209_cur."!mark_push"(0, rx1209_pos, $I10)
+ rxscan1213_done:
+.annotate "line", 523
# rx subcapture "sym"
- set_addr $I10, rxcap_1206_fail
- rx1201_cur."!mark_push"(0, rx1201_pos, $I10)
+ set_addr $I10, rxcap_1214_fail
+ rx1209_cur."!mark_push"(0, rx1209_pos, $I10)
# rx literal "::="
- add $I11, rx1201_pos, 3
- gt $I11, rx1201_eos, rx1201_fail
- sub $I11, rx1201_pos, rx1201_off
- substr $S10, rx1201_tgt, $I11, 3
- ne $S10, "::=", rx1201_fail
- add rx1201_pos, 3
- set_addr $I10, rxcap_1206_fail
- ($I12, $I11) = rx1201_cur."!mark_peek"($I10)
- rx1201_cur."!cursor_pos"($I11)
- ($P10) = rx1201_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1201_pos, "")
- rx1201_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1209_pos, 3
+ gt $I11, rx1209_eos, rx1209_fail
+ sub $I11, rx1209_pos, rx1209_off
+ substr $S10, rx1209_tgt, $I11, 3
+ ne $S10, "::=", rx1209_fail
+ add rx1209_pos, 3
+ set_addr $I10, rxcap_1214_fail
+ ($I12, $I11) = rx1209_cur."!mark_peek"($I10)
+ rx1209_cur."!cursor_pos"($I11)
+ ($P10) = rx1209_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1209_pos, "")
+ rx1209_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1206_done
- rxcap_1206_fail:
- goto rx1201_fail
- rxcap_1206_done:
+ goto rxcap_1214_done
+ rxcap_1214_fail:
+ goto rx1209_fail
+ rxcap_1214_done:
# rx subrule "O" subtype=capture negate=
- rx1201_cur."!cursor_pos"(rx1201_pos)
- $P10 = rx1201_cur."O"("%assignment, :pasttype<bind>")
- unless $P10, rx1201_fail
- rx1201_cur."!mark_push"(0, -1, 0, $P10)
+ rx1209_cur."!cursor_pos"(rx1209_pos)
+ $P10 = rx1209_cur."O"("%assignment, :pasttype<bind>")
+ unless $P10, rx1209_fail
+ rx1209_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1201_pos = $P10."pos"()
+ rx1209_pos = $P10."pos"()
# rx pass
- rx1201_cur."!cursor_pass"(rx1201_pos, "infix:sym<::=>")
- rx1201_cur."!cursor_debug"("PASS ", "infix:sym<::=>", " at pos=", rx1201_pos)
- .return (rx1201_cur)
- rx1201_fail:
-.annotate "line", 417
- (rx1201_rep, rx1201_pos, $I10, $P10) = rx1201_cur."!mark_fail"(0)
- lt rx1201_pos, -1, rx1201_done
- eq rx1201_pos, -1, rx1201_fail
- jump $I10
- rx1201_done:
- rx1201_cur."!cursor_fail"()
- rx1201_cur."!cursor_debug"("FAIL ", "infix:sym<::=>")
- .return (rx1201_cur)
+ rx1209_cur."!cursor_pass"(rx1209_pos, "infix:sym<::=>")
+ rx1209_cur."!cursor_debug"("PASS ", "infix:sym<::=>", " at pos=", rx1209_pos)
+ .return (rx1209_cur)
+ rx1209_fail:
+.annotate "line", 422
+ (rx1209_rep, rx1209_pos, $I10, $P10) = rx1209_cur."!mark_fail"(0)
+ lt rx1209_pos, -1, rx1209_done
+ eq rx1209_pos, -1, rx1209_fail
+ jump $I10
+ rx1209_done:
+ rx1209_cur."!cursor_fail"()
+ rx1209_cur."!cursor_debug"("FAIL ", "infix:sym<::=>")
+ .return (rx1209_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>" :subid("310_1267204702.05125") :method
-.annotate "line", 417
- $P1203 = self."!PREFIX__!subrule"("O", "::=")
- new $P1204, "ResizablePMCArray"
- push $P1204, $P1203
- .return ($P1204)
+.sub "!PREFIX__infix:sym<::=>" :subid("312_1272816833.94956") :method
+.annotate "line", 422
+ $P1211 = self."!PREFIX__!subrule"("O", "::=")
+ new $P1212, "ResizablePMCArray"
+ push $P1212, $P1211
+ .return ($P1212)
.end
.namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>" :subid("311_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1208_tgt
- .local int rx1208_pos
- .local int rx1208_off
- .local int rx1208_eos
- .local int rx1208_rep
- .local pmc rx1208_cur
- (rx1208_cur, rx1208_pos, rx1208_tgt) = self."!cursor_start"()
- rx1208_cur."!cursor_debug"("START ", "infix:sym<,>")
- .lex unicode:"$\x{a2}", rx1208_cur
- .local pmc match
- .lex "$/", match
- length rx1208_eos, rx1208_tgt
- set rx1208_off, 0
- lt rx1208_pos, 2, rx1208_start
- sub rx1208_off, rx1208_pos, 1
- substr rx1208_tgt, rx1208_tgt, rx1208_off
- rx1208_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1212_done
- goto rxscan1212_scan
- rxscan1212_loop:
- ($P10) = rx1208_cur."from"()
- inc $P10
- set rx1208_pos, $P10
- ge rx1208_pos, rx1208_eos, rxscan1212_done
- rxscan1212_scan:
- set_addr $I10, rxscan1212_loop
- rx1208_cur."!mark_push"(0, rx1208_pos, $I10)
- rxscan1212_done:
-.annotate "line", 520
+.sub "infix:sym<,>" :subid("313_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1216_tgt
+ .local int rx1216_pos
+ .local int rx1216_off
+ .local int rx1216_eos
+ .local int rx1216_rep
+ .local pmc rx1216_cur
+ (rx1216_cur, rx1216_pos, rx1216_tgt) = self."!cursor_start"()
+ rx1216_cur."!cursor_debug"("START ", "infix:sym<,>")
+ .lex unicode:"$\x{a2}", rx1216_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1216_eos, rx1216_tgt
+ set rx1216_off, 0
+ lt rx1216_pos, 2, rx1216_start
+ sub rx1216_off, rx1216_pos, 1
+ substr rx1216_tgt, rx1216_tgt, rx1216_off
+ rx1216_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1220_done
+ goto rxscan1220_scan
+ rxscan1220_loop:
+ ($P10) = rx1216_cur."from"()
+ inc $P10
+ set rx1216_pos, $P10
+ ge rx1216_pos, rx1216_eos, rxscan1220_done
+ rxscan1220_scan:
+ set_addr $I10, rxscan1220_loop
+ rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
+ rxscan1220_done:
+.annotate "line", 525
# rx subcapture "sym"
- set_addr $I10, rxcap_1213_fail
- rx1208_cur."!mark_push"(0, rx1208_pos, $I10)
+ set_addr $I10, rxcap_1221_fail
+ rx1216_cur."!mark_push"(0, rx1216_pos, $I10)
# rx literal ","
- add $I11, rx1208_pos, 1
- gt $I11, rx1208_eos, rx1208_fail
- sub $I11, rx1208_pos, rx1208_off
- substr $S10, rx1208_tgt, $I11, 1
- ne $S10, ",", rx1208_fail
- add rx1208_pos, 1
- set_addr $I10, rxcap_1213_fail
- ($I12, $I11) = rx1208_cur."!mark_peek"($I10)
- rx1208_cur."!cursor_pos"($I11)
- ($P10) = rx1208_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1208_pos, "")
- rx1208_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1216_pos, 1
+ gt $I11, rx1216_eos, rx1216_fail
+ sub $I11, rx1216_pos, rx1216_off
+ substr $S10, rx1216_tgt, $I11, 1
+ ne $S10, ",", rx1216_fail
+ add rx1216_pos, 1
+ set_addr $I10, rxcap_1221_fail
+ ($I12, $I11) = rx1216_cur."!mark_peek"($I10)
+ rx1216_cur."!cursor_pos"($I11)
+ ($P10) = rx1216_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1216_pos, "")
+ rx1216_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1213_done
- rxcap_1213_fail:
- goto rx1208_fail
- rxcap_1213_done:
+ goto rxcap_1221_done
+ rxcap_1221_fail:
+ goto rx1216_fail
+ rxcap_1221_done:
# rx subrule "O" subtype=capture negate=
- rx1208_cur."!cursor_pos"(rx1208_pos)
- $P10 = rx1208_cur."O"("%comma, :pasttype<list>")
- unless $P10, rx1208_fail
- rx1208_cur."!mark_push"(0, -1, 0, $P10)
+ rx1216_cur."!cursor_pos"(rx1216_pos)
+ $P10 = rx1216_cur."O"("%comma, :pasttype<list>")
+ unless $P10, rx1216_fail
+ rx1216_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1208_pos = $P10."pos"()
+ rx1216_pos = $P10."pos"()
# rx pass
- rx1208_cur."!cursor_pass"(rx1208_pos, "infix:sym<,>")
- rx1208_cur."!cursor_debug"("PASS ", "infix:sym<,>", " at pos=", rx1208_pos)
- .return (rx1208_cur)
- rx1208_fail:
-.annotate "line", 417
- (rx1208_rep, rx1208_pos, $I10, $P10) = rx1208_cur."!mark_fail"(0)
- lt rx1208_pos, -1, rx1208_done
- eq rx1208_pos, -1, rx1208_fail
- jump $I10
- rx1208_done:
- rx1208_cur."!cursor_fail"()
- rx1208_cur."!cursor_debug"("FAIL ", "infix:sym<,>")
- .return (rx1208_cur)
+ rx1216_cur."!cursor_pass"(rx1216_pos, "infix:sym<,>")
+ rx1216_cur."!cursor_debug"("PASS ", "infix:sym<,>", " at pos=", rx1216_pos)
+ .return (rx1216_cur)
+ rx1216_fail:
+.annotate "line", 422
+ (rx1216_rep, rx1216_pos, $I10, $P10) = rx1216_cur."!mark_fail"(0)
+ lt rx1216_pos, -1, rx1216_done
+ eq rx1216_pos, -1, rx1216_fail
+ jump $I10
+ rx1216_done:
+ rx1216_cur."!cursor_fail"()
+ rx1216_cur."!cursor_debug"("FAIL ", "infix:sym<,>")
+ .return (rx1216_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>" :subid("312_1267204702.05125") :method
-.annotate "line", 417
- $P1210 = self."!PREFIX__!subrule"("O", ",")
- new $P1211, "ResizablePMCArray"
- push $P1211, $P1210
- .return ($P1211)
+.sub "!PREFIX__infix:sym<,>" :subid("314_1272816833.94956") :method
+.annotate "line", 422
+ $P1218 = self."!PREFIX__!subrule"("O", ",")
+ new $P1219, "ResizablePMCArray"
+ push $P1219, $P1218
+ .return ($P1219)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>" :subid("313_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1215_tgt
- .local int rx1215_pos
- .local int rx1215_off
- .local int rx1215_eos
- .local int rx1215_rep
- .local pmc rx1215_cur
- (rx1215_cur, rx1215_pos, rx1215_tgt) = self."!cursor_start"()
- rx1215_cur."!cursor_debug"("START ", "prefix:sym<return>")
- .lex unicode:"$\x{a2}", rx1215_cur
- .local pmc match
- .lex "$/", match
- length rx1215_eos, rx1215_tgt
- set rx1215_off, 0
- lt rx1215_pos, 2, rx1215_start
- sub rx1215_off, rx1215_pos, 1
- substr rx1215_tgt, rx1215_tgt, rx1215_off
- rx1215_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1218_done
- goto rxscan1218_scan
- rxscan1218_loop:
- ($P10) = rx1215_cur."from"()
- inc $P10
- set rx1215_pos, $P10
- ge rx1215_pos, rx1215_eos, rxscan1218_done
- rxscan1218_scan:
- set_addr $I10, rxscan1218_loop
- rx1215_cur."!mark_push"(0, rx1215_pos, $I10)
- rxscan1218_done:
-.annotate "line", 522
+.sub "prefix:sym<return>" :subid("315_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1223_tgt
+ .local int rx1223_pos
+ .local int rx1223_off
+ .local int rx1223_eos
+ .local int rx1223_rep
+ .local pmc rx1223_cur
+ (rx1223_cur, rx1223_pos, rx1223_tgt) = self."!cursor_start"()
+ rx1223_cur."!cursor_debug"("START ", "prefix:sym<return>")
+ .lex unicode:"$\x{a2}", rx1223_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1223_eos, rx1223_tgt
+ set rx1223_off, 0
+ lt rx1223_pos, 2, rx1223_start
+ sub rx1223_off, rx1223_pos, 1
+ substr rx1223_tgt, rx1223_tgt, rx1223_off
+ rx1223_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1226_done
+ goto rxscan1226_scan
+ rxscan1226_loop:
+ ($P10) = rx1223_cur."from"()
+ inc $P10
+ set rx1223_pos, $P10
+ ge rx1223_pos, rx1223_eos, rxscan1226_done
+ rxscan1226_scan:
+ set_addr $I10, rxscan1226_loop
+ rx1223_cur."!mark_push"(0, rx1223_pos, $I10)
+ rxscan1226_done:
+.annotate "line", 527
# rx subcapture "sym"
- set_addr $I10, rxcap_1219_fail
- rx1215_cur."!mark_push"(0, rx1215_pos, $I10)
+ set_addr $I10, rxcap_1227_fail
+ rx1223_cur."!mark_push"(0, rx1223_pos, $I10)
# rx literal "return"
- add $I11, rx1215_pos, 6
- gt $I11, rx1215_eos, rx1215_fail
- sub $I11, rx1215_pos, rx1215_off
- substr $S10, rx1215_tgt, $I11, 6
- ne $S10, "return", rx1215_fail
- add rx1215_pos, 6
- set_addr $I10, rxcap_1219_fail
- ($I12, $I11) = rx1215_cur."!mark_peek"($I10)
- rx1215_cur."!cursor_pos"($I11)
- ($P10) = rx1215_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1215_pos, "")
- rx1215_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1223_pos, 6
+ gt $I11, rx1223_eos, rx1223_fail
+ sub $I11, rx1223_pos, rx1223_off
+ substr $S10, rx1223_tgt, $I11, 6
+ ne $S10, "return", rx1223_fail
+ add rx1223_pos, 6
+ set_addr $I10, rxcap_1227_fail
+ ($I12, $I11) = rx1223_cur."!mark_peek"($I10)
+ rx1223_cur."!cursor_pos"($I11)
+ ($P10) = rx1223_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1223_pos, "")
+ rx1223_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1219_done
- rxcap_1219_fail:
- goto rx1215_fail
- rxcap_1219_done:
+ goto rxcap_1227_done
+ rxcap_1227_fail:
+ goto rx1223_fail
+ rxcap_1227_done:
# rx charclass s
- ge rx1215_pos, rx1215_eos, rx1215_fail
- sub $I10, rx1215_pos, rx1215_off
- is_cclass $I11, 32, rx1215_tgt, $I10
- unless $I11, rx1215_fail
- inc rx1215_pos
+ ge rx1223_pos, rx1223_eos, rx1223_fail
+ sub $I10, rx1223_pos, rx1223_off
+ is_cclass $I11, 32, rx1223_tgt, $I10
+ unless $I11, rx1223_fail
+ inc rx1223_pos
# rx subrule "O" subtype=capture negate=
- rx1215_cur."!cursor_pos"(rx1215_pos)
- $P10 = rx1215_cur."O"("%list_prefix, :pasttype<return>")
- unless $P10, rx1215_fail
- rx1215_cur."!mark_push"(0, -1, 0, $P10)
+ rx1223_cur."!cursor_pos"(rx1223_pos)
+ $P10 = rx1223_cur."O"("%list_prefix, :pasttype<return>")
+ unless $P10, rx1223_fail
+ rx1223_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1215_pos = $P10."pos"()
+ rx1223_pos = $P10."pos"()
# rx pass
- rx1215_cur."!cursor_pass"(rx1215_pos, "prefix:sym<return>")
- rx1215_cur."!cursor_debug"("PASS ", "prefix:sym<return>", " at pos=", rx1215_pos)
- .return (rx1215_cur)
- rx1215_fail:
-.annotate "line", 417
- (rx1215_rep, rx1215_pos, $I10, $P10) = rx1215_cur."!mark_fail"(0)
- lt rx1215_pos, -1, rx1215_done
- eq rx1215_pos, -1, rx1215_fail
- jump $I10
- rx1215_done:
- rx1215_cur."!cursor_fail"()
- rx1215_cur."!cursor_debug"("FAIL ", "prefix:sym<return>")
- .return (rx1215_cur)
+ rx1223_cur."!cursor_pass"(rx1223_pos, "prefix:sym<return>")
+ rx1223_cur."!cursor_debug"("PASS ", "prefix:sym<return>", " at pos=", rx1223_pos)
+ .return (rx1223_cur)
+ rx1223_fail:
+.annotate "line", 422
+ (rx1223_rep, rx1223_pos, $I10, $P10) = rx1223_cur."!mark_fail"(0)
+ lt rx1223_pos, -1, rx1223_done
+ eq rx1223_pos, -1, rx1223_fail
+ jump $I10
+ rx1223_done:
+ rx1223_cur."!cursor_fail"()
+ rx1223_cur."!cursor_debug"("FAIL ", "prefix:sym<return>")
+ .return (rx1223_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>" :subid("314_1267204702.05125") :method
-.annotate "line", 417
- new $P1217, "ResizablePMCArray"
- push $P1217, "return"
- .return ($P1217)
+.sub "!PREFIX__prefix:sym<return>" :subid("316_1272816833.94956") :method
+.annotate "line", 422
+ new $P1225, "ResizablePMCArray"
+ push $P1225, "return"
+ .return ($P1225)
.end
.namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>" :subid("315_1267204702.05125") :method :outer("11_1267204702.05125")
-.annotate "line", 417
- .local string rx1221_tgt
- .local int rx1221_pos
- .local int rx1221_off
- .local int rx1221_eos
- .local int rx1221_rep
- .local pmc rx1221_cur
- (rx1221_cur, rx1221_pos, rx1221_tgt) = self."!cursor_start"()
- rx1221_cur."!cursor_debug"("START ", "prefix:sym<make>")
- .lex unicode:"$\x{a2}", rx1221_cur
- .local pmc match
- .lex "$/", match
- length rx1221_eos, rx1221_tgt
- set rx1221_off, 0
- lt rx1221_pos, 2, rx1221_start
- sub rx1221_off, rx1221_pos, 1
- substr rx1221_tgt, rx1221_tgt, rx1221_off
- rx1221_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1224_done
- goto rxscan1224_scan
- rxscan1224_loop:
- ($P10) = rx1221_cur."from"()
- inc $P10
- set rx1221_pos, $P10
- ge rx1221_pos, rx1221_eos, rxscan1224_done
- rxscan1224_scan:
- set_addr $I10, rxscan1224_loop
- rx1221_cur."!mark_push"(0, rx1221_pos, $I10)
- rxscan1224_done:
-.annotate "line", 523
+.sub "prefix:sym<make>" :subid("317_1272816833.94956") :method :outer("11_1272816833.94956")
+.annotate "line", 422
+ .local string rx1229_tgt
+ .local int rx1229_pos
+ .local int rx1229_off
+ .local int rx1229_eos
+ .local int rx1229_rep
+ .local pmc rx1229_cur
+ (rx1229_cur, rx1229_pos, rx1229_tgt) = self."!cursor_start"()
+ rx1229_cur."!cursor_debug"("START ", "prefix:sym<make>")
+ .lex unicode:"$\x{a2}", rx1229_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1229_eos, rx1229_tgt
+ set rx1229_off, 0
+ lt rx1229_pos, 2, rx1229_start
+ sub rx1229_off, rx1229_pos, 1
+ substr rx1229_tgt, rx1229_tgt, rx1229_off
+ rx1229_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1232_done
+ goto rxscan1232_scan
+ rxscan1232_loop:
+ ($P10) = rx1229_cur."from"()
+ inc $P10
+ set rx1229_pos, $P10
+ ge rx1229_pos, rx1229_eos, rxscan1232_done
+ rxscan1232_scan:
+ set_addr $I10, rxscan1232_loop
+ rx1229_cur."!mark_push"(0, rx1229_pos, $I10)
+ rxscan1232_done:
+.annotate "line", 528
# rx subcapture "sym"
- set_addr $I10, rxcap_1225_fail
- rx1221_cur."!mark_push"(0, rx1221_pos, $I10)
+ set_addr $I10, rxcap_1233_fail
+ rx1229_cur."!mark_push"(0, rx1229_pos, $I10)
# rx literal "make"
- add $I11, rx1221_pos, 4
- gt $I11, rx1221_eos, rx1221_fail
- sub $I11, rx1221_pos, rx1221_off
- substr $S10, rx1221_tgt, $I11, 4
- ne $S10, "make", rx1221_fail
- add rx1221_pos, 4
- set_addr $I10, rxcap_1225_fail
- ($I12, $I11) = rx1221_cur."!mark_peek"($I10)
- rx1221_cur."!cursor_pos"($I11)
- ($P10) = rx1221_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1221_pos, "")
- rx1221_cur."!mark_push"(0, -1, 0, $P10)
+ add $I11, rx1229_pos, 4
+ gt $I11, rx1229_eos, rx1229_fail
+ sub $I11, rx1229_pos, rx1229_off
+ substr $S10, rx1229_tgt, $I11, 4
+ ne $S10, "make", rx1229_fail
+ add rx1229_pos, 4
+ set_addr $I10, rxcap_1233_fail
+ ($I12, $I11) = rx1229_cur."!mark_peek"($I10)
+ rx1229_cur."!cursor_pos"($I11)
+ ($P10) = rx1229_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1229_pos, "")
+ rx1229_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sym")
- goto rxcap_1225_done
- rxcap_1225_fail:
- goto rx1221_fail
- rxcap_1225_done:
+ goto rxcap_1233_done
+ rxcap_1233_fail:
+ goto rx1229_fail
+ rxcap_1233_done:
# rx charclass s
- ge rx1221_pos, rx1221_eos, rx1221_fail
- sub $I10, rx1221_pos, rx1221_off
- is_cclass $I11, 32, rx1221_tgt, $I10
- unless $I11, rx1221_fail
- inc rx1221_pos
+ ge rx1229_pos, rx1229_eos, rx1229_fail
+ sub $I10, rx1229_pos, rx1229_off
+ is_cclass $I11, 32, rx1229_tgt, $I10
+ unless $I11, rx1229_fail
+ inc rx1229_pos
# rx subrule "O" subtype=capture negate=
- rx1221_cur."!cursor_pos"(rx1221_pos)
- $P10 = rx1221_cur."O"("%list_prefix")
- unless $P10, rx1221_fail
- rx1221_cur."!mark_push"(0, -1, 0, $P10)
+ rx1229_cur."!cursor_pos"(rx1229_pos)
+ $P10 = rx1229_cur."O"("%list_prefix")
+ unless $P10, rx1229_fail
+ rx1229_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1221_pos = $P10."pos"()
+ rx1229_pos = $P10."pos"()
# rx pass
- rx1221_cur."!cursor_pass"(rx1221_pos, "prefix:sym<make>")
- rx1221_cur."!cursor_debug"("PASS ", "prefix:sym<make>", " at pos=", rx1221_pos)
- .return (rx1221_cur)
- rx1221_fail:
-.annotate "line", 417
- (rx1221_rep, rx1221_pos, $I10, $P10) = rx1221_cur."!mark_fail"(0)
- lt rx1221_pos, -1, rx1221_done
- eq rx1221_pos, -1, rx1221_fail
+ rx1229_cur."!cursor_pass"(rx1229_pos, "prefix:sym<make>")
+ rx1229_cur."!cursor_debug"("PASS ", "prefix:sym<make>", " at pos=", rx1229_pos)
+ .return (rx1229_cur)
+ rx1229_fail:
+.annotate "line", 422
+ (rx1229_rep, rx1229_pos, $I10, $P10) = rx1229_cur."!mark_fail"(0)
+ lt rx1229_pos, -1, rx1229_done
+ eq rx1229_pos, -1, rx1229_fail
jump $I10
- rx1221_done:
- rx1221_cur."!cursor_fail"()
- rx1221_cur."!cursor_debug"("FAIL ", "prefix:sym<make>")
- .return (rx1221_cur)
+ rx1229_done:
+ rx1229_cur."!cursor_fail"()
+ rx1229_cur."!cursor_debug"("FAIL ", "prefix:sym<make>")
+ .return (rx1229_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>" :subid("316_1267204702.05125") :method
-.annotate "line", 417
- new $P1223, "ResizablePMCArray"
- push $P1223, "make"
- .return ($P1223)
+.sub "!PREFIX__prefix:sym<make>" :subid("318_1272816833.94956") :method
+.annotate "line", 422
+ new $P1231, "ResizablePMCArray"
+ push $P1231, "make"
+ .return ($P1231)
.end
.namespace ["NQP";"Grammar"]
-.sub "smartmatch" :subid("317_1267204702.05125") :method :outer("11_1267204702.05125")
- .param pmc param_1229
-.annotate "line", 525
- new $P1228, 'ExceptionHandler'
- set_addr $P1228, control_1227
- $P1228."handle_types"(58)
- push_eh $P1228
+.sub "smartmatch" :subid("319_1272816833.94956") :method :outer("11_1272816833.94956")
+ .param pmc param_1237
+.annotate "line", 530
+ new $P1236, 'ExceptionHandler'
+ set_addr $P1236, control_1235
+ $P1236."handle_types"(57)
+ push_eh $P1236
.lex "self", self
- .lex "$/", param_1229
-.annotate "line", 527
- new $P1230, "Undef"
- .lex "$t", $P1230
- find_lex $P1231, "$/"
- unless_null $P1231, vivify_343
- $P1231 = root_new ['parrot';'ResizablePMCArray']
- vivify_343:
- set $P1232, $P1231[0]
- unless_null $P1232, vivify_344
- new $P1232, "Undef"
- vivify_344:
- store_lex "$t", $P1232
- find_lex $P1233, "$/"
- unless_null $P1233, vivify_345
- $P1233 = root_new ['parrot';'ResizablePMCArray']
+ .lex "$/", param_1237
+.annotate "line", 532
+ new $P1238, "Undef"
+ .lex "$t", $P1238
+ find_lex $P1239, "$/"
+ unless_null $P1239, vivify_345
+ $P1239 = root_new ['parrot';'ResizablePMCArray']
vivify_345:
- set $P1234, $P1233[1]
- unless_null $P1234, vivify_346
- new $P1234, "Undef"
+ set $P1240, $P1239[0]
+ unless_null $P1240, vivify_346
+ new $P1240, "Undef"
vivify_346:
- find_lex $P1235, "$/"
- unless_null $P1235, vivify_347
- $P1235 = root_new ['parrot';'ResizablePMCArray']
- store_lex "$/", $P1235
+ store_lex "$t", $P1240
+ find_lex $P1241, "$/"
+ unless_null $P1241, vivify_347
+ $P1241 = root_new ['parrot';'ResizablePMCArray']
vivify_347:
- set $P1235[0], $P1234
- find_lex $P1236, "$t"
- find_lex $P1237, "$/"
- unless_null $P1237, vivify_348
- $P1237 = root_new ['parrot';'ResizablePMCArray']
- store_lex "$/", $P1237
+ set $P1242, $P1241[1]
+ unless_null $P1242, vivify_348
+ new $P1242, "Undef"
vivify_348:
- set $P1237[1], $P1236
-.annotate "line", 525
- .return ($P1236)
- control_1227:
+ find_lex $P1243, "$/"
+ unless_null $P1243, vivify_349
+ $P1243 = root_new ['parrot';'ResizablePMCArray']
+ store_lex "$/", $P1243
+ vivify_349:
+ set $P1243[0], $P1242
+ find_lex $P1244, "$t"
+ find_lex $P1245, "$/"
+ unless_null $P1245, vivify_350
+ $P1245 = root_new ['parrot';'ResizablePMCArray']
+ store_lex "$/", $P1245
+ vivify_350:
+ set $P1245[1], $P1244
+.annotate "line", 530
+ .return ($P1244)
+ control_1235:
.local pmc exception
.get_results (exception)
- getattribute $P1238, exception, "payload"
- .return ($P1238)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "_block1239" :subid("318_1267204702.05125") :outer("11_1267204702.05125")
-.annotate "line", 531
- .const 'Sub' $P1273 = "329_1267204702.05125"
- capture_lex $P1273
- .const 'Sub' $P1260 = "326_1267204702.05125"
- capture_lex $P1260
- .const 'Sub' $P1255 = "324_1267204702.05125"
- capture_lex $P1255
- .const 'Sub' $P1250 = "322_1267204702.05125"
- capture_lex $P1250
- .const 'Sub' $P1241 = "319_1267204702.05125"
- capture_lex $P1241
- .const 'Sub' $P1273 = "329_1267204702.05125"
- capture_lex $P1273
- .return ($P1273)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>" :subid("319_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .const 'Sub' $P1247 = "321_1267204702.05125"
- capture_lex $P1247
- .local string rx1242_tgt
- .local int rx1242_pos
- .local int rx1242_off
- .local int rx1242_eos
- .local int rx1242_rep
- .local pmc rx1242_cur
- (rx1242_cur, rx1242_pos, rx1242_tgt) = self."!cursor_start"()
- rx1242_cur."!cursor_debug"("START ", "metachar:sym<:my>")
- .lex unicode:"$\x{a2}", rx1242_cur
- .local pmc match
- .lex "$/", match
- length rx1242_eos, rx1242_tgt
- set rx1242_off, 0
- lt rx1242_pos, 2, rx1242_start
- sub rx1242_off, rx1242_pos, 1
- substr rx1242_tgt, rx1242_tgt, rx1242_off
- rx1242_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1245_done
- goto rxscan1245_scan
- rxscan1245_loop:
- ($P10) = rx1242_cur."from"()
- inc $P10
- set rx1242_pos, $P10
- ge rx1242_pos, rx1242_eos, rxscan1245_done
- rxscan1245_scan:
- set_addr $I10, rxscan1245_loop
- rx1242_cur."!mark_push"(0, rx1242_pos, $I10)
- rxscan1245_done:
-.annotate "line", 533
- # rx literal ":"
- add $I11, rx1242_pos, 1
- gt $I11, rx1242_eos, rx1242_fail
- sub $I11, rx1242_pos, rx1242_off
- substr $S10, rx1242_tgt, $I11, 1
- ne $S10, ":", rx1242_fail
- add rx1242_pos, 1
- # rx subrule "before" subtype=zerowidth negate=
- rx1242_cur."!cursor_pos"(rx1242_pos)
- .const 'Sub' $P1247 = "321_1267204702.05125"
- capture_lex $P1247
- $P10 = rx1242_cur."before"($P1247)
- unless $P10, rx1242_fail
- # rx subrule "LANG" subtype=capture negate=
- rx1242_cur."!cursor_pos"(rx1242_pos)
- $P10 = rx1242_cur."LANG"("MAIN", "statement")
- unless $P10, rx1242_fail
- rx1242_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("statement")
- rx1242_pos = $P10."pos"()
- # rx subrule "ws" subtype=method negate=
- rx1242_cur."!cursor_pos"(rx1242_pos)
- $P10 = rx1242_cur."ws"()
- unless $P10, rx1242_fail
- rx1242_pos = $P10."pos"()
- # rx literal ";"
- add $I11, rx1242_pos, 1
- gt $I11, rx1242_eos, rx1242_fail
- sub $I11, rx1242_pos, rx1242_off
- substr $S10, rx1242_tgt, $I11, 1
- ne $S10, ";", rx1242_fail
- add rx1242_pos, 1
-.annotate "line", 532
- # rx pass
- rx1242_cur."!cursor_pass"(rx1242_pos, "metachar:sym<:my>")
- rx1242_cur."!cursor_debug"("PASS ", "metachar:sym<:my>", " at pos=", rx1242_pos)
- .return (rx1242_cur)
- rx1242_fail:
-.annotate "line", 531
- (rx1242_rep, rx1242_pos, $I10, $P10) = rx1242_cur."!mark_fail"(0)
- lt rx1242_pos, -1, rx1242_done
- eq rx1242_pos, -1, rx1242_fail
- jump $I10
- rx1242_done:
- rx1242_cur."!cursor_fail"()
- rx1242_cur."!cursor_debug"("FAIL ", "metachar:sym<:my>")
- .return (rx1242_cur)
- .return ()
+ getattribute $P1246, exception, "payload"
+ .return ($P1246)
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>" :subid("320_1267204702.05125") :method
-.annotate "line", 531
- new $P1244, "ResizablePMCArray"
- push $P1244, ":"
- .return ($P1244)
-.end
-
-
-.namespace ["NQP";"Regex"]
-.sub "_block1246" :anon :subid("321_1267204702.05125") :method :outer("319_1267204702.05125")
-.annotate "line", 533
- .local string rx1248_tgt
- .local int rx1248_pos
- .local int rx1248_off
- .local int rx1248_eos
- .local int rx1248_rep
- .local pmc rx1248_cur
- (rx1248_cur, rx1248_pos, rx1248_tgt) = self."!cursor_start"()
- rx1248_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx1248_cur
- .local pmc match
- .lex "$/", match
- length rx1248_eos, rx1248_tgt
- set rx1248_off, 0
- lt rx1248_pos, 2, rx1248_start
- sub rx1248_off, rx1248_pos, 1
- substr rx1248_tgt, rx1248_tgt, rx1248_off
- rx1248_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1249_done
- goto rxscan1249_scan
- rxscan1249_loop:
- ($P10) = rx1248_cur."from"()
- inc $P10
- set rx1248_pos, $P10
- ge rx1248_pos, rx1248_eos, rxscan1249_done
- rxscan1249_scan:
- set_addr $I10, rxscan1249_loop
- rx1248_cur."!mark_push"(0, rx1248_pos, $I10)
- rxscan1249_done:
- # rx literal "my"
- add $I11, rx1248_pos, 2
- gt $I11, rx1248_eos, rx1248_fail
- sub $I11, rx1248_pos, rx1248_off
- substr $S10, rx1248_tgt, $I11, 2
- ne $S10, "my", rx1248_fail
- add rx1248_pos, 2
- # rx pass
- rx1248_cur."!cursor_pass"(rx1248_pos, "")
- rx1248_cur."!cursor_debug"("PASS ", "", " at pos=", rx1248_pos)
- .return (rx1248_cur)
- rx1248_fail:
- (rx1248_rep, rx1248_pos, $I10, $P10) = rx1248_cur."!mark_fail"(0)
- lt rx1248_pos, -1, rx1248_done
- eq rx1248_pos, -1, rx1248_fail
- jump $I10
- rx1248_done:
- rx1248_cur."!cursor_fail"()
- rx1248_cur."!cursor_debug"("FAIL ", "")
- .return (rx1248_cur)
- .return ()
+.sub "_block1247" :subid("320_1272816833.94956") :outer("11_1272816833.94956")
+.annotate "line", 536
+ .const 'Sub' $P1281 = "331_1272816833.94956"
+ capture_lex $P1281
+ .const 'Sub' $P1268 = "328_1272816833.94956"
+ capture_lex $P1268
+ .const 'Sub' $P1263 = "326_1272816833.94956"
+ capture_lex $P1263
+ .const 'Sub' $P1258 = "324_1272816833.94956"
+ capture_lex $P1258
+ .const 'Sub' $P1249 = "321_1272816833.94956"
+ capture_lex $P1249
+ .const 'Sub' $P1281 = "331_1272816833.94956"
+ capture_lex $P1281
+ .return ($P1281)
.end
.namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>" :subid("322_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .local string rx1251_tgt
- .local int rx1251_pos
- .local int rx1251_off
- .local int rx1251_eos
- .local int rx1251_rep
- .local pmc rx1251_cur
- (rx1251_cur, rx1251_pos, rx1251_tgt) = self."!cursor_start"()
- rx1251_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
- .lex unicode:"$\x{a2}", rx1251_cur
- .local pmc match
- .lex "$/", match
- length rx1251_eos, rx1251_tgt
- set rx1251_off, 0
- lt rx1251_pos, 2, rx1251_start
- sub rx1251_off, rx1251_pos, 1
- substr rx1251_tgt, rx1251_tgt, rx1251_off
- rx1251_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1254_done
- goto rxscan1254_scan
- rxscan1254_loop:
- ($P10) = rx1251_cur."from"()
- inc $P10
- set rx1251_pos, $P10
- ge rx1251_pos, rx1251_eos, rxscan1254_done
- rxscan1254_scan:
- set_addr $I10, rxscan1254_loop
- rx1251_cur."!mark_push"(0, rx1251_pos, $I10)
- rxscan1254_done:
-.annotate "line", 537
- # rx enumcharlist negate=0 zerowidth
- ge rx1251_pos, rx1251_eos, rx1251_fail
- sub $I10, rx1251_pos, rx1251_off
- substr $S10, rx1251_tgt, $I10, 1
- index $I11, "{", $S10
- lt $I11, 0, rx1251_fail
- # rx subrule "codeblock" subtype=capture negate=
- rx1251_cur."!cursor_pos"(rx1251_pos)
- $P10 = rx1251_cur."codeblock"()
- unless $P10, rx1251_fail
- rx1251_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("codeblock")
- rx1251_pos = $P10."pos"()
+.sub "metachar:sym<:my>" :subid("321_1272816833.94956") :method :outer("320_1272816833.94956")
.annotate "line", 536
+ .const 'Sub' $P1255 = "323_1272816833.94956"
+ capture_lex $P1255
+ .local string rx1250_tgt
+ .local int rx1250_pos
+ .local int rx1250_off
+ .local int rx1250_eos
+ .local int rx1250_rep
+ .local pmc rx1250_cur
+ (rx1250_cur, rx1250_pos, rx1250_tgt) = self."!cursor_start"()
+ rx1250_cur."!cursor_debug"("START ", "metachar:sym<:my>")
+ .lex unicode:"$\x{a2}", rx1250_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1250_eos, rx1250_tgt
+ set rx1250_off, 0
+ lt rx1250_pos, 2, rx1250_start
+ sub rx1250_off, rx1250_pos, 1
+ substr rx1250_tgt, rx1250_tgt, rx1250_off
+ rx1250_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1253_done
+ goto rxscan1253_scan
+ rxscan1253_loop:
+ ($P10) = rx1250_cur."from"()
+ inc $P10
+ set rx1250_pos, $P10
+ ge rx1250_pos, rx1250_eos, rxscan1253_done
+ rxscan1253_scan:
+ set_addr $I10, rxscan1253_loop
+ rx1250_cur."!mark_push"(0, rx1250_pos, $I10)
+ rxscan1253_done:
+.annotate "line", 538
+ # rx literal ":"
+ add $I11, rx1250_pos, 1
+ gt $I11, rx1250_eos, rx1250_fail
+ sub $I11, rx1250_pos, rx1250_off
+ substr $S10, rx1250_tgt, $I11, 1
+ ne $S10, ":", rx1250_fail
+ add rx1250_pos, 1
+ # rx subrule "before" subtype=zerowidth negate=
+ rx1250_cur."!cursor_pos"(rx1250_pos)
+ .const 'Sub' $P1255 = "323_1272816833.94956"
+ capture_lex $P1255
+ $P10 = rx1250_cur."before"($P1255)
+ unless $P10, rx1250_fail
+ # rx subrule "LANG" subtype=capture negate=
+ rx1250_cur."!cursor_pos"(rx1250_pos)
+ $P10 = rx1250_cur."LANG"("MAIN", "statement")
+ unless $P10, rx1250_fail
+ rx1250_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("statement")
+ rx1250_pos = $P10."pos"()
+ # rx subrule "ws" subtype=method negate=
+ rx1250_cur."!cursor_pos"(rx1250_pos)
+ $P10 = rx1250_cur."ws"()
+ unless $P10, rx1250_fail
+ rx1250_pos = $P10."pos"()
+ # rx literal ";"
+ add $I11, rx1250_pos, 1
+ gt $I11, rx1250_eos, rx1250_fail
+ sub $I11, rx1250_pos, rx1250_off
+ substr $S10, rx1250_tgt, $I11, 1
+ ne $S10, ";", rx1250_fail
+ add rx1250_pos, 1
+.annotate "line", 537
# rx pass
- rx1251_cur."!cursor_pass"(rx1251_pos, "metachar:sym<{ }>")
- rx1251_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1251_pos)
- .return (rx1251_cur)
- rx1251_fail:
-.annotate "line", 531
- (rx1251_rep, rx1251_pos, $I10, $P10) = rx1251_cur."!mark_fail"(0)
- lt rx1251_pos, -1, rx1251_done
- eq rx1251_pos, -1, rx1251_fail
- jump $I10
- rx1251_done:
- rx1251_cur."!cursor_fail"()
- rx1251_cur."!cursor_debug"("FAIL ", "metachar:sym<{ }>")
- .return (rx1251_cur)
+ rx1250_cur."!cursor_pass"(rx1250_pos, "metachar:sym<:my>")
+ rx1250_cur."!cursor_debug"("PASS ", "metachar:sym<:my>", " at pos=", rx1250_pos)
+ .return (rx1250_cur)
+ rx1250_fail:
+.annotate "line", 536
+ (rx1250_rep, rx1250_pos, $I10, $P10) = rx1250_cur."!mark_fail"(0)
+ lt rx1250_pos, -1, rx1250_done
+ eq rx1250_pos, -1, rx1250_fail
+ jump $I10
+ rx1250_done:
+ rx1250_cur."!cursor_fail"()
+ rx1250_cur."!cursor_debug"("FAIL ", "metachar:sym<:my>")
+ .return (rx1250_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>" :subid("323_1267204702.05125") :method
-.annotate "line", 531
- new $P1253, "ResizablePMCArray"
- push $P1253, "{"
- .return ($P1253)
+.sub "!PREFIX__metachar:sym<:my>" :subid("322_1272816833.94956") :method
+.annotate "line", 536
+ new $P1252, "ResizablePMCArray"
+ push $P1252, ":"
+ .return ($P1252)
.end
.namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>" :subid("324_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
+.sub "_block1254" :anon :subid("323_1272816833.94956") :method :outer("321_1272816833.94956")
+.annotate "line", 538
.local string rx1256_tgt
.local int rx1256_pos
.local int rx1256_off
@@ -15387,7 +15398,7 @@
.local int rx1256_rep
.local pmc rx1256_cur
(rx1256_cur, rx1256_pos, rx1256_tgt) = self."!cursor_start"()
- rx1256_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+ rx1256_cur."!cursor_debug"("START ", "")
.lex unicode:"$\x{a2}", rx1256_cur
.local pmc match
.lex "$/", match
@@ -15398,611 +15409,743 @@
substr rx1256_tgt, rx1256_tgt, rx1256_off
rx1256_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan1259_done
- goto rxscan1259_scan
- rxscan1259_loop:
+ ne $I10, -1, rxscan1257_done
+ goto rxscan1257_scan
+ rxscan1257_loop:
($P10) = rx1256_cur."from"()
inc $P10
set rx1256_pos, $P10
- ge rx1256_pos, rx1256_eos, rxscan1259_done
- rxscan1259_scan:
- set_addr $I10, rxscan1259_loop
+ ge rx1256_pos, rx1256_eos, rxscan1257_done
+ rxscan1257_scan:
+ set_addr $I10, rxscan1257_loop
rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
- rxscan1259_done:
-.annotate "line", 541
- # rx enumcharlist negate=0 zerowidth
- ge rx1256_pos, rx1256_eos, rx1256_fail
- sub $I10, rx1256_pos, rx1256_off
- substr $S10, rx1256_tgt, $I10, 1
- index $I11, "{", $S10
- lt $I11, 0, rx1256_fail
- # rx subrule "codeblock" subtype=capture negate=
- rx1256_cur."!cursor_pos"(rx1256_pos)
- $P10 = rx1256_cur."codeblock"()
- unless $P10, rx1256_fail
- rx1256_cur."!mark_push"(0, -1, 0, $P10)
- $P10."!cursor_names"("codeblock")
- rx1256_pos = $P10."pos"()
-.annotate "line", 540
+ rxscan1257_done:
+ # rx literal "my"
+ add $I11, rx1256_pos, 2
+ gt $I11, rx1256_eos, rx1256_fail
+ sub $I11, rx1256_pos, rx1256_off
+ substr $S10, rx1256_tgt, $I11, 2
+ ne $S10, "my", rx1256_fail
+ add rx1256_pos, 2
# rx pass
- rx1256_cur."!cursor_pass"(rx1256_pos, "assertion:sym<{ }>")
- rx1256_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1256_pos)
+ rx1256_cur."!cursor_pass"(rx1256_pos, "")
+ rx1256_cur."!cursor_debug"("PASS ", "", " at pos=", rx1256_pos)
.return (rx1256_cur)
rx1256_fail:
-.annotate "line", 531
(rx1256_rep, rx1256_pos, $I10, $P10) = rx1256_cur."!mark_fail"(0)
lt rx1256_pos, -1, rx1256_done
eq rx1256_pos, -1, rx1256_fail
jump $I10
rx1256_done:
rx1256_cur."!cursor_fail"()
- rx1256_cur."!cursor_debug"("FAIL ", "assertion:sym<{ }>")
+ rx1256_cur."!cursor_debug"("FAIL ", "")
.return (rx1256_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>" :subid("325_1267204702.05125") :method
-.annotate "line", 531
- new $P1258, "ResizablePMCArray"
- push $P1258, "{"
- .return ($P1258)
+.sub "metachar:sym<{ }>" :subid("324_1272816833.94956") :method :outer("320_1272816833.94956")
+.annotate "line", 536
+ .local string rx1259_tgt
+ .local int rx1259_pos
+ .local int rx1259_off
+ .local int rx1259_eos
+ .local int rx1259_rep
+ .local pmc rx1259_cur
+ (rx1259_cur, rx1259_pos, rx1259_tgt) = self."!cursor_start"()
+ rx1259_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx1259_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1259_eos, rx1259_tgt
+ set rx1259_off, 0
+ lt rx1259_pos, 2, rx1259_start
+ sub rx1259_off, rx1259_pos, 1
+ substr rx1259_tgt, rx1259_tgt, rx1259_off
+ rx1259_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1262_done
+ goto rxscan1262_scan
+ rxscan1262_loop:
+ ($P10) = rx1259_cur."from"()
+ inc $P10
+ set rx1259_pos, $P10
+ ge rx1259_pos, rx1259_eos, rxscan1262_done
+ rxscan1262_scan:
+ set_addr $I10, rxscan1262_loop
+ rx1259_cur."!mark_push"(0, rx1259_pos, $I10)
+ rxscan1262_done:
+.annotate "line", 542
+ # rx enumcharlist negate=0 zerowidth
+ ge rx1259_pos, rx1259_eos, rx1259_fail
+ sub $I10, rx1259_pos, rx1259_off
+ substr $S10, rx1259_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx1259_fail
+ # rx subrule "codeblock" subtype=capture negate=
+ rx1259_cur."!cursor_pos"(rx1259_pos)
+ $P10 = rx1259_cur."codeblock"()
+ unless $P10, rx1259_fail
+ rx1259_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("codeblock")
+ rx1259_pos = $P10."pos"()
+.annotate "line", 541
+ # rx pass
+ rx1259_cur."!cursor_pass"(rx1259_pos, "metachar:sym<{ }>")
+ rx1259_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1259_pos)
+ .return (rx1259_cur)
+ rx1259_fail:
+.annotate "line", 536
+ (rx1259_rep, rx1259_pos, $I10, $P10) = rx1259_cur."!mark_fail"(0)
+ lt rx1259_pos, -1, rx1259_done
+ eq rx1259_pos, -1, rx1259_fail
+ jump $I10
+ rx1259_done:
+ rx1259_cur."!cursor_fail"()
+ rx1259_cur."!cursor_debug"("FAIL ", "metachar:sym<{ }>")
+ .return (rx1259_cur)
+ .return ()
.end
.namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>" :subid("326_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .const 'Sub' $P1269 = "328_1267204702.05125"
- capture_lex $P1269
- .local string rx1261_tgt
- .local int rx1261_pos
- .local int rx1261_off
- .local int rx1261_eos
- .local int rx1261_rep
- .local pmc rx1261_cur
- (rx1261_cur, rx1261_pos, rx1261_tgt) = self."!cursor_start"()
- rx1261_cur."!cursor_debug"("START ", "assertion:sym<name>")
- rx1261_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
- .lex unicode:"$\x{a2}", rx1261_cur
- .local pmc match
- .lex "$/", match
- length rx1261_eos, rx1261_tgt
- set rx1261_off, 0
- lt rx1261_pos, 2, rx1261_start
- sub rx1261_off, rx1261_pos, 1
- substr rx1261_tgt, rx1261_tgt, rx1261_off
- rx1261_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1264_done
- goto rxscan1264_scan
- rxscan1264_loop:
- ($P10) = rx1261_cur."from"()
- inc $P10
- set rx1261_pos, $P10
- ge rx1261_pos, rx1261_eos, rxscan1264_done
- rxscan1264_scan:
- set_addr $I10, rxscan1264_loop
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
- rxscan1264_done:
+.sub "!PREFIX__metachar:sym<{ }>" :subid("325_1272816833.94956") :method
+.annotate "line", 536
+ new $P1261, "ResizablePMCArray"
+ push $P1261, "{"
+ .return ($P1261)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<{ }>" :subid("326_1272816833.94956") :method :outer("320_1272816833.94956")
+.annotate "line", 536
+ .local string rx1264_tgt
+ .local int rx1264_pos
+ .local int rx1264_off
+ .local int rx1264_eos
+ .local int rx1264_rep
+ .local pmc rx1264_cur
+ (rx1264_cur, rx1264_pos, rx1264_tgt) = self."!cursor_start"()
+ rx1264_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx1264_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1264_eos, rx1264_tgt
+ set rx1264_off, 0
+ lt rx1264_pos, 2, rx1264_start
+ sub rx1264_off, rx1264_pos, 1
+ substr rx1264_tgt, rx1264_tgt, rx1264_off
+ rx1264_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1267_done
+ goto rxscan1267_scan
+ rxscan1267_loop:
+ ($P10) = rx1264_cur."from"()
+ inc $P10
+ set rx1264_pos, $P10
+ ge rx1264_pos, rx1264_eos, rxscan1267_done
+ rxscan1267_scan:
+ set_addr $I10, rxscan1267_loop
+ rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+ rxscan1267_done:
+.annotate "line", 546
+ # rx enumcharlist negate=0 zerowidth
+ ge rx1264_pos, rx1264_eos, rx1264_fail
+ sub $I10, rx1264_pos, rx1264_off
+ substr $S10, rx1264_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx1264_fail
+ # rx subrule "codeblock" subtype=capture negate=
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."codeblock"()
+ unless $P10, rx1264_fail
+ rx1264_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("codeblock")
+ rx1264_pos = $P10."pos"()
.annotate "line", 545
+ # rx pass
+ rx1264_cur."!cursor_pass"(rx1264_pos, "assertion:sym<{ }>")
+ rx1264_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1264_pos)
+ .return (rx1264_cur)
+ rx1264_fail:
+.annotate "line", 536
+ (rx1264_rep, rx1264_pos, $I10, $P10) = rx1264_cur."!mark_fail"(0)
+ lt rx1264_pos, -1, rx1264_done
+ eq rx1264_pos, -1, rx1264_fail
+ jump $I10
+ rx1264_done:
+ rx1264_cur."!cursor_fail"()
+ rx1264_cur."!cursor_debug"("FAIL ", "assertion:sym<{ }>")
+ .return (rx1264_cur)
+ .return ()
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "!PREFIX__assertion:sym<{ }>" :subid("327_1272816833.94956") :method
+.annotate "line", 536
+ new $P1266, "ResizablePMCArray"
+ push $P1266, "{"
+ .return ($P1266)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<name>" :subid("328_1272816833.94956") :method :outer("320_1272816833.94956")
+.annotate "line", 536
+ .const 'Sub' $P1277 = "330_1272816833.94956"
+ capture_lex $P1277
+ .local string rx1269_tgt
+ .local int rx1269_pos
+ .local int rx1269_off
+ .local int rx1269_eos
+ .local int rx1269_rep
+ .local pmc rx1269_cur
+ (rx1269_cur, rx1269_pos, rx1269_tgt) = self."!cursor_start"()
+ rx1269_cur."!cursor_debug"("START ", "assertion:sym<name>")
+ rx1269_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+ .lex unicode:"$\x{a2}", rx1269_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1269_eos, rx1269_tgt
+ set rx1269_off, 0
+ lt rx1269_pos, 2, rx1269_start
+ sub rx1269_off, rx1269_pos, 1
+ substr rx1269_tgt, rx1269_tgt, rx1269_off
+ rx1269_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1272_done
+ goto rxscan1272_scan
+ rxscan1272_loop:
+ ($P10) = rx1269_cur."from"()
+ inc $P10
+ set rx1269_pos, $P10
+ ge rx1269_pos, rx1269_eos, rxscan1272_done
+ rxscan1272_scan:
+ set_addr $I10, rxscan1272_loop
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+ rxscan1272_done:
+.annotate "line", 550
# rx subcapture "longname"
- set_addr $I10, rxcap_1265_fail
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+ set_addr $I10, rxcap_1273_fail
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
# rx charclass_q w r 1..-1
- sub $I10, rx1261_pos, rx1261_off
- find_not_cclass $I11, 8192, rx1261_tgt, $I10, rx1261_eos
+ sub $I10, rx1269_pos, rx1269_off
+ find_not_cclass $I11, 8192, rx1269_tgt, $I10, rx1269_eos
add $I12, $I10, 1
- lt $I11, $I12, rx1261_fail
- add rx1261_pos, rx1261_off, $I11
- set_addr $I10, rxcap_1265_fail
- ($I12, $I11) = rx1261_cur."!mark_peek"($I10)
- rx1261_cur."!cursor_pos"($I11)
- ($P10) = rx1261_cur."!cursor_start"()
- $P10."!cursor_pass"(rx1261_pos, "")
- rx1261_cur."!mark_push"(0, -1, 0, $P10)
+ lt $I11, $I12, rx1269_fail
+ add rx1269_pos, rx1269_off, $I11
+ set_addr $I10, rxcap_1273_fail
+ ($I12, $I11) = rx1269_cur."!mark_peek"($I10)
+ rx1269_cur."!cursor_pos"($I11)
+ ($P10) = rx1269_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1269_pos, "")
+ rx1269_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("longname")
- goto rxcap_1265_done
- rxcap_1265_fail:
- goto rx1261_fail
- rxcap_1265_done:
+ goto rxcap_1273_done
+ rxcap_1273_fail:
+ goto rx1269_fail
+ rxcap_1273_done:
+.annotate "line", 557
+ # rx rxquantr1274 ** 0..1
+ set_addr $I1280, rxquantr1274_done
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I1280)
+ rxquantr1274_loop:
+ alt1275_0:
+.annotate "line", 551
+ set_addr $I10, alt1275_1
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
.annotate "line", 552
- # rx rxquantr1266 ** 0..1
- set_addr $I1272, rxquantr1266_done
- rx1261_cur."!mark_push"(0, rx1261_pos, $I1272)
- rxquantr1266_loop:
- alt1267_0:
-.annotate "line", 546
- set_addr $I10, alt1267_1
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
-.annotate "line", 547
# rx subrule "before" subtype=zerowidth negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- .const 'Sub' $P1269 = "328_1267204702.05125"
- capture_lex $P1269
- $P10 = rx1261_cur."before"($P1269)
- unless $P10, rx1261_fail
- goto alt1267_end
- alt1267_1:
- set_addr $I10, alt1267_2
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
-.annotate "line", 548
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ .const 'Sub' $P1277 = "330_1272816833.94956"
+ capture_lex $P1277
+ $P10 = rx1269_cur."before"($P1277)
+ unless $P10, rx1269_fail
+ goto alt1275_end
+ alt1275_1:
+ set_addr $I10, alt1275_2
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 553
# rx literal "="
- add $I11, rx1261_pos, 1
- gt $I11, rx1261_eos, rx1261_fail
- sub $I11, rx1261_pos, rx1261_off
- substr $S10, rx1261_tgt, $I11, 1
- ne $S10, "=", rx1261_fail
- add rx1261_pos, 1
+ add $I11, rx1269_pos, 1
+ gt $I11, rx1269_eos, rx1269_fail
+ sub $I11, rx1269_pos, rx1269_off
+ substr $S10, rx1269_tgt, $I11, 1
+ ne $S10, "=", rx1269_fail
+ add rx1269_pos, 1
# rx subrule "assertion" subtype=capture negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."assertion"()
- unless $P10, rx1261_fail
- rx1261_cur."!mark_push"(0, -1, 0, $P10)
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ $P10 = rx1269_cur."assertion"()
+ unless $P10, rx1269_fail
+ rx1269_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("assertion")
- rx1261_pos = $P10."pos"()
- goto alt1267_end
- alt1267_2:
- set_addr $I10, alt1267_3
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
-.annotate "line", 549
+ rx1269_pos = $P10."pos"()
+ goto alt1275_end
+ alt1275_2:
+ set_addr $I10, alt1275_3
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 554
# rx literal ":"
- add $I11, rx1261_pos, 1
- gt $I11, rx1261_eos, rx1261_fail
- sub $I11, rx1261_pos, rx1261_off
- substr $S10, rx1261_tgt, $I11, 1
- ne $S10, ":", rx1261_fail
- add rx1261_pos, 1
+ add $I11, rx1269_pos, 1
+ gt $I11, rx1269_eos, rx1269_fail
+ sub $I11, rx1269_pos, rx1269_off
+ substr $S10, rx1269_tgt, $I11, 1
+ ne $S10, ":", rx1269_fail
+ add rx1269_pos, 1
# rx subrule "arglist" subtype=capture negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."arglist"()
- unless $P10, rx1261_fail
- rx1261_cur."!mark_push"(0, -1, 0, $P10)
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ $P10 = rx1269_cur."arglist"()
+ unless $P10, rx1269_fail
+ rx1269_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx1261_pos = $P10."pos"()
- goto alt1267_end
- alt1267_3:
- set_addr $I10, alt1267_4
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
-.annotate "line", 550
+ rx1269_pos = $P10."pos"()
+ goto alt1275_end
+ alt1275_3:
+ set_addr $I10, alt1275_4
+ rx1269_cur."!mark_push"(0, rx1269_pos, $I10)
+.annotate "line", 555
# rx literal "("
- add $I11, rx1261_pos, 1
- gt $I11, rx1261_eos, rx1261_fail
- sub $I11, rx1261_pos, rx1261_off
- substr $S10, rx1261_tgt, $I11, 1
- ne $S10, "(", rx1261_fail
- add rx1261_pos, 1
+ add $I11, rx1269_pos, 1
+ gt $I11, rx1269_eos, rx1269_fail
+ sub $I11, rx1269_pos, rx1269_off
+ substr $S10, rx1269_tgt, $I11, 1
+ ne $S10, "(", rx1269_fail
+ add rx1269_pos, 1
# rx subrule "LANG" subtype=capture negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."LANG"("MAIN", "arglist")
- unless $P10, rx1261_fail
- rx1261_cur."!mark_push"(0, -1, 0, $P10)
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ $P10 = rx1269_cur."LANG"("MAIN", "arglist")
+ unless $P10, rx1269_fail
+ rx1269_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx1261_pos = $P10."pos"()
+ rx1269_pos = $P10."pos"()
# rx literal ")"
- add $I11, rx1261_pos, 1
- gt $I11, rx1261_eos, rx1261_fail
- sub $I11, rx1261_pos, rx1261_off
- substr $S10, rx1261_tgt, $I11, 1
- ne $S10, ")", rx1261_fail
- add rx1261_pos, 1
- goto alt1267_end
- alt1267_4:
-.annotate "line", 551
+ add $I11, rx1269_pos, 1
+ gt $I11, rx1269_eos, rx1269_fail
+ sub $I11, rx1269_pos, rx1269_off
+ substr $S10, rx1269_tgt, $I11, 1
+ ne $S10, ")", rx1269_fail
+ add rx1269_pos, 1
+ goto alt1275_end
+ alt1275_4:
+.annotate "line", 556
# rx subrule "normspace" subtype=method negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."normspace"()
- unless $P10, rx1261_fail
- rx1261_pos = $P10."pos"()
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ $P10 = rx1269_cur."normspace"()
+ unless $P10, rx1269_fail
+ rx1269_pos = $P10."pos"()
# rx subrule "nibbler" subtype=capture negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."nibbler"()
- unless $P10, rx1261_fail
- rx1261_cur."!mark_push"(0, -1, 0, $P10)
+ rx1269_cur."!cursor_pos"(rx1269_pos)
+ $P10 = rx1269_cur."nibbler"()
+ unless $P10, rx1269_fail
+ rx1269_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("nibbler")
- rx1261_pos = $P10."pos"()
- alt1267_end:
-.annotate "line", 552
- (rx1261_rep) = rx1261_cur."!mark_commit"($I1272)
- rxquantr1266_done:
-.annotate "line", 544
- # rx pass
- rx1261_cur."!cursor_pass"(rx1261_pos, "assertion:sym<name>")
- rx1261_cur."!cursor_debug"("PASS ", "assertion:sym<name>", " at pos=", rx1261_pos)
- .return (rx1261_cur)
- rx1261_fail:
-.annotate "line", 531
- (rx1261_rep, rx1261_pos, $I10, $P10) = rx1261_cur."!mark_fail"(0)
- lt rx1261_pos, -1, rx1261_done
- eq rx1261_pos, -1, rx1261_fail
- jump $I10
- rx1261_done:
- rx1261_cur."!cursor_fail"()
- rx1261_cur."!cursor_debug"("FAIL ", "assertion:sym<name>")
- .return (rx1261_cur)
+ rx1269_pos = $P10."pos"()
+ alt1275_end:
+.annotate "line", 557
+ (rx1269_rep) = rx1269_cur."!mark_commit"($I1280)
+ rxquantr1274_done:
+.annotate "line", 549
+ # rx pass
+ rx1269_cur."!cursor_pass"(rx1269_pos, "assertion:sym<name>")
+ rx1269_cur."!cursor_debug"("PASS ", "assertion:sym<name>", " at pos=", rx1269_pos)
+ .return (rx1269_cur)
+ rx1269_fail:
+.annotate "line", 536
+ (rx1269_rep, rx1269_pos, $I10, $P10) = rx1269_cur."!mark_fail"(0)
+ lt rx1269_pos, -1, rx1269_done
+ eq rx1269_pos, -1, rx1269_fail
+ jump $I10
+ rx1269_done:
+ rx1269_cur."!cursor_fail"()
+ rx1269_cur."!cursor_debug"("FAIL ", "assertion:sym<name>")
+ .return (rx1269_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>" :subid("327_1267204702.05125") :method
-.annotate "line", 531
- new $P1263, "ResizablePMCArray"
- push $P1263, ""
- .return ($P1263)
+.sub "!PREFIX__assertion:sym<name>" :subid("329_1272816833.94956") :method
+.annotate "line", 536
+ new $P1271, "ResizablePMCArray"
+ push $P1271, ""
+ .return ($P1271)
.end
.namespace ["NQP";"Regex"]
-.sub "_block1268" :anon :subid("328_1267204702.05125") :method :outer("326_1267204702.05125")
-.annotate "line", 547
- .local string rx1270_tgt
- .local int rx1270_pos
- .local int rx1270_off
- .local int rx1270_eos
- .local int rx1270_rep
- .local pmc rx1270_cur
- (rx1270_cur, rx1270_pos, rx1270_tgt) = self."!cursor_start"()
- rx1270_cur."!cursor_debug"("START ", "")
- .lex unicode:"$\x{a2}", rx1270_cur
- .local pmc match
- .lex "$/", match
- length rx1270_eos, rx1270_tgt
- set rx1270_off, 0
- lt rx1270_pos, 2, rx1270_start
- sub rx1270_off, rx1270_pos, 1
- substr rx1270_tgt, rx1270_tgt, rx1270_off
- rx1270_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1271_done
- goto rxscan1271_scan
- rxscan1271_loop:
- ($P10) = rx1270_cur."from"()
- inc $P10
- set rx1270_pos, $P10
- ge rx1270_pos, rx1270_eos, rxscan1271_done
- rxscan1271_scan:
- set_addr $I10, rxscan1271_loop
- rx1270_cur."!mark_push"(0, rx1270_pos, $I10)
- rxscan1271_done:
+.sub "_block1276" :anon :subid("330_1272816833.94956") :method :outer("328_1272816833.94956")
+.annotate "line", 552
+ .local string rx1278_tgt
+ .local int rx1278_pos
+ .local int rx1278_off
+ .local int rx1278_eos
+ .local int rx1278_rep
+ .local pmc rx1278_cur
+ (rx1278_cur, rx1278_pos, rx1278_tgt) = self."!cursor_start"()
+ rx1278_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1278_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1278_eos, rx1278_tgt
+ set rx1278_off, 0
+ lt rx1278_pos, 2, rx1278_start
+ sub rx1278_off, rx1278_pos, 1
+ substr rx1278_tgt, rx1278_tgt, rx1278_off
+ rx1278_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1279_done
+ goto rxscan1279_scan
+ rxscan1279_loop:
+ ($P10) = rx1278_cur."from"()
+ inc $P10
+ set rx1278_pos, $P10
+ ge rx1278_pos, rx1278_eos, rxscan1279_done
+ rxscan1279_scan:
+ set_addr $I10, rxscan1279_loop
+ rx1278_cur."!mark_push"(0, rx1278_pos, $I10)
+ rxscan1279_done:
# rx literal ">"
- add $I11, rx1270_pos, 1
- gt $I11, rx1270_eos, rx1270_fail
- sub $I11, rx1270_pos, rx1270_off
- substr $S10, rx1270_tgt, $I11, 1
- ne $S10, ">", rx1270_fail
- add rx1270_pos, 1
- # rx pass
- rx1270_cur."!cursor_pass"(rx1270_pos, "")
- rx1270_cur."!cursor_debug"("PASS ", "", " at pos=", rx1270_pos)
- .return (rx1270_cur)
- rx1270_fail:
- (rx1270_rep, rx1270_pos, $I10, $P10) = rx1270_cur."!mark_fail"(0)
- lt rx1270_pos, -1, rx1270_done
- eq rx1270_pos, -1, rx1270_fail
- jump $I10
- rx1270_done:
- rx1270_cur."!cursor_fail"()
- rx1270_cur."!cursor_debug"("FAIL ", "")
- .return (rx1270_cur)
+ add $I11, rx1278_pos, 1
+ gt $I11, rx1278_eos, rx1278_fail
+ sub $I11, rx1278_pos, rx1278_off
+ substr $S10, rx1278_tgt, $I11, 1
+ ne $S10, ">", rx1278_fail
+ add rx1278_pos, 1
+ # rx pass
+ rx1278_cur."!cursor_pass"(rx1278_pos, "")
+ rx1278_cur."!cursor_debug"("PASS ", "", " at pos=", rx1278_pos)
+ .return (rx1278_cur)
+ rx1278_fail:
+ (rx1278_rep, rx1278_pos, $I10, $P10) = rx1278_cur."!mark_fail"(0)
+ lt rx1278_pos, -1, rx1278_done
+ eq rx1278_pos, -1, rx1278_fail
+ jump $I10
+ rx1278_done:
+ rx1278_cur."!cursor_fail"()
+ rx1278_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1278_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "codeblock" :subid("329_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .local string rx1274_tgt
- .local int rx1274_pos
- .local int rx1274_off
- .local int rx1274_eos
- .local int rx1274_rep
- .local pmc rx1274_cur
- (rx1274_cur, rx1274_pos, rx1274_tgt) = self."!cursor_start"()
- rx1274_cur."!cursor_debug"("START ", "codeblock")
- .lex unicode:"$\x{a2}", rx1274_cur
- .local pmc match
- .lex "$/", match
- length rx1274_eos, rx1274_tgt
- set rx1274_off, 0
- lt rx1274_pos, 2, rx1274_start
- sub rx1274_off, rx1274_pos, 1
- substr rx1274_tgt, rx1274_tgt, rx1274_off
- rx1274_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1278_done
- goto rxscan1278_scan
- rxscan1278_loop:
- ($P10) = rx1274_cur."from"()
- inc $P10
- set rx1274_pos, $P10
- ge rx1274_pos, rx1274_eos, rxscan1278_done
- rxscan1278_scan:
- set_addr $I10, rxscan1278_loop
- rx1274_cur."!mark_push"(0, rx1274_pos, $I10)
- rxscan1278_done:
-.annotate "line", 557
+.sub "codeblock" :subid("331_1272816833.94956") :method :outer("320_1272816833.94956")
+.annotate "line", 536
+ .local string rx1282_tgt
+ .local int rx1282_pos
+ .local int rx1282_off
+ .local int rx1282_eos
+ .local int rx1282_rep
+ .local pmc rx1282_cur
+ (rx1282_cur, rx1282_pos, rx1282_tgt) = self."!cursor_start"()
+ rx1282_cur."!cursor_debug"("START ", "codeblock")
+ .lex unicode:"$\x{a2}", rx1282_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1282_eos, rx1282_tgt
+ set rx1282_off, 0
+ lt rx1282_pos, 2, rx1282_start
+ sub rx1282_off, rx1282_pos, 1
+ substr rx1282_tgt, rx1282_tgt, rx1282_off
+ rx1282_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1286_done
+ goto rxscan1286_scan
+ rxscan1286_loop:
+ ($P10) = rx1282_cur."from"()
+ inc $P10
+ set rx1282_pos, $P10
+ ge rx1282_pos, rx1282_eos, rxscan1286_done
+ rxscan1286_scan:
+ set_addr $I10, rxscan1286_loop
+ rx1282_cur."!mark_push"(0, rx1282_pos, $I10)
+ rxscan1286_done:
+.annotate "line", 562
# rx subrule "LANG" subtype=capture negate=
- rx1274_cur."!cursor_pos"(rx1274_pos)
- $P10 = rx1274_cur."LANG"("MAIN", "pblock")
- unless $P10, rx1274_fail
- rx1274_cur."!mark_push"(0, -1, 0, $P10)
+ rx1282_cur."!cursor_pos"(rx1282_pos)
+ $P10 = rx1282_cur."LANG"("MAIN", "pblock")
+ unless $P10, rx1282_fail
+ rx1282_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx1274_pos = $P10."pos"()
-.annotate "line", 556
+ rx1282_pos = $P10."pos"()
+.annotate "line", 561
# rx pass
- rx1274_cur."!cursor_pass"(rx1274_pos, "codeblock")
- rx1274_cur."!cursor_debug"("PASS ", "codeblock", " at pos=", rx1274_pos)
- .return (rx1274_cur)
- rx1274_fail:
-.annotate "line", 531
- (rx1274_rep, rx1274_pos, $I10, $P10) = rx1274_cur."!mark_fail"(0)
- lt rx1274_pos, -1, rx1274_done
- eq rx1274_pos, -1, rx1274_fail
- jump $I10
- rx1274_done:
- rx1274_cur."!cursor_fail"()
- rx1274_cur."!cursor_debug"("FAIL ", "codeblock")
- .return (rx1274_cur)
+ rx1282_cur."!cursor_pass"(rx1282_pos, "codeblock")
+ rx1282_cur."!cursor_debug"("PASS ", "codeblock", " at pos=", rx1282_pos)
+ .return (rx1282_cur)
+ rx1282_fail:
+.annotate "line", 536
+ (rx1282_rep, rx1282_pos, $I10, $P10) = rx1282_cur."!mark_fail"(0)
+ lt rx1282_pos, -1, rx1282_done
+ eq rx1282_pos, -1, rx1282_fail
+ jump $I10
+ rx1282_done:
+ rx1282_cur."!cursor_fail"()
+ rx1282_cur."!cursor_debug"("FAIL ", "codeblock")
+ .return (rx1282_cur)
.return ()
.end
.namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock" :subid("330_1267204702.05125") :method
-.annotate "line", 531
- $P1276 = self."!PREFIX__!subrule"("block", "")
- new $P1277, "ResizablePMCArray"
- push $P1277, $P1276
- .return ($P1277)
+.sub "!PREFIX__codeblock" :subid("332_1272816833.94956") :method
+.annotate "line", 536
+ $P1284 = self."!PREFIX__!subrule"("block", "")
+ new $P1285, "ResizablePMCArray"
+ push $P1285, $P1284
+ .return ($P1285)
.end
### .include 'gen/nqp-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204714.47172")
+.sub "_block11" :anon :subid("10_1272816841.80681")
.annotate "line", 0
get_hll_global $P14, ["NQP";"Actions"], "_block13"
capture_lex $P14
.annotate "line", 3
get_hll_global $P14, ["NQP";"Actions"], "_block13"
capture_lex $P14
- $P2168 = $P14()
+ $P2175 = $P14()
.annotate "line", 1
- .return ($P2168)
+ .return ($P2175)
.end
.namespace []
-.sub "" :load :init :subid("post126") :outer("10_1267204714.47172")
+.sub "" :load :init :subid("post127") :outer("10_1272816841.80681")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204714.47172"
+ .const 'Sub' $P12 = "10_1272816841.80681"
.local pmc block
set block, $P12
- $P2169 = get_root_global ["parrot"], "P6metaclass"
- $P2169."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
+ $P2176 = get_root_global ["parrot"], "P6metaclass"
+ $P2176."new_class"("NQP::Actions", "HLL::Actions" :named("parent"))
.end
.namespace ["NQP";"Actions"]
-.sub "_block13" :subid("11_1267204714.47172") :outer("10_1267204714.47172")
+.sub "_block13" :subid("11_1272816841.80681") :outer("10_1272816841.80681")
.annotate "line", 3
- .const 'Sub' $P2164 = "125_1267204714.47172"
- capture_lex $P2164
- get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099"
- capture_lex $P2100
- .const 'Sub' $P2089 = "119_1267204714.47172"
- capture_lex $P2089
- .const 'Sub' $P2077 = "118_1267204714.47172"
- capture_lex $P2077
- .const 'Sub' $P2067 = "117_1267204714.47172"
- capture_lex $P2067
- .const 'Sub' $P2057 = "116_1267204714.47172"
- capture_lex $P2057
- .const 'Sub' $P2047 = "115_1267204714.47172"
+ .const 'Sub' $P2171 = "126_1272816841.80681"
+ capture_lex $P2171
+ get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106"
+ capture_lex $P2107
+ .const 'Sub' $P2096 = "120_1272816841.80681"
+ capture_lex $P2096
+ .const 'Sub' $P2084 = "119_1272816841.80681"
+ capture_lex $P2084
+ .const 'Sub' $P2074 = "118_1272816841.80681"
+ capture_lex $P2074
+ .const 'Sub' $P2064 = "117_1272816841.80681"
+ capture_lex $P2064
+ .const 'Sub' $P2054 = "116_1272816841.80681"
+ capture_lex $P2054
+ .const 'Sub' $P2047 = "115_1272816841.80681"
capture_lex $P2047
- .const 'Sub' $P2033 = "114_1267204714.47172"
+ .const 'Sub' $P2033 = "114_1272816841.80681"
capture_lex $P2033
- .const 'Sub' $P2023 = "113_1267204714.47172"
+ .const 'Sub' $P2023 = "113_1272816841.80681"
capture_lex $P2023
- .const 'Sub' $P1986 = "112_1267204714.47172"
+ .const 'Sub' $P1986 = "112_1272816841.80681"
capture_lex $P1986
- .const 'Sub' $P1972 = "111_1267204714.47172"
+ .const 'Sub' $P1972 = "111_1272816841.80681"
capture_lex $P1972
- .const 'Sub' $P1962 = "110_1267204714.47172"
+ .const 'Sub' $P1962 = "110_1272816841.80681"
capture_lex $P1962
- .const 'Sub' $P1952 = "109_1267204714.47172"
+ .const 'Sub' $P1952 = "109_1272816841.80681"
capture_lex $P1952
- .const 'Sub' $P1942 = "108_1267204714.47172"
+ .const 'Sub' $P1942 = "108_1272816841.80681"
capture_lex $P1942
- .const 'Sub' $P1932 = "107_1267204714.47172"
+ .const 'Sub' $P1932 = "107_1272816841.80681"
capture_lex $P1932
- .const 'Sub' $P1922 = "106_1267204714.47172"
+ .const 'Sub' $P1922 = "106_1272816841.80681"
capture_lex $P1922
- .const 'Sub' $P1894 = "105_1267204714.47172"
+ .const 'Sub' $P1894 = "105_1272816841.80681"
capture_lex $P1894
- .const 'Sub' $P1877 = "104_1267204714.47172"
+ .const 'Sub' $P1877 = "104_1272816841.80681"
capture_lex $P1877
- .const 'Sub' $P1867 = "103_1267204714.47172"
+ .const 'Sub' $P1867 = "103_1272816841.80681"
capture_lex $P1867
- .const 'Sub' $P1854 = "102_1267204714.47172"
+ .const 'Sub' $P1854 = "102_1272816841.80681"
capture_lex $P1854
- .const 'Sub' $P1841 = "101_1267204714.47172"
+ .const 'Sub' $P1841 = "101_1272816841.80681"
capture_lex $P1841
- .const 'Sub' $P1828 = "100_1267204714.47172"
+ .const 'Sub' $P1828 = "100_1272816841.80681"
capture_lex $P1828
- .const 'Sub' $P1818 = "99_1267204714.47172"
+ .const 'Sub' $P1818 = "99_1272816841.80681"
capture_lex $P1818
- .const 'Sub' $P1789 = "98_1267204714.47172"
+ .const 'Sub' $P1789 = "98_1272816841.80681"
capture_lex $P1789
- .const 'Sub' $P1769 = "97_1267204714.47172"
+ .const 'Sub' $P1769 = "97_1272816841.80681"
capture_lex $P1769
- .const 'Sub' $P1759 = "96_1267204714.47172"
+ .const 'Sub' $P1759 = "96_1272816841.80681"
capture_lex $P1759
- .const 'Sub' $P1749 = "95_1267204714.47172"
+ .const 'Sub' $P1749 = "95_1272816841.80681"
capture_lex $P1749
- .const 'Sub' $P1722 = "94_1267204714.47172"
+ .const 'Sub' $P1722 = "94_1272816841.80681"
capture_lex $P1722
- .const 'Sub' $P1704 = "93_1267204714.47172"
+ .const 'Sub' $P1704 = "93_1272816841.80681"
capture_lex $P1704
- .const 'Sub' $P1694 = "92_1267204714.47172"
+ .const 'Sub' $P1694 = "92_1272816841.80681"
capture_lex $P1694
- .const 'Sub' $P1610 = "89_1267204714.47172"
+ .const 'Sub' $P1610 = "89_1272816841.80681"
capture_lex $P1610
- .const 'Sub' $P1600 = "88_1267204714.47172"
+ .const 'Sub' $P1600 = "88_1272816841.80681"
capture_lex $P1600
- .const 'Sub' $P1571 = "87_1267204714.47172"
+ .const 'Sub' $P1571 = "87_1272816841.80681"
capture_lex $P1571
- .const 'Sub' $P1529 = "86_1267204714.47172"
+ .const 'Sub' $P1529 = "86_1272816841.80681"
capture_lex $P1529
- .const 'Sub' $P1513 = "85_1267204714.47172"
+ .const 'Sub' $P1513 = "85_1272816841.80681"
capture_lex $P1513
- .const 'Sub' $P1504 = "84_1267204714.47172"
+ .const 'Sub' $P1504 = "84_1272816841.80681"
capture_lex $P1504
- .const 'Sub' $P1472 = "83_1267204714.47172"
+ .const 'Sub' $P1472 = "83_1272816841.80681"
capture_lex $P1472
- .const 'Sub' $P1373 = "80_1267204714.47172"
+ .const 'Sub' $P1373 = "80_1272816841.80681"
capture_lex $P1373
- .const 'Sub' $P1356 = "79_1267204714.47172"
+ .const 'Sub' $P1356 = "79_1272816841.80681"
capture_lex $P1356
- .const 'Sub' $P1336 = "78_1267204714.47172"
+ .const 'Sub' $P1336 = "78_1272816841.80681"
capture_lex $P1336
- .const 'Sub' $P1252 = "77_1267204714.47172"
+ .const 'Sub' $P1252 = "77_1272816841.80681"
capture_lex $P1252
- .const 'Sub' $P1228 = "75_1267204714.47172"
+ .const 'Sub' $P1228 = "75_1272816841.80681"
capture_lex $P1228
- .const 'Sub' $P1194 = "73_1267204714.47172"
+ .const 'Sub' $P1194 = "73_1272816841.80681"
capture_lex $P1194
- .const 'Sub' $P1144 = "71_1267204714.47172"
+ .const 'Sub' $P1144 = "71_1272816841.80681"
capture_lex $P1144
- .const 'Sub' $P1134 = "70_1267204714.47172"
+ .const 'Sub' $P1134 = "70_1272816841.80681"
capture_lex $P1134
- .const 'Sub' $P1124 = "69_1267204714.47172"
+ .const 'Sub' $P1124 = "69_1272816841.80681"
capture_lex $P1124
- .const 'Sub' $P1053 = "67_1267204714.47172"
+ .const 'Sub' $P1053 = "67_1272816841.80681"
capture_lex $P1053
- .const 'Sub' $P1036 = "66_1267204714.47172"
+ .const 'Sub' $P1036 = "66_1272816841.80681"
capture_lex $P1036
- .const 'Sub' $P1026 = "65_1267204714.47172"
+ .const 'Sub' $P1026 = "65_1272816841.80681"
capture_lex $P1026
- .const 'Sub' $P1016 = "64_1267204714.47172"
+ .const 'Sub' $P1016 = "64_1272816841.80681"
capture_lex $P1016
- .const 'Sub' $P1006 = "63_1267204714.47172"
+ .const 'Sub' $P1006 = "63_1272816841.80681"
capture_lex $P1006
- .const 'Sub' $P982 = "62_1267204714.47172"
+ .const 'Sub' $P982 = "62_1272816841.80681"
capture_lex $P982
- .const 'Sub' $P929 = "61_1267204714.47172"
+ .const 'Sub' $P929 = "61_1272816841.80681"
capture_lex $P929
- .const 'Sub' $P919 = "60_1267204714.47172"
+ .const 'Sub' $P919 = "60_1272816841.80681"
capture_lex $P919
- .const 'Sub' $P830 = "58_1267204714.47172"
+ .const 'Sub' $P830 = "58_1272816841.80681"
capture_lex $P830
- .const 'Sub' $P804 = "57_1267204714.47172"
+ .const 'Sub' $P804 = "57_1272816841.80681"
capture_lex $P804
- .const 'Sub' $P788 = "56_1267204714.47172"
+ .const 'Sub' $P788 = "56_1272816841.80681"
capture_lex $P788
- .const 'Sub' $P778 = "55_1267204714.47172"
+ .const 'Sub' $P778 = "55_1272816841.80681"
capture_lex $P778
- .const 'Sub' $P768 = "54_1267204714.47172"
+ .const 'Sub' $P768 = "54_1272816841.80681"
capture_lex $P768
- .const 'Sub' $P758 = "53_1267204714.47172"
+ .const 'Sub' $P758 = "53_1272816841.80681"
capture_lex $P758
- .const 'Sub' $P748 = "52_1267204714.47172"
+ .const 'Sub' $P748 = "52_1272816841.80681"
capture_lex $P748
- .const 'Sub' $P738 = "51_1267204714.47172"
+ .const 'Sub' $P738 = "51_1272816841.80681"
capture_lex $P738
- .const 'Sub' $P728 = "50_1267204714.47172"
+ .const 'Sub' $P728 = "50_1272816841.80681"
capture_lex $P728
- .const 'Sub' $P718 = "49_1267204714.47172"
+ .const 'Sub' $P718 = "49_1272816841.80681"
capture_lex $P718
- .const 'Sub' $P708 = "48_1267204714.47172"
+ .const 'Sub' $P708 = "48_1272816841.80681"
capture_lex $P708
- .const 'Sub' $P698 = "47_1267204714.47172"
+ .const 'Sub' $P698 = "47_1272816841.80681"
capture_lex $P698
- .const 'Sub' $P688 = "46_1267204714.47172"
+ .const 'Sub' $P688 = "46_1272816841.80681"
capture_lex $P688
- .const 'Sub' $P678 = "45_1267204714.47172"
+ .const 'Sub' $P678 = "45_1272816841.80681"
capture_lex $P678
- .const 'Sub' $P668 = "44_1267204714.47172"
+ .const 'Sub' $P668 = "44_1272816841.80681"
capture_lex $P668
- .const 'Sub' $P658 = "43_1267204714.47172"
+ .const 'Sub' $P658 = "43_1272816841.80681"
capture_lex $P658
- .const 'Sub' $P640 = "42_1267204714.47172"
+ .const 'Sub' $P640 = "42_1272816841.80681"
capture_lex $P640
- .const 'Sub' $P605 = "41_1267204714.47172"
+ .const 'Sub' $P605 = "41_1272816841.80681"
capture_lex $P605
- .const 'Sub' $P589 = "40_1267204714.47172"
+ .const 'Sub' $P589 = "40_1272816841.80681"
capture_lex $P589
- .const 'Sub' $P568 = "39_1267204714.47172"
+ .const 'Sub' $P568 = "39_1272816841.80681"
capture_lex $P568
- .const 'Sub' $P548 = "38_1267204714.47172"
+ .const 'Sub' $P548 = "38_1272816841.80681"
capture_lex $P548
- .const 'Sub' $P535 = "37_1267204714.47172"
+ .const 'Sub' $P535 = "37_1272816841.80681"
capture_lex $P535
- .const 'Sub' $P509 = "36_1267204714.47172"
+ .const 'Sub' $P509 = "36_1272816841.80681"
capture_lex $P509
- .const 'Sub' $P473 = "35_1267204714.47172"
+ .const 'Sub' $P473 = "35_1272816841.80681"
capture_lex $P473
- .const 'Sub' $P456 = "34_1267204714.47172"
+ .const 'Sub' $P456 = "34_1272816841.80681"
capture_lex $P456
- .const 'Sub' $P442 = "33_1267204714.47172"
+ .const 'Sub' $P442 = "33_1272816841.80681"
capture_lex $P442
- .const 'Sub' $P389 = "31_1267204714.47172"
+ .const 'Sub' $P389 = "31_1272816841.80681"
capture_lex $P389
- .const 'Sub' $P376 = "30_1267204714.47172"
+ .const 'Sub' $P376 = "30_1272816841.80681"
capture_lex $P376
- .const 'Sub' $P357 = "29_1267204714.47172"
+ .const 'Sub' $P357 = "29_1272816841.80681"
capture_lex $P357
- .const 'Sub' $P347 = "28_1267204714.47172"
+ .const 'Sub' $P347 = "28_1272816841.80681"
capture_lex $P347
- .const 'Sub' $P337 = "27_1267204714.47172"
+ .const 'Sub' $P337 = "27_1272816841.80681"
capture_lex $P337
- .const 'Sub' $P321 = "26_1267204714.47172"
+ .const 'Sub' $P321 = "26_1272816841.80681"
capture_lex $P321
- .const 'Sub' $P261 = "24_1267204714.47172"
+ .const 'Sub' $P261 = "24_1272816841.80681"
capture_lex $P261
- .const 'Sub' $P212 = "22_1267204714.47172"
+ .const 'Sub' $P212 = "22_1272816841.80681"
capture_lex $P212
- .const 'Sub' $P193 = "21_1267204714.47172"
+ .const 'Sub' $P193 = "21_1272816841.80681"
capture_lex $P193
- .const 'Sub' $P160 = "20_1267204714.47172"
+ .const 'Sub' $P160 = "20_1272816841.80681"
capture_lex $P160
- .const 'Sub' $P150 = "19_1267204714.47172"
+ .const 'Sub' $P150 = "19_1272816841.80681"
capture_lex $P150
- .const 'Sub' $P96 = "18_1267204714.47172"
+ .const 'Sub' $P96 = "18_1272816841.80681"
capture_lex $P96
- .const 'Sub' $P81 = "17_1267204714.47172"
+ .const 'Sub' $P81 = "17_1272816841.80681"
capture_lex $P81
- .const 'Sub' $P61 = "16_1267204714.47172"
+ .const 'Sub' $P61 = "16_1272816841.80681"
capture_lex $P61
- .const 'Sub' $P26 = "13_1267204714.47172"
+ .const 'Sub' $P26 = "13_1272816841.80681"
capture_lex $P26
- .const 'Sub' $P16 = "12_1267204714.47172"
+ .const 'Sub' $P16 = "12_1272816841.80681"
capture_lex $P16
get_global $P15, "@BLOCK"
- unless_null $P15, vivify_129
+ unless_null $P15, vivify_130
$P15 = root_new ['parrot';'ResizablePMCArray']
set_global "@BLOCK", $P15
- vivify_129:
+ vivify_130:
.annotate "line", 9
- .const 'Sub' $P16 = "12_1267204714.47172"
+ .const 'Sub' $P16 = "12_1272816841.80681"
capture_lex $P16
.lex "xblock_immediate", $P16
.annotate "line", 14
- .const 'Sub' $P26 = "13_1267204714.47172"
+ .const 'Sub' $P26 = "13_1272816841.80681"
capture_lex $P26
.lex "block_immediate", $P26
.annotate "line", 24
- .const 'Sub' $P61 = "16_1267204714.47172"
+ .const 'Sub' $P61 = "16_1272816841.80681"
capture_lex $P61
.lex "vivitype", $P61
.annotate "line", 43
- .const 'Sub' $P81 = "17_1267204714.47172"
+ .const 'Sub' $P81 = "17_1272816841.80681"
capture_lex $P81
.lex "colonpair_str", $P81
.annotate "line", 190
- .const 'Sub' $P96 = "18_1267204714.47172"
+ .const 'Sub' $P96 = "18_1272816841.80681"
capture_lex $P96
.lex "push_block_handler", $P96
.annotate "line", 3
@@ -16015,69 +16158,69 @@
find_lex $P192, "colonpair_str"
.annotate "line", 183
find_lex $P588, "push_block_handler"
-.annotate "line", 768
- get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099"
- capture_lex $P2100
- $P2162 = $P2100()
+.annotate "line", 769
+ get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106"
+ capture_lex $P2107
+ $P2169 = $P2107()
.annotate "line", 3
- .return ($P2162)
+ .return ($P2169)
.end
.namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post127") :outer("11_1267204714.47172")
+.sub "" :load :init :subid("post128") :outer("11_1272816841.80681")
.annotate "line", 3
get_hll_global $P14, ["NQP";"Actions"], "_block13"
.local pmc block
set block, $P14
.annotate "line", 5
- .const 'Sub' $P2164 = "125_1267204714.47172"
- capture_lex $P2164
- $P2164()
- $P2167 = get_root_global ["parrot"], "P6metaclass"
- $P2167."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
+ .const 'Sub' $P2171 = "126_1272816841.80681"
+ capture_lex $P2171
+ $P2171()
+ $P2174 = get_root_global ["parrot"], "P6metaclass"
+ $P2174."new_class"("NQP::RegexActions", "Regex::P6Regex::Actions" :named("parent"))
.end
.namespace ["NQP";"Actions"]
-.sub "_block2163" :anon :subid("125_1267204714.47172") :outer("11_1267204714.47172")
+.sub "_block2170" :anon :subid("126_1272816841.80681") :outer("11_1272816841.80681")
.annotate "line", 6
- get_global $P2165, "@BLOCK"
- unless_null $P2165, vivify_128
- $P2165 = root_new ['parrot';'ResizablePMCArray']
- set_global "@BLOCK", $P2165
- vivify_128:
- $P2166 = new ['ResizablePMCArray']
- set_global "@BLOCK", $P2166
+ get_global $P2172, "@BLOCK"
+ unless_null $P2172, vivify_129
+ $P2172 = root_new ['parrot';'ResizablePMCArray']
+ set_global "@BLOCK", $P2172
+ vivify_129:
+ $P2173 = new ['ResizablePMCArray']
+ set_global "@BLOCK", $P2173
.annotate "line", 5
- .return ($P2166)
+ .return ($P2173)
.end
.namespace ["NQP";"Actions"]
-.sub "xblock_immediate" :subid("12_1267204714.47172") :outer("11_1267204714.47172")
+.sub "xblock_immediate" :subid("12_1272816841.80681") :outer("11_1272816841.80681")
.param pmc param_19
.annotate "line", 9
new $P18, 'ExceptionHandler'
set_addr $P18, control_17
- $P18."handle_types"(58)
+ $P18."handle_types"(57)
push_eh $P18
.lex "$xblock", param_19
.annotate "line", 10
find_lex $P20, "$xblock"
- unless_null $P20, vivify_130
+ unless_null $P20, vivify_131
$P20 = root_new ['parrot';'ResizablePMCArray']
- vivify_130:
+ vivify_131:
set $P21, $P20[1]
- unless_null $P21, vivify_131
+ unless_null $P21, vivify_132
new $P21, "Undef"
- vivify_131:
+ vivify_132:
$P22 = "block_immediate"($P21)
find_lex $P23, "$xblock"
- unless_null $P23, vivify_132
+ unless_null $P23, vivify_133
$P23 = root_new ['parrot';'ResizablePMCArray']
store_lex "$xblock", $P23
- vivify_132:
+ vivify_133:
set $P23[1], $P22
find_lex $P24, "$xblock"
.annotate "line", 9
@@ -16091,14 +16234,14 @@
.namespace ["NQP";"Actions"]
-.sub "block_immediate" :subid("13_1267204714.47172") :outer("11_1267204714.47172")
+.sub "block_immediate" :subid("13_1272816841.80681") :outer("11_1272816841.80681")
.param pmc param_29
.annotate "line", 14
- .const 'Sub' $P39 = "14_1267204714.47172"
+ .const 'Sub' $P39 = "14_1272816841.80681"
capture_lex $P39
new $P28, 'ExceptionHandler'
set_addr $P28, control_27
- $P28."handle_types"(58)
+ $P28."handle_types"(57)
push_eh $P28
.lex "$block", param_29
.annotate "line", 15
@@ -16116,7 +16259,7 @@
set $P32, $P37
unless_33_end:
if $P32, unless_31_end
- .const 'Sub' $P39 = "14_1267204714.47172"
+ .const 'Sub' $P39 = "14_1272816841.80681"
capture_lex $P39
$P39()
unless_31_end:
@@ -16132,9 +16275,9 @@
.namespace ["NQP";"Actions"]
-.sub "_block38" :anon :subid("14_1267204714.47172") :outer("13_1267204714.47172")
+.sub "_block38" :anon :subid("14_1272816841.80681") :outer("13_1272816841.80681")
.annotate "line", 16
- .const 'Sub' $P50 = "15_1267204714.47172"
+ .const 'Sub' $P50 = "15_1272816841.80681"
capture_lex $P50
.annotate "line", 17
new $P40, "Undef"
@@ -16147,17 +16290,17 @@
find_lex $P45, "$block"
$P46 = $P45."list"()
defined $I47, $P46
- unless $I47, for_undef_133
+ unless $I47, for_undef_134
iter $P44, $P46
new $P56, 'ExceptionHandler'
set_addr $P56, loop55_handler
- $P56."handle_types"(65, 67, 66)
+ $P56."handle_types"(64, 66, 65)
push_eh $P56
loop55_test:
unless $P44, loop55_done
shift $P48, $P44
loop55_redo:
- .const 'Sub' $P50 = "15_1267204714.47172"
+ .const 'Sub' $P50 = "15_1272816841.80681"
capture_lex $P50
$P50($P48)
loop55_next:
@@ -16166,11 +16309,11 @@
.local pmc exception
.get_results (exception)
getattribute $P57, exception, 'type'
- eq $P57, 65, loop55_next
- eq $P57, 67, loop55_redo
+ eq $P57, 64, loop55_next
+ eq $P57, 66, loop55_redo
loop55_done:
pop_eh
- for_undef_133:
+ for_undef_134:
.annotate "line", 19
find_lex $P58, "$stmts"
store_lex "$block", $P58
@@ -16180,7 +16323,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block49" :anon :subid("15_1267204714.47172") :outer("14_1267204714.47172")
+.sub "_block49" :anon :subid("15_1272816841.80681") :outer("14_1272816841.80681")
.param pmc param_51
.annotate "line", 18
.lex "$_", param_51
@@ -16192,12 +16335,12 @@
.namespace ["NQP";"Actions"]
-.sub "vivitype" :subid("16_1267204714.47172") :outer("11_1267204714.47172")
+.sub "vivitype" :subid("16_1272816841.80681") :outer("11_1272816841.80681")
.param pmc param_64
.annotate "line", 24
new $P63, 'ExceptionHandler'
set_addr $P63, control_62
- $P63."handle_types"(58)
+ $P63."handle_types"(57)
push_eh $P63
.lex "$sigil", param_64
.annotate "line", 25
@@ -16240,12 +16383,12 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair_str" :subid("17_1267204714.47172") :outer("11_1267204714.47172")
+.sub "colonpair_str" :subid("17_1272816841.80681") :outer("11_1272816841.80681")
.param pmc param_84
.annotate "line", 43
new $P83, 'ExceptionHandler'
set_addr $P83, control_82
- $P83."handle_types"(58)
+ $P83."handle_types"(57)
push_eh $P83
.lex "$ast", param_84
.annotate "line", 44
@@ -16278,36 +16421,36 @@
.namespace ["NQP";"Actions"]
-.sub "push_block_handler" :subid("18_1267204714.47172") :outer("11_1267204714.47172")
+.sub "push_block_handler" :subid("18_1272816841.80681") :outer("11_1272816841.80681")
.param pmc param_99
.param pmc param_100
.annotate "line", 190
new $P98, 'ExceptionHandler'
set_addr $P98, control_97
- $P98."handle_types"(58)
+ $P98."handle_types"(57)
push_eh $P98
.lex "$/", param_99
.lex "$block", param_100
.annotate "line", 191
get_global $P102, "@BLOCK"
- unless_null $P102, vivify_134
+ unless_null $P102, vivify_135
$P102 = root_new ['parrot';'ResizablePMCArray']
- vivify_134:
+ vivify_135:
set $P103, $P102[0]
- unless_null $P103, vivify_135
+ unless_null $P103, vivify_136
new $P103, "Undef"
- vivify_135:
+ vivify_136:
$P104 = $P103."handlers"()
if $P104, unless_101_end
.annotate "line", 192
get_global $P105, "@BLOCK"
- unless_null $P105, vivify_136
+ unless_null $P105, vivify_137
$P105 = root_new ['parrot';'ResizablePMCArray']
- vivify_136:
+ vivify_137:
set $P106, $P105[0]
- unless_null $P106, vivify_137
+ unless_null $P106, vivify_138
new $P106, "Undef"
- vivify_137:
+ vivify_138:
new $P107, "ResizablePMCArray"
$P106."handlers"($P107)
unless_101_end:
@@ -16348,13 +16491,13 @@
$P124."blocktype"("declaration")
.annotate "line", 207
get_global $P125, "@BLOCK"
- unless_null $P125, vivify_138
+ unless_null $P125, vivify_139
$P125 = root_new ['parrot';'ResizablePMCArray']
- vivify_138:
+ vivify_139:
set $P126, $P125[0]
- unless_null $P126, vivify_139
+ unless_null $P126, vivify_140
new $P126, "Undef"
- vivify_139:
+ vivify_140:
$P127 = $P126."handlers"()
.annotate "line", 208
get_hll_global $P128, ["PAST"], "Control"
@@ -16395,24 +16538,24 @@
.namespace ["NQP";"Actions"]
-.sub "TOP" :subid("19_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "TOP" :subid("19_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_153
.annotate "line", 33
new $P152, 'ExceptionHandler'
set_addr $P152, control_151
- $P152."handle_types"(58)
+ $P152."handle_types"(57)
push_eh $P152
.lex "self", self
.lex "$/", param_153
find_lex $P154, "$/"
find_lex $P155, "$/"
- unless_null $P155, vivify_140
+ unless_null $P155, vivify_141
$P155 = root_new ['parrot';'Hash']
- vivify_140:
+ vivify_141:
set $P156, $P155["comp_unit"]
- unless_null $P156, vivify_141
+ unless_null $P156, vivify_142
new $P156, "Undef"
- vivify_141:
+ vivify_142:
$P157 = $P156."ast"()
$P158 = $P154."!make"($P157)
.return ($P158)
@@ -16425,12 +16568,12 @@
.namespace ["NQP";"Actions"]
-.sub "deflongname" :subid("20_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "deflongname" :subid("20_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_163
.annotate "line", 35
new $P162, 'ExceptionHandler'
set_addr $P162, control_161
- $P162."handle_types"(58)
+ $P162."handle_types"(57)
push_eh $P162
.lex "self", self
.lex "$/", param_163
@@ -16438,13 +16581,13 @@
find_lex $P164, "$/"
.annotate "line", 37
find_lex $P167, "$/"
- unless_null $P167, vivify_142
+ unless_null $P167, vivify_143
$P167 = root_new ['parrot';'Hash']
- vivify_142:
+ vivify_143:
set $P168, $P167["colonpair"]
- unless_null $P168, vivify_143
+ unless_null $P168, vivify_144
new $P168, "Undef"
- vivify_143:
+ vivify_144:
if $P168, if_166
.annotate "line", 39
find_lex $P188, "$/"
@@ -16455,46 +16598,46 @@
goto if_166_end
if_166:
find_lex $P169, "$/"
- unless_null $P169, vivify_144
+ unless_null $P169, vivify_145
$P169 = root_new ['parrot';'Hash']
- vivify_144:
+ vivify_145:
set $P170, $P169["identifier"]
- unless_null $P170, vivify_145
+ unless_null $P170, vivify_146
new $P170, "Undef"
- vivify_145:
+ vivify_146:
set $S171, $P170
new $P172, 'String'
set $P172, $S171
concat $P173, $P172, ":"
find_lex $P174, "$/"
- unless_null $P174, vivify_146
+ unless_null $P174, vivify_147
$P174 = root_new ['parrot';'Hash']
- vivify_146:
+ vivify_147:
set $P175, $P174["colonpair"]
- unless_null $P175, vivify_147
+ unless_null $P175, vivify_148
$P175 = root_new ['parrot';'ResizablePMCArray']
- vivify_147:
+ vivify_148:
set $P176, $P175[0]
- unless_null $P176, vivify_148
+ unless_null $P176, vivify_149
new $P176, "Undef"
- vivify_148:
+ vivify_149:
$P177 = $P176."ast"()
$S178 = $P177."named"()
concat $P179, $P173, $S178
concat $P180, $P179, "<"
.annotate "line", 38
find_lex $P181, "$/"
- unless_null $P181, vivify_149
+ unless_null $P181, vivify_150
$P181 = root_new ['parrot';'Hash']
- vivify_149:
+ vivify_150:
set $P182, $P181["colonpair"]
- unless_null $P182, vivify_150
+ unless_null $P182, vivify_151
$P182 = root_new ['parrot';'ResizablePMCArray']
- vivify_150:
+ vivify_151:
set $P183, $P182[0]
- unless_null $P183, vivify_151
+ unless_null $P183, vivify_152
new $P183, "Undef"
- vivify_151:
+ vivify_152:
$P184 = $P183."ast"()
$S185 = "colonpair_str"($P184)
concat $P186, $P180, $S185
@@ -16514,12 +16657,12 @@
.namespace ["NQP";"Actions"]
-.sub "comp_unit" :subid("21_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "comp_unit" :subid("21_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_196
.annotate "line", 49
new $P195, 'ExceptionHandler'
set_addr $P195, control_194
- $P195."handle_types"(58)
+ $P195."handle_types"(57)
push_eh $P195
.lex "self", self
.lex "$/", param_196
@@ -16531,13 +16674,13 @@
.lex "$BLOCK", $P198
.annotate "line", 50
find_lex $P199, "$/"
- unless_null $P199, vivify_152
+ unless_null $P199, vivify_153
$P199 = root_new ['parrot';'Hash']
- vivify_152:
+ vivify_153:
set $P200, $P199["statementlist"]
- unless_null $P200, vivify_153
+ unless_null $P200, vivify_154
new $P200, "Undef"
- vivify_153:
+ vivify_154:
$P201 = $P200."ast"()
store_lex "$past", $P201
.annotate "line", 51
@@ -16567,14 +16710,14 @@
.namespace ["NQP";"Actions"]
-.sub "statementlist" :subid("22_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statementlist" :subid("22_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_215
.annotate "line", 57
- .const 'Sub' $P229 = "23_1267204714.47172"
+ .const 'Sub' $P229 = "23_1272816841.80681"
capture_lex $P229
new $P214, 'ExceptionHandler'
set_addr $P214, control_213
- $P214."handle_types"(58)
+ $P214."handle_types"(57)
push_eh $P214
.lex "self", self
.lex "$/", param_215
@@ -16587,35 +16730,35 @@
store_lex "$past", $P219
.annotate "line", 59
find_lex $P221, "$/"
- unless_null $P221, vivify_154
+ unless_null $P221, vivify_155
$P221 = root_new ['parrot';'Hash']
- vivify_154:
+ vivify_155:
set $P222, $P221["statement"]
- unless_null $P222, vivify_155
+ unless_null $P222, vivify_156
new $P222, "Undef"
- vivify_155:
+ vivify_156:
unless $P222, if_220_end
.annotate "line", 60
find_lex $P224, "$/"
- unless_null $P224, vivify_156
+ unless_null $P224, vivify_157
$P224 = root_new ['parrot';'Hash']
- vivify_156:
+ vivify_157:
set $P225, $P224["statement"]
- unless_null $P225, vivify_157
+ unless_null $P225, vivify_158
new $P225, "Undef"
- vivify_157:
+ vivify_158:
defined $I226, $P225
- unless $I226, for_undef_158
+ unless $I226, for_undef_159
iter $P223, $P225
new $P255, 'ExceptionHandler'
set_addr $P255, loop254_handler
- $P255."handle_types"(65, 67, 66)
+ $P255."handle_types"(64, 66, 65)
push_eh $P255
loop254_test:
unless $P223, loop254_done
shift $P227, $P223
loop254_redo:
- .const 'Sub' $P229 = "23_1267204714.47172"
+ .const 'Sub' $P229 = "23_1272816841.80681"
capture_lex $P229
$P229($P227)
loop254_next:
@@ -16624,11 +16767,11 @@
.local pmc exception
.get_results (exception)
getattribute $P256, exception, 'type'
- eq $P256, 65, loop254_next
- eq $P256, 67, loop254_redo
+ eq $P256, 64, loop254_next
+ eq $P256, 66, loop254_redo
loop254_done:
pop_eh
- for_undef_158:
+ for_undef_159:
if_220_end:
.annotate "line", 69
find_lex $P257, "$/"
@@ -16645,7 +16788,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block228" :anon :subid("23_1267204714.47172") :outer("22_1267204714.47172")
+.sub "_block228" :anon :subid("23_1272816841.80681") :outer("22_1272816841.80681")
.param pmc param_231
.annotate "line", 61
new $P230, "Undef"
@@ -16656,23 +16799,23 @@
store_lex "$ast", $P233
.annotate "line", 62
find_lex $P235, "$ast"
- unless_null $P235, vivify_159
+ unless_null $P235, vivify_160
$P235 = root_new ['parrot';'Hash']
- vivify_159:
+ vivify_160:
set $P236, $P235["sink"]
- unless_null $P236, vivify_160
+ unless_null $P236, vivify_161
new $P236, "Undef"
- vivify_160:
+ vivify_161:
defined $I237, $P236
unless $I237, if_234_end
find_lex $P238, "$ast"
- unless_null $P238, vivify_161
+ unless_null $P238, vivify_162
$P238 = root_new ['parrot';'Hash']
- vivify_161:
+ vivify_162:
set $P239, $P238["sink"]
- unless_null $P239, vivify_162
+ unless_null $P239, vivify_163
new $P239, "Undef"
- vivify_162:
+ vivify_163:
store_lex "$ast", $P239
if_234_end:
.annotate "line", 63
@@ -16705,23 +16848,23 @@
.namespace ["NQP";"Actions"]
-.sub "statement" :subid("24_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement" :subid("24_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_264
.param pmc param_265 :optional
.param int has_param_265 :opt_flag
.annotate "line", 72
- .const 'Sub' $P273 = "25_1267204714.47172"
+ .const 'Sub' $P273 = "25_1272816841.80681"
capture_lex $P273
new $P263, 'ExceptionHandler'
set_addr $P263, control_262
- $P263."handle_types"(58)
+ $P263."handle_types"(57)
push_eh $P263
.lex "self", self
.lex "$/", param_264
- if has_param_265, optparam_163
+ if has_param_265, optparam_164
new $P266, "Undef"
set param_265, $P266
- optparam_163:
+ optparam_164:
.lex "$key", param_265
.annotate "line", 73
new $P267, "Undef"
@@ -16730,23 +16873,23 @@
find_lex $P268, "$past"
.annotate "line", 74
find_lex $P270, "$/"
- unless_null $P270, vivify_164
+ unless_null $P270, vivify_165
$P270 = root_new ['parrot';'Hash']
- vivify_164:
+ vivify_165:
set $P271, $P270["EXPR"]
- unless_null $P271, vivify_165
+ unless_null $P271, vivify_166
new $P271, "Undef"
- vivify_165:
+ vivify_166:
if $P271, if_269
.annotate "line", 85
find_lex $P311, "$/"
- unless_null $P311, vivify_166
+ unless_null $P311, vivify_167
$P311 = root_new ['parrot';'Hash']
- vivify_166:
+ vivify_167:
set $P312, $P311["statement_control"]
- unless_null $P312, vivify_167
+ unless_null $P312, vivify_168
new $P312, "Undef"
- vivify_167:
+ vivify_168:
if $P312, if_310
.annotate "line", 86
new $P316, "Integer"
@@ -16756,20 +16899,20 @@
if_310:
.annotate "line", 85
find_lex $P313, "$/"
- unless_null $P313, vivify_168
+ unless_null $P313, vivify_169
$P313 = root_new ['parrot';'Hash']
- vivify_168:
+ vivify_169:
set $P314, $P313["statement_control"]
- unless_null $P314, vivify_169
+ unless_null $P314, vivify_170
new $P314, "Undef"
- vivify_169:
+ vivify_170:
$P315 = $P314."ast"()
store_lex "$past", $P315
if_310_end:
goto if_269_end
if_269:
.annotate "line", 74
- .const 'Sub' $P273 = "25_1267204714.47172"
+ .const 'Sub' $P273 = "25_1272816841.80681"
capture_lex $P273
$P273()
if_269_end:
@@ -16788,7 +16931,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block272" :anon :subid("25_1267204714.47172") :outer("24_1267204714.47172")
+.sub "_block272" :anon :subid("25_1272816841.80681") :outer("24_1272816841.80681")
.annotate "line", 75
new $P274, "Undef"
.lex "$mc", $P274
@@ -16797,41 +16940,41 @@
.lex "$ml", $P275
.annotate "line", 75
find_lex $P276, "$/"
- unless_null $P276, vivify_170
+ unless_null $P276, vivify_171
$P276 = root_new ['parrot';'Hash']
- vivify_170:
+ vivify_171:
set $P277, $P276["statement_mod_cond"]
- unless_null $P277, vivify_171
+ unless_null $P277, vivify_172
$P277 = root_new ['parrot';'ResizablePMCArray']
- vivify_171:
+ vivify_172:
set $P278, $P277[0]
- unless_null $P278, vivify_172
+ unless_null $P278, vivify_173
new $P278, "Undef"
- vivify_172:
+ vivify_173:
store_lex "$mc", $P278
.annotate "line", 76
find_lex $P279, "$/"
- unless_null $P279, vivify_173
+ unless_null $P279, vivify_174
$P279 = root_new ['parrot';'Hash']
- vivify_173:
+ vivify_174:
set $P280, $P279["statement_mod_loop"]
- unless_null $P280, vivify_174
+ unless_null $P280, vivify_175
$P280 = root_new ['parrot';'ResizablePMCArray']
- vivify_174:
+ vivify_175:
set $P281, $P280[0]
- unless_null $P281, vivify_175
+ unless_null $P281, vivify_176
new $P281, "Undef"
- vivify_175:
+ vivify_176:
store_lex "$ml", $P281
.annotate "line", 77
find_lex $P282, "$/"
- unless_null $P282, vivify_176
+ unless_null $P282, vivify_177
$P282 = root_new ['parrot';'Hash']
- vivify_176:
+ vivify_177:
set $P283, $P282["EXPR"]
- unless_null $P283, vivify_177
+ unless_null $P283, vivify_178
new $P283, "Undef"
- vivify_177:
+ vivify_178:
$P284 = $P283."ast"()
store_lex "$past", $P284
.annotate "line", 78
@@ -16840,23 +16983,23 @@
.annotate "line", 79
get_hll_global $P287, ["PAST"], "Op"
find_lex $P288, "$mc"
- unless_null $P288, vivify_178
+ unless_null $P288, vivify_179
$P288 = root_new ['parrot';'Hash']
- vivify_178:
+ vivify_179:
set $P289, $P288["cond"]
- unless_null $P289, vivify_179
+ unless_null $P289, vivify_180
new $P289, "Undef"
- vivify_179:
+ vivify_180:
$P290 = $P289."ast"()
find_lex $P291, "$past"
find_lex $P292, "$mc"
- unless_null $P292, vivify_180
+ unless_null $P292, vivify_181
$P292 = root_new ['parrot';'Hash']
- vivify_180:
+ vivify_181:
set $P293, $P292["sym"]
- unless_null $P293, vivify_181
+ unless_null $P293, vivify_182
new $P293, "Undef"
- vivify_181:
+ vivify_182:
set $S294, $P293
find_lex $P295, "$/"
$P296 = $P287."new"($P290, $P291, $S294 :named("pasttype"), $P295 :named("node"))
@@ -16871,23 +17014,23 @@
.annotate "line", 82
get_hll_global $P300, ["PAST"], "Op"
find_lex $P301, "$ml"
- unless_null $P301, vivify_182
+ unless_null $P301, vivify_183
$P301 = root_new ['parrot';'Hash']
- vivify_182:
+ vivify_183:
set $P302, $P301["cond"]
- unless_null $P302, vivify_183
+ unless_null $P302, vivify_184
new $P302, "Undef"
- vivify_183:
+ vivify_184:
$P303 = $P302."ast"()
find_lex $P304, "$past"
find_lex $P305, "$ml"
- unless_null $P305, vivify_184
+ unless_null $P305, vivify_185
$P305 = root_new ['parrot';'Hash']
- vivify_184:
+ vivify_185:
set $P306, $P305["sym"]
- unless_null $P306, vivify_185
+ unless_null $P306, vivify_186
new $P306, "Undef"
- vivify_185:
+ vivify_186:
set $S307, $P306
find_lex $P308, "$/"
$P309 = $P300."new"($P303, $P304, $S307 :named("pasttype"), $P308 :named("node"))
@@ -16901,12 +17044,12 @@
.namespace ["NQP";"Actions"]
-.sub "xblock" :subid("26_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "xblock" :subid("26_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_324
.annotate "line", 90
new $P323, 'ExceptionHandler'
set_addr $P323, control_322
- $P323."handle_types"(58)
+ $P323."handle_types"(57)
push_eh $P323
.lex "self", self
.lex "$/", param_324
@@ -16914,22 +17057,22 @@
find_lex $P325, "$/"
get_hll_global $P326, ["PAST"], "Op"
find_lex $P327, "$/"
- unless_null $P327, vivify_186
+ unless_null $P327, vivify_187
$P327 = root_new ['parrot';'Hash']
- vivify_186:
+ vivify_187:
set $P328, $P327["EXPR"]
- unless_null $P328, vivify_187
+ unless_null $P328, vivify_188
new $P328, "Undef"
- vivify_187:
+ vivify_188:
$P329 = $P328."ast"()
find_lex $P330, "$/"
- unless_null $P330, vivify_188
+ unless_null $P330, vivify_189
$P330 = root_new ['parrot';'Hash']
- vivify_188:
+ vivify_189:
set $P331, $P330["pblock"]
- unless_null $P331, vivify_189
+ unless_null $P331, vivify_190
new $P331, "Undef"
- vivify_189:
+ vivify_190:
$P332 = $P331."ast"()
find_lex $P333, "$/"
$P334 = $P326."new"($P329, $P332, "if" :named("pasttype"), $P333 :named("node"))
@@ -16945,25 +17088,25 @@
.namespace ["NQP";"Actions"]
-.sub "pblock" :subid("27_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "pblock" :subid("27_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_340
.annotate "line", 94
new $P339, 'ExceptionHandler'
set_addr $P339, control_338
- $P339."handle_types"(58)
+ $P339."handle_types"(57)
push_eh $P339
.lex "self", self
.lex "$/", param_340
.annotate "line", 95
find_lex $P341, "$/"
find_lex $P342, "$/"
- unless_null $P342, vivify_190
+ unless_null $P342, vivify_191
$P342 = root_new ['parrot';'Hash']
- vivify_190:
+ vivify_191:
set $P343, $P342["blockoid"]
- unless_null $P343, vivify_191
+ unless_null $P343, vivify_192
new $P343, "Undef"
- vivify_191:
+ vivify_192:
$P344 = $P343."ast"()
$P345 = $P341."!make"($P344)
.annotate "line", 94
@@ -16977,25 +17120,25 @@
.namespace ["NQP";"Actions"]
-.sub "block" :subid("28_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "block" :subid("28_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_350
.annotate "line", 98
new $P349, 'ExceptionHandler'
set_addr $P349, control_348
- $P349."handle_types"(58)
+ $P349."handle_types"(57)
push_eh $P349
.lex "self", self
.lex "$/", param_350
.annotate "line", 99
find_lex $P351, "$/"
find_lex $P352, "$/"
- unless_null $P352, vivify_192
+ unless_null $P352, vivify_193
$P352 = root_new ['parrot';'Hash']
- vivify_192:
+ vivify_193:
set $P353, $P352["blockoid"]
- unless_null $P353, vivify_193
+ unless_null $P353, vivify_194
new $P353, "Undef"
- vivify_193:
+ vivify_194:
$P354 = $P353."ast"()
$P355 = $P351."!make"($P354)
.annotate "line", 98
@@ -17009,12 +17152,12 @@
.namespace ["NQP";"Actions"]
-.sub "blockoid" :subid("29_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "blockoid" :subid("29_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_360
.annotate "line", 102
new $P359, 'ExceptionHandler'
set_addr $P359, control_358
- $P359."handle_types"(58)
+ $P359."handle_types"(57)
push_eh $P359
.lex "self", self
.lex "$/", param_360
@@ -17026,13 +17169,13 @@
.lex "$BLOCK", $P362
.annotate "line", 103
find_lex $P363, "$/"
- unless_null $P363, vivify_194
+ unless_null $P363, vivify_195
$P363 = root_new ['parrot';'Hash']
- vivify_194:
+ vivify_195:
set $P364, $P363["statementlist"]
- unless_null $P364, vivify_195
+ unless_null $P364, vivify_196
new $P364, "Undef"
- vivify_195:
+ vivify_196:
$P365 = $P364."ast"()
store_lex "$past", $P365
.annotate "line", 104
@@ -17062,21 +17205,21 @@
.namespace ["NQP";"Actions"]
-.sub "newpad" :subid("30_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "newpad" :subid("30_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_379
.annotate "line", 110
new $P378, 'ExceptionHandler'
set_addr $P378, control_377
- $P378."handle_types"(58)
+ $P378."handle_types"(57)
push_eh $P378
.lex "self", self
.lex "$/", param_379
.annotate "line", 111
get_global $P380, "@BLOCK"
- unless_null $P380, vivify_196
+ unless_null $P380, vivify_197
$P380 = root_new ['parrot';'ResizablePMCArray']
set_global "@BLOCK", $P380
- vivify_196:
+ vivify_197:
.annotate "line", 110
get_global $P381, "@BLOCK"
.annotate "line", 112
@@ -17097,14 +17240,14 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>" :subid("31_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<if>" :subid("31_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_392
.annotate "line", 117
- .const 'Sub' $P420 = "32_1267204714.47172"
+ .const 'Sub' $P420 = "32_1272816841.80681"
capture_lex $P420
new $P391, 'ExceptionHandler'
set_addr $P391, control_390
- $P391."handle_types"(58)
+ $P391."handle_types"(57)
push_eh $P391
.lex "self", self
.lex "$/", param_392
@@ -17116,13 +17259,13 @@
.lex "$past", $P394
.annotate "line", 118
find_lex $P395, "$/"
- unless_null $P395, vivify_197
+ unless_null $P395, vivify_198
$P395 = root_new ['parrot';'Hash']
- vivify_197:
+ vivify_198:
set $P396, $P395["xblock"]
- unless_null $P396, vivify_198
+ unless_null $P396, vivify_199
new $P396, "Undef"
- vivify_198:
+ vivify_199:
set $N397, $P396
new $P398, 'Float'
set $P398, $N397
@@ -17132,44 +17275,44 @@
find_lex $P400, "$count"
set $I401, $P400
find_lex $P402, "$/"
- unless_null $P402, vivify_199
+ unless_null $P402, vivify_200
$P402 = root_new ['parrot';'Hash']
- vivify_199:
+ vivify_200:
set $P403, $P402["xblock"]
- unless_null $P403, vivify_200
+ unless_null $P403, vivify_201
$P403 = root_new ['parrot';'ResizablePMCArray']
- vivify_200:
+ vivify_201:
set $P404, $P403[$I401]
- unless_null $P404, vivify_201
+ unless_null $P404, vivify_202
new $P404, "Undef"
- vivify_201:
+ vivify_202:
$P405 = $P404."ast"()
$P406 = "xblock_immediate"($P405)
store_lex "$past", $P406
.annotate "line", 120
find_lex $P408, "$/"
- unless_null $P408, vivify_202
+ unless_null $P408, vivify_203
$P408 = root_new ['parrot';'Hash']
- vivify_202:
+ vivify_203:
set $P409, $P408["else"]
- unless_null $P409, vivify_203
+ unless_null $P409, vivify_204
new $P409, "Undef"
- vivify_203:
+ vivify_204:
unless $P409, if_407_end
.annotate "line", 121
find_lex $P410, "$past"
find_lex $P411, "$/"
- unless_null $P411, vivify_204
+ unless_null $P411, vivify_205
$P411 = root_new ['parrot';'Hash']
- vivify_204:
+ vivify_205:
set $P412, $P411["else"]
- unless_null $P412, vivify_205
+ unless_null $P412, vivify_206
$P412 = root_new ['parrot';'ResizablePMCArray']
- vivify_205:
+ vivify_206:
set $P413, $P412[0]
- unless_null $P413, vivify_206
+ unless_null $P413, vivify_207
new $P413, "Undef"
- vivify_206:
+ vivify_207:
$P414 = $P413."ast"()
$P415 = "block_immediate"($P414)
$P410."push"($P415)
@@ -17177,7 +17320,7 @@
.annotate "line", 124
new $P436, 'ExceptionHandler'
set_addr $P436, loop435_handler
- $P436."handle_types"(65, 67, 66)
+ $P436."handle_types"(64, 66, 65)
push_eh $P436
loop435_test:
find_lex $P416, "$count"
@@ -17185,7 +17328,7 @@
isgt $I418, $N417, 0.0
unless $I418, loop435_done
loop435_redo:
- .const 'Sub' $P420 = "32_1267204714.47172"
+ .const 'Sub' $P420 = "32_1272816841.80681"
capture_lex $P420
$P420()
loop435_next:
@@ -17194,8 +17337,8 @@
.local pmc exception
.get_results (exception)
getattribute $P437, exception, 'type'
- eq $P437, 65, loop435_next
- eq $P437, 67, loop435_redo
+ eq $P437, 64, loop435_next
+ eq $P437, 66, loop435_redo
loop435_done:
pop_eh
.annotate "line", 130
@@ -17213,7 +17356,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block419" :anon :subid("32_1267204714.47172") :outer("31_1267204714.47172")
+.sub "_block419" :anon :subid("32_1272816841.80681") :outer("31_1272816841.80681")
.annotate "line", 126
new $P421, "Undef"
.lex "$else", $P421
@@ -17228,17 +17371,17 @@
find_lex $P425, "$count"
set $I426, $P425
find_lex $P427, "$/"
- unless_null $P427, vivify_207
+ unless_null $P427, vivify_208
$P427 = root_new ['parrot';'Hash']
- vivify_207:
+ vivify_208:
set $P428, $P427["xblock"]
- unless_null $P428, vivify_208
+ unless_null $P428, vivify_209
$P428 = root_new ['parrot';'ResizablePMCArray']
- vivify_208:
+ vivify_209:
set $P429, $P428[$I426]
- unless_null $P429, vivify_209
+ unless_null $P429, vivify_210
new $P429, "Undef"
- vivify_209:
+ vivify_210:
$P430 = $P429."ast"()
$P431 = "xblock_immediate"($P430)
store_lex "$past", $P431
@@ -17252,12 +17395,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>" :subid("33_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<unless>" :subid("33_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_445
.annotate "line", 133
new $P444, 'ExceptionHandler'
set_addr $P444, control_443
- $P444."handle_types"(58)
+ $P444."handle_types"(57)
push_eh $P444
.lex "self", self
.lex "$/", param_445
@@ -17265,13 +17408,13 @@
new $P446, "Undef"
.lex "$past", $P446
find_lex $P447, "$/"
- unless_null $P447, vivify_210
+ unless_null $P447, vivify_211
$P447 = root_new ['parrot';'Hash']
- vivify_210:
+ vivify_211:
set $P448, $P447["xblock"]
- unless_null $P448, vivify_211
+ unless_null $P448, vivify_212
new $P448, "Undef"
- vivify_211:
+ vivify_212:
$P449 = $P448."ast"()
$P450 = "xblock_immediate"($P449)
store_lex "$past", $P450
@@ -17293,12 +17436,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>" :subid("34_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<while>" :subid("34_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_459
.annotate "line", 139
new $P458, 'ExceptionHandler'
set_addr $P458, control_457
- $P458."handle_types"(58)
+ $P458."handle_types"(57)
push_eh $P458
.lex "self", self
.lex "$/", param_459
@@ -17306,26 +17449,26 @@
new $P460, "Undef"
.lex "$past", $P460
find_lex $P461, "$/"
- unless_null $P461, vivify_212
+ unless_null $P461, vivify_213
$P461 = root_new ['parrot';'Hash']
- vivify_212:
+ vivify_213:
set $P462, $P461["xblock"]
- unless_null $P462, vivify_213
+ unless_null $P462, vivify_214
new $P462, "Undef"
- vivify_213:
+ vivify_214:
$P463 = $P462."ast"()
$P464 = "xblock_immediate"($P463)
store_lex "$past", $P464
.annotate "line", 141
find_lex $P465, "$past"
find_lex $P466, "$/"
- unless_null $P466, vivify_214
+ unless_null $P466, vivify_215
$P466 = root_new ['parrot';'Hash']
- vivify_214:
+ vivify_215:
set $P467, $P466["sym"]
- unless_null $P467, vivify_215
+ unless_null $P467, vivify_216
new $P467, "Undef"
- vivify_215:
+ vivify_216:
set $S468, $P467
$P465."pasttype"($S468)
.annotate "line", 142
@@ -17343,12 +17486,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>" :subid("35_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<repeat>" :subid("35_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_476
.annotate "line", 145
new $P475, 'ExceptionHandler'
set_addr $P475, control_474
- $P475."handle_types"(58)
+ $P475."handle_types"(57)
push_eh $P475
.lex "self", self
.lex "$/", param_476
@@ -17362,46 +17505,46 @@
new $P479, "String"
assign $P479, "repeat_"
find_lex $P480, "$/"
- unless_null $P480, vivify_216
+ unless_null $P480, vivify_217
$P480 = root_new ['parrot';'Hash']
- vivify_216:
+ vivify_217:
set $P481, $P480["wu"]
- unless_null $P481, vivify_217
+ unless_null $P481, vivify_218
new $P481, "Undef"
- vivify_217:
+ vivify_218:
set $S482, $P481
concat $P483, $P479, $S482
store_lex "$pasttype", $P483
find_lex $P484, "$past"
.annotate "line", 148
find_lex $P486, "$/"
- unless_null $P486, vivify_218
+ unless_null $P486, vivify_219
$P486 = root_new ['parrot';'Hash']
- vivify_218:
+ vivify_219:
set $P487, $P486["xblock"]
- unless_null $P487, vivify_219
+ unless_null $P487, vivify_220
new $P487, "Undef"
- vivify_219:
+ vivify_220:
if $P487, if_485
.annotate "line", 153
get_hll_global $P494, ["PAST"], "Op"
find_lex $P495, "$/"
- unless_null $P495, vivify_220
+ unless_null $P495, vivify_221
$P495 = root_new ['parrot';'Hash']
- vivify_220:
+ vivify_221:
set $P496, $P495["EXPR"]
- unless_null $P496, vivify_221
+ unless_null $P496, vivify_222
new $P496, "Undef"
- vivify_221:
+ vivify_222:
$P497 = $P496."ast"()
find_lex $P498, "$/"
- unless_null $P498, vivify_222
+ unless_null $P498, vivify_223
$P498 = root_new ['parrot';'Hash']
- vivify_222:
+ vivify_223:
set $P499, $P498["pblock"]
- unless_null $P499, vivify_223
+ unless_null $P499, vivify_224
new $P499, "Undef"
- vivify_223:
+ vivify_224:
$P500 = $P499."ast"()
$P501 = "block_immediate"($P500)
find_lex $P502, "$pasttype"
@@ -17413,13 +17556,13 @@
if_485:
.annotate "line", 149
find_lex $P488, "$/"
- unless_null $P488, vivify_224
+ unless_null $P488, vivify_225
$P488 = root_new ['parrot';'Hash']
- vivify_224:
+ vivify_225:
set $P489, $P488["xblock"]
- unless_null $P489, vivify_225
+ unless_null $P489, vivify_226
new $P489, "Undef"
- vivify_225:
+ vivify_226:
$P490 = $P489."ast"()
$P491 = "xblock_immediate"($P490)
store_lex "$past", $P491
@@ -17443,12 +17586,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>" :subid("36_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<for>" :subid("36_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_512
.annotate "line", 159
new $P511, 'ExceptionHandler'
set_addr $P511, control_510
- $P511."handle_types"(58)
+ $P511."handle_types"(57)
push_eh $P511
.lex "self", self
.lex "$/", param_512
@@ -17460,13 +17603,13 @@
.lex "$block", $P514
.annotate "line", 160
find_lex $P515, "$/"
- unless_null $P515, vivify_226
+ unless_null $P515, vivify_227
$P515 = root_new ['parrot';'Hash']
- vivify_226:
+ vivify_227:
set $P516, $P515["xblock"]
- unless_null $P516, vivify_227
+ unless_null $P516, vivify_228
new $P516, "Undef"
- vivify_227:
+ vivify_228:
$P517 = $P516."ast"()
store_lex "$past", $P517
.annotate "line", 161
@@ -17474,13 +17617,13 @@
$P518."pasttype"("for")
.annotate "line", 162
find_lex $P519, "$past"
- unless_null $P519, vivify_228
+ unless_null $P519, vivify_229
$P519 = root_new ['parrot';'ResizablePMCArray']
- vivify_228:
+ vivify_229:
set $P520, $P519[1]
- unless_null $P520, vivify_229
+ unless_null $P520, vivify_230
new $P520, "Undef"
- vivify_229:
+ vivify_230:
store_lex "$block", $P520
.annotate "line", 163
find_lex $P522, "$block"
@@ -17488,13 +17631,13 @@
if $P523, unless_521_end
.annotate "line", 164
find_lex $P524, "$block"
- unless_null $P524, vivify_230
+ unless_null $P524, vivify_231
$P524 = root_new ['parrot';'ResizablePMCArray']
- vivify_230:
+ vivify_231:
set $P525, $P524[0]
- unless_null $P525, vivify_231
+ unless_null $P525, vivify_232
new $P525, "Undef"
- vivify_231:
+ vivify_232:
get_hll_global $P526, ["PAST"], "Var"
$P527 = $P526."new"("$_" :named("name"), "parameter" :named("scope"))
$P525."push"($P527)
@@ -17523,12 +17666,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>" :subid("37_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<return>" :subid("37_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_538
.annotate "line", 172
new $P537, 'ExceptionHandler'
set_addr $P537, control_536
- $P537."handle_types"(58)
+ $P537."handle_types"(57)
push_eh $P537
.lex "self", self
.lex "$/", param_538
@@ -17536,13 +17679,13 @@
find_lex $P539, "$/"
get_hll_global $P540, ["PAST"], "Op"
find_lex $P541, "$/"
- unless_null $P541, vivify_232
+ unless_null $P541, vivify_233
$P541 = root_new ['parrot';'Hash']
- vivify_232:
+ vivify_233:
set $P542, $P541["EXPR"]
- unless_null $P542, vivify_233
+ unless_null $P542, vivify_234
new $P542, "Undef"
- vivify_233:
+ vivify_234:
$P543 = $P542."ast"()
find_lex $P544, "$/"
$P545 = $P540."new"($P543, "return" :named("pasttype"), $P544 :named("node"))
@@ -17558,12 +17701,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>" :subid("38_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<CATCH>" :subid("38_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_551
.annotate "line", 176
new $P550, 'ExceptionHandler'
set_addr $P550, control_549
- $P550."handle_types"(58)
+ $P550."handle_types"(57)
push_eh $P550
.lex "self", self
.lex "$/", param_551
@@ -17571,13 +17714,13 @@
new $P552, "Undef"
.lex "$block", $P552
find_lex $P553, "$/"
- unless_null $P553, vivify_234
+ unless_null $P553, vivify_235
$P553 = root_new ['parrot';'Hash']
- vivify_234:
+ vivify_235:
set $P554, $P553["block"]
- unless_null $P554, vivify_235
+ unless_null $P554, vivify_236
new $P554, "Undef"
- vivify_235:
+ vivify_236:
$P555 = $P554."ast"()
store_lex "$block", $P555
.annotate "line", 178
@@ -17586,18 +17729,18 @@
"push_block_handler"($P556, $P557)
.annotate "line", 179
get_global $P558, "@BLOCK"
- unless_null $P558, vivify_236
+ unless_null $P558, vivify_237
$P558 = root_new ['parrot';'ResizablePMCArray']
- vivify_236:
+ vivify_237:
set $P559, $P558[0]
- unless_null $P559, vivify_237
+ unless_null $P559, vivify_238
new $P559, "Undef"
- vivify_237:
+ vivify_238:
$P560 = $P559."handlers"()
set $P561, $P560[0]
- unless_null $P561, vivify_238
+ unless_null $P561, vivify_239
new $P561, "Undef"
- vivify_238:
+ vivify_239:
$P561."handle_types_except"("CONTROL")
.annotate "line", 180
find_lex $P562, "$/"
@@ -17616,12 +17759,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>" :subid("39_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<CONTROL>" :subid("39_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_571
.annotate "line", 183
new $P570, 'ExceptionHandler'
set_addr $P570, control_569
- $P570."handle_types"(58)
+ $P570."handle_types"(57)
push_eh $P570
.lex "self", self
.lex "$/", param_571
@@ -17629,13 +17772,13 @@
new $P572, "Undef"
.lex "$block", $P572
find_lex $P573, "$/"
- unless_null $P573, vivify_239
+ unless_null $P573, vivify_240
$P573 = root_new ['parrot';'Hash']
- vivify_239:
+ vivify_240:
set $P574, $P573["block"]
- unless_null $P574, vivify_240
+ unless_null $P574, vivify_241
new $P574, "Undef"
- vivify_240:
+ vivify_241:
$P575 = $P574."ast"()
store_lex "$block", $P575
.annotate "line", 185
@@ -17644,18 +17787,18 @@
"push_block_handler"($P576, $P577)
.annotate "line", 186
get_global $P578, "@BLOCK"
- unless_null $P578, vivify_241
+ unless_null $P578, vivify_242
$P578 = root_new ['parrot';'ResizablePMCArray']
- vivify_241:
+ vivify_242:
set $P579, $P578[0]
- unless_null $P579, vivify_242
+ unless_null $P579, vivify_243
new $P579, "Undef"
- vivify_242:
+ vivify_243:
$P580 = $P579."handlers"()
set $P581, $P580[0]
- unless_null $P581, vivify_243
+ unless_null $P581, vivify_244
new $P581, "Undef"
- vivify_243:
+ vivify_244:
$P581."handle_types"("CONTROL")
.annotate "line", 187
find_lex $P582, "$/"
@@ -17674,33 +17817,33 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>" :subid("40_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_prefix:sym<INIT>" :subid("40_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_592
.annotate "line", 227
new $P591, 'ExceptionHandler'
set_addr $P591, control_590
- $P591."handle_types"(58)
+ $P591."handle_types"(57)
push_eh $P591
.lex "self", self
.lex "$/", param_592
.annotate "line", 228
get_global $P593, "@BLOCK"
- unless_null $P593, vivify_244
+ unless_null $P593, vivify_245
$P593 = root_new ['parrot';'ResizablePMCArray']
- vivify_244:
+ vivify_245:
set $P594, $P593[0]
- unless_null $P594, vivify_245
+ unless_null $P594, vivify_246
new $P594, "Undef"
- vivify_245:
+ vivify_246:
$P595 = $P594."loadinit"()
find_lex $P596, "$/"
- unless_null $P596, vivify_246
+ unless_null $P596, vivify_247
$P596 = root_new ['parrot';'Hash']
- vivify_246:
+ vivify_247:
set $P597, $P596["blorst"]
- unless_null $P597, vivify_247
+ unless_null $P597, vivify_248
new $P597, "Undef"
- vivify_247:
+ vivify_248:
$P598 = $P597."ast"()
$P595."push"($P598)
.annotate "line", 229
@@ -17720,12 +17863,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>" :subid("41_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_prefix:sym<try>" :subid("41_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_608
.annotate "line", 232
new $P607, 'ExceptionHandler'
set_addr $P607, control_606
- $P607."handle_types"(58)
+ $P607."handle_types"(57)
push_eh $P607
.lex "self", self
.lex "$/", param_608
@@ -17733,13 +17876,13 @@
new $P609, "Undef"
.lex "$past", $P609
find_lex $P610, "$/"
- unless_null $P610, vivify_248
+ unless_null $P610, vivify_249
$P610 = root_new ['parrot';'Hash']
- vivify_248:
+ vivify_249:
set $P611, $P610["blorst"]
- unless_null $P611, vivify_249
+ unless_null $P611, vivify_250
new $P611, "Undef"
- vivify_249:
+ vivify_250:
$P612 = $P611."ast"()
store_lex "$past", $P612
.annotate "line", 234
@@ -17797,12 +17940,12 @@
.namespace ["NQP";"Actions"]
-.sub "blorst" :subid("42_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "blorst" :subid("42_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_643
.annotate "line", 255
new $P642, 'ExceptionHandler'
set_addr $P642, control_641
- $P642."handle_types"(58)
+ $P642."handle_types"(57)
push_eh $P642
.lex "self", self
.lex "$/", param_643
@@ -17810,36 +17953,36 @@
find_lex $P644, "$/"
.annotate "line", 257
find_lex $P647, "$/"
- unless_null $P647, vivify_250
+ unless_null $P647, vivify_251
$P647 = root_new ['parrot';'Hash']
- vivify_250:
+ vivify_251:
set $P648, $P647["block"]
- unless_null $P648, vivify_251
+ unless_null $P648, vivify_252
new $P648, "Undef"
- vivify_251:
+ vivify_252:
if $P648, if_646
.annotate "line", 258
find_lex $P653, "$/"
- unless_null $P653, vivify_252
+ unless_null $P653, vivify_253
$P653 = root_new ['parrot';'Hash']
- vivify_252:
+ vivify_253:
set $P654, $P653["statement"]
- unless_null $P654, vivify_253
+ unless_null $P654, vivify_254
new $P654, "Undef"
- vivify_253:
+ vivify_254:
$P655 = $P654."ast"()
set $P645, $P655
.annotate "line", 257
goto if_646_end
if_646:
find_lex $P649, "$/"
- unless_null $P649, vivify_254
+ unless_null $P649, vivify_255
$P649 = root_new ['parrot';'Hash']
- vivify_254:
+ vivify_255:
set $P650, $P649["block"]
- unless_null $P650, vivify_255
+ unless_null $P650, vivify_256
new $P650, "Undef"
- vivify_255:
+ vivify_256:
$P651 = $P650."ast"()
$P652 = "block_immediate"($P651)
set $P645, $P652
@@ -17856,24 +17999,24 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>" :subid("43_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_mod_cond:sym<if>" :subid("43_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_661
.annotate "line", 263
new $P660, 'ExceptionHandler'
set_addr $P660, control_659
- $P660."handle_types"(58)
+ $P660."handle_types"(57)
push_eh $P660
.lex "self", self
.lex "$/", param_661
find_lex $P662, "$/"
find_lex $P663, "$/"
- unless_null $P663, vivify_256
+ unless_null $P663, vivify_257
$P663 = root_new ['parrot';'Hash']
- vivify_256:
+ vivify_257:
set $P664, $P663["cond"]
- unless_null $P664, vivify_257
+ unless_null $P664, vivify_258
new $P664, "Undef"
- vivify_257:
+ vivify_258:
$P665 = $P664."ast"()
$P666 = $P662."!make"($P665)
.return ($P666)
@@ -17886,24 +18029,24 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>" :subid("44_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_mod_cond:sym<unless>" :subid("44_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_671
.annotate "line", 264
new $P670, 'ExceptionHandler'
set_addr $P670, control_669
- $P670."handle_types"(58)
+ $P670."handle_types"(57)
push_eh $P670
.lex "self", self
.lex "$/", param_671
find_lex $P672, "$/"
find_lex $P673, "$/"
- unless_null $P673, vivify_258
+ unless_null $P673, vivify_259
$P673 = root_new ['parrot';'Hash']
- vivify_258:
+ vivify_259:
set $P674, $P673["cond"]
- unless_null $P674, vivify_259
+ unless_null $P674, vivify_260
new $P674, "Undef"
- vivify_259:
+ vivify_260:
$P675 = $P674."ast"()
$P676 = $P672."!make"($P675)
.return ($P676)
@@ -17916,24 +18059,24 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>" :subid("45_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_mod_loop:sym<while>" :subid("45_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_681
.annotate "line", 266
new $P680, 'ExceptionHandler'
set_addr $P680, control_679
- $P680."handle_types"(58)
+ $P680."handle_types"(57)
push_eh $P680
.lex "self", self
.lex "$/", param_681
find_lex $P682, "$/"
find_lex $P683, "$/"
- unless_null $P683, vivify_260
+ unless_null $P683, vivify_261
$P683 = root_new ['parrot';'Hash']
- vivify_260:
+ vivify_261:
set $P684, $P683["cond"]
- unless_null $P684, vivify_261
+ unless_null $P684, vivify_262
new $P684, "Undef"
- vivify_261:
+ vivify_262:
$P685 = $P684."ast"()
$P686 = $P682."!make"($P685)
.return ($P686)
@@ -17946,24 +18089,24 @@
.namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>" :subid("46_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_mod_loop:sym<until>" :subid("46_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_691
.annotate "line", 267
new $P690, 'ExceptionHandler'
set_addr $P690, control_689
- $P690."handle_types"(58)
+ $P690."handle_types"(57)
push_eh $P690
.lex "self", self
.lex "$/", param_691
find_lex $P692, "$/"
find_lex $P693, "$/"
- unless_null $P693, vivify_262
+ unless_null $P693, vivify_263
$P693 = root_new ['parrot';'Hash']
- vivify_262:
+ vivify_263:
set $P694, $P693["cond"]
- unless_null $P694, vivify_263
+ unless_null $P694, vivify_264
new $P694, "Undef"
- vivify_263:
+ vivify_264:
$P695 = $P694."ast"()
$P696 = $P692."!make"($P695)
.return ($P696)
@@ -17976,24 +18119,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>" :subid("47_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<fatarrow>" :subid("47_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_701
.annotate "line", 271
new $P700, 'ExceptionHandler'
set_addr $P700, control_699
- $P700."handle_types"(58)
+ $P700."handle_types"(57)
push_eh $P700
.lex "self", self
.lex "$/", param_701
find_lex $P702, "$/"
find_lex $P703, "$/"
- unless_null $P703, vivify_264
+ unless_null $P703, vivify_265
$P703 = root_new ['parrot';'Hash']
- vivify_264:
+ vivify_265:
set $P704, $P703["fatarrow"]
- unless_null $P704, vivify_265
+ unless_null $P704, vivify_266
new $P704, "Undef"
- vivify_265:
+ vivify_266:
$P705 = $P704."ast"()
$P706 = $P702."!make"($P705)
.return ($P706)
@@ -18006,24 +18149,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>" :subid("48_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<colonpair>" :subid("48_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_711
.annotate "line", 272
new $P710, 'ExceptionHandler'
set_addr $P710, control_709
- $P710."handle_types"(58)
+ $P710."handle_types"(57)
push_eh $P710
.lex "self", self
.lex "$/", param_711
find_lex $P712, "$/"
find_lex $P713, "$/"
- unless_null $P713, vivify_266
+ unless_null $P713, vivify_267
$P713 = root_new ['parrot';'Hash']
- vivify_266:
+ vivify_267:
set $P714, $P713["colonpair"]
- unless_null $P714, vivify_267
+ unless_null $P714, vivify_268
new $P714, "Undef"
- vivify_267:
+ vivify_268:
$P715 = $P714."ast"()
$P716 = $P712."!make"($P715)
.return ($P716)
@@ -18036,24 +18179,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<variable>" :subid("49_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<variable>" :subid("49_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_721
.annotate "line", 273
new $P720, 'ExceptionHandler'
set_addr $P720, control_719
- $P720."handle_types"(58)
+ $P720."handle_types"(57)
push_eh $P720
.lex "self", self
.lex "$/", param_721
find_lex $P722, "$/"
find_lex $P723, "$/"
- unless_null $P723, vivify_268
+ unless_null $P723, vivify_269
$P723 = root_new ['parrot';'Hash']
- vivify_268:
+ vivify_269:
set $P724, $P723["variable"]
- unless_null $P724, vivify_269
+ unless_null $P724, vivify_270
new $P724, "Undef"
- vivify_269:
+ vivify_270:
$P725 = $P724."ast"()
$P726 = $P722."!make"($P725)
.return ($P726)
@@ -18066,24 +18209,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>" :subid("50_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<package_declarator>" :subid("50_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_731
.annotate "line", 274
new $P730, 'ExceptionHandler'
set_addr $P730, control_729
- $P730."handle_types"(58)
+ $P730."handle_types"(57)
push_eh $P730
.lex "self", self
.lex "$/", param_731
find_lex $P732, "$/"
find_lex $P733, "$/"
- unless_null $P733, vivify_270
+ unless_null $P733, vivify_271
$P733 = root_new ['parrot';'Hash']
- vivify_270:
+ vivify_271:
set $P734, $P733["package_declarator"]
- unless_null $P734, vivify_271
+ unless_null $P734, vivify_272
new $P734, "Undef"
- vivify_271:
+ vivify_272:
$P735 = $P734."ast"()
$P736 = $P732."!make"($P735)
.return ($P736)
@@ -18096,24 +18239,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>" :subid("51_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<scope_declarator>" :subid("51_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_741
.annotate "line", 275
new $P740, 'ExceptionHandler'
set_addr $P740, control_739
- $P740."handle_types"(58)
+ $P740."handle_types"(57)
push_eh $P740
.lex "self", self
.lex "$/", param_741
find_lex $P742, "$/"
find_lex $P743, "$/"
- unless_null $P743, vivify_272
+ unless_null $P743, vivify_273
$P743 = root_new ['parrot';'Hash']
- vivify_272:
+ vivify_273:
set $P744, $P743["scope_declarator"]
- unless_null $P744, vivify_273
+ unless_null $P744, vivify_274
new $P744, "Undef"
- vivify_273:
+ vivify_274:
$P745 = $P744."ast"()
$P746 = $P742."!make"($P745)
.return ($P746)
@@ -18126,24 +18269,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>" :subid("52_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<routine_declarator>" :subid("52_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_751
.annotate "line", 276
new $P750, 'ExceptionHandler'
set_addr $P750, control_749
- $P750."handle_types"(58)
+ $P750."handle_types"(57)
push_eh $P750
.lex "self", self
.lex "$/", param_751
find_lex $P752, "$/"
find_lex $P753, "$/"
- unless_null $P753, vivify_274
+ unless_null $P753, vivify_275
$P753 = root_new ['parrot';'Hash']
- vivify_274:
+ vivify_275:
set $P754, $P753["routine_declarator"]
- unless_null $P754, vivify_275
+ unless_null $P754, vivify_276
new $P754, "Undef"
- vivify_275:
+ vivify_276:
$P755 = $P754."ast"()
$P756 = $P752."!make"($P755)
.return ($P756)
@@ -18156,24 +18299,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>" :subid("53_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<regex_declarator>" :subid("53_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_761
.annotate "line", 277
new $P760, 'ExceptionHandler'
set_addr $P760, control_759
- $P760."handle_types"(58)
+ $P760."handle_types"(57)
push_eh $P760
.lex "self", self
.lex "$/", param_761
find_lex $P762, "$/"
find_lex $P763, "$/"
- unless_null $P763, vivify_276
+ unless_null $P763, vivify_277
$P763 = root_new ['parrot';'Hash']
- vivify_276:
+ vivify_277:
set $P764, $P763["regex_declarator"]
- unless_null $P764, vivify_277
+ unless_null $P764, vivify_278
new $P764, "Undef"
- vivify_277:
+ vivify_278:
$P765 = $P764."ast"()
$P766 = $P762."!make"($P765)
.return ($P766)
@@ -18186,24 +18329,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>" :subid("54_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<statement_prefix>" :subid("54_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_771
.annotate "line", 278
new $P770, 'ExceptionHandler'
set_addr $P770, control_769
- $P770."handle_types"(58)
+ $P770."handle_types"(57)
push_eh $P770
.lex "self", self
.lex "$/", param_771
find_lex $P772, "$/"
find_lex $P773, "$/"
- unless_null $P773, vivify_278
+ unless_null $P773, vivify_279
$P773 = root_new ['parrot';'Hash']
- vivify_278:
+ vivify_279:
set $P774, $P773["statement_prefix"]
- unless_null $P774, vivify_279
+ unless_null $P774, vivify_280
new $P774, "Undef"
- vivify_279:
+ vivify_280:
$P775 = $P774."ast"()
$P776 = $P772."!make"($P775)
.return ($P776)
@@ -18216,24 +18359,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>" :subid("55_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<lambda>" :subid("55_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_781
.annotate "line", 279
new $P780, 'ExceptionHandler'
set_addr $P780, control_779
- $P780."handle_types"(58)
+ $P780."handle_types"(57)
push_eh $P780
.lex "self", self
.lex "$/", param_781
find_lex $P782, "$/"
find_lex $P783, "$/"
- unless_null $P783, vivify_280
+ unless_null $P783, vivify_281
$P783 = root_new ['parrot';'Hash']
- vivify_280:
+ vivify_281:
set $P784, $P783["pblock"]
- unless_null $P784, vivify_281
+ unless_null $P784, vivify_282
new $P784, "Undef"
- vivify_281:
+ vivify_282:
$P785 = $P784."ast"()
$P786 = $P782."!make"($P785)
.return ($P786)
@@ -18246,12 +18389,12 @@
.namespace ["NQP";"Actions"]
-.sub "fatarrow" :subid("56_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "fatarrow" :subid("56_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_791
.annotate "line", 281
new $P790, 'ExceptionHandler'
set_addr $P790, control_789
- $P790."handle_types"(58)
+ $P790."handle_types"(57)
push_eh $P790
.lex "self", self
.lex "$/", param_791
@@ -18259,25 +18402,25 @@
new $P792, "Undef"
.lex "$past", $P792
find_lex $P793, "$/"
- unless_null $P793, vivify_282
+ unless_null $P793, vivify_283
$P793 = root_new ['parrot';'Hash']
- vivify_282:
+ vivify_283:
set $P794, $P793["val"]
- unless_null $P794, vivify_283
+ unless_null $P794, vivify_284
new $P794, "Undef"
- vivify_283:
+ vivify_284:
$P795 = $P794."ast"()
store_lex "$past", $P795
.annotate "line", 283
find_lex $P796, "$past"
find_lex $P797, "$/"
- unless_null $P797, vivify_284
+ unless_null $P797, vivify_285
$P797 = root_new ['parrot';'Hash']
- vivify_284:
+ vivify_285:
set $P798, $P797["key"]
- unless_null $P798, vivify_285
+ unless_null $P798, vivify_286
new $P798, "Undef"
- vivify_285:
+ vivify_286:
$P799 = $P798."Str"()
$P796."named"($P799)
.annotate "line", 284
@@ -18295,12 +18438,12 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair" :subid("57_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "colonpair" :subid("57_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_807
.annotate "line", 287
new $P806, 'ExceptionHandler'
set_addr $P806, control_805
- $P806."handle_types"(58)
+ $P806."handle_types"(57)
push_eh $P806
.lex "self", self
.lex "$/", param_807
@@ -18309,24 +18452,24 @@
.lex "$past", $P808
.annotate "line", 289
find_lex $P811, "$/"
- unless_null $P811, vivify_286
+ unless_null $P811, vivify_287
$P811 = root_new ['parrot';'Hash']
- vivify_286:
+ vivify_287:
set $P812, $P811["circumfix"]
- unless_null $P812, vivify_287
+ unless_null $P812, vivify_288
new $P812, "Undef"
- vivify_287:
+ vivify_288:
if $P812, if_810
.annotate "line", 290
get_hll_global $P817, ["PAST"], "Val"
find_lex $P818, "$/"
- unless_null $P818, vivify_288
+ unless_null $P818, vivify_289
$P818 = root_new ['parrot';'Hash']
- vivify_288:
+ vivify_289:
set $P819, $P818["not"]
- unless_null $P819, vivify_289
+ unless_null $P819, vivify_290
new $P819, "Undef"
- vivify_289:
+ vivify_290:
isfalse $I820, $P819
$P821 = $P817."new"($I820 :named("value"))
set $P809, $P821
@@ -18334,17 +18477,17 @@
goto if_810_end
if_810:
find_lex $P813, "$/"
- unless_null $P813, vivify_290
+ unless_null $P813, vivify_291
$P813 = root_new ['parrot';'Hash']
- vivify_290:
+ vivify_291:
set $P814, $P813["circumfix"]
- unless_null $P814, vivify_291
+ unless_null $P814, vivify_292
$P814 = root_new ['parrot';'ResizablePMCArray']
- vivify_291:
+ vivify_292:
set $P815, $P814[0]
- unless_null $P815, vivify_292
+ unless_null $P815, vivify_293
new $P815, "Undef"
- vivify_292:
+ vivify_293:
$P816 = $P815."ast"()
set $P809, $P816
if_810_end:
@@ -18352,13 +18495,13 @@
.annotate "line", 291
find_lex $P822, "$past"
find_lex $P823, "$/"
- unless_null $P823, vivify_293
+ unless_null $P823, vivify_294
$P823 = root_new ['parrot';'Hash']
- vivify_293:
+ vivify_294:
set $P824, $P823["identifier"]
- unless_null $P824, vivify_294
+ unless_null $P824, vivify_295
new $P824, "Undef"
- vivify_294:
+ vivify_295:
set $S825, $P824
$P822."named"($S825)
.annotate "line", 292
@@ -18376,14 +18519,14 @@
.namespace ["NQP";"Actions"]
-.sub "variable" :subid("58_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "variable" :subid("58_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_833
.annotate "line", 295
- .const 'Sub' $P846 = "59_1267204714.47172"
+ .const 'Sub' $P846 = "59_1272816841.80681"
capture_lex $P846
new $P832, 'ExceptionHandler'
set_addr $P832, control_831
- $P832."handle_types"(58)
+ $P832."handle_types"(57)
push_eh $P832
.lex "self", self
.lex "$/", param_833
@@ -18394,29 +18537,29 @@
find_lex $P835, "$past"
.annotate "line", 297
find_lex $P837, "$/"
- unless_null $P837, vivify_295
+ unless_null $P837, vivify_296
$P837 = root_new ['parrot';'Hash']
- vivify_295:
+ vivify_296:
set $P838, $P837["postcircumfix"]
- unless_null $P838, vivify_296
+ unless_null $P838, vivify_297
new $P838, "Undef"
- vivify_296:
+ vivify_297:
if $P838, if_836
.annotate "line", 301
- .const 'Sub' $P846 = "59_1267204714.47172"
+ .const 'Sub' $P846 = "59_1272816841.80681"
capture_lex $P846
$P846()
goto if_836_end
if_836:
.annotate "line", 298
find_lex $P839, "$/"
- unless_null $P839, vivify_313
+ unless_null $P839, vivify_314
$P839 = root_new ['parrot';'Hash']
- vivify_313:
+ vivify_314:
set $P840, $P839["postcircumfix"]
- unless_null $P840, vivify_314
+ unless_null $P840, vivify_315
new $P840, "Undef"
- vivify_314:
+ vivify_315:
$P841 = $P840."ast"()
store_lex "$past", $P841
.annotate "line", 299
@@ -18440,7 +18583,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block845" :anon :subid("59_1267204714.47172") :outer("58_1267204714.47172")
+.sub "_block845" :anon :subid("59_1272816841.80681") :outer("58_1272816841.80681")
.annotate "line", 302
$P847 = root_new ['parrot';'ResizablePMCArray']
.lex "@name", $P847
@@ -18461,13 +18604,13 @@
unless $P858, if_857_end
.annotate "line", 305
find_lex $P860, "@name"
- unless_null $P860, vivify_297
+ unless_null $P860, vivify_298
$P860 = root_new ['parrot';'ResizablePMCArray']
- vivify_297:
+ vivify_298:
set $P861, $P860[0]
- unless_null $P861, vivify_298
+ unless_null $P861, vivify_299
new $P861, "Undef"
- vivify_298:
+ vivify_299:
set $S862, $P861
iseq $I863, $S862, "GLOBAL"
unless $I863, if_859_end
@@ -18484,13 +18627,13 @@
.annotate "line", 308
find_lex $P868, "$past"
find_lex $P869, "$/"
- unless_null $P869, vivify_299
+ unless_null $P869, vivify_300
$P869 = root_new ['parrot';'Hash']
- vivify_299:
+ vivify_300:
set $P870, $P869["sigil"]
- unless_null $P870, vivify_300
+ unless_null $P870, vivify_301
new $P870, "Undef"
- vivify_300:
+ vivify_301:
$P871 = "vivitype"($P870)
$P868."viviself"($P871)
.annotate "line", 309
@@ -18499,33 +18642,33 @@
if_857_end:
.annotate "line", 311
find_lex $P875, "$/"
- unless_null $P875, vivify_301
+ unless_null $P875, vivify_302
$P875 = root_new ['parrot';'Hash']
- vivify_301:
+ vivify_302:
set $P876, $P875["twigil"]
- unless_null $P876, vivify_302
+ unless_null $P876, vivify_303
$P876 = root_new ['parrot';'ResizablePMCArray']
- vivify_302:
+ vivify_303:
set $P877, $P876[0]
- unless_null $P877, vivify_303
+ unless_null $P877, vivify_304
new $P877, "Undef"
- vivify_303:
+ vivify_304:
set $S878, $P877
iseq $I879, $S878, "*"
if $I879, if_874
.annotate "line", 324
find_lex $P901, "$/"
- unless_null $P901, vivify_304
+ unless_null $P901, vivify_305
$P901 = root_new ['parrot';'Hash']
- vivify_304:
+ vivify_305:
set $P902, $P901["twigil"]
- unless_null $P902, vivify_305
+ unless_null $P902, vivify_306
$P902 = root_new ['parrot';'ResizablePMCArray']
- vivify_305:
+ vivify_306:
set $P903, $P902[0]
- unless_null $P903, vivify_306
+ unless_null $P903, vivify_307
new $P903, "Undef"
- vivify_306:
+ vivify_307:
set $S904, $P903
iseq $I905, $S904, "!"
if $I905, if_900
@@ -18544,13 +18687,13 @@
.annotate "line", 327
find_lex $P910, "$past"
find_lex $P911, "$/"
- unless_null $P911, vivify_307
+ unless_null $P911, vivify_308
$P911 = root_new ['parrot';'Hash']
- vivify_307:
+ vivify_308:
set $P912, $P911["sigil"]
- unless_null $P912, vivify_308
+ unless_null $P912, vivify_309
new $P912, "Undef"
- vivify_308:
+ vivify_309:
$P913 = "vivitype"($P912)
$P914 = $P910."viviself"($P913)
.annotate "line", 324
@@ -18569,24 +18712,24 @@
get_hll_global $P882, ["PAST"], "Var"
.annotate "line", 316
find_lex $P883, "$/"
- unless_null $P883, vivify_309
+ unless_null $P883, vivify_310
$P883 = root_new ['parrot';'Hash']
- vivify_309:
+ vivify_310:
set $P884, $P883["sigil"]
- unless_null $P884, vivify_310
+ unless_null $P884, vivify_311
new $P884, "Undef"
- vivify_310:
+ vivify_311:
set $S885, $P884
new $P886, 'String'
set $P886, $S885
find_lex $P887, "$/"
- unless_null $P887, vivify_311
+ unless_null $P887, vivify_312
$P887 = root_new ['parrot';'Hash']
- vivify_311:
+ vivify_312:
set $P888, $P887["desigilname"]
- unless_null $P888, vivify_312
+ unless_null $P888, vivify_313
new $P888, "Undef"
- vivify_312:
+ vivify_313:
concat $P889, $P886, $P888
.annotate "line", 318
get_hll_global $P890, ["PAST"], "Op"
@@ -18609,24 +18752,24 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>" :subid("60_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_declarator:sym<module>" :subid("60_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_922
.annotate "line", 333
new $P921, 'ExceptionHandler'
set_addr $P921, control_920
- $P921."handle_types"(58)
+ $P921."handle_types"(57)
push_eh $P921
.lex "self", self
.lex "$/", param_922
find_lex $P923, "$/"
find_lex $P924, "$/"
- unless_null $P924, vivify_315
+ unless_null $P924, vivify_316
$P924 = root_new ['parrot';'Hash']
- vivify_315:
+ vivify_316:
set $P925, $P924["package_def"]
- unless_null $P925, vivify_316
+ unless_null $P925, vivify_317
new $P925, "Undef"
- vivify_316:
+ vivify_317:
$P926 = $P925."ast"()
$P927 = $P923."!make"($P926)
.return ($P927)
@@ -18639,12 +18782,12 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>" :subid("61_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_declarator:sym<class>" :subid("61_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_932
.annotate "line", 334
new $P931, 'ExceptionHandler'
set_addr $P931, control_930
- $P931."handle_types"(58)
+ $P931."handle_types"(57)
push_eh $P931
.lex "self", self
.lex "$/", param_932
@@ -18659,13 +18802,13 @@
.lex "$parent", $P935
.annotate "line", 335
find_lex $P936, "$/"
- unless_null $P936, vivify_317
+ unless_null $P936, vivify_318
$P936 = root_new ['parrot';'Hash']
- vivify_317:
+ vivify_318:
set $P937, $P936["package_def"]
- unless_null $P937, vivify_318
+ unless_null $P937, vivify_319
new $P937, "Undef"
- vivify_318:
+ vivify_319:
$P938 = $P937."ast"()
store_lex "$past", $P938
.annotate "line", 337
@@ -18675,38 +18818,38 @@
$P941 = $P940."new"(" %r = get_root_global [\"parrot\"], \"P6metaclass\"" :named("inline"))
.annotate "line", 341
find_lex $P942, "$/"
- unless_null $P942, vivify_319
+ unless_null $P942, vivify_320
$P942 = root_new ['parrot';'Hash']
- vivify_319:
+ vivify_320:
set $P943, $P942["package_def"]
- unless_null $P943, vivify_320
+ unless_null $P943, vivify_321
$P943 = root_new ['parrot';'Hash']
- vivify_320:
+ vivify_321:
set $P944, $P943["name"]
- unless_null $P944, vivify_321
+ unless_null $P944, vivify_322
new $P944, "Undef"
- vivify_321:
+ vivify_322:
set $S945, $P944
$P946 = $P939."new"($P941, $S945, "new_class" :named("name"), "callmethod" :named("pasttype"))
.annotate "line", 337
store_lex "$classinit", $P946
.annotate "line", 345
find_lex $P949, "$/"
- unless_null $P949, vivify_322
+ unless_null $P949, vivify_323
$P949 = root_new ['parrot';'Hash']
- vivify_322:
+ vivify_323:
set $P950, $P949["package_def"]
- unless_null $P950, vivify_323
+ unless_null $P950, vivify_324
$P950 = root_new ['parrot';'Hash']
- vivify_323:
+ vivify_324:
set $P951, $P950["parent"]
- unless_null $P951, vivify_324
+ unless_null $P951, vivify_325
$P951 = root_new ['parrot';'ResizablePMCArray']
- vivify_324:
+ vivify_325:
set $P952, $P951[0]
- unless_null $P952, vivify_325
+ unless_null $P952, vivify_326
new $P952, "Undef"
- vivify_325:
+ vivify_326:
set $S953, $P952
unless $S953, unless_948
new $P947, 'String'
@@ -18715,13 +18858,13 @@
unless_948:
.annotate "line", 346
find_lex $P956, "$/"
- unless_null $P956, vivify_326
+ unless_null $P956, vivify_327
$P956 = root_new ['parrot';'Hash']
- vivify_326:
+ vivify_327:
set $P957, $P956["sym"]
- unless_null $P957, vivify_327
+ unless_null $P957, vivify_328
new $P957, "Undef"
- vivify_327:
+ vivify_328:
set $S958, $P957
iseq $I959, $S958, "grammar"
if $I959, if_955
@@ -18749,35 +18892,35 @@
if_962_end:
.annotate "line", 350
find_lex $P969, "$past"
- unless_null $P969, vivify_328
+ unless_null $P969, vivify_329
$P969 = root_new ['parrot';'Hash']
- vivify_328:
+ vivify_329:
set $P970, $P969["attributes"]
- unless_null $P970, vivify_329
+ unless_null $P970, vivify_330
new $P970, "Undef"
- vivify_329:
+ vivify_330:
unless $P970, if_968_end
.annotate "line", 351
find_lex $P971, "$classinit"
find_lex $P972, "$past"
- unless_null $P972, vivify_330
+ unless_null $P972, vivify_331
$P972 = root_new ['parrot';'Hash']
- vivify_330:
+ vivify_331:
set $P973, $P972["attributes"]
- unless_null $P973, vivify_331
+ unless_null $P973, vivify_332
new $P973, "Undef"
- vivify_331:
+ vivify_332:
$P971."push"($P973)
if_968_end:
.annotate "line", 353
get_global $P974, "@BLOCK"
- unless_null $P974, vivify_332
+ unless_null $P974, vivify_333
$P974 = root_new ['parrot';'ResizablePMCArray']
- vivify_332:
+ vivify_333:
set $P975, $P974[0]
- unless_null $P975, vivify_333
+ unless_null $P975, vivify_334
new $P975, "Undef"
- vivify_333:
+ vivify_334:
$P976 = $P975."loadinit"()
find_lex $P977, "$classinit"
$P976."push"($P977)
@@ -18796,12 +18939,12 @@
.namespace ["NQP";"Actions"]
-.sub "package_def" :subid("62_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_def" :subid("62_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_985
.annotate "line", 357
new $P984, 'ExceptionHandler'
set_addr $P984, control_983
- $P984."handle_types"(58)
+ $P984."handle_types"(57)
push_eh $P984
.lex "self", self
.lex "$/", param_985
@@ -18809,34 +18952,34 @@
new $P986, "Undef"
.lex "$past", $P986
find_lex $P989, "$/"
- unless_null $P989, vivify_334
+ unless_null $P989, vivify_335
$P989 = root_new ['parrot';'Hash']
- vivify_334:
+ vivify_335:
set $P990, $P989["block"]
- unless_null $P990, vivify_335
+ unless_null $P990, vivify_336
new $P990, "Undef"
- vivify_335:
+ vivify_336:
if $P990, if_988
find_lex $P994, "$/"
- unless_null $P994, vivify_336
+ unless_null $P994, vivify_337
$P994 = root_new ['parrot';'Hash']
- vivify_336:
+ vivify_337:
set $P995, $P994["comp_unit"]
- unless_null $P995, vivify_337
+ unless_null $P995, vivify_338
new $P995, "Undef"
- vivify_337:
+ vivify_338:
$P996 = $P995."ast"()
set $P987, $P996
goto if_988_end
if_988:
find_lex $P991, "$/"
- unless_null $P991, vivify_338
+ unless_null $P991, vivify_339
$P991 = root_new ['parrot';'Hash']
- vivify_338:
+ vivify_339:
set $P992, $P991["block"]
- unless_null $P992, vivify_339
+ unless_null $P992, vivify_340
new $P992, "Undef"
- vivify_339:
+ vivify_340:
$P993 = $P992."ast"()
set $P987, $P993
if_988_end:
@@ -18844,17 +18987,17 @@
.annotate "line", 359
find_lex $P997, "$past"
find_lex $P998, "$/"
- unless_null $P998, vivify_340
+ unless_null $P998, vivify_341
$P998 = root_new ['parrot';'Hash']
- vivify_340:
+ vivify_341:
set $P999, $P998["name"]
- unless_null $P999, vivify_341
+ unless_null $P999, vivify_342
$P999 = root_new ['parrot';'Hash']
- vivify_341:
+ vivify_342:
set $P1000, $P999["identifier"]
- unless_null $P1000, vivify_342
+ unless_null $P1000, vivify_343
new $P1000, "Undef"
- vivify_342:
+ vivify_343:
$P997."namespace"($P1000)
.annotate "line", 360
find_lex $P1001, "$past"
@@ -18874,24 +19017,24 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>" :subid("63_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<my>" :subid("63_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1009
.annotate "line", 364
new $P1008, 'ExceptionHandler'
set_addr $P1008, control_1007
- $P1008."handle_types"(58)
+ $P1008."handle_types"(57)
push_eh $P1008
.lex "self", self
.lex "$/", param_1009
find_lex $P1010, "$/"
find_lex $P1011, "$/"
- unless_null $P1011, vivify_343
+ unless_null $P1011, vivify_344
$P1011 = root_new ['parrot';'Hash']
- vivify_343:
+ vivify_344:
set $P1012, $P1011["scoped"]
- unless_null $P1012, vivify_344
+ unless_null $P1012, vivify_345
new $P1012, "Undef"
- vivify_344:
+ vivify_345:
$P1013 = $P1012."ast"()
$P1014 = $P1010."!make"($P1013)
.return ($P1014)
@@ -18904,24 +19047,24 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>" :subid("64_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<our>" :subid("64_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1019
.annotate "line", 365
new $P1018, 'ExceptionHandler'
set_addr $P1018, control_1017
- $P1018."handle_types"(58)
+ $P1018."handle_types"(57)
push_eh $P1018
.lex "self", self
.lex "$/", param_1019
find_lex $P1020, "$/"
find_lex $P1021, "$/"
- unless_null $P1021, vivify_345
+ unless_null $P1021, vivify_346
$P1021 = root_new ['parrot';'Hash']
- vivify_345:
+ vivify_346:
set $P1022, $P1021["scoped"]
- unless_null $P1022, vivify_346
+ unless_null $P1022, vivify_347
new $P1022, "Undef"
- vivify_346:
+ vivify_347:
$P1023 = $P1022."ast"()
$P1024 = $P1020."!make"($P1023)
.return ($P1024)
@@ -18934,24 +19077,24 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>" :subid("65_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<has>" :subid("65_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1029
.annotate "line", 366
new $P1028, 'ExceptionHandler'
set_addr $P1028, control_1027
- $P1028."handle_types"(58)
+ $P1028."handle_types"(57)
push_eh $P1028
.lex "self", self
.lex "$/", param_1029
find_lex $P1030, "$/"
find_lex $P1031, "$/"
- unless_null $P1031, vivify_347
+ unless_null $P1031, vivify_348
$P1031 = root_new ['parrot';'Hash']
- vivify_347:
+ vivify_348:
set $P1032, $P1031["scoped"]
- unless_null $P1032, vivify_348
+ unless_null $P1032, vivify_349
new $P1032, "Undef"
- vivify_348:
+ vivify_349:
$P1033 = $P1032."ast"()
$P1034 = $P1030."!make"($P1033)
.return ($P1034)
@@ -18964,12 +19107,12 @@
.namespace ["NQP";"Actions"]
-.sub "scoped" :subid("66_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scoped" :subid("66_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1039
.annotate "line", 368
new $P1038, 'ExceptionHandler'
set_addr $P1038, control_1037
- $P1038."handle_types"(58)
+ $P1038."handle_types"(57)
push_eh $P1038
.lex "self", self
.lex "$/", param_1039
@@ -18977,36 +19120,36 @@
find_lex $P1040, "$/"
.annotate "line", 370
find_lex $P1043, "$/"
- unless_null $P1043, vivify_349
+ unless_null $P1043, vivify_350
$P1043 = root_new ['parrot';'Hash']
- vivify_349:
+ vivify_350:
set $P1044, $P1043["routine_declarator"]
- unless_null $P1044, vivify_350
+ unless_null $P1044, vivify_351
new $P1044, "Undef"
- vivify_350:
+ vivify_351:
if $P1044, if_1042
.annotate "line", 371
find_lex $P1048, "$/"
- unless_null $P1048, vivify_351
+ unless_null $P1048, vivify_352
$P1048 = root_new ['parrot';'Hash']
- vivify_351:
+ vivify_352:
set $P1049, $P1048["variable_declarator"]
- unless_null $P1049, vivify_352
+ unless_null $P1049, vivify_353
new $P1049, "Undef"
- vivify_352:
+ vivify_353:
$P1050 = $P1049."ast"()
set $P1041, $P1050
.annotate "line", 370
goto if_1042_end
if_1042:
find_lex $P1045, "$/"
- unless_null $P1045, vivify_353
+ unless_null $P1045, vivify_354
$P1045 = root_new ['parrot';'Hash']
- vivify_353:
+ vivify_354:
set $P1046, $P1045["routine_declarator"]
- unless_null $P1046, vivify_354
+ unless_null $P1046, vivify_355
new $P1046, "Undef"
- vivify_354:
+ vivify_355:
$P1047 = $P1046."ast"()
set $P1041, $P1047
if_1042_end:
@@ -19022,14 +19165,14 @@
.namespace ["NQP";"Actions"]
-.sub "variable_declarator" :subid("67_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "variable_declarator" :subid("67_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1056
.annotate "line", 374
- .const 'Sub' $P1096 = "68_1267204714.47172"
+ .const 'Sub' $P1096 = "68_1272816841.80681"
capture_lex $P1096
new $P1055, 'ExceptionHandler'
set_addr $P1055, control_1054
- $P1055."handle_types"(58)
+ $P1055."handle_types"(57)
push_eh $P1055
.lex "self", self
.lex "$/", param_1056
@@ -19047,28 +19190,28 @@
.lex "$BLOCK", $P1060
.annotate "line", 375
find_lex $P1061, "$/"
- unless_null $P1061, vivify_355
+ unless_null $P1061, vivify_356
$P1061 = root_new ['parrot';'Hash']
- vivify_355:
+ vivify_356:
set $P1062, $P1061["variable"]
- unless_null $P1062, vivify_356
+ unless_null $P1062, vivify_357
new $P1062, "Undef"
- vivify_356:
+ vivify_357:
$P1063 = $P1062."ast"()
store_lex "$past", $P1063
.annotate "line", 376
find_lex $P1064, "$/"
- unless_null $P1064, vivify_357
+ unless_null $P1064, vivify_358
$P1064 = root_new ['parrot';'Hash']
- vivify_357:
+ vivify_358:
set $P1065, $P1064["variable"]
- unless_null $P1065, vivify_358
+ unless_null $P1065, vivify_359
$P1065 = root_new ['parrot';'Hash']
- vivify_358:
+ vivify_359:
set $P1066, $P1065["sigil"]
- unless_null $P1066, vivify_359
+ unless_null $P1066, vivify_360
new $P1066, "Undef"
- vivify_359:
+ vivify_360:
store_lex "$sigil", $P1066
.annotate "line", 377
find_lex $P1067, "$past"
@@ -19076,13 +19219,13 @@
store_lex "$name", $P1068
.annotate "line", 378
get_global $P1069, "@BLOCK"
- unless_null $P1069, vivify_360
+ unless_null $P1069, vivify_361
$P1069 = root_new ['parrot';'ResizablePMCArray']
- vivify_360:
+ vivify_361:
set $P1070, $P1069[0]
- unless_null $P1070, vivify_361
+ unless_null $P1070, vivify_362
new $P1070, "Undef"
- vivify_361:
+ vivify_362:
store_lex "$BLOCK", $P1070
.annotate "line", 379
find_lex $P1072, "$BLOCK"
@@ -19097,17 +19240,17 @@
if_1071_end:
.annotate "line", 382
find_dynamic_lex $P1079, "$*SCOPE"
- unless_null $P1079, vivify_362
- get_hll_global $P1079, "$SCOPE"
unless_null $P1079, vivify_363
+ get_hll_global $P1079, "$SCOPE"
+ unless_null $P1079, vivify_364
die "Contextual $*SCOPE not found"
+ vivify_364:
vivify_363:
- vivify_362:
set $S1080, $P1079
iseq $I1081, $S1080, "has"
if $I1081, if_1078
.annotate "line", 391
- .const 'Sub' $P1096 = "68_1267204714.47172"
+ .const 'Sub' $P1096 = "68_1272816841.80681"
capture_lex $P1096
$P1096()
goto if_1078_end
@@ -19118,33 +19261,33 @@
$P1082."symbol"($P1083, "attribute" :named("scope"))
.annotate "line", 384
find_lex $P1085, "$BLOCK"
- unless_null $P1085, vivify_368
+ unless_null $P1085, vivify_369
$P1085 = root_new ['parrot';'Hash']
- vivify_368:
+ vivify_369:
set $P1086, $P1085["attributes"]
- unless_null $P1086, vivify_369
+ unless_null $P1086, vivify_370
new $P1086, "Undef"
- vivify_369:
+ vivify_370:
if $P1086, unless_1084_end
.annotate "line", 386
get_hll_global $P1087, ["PAST"], "Op"
$P1088 = $P1087."new"("list" :named("pasttype"), "attr" :named("named"))
find_lex $P1089, "$BLOCK"
- unless_null $P1089, vivify_370
+ unless_null $P1089, vivify_371
$P1089 = root_new ['parrot';'Hash']
store_lex "$BLOCK", $P1089
- vivify_370:
+ vivify_371:
set $P1089["attributes"], $P1088
unless_1084_end:
.annotate "line", 388
find_lex $P1090, "$BLOCK"
- unless_null $P1090, vivify_371
+ unless_null $P1090, vivify_372
$P1090 = root_new ['parrot';'Hash']
- vivify_371:
+ vivify_372:
set $P1091, $P1090["attributes"]
- unless_null $P1091, vivify_372
+ unless_null $P1091, vivify_373
new $P1091, "Undef"
- vivify_372:
+ vivify_373:
find_lex $P1092, "$name"
$P1091."push"($P1092)
.annotate "line", 389
@@ -19167,7 +19310,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1095" :anon :subid("68_1267204714.47172") :outer("67_1267204714.47172")
+.sub "_block1095" :anon :subid("68_1272816841.80681") :outer("67_1272816841.80681")
.annotate "line", 392
new $P1097, "Undef"
.lex "$scope", $P1097
@@ -19176,12 +19319,12 @@
.lex "$decl", $P1098
.annotate "line", 392
find_dynamic_lex $P1101, "$*SCOPE"
- unless_null $P1101, vivify_364
- get_hll_global $P1101, "$SCOPE"
unless_null $P1101, vivify_365
+ get_hll_global $P1101, "$SCOPE"
+ unless_null $P1101, vivify_366
die "Contextual $*SCOPE not found"
+ vivify_366:
vivify_365:
- vivify_364:
set $S1102, $P1101
iseq $I1103, $S1102, "our"
if $I1103, if_1100
@@ -19213,13 +19356,13 @@
$P1113."symbol"($P1114, $P1115 :named("scope"))
.annotate "line", 397
find_lex $P1116, "$BLOCK"
- unless_null $P1116, vivify_366
+ unless_null $P1116, vivify_367
$P1116 = root_new ['parrot';'ResizablePMCArray']
- vivify_366:
+ vivify_367:
set $P1117, $P1116[0]
- unless_null $P1117, vivify_367
+ unless_null $P1117, vivify_368
new $P1117, "Undef"
- vivify_367:
+ vivify_368:
find_lex $P1118, "$decl"
$P1119 = $P1117."push"($P1118)
.annotate "line", 391
@@ -19228,24 +19371,24 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>" :subid("69_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_declarator:sym<sub>" :subid("69_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1127
.annotate "line", 402
new $P1126, 'ExceptionHandler'
set_addr $P1126, control_1125
- $P1126."handle_types"(58)
+ $P1126."handle_types"(57)
push_eh $P1126
.lex "self", self
.lex "$/", param_1127
find_lex $P1128, "$/"
find_lex $P1129, "$/"
- unless_null $P1129, vivify_373
+ unless_null $P1129, vivify_374
$P1129 = root_new ['parrot';'Hash']
- vivify_373:
+ vivify_374:
set $P1130, $P1129["routine_def"]
- unless_null $P1130, vivify_374
+ unless_null $P1130, vivify_375
new $P1130, "Undef"
- vivify_374:
+ vivify_375:
$P1131 = $P1130."ast"()
$P1132 = $P1128."!make"($P1131)
.return ($P1132)
@@ -19258,24 +19401,24 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>" :subid("70_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_declarator:sym<method>" :subid("70_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1137
.annotate "line", 403
new $P1136, 'ExceptionHandler'
set_addr $P1136, control_1135
- $P1136."handle_types"(58)
+ $P1136."handle_types"(57)
push_eh $P1136
.lex "self", self
.lex "$/", param_1137
find_lex $P1138, "$/"
find_lex $P1139, "$/"
- unless_null $P1139, vivify_375
+ unless_null $P1139, vivify_376
$P1139 = root_new ['parrot';'Hash']
- vivify_375:
+ vivify_376:
set $P1140, $P1139["method_def"]
- unless_null $P1140, vivify_376
+ unless_null $P1140, vivify_377
new $P1140, "Undef"
- vivify_376:
+ vivify_377:
$P1141 = $P1140."ast"()
$P1142 = $P1138."!make"($P1141)
.return ($P1142)
@@ -19288,14 +19431,14 @@
.namespace ["NQP";"Actions"]
-.sub "routine_def" :subid("71_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_def" :subid("71_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1147
.annotate "line", 405
- .const 'Sub' $P1158 = "72_1267204714.47172"
+ .const 'Sub' $P1158 = "72_1272816841.80681"
capture_lex $P1158
new $P1146, 'ExceptionHandler'
set_addr $P1146, control_1145
- $P1146."handle_types"(58)
+ $P1146."handle_types"(57)
push_eh $P1146
.lex "self", self
.lex "$/", param_1147
@@ -19303,13 +19446,13 @@
new $P1148, "Undef"
.lex "$past", $P1148
find_lex $P1149, "$/"
- unless_null $P1149, vivify_377
+ unless_null $P1149, vivify_378
$P1149 = root_new ['parrot';'Hash']
- vivify_377:
+ vivify_378:
set $P1150, $P1149["blockoid"]
- unless_null $P1150, vivify_378
+ unless_null $P1150, vivify_379
new $P1150, "Undef"
- vivify_378:
+ vivify_379:
$P1151 = $P1150."ast"()
store_lex "$past", $P1151
.annotate "line", 407
@@ -19320,15 +19463,15 @@
$P1153."control"("return_pir")
.annotate "line", 409
find_lex $P1155, "$/"
- unless_null $P1155, vivify_379
+ unless_null $P1155, vivify_380
$P1155 = root_new ['parrot';'Hash']
- vivify_379:
+ vivify_380:
set $P1156, $P1155["deflongname"]
- unless_null $P1156, vivify_380
+ unless_null $P1156, vivify_381
new $P1156, "Undef"
- vivify_380:
+ vivify_381:
unless $P1156, if_1154_end
- .const 'Sub' $P1158 = "72_1267204714.47172"
+ .const 'Sub' $P1158 = "72_1272816841.80681"
capture_lex $P1158
$P1158()
if_1154_end:
@@ -19347,37 +19490,37 @@
.namespace ["NQP";"Actions"]
-.sub "_block1157" :anon :subid("72_1267204714.47172") :outer("71_1267204714.47172")
+.sub "_block1157" :anon :subid("72_1272816841.80681") :outer("71_1272816841.80681")
.annotate "line", 410
new $P1159, "Undef"
.lex "$name", $P1159
find_lex $P1160, "$/"
- unless_null $P1160, vivify_381
+ unless_null $P1160, vivify_382
$P1160 = root_new ['parrot';'Hash']
- vivify_381:
+ vivify_382:
set $P1161, $P1160["sigil"]
- unless_null $P1161, vivify_382
+ unless_null $P1161, vivify_383
$P1161 = root_new ['parrot';'ResizablePMCArray']
- vivify_382:
+ vivify_383:
set $P1162, $P1161[0]
- unless_null $P1162, vivify_383
+ unless_null $P1162, vivify_384
new $P1162, "Undef"
- vivify_383:
+ vivify_384:
set $S1163, $P1162
new $P1164, 'String'
set $P1164, $S1163
find_lex $P1165, "$/"
- unless_null $P1165, vivify_384
+ unless_null $P1165, vivify_385
$P1165 = root_new ['parrot';'Hash']
- vivify_384:
+ vivify_385:
set $P1166, $P1165["deflongname"]
- unless_null $P1166, vivify_385
+ unless_null $P1166, vivify_386
$P1166 = root_new ['parrot';'ResizablePMCArray']
- vivify_385:
+ vivify_386:
set $P1167, $P1166[0]
- unless_null $P1167, vivify_386
+ unless_null $P1167, vivify_387
new $P1167, "Undef"
- vivify_386:
+ vivify_387:
$S1168 = $P1167."ast"()
concat $P1169, $P1164, $S1168
store_lex "$name", $P1169
@@ -19387,12 +19530,12 @@
$P1170."name"($P1171)
.annotate "line", 412
find_dynamic_lex $P1174, "$*SCOPE"
- unless_null $P1174, vivify_387
- get_hll_global $P1174, "$SCOPE"
unless_null $P1174, vivify_388
+ get_hll_global $P1174, "$SCOPE"
+ unless_null $P1174, vivify_389
die "Contextual $*SCOPE not found"
+ vivify_389:
vivify_388:
- vivify_387:
set $S1175, $P1174
isne $I1176, $S1175, "our"
if $I1176, if_1173
@@ -19402,17 +19545,17 @@
if_1173:
.annotate "line", 413
get_global $P1177, "@BLOCK"
- unless_null $P1177, vivify_389
+ unless_null $P1177, vivify_390
$P1177 = root_new ['parrot';'ResizablePMCArray']
- vivify_389:
+ vivify_390:
set $P1178, $P1177[0]
- unless_null $P1178, vivify_390
+ unless_null $P1178, vivify_391
$P1178 = root_new ['parrot';'ResizablePMCArray']
- vivify_390:
+ vivify_391:
set $P1179, $P1178[0]
- unless_null $P1179, vivify_391
+ unless_null $P1179, vivify_392
new $P1179, "Undef"
- vivify_391:
+ vivify_392:
get_hll_global $P1180, ["PAST"], "Var"
find_lex $P1181, "$name"
find_lex $P1182, "$past"
@@ -19420,13 +19563,13 @@
$P1179."push"($P1183)
.annotate "line", 415
get_global $P1184, "@BLOCK"
- unless_null $P1184, vivify_392
+ unless_null $P1184, vivify_393
$P1184 = root_new ['parrot';'ResizablePMCArray']
- vivify_392:
+ vivify_393:
set $P1185, $P1184[0]
- unless_null $P1185, vivify_393
+ unless_null $P1185, vivify_394
new $P1185, "Undef"
- vivify_393:
+ vivify_394:
find_lex $P1186, "$name"
$P1185."symbol"($P1186, "lexical" :named("scope"))
.annotate "line", 416
@@ -19443,14 +19586,14 @@
.namespace ["NQP";"Actions"]
-.sub "method_def" :subid("73_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "method_def" :subid("73_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1197
.annotate "line", 423
- .const 'Sub' $P1213 = "74_1267204714.47172"
+ .const 'Sub' $P1213 = "74_1272816841.80681"
capture_lex $P1213
new $P1196, 'ExceptionHandler'
set_addr $P1196, control_1195
- $P1196."handle_types"(58)
+ $P1196."handle_types"(57)
push_eh $P1196
.lex "self", self
.lex "$/", param_1197
@@ -19458,13 +19601,13 @@
new $P1198, "Undef"
.lex "$past", $P1198
find_lex $P1199, "$/"
- unless_null $P1199, vivify_394
+ unless_null $P1199, vivify_395
$P1199 = root_new ['parrot';'Hash']
- vivify_394:
+ vivify_395:
set $P1200, $P1199["blockoid"]
- unless_null $P1200, vivify_395
+ unless_null $P1200, vivify_396
new $P1200, "Undef"
- vivify_395:
+ vivify_396:
$P1201 = $P1200."ast"()
store_lex "$past", $P1201
.annotate "line", 425
@@ -19475,13 +19618,13 @@
$P1203."control"("return_pir")
.annotate "line", 427
find_lex $P1204, "$past"
- unless_null $P1204, vivify_396
+ unless_null $P1204, vivify_397
$P1204 = root_new ['parrot';'ResizablePMCArray']
- vivify_396:
+ vivify_397:
set $P1205, $P1204[0]
- unless_null $P1205, vivify_397
+ unless_null $P1205, vivify_398
new $P1205, "Undef"
- vivify_397:
+ vivify_398:
get_hll_global $P1206, ["PAST"], "Op"
$P1207 = $P1206."new"(" .lex \"self\", self" :named("inline"))
$P1205."unshift"($P1207)
@@ -19490,15 +19633,15 @@
$P1208."symbol"("self", "lexical" :named("scope"))
.annotate "line", 429
find_lex $P1210, "$/"
- unless_null $P1210, vivify_398
+ unless_null $P1210, vivify_399
$P1210 = root_new ['parrot';'Hash']
- vivify_398:
+ vivify_399:
set $P1211, $P1210["deflongname"]
- unless_null $P1211, vivify_399
+ unless_null $P1211, vivify_400
new $P1211, "Undef"
- vivify_399:
+ vivify_400:
unless $P1211, if_1209_end
- .const 'Sub' $P1213 = "74_1267204714.47172"
+ .const 'Sub' $P1213 = "74_1272816841.80681"
capture_lex $P1213
$P1213()
if_1209_end:
@@ -19517,22 +19660,22 @@
.namespace ["NQP";"Actions"]
-.sub "_block1212" :anon :subid("74_1267204714.47172") :outer("73_1267204714.47172")
+.sub "_block1212" :anon :subid("74_1272816841.80681") :outer("73_1272816841.80681")
.annotate "line", 430
new $P1214, "Undef"
.lex "$name", $P1214
find_lex $P1215, "$/"
- unless_null $P1215, vivify_400
+ unless_null $P1215, vivify_401
$P1215 = root_new ['parrot';'Hash']
- vivify_400:
+ vivify_401:
set $P1216, $P1215["deflongname"]
- unless_null $P1216, vivify_401
+ unless_null $P1216, vivify_402
$P1216 = root_new ['parrot';'ResizablePMCArray']
- vivify_401:
+ vivify_402:
set $P1217, $P1216[0]
- unless_null $P1217, vivify_402
+ unless_null $P1217, vivify_403
new $P1217, "Undef"
- vivify_402:
+ vivify_403:
$P1218 = $P1217."ast"()
set $S1219, $P1218
new $P1220, 'String'
@@ -19548,14 +19691,14 @@
.namespace ["NQP";"Actions"]
-.sub "signature" :subid("75_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "signature" :subid("75_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1231
.annotate "line", 437
- .const 'Sub' $P1242 = "76_1267204714.47172"
+ .const 'Sub' $P1242 = "76_1272816841.80681"
capture_lex $P1242
new $P1230, 'ExceptionHandler'
set_addr $P1230, control_1229
- $P1230."handle_types"(58)
+ $P1230."handle_types"(57)
push_eh $P1230
.lex "self", self
.lex "$/", param_1231
@@ -19563,39 +19706,39 @@
new $P1232, "Undef"
.lex "$BLOCKINIT", $P1232
get_global $P1233, "@BLOCK"
- unless_null $P1233, vivify_403
+ unless_null $P1233, vivify_404
$P1233 = root_new ['parrot';'ResizablePMCArray']
- vivify_403:
+ vivify_404:
set $P1234, $P1233[0]
- unless_null $P1234, vivify_404
+ unless_null $P1234, vivify_405
$P1234 = root_new ['parrot';'ResizablePMCArray']
- vivify_404:
+ vivify_405:
set $P1235, $P1234[0]
- unless_null $P1235, vivify_405
+ unless_null $P1235, vivify_406
new $P1235, "Undef"
- vivify_405:
+ vivify_406:
store_lex "$BLOCKINIT", $P1235
.annotate "line", 439
find_lex $P1237, "$/"
- unless_null $P1237, vivify_406
+ unless_null $P1237, vivify_407
$P1237 = root_new ['parrot';'Hash']
- vivify_406:
+ vivify_407:
set $P1238, $P1237["parameter"]
- unless_null $P1238, vivify_407
+ unless_null $P1238, vivify_408
new $P1238, "Undef"
- vivify_407:
+ vivify_408:
defined $I1239, $P1238
- unless $I1239, for_undef_408
+ unless $I1239, for_undef_409
iter $P1236, $P1238
new $P1249, 'ExceptionHandler'
set_addr $P1249, loop1248_handler
- $P1249."handle_types"(65, 67, 66)
+ $P1249."handle_types"(64, 66, 65)
push_eh $P1249
loop1248_test:
unless $P1236, loop1248_done
shift $P1240, $P1236
loop1248_redo:
- .const 'Sub' $P1242 = "76_1267204714.47172"
+ .const 'Sub' $P1242 = "76_1272816841.80681"
capture_lex $P1242
$P1242($P1240)
loop1248_next:
@@ -19604,11 +19747,11 @@
.local pmc exception
.get_results (exception)
getattribute $P1250, exception, 'type'
- eq $P1250, 65, loop1248_next
- eq $P1250, 67, loop1248_redo
+ eq $P1250, 64, loop1248_next
+ eq $P1250, 66, loop1248_redo
loop1248_done:
pop_eh
- for_undef_408:
+ for_undef_409:
.annotate "line", 437
.return ($P1236)
control_1229:
@@ -19620,7 +19763,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1241" :anon :subid("76_1267204714.47172") :outer("75_1267204714.47172")
+.sub "_block1241" :anon :subid("76_1272816841.80681") :outer("75_1272816841.80681")
.param pmc param_1243
.annotate "line", 439
.lex "$_", param_1243
@@ -19633,12 +19776,12 @@
.namespace ["NQP";"Actions"]
-.sub "parameter" :subid("77_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "parameter" :subid("77_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1255
.annotate "line", 442
new $P1254, 'ExceptionHandler'
set_addr $P1254, control_1253
- $P1254."handle_types"(58)
+ $P1254."handle_types"(57)
push_eh $P1254
.lex "self", self
.lex "$/", param_1255
@@ -19650,34 +19793,34 @@
.lex "$past", $P1257
.annotate "line", 443
find_lex $P1258, "$/"
- unless_null $P1258, vivify_409
+ unless_null $P1258, vivify_410
$P1258 = root_new ['parrot';'Hash']
- vivify_409:
+ vivify_410:
set $P1259, $P1258["quant"]
- unless_null $P1259, vivify_410
+ unless_null $P1259, vivify_411
new $P1259, "Undef"
- vivify_410:
+ vivify_411:
store_lex "$quant", $P1259
find_lex $P1260, "$past"
.annotate "line", 445
find_lex $P1262, "$/"
- unless_null $P1262, vivify_411
+ unless_null $P1262, vivify_412
$P1262 = root_new ['parrot';'Hash']
- vivify_411:
+ vivify_412:
set $P1263, $P1262["named_param"]
- unless_null $P1263, vivify_412
+ unless_null $P1263, vivify_413
new $P1263, "Undef"
- vivify_412:
+ vivify_413:
if $P1263, if_1261
.annotate "line", 452
find_lex $P1277, "$/"
- unless_null $P1277, vivify_413
+ unless_null $P1277, vivify_414
$P1277 = root_new ['parrot';'Hash']
- vivify_413:
+ vivify_414:
set $P1278, $P1277["param_var"]
- unless_null $P1278, vivify_414
+ unless_null $P1278, vivify_415
new $P1278, "Undef"
- vivify_414:
+ vivify_415:
$P1279 = $P1278."ast"()
store_lex "$past", $P1279
.annotate "line", 453
@@ -19693,17 +19836,17 @@
.annotate "line", 458
find_lex $P1295, "$past"
find_lex $P1296, "$/"
- unless_null $P1296, vivify_415
+ unless_null $P1296, vivify_416
$P1296 = root_new ['parrot';'Hash']
- vivify_415:
+ vivify_416:
set $P1297, $P1296["param_var"]
- unless_null $P1297, vivify_416
+ unless_null $P1297, vivify_417
$P1297 = root_new ['parrot';'Hash']
- vivify_416:
+ vivify_417:
set $P1298, $P1297["sigil"]
- unless_null $P1298, vivify_417
+ unless_null $P1298, vivify_418
new $P1298, "Undef"
- vivify_417:
+ vivify_418:
$P1299 = "vivitype"($P1298)
$P1295."viviself"($P1299)
if_1291_end:
@@ -19716,17 +19859,17 @@
.annotate "line", 455
find_lex $P1285, "$past"
find_lex $P1286, "$/"
- unless_null $P1286, vivify_418
+ unless_null $P1286, vivify_419
$P1286 = root_new ['parrot';'Hash']
- vivify_418:
+ vivify_419:
set $P1287, $P1286["param_var"]
- unless_null $P1287, vivify_419
+ unless_null $P1287, vivify_420
$P1287 = root_new ['parrot';'Hash']
- vivify_419:
+ vivify_420:
set $P1288, $P1287["sigil"]
- unless_null $P1288, vivify_420
+ unless_null $P1288, vivify_421
new $P1288, "Undef"
- vivify_420:
+ vivify_421:
set $S1289, $P1288
iseq $I1290, $S1289, "%"
$P1285."named"($I1290)
@@ -19736,13 +19879,13 @@
if_1261:
.annotate "line", 446
find_lex $P1264, "$/"
- unless_null $P1264, vivify_421
+ unless_null $P1264, vivify_422
$P1264 = root_new ['parrot';'Hash']
- vivify_421:
+ vivify_422:
set $P1265, $P1264["named_param"]
- unless_null $P1265, vivify_422
+ unless_null $P1265, vivify_423
new $P1265, "Undef"
- vivify_422:
+ vivify_423:
$P1266 = $P1265."ast"()
store_lex "$past", $P1266
.annotate "line", 447
@@ -19753,34 +19896,34 @@
.annotate "line", 448
find_lex $P1271, "$past"
find_lex $P1272, "$/"
- unless_null $P1272, vivify_423
+ unless_null $P1272, vivify_424
$P1272 = root_new ['parrot';'Hash']
- vivify_423:
+ vivify_424:
set $P1273, $P1272["named_param"]
- unless_null $P1273, vivify_424
+ unless_null $P1273, vivify_425
$P1273 = root_new ['parrot';'Hash']
- vivify_424:
+ vivify_425:
set $P1274, $P1273["param_var"]
- unless_null $P1274, vivify_425
+ unless_null $P1274, vivify_426
$P1274 = root_new ['parrot';'Hash']
- vivify_425:
+ vivify_426:
set $P1275, $P1274["sigil"]
- unless_null $P1275, vivify_426
+ unless_null $P1275, vivify_427
new $P1275, "Undef"
- vivify_426:
+ vivify_427:
$P1276 = "vivitype"($P1275)
$P1271."viviself"($P1276)
if_1267_end:
if_1261_end:
.annotate "line", 461
find_lex $P1301, "$/"
- unless_null $P1301, vivify_427
+ unless_null $P1301, vivify_428
$P1301 = root_new ['parrot';'Hash']
- vivify_427:
+ vivify_428:
set $P1302, $P1301["default_value"]
- unless_null $P1302, vivify_428
+ unless_null $P1302, vivify_429
new $P1302, "Undef"
- vivify_428:
+ vivify_429:
unless $P1302, if_1300_end
.annotate "line", 462
find_lex $P1304, "$quant"
@@ -19805,21 +19948,21 @@
.annotate "line", 468
find_lex $P1315, "$past"
find_lex $P1316, "$/"
- unless_null $P1316, vivify_429
+ unless_null $P1316, vivify_430
$P1316 = root_new ['parrot';'Hash']
- vivify_429:
+ vivify_430:
set $P1317, $P1316["default_value"]
- unless_null $P1317, vivify_430
+ unless_null $P1317, vivify_431
$P1317 = root_new ['parrot';'ResizablePMCArray']
- vivify_430:
+ vivify_431:
set $P1318, $P1317[0]
- unless_null $P1318, vivify_431
+ unless_null $P1318, vivify_432
$P1318 = root_new ['parrot';'Hash']
- vivify_431:
+ vivify_432:
set $P1319, $P1318["EXPR"]
- unless_null $P1319, vivify_432
+ unless_null $P1319, vivify_433
new $P1319, "Undef"
- vivify_432:
+ vivify_433:
$P1320 = $P1319."ast"()
$P1315."viviself"($P1320)
if_1300_end:
@@ -19828,21 +19971,21 @@
$P1323 = $P1322."viviself"()
if $P1323, unless_1321_end
get_global $P1324, "@BLOCK"
- unless_null $P1324, vivify_433
+ unless_null $P1324, vivify_434
$P1324 = root_new ['parrot';'ResizablePMCArray']
- vivify_433:
+ vivify_434:
set $P1325, $P1324[0]
- unless_null $P1325, vivify_434
+ unless_null $P1325, vivify_435
new $P1325, "Undef"
- vivify_434:
+ vivify_435:
get_global $P1326, "@BLOCK"
- unless_null $P1326, vivify_435
+ unless_null $P1326, vivify_436
$P1326 = root_new ['parrot';'ResizablePMCArray']
- vivify_435:
+ vivify_436:
set $P1327, $P1326[0]
- unless_null $P1327, vivify_436
+ unless_null $P1327, vivify_437
new $P1327, "Undef"
- vivify_436:
+ vivify_437:
$P1328 = $P1327."arity"()
set $N1329, $P1328
new $P1330, 'Float'
@@ -19865,12 +20008,12 @@
.namespace ["NQP";"Actions"]
-.sub "param_var" :subid("78_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "param_var" :subid("78_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1339
.annotate "line", 474
new $P1338, 'ExceptionHandler'
set_addr $P1338, control_1337
- $P1338."handle_types"(58)
+ $P1338."handle_types"(57)
push_eh $P1338
.lex "self", self
.lex "$/", param_1339
@@ -19894,13 +20037,13 @@
store_lex "$past", $P1348
.annotate "line", 478
get_global $P1349, "@BLOCK"
- unless_null $P1349, vivify_437
+ unless_null $P1349, vivify_438
$P1349 = root_new ['parrot';'ResizablePMCArray']
- vivify_437:
+ vivify_438:
set $P1350, $P1349[0]
- unless_null $P1350, vivify_438
+ unless_null $P1350, vivify_439
new $P1350, "Undef"
- vivify_438:
+ vivify_439:
find_lex $P1351, "$name"
$P1350."symbol"($P1351, "lexical" :named("scope"))
.annotate "line", 479
@@ -19918,12 +20061,12 @@
.namespace ["NQP";"Actions"]
-.sub "named_param" :subid("79_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "named_param" :subid("79_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1359
.annotate "line", 482
new $P1358, 'ExceptionHandler'
set_addr $P1358, control_1357
- $P1358."handle_types"(58)
+ $P1358."handle_types"(57)
push_eh $P1358
.lex "self", self
.lex "$/", param_1359
@@ -19931,29 +20074,29 @@
new $P1360, "Undef"
.lex "$past", $P1360
find_lex $P1361, "$/"
- unless_null $P1361, vivify_439
+ unless_null $P1361, vivify_440
$P1361 = root_new ['parrot';'Hash']
- vivify_439:
+ vivify_440:
set $P1362, $P1361["param_var"]
- unless_null $P1362, vivify_440
+ unless_null $P1362, vivify_441
new $P1362, "Undef"
- vivify_440:
+ vivify_441:
$P1363 = $P1362."ast"()
store_lex "$past", $P1363
.annotate "line", 484
find_lex $P1364, "$past"
find_lex $P1365, "$/"
- unless_null $P1365, vivify_441
+ unless_null $P1365, vivify_442
$P1365 = root_new ['parrot';'Hash']
- vivify_441:
+ vivify_442:
set $P1366, $P1365["param_var"]
- unless_null $P1366, vivify_442
+ unless_null $P1366, vivify_443
$P1366 = root_new ['parrot';'Hash']
- vivify_442:
+ vivify_443:
set $P1367, $P1366["name"]
- unless_null $P1367, vivify_443
+ unless_null $P1367, vivify_444
new $P1367, "Undef"
- vivify_443:
+ vivify_444:
set $S1368, $P1367
$P1364."named"($S1368)
.annotate "line", 485
@@ -19971,25 +20114,25 @@
.namespace ["NQP";"Actions"]
-.sub "regex_declarator" :subid("80_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "regex_declarator" :subid("80_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1376
.param pmc param_1377 :optional
.param int has_param_1377 :opt_flag
.annotate "line", 488
- .const 'Sub' $P1447 = "82_1267204714.47172"
+ .const 'Sub' $P1447 = "82_1272816841.80681"
capture_lex $P1447
- .const 'Sub' $P1419 = "81_1267204714.47172"
+ .const 'Sub' $P1419 = "81_1272816841.80681"
capture_lex $P1419
new $P1375, 'ExceptionHandler'
set_addr $P1375, control_1374
- $P1375."handle_types"(58)
+ $P1375."handle_types"(57)
push_eh $P1375
.lex "self", self
.lex "$/", param_1376
- if has_param_1377, optparam_444
+ if has_param_1377, optparam_445
new $P1378, "Undef"
set param_1377, $P1378
- optparam_444:
+ optparam_445:
.lex "$key", param_1377
.annotate "line", 489
$P1379 = root_new ['parrot';'ResizablePMCArray']
@@ -20007,13 +20150,13 @@
store_lex "@MODIFIERS", $P1382
.annotate "line", 492
find_lex $P1383, "$/"
- unless_null $P1383, vivify_445
+ unless_null $P1383, vivify_446
$P1383 = root_new ['parrot';'Hash']
- vivify_445:
+ vivify_446:
set $P1384, $P1383["deflongname"]
- unless_null $P1384, vivify_446
+ unless_null $P1384, vivify_447
new $P1384, "Undef"
- vivify_446:
+ vivify_447:
$P1385 = $P1384."ast"()
set $S1386, $P1385
new $P1387, 'String'
@@ -20022,13 +20165,13 @@
find_lex $P1388, "$past"
.annotate "line", 494
find_lex $P1390, "$/"
- unless_null $P1390, vivify_447
+ unless_null $P1390, vivify_448
$P1390 = root_new ['parrot';'Hash']
- vivify_447:
+ vivify_448:
set $P1391, $P1390["proto"]
- unless_null $P1391, vivify_448
+ unless_null $P1391, vivify_449
new $P1391, "Undef"
- vivify_448:
+ vivify_449:
if $P1391, if_1389
.annotate "line", 521
find_lex $P1415, "$key"
@@ -20036,13 +20179,13 @@
iseq $I1417, $S1416, "open"
if $I1417, if_1414
.annotate "line", 534
- .const 'Sub' $P1447 = "82_1267204714.47172"
+ .const 'Sub' $P1447 = "82_1272816841.80681"
capture_lex $P1447
$P1447()
goto if_1414_end
if_1414:
.annotate "line", 521
- .const 'Sub' $P1419 = "81_1267204714.47172"
+ .const 'Sub' $P1419 = "81_1272816841.80681"
capture_lex $P1419
$P1419()
if_1414_end:
@@ -20099,20 +20242,20 @@
.namespace ["NQP";"Actions"]
-.sub "_block1446" :anon :subid("82_1267204714.47172") :outer("80_1267204714.47172")
+.sub "_block1446" :anon :subid("82_1272816841.80681") :outer("80_1272816841.80681")
.annotate "line", 535
new $P1448, "Undef"
.lex "$regex", $P1448
.annotate "line", 536
get_hll_global $P1449, ["Regex";"P6Regex";"Actions"], "buildsub"
find_lex $P1450, "$/"
- unless_null $P1450, vivify_449
+ unless_null $P1450, vivify_450
$P1450 = root_new ['parrot';'Hash']
- vivify_449:
+ vivify_450:
set $P1451, $P1450["p6regex"]
- unless_null $P1451, vivify_450
+ unless_null $P1451, vivify_451
new $P1451, "Undef"
- vivify_450:
+ vivify_451:
$P1452 = $P1451."ast"()
get_global $P1453, "@BLOCK"
$P1454 = $P1453."shift"()
@@ -20136,10 +20279,10 @@
.annotate "line", 545
find_lex $P1464, "$regex"
find_lex $P1465, "$past"
- unless_null $P1465, vivify_451
+ unless_null $P1465, vivify_452
$P1465 = root_new ['parrot';'Hash']
store_lex "$past", $P1465
- vivify_451:
+ vivify_452:
set $P1465["sink"], $P1464
.annotate "line", 546
find_lex $P1466, "@MODIFIERS"
@@ -20150,7 +20293,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1418" :anon :subid("81_1267204714.47172") :outer("80_1267204714.47172")
+.sub "_block1418" :anon :subid("81_1272816841.80681") :outer("80_1272816841.80681")
.annotate "line", 522
$P1420 = root_new ['parrot';'Hash']
.lex "%h", $P1420
@@ -20158,52 +20301,52 @@
find_lex $P1421, "%h"
.annotate "line", 523
find_lex $P1423, "$/"
- unless_null $P1423, vivify_452
+ unless_null $P1423, vivify_453
$P1423 = root_new ['parrot';'Hash']
- vivify_452:
+ vivify_453:
set $P1424, $P1423["sym"]
- unless_null $P1424, vivify_453
+ unless_null $P1424, vivify_454
new $P1424, "Undef"
- vivify_453:
+ vivify_454:
set $S1425, $P1424
iseq $I1426, $S1425, "token"
unless $I1426, if_1422_end
new $P1427, "Integer"
assign $P1427, 1
find_lex $P1428, "%h"
- unless_null $P1428, vivify_454
+ unless_null $P1428, vivify_455
$P1428 = root_new ['parrot';'Hash']
store_lex "%h", $P1428
- vivify_454:
+ vivify_455:
set $P1428["r"], $P1427
if_1422_end:
.annotate "line", 524
find_lex $P1430, "$/"
- unless_null $P1430, vivify_455
+ unless_null $P1430, vivify_456
$P1430 = root_new ['parrot';'Hash']
- vivify_455:
+ vivify_456:
set $P1431, $P1430["sym"]
- unless_null $P1431, vivify_456
+ unless_null $P1431, vivify_457
new $P1431, "Undef"
- vivify_456:
+ vivify_457:
set $S1432, $P1431
iseq $I1433, $S1432, "rule"
unless $I1433, if_1429_end
new $P1434, "Integer"
assign $P1434, 1
find_lex $P1435, "%h"
- unless_null $P1435, vivify_457
+ unless_null $P1435, vivify_458
$P1435 = root_new ['parrot';'Hash']
store_lex "%h", $P1435
- vivify_457:
+ vivify_458:
set $P1435["r"], $P1434
new $P1436, "Integer"
assign $P1436, 1
find_lex $P1437, "%h"
- unless_null $P1437, vivify_458
+ unless_null $P1437, vivify_459
$P1437 = root_new ['parrot';'Hash']
store_lex "%h", $P1437
- vivify_458:
+ vivify_459:
set $P1437["s"], $P1436
if_1429_end:
.annotate "line", 525
@@ -20217,27 +20360,27 @@
.annotate "line", 530
get_global $P1440, "@BLOCK"
- unless_null $P1440, vivify_459
+ unless_null $P1440, vivify_460
$P1440 = root_new ['parrot';'ResizablePMCArray']
- vivify_459:
+ vivify_460:
set $P1441, $P1440[0]
- unless_null $P1441, vivify_460
+ unless_null $P1441, vivify_461
new $P1441, "Undef"
- vivify_460:
+ vivify_461:
$P1441."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
.annotate "line", 531
get_global $P1442, "@BLOCK"
- unless_null $P1442, vivify_461
+ unless_null $P1442, vivify_462
$P1442 = root_new ['parrot';'ResizablePMCArray']
- vivify_461:
+ vivify_462:
set $P1443, $P1442[0]
- unless_null $P1443, vivify_462
+ unless_null $P1443, vivify_463
new $P1443, "Undef"
- vivify_462:
+ vivify_463:
$P1443."symbol"("$/", "lexical" :named("scope"))
.annotate "line", 532
new $P1444, "Exception"
- set $P1444['type'], 58
+ set $P1444['type'], 57
new $P1445, "Integer"
assign $P1445, 0
setattribute $P1444, 'payload', $P1445
@@ -20248,12 +20391,12 @@
.namespace ["NQP";"Actions"]
-.sub "dotty" :subid("83_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "dotty" :subid("83_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1475
.annotate "line", 552
new $P1474, 'ExceptionHandler'
set_addr $P1474, control_1473
- $P1474."handle_types"(58)
+ $P1474."handle_types"(57)
push_eh $P1474
.lex "self", self
.lex "$/", param_1475
@@ -20261,13 +20404,13 @@
new $P1476, "Undef"
.lex "$past", $P1476
find_lex $P1479, "$/"
- unless_null $P1479, vivify_463
+ unless_null $P1479, vivify_464
$P1479 = root_new ['parrot';'Hash']
- vivify_463:
+ vivify_464:
set $P1480, $P1479["args"]
- unless_null $P1480, vivify_464
+ unless_null $P1480, vivify_465
new $P1480, "Undef"
- vivify_464:
+ vivify_465:
if $P1480, if_1478
get_hll_global $P1485, ["PAST"], "Op"
find_lex $P1486, "$/"
@@ -20276,17 +20419,17 @@
goto if_1478_end
if_1478:
find_lex $P1481, "$/"
- unless_null $P1481, vivify_465
+ unless_null $P1481, vivify_466
$P1481 = root_new ['parrot';'Hash']
- vivify_465:
+ vivify_466:
set $P1482, $P1481["args"]
- unless_null $P1482, vivify_466
+ unless_null $P1482, vivify_467
$P1482 = root_new ['parrot';'ResizablePMCArray']
- vivify_466:
+ vivify_467:
set $P1483, $P1482[0]
- unless_null $P1483, vivify_467
+ unless_null $P1483, vivify_468
new $P1483, "Undef"
- vivify_467:
+ vivify_468:
$P1484 = $P1483."ast"()
set $P1477, $P1484
if_1478_end:
@@ -20294,35 +20437,35 @@
.annotate "line", 554
find_lex $P1488, "$past"
find_lex $P1491, "$/"
- unless_null $P1491, vivify_468
+ unless_null $P1491, vivify_469
$P1491 = root_new ['parrot';'Hash']
- vivify_468:
+ vivify_469:
set $P1492, $P1491["quote"]
- unless_null $P1492, vivify_469
+ unless_null $P1492, vivify_470
new $P1492, "Undef"
- vivify_469:
+ vivify_470:
if $P1492, if_1490
find_lex $P1496, "$/"
- unless_null $P1496, vivify_470
+ unless_null $P1496, vivify_471
$P1496 = root_new ['parrot';'Hash']
- vivify_470:
+ vivify_471:
set $P1497, $P1496["longname"]
- unless_null $P1497, vivify_471
+ unless_null $P1497, vivify_472
new $P1497, "Undef"
- vivify_471:
+ vivify_472:
set $S1498, $P1497
new $P1489, 'String'
set $P1489, $S1498
goto if_1490_end
if_1490:
find_lex $P1493, "$/"
- unless_null $P1493, vivify_472
+ unless_null $P1493, vivify_473
$P1493 = root_new ['parrot';'Hash']
- vivify_472:
+ vivify_473:
set $P1494, $P1493["quote"]
- unless_null $P1494, vivify_473
+ unless_null $P1494, vivify_474
new $P1494, "Undef"
- vivify_473:
+ vivify_474:
$P1495 = $P1494."ast"()
set $P1489, $P1495
if_1490_end:
@@ -20345,12 +20488,12 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<self>" :subid("84_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<self>" :subid("84_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1507
.annotate "line", 561
new $P1506, 'ExceptionHandler'
set_addr $P1506, control_1505
- $P1506."handle_types"(58)
+ $P1506."handle_types"(57)
push_eh $P1506
.lex "self", self
.lex "$/", param_1507
@@ -20370,12 +20513,12 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>" :subid("85_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<identifier>" :subid("85_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1516
.annotate "line", 565
new $P1515, 'ExceptionHandler'
set_addr $P1515, control_1514
- $P1515."handle_types"(58)
+ $P1515."handle_types"(57)
push_eh $P1515
.lex "self", self
.lex "$/", param_1516
@@ -20383,25 +20526,25 @@
new $P1517, "Undef"
.lex "$past", $P1517
find_lex $P1518, "$/"
- unless_null $P1518, vivify_474
+ unless_null $P1518, vivify_475
$P1518 = root_new ['parrot';'Hash']
- vivify_474:
+ vivify_475:
set $P1519, $P1518["args"]
- unless_null $P1519, vivify_475
+ unless_null $P1519, vivify_476
new $P1519, "Undef"
- vivify_475:
+ vivify_476:
$P1520 = $P1519."ast"()
store_lex "$past", $P1520
.annotate "line", 567
find_lex $P1521, "$past"
find_lex $P1522, "$/"
- unless_null $P1522, vivify_476
+ unless_null $P1522, vivify_477
$P1522 = root_new ['parrot';'Hash']
- vivify_476:
+ vivify_477:
set $P1523, $P1522["identifier"]
- unless_null $P1523, vivify_477
+ unless_null $P1523, vivify_478
new $P1523, "Undef"
- vivify_477:
+ vivify_478:
set $S1524, $P1523
$P1521."name"($S1524)
.annotate "line", 568
@@ -20419,12 +20562,12 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<name>" :subid("86_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<name>" :subid("86_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1532
.annotate "line", 571
new $P1531, 'ExceptionHandler'
set_addr $P1531, control_1530
- $P1531."handle_types"(58)
+ $P1531."handle_types"(57)
push_eh $P1531
.lex "self", self
.lex "$/", param_1532
@@ -20442,17 +20585,17 @@
.lex "$past", $P1536
.annotate "line", 572
find_lex $P1537, "$/"
- unless_null $P1537, vivify_478
+ unless_null $P1537, vivify_479
$P1537 = root_new ['parrot';'Hash']
- vivify_478:
+ vivify_479:
set $P1538, $P1537["name"]
- unless_null $P1538, vivify_479
+ unless_null $P1538, vivify_480
$P1538 = root_new ['parrot';'Hash']
- vivify_479:
+ vivify_480:
set $P1539, $P1538["identifier"]
- unless_null $P1539, vivify_480
+ unless_null $P1539, vivify_481
new $P1539, "Undef"
- vivify_480:
+ vivify_481:
clone $P1540, $P1539
store_lex "@ns", $P1540
.annotate "line", 573
@@ -20466,13 +20609,13 @@
goto if_1545_end
if_1545:
find_lex $P1547, "@ns"
- unless_null $P1547, vivify_481
+ unless_null $P1547, vivify_482
$P1547 = root_new ['parrot';'ResizablePMCArray']
- vivify_481:
+ vivify_482:
set $P1548, $P1547[0]
- unless_null $P1548, vivify_482
+ unless_null $P1548, vivify_483
new $P1548, "Undef"
- vivify_482:
+ vivify_483:
set $S1549, $P1548
iseq $I1550, $S1549, "GLOBAL"
new $P1544, 'Integer'
@@ -20494,27 +20637,27 @@
store_lex "$past", $P1557
.annotate "line", 578
find_lex $P1559, "$/"
- unless_null $P1559, vivify_483
+ unless_null $P1559, vivify_484
$P1559 = root_new ['parrot';'Hash']
- vivify_483:
+ vivify_484:
set $P1560, $P1559["args"]
- unless_null $P1560, vivify_484
+ unless_null $P1560, vivify_485
new $P1560, "Undef"
- vivify_484:
+ vivify_485:
unless $P1560, if_1558_end
.annotate "line", 579
find_lex $P1561, "$/"
- unless_null $P1561, vivify_485
+ unless_null $P1561, vivify_486
$P1561 = root_new ['parrot';'Hash']
- vivify_485:
+ vivify_486:
set $P1562, $P1561["args"]
- unless_null $P1562, vivify_486
+ unless_null $P1562, vivify_487
$P1562 = root_new ['parrot';'ResizablePMCArray']
- vivify_486:
+ vivify_487:
set $P1563, $P1562[0]
- unless_null $P1563, vivify_487
+ unless_null $P1563, vivify_488
new $P1563, "Undef"
- vivify_487:
+ vivify_488:
$P1564 = $P1563."ast"()
store_lex "$past", $P1564
.annotate "line", 580
@@ -20537,12 +20680,12 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>" :subid("87_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<pir::op>" :subid("87_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1574
.annotate "line", 585
new $P1573, 'ExceptionHandler'
set_addr $P1573, control_1572
- $P1573."handle_types"(58)
+ $P1573."handle_types"(57)
push_eh $P1573
.lex "self", self
.lex "$/", param_1574
@@ -20554,13 +20697,13 @@
.lex "$pirop", $P1576
.annotate "line", 586
find_lex $P1579, "$/"
- unless_null $P1579, vivify_488
+ unless_null $P1579, vivify_489
$P1579 = root_new ['parrot';'Hash']
- vivify_488:
+ vivify_489:
set $P1580, $P1579["args"]
- unless_null $P1580, vivify_489
+ unless_null $P1580, vivify_490
new $P1580, "Undef"
- vivify_489:
+ vivify_490:
if $P1580, if_1578
get_hll_global $P1585, ["PAST"], "Op"
find_lex $P1586, "$/"
@@ -20569,30 +20712,30 @@
goto if_1578_end
if_1578:
find_lex $P1581, "$/"
- unless_null $P1581, vivify_490
+ unless_null $P1581, vivify_491
$P1581 = root_new ['parrot';'Hash']
- vivify_490:
+ vivify_491:
set $P1582, $P1581["args"]
- unless_null $P1582, vivify_491
+ unless_null $P1582, vivify_492
$P1582 = root_new ['parrot';'ResizablePMCArray']
- vivify_491:
+ vivify_492:
set $P1583, $P1582[0]
- unless_null $P1583, vivify_492
+ unless_null $P1583, vivify_493
new $P1583, "Undef"
- vivify_492:
+ vivify_493:
$P1584 = $P1583."ast"()
set $P1577, $P1584
if_1578_end:
store_lex "$past", $P1577
.annotate "line", 587
find_lex $P1588, "$/"
- unless_null $P1588, vivify_493
+ unless_null $P1588, vivify_494
$P1588 = root_new ['parrot';'Hash']
- vivify_493:
+ vivify_494:
set $P1589, $P1588["op"]
- unless_null $P1589, vivify_494
+ unless_null $P1589, vivify_495
new $P1589, "Undef"
- vivify_494:
+ vivify_495:
set $S1590, $P1589
new $P1591, 'String'
set $P1591, $S1590
@@ -20628,24 +20771,24 @@
.namespace ["NQP";"Actions"]
-.sub "args" :subid("88_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "args" :subid("88_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1603
.annotate "line", 600
new $P1602, 'ExceptionHandler'
set_addr $P1602, control_1601
- $P1602."handle_types"(58)
+ $P1602."handle_types"(57)
push_eh $P1602
.lex "self", self
.lex "$/", param_1603
find_lex $P1604, "$/"
find_lex $P1605, "$/"
- unless_null $P1605, vivify_495
+ unless_null $P1605, vivify_496
$P1605 = root_new ['parrot';'Hash']
- vivify_495:
+ vivify_496:
set $P1606, $P1605["arglist"]
- unless_null $P1606, vivify_496
+ unless_null $P1606, vivify_497
new $P1606, "Undef"
- vivify_496:
+ vivify_497:
$P1607 = $P1606."ast"()
$P1608 = $P1604."!make"($P1607)
.return ($P1608)
@@ -20658,14 +20801,14 @@
.namespace ["NQP";"Actions"]
-.sub "arglist" :subid("89_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "arglist" :subid("89_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1613
.annotate "line", 602
- .const 'Sub' $P1624 = "90_1267204714.47172"
+ .const 'Sub' $P1624 = "90_1272816841.80681"
capture_lex $P1624
new $P1612, 'ExceptionHandler'
set_addr $P1612, control_1611
- $P1612."handle_types"(58)
+ $P1612."handle_types"(57)
push_eh $P1612
.lex "self", self
.lex "$/", param_1613
@@ -20685,15 +20828,15 @@
store_lex "$past", $P1619
.annotate "line", 604
find_lex $P1621, "$/"
- unless_null $P1621, vivify_497
+ unless_null $P1621, vivify_498
$P1621 = root_new ['parrot';'Hash']
- vivify_497:
+ vivify_498:
set $P1622, $P1621["EXPR"]
- unless_null $P1622, vivify_498
+ unless_null $P1622, vivify_499
new $P1622, "Undef"
- vivify_498:
+ vivify_499:
unless $P1622, if_1620_end
- .const 'Sub' $P1624 = "90_1267204714.47172"
+ .const 'Sub' $P1624 = "90_1272816841.80681"
capture_lex $P1624
$P1624()
if_1620_end:
@@ -20711,7 +20854,7 @@
.annotate "line", 613
new $P1688, 'ExceptionHandler'
set_addr $P1688, loop1687_handler
- $P1688."handle_types"(65, 67, 66)
+ $P1688."handle_types"(64, 66, 65)
push_eh $P1688
loop1687_test:
find_lex $P1661, "$i"
@@ -20725,13 +20868,13 @@
find_lex $P1667, "$i"
set $I1668, $P1667
find_lex $P1669, "$past"
- unless_null $P1669, vivify_502
+ unless_null $P1669, vivify_503
$P1669 = root_new ['parrot';'ResizablePMCArray']
- vivify_502:
+ vivify_503:
set $P1670, $P1669[$I1668]
- unless_null $P1670, vivify_503
+ unless_null $P1670, vivify_504
new $P1670, "Undef"
- vivify_503:
+ vivify_504:
$S1671 = $P1670."name"()
iseq $I1672, $S1671, "&prefix:<|>"
unless $I1672, if_1666_end
@@ -20739,36 +20882,36 @@
find_lex $P1673, "$i"
set $I1674, $P1673
find_lex $P1675, "$past"
- unless_null $P1675, vivify_504
+ unless_null $P1675, vivify_505
$P1675 = root_new ['parrot';'ResizablePMCArray']
- vivify_504:
+ vivify_505:
set $P1676, $P1675[$I1674]
- unless_null $P1676, vivify_505
+ unless_null $P1676, vivify_506
$P1676 = root_new ['parrot';'ResizablePMCArray']
- vivify_505:
+ vivify_506:
set $P1677, $P1676[0]
- unless_null $P1677, vivify_506
+ unless_null $P1677, vivify_507
new $P1677, "Undef"
- vivify_506:
+ vivify_507:
find_lex $P1678, "$i"
set $I1679, $P1678
find_lex $P1680, "$past"
- unless_null $P1680, vivify_507
+ unless_null $P1680, vivify_508
$P1680 = root_new ['parrot';'ResizablePMCArray']
store_lex "$past", $P1680
- vivify_507:
+ vivify_508:
set $P1680[$I1679], $P1677
.annotate "line", 616
find_lex $P1681, "$i"
set $I1682, $P1681
find_lex $P1683, "$past"
- unless_null $P1683, vivify_508
+ unless_null $P1683, vivify_509
$P1683 = root_new ['parrot';'ResizablePMCArray']
- vivify_508:
+ vivify_509:
set $P1684, $P1683[$I1682]
- unless_null $P1684, vivify_509
+ unless_null $P1684, vivify_510
new $P1684, "Undef"
- vivify_509:
+ vivify_510:
$P1684."flat"(1)
if_1666_end:
.annotate "line", 614
@@ -20782,8 +20925,8 @@
.local pmc exception
.get_results (exception)
getattribute $P1689, exception, 'type'
- eq $P1689, 65, loop1687_next
- eq $P1689, 67, loop1687_redo
+ eq $P1689, 64, loop1687_next
+ eq $P1689, 66, loop1687_redo
loop1687_done:
pop_eh
.annotate "line", 620
@@ -20801,21 +20944,21 @@
.namespace ["NQP";"Actions"]
-.sub "_block1623" :anon :subid("90_1267204714.47172") :outer("89_1267204714.47172")
+.sub "_block1623" :anon :subid("90_1272816841.80681") :outer("89_1272816841.80681")
.annotate "line", 604
- .const 'Sub' $P1645 = "91_1267204714.47172"
+ .const 'Sub' $P1645 = "91_1272816841.80681"
capture_lex $P1645
.annotate "line", 605
new $P1625, "Undef"
.lex "$expr", $P1625
find_lex $P1626, "$/"
- unless_null $P1626, vivify_499
+ unless_null $P1626, vivify_500
$P1626 = root_new ['parrot';'Hash']
- vivify_499:
+ vivify_500:
set $P1627, $P1626["EXPR"]
- unless_null $P1627, vivify_500
+ unless_null $P1627, vivify_501
new $P1627, "Undef"
- vivify_500:
+ vivify_501:
$P1628 = $P1627."ast"()
store_lex "$expr", $P1628
.annotate "line", 606
@@ -20846,17 +20989,17 @@
find_lex $P1640, "$expr"
$P1641 = $P1640."list"()
defined $I1642, $P1641
- unless $I1642, for_undef_501
+ unless $I1642, for_undef_502
iter $P1639, $P1641
new $P1651, 'ExceptionHandler'
set_addr $P1651, loop1650_handler
- $P1651."handle_types"(65, 67, 66)
+ $P1651."handle_types"(64, 66, 65)
push_eh $P1651
loop1650_test:
unless $P1639, loop1650_done
shift $P1643, $P1639
loop1650_redo:
- .const 'Sub' $P1645 = "91_1267204714.47172"
+ .const 'Sub' $P1645 = "91_1272816841.80681"
capture_lex $P1645
$P1645($P1643)
loop1650_next:
@@ -20865,11 +21008,11 @@
.local pmc exception
.get_results (exception)
getattribute $P1652, exception, 'type'
- eq $P1652, 65, loop1650_next
- eq $P1652, 67, loop1650_redo
+ eq $P1652, 64, loop1650_next
+ eq $P1652, 66, loop1650_redo
loop1650_done:
pop_eh
- for_undef_501:
+ for_undef_502:
.annotate "line", 606
set $P1629, $P1639
if_1630_end:
@@ -20879,7 +21022,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1644" :anon :subid("91_1267204714.47172") :outer("90_1267204714.47172")
+.sub "_block1644" :anon :subid("91_1272816841.80681") :outer("90_1272816841.80681")
.param pmc param_1646
.annotate "line", 607
.lex "$_", param_1646
@@ -20891,24 +21034,24 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<value>" :subid("92_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<value>" :subid("92_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1697
.annotate "line", 624
new $P1696, 'ExceptionHandler'
set_addr $P1696, control_1695
- $P1696."handle_types"(58)
+ $P1696."handle_types"(57)
push_eh $P1696
.lex "self", self
.lex "$/", param_1697
find_lex $P1698, "$/"
find_lex $P1699, "$/"
- unless_null $P1699, vivify_510
+ unless_null $P1699, vivify_511
$P1699 = root_new ['parrot';'Hash']
- vivify_510:
+ vivify_511:
set $P1700, $P1699["value"]
- unless_null $P1700, vivify_511
+ unless_null $P1700, vivify_512
new $P1700, "Undef"
- vivify_511:
+ vivify_512:
$P1701 = $P1700."ast"()
$P1702 = $P1698."!make"($P1701)
.return ($P1702)
@@ -20921,12 +21064,12 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>" :subid("93_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<( )>" :subid("93_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1707
.annotate "line", 626
new $P1706, 'ExceptionHandler'
set_addr $P1706, control_1705
- $P1706."handle_types"(58)
+ $P1706."handle_types"(57)
push_eh $P1706
.lex "self", self
.lex "$/", param_1707
@@ -20934,13 +21077,13 @@
find_lex $P1708, "$/"
.annotate "line", 628
find_lex $P1711, "$/"
- unless_null $P1711, vivify_512
+ unless_null $P1711, vivify_513
$P1711 = root_new ['parrot';'Hash']
- vivify_512:
+ vivify_513:
set $P1712, $P1711["EXPR"]
- unless_null $P1712, vivify_513
+ unless_null $P1712, vivify_514
new $P1712, "Undef"
- vivify_513:
+ vivify_514:
if $P1712, if_1710
.annotate "line", 629
get_hll_global $P1717, ["PAST"], "Op"
@@ -20951,17 +21094,17 @@
goto if_1710_end
if_1710:
find_lex $P1713, "$/"
- unless_null $P1713, vivify_514
+ unless_null $P1713, vivify_515
$P1713 = root_new ['parrot';'Hash']
- vivify_514:
+ vivify_515:
set $P1714, $P1713["EXPR"]
- unless_null $P1714, vivify_515
+ unless_null $P1714, vivify_516
$P1714 = root_new ['parrot';'ResizablePMCArray']
- vivify_515:
+ vivify_516:
set $P1715, $P1714[0]
- unless_null $P1715, vivify_516
+ unless_null $P1715, vivify_517
new $P1715, "Undef"
- vivify_516:
+ vivify_517:
$P1716 = $P1715."ast"()
set $P1709, $P1716
if_1710_end:
@@ -20977,12 +21120,12 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>" :subid("94_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<[ ]>" :subid("94_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1725
.annotate "line", 632
new $P1724, 'ExceptionHandler'
set_addr $P1724, control_1723
- $P1724."handle_types"(58)
+ $P1724."handle_types"(57)
push_eh $P1724
.lex "self", self
.lex "$/", param_1725
@@ -20993,13 +21136,13 @@
find_lex $P1727, "$past"
.annotate "line", 634
find_lex $P1729, "$/"
- unless_null $P1729, vivify_517
+ unless_null $P1729, vivify_518
$P1729 = root_new ['parrot';'Hash']
- vivify_517:
+ vivify_518:
set $P1730, $P1729["EXPR"]
- unless_null $P1730, vivify_518
+ unless_null $P1730, vivify_519
new $P1730, "Undef"
- vivify_518:
+ vivify_519:
if $P1730, if_1728
.annotate "line", 641
get_hll_global $P1742, ["PAST"], "Op"
@@ -21010,17 +21153,17 @@
if_1728:
.annotate "line", 635
find_lex $P1731, "$/"
- unless_null $P1731, vivify_519
+ unless_null $P1731, vivify_520
$P1731 = root_new ['parrot';'Hash']
- vivify_519:
+ vivify_520:
set $P1732, $P1731["EXPR"]
- unless_null $P1732, vivify_520
+ unless_null $P1732, vivify_521
$P1732 = root_new ['parrot';'ResizablePMCArray']
- vivify_520:
+ vivify_521:
set $P1733, $P1732[0]
- unless_null $P1733, vivify_521
+ unless_null $P1733, vivify_522
new $P1733, "Undef"
- vivify_521:
+ vivify_522:
$P1734 = $P1733."ast"()
store_lex "$past", $P1734
.annotate "line", 636
@@ -21053,24 +21196,24 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>" :subid("95_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<ang>" :subid("95_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1752
.annotate "line", 647
new $P1751, 'ExceptionHandler'
set_addr $P1751, control_1750
- $P1751."handle_types"(58)
+ $P1751."handle_types"(57)
push_eh $P1751
.lex "self", self
.lex "$/", param_1752
find_lex $P1753, "$/"
find_lex $P1754, "$/"
- unless_null $P1754, vivify_522
+ unless_null $P1754, vivify_523
$P1754 = root_new ['parrot';'Hash']
- vivify_522:
+ vivify_523:
set $P1755, $P1754["quote_EXPR"]
- unless_null $P1755, vivify_523
+ unless_null $P1755, vivify_524
new $P1755, "Undef"
- vivify_523:
+ vivify_524:
$P1756 = $P1755."ast"()
$P1757 = $P1753."!make"($P1756)
.return ($P1757)
@@ -21083,24 +21226,24 @@
.namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("96_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("96_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1762
.annotate "line", 648
new $P1761, 'ExceptionHandler'
set_addr $P1761, control_1760
- $P1761."handle_types"(58)
+ $P1761."handle_types"(57)
push_eh $P1761
.lex "self", self
.lex "$/", param_1762
find_lex $P1763, "$/"
find_lex $P1764, "$/"
- unless_null $P1764, vivify_524
+ unless_null $P1764, vivify_525
$P1764 = root_new ['parrot';'Hash']
- vivify_524:
+ vivify_525:
set $P1765, $P1764["quote_EXPR"]
- unless_null $P1765, vivify_525
+ unless_null $P1765, vivify_526
new $P1765, "Undef"
- vivify_525:
+ vivify_526:
$P1766 = $P1765."ast"()
$P1767 = $P1763."!make"($P1766)
.return ($P1767)
@@ -21113,37 +21256,37 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>" :subid("97_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<{ }>" :subid("97_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1772
.annotate "line", 650
new $P1771, 'ExceptionHandler'
set_addr $P1771, control_1770
- $P1771."handle_types"(58)
+ $P1771."handle_types"(57)
push_eh $P1771
.lex "self", self
.lex "$/", param_1772
.annotate "line", 651
find_lex $P1773, "$/"
find_lex $P1776, "$/"
- unless_null $P1776, vivify_526
+ unless_null $P1776, vivify_527
$P1776 = root_new ['parrot';'Hash']
- vivify_526:
+ vivify_527:
set $P1777, $P1776["pblock"]
- unless_null $P1777, vivify_527
+ unless_null $P1777, vivify_528
$P1777 = root_new ['parrot';'Hash']
- vivify_527:
+ vivify_528:
set $P1778, $P1777["blockoid"]
- unless_null $P1778, vivify_528
+ unless_null $P1778, vivify_529
$P1778 = root_new ['parrot';'Hash']
- vivify_528:
+ vivify_529:
set $P1779, $P1778["statementlist"]
- unless_null $P1779, vivify_529
+ unless_null $P1779, vivify_530
$P1779 = root_new ['parrot';'Hash']
- vivify_529:
+ vivify_530:
set $P1780, $P1779["statement"]
- unless_null $P1780, vivify_530
+ unless_null $P1780, vivify_531
new $P1780, "Undef"
- vivify_530:
+ vivify_531:
set $N1781, $P1780
isgt $I1782, $N1781, 0.0
if $I1782, if_1775
@@ -21155,13 +21298,13 @@
if_1775:
.annotate "line", 652
find_lex $P1783, "$/"
- unless_null $P1783, vivify_531
+ unless_null $P1783, vivify_532
$P1783 = root_new ['parrot';'Hash']
- vivify_531:
+ vivify_532:
set $P1784, $P1783["pblock"]
- unless_null $P1784, vivify_532
+ unless_null $P1784, vivify_533
new $P1784, "Undef"
- vivify_532:
+ vivify_533:
$P1785 = $P1784."ast"()
set $P1774, $P1785
if_1775_end:
@@ -21177,12 +21320,12 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>" :subid("98_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<sigil>" :subid("98_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1792
.annotate "line", 656
new $P1791, 'ExceptionHandler'
set_addr $P1791, control_1790
- $P1791."handle_types"(58)
+ $P1791."handle_types"(57)
push_eh $P1791
.lex "self", self
.lex "$/", param_1792
@@ -21190,25 +21333,25 @@
new $P1793, "Undef"
.lex "$name", $P1793
find_lex $P1796, "$/"
- unless_null $P1796, vivify_533
+ unless_null $P1796, vivify_534
$P1796 = root_new ['parrot';'Hash']
- vivify_533:
+ vivify_534:
set $P1797, $P1796["sigil"]
- unless_null $P1797, vivify_534
+ unless_null $P1797, vivify_535
new $P1797, "Undef"
- vivify_534:
+ vivify_535:
set $S1798, $P1797
iseq $I1799, $S1798, "@"
if $I1799, if_1795
.annotate "line", 658
find_lex $P1803, "$/"
- unless_null $P1803, vivify_535
+ unless_null $P1803, vivify_536
$P1803 = root_new ['parrot';'Hash']
- vivify_535:
+ vivify_536:
set $P1804, $P1803["sigil"]
- unless_null $P1804, vivify_536
+ unless_null $P1804, vivify_537
new $P1804, "Undef"
- vivify_536:
+ vivify_537:
set $S1805, $P1804
iseq $I1806, $S1805, "%"
if $I1806, if_1802
@@ -21235,13 +21378,13 @@
get_hll_global $P1810, ["PAST"], "Op"
find_lex $P1811, "$name"
find_lex $P1812, "$/"
- unless_null $P1812, vivify_537
+ unless_null $P1812, vivify_538
$P1812 = root_new ['parrot';'Hash']
- vivify_537:
+ vivify_538:
set $P1813, $P1812["semilist"]
- unless_null $P1813, vivify_538
+ unless_null $P1813, vivify_539
new $P1813, "Undef"
- vivify_538:
+ vivify_539:
$P1814 = $P1813."ast"()
$P1815 = $P1810."new"($P1814, "callmethod" :named("pasttype"), $P1811 :named("name"))
$P1816 = $P1809."!make"($P1815)
@@ -21256,24 +21399,24 @@
.namespace ["NQP";"Actions"]
-.sub "semilist" :subid("99_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "semilist" :subid("99_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1821
.annotate "line", 663
new $P1820, 'ExceptionHandler'
set_addr $P1820, control_1819
- $P1820."handle_types"(58)
+ $P1820."handle_types"(57)
push_eh $P1820
.lex "self", self
.lex "$/", param_1821
find_lex $P1822, "$/"
find_lex $P1823, "$/"
- unless_null $P1823, vivify_539
+ unless_null $P1823, vivify_540
$P1823 = root_new ['parrot';'Hash']
- vivify_539:
+ vivify_540:
set $P1824, $P1823["statement"]
- unless_null $P1824, vivify_540
+ unless_null $P1824, vivify_541
new $P1824, "Undef"
- vivify_540:
+ vivify_541:
$P1825 = $P1824."ast"()
$P1826 = $P1822."!make"($P1825)
.return ($P1826)
@@ -21286,12 +21429,12 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>" :subid("100_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<[ ]>" :subid("100_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1831
.annotate "line", 665
new $P1830, 'ExceptionHandler'
set_addr $P1830, control_1829
- $P1830."handle_types"(58)
+ $P1830."handle_types"(57)
push_eh $P1830
.lex "self", self
.lex "$/", param_1831
@@ -21299,13 +21442,13 @@
find_lex $P1832, "$/"
get_hll_global $P1833, ["PAST"], "Var"
find_lex $P1834, "$/"
- unless_null $P1834, vivify_541
+ unless_null $P1834, vivify_542
$P1834 = root_new ['parrot';'Hash']
- vivify_541:
+ vivify_542:
set $P1835, $P1834["EXPR"]
- unless_null $P1835, vivify_542
+ unless_null $P1835, vivify_543
new $P1835, "Undef"
- vivify_542:
+ vivify_543:
$P1836 = $P1835."ast"()
.annotate "line", 668
$P1837 = "vivitype"("@")
@@ -21323,12 +21466,12 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>" :subid("101_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<{ }>" :subid("101_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1844
.annotate "line", 671
new $P1843, 'ExceptionHandler'
set_addr $P1843, control_1842
- $P1843."handle_types"(58)
+ $P1843."handle_types"(57)
push_eh $P1843
.lex "self", self
.lex "$/", param_1844
@@ -21336,13 +21479,13 @@
find_lex $P1845, "$/"
get_hll_global $P1846, ["PAST"], "Var"
find_lex $P1847, "$/"
- unless_null $P1847, vivify_543
+ unless_null $P1847, vivify_544
$P1847 = root_new ['parrot';'Hash']
- vivify_543:
+ vivify_544:
set $P1848, $P1847["EXPR"]
- unless_null $P1848, vivify_544
+ unless_null $P1848, vivify_545
new $P1848, "Undef"
- vivify_544:
+ vivify_545:
$P1849 = $P1848."ast"()
.annotate "line", 674
$P1850 = "vivitype"("%")
@@ -21360,12 +21503,12 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>" :subid("102_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<ang>" :subid("102_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1857
.annotate "line", 677
new $P1856, 'ExceptionHandler'
set_addr $P1856, control_1855
- $P1856."handle_types"(58)
+ $P1856."handle_types"(57)
push_eh $P1856
.lex "self", self
.lex "$/", param_1857
@@ -21373,13 +21516,13 @@
find_lex $P1858, "$/"
get_hll_global $P1859, ["PAST"], "Var"
find_lex $P1860, "$/"
- unless_null $P1860, vivify_545
+ unless_null $P1860, vivify_546
$P1860 = root_new ['parrot';'Hash']
- vivify_545:
+ vivify_546:
set $P1861, $P1860["quote_EXPR"]
- unless_null $P1861, vivify_546
+ unless_null $P1861, vivify_547
new $P1861, "Undef"
- vivify_546:
+ vivify_547:
$P1862 = $P1861."ast"()
.annotate "line", 680
$P1863 = "vivitype"("%")
@@ -21397,25 +21540,25 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>" :subid("103_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<( )>" :subid("103_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1870
.annotate "line", 683
new $P1869, 'ExceptionHandler'
set_addr $P1869, control_1868
- $P1869."handle_types"(58)
+ $P1869."handle_types"(57)
push_eh $P1869
.lex "self", self
.lex "$/", param_1870
.annotate "line", 684
find_lex $P1871, "$/"
find_lex $P1872, "$/"
- unless_null $P1872, vivify_547
+ unless_null $P1872, vivify_548
$P1872 = root_new ['parrot';'Hash']
- vivify_547:
+ vivify_548:
set $P1873, $P1872["arglist"]
- unless_null $P1873, vivify_548
+ unless_null $P1873, vivify_549
new $P1873, "Undef"
- vivify_548:
+ vivify_549:
$P1874 = $P1873."ast"()
$P1875 = $P1871."!make"($P1874)
.annotate "line", 683
@@ -21429,46 +21572,46 @@
.namespace ["NQP";"Actions"]
-.sub "value" :subid("104_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "value" :subid("104_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1880
.annotate "line", 687
new $P1879, 'ExceptionHandler'
set_addr $P1879, control_1878
- $P1879."handle_types"(58)
+ $P1879."handle_types"(57)
push_eh $P1879
.lex "self", self
.lex "$/", param_1880
.annotate "line", 688
find_lex $P1881, "$/"
find_lex $P1884, "$/"
- unless_null $P1884, vivify_549
+ unless_null $P1884, vivify_550
$P1884 = root_new ['parrot';'Hash']
- vivify_549:
+ vivify_550:
set $P1885, $P1884["quote"]
- unless_null $P1885, vivify_550
+ unless_null $P1885, vivify_551
new $P1885, "Undef"
- vivify_550:
+ vivify_551:
if $P1885, if_1883
find_lex $P1889, "$/"
- unless_null $P1889, vivify_551
+ unless_null $P1889, vivify_552
$P1889 = root_new ['parrot';'Hash']
- vivify_551:
+ vivify_552:
set $P1890, $P1889["number"]
- unless_null $P1890, vivify_552
+ unless_null $P1890, vivify_553
new $P1890, "Undef"
- vivify_552:
+ vivify_553:
$P1891 = $P1890."ast"()
set $P1882, $P1891
goto if_1883_end
if_1883:
find_lex $P1886, "$/"
- unless_null $P1886, vivify_553
+ unless_null $P1886, vivify_554
$P1886 = root_new ['parrot';'Hash']
- vivify_553:
+ vivify_554:
set $P1887, $P1886["quote"]
- unless_null $P1887, vivify_554
+ unless_null $P1887, vivify_555
new $P1887, "Undef"
- vivify_554:
+ vivify_555:
$P1888 = $P1887."ast"()
set $P1882, $P1888
if_1883_end:
@@ -21484,12 +21627,12 @@
.namespace ["NQP";"Actions"]
-.sub "number" :subid("105_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "number" :subid("105_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1897
.annotate "line", 691
new $P1896, 'ExceptionHandler'
set_addr $P1896, control_1895
- $P1896."handle_types"(58)
+ $P1896."handle_types"(57)
push_eh $P1896
.lex "self", self
.lex "$/", param_1897
@@ -21497,47 +21640,47 @@
new $P1898, "Undef"
.lex "$value", $P1898
find_lex $P1901, "$/"
- unless_null $P1901, vivify_555
+ unless_null $P1901, vivify_556
$P1901 = root_new ['parrot';'Hash']
- vivify_555:
+ vivify_556:
set $P1902, $P1901["dec_number"]
- unless_null $P1902, vivify_556
+ unless_null $P1902, vivify_557
new $P1902, "Undef"
- vivify_556:
+ vivify_557:
if $P1902, if_1900
find_lex $P1906, "$/"
- unless_null $P1906, vivify_557
+ unless_null $P1906, vivify_558
$P1906 = root_new ['parrot';'Hash']
- vivify_557:
+ vivify_558:
set $P1907, $P1906["integer"]
- unless_null $P1907, vivify_558
+ unless_null $P1907, vivify_559
new $P1907, "Undef"
- vivify_558:
+ vivify_559:
$P1908 = $P1907."ast"()
set $P1899, $P1908
goto if_1900_end
if_1900:
find_lex $P1903, "$/"
- unless_null $P1903, vivify_559
+ unless_null $P1903, vivify_560
$P1903 = root_new ['parrot';'Hash']
- vivify_559:
+ vivify_560:
set $P1904, $P1903["dec_number"]
- unless_null $P1904, vivify_560
+ unless_null $P1904, vivify_561
new $P1904, "Undef"
- vivify_560:
+ vivify_561:
$P1905 = $P1904."ast"()
set $P1899, $P1905
if_1900_end:
store_lex "$value", $P1899
.annotate "line", 693
find_lex $P1910, "$/"
- unless_null $P1910, vivify_561
+ unless_null $P1910, vivify_562
$P1910 = root_new ['parrot';'Hash']
- vivify_561:
+ vivify_562:
set $P1911, $P1910["sign"]
- unless_null $P1911, vivify_562
+ unless_null $P1911, vivify_563
new $P1911, "Undef"
- vivify_562:
+ vivify_563:
set $S1912, $P1911
iseq $I1913, $S1912, "-"
unless $I1913, if_1909_end
@@ -21562,24 +21705,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>" :subid("106_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<apos>" :subid("106_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1925
.annotate "line", 697
new $P1924, 'ExceptionHandler'
set_addr $P1924, control_1923
- $P1924."handle_types"(58)
+ $P1924."handle_types"(57)
push_eh $P1924
.lex "self", self
.lex "$/", param_1925
find_lex $P1926, "$/"
find_lex $P1927, "$/"
- unless_null $P1927, vivify_563
+ unless_null $P1927, vivify_564
$P1927 = root_new ['parrot';'Hash']
- vivify_563:
+ vivify_564:
set $P1928, $P1927["quote_EXPR"]
- unless_null $P1928, vivify_564
+ unless_null $P1928, vivify_565
new $P1928, "Undef"
- vivify_564:
+ vivify_565:
$P1929 = $P1928."ast"()
$P1930 = $P1926."!make"($P1929)
.return ($P1930)
@@ -21592,24 +21735,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>" :subid("107_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<dblq>" :subid("107_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1935
.annotate "line", 698
new $P1934, 'ExceptionHandler'
set_addr $P1934, control_1933
- $P1934."handle_types"(58)
+ $P1934."handle_types"(57)
push_eh $P1934
.lex "self", self
.lex "$/", param_1935
find_lex $P1936, "$/"
find_lex $P1937, "$/"
- unless_null $P1937, vivify_565
+ unless_null $P1937, vivify_566
$P1937 = root_new ['parrot';'Hash']
- vivify_565:
+ vivify_566:
set $P1938, $P1937["quote_EXPR"]
- unless_null $P1938, vivify_566
+ unless_null $P1938, vivify_567
new $P1938, "Undef"
- vivify_566:
+ vivify_567:
$P1939 = $P1938."ast"()
$P1940 = $P1936."!make"($P1939)
.return ($P1940)
@@ -21622,24 +21765,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>" :subid("108_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<qq>" :subid("108_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1945
.annotate "line", 699
new $P1944, 'ExceptionHandler'
set_addr $P1944, control_1943
- $P1944."handle_types"(58)
+ $P1944."handle_types"(57)
push_eh $P1944
.lex "self", self
.lex "$/", param_1945
find_lex $P1946, "$/"
find_lex $P1947, "$/"
- unless_null $P1947, vivify_567
+ unless_null $P1947, vivify_568
$P1947 = root_new ['parrot';'Hash']
- vivify_567:
+ vivify_568:
set $P1948, $P1947["quote_EXPR"]
- unless_null $P1948, vivify_568
+ unless_null $P1948, vivify_569
new $P1948, "Undef"
- vivify_568:
+ vivify_569:
$P1949 = $P1948."ast"()
$P1950 = $P1946."!make"($P1949)
.return ($P1950)
@@ -21652,24 +21795,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<q>" :subid("109_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<q>" :subid("109_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1955
.annotate "line", 700
new $P1954, 'ExceptionHandler'
set_addr $P1954, control_1953
- $P1954."handle_types"(58)
+ $P1954."handle_types"(57)
push_eh $P1954
.lex "self", self
.lex "$/", param_1955
find_lex $P1956, "$/"
find_lex $P1957, "$/"
- unless_null $P1957, vivify_569
+ unless_null $P1957, vivify_570
$P1957 = root_new ['parrot';'Hash']
- vivify_569:
+ vivify_570:
set $P1958, $P1957["quote_EXPR"]
- unless_null $P1958, vivify_570
+ unless_null $P1958, vivify_571
new $P1958, "Undef"
- vivify_570:
+ vivify_571:
$P1959 = $P1958."ast"()
$P1960 = $P1956."!make"($P1959)
.return ($P1960)
@@ -21682,24 +21825,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>" :subid("110_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<Q>" :subid("110_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1965
.annotate "line", 701
new $P1964, 'ExceptionHandler'
set_addr $P1964, control_1963
- $P1964."handle_types"(58)
+ $P1964."handle_types"(57)
push_eh $P1964
.lex "self", self
.lex "$/", param_1965
find_lex $P1966, "$/"
find_lex $P1967, "$/"
- unless_null $P1967, vivify_571
+ unless_null $P1967, vivify_572
$P1967 = root_new ['parrot';'Hash']
- vivify_571:
+ vivify_572:
set $P1968, $P1967["quote_EXPR"]
- unless_null $P1968, vivify_572
+ unless_null $P1968, vivify_573
new $P1968, "Undef"
- vivify_572:
+ vivify_573:
$P1969 = $P1968."ast"()
$P1970 = $P1966."!make"($P1969)
.return ($P1970)
@@ -21712,12 +21855,12 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>" :subid("111_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<Q:PIR>" :subid("111_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1975
.annotate "line", 702
new $P1974, 'ExceptionHandler'
set_addr $P1974, control_1973
- $P1974."handle_types"(58)
+ $P1974."handle_types"(57)
push_eh $P1974
.lex "self", self
.lex "$/", param_1975
@@ -21725,13 +21868,13 @@
find_lex $P1976, "$/"
get_hll_global $P1977, ["PAST"], "Op"
find_lex $P1978, "$/"
- unless_null $P1978, vivify_573
+ unless_null $P1978, vivify_574
$P1978 = root_new ['parrot';'Hash']
- vivify_573:
+ vivify_574:
set $P1979, $P1978["quote_EXPR"]
- unless_null $P1979, vivify_574
+ unless_null $P1979, vivify_575
new $P1979, "Undef"
- vivify_574:
+ vivify_575:
$P1980 = $P1979."ast"()
$P1981 = $P1980."value"()
find_lex $P1982, "$/"
@@ -21748,21 +21891,21 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym</ />" :subid("112_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym</ />" :subid("112_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_1989
.param pmc param_1990 :optional
.param int has_param_1990 :opt_flag
.annotate "line", 708
new $P1988, 'ExceptionHandler'
set_addr $P1988, control_1987
- $P1988."handle_types"(58)
+ $P1988."handle_types"(57)
push_eh $P1988
.lex "self", self
.lex "$/", param_1989
- if has_param_1990, optparam_575
+ if has_param_1990, optparam_576
new $P1991, "Undef"
set param_1990, $P1991
- optparam_575:
+ optparam_576:
.lex "$key", param_1990
.annotate "line", 718
new $P1992, "Undef"
@@ -21782,27 +21925,27 @@
.annotate "line", 714
get_global $P1998, "@BLOCK"
- unless_null $P1998, vivify_576
+ unless_null $P1998, vivify_577
$P1998 = root_new ['parrot';'ResizablePMCArray']
- vivify_576:
+ vivify_577:
set $P1999, $P1998[0]
- unless_null $P1999, vivify_577
+ unless_null $P1999, vivify_578
new $P1999, "Undef"
- vivify_577:
+ vivify_578:
$P1999."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
.annotate "line", 715
get_global $P2000, "@BLOCK"
- unless_null $P2000, vivify_578
+ unless_null $P2000, vivify_579
$P2000 = root_new ['parrot';'ResizablePMCArray']
- vivify_578:
+ vivify_579:
set $P2001, $P2000[0]
- unless_null $P2001, vivify_579
+ unless_null $P2001, vivify_580
new $P2001, "Undef"
- vivify_579:
+ vivify_580:
$P2001."symbol"("$/", "lexical" :named("scope"))
.annotate "line", 716
new $P2002, "Exception"
- set $P2002['type'], 58
+ set $P2002['type'], 57
new $P2003, "Integer"
assign $P2003, 0
setattribute $P2002, 'payload', $P2003
@@ -21811,13 +21954,13 @@
.annotate "line", 719
get_hll_global $P2004, ["Regex";"P6Regex";"Actions"], "buildsub"
find_lex $P2005, "$/"
- unless_null $P2005, vivify_580
+ unless_null $P2005, vivify_581
$P2005 = root_new ['parrot';'Hash']
- vivify_580:
+ vivify_581:
set $P2006, $P2005["p6regex"]
- unless_null $P2006, vivify_581
+ unless_null $P2006, vivify_582
new $P2006, "Undef"
- vivify_581:
+ vivify_582:
$P2007 = $P2006."ast"()
get_global $P2008, "@BLOCK"
$P2009 = $P2008."shift"()
@@ -21837,10 +21980,10 @@
.annotate "line", 727
find_lex $P2017, "$regex"
find_lex $P2018, "$past"
- unless_null $P2018, vivify_582
+ unless_null $P2018, vivify_583
$P2018 = root_new ['parrot';'Hash']
store_lex "$past", $P2018
- vivify_582:
+ vivify_583:
set $P2018["sink"], $P2017
.annotate "line", 728
find_lex $P2019, "$/"
@@ -21857,24 +22000,24 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>" :subid("113_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote_escape:sym<$>" :subid("113_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_2026
.annotate "line", 731
new $P2025, 'ExceptionHandler'
set_addr $P2025, control_2024
- $P2025."handle_types"(58)
+ $P2025."handle_types"(57)
push_eh $P2025
.lex "self", self
.lex "$/", param_2026
find_lex $P2027, "$/"
find_lex $P2028, "$/"
- unless_null $P2028, vivify_583
+ unless_null $P2028, vivify_584
$P2028 = root_new ['parrot';'Hash']
- vivify_583:
+ vivify_584:
set $P2029, $P2028["variable"]
- unless_null $P2029, vivify_584
+ unless_null $P2029, vivify_585
new $P2029, "Undef"
- vivify_584:
+ vivify_585:
$P2030 = $P2029."ast"()
$P2031 = $P2027."!make"($P2030)
.return ($P2031)
@@ -21887,12 +22030,12 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>" :subid("114_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote_escape:sym<{ }>" :subid("114_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_2036
.annotate "line", 732
new $P2035, 'ExceptionHandler'
set_addr $P2035, control_2034
- $P2035."handle_types"(58)
+ $P2035."handle_types"(57)
push_eh $P2035
.lex "self", self
.lex "$/", param_2036
@@ -21901,13 +22044,13 @@
get_hll_global $P2038, ["PAST"], "Op"
.annotate "line", 734
find_lex $P2039, "$/"
- unless_null $P2039, vivify_585
+ unless_null $P2039, vivify_586
$P2039 = root_new ['parrot';'Hash']
- vivify_585:
+ vivify_586:
set $P2040, $P2039["block"]
- unless_null $P2040, vivify_586
+ unless_null $P2040, vivify_587
new $P2040, "Undef"
- vivify_586:
+ vivify_587:
$P2041 = $P2040."ast"()
$P2042 = "block_immediate"($P2041)
find_lex $P2043, "$/"
@@ -21925,334 +22068,355 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>" :subid("115_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote_escape:sym<esc>" :subid("115_1272816841.80681") :method :outer("11_1272816841.80681")
.param pmc param_2050
-.annotate "line", 740
+.annotate "line", 737
new $P2049, 'ExceptionHandler'
set_addr $P2049, control_2048
- $P2049."handle_types"(58)
+ $P2049."handle_types"(57)
push_eh $P2049
.lex "self", self
.lex "$/", param_2050
find_lex $P2051, "$/"
- find_lex $P2052, "$/"
- unless_null $P2052, vivify_587
- $P2052 = root_new ['parrot';'Hash']
- vivify_587:
- set $P2053, $P2052["dotty"]
- unless_null $P2053, vivify_588
- new $P2053, "Undef"
- vivify_588:
- $P2054 = $P2053."ast"()
- $P2055 = $P2051."!make"($P2054)
- .return ($P2055)
+ $P2052 = $P2051."!make"("\e")
+ .return ($P2052)
control_2048:
.local pmc exception
.get_results (exception)
- getattribute $P2056, exception, "payload"
- .return ($P2056)
+ getattribute $P2053, exception, "payload"
+ .return ($P2053)
.end
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>" :subid("116_1267204714.47172") :method :outer("11_1267204714.47172")
- .param pmc param_2060
-.annotate "line", 742
- new $P2059, 'ExceptionHandler'
- set_addr $P2059, control_2058
- $P2059."handle_types"(58)
- push_eh $P2059
+.sub "postfix:sym<.>" :subid("116_1272816841.80681") :method :outer("11_1272816841.80681")
+ .param pmc param_2057
+.annotate "line", 741
+ new $P2056, 'ExceptionHandler'
+ set_addr $P2056, control_2055
+ $P2056."handle_types"(57)
+ push_eh $P2056
.lex "self", self
- .lex "$/", param_2060
+ .lex "$/", param_2057
+ find_lex $P2058, "$/"
+ find_lex $P2059, "$/"
+ unless_null $P2059, vivify_588
+ $P2059 = root_new ['parrot';'Hash']
+ vivify_588:
+ set $P2060, $P2059["dotty"]
+ unless_null $P2060, vivify_589
+ new $P2060, "Undef"
+ vivify_589:
+ $P2061 = $P2060."ast"()
+ $P2062 = $P2058."!make"($P2061)
+ .return ($P2062)
+ control_2055:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P2063, exception, "payload"
+ .return ($P2063)
+.end
+
+
+.namespace ["NQP";"Actions"]
+.sub "postfix:sym<++>" :subid("117_1272816841.80681") :method :outer("11_1272816841.80681")
+ .param pmc param_2067
.annotate "line", 743
- find_lex $P2061, "$/"
- get_hll_global $P2062, ["PAST"], "Op"
+ new $P2066, 'ExceptionHandler'
+ set_addr $P2066, control_2065
+ $P2066."handle_types"(57)
+ push_eh $P2066
+ .lex "self", self
+ .lex "$/", param_2067
.annotate "line", 744
- new $P2063, "ResizablePMCArray"
- push $P2063, " clone %r, %0"
- push $P2063, " inc %0"
- $P2064 = $P2062."new"("postfix:<++>" :named("name"), $P2063 :named("inline"), "inline" :named("pasttype"))
+ find_lex $P2068, "$/"
+ get_hll_global $P2069, ["PAST"], "Op"
+.annotate "line", 745
+ new $P2070, "ResizablePMCArray"
+ push $P2070, " clone %r, %0"
+ push $P2070, " inc %0"
+ $P2071 = $P2069."new"("postfix:<++>" :named("name"), $P2070 :named("inline"), "inline" :named("pasttype"))
+.annotate "line", 744
+ $P2072 = $P2068."!make"($P2071)
.annotate "line", 743
- $P2065 = $P2061."!make"($P2064)
-.annotate "line", 742
- .return ($P2065)
- control_2058:
+ .return ($P2072)
+ control_2065:
.local pmc exception
.get_results (exception)
- getattribute $P2066, exception, "payload"
- .return ($P2066)
+ getattribute $P2073, exception, "payload"
+ .return ($P2073)
.end
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->" :subid("117_1267204714.47172") :method :outer("11_1267204714.47172")
- .param pmc param_2070
-.annotate "line", 748
- new $P2069, 'ExceptionHandler'
- set_addr $P2069, control_2068
- $P2069."handle_types"(58)
- push_eh $P2069
- .lex "self", self
- .lex "$/", param_2070
+.sub "postfix:sym<-->" :subid("118_1272816841.80681") :method :outer("11_1272816841.80681")
+ .param pmc param_2077
.annotate "line", 749
- find_lex $P2071, "$/"
- get_hll_global $P2072, ["PAST"], "Op"
+ new $P2076, 'ExceptionHandler'
+ set_addr $P2076, control_2075
+ $P2076."handle_types"(57)
+ push_eh $P2076
+ .lex "self", self
+ .lex "$/", param_2077
+.annotate "line", 750
+ find_lex $P2078, "$/"
+ get_hll_global $P2079, ["PAST"], "Op"
+.annotate "line", 751
+ new $P2080, "ResizablePMCArray"
+ push $P2080, " clone %r, %0"
+ push $P2080, " dec %0"
+ $P2081 = $P2079."new"("postfix:<-->" :named("name"), $P2080 :named("inline"), "inline" :named("pasttype"))
.annotate "line", 750
- new $P2073, "ResizablePMCArray"
- push $P2073, " clone %r, %0"
- push $P2073, " dec %0"
- $P2074 = $P2072."new"("postfix:<-->" :named("name"), $P2073 :named("inline"), "inline" :named("pasttype"))
+ $P2082 = $P2078."!make"($P2081)
.annotate "line", 749
- $P2075 = $P2071."!make"($P2074)
-.annotate "line", 748
- .return ($P2075)
- control_2068:
+ .return ($P2082)
+ control_2075:
.local pmc exception
.get_results (exception)
- getattribute $P2076, exception, "payload"
- .return ($P2076)
+ getattribute $P2083, exception, "payload"
+ .return ($P2083)
.end
.namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>" :subid("118_1267204714.47172") :method :outer("11_1267204714.47172")
- .param pmc param_2080
-.annotate "line", 754
- new $P2079, 'ExceptionHandler'
- set_addr $P2079, control_2078
- $P2079."handle_types"(58)
- push_eh $P2079
- .lex "self", self
- .lex "$/", param_2080
+.sub "prefix:sym<make>" :subid("119_1272816841.80681") :method :outer("11_1272816841.80681")
+ .param pmc param_2087
.annotate "line", 755
- find_lex $P2081, "$/"
- get_hll_global $P2082, ["PAST"], "Op"
+ new $P2086, 'ExceptionHandler'
+ set_addr $P2086, control_2085
+ $P2086."handle_types"(57)
+ push_eh $P2086
+ .lex "self", self
+ .lex "$/", param_2087
.annotate "line", 756
- get_hll_global $P2083, ["PAST"], "Var"
- $P2084 = $P2083."new"("$/" :named("name"), "contextual" :named("scope"))
- find_lex $P2085, "$/"
- $P2086 = $P2082."new"($P2084, "callmethod" :named("pasttype"), "!make" :named("name"), $P2085 :named("node"))
+ find_lex $P2088, "$/"
+ get_hll_global $P2089, ["PAST"], "Op"
+.annotate "line", 757
+ get_hll_global $P2090, ["PAST"], "Var"
+ $P2091 = $P2090."new"("$/" :named("name"), "contextual" :named("scope"))
+ find_lex $P2092, "$/"
+ $P2093 = $P2089."new"($P2091, "callmethod" :named("pasttype"), "!make" :named("name"), $P2092 :named("node"))
+.annotate "line", 756
+ $P2094 = $P2088."!make"($P2093)
.annotate "line", 755
- $P2087 = $P2081."!make"($P2086)
-.annotate "line", 754
- .return ($P2087)
- control_2078:
+ .return ($P2094)
+ control_2085:
.local pmc exception
.get_results (exception)
- getattribute $P2088, exception, "payload"
- .return ($P2088)
+ getattribute $P2095, exception, "payload"
+ .return ($P2095)
.end
.namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>" :subid("119_1267204714.47172") :method :outer("11_1267204714.47172")
- .param pmc param_2092
-.annotate "line", 763
- new $P2091, 'ExceptionHandler'
- set_addr $P2091, control_2090
- $P2091."handle_types"(58)
- push_eh $P2091
- .lex "self", self
- .lex "$/", param_2092
+.sub "infix:sym<~~>" :subid("120_1272816841.80681") :method :outer("11_1272816841.80681")
+ .param pmc param_2099
.annotate "line", 764
- find_lex $P2093, "$/"
- get_hll_global $P2094, ["PAST"], "Op"
- find_lex $P2095, "$/"
- $P2096 = $P2094."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2095 :named("node"))
- $P2097 = $P2093."!make"($P2096)
-.annotate "line", 763
- .return ($P2097)
- control_2090:
+ new $P2098, 'ExceptionHandler'
+ set_addr $P2098, control_2097
+ $P2098."handle_types"(57)
+ push_eh $P2098
+ .lex "self", self
+ .lex "$/", param_2099
+.annotate "line", 765
+ find_lex $P2100, "$/"
+ get_hll_global $P2101, ["PAST"], "Op"
+ find_lex $P2102, "$/"
+ $P2103 = $P2101."new"("callmethod" :named("pasttype"), "ACCEPTS" :named("name"), $P2102 :named("node"))
+ $P2104 = $P2100."!make"($P2103)
+.annotate "line", 764
+ .return ($P2104)
+ control_2097:
.local pmc exception
.get_results (exception)
- getattribute $P2098, exception, "payload"
- .return ($P2098)
+ getattribute $P2105, exception, "payload"
+ .return ($P2105)
.end
.namespace ["NQP";"RegexActions"]
-.sub "_block2099" :subid("120_1267204714.47172") :outer("11_1267204714.47172")
-.annotate "line", 768
- .const 'Sub' $P2135 = "124_1267204714.47172"
- capture_lex $P2135
- .const 'Sub' $P2125 = "123_1267204714.47172"
- capture_lex $P2125
- .const 'Sub' $P2115 = "122_1267204714.47172"
- capture_lex $P2115
- .const 'Sub' $P2101 = "121_1267204714.47172"
- capture_lex $P2101
-.annotate "line", 779
- .const 'Sub' $P2135 = "124_1267204714.47172"
- capture_lex $P2135
-.annotate "line", 768
- .return ($P2135)
+.sub "_block2106" :subid("121_1272816841.80681") :outer("11_1272816841.80681")
+.annotate "line", 769
+ .const 'Sub' $P2142 = "125_1272816841.80681"
+ capture_lex $P2142
+ .const 'Sub' $P2132 = "124_1272816841.80681"
+ capture_lex $P2132
+ .const 'Sub' $P2122 = "123_1272816841.80681"
+ capture_lex $P2122
+ .const 'Sub' $P2108 = "122_1272816841.80681"
+ capture_lex $P2108
+.annotate "line", 780
+ .const 'Sub' $P2142 = "125_1272816841.80681"
+ capture_lex $P2142
+.annotate "line", 769
+ .return ($P2142)
.end
.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>" :subid("121_1267204714.47172") :method :outer("120_1267204714.47172")
- .param pmc param_2104
-.annotate "line", 770
- new $P2103, 'ExceptionHandler'
- set_addr $P2103, control_2102
- $P2103."handle_types"(58)
- push_eh $P2103
- .lex "self", self
- .lex "$/", param_2104
+.sub "metachar:sym<:my>" :subid("122_1272816841.80681") :method :outer("121_1272816841.80681")
+ .param pmc param_2111
.annotate "line", 771
- new $P2105, "Undef"
- .lex "$past", $P2105
- find_lex $P2106, "$/"
- unless_null $P2106, vivify_589
- $P2106 = root_new ['parrot';'Hash']
- vivify_589:
- set $P2107, $P2106["statement"]
- unless_null $P2107, vivify_590
- new $P2107, "Undef"
- vivify_590:
- $P2108 = $P2107."ast"()
- store_lex "$past", $P2108
+ new $P2110, 'ExceptionHandler'
+ set_addr $P2110, control_2109
+ $P2110."handle_types"(57)
+ push_eh $P2110
+ .lex "self", self
+ .lex "$/", param_2111
.annotate "line", 772
- find_lex $P2109, "$/"
- get_hll_global $P2110, ["PAST"], "Regex"
- find_lex $P2111, "$past"
- $P2112 = $P2110."new"($P2111, "pastnode" :named("pasttype"))
- $P2113 = $P2109."!make"($P2112)
-.annotate "line", 770
- .return ($P2113)
- control_2102:
+ new $P2112, "Undef"
+ .lex "$past", $P2112
+ find_lex $P2113, "$/"
+ unless_null $P2113, vivify_590
+ $P2113 = root_new ['parrot';'Hash']
+ vivify_590:
+ set $P2114, $P2113["statement"]
+ unless_null $P2114, vivify_591
+ new $P2114, "Undef"
+ vivify_591:
+ $P2115 = $P2114."ast"()
+ store_lex "$past", $P2115
+.annotate "line", 773
+ find_lex $P2116, "$/"
+ get_hll_global $P2117, ["PAST"], "Regex"
+ find_lex $P2118, "$past"
+ $P2119 = $P2117."new"($P2118, "pastnode" :named("pasttype"))
+ $P2120 = $P2116."!make"($P2119)
+.annotate "line", 771
+ .return ($P2120)
+ control_2109:
.local pmc exception
.get_results (exception)
- getattribute $P2114, exception, "payload"
- .return ($P2114)
+ getattribute $P2121, exception, "payload"
+ .return ($P2121)
.end
.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>" :subid("122_1267204714.47172") :method :outer("120_1267204714.47172")
- .param pmc param_2118
-.annotate "line", 775
- new $P2117, 'ExceptionHandler'
- set_addr $P2117, control_2116
- $P2117."handle_types"(58)
- push_eh $P2117
- .lex "self", self
- .lex "$/", param_2118
- find_lex $P2119, "$/"
- find_lex $P2120, "$/"
- unless_null $P2120, vivify_591
- $P2120 = root_new ['parrot';'Hash']
- vivify_591:
- set $P2121, $P2120["codeblock"]
- unless_null $P2121, vivify_592
- new $P2121, "Undef"
+.sub "metachar:sym<{ }>" :subid("123_1272816841.80681") :method :outer("121_1272816841.80681")
+ .param pmc param_2125
+.annotate "line", 776
+ new $P2124, 'ExceptionHandler'
+ set_addr $P2124, control_2123
+ $P2124."handle_types"(57)
+ push_eh $P2124
+ .lex "self", self
+ .lex "$/", param_2125
+ find_lex $P2126, "$/"
+ find_lex $P2127, "$/"
+ unless_null $P2127, vivify_592
+ $P2127 = root_new ['parrot';'Hash']
vivify_592:
- $P2122 = $P2121."ast"()
- $P2123 = $P2119."!make"($P2122)
- .return ($P2123)
- control_2116:
+ set $P2128, $P2127["codeblock"]
+ unless_null $P2128, vivify_593
+ new $P2128, "Undef"
+ vivify_593:
+ $P2129 = $P2128."ast"()
+ $P2130 = $P2126."!make"($P2129)
+ .return ($P2130)
+ control_2123:
.local pmc exception
.get_results (exception)
- getattribute $P2124, exception, "payload"
- .return ($P2124)
+ getattribute $P2131, exception, "payload"
+ .return ($P2131)
.end
.namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>" :subid("123_1267204714.47172") :method :outer("120_1267204714.47172")
- .param pmc param_2128
-.annotate "line", 777
- new $P2127, 'ExceptionHandler'
- set_addr $P2127, control_2126
- $P2127."handle_types"(58)
- push_eh $P2127
- .lex "self", self
- .lex "$/", param_2128
- find_lex $P2129, "$/"
- find_lex $P2130, "$/"
- unless_null $P2130, vivify_593
- $P2130 = root_new ['parrot';'Hash']
- vivify_593:
- set $P2131, $P2130["codeblock"]
- unless_null $P2131, vivify_594
- new $P2131, "Undef"
+.sub "assertion:sym<{ }>" :subid("124_1272816841.80681") :method :outer("121_1272816841.80681")
+ .param pmc param_2135
+.annotate "line", 778
+ new $P2134, 'ExceptionHandler'
+ set_addr $P2134, control_2133
+ $P2134."handle_types"(57)
+ push_eh $P2134
+ .lex "self", self
+ .lex "$/", param_2135
+ find_lex $P2136, "$/"
+ find_lex $P2137, "$/"
+ unless_null $P2137, vivify_594
+ $P2137 = root_new ['parrot';'Hash']
vivify_594:
- $P2132 = $P2131."ast"()
- $P2133 = $P2129."!make"($P2132)
- .return ($P2133)
- control_2126:
+ set $P2138, $P2137["codeblock"]
+ unless_null $P2138, vivify_595
+ new $P2138, "Undef"
+ vivify_595:
+ $P2139 = $P2138."ast"()
+ $P2140 = $P2136."!make"($P2139)
+ .return ($P2140)
+ control_2133:
.local pmc exception
.get_results (exception)
- getattribute $P2134, exception, "payload"
- .return ($P2134)
+ getattribute $P2141, exception, "payload"
+ .return ($P2141)
.end
.namespace ["NQP";"RegexActions"]
-.sub "codeblock" :subid("124_1267204714.47172") :method :outer("120_1267204714.47172")
- .param pmc param_2138
-.annotate "line", 779
- new $P2137, 'ExceptionHandler'
- set_addr $P2137, control_2136
- $P2137."handle_types"(58)
- push_eh $P2137
- .lex "self", self
- .lex "$/", param_2138
-.annotate "line", 780
- new $P2139, "Undef"
- .lex "$block", $P2139
-.annotate "line", 782
- new $P2140, "Undef"
- .lex "$past", $P2140
+.sub "codeblock" :subid("125_1272816841.80681") :method :outer("121_1272816841.80681")
+ .param pmc param_2145
.annotate "line", 780
- find_lex $P2141, "$/"
- unless_null $P2141, vivify_595
- $P2141 = root_new ['parrot';'Hash']
- vivify_595:
- set $P2142, $P2141["block"]
- unless_null $P2142, vivify_596
- new $P2142, "Undef"
- vivify_596:
- $P2143 = $P2142."ast"()
- store_lex "$block", $P2143
+ new $P2144, 'ExceptionHandler'
+ set_addr $P2144, control_2143
+ $P2144."handle_types"(57)
+ push_eh $P2144
+ .lex "self", self
+ .lex "$/", param_2145
.annotate "line", 781
- find_lex $P2144, "$block"
- $P2144."blocktype"("immediate")
+ new $P2146, "Undef"
+ .lex "$block", $P2146
.annotate "line", 783
- get_hll_global $P2145, ["PAST"], "Regex"
+ new $P2147, "Undef"
+ .lex "$past", $P2147
+.annotate "line", 781
+ find_lex $P2148, "$/"
+ unless_null $P2148, vivify_596
+ $P2148 = root_new ['parrot';'Hash']
+ vivify_596:
+ set $P2149, $P2148["block"]
+ unless_null $P2149, vivify_597
+ new $P2149, "Undef"
+ vivify_597:
+ $P2150 = $P2149."ast"()
+ store_lex "$block", $P2150
+.annotate "line", 782
+ find_lex $P2151, "$block"
+ $P2151."blocktype"("immediate")
.annotate "line", 784
- get_hll_global $P2146, ["PAST"], "Stmts"
+ get_hll_global $P2152, ["PAST"], "Regex"
.annotate "line", 785
- get_hll_global $P2147, ["PAST"], "Op"
+ get_hll_global $P2153, ["PAST"], "Stmts"
.annotate "line", 786
- get_hll_global $P2148, ["PAST"], "Var"
- $P2149 = $P2148."new"("$/" :named("name"))
+ get_hll_global $P2154, ["PAST"], "Op"
.annotate "line", 787
- get_hll_global $P2150, ["PAST"], "Op"
+ get_hll_global $P2155, ["PAST"], "Var"
+ $P2156 = $P2155."new"("$/" :named("name"))
.annotate "line", 788
- get_hll_global $P2151, ["PAST"], "Var"
- $P2152 = $P2151."new"(unicode:"$\x{a2}" :named("name"))
- $P2153 = $P2150."new"($P2152, "MATCH" :named("name"), "callmethod" :named("pasttype"))
-.annotate "line", 787
- $P2154 = $P2147."new"($P2149, $P2153, "bind" :named("pasttype"))
+ get_hll_global $P2157, ["PAST"], "Op"
+.annotate "line", 789
+ get_hll_global $P2158, ["PAST"], "Var"
+ $P2159 = $P2158."new"(unicode:"$\x{a2}" :named("name"))
+ $P2160 = $P2157."new"($P2159, "MATCH" :named("name"), "callmethod" :named("pasttype"))
+.annotate "line", 788
+ $P2161 = $P2154."new"($P2156, $P2160, "bind" :named("pasttype"))
+.annotate "line", 786
+ find_lex $P2162, "$block"
+ $P2163 = $P2153."new"($P2161, $P2162)
.annotate "line", 785
- find_lex $P2155, "$block"
- $P2156 = $P2146."new"($P2154, $P2155)
+ $P2164 = $P2152."new"($P2163, "pastnode" :named("pasttype"))
.annotate "line", 784
- $P2157 = $P2145."new"($P2156, "pastnode" :named("pasttype"))
-.annotate "line", 783
- store_lex "$past", $P2157
-.annotate "line", 798
- find_lex $P2158, "$/"
- find_lex $P2159, "$past"
- $P2160 = $P2158."!make"($P2159)
-.annotate "line", 779
- .return ($P2160)
- control_2136:
+ store_lex "$past", $P2164
+.annotate "line", 799
+ find_lex $P2165, "$/"
+ find_lex $P2166, "$past"
+ $P2167 = $P2165."!make"($P2166)
+.annotate "line", 780
+ .return ($P2167)
+ control_2143:
.local pmc exception
.get_results (exception)
- getattribute $P2161, exception, "payload"
- .return ($P2161)
+ getattribute $P2168, exception, "payload"
+ .return ($P2168)
.end
### .include 'src/cheats/nqp-builtins.pir'
Modified: branches/ops_pct/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/P6Regex-s0.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/P6Regex-s0.pir Wed May 5 08:45:29 2010 (r46302)
@@ -16,7 +16,7 @@
### .include 'gen/p6regex-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204688.82934")
+.sub "_block11" :anon :subid("10_1272816831.40736")
.annotate "line", 0
get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13"
capture_lex $P14
@@ -30,9 +30,9 @@
.namespace []
-.sub "" :load :init :subid("post158") :outer("10_1267204688.82934")
+.sub "" :load :init :subid("post158") :outer("10_1272816831.40736")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204688.82934"
+ .const 'Sub' $P12 = "10_1272816831.40736"
.local pmc block
set block, $P12
$P580 = get_root_global ["parrot"], "P6metaclass"
@@ -41,140 +41,140 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13" :subid("11_1267204688.82934") :outer("10_1267204688.82934")
+.sub "_block13" :subid("11_1272816831.40736") :outer("10_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P571 = "156_1267204688.82934"
+ .const 'Sub' $P571 = "156_1272816831.40736"
capture_lex $P571
- .const 'Sub' $P563 = "154_1267204688.82934"
+ .const 'Sub' $P563 = "154_1272816831.40736"
capture_lex $P563
- .const 'Sub' $P555 = "152_1267204688.82934"
+ .const 'Sub' $P555 = "152_1272816831.40736"
capture_lex $P555
- .const 'Sub' $P534 = "147_1267204688.82934"
+ .const 'Sub' $P534 = "147_1272816831.40736"
capture_lex $P534
- .const 'Sub' $P499 = "141_1267204688.82934"
+ .const 'Sub' $P499 = "141_1272816831.40736"
capture_lex $P499
- .const 'Sub' $P487 = "138_1267204688.82934"
+ .const 'Sub' $P487 = "138_1272816831.40736"
capture_lex $P487
- .const 'Sub' $P474 = "135_1267204688.82934"
+ .const 'Sub' $P474 = "135_1272816831.40736"
capture_lex $P474
- .const 'Sub' $P468 = "133_1267204688.82934"
+ .const 'Sub' $P468 = "133_1272816831.40736"
capture_lex $P468
- .const 'Sub' $P457 = "130_1267204688.82934"
+ .const 'Sub' $P457 = "130_1272816831.40736"
capture_lex $P457
- .const 'Sub' $P446 = "127_1267204688.82934"
+ .const 'Sub' $P446 = "127_1272816831.40736"
capture_lex $P446
- .const 'Sub' $P437 = "123_1267204688.82934"
+ .const 'Sub' $P437 = "123_1272816831.40736"
capture_lex $P437
- .const 'Sub' $P431 = "121_1267204688.82934"
+ .const 'Sub' $P431 = "121_1272816831.40736"
capture_lex $P431
- .const 'Sub' $P425 = "119_1267204688.82934"
+ .const 'Sub' $P425 = "119_1272816831.40736"
capture_lex $P425
- .const 'Sub' $P419 = "117_1267204688.82934"
+ .const 'Sub' $P419 = "117_1272816831.40736"
capture_lex $P419
- .const 'Sub' $P413 = "115_1267204688.82934"
+ .const 'Sub' $P413 = "115_1272816831.40736"
capture_lex $P413
- .const 'Sub' $P405 = "113_1267204688.82934"
+ .const 'Sub' $P405 = "113_1272816831.40736"
capture_lex $P405
- .const 'Sub' $P394 = "111_1267204688.82934"
+ .const 'Sub' $P394 = "111_1272816831.40736"
capture_lex $P394
- .const 'Sub' $P383 = "109_1267204688.82934"
+ .const 'Sub' $P383 = "109_1272816831.40736"
capture_lex $P383
- .const 'Sub' $P377 = "107_1267204688.82934"
+ .const 'Sub' $P377 = "107_1272816831.40736"
capture_lex $P377
- .const 'Sub' $P371 = "105_1267204688.82934"
+ .const 'Sub' $P371 = "105_1272816831.40736"
capture_lex $P371
- .const 'Sub' $P365 = "103_1267204688.82934"
+ .const 'Sub' $P365 = "103_1272816831.40736"
capture_lex $P365
- .const 'Sub' $P359 = "101_1267204688.82934"
+ .const 'Sub' $P359 = "101_1272816831.40736"
capture_lex $P359
- .const 'Sub' $P353 = "99_1267204688.82934"
+ .const 'Sub' $P353 = "99_1272816831.40736"
capture_lex $P353
- .const 'Sub' $P347 = "97_1267204688.82934"
+ .const 'Sub' $P347 = "97_1272816831.40736"
capture_lex $P347
- .const 'Sub' $P341 = "95_1267204688.82934"
+ .const 'Sub' $P341 = "95_1272816831.40736"
capture_lex $P341
- .const 'Sub' $P335 = "93_1267204688.82934"
+ .const 'Sub' $P335 = "93_1272816831.40736"
capture_lex $P335
- .const 'Sub' $P323 = "89_1267204688.82934"
+ .const 'Sub' $P323 = "89_1272816831.40736"
capture_lex $P323
- .const 'Sub' $P311 = "87_1267204688.82934"
+ .const 'Sub' $P311 = "87_1272816831.40736"
capture_lex $P311
- .const 'Sub' $P304 = "85_1267204688.82934"
+ .const 'Sub' $P304 = "85_1272816831.40736"
capture_lex $P304
- .const 'Sub' $P287 = "83_1267204688.82934"
+ .const 'Sub' $P287 = "83_1272816831.40736"
capture_lex $P287
- .const 'Sub' $P280 = "81_1267204688.82934"
+ .const 'Sub' $P280 = "81_1272816831.40736"
capture_lex $P280
- .const 'Sub' $P274 = "79_1267204688.82934"
+ .const 'Sub' $P274 = "79_1272816831.40736"
capture_lex $P274
- .const 'Sub' $P268 = "77_1267204688.82934"
+ .const 'Sub' $P268 = "77_1272816831.40736"
capture_lex $P268
- .const 'Sub' $P261 = "75_1267204688.82934"
+ .const 'Sub' $P261 = "75_1272816831.40736"
capture_lex $P261
- .const 'Sub' $P254 = "73_1267204688.82934"
+ .const 'Sub' $P254 = "73_1272816831.40736"
capture_lex $P254
- .const 'Sub' $P247 = "71_1267204688.82934"
+ .const 'Sub' $P247 = "71_1272816831.40736"
capture_lex $P247
- .const 'Sub' $P240 = "69_1267204688.82934"
+ .const 'Sub' $P240 = "69_1272816831.40736"
capture_lex $P240
- .const 'Sub' $P234 = "67_1267204688.82934"
+ .const 'Sub' $P234 = "67_1272816831.40736"
capture_lex $P234
- .const 'Sub' $P228 = "65_1267204688.82934"
+ .const 'Sub' $P228 = "65_1272816831.40736"
capture_lex $P228
- .const 'Sub' $P222 = "63_1267204688.82934"
+ .const 'Sub' $P222 = "63_1272816831.40736"
capture_lex $P222
- .const 'Sub' $P216 = "61_1267204688.82934"
+ .const 'Sub' $P216 = "61_1272816831.40736"
capture_lex $P216
- .const 'Sub' $P210 = "59_1267204688.82934"
+ .const 'Sub' $P210 = "59_1272816831.40736"
capture_lex $P210
- .const 'Sub' $P205 = "57_1267204688.82934"
+ .const 'Sub' $P205 = "57_1272816831.40736"
capture_lex $P205
- .const 'Sub' $P200 = "55_1267204688.82934"
+ .const 'Sub' $P200 = "55_1272816831.40736"
capture_lex $P200
- .const 'Sub' $P194 = "53_1267204688.82934"
+ .const 'Sub' $P194 = "53_1272816831.40736"
capture_lex $P194
- .const 'Sub' $P188 = "51_1267204688.82934"
+ .const 'Sub' $P188 = "51_1272816831.40736"
capture_lex $P188
- .const 'Sub' $P182 = "49_1267204688.82934"
+ .const 'Sub' $P182 = "49_1272816831.40736"
capture_lex $P182
- .const 'Sub' $P166 = "44_1267204688.82934"
+ .const 'Sub' $P166 = "44_1272816831.40736"
capture_lex $P166
- .const 'Sub' $P154 = "42_1267204688.82934"
+ .const 'Sub' $P154 = "42_1272816831.40736"
capture_lex $P154
- .const 'Sub' $P147 = "40_1267204688.82934"
+ .const 'Sub' $P147 = "40_1272816831.40736"
capture_lex $P147
- .const 'Sub' $P140 = "38_1267204688.82934"
+ .const 'Sub' $P140 = "38_1272816831.40736"
capture_lex $P140
- .const 'Sub' $P133 = "36_1267204688.82934"
+ .const 'Sub' $P133 = "36_1272816831.40736"
capture_lex $P133
- .const 'Sub' $P114 = "31_1267204688.82934"
+ .const 'Sub' $P114 = "31_1272816831.40736"
capture_lex $P114
- .const 'Sub' $P101 = "28_1267204688.82934"
+ .const 'Sub' $P101 = "28_1272816831.40736"
capture_lex $P101
- .const 'Sub' $P94 = "26_1267204688.82934"
+ .const 'Sub' $P94 = "26_1272816831.40736"
capture_lex $P94
- .const 'Sub' $P82 = "24_1267204688.82934"
+ .const 'Sub' $P82 = "24_1272816831.40736"
capture_lex $P82
- .const 'Sub' $P75 = "22_1267204688.82934"
+ .const 'Sub' $P75 = "22_1272816831.40736"
capture_lex $P75
- .const 'Sub' $P63 = "20_1267204688.82934"
+ .const 'Sub' $P63 = "20_1272816831.40736"
capture_lex $P63
- .const 'Sub' $P56 = "18_1267204688.82934"
+ .const 'Sub' $P56 = "18_1272816831.40736"
capture_lex $P56
- .const 'Sub' $P46 = "15_1267204688.82934"
+ .const 'Sub' $P46 = "15_1272816831.40736"
capture_lex $P46
- .const 'Sub' $P38 = "13_1267204688.82934"
+ .const 'Sub' $P38 = "13_1272816831.40736"
capture_lex $P38
- .const 'Sub' $P15 = "12_1267204688.82934"
+ .const 'Sub' $P15 = "12_1272816831.40736"
capture_lex $P15
- .const 'Sub' $P571 = "156_1267204688.82934"
+ .const 'Sub' $P571 = "156_1272816831.40736"
capture_lex $P571
.return ($P571)
.end
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs" :subid("12_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "obs" :subid("12_1272816831.40736") :method :outer("11_1272816831.40736")
.param pmc param_18
.param pmc param_19
.param pmc param_20 :optional
@@ -182,7 +182,7 @@
.annotate "line", 3
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
- $P17."handle_types"(58)
+ $P17."handle_types"(57)
push_eh $P17
.lex "self", self
.lex "$old", param_18
@@ -222,7 +222,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws" :subid("13_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "ws" :subid("13_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx39_tgt
.local int rx39_pos
@@ -304,7 +304,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws" :subid("14_1267204688.82934") :method
+.sub "!PREFIX__ws" :subid("14_1272816831.40736") :method
.annotate "line", 3
new $P41, "ResizablePMCArray"
push $P41, ""
@@ -313,9 +313,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace" :subid("15_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "normspace" :subid("15_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P52 = "17_1267204688.82934"
+ .const 'Sub' $P52 = "17_1272816831.40736"
capture_lex $P52
.local string rx47_tgt
.local int rx47_pos
@@ -349,7 +349,7 @@
.annotate "line", 10
# rx subrule "before" subtype=zerowidth negate=
rx47_cur."!cursor_pos"(rx47_pos)
- .const 'Sub' $P52 = "17_1267204688.82934"
+ .const 'Sub' $P52 = "17_1272816831.40736"
capture_lex $P52
$P10 = rx47_cur."before"($P52)
unless $P10, rx47_fail
@@ -377,7 +377,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace" :subid("16_1267204688.82934") :method
+.sub "!PREFIX__normspace" :subid("16_1272816831.40736") :method
.annotate "line", 3
new $P49, "ResizablePMCArray"
push $P49, ""
@@ -386,7 +386,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51" :anon :subid("17_1267204688.82934") :method :outer("15_1267204688.82934")
+.sub "_block51" :anon :subid("17_1272816831.40736") :method :outer("15_1272816831.40736")
.annotate "line", 10
.local string rx53_tgt
.local int rx53_pos
@@ -454,7 +454,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg" :subid("18_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "arg" :subid("18_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx57_tgt
.local int rx57_pos
@@ -565,7 +565,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg" :subid("19_1267204688.82934") :method
+.sub "!PREFIX__arg" :subid("19_1272816831.40736") :method
.annotate "line", 3
new $P59, "ResizablePMCArray"
push $P59, ""
@@ -576,7 +576,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist" :subid("20_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "arglist" :subid("20_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx64_tgt
.local int rx64_pos
@@ -682,7 +682,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist" :subid("21_1267204688.82934") :method
+.sub "!PREFIX__arglist" :subid("21_1272816831.40736") :method
.annotate "line", 3
new $P66, "ResizablePMCArray"
push $P66, ""
@@ -691,7 +691,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP" :subid("22_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "TOP" :subid("22_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx76_tgt
.local int rx76_pos
@@ -764,7 +764,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP" :subid("23_1267204688.82934") :method
+.sub "!PREFIX__TOP" :subid("23_1272816831.40736") :method
.annotate "line", 3
$P78 = self."!PREFIX__!subrule"("nibbler", "")
new $P79, "ResizablePMCArray"
@@ -774,7 +774,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler" :subid("24_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "nibbler" :subid("24_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx83_tgt
.local int rx83_pos
@@ -942,7 +942,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler" :subid("25_1267204688.82934") :method
+.sub "!PREFIX__nibbler" :subid("25_1272816831.40736") :method
.annotate "line", 3
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -951,7 +951,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish" :subid("26_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "termish" :subid("26_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx95_tgt
.local int rx95_pos
@@ -1019,7 +1019,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish" :subid("27_1267204688.82934") :method
+.sub "!PREFIX__termish" :subid("27_1272816831.40736") :method
.annotate "line", 3
new $P97, "ResizablePMCArray"
push $P97, ""
@@ -1028,9 +1028,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom" :subid("28_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "quantified_atom" :subid("28_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P110 = "30_1267204688.82934"
+ .const 'Sub' $P110 = "30_1272816831.40736"
capture_lex $P110
.local string rx102_tgt
.local int rx102_pos
@@ -1093,7 +1093,7 @@
alt108_1:
# rx subrule "before" subtype=zerowidth negate=
rx102_cur."!cursor_pos"(rx102_pos)
- .const 'Sub' $P110 = "30_1267204688.82934"
+ .const 'Sub' $P110 = "30_1272816831.40736"
capture_lex $P110
$P10 = rx102_cur."before"($P110)
unless $P10, rx102_fail
@@ -1131,7 +1131,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom" :subid("29_1267204688.82934") :method
+.sub "!PREFIX__quantified_atom" :subid("29_1272816831.40736") :method
.annotate "line", 3
$P104 = self."!PREFIX__!subrule"("atom", "")
new $P105, "ResizablePMCArray"
@@ -1141,7 +1141,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block109" :anon :subid("30_1267204688.82934") :method :outer("28_1267204688.82934")
+.sub "_block109" :anon :subid("30_1272816831.40736") :method :outer("28_1272816831.40736")
.annotate "line", 41
.local string rx111_tgt
.local int rx111_pos
@@ -1197,9 +1197,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom" :subid("31_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "atom" :subid("31_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P125 = "33_1267204688.82934"
+ .const 'Sub' $P125 = "33_1272816831.40736"
capture_lex $P125
.local string rx115_tgt
.local int rx115_pos
@@ -1259,7 +1259,7 @@
rxquantg122_done:
# rx subrule "before" subtype=zerowidth negate=
rx115_cur."!cursor_pos"(rx115_pos)
- .const 'Sub' $P125 = "33_1267204688.82934"
+ .const 'Sub' $P125 = "33_1272816831.40736"
capture_lex $P125
$P10 = rx115_cur."before"($P125)
unless $P10, rx115_fail
@@ -1296,7 +1296,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom" :subid("32_1267204688.82934") :method
+.sub "!PREFIX__atom" :subid("32_1272816831.40736") :method
.annotate "line", 3
$P117 = self."!PREFIX__!subrule"("metachar", "")
new $P118, "ResizablePMCArray"
@@ -1307,7 +1307,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block124" :anon :subid("33_1267204688.82934") :method :outer("31_1267204688.82934")
+.sub "_block124" :anon :subid("33_1272816831.40736") :method :outer("31_1272816831.40736")
.annotate "line", 47
.local string rx126_tgt
.local int rx126_pos
@@ -1362,7 +1362,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier" :subid("34_1267204688.82934") :method
+.sub "quantifier" :subid("34_1272816831.40736") :method
.annotate "line", 52
$P130 = self."!protoregex"("quantifier")
.return ($P130)
@@ -1370,7 +1370,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier" :subid("35_1267204688.82934") :method
+.sub "!PREFIX__quantifier" :subid("35_1272816831.40736") :method
.annotate "line", 52
$P132 = self."!PREFIX__!protoregex"("quantifier")
.return ($P132)
@@ -1378,7 +1378,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>" :subid("36_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "quantifier:sym<*>" :subid("36_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx134_tgt
.local int rx134_pos
@@ -1457,7 +1457,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>" :subid("37_1267204688.82934") :method
+.sub "!PREFIX__quantifier:sym<*>" :subid("37_1272816831.40736") :method
.annotate "line", 3
$P136 = self."!PREFIX__!subrule"("backmod", "*")
new $P137, "ResizablePMCArray"
@@ -1467,7 +1467,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>" :subid("38_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "quantifier:sym<+>" :subid("38_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx141_tgt
.local int rx141_pos
@@ -1546,7 +1546,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>" :subid("39_1267204688.82934") :method
+.sub "!PREFIX__quantifier:sym<+>" :subid("39_1272816831.40736") :method
.annotate "line", 3
$P143 = self."!PREFIX__!subrule"("backmod", "+")
new $P144, "ResizablePMCArray"
@@ -1556,7 +1556,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>" :subid("40_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "quantifier:sym<?>" :subid("40_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx148_tgt
.local int rx148_pos
@@ -1635,7 +1635,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>" :subid("41_1267204688.82934") :method
+.sub "!PREFIX__quantifier:sym<?>" :subid("41_1272816831.40736") :method
.annotate "line", 3
$P150 = self."!PREFIX__!subrule"("backmod", "?")
new $P151, "ResizablePMCArray"
@@ -1645,7 +1645,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>" :subid("42_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "quantifier:sym<**>" :subid("42_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx155_tgt
.local int rx155_pos
@@ -1834,7 +1834,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>" :subid("43_1267204688.82934") :method
+.sub "!PREFIX__quantifier:sym<**>" :subid("43_1272816831.40736") :method
.annotate "line", 3
new $P157, "ResizablePMCArray"
push $P157, "**"
@@ -1843,9 +1843,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod" :subid("44_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backmod" :subid("44_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P175 = "46_1267204688.82934"
+ .const 'Sub' $P175 = "46_1272816831.40736"
capture_lex $P175
.local string rx167_tgt
.local int rx167_pos
@@ -1915,7 +1915,7 @@
alt173_2:
# rx subrule "before" subtype=zerowidth negate=1
rx167_cur."!cursor_pos"(rx167_pos)
- .const 'Sub' $P175 = "46_1267204688.82934"
+ .const 'Sub' $P175 = "46_1272816831.40736"
capture_lex $P175
$P10 = rx167_cur."before"($P175)
if $P10, rx167_fail
@@ -1939,7 +1939,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod" :subid("45_1267204688.82934") :method
+.sub "!PREFIX__backmod" :subid("45_1272816831.40736") :method
.annotate "line", 3
new $P169, "ResizablePMCArray"
push $P169, ""
@@ -1948,7 +1948,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174" :anon :subid("46_1267204688.82934") :method :outer("44_1267204688.82934")
+.sub "_block174" :anon :subid("46_1272816831.40736") :method :outer("44_1272816831.40736")
.annotate "line", 71
.local string rx176_tgt
.local int rx176_pos
@@ -2004,7 +2004,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar" :subid("47_1267204688.82934") :method
+.sub "metachar" :subid("47_1272816831.40736") :method
.annotate "line", 73
$P179 = self."!protoregex"("metachar")
.return ($P179)
@@ -2012,7 +2012,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar" :subid("48_1267204688.82934") :method
+.sub "!PREFIX__metachar" :subid("48_1272816831.40736") :method
.annotate "line", 73
$P181 = self."!PREFIX__!protoregex"("metachar")
.return ($P181)
@@ -2020,7 +2020,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>" :subid("49_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<ws>" :subid("49_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx183_tgt
.local int rx183_pos
@@ -2076,7 +2076,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>" :subid("50_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<ws>" :subid("50_1272816831.40736") :method
.annotate "line", 3
$P185 = self."!PREFIX__!subrule"("", "")
new $P186, "ResizablePMCArray"
@@ -2086,7 +2086,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>" :subid("51_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<[ ]>" :subid("51_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx189_tgt
.local int rx189_pos
@@ -2158,7 +2158,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>" :subid("52_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<[ ]>" :subid("52_1272816831.40736") :method
.annotate "line", 3
$P191 = self."!PREFIX__!subrule"("nibbler", "[")
new $P192, "ResizablePMCArray"
@@ -2168,7 +2168,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>" :subid("53_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<( )>" :subid("53_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx195_tgt
.local int rx195_pos
@@ -2240,7 +2240,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>" :subid("54_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<( )>" :subid("54_1272816831.40736") :method
.annotate "line", 3
$P197 = self."!PREFIX__!subrule"("nibbler", "(")
new $P198, "ResizablePMCArray"
@@ -2250,7 +2250,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>" :subid("55_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<'>" :subid("55_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx201_tgt
.local int rx201_pos
@@ -2314,7 +2314,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>" :subid("56_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<'>" :subid("56_1272816831.40736") :method
.annotate "line", 3
new $P203, "ResizablePMCArray"
push $P203, "'"
@@ -2323,7 +2323,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">" :subid("57_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<\">" :subid("57_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx206_tgt
.local int rx206_pos
@@ -2387,7 +2387,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">" :subid("58_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<\">" :subid("58_1272816831.40736") :method
.annotate "line", 3
new $P208, "ResizablePMCArray"
push $P208, "\""
@@ -2396,7 +2396,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>" :subid("59_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<.>" :subid("59_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx211_tgt
.local int rx211_pos
@@ -2468,7 +2468,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>" :subid("60_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<.>" :subid("60_1272816831.40736") :method
.annotate "line", 3
new $P213, "ResizablePMCArray"
push $P213, "."
@@ -2477,7 +2477,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>" :subid("61_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<^>" :subid("61_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx217_tgt
.local int rx217_pos
@@ -2549,7 +2549,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>" :subid("62_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<^>" :subid("62_1272816831.40736") :method
.annotate "line", 3
new $P219, "ResizablePMCArray"
push $P219, "^"
@@ -2558,7 +2558,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>" :subid("63_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<^^>" :subid("63_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx223_tgt
.local int rx223_pos
@@ -2630,7 +2630,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>" :subid("64_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<^^>" :subid("64_1272816831.40736") :method
.annotate "line", 3
new $P225, "ResizablePMCArray"
push $P225, "^^"
@@ -2639,7 +2639,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>" :subid("65_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<$>" :subid("65_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx229_tgt
.local int rx229_pos
@@ -2711,7 +2711,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>" :subid("66_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<$>" :subid("66_1272816831.40736") :method
.annotate "line", 3
new $P231, "ResizablePMCArray"
push $P231, "$"
@@ -2720,7 +2720,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>" :subid("67_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<$$>" :subid("67_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx235_tgt
.local int rx235_pos
@@ -2792,7 +2792,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>" :subid("68_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<$$>" :subid("68_1272816831.40736") :method
.annotate "line", 3
new $P237, "ResizablePMCArray"
push $P237, "$$"
@@ -2801,7 +2801,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>" :subid("69_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<:::>" :subid("69_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx241_tgt
.local int rx241_pos
@@ -2878,7 +2878,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>" :subid("70_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<:::>" :subid("70_1272816831.40736") :method
.annotate "line", 3
$P243 = self."!PREFIX__!subrule"("", ":::")
new $P244, "ResizablePMCArray"
@@ -2888,7 +2888,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>" :subid("71_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<::>" :subid("71_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx248_tgt
.local int rx248_pos
@@ -2965,7 +2965,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>" :subid("72_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<::>" :subid("72_1272816831.40736") :method
.annotate "line", 3
$P250 = self."!PREFIX__!subrule"("", "::")
new $P251, "ResizablePMCArray"
@@ -2975,7 +2975,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>" :subid("73_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<lwb>" :subid("73_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx255_tgt
.local int rx255_pos
@@ -3060,7 +3060,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>" :subid("74_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<lwb>" :subid("74_1272816831.40736") :method
.annotate "line", 3
new $P257, "ResizablePMCArray"
push $P257, unicode:"\x{ab}"
@@ -3070,7 +3070,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>" :subid("75_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<rwb>" :subid("75_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx262_tgt
.local int rx262_pos
@@ -3155,7 +3155,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>" :subid("76_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<rwb>" :subid("76_1272816831.40736") :method
.annotate "line", 3
new $P264, "ResizablePMCArray"
push $P264, unicode:"\x{bb}"
@@ -3165,7 +3165,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>" :subid("77_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<bs>" :subid("77_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx269_tgt
.local int rx269_pos
@@ -3230,7 +3230,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>" :subid("78_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<bs>" :subid("78_1272816831.40736") :method
.annotate "line", 3
$P271 = self."!PREFIX__!subrule"("backslash", "\\")
new $P272, "ResizablePMCArray"
@@ -3240,7 +3240,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>" :subid("79_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<mod>" :subid("79_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx275_tgt
.local int rx275_pos
@@ -3298,7 +3298,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>" :subid("80_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<mod>" :subid("80_1272816831.40736") :method
.annotate "line", 3
$P277 = self."!PREFIX__!subrule"("mod_internal", "")
new $P278, "ResizablePMCArray"
@@ -3308,7 +3308,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>" :subid("81_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<~>" :subid("81_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx281_tgt
.local int rx281_pos
@@ -3407,7 +3407,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>" :subid("82_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<~>" :subid("82_1272816831.40736") :method
.annotate "line", 3
$P283 = self."!PREFIX__!subrule"("", "~")
new $P284, "ResizablePMCArray"
@@ -3417,7 +3417,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>" :subid("83_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<{*}>" :subid("83_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx288_tgt
.local int rx288_pos
@@ -3584,7 +3584,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>" :subid("84_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<{*}>" :subid("84_1272816831.40736") :method
.annotate "line", 3
new $P290, "ResizablePMCArray"
push $P290, "{*}"
@@ -3593,7 +3593,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>" :subid("85_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<assert>" :subid("85_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx305_tgt
.local int rx305_pos
@@ -3678,7 +3678,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>" :subid("86_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<assert>" :subid("86_1272816831.40736") :method
.annotate "line", 3
$P307 = self."!PREFIX__!subrule"("assertion", "<")
new $P308, "ResizablePMCArray"
@@ -3688,7 +3688,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>" :subid("87_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<var>" :subid("87_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx312_tgt
.local int rx312_pos
@@ -3850,7 +3850,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>" :subid("88_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<var>" :subid("88_1272816831.40736") :method
.annotate "line", 3
new $P314, "ResizablePMCArray"
push $P314, "$"
@@ -3860,7 +3860,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>" :subid("89_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "metachar:sym<PIR>" :subid("89_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx324_tgt
.local int rx324_pos
@@ -3951,7 +3951,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>" :subid("90_1267204688.82934") :method
+.sub "!PREFIX__metachar:sym<PIR>" :subid("90_1272816831.40736") :method
.annotate "line", 3
new $P326, "ResizablePMCArray"
push $P326, ":PIR{{"
@@ -3960,7 +3960,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash" :subid("91_1267204688.82934") :method
+.sub "backslash" :subid("91_1272816831.40736") :method
.annotate "line", 120
$P332 = self."!protoregex"("backslash")
.return ($P332)
@@ -3968,7 +3968,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash" :subid("92_1267204688.82934") :method
+.sub "!PREFIX__backslash" :subid("92_1272816831.40736") :method
.annotate "line", 120
$P334 = self."!PREFIX__!protoregex"("backslash")
.return ($P334)
@@ -3976,7 +3976,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>" :subid("93_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<w>" :subid("93_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx336_tgt
.local int rx336_pos
@@ -4048,7 +4048,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>" :subid("94_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<w>" :subid("94_1272816831.40736") :method
.annotate "line", 3
new $P338, "ResizablePMCArray"
push $P338, "N"
@@ -4064,7 +4064,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>" :subid("95_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<b>" :subid("95_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx342_tgt
.local int rx342_pos
@@ -4136,7 +4136,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>" :subid("96_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<b>" :subid("96_1272816831.40736") :method
.annotate "line", 3
new $P344, "ResizablePMCArray"
push $P344, "B"
@@ -4146,7 +4146,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>" :subid("97_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<e>" :subid("97_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx348_tgt
.local int rx348_pos
@@ -4218,7 +4218,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>" :subid("98_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<e>" :subid("98_1272816831.40736") :method
.annotate "line", 3
new $P350, "ResizablePMCArray"
push $P350, "E"
@@ -4228,7 +4228,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>" :subid("99_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<f>" :subid("99_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx354_tgt
.local int rx354_pos
@@ -4300,7 +4300,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>" :subid("100_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<f>" :subid("100_1272816831.40736") :method
.annotate "line", 3
new $P356, "ResizablePMCArray"
push $P356, "F"
@@ -4310,7 +4310,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>" :subid("101_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<h>" :subid("101_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx360_tgt
.local int rx360_pos
@@ -4382,7 +4382,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>" :subid("102_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<h>" :subid("102_1272816831.40736") :method
.annotate "line", 3
new $P362, "ResizablePMCArray"
push $P362, "H"
@@ -4392,7 +4392,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>" :subid("103_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<r>" :subid("103_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx366_tgt
.local int rx366_pos
@@ -4464,7 +4464,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>" :subid("104_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<r>" :subid("104_1272816831.40736") :method
.annotate "line", 3
new $P368, "ResizablePMCArray"
push $P368, "R"
@@ -4474,7 +4474,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>" :subid("105_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<t>" :subid("105_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx372_tgt
.local int rx372_pos
@@ -4546,7 +4546,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>" :subid("106_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<t>" :subid("106_1272816831.40736") :method
.annotate "line", 3
new $P374, "ResizablePMCArray"
push $P374, "T"
@@ -4556,7 +4556,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>" :subid("107_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<v>" :subid("107_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx378_tgt
.local int rx378_pos
@@ -4628,7 +4628,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>" :subid("108_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<v>" :subid("108_1272816831.40736") :method
.annotate "line", 3
new $P380, "ResizablePMCArray"
push $P380, "V"
@@ -4638,7 +4638,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>" :subid("109_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<o>" :subid("109_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx384_tgt
.local int rx384_pos
@@ -4744,7 +4744,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>" :subid("110_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<o>" :subid("110_1272816831.40736") :method
.annotate "line", 3
$P386 = self."!PREFIX__!subrule"("octints", "O[")
$P387 = self."!PREFIX__!subrule"("octint", "O")
@@ -4760,7 +4760,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>" :subid("111_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<x>" :subid("111_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx395_tgt
.local int rx395_pos
@@ -4866,7 +4866,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>" :subid("112_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<x>" :subid("112_1272816831.40736") :method
.annotate "line", 3
$P397 = self."!PREFIX__!subrule"("hexints", "X[")
$P398 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4882,7 +4882,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>" :subid("113_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<c>" :subid("113_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx406_tgt
.local int rx406_pos
@@ -4961,7 +4961,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>" :subid("114_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<c>" :subid("114_1272816831.40736") :method
.annotate "line", 3
$P408 = self."!PREFIX__!subrule"("charspec", "C")
$P409 = self."!PREFIX__!subrule"("charspec", "c")
@@ -4973,7 +4973,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>" :subid("115_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<A>" :subid("115_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx414_tgt
.local int rx414_pos
@@ -5036,7 +5036,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>" :subid("116_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<A>" :subid("116_1272816831.40736") :method
.annotate "line", 3
$P416 = self."!PREFIX__!subrule"("", "A")
new $P417, "ResizablePMCArray"
@@ -5046,7 +5046,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>" :subid("117_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<z>" :subid("117_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx420_tgt
.local int rx420_pos
@@ -5109,7 +5109,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>" :subid("118_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<z>" :subid("118_1272816831.40736") :method
.annotate "line", 3
$P422 = self."!PREFIX__!subrule"("", "z")
new $P423, "ResizablePMCArray"
@@ -5119,7 +5119,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>" :subid("119_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<Z>" :subid("119_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx426_tgt
.local int rx426_pos
@@ -5182,7 +5182,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>" :subid("120_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<Z>" :subid("120_1272816831.40736") :method
.annotate "line", 3
$P428 = self."!PREFIX__!subrule"("", "Z")
new $P429, "ResizablePMCArray"
@@ -5192,7 +5192,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>" :subid("121_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<Q>" :subid("121_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx432_tgt
.local int rx432_pos
@@ -5255,7 +5255,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>" :subid("122_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<Q>" :subid("122_1272816831.40736") :method
.annotate "line", 3
$P434 = self."!PREFIX__!subrule"("", "Q")
new $P435, "ResizablePMCArray"
@@ -5265,7 +5265,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>" :subid("123_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "backslash:sym<misc>" :subid("123_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx438_tgt
.local int rx438_pos
@@ -5322,7 +5322,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>" :subid("124_1267204688.82934") :method
+.sub "!PREFIX__backslash:sym<misc>" :subid("124_1272816831.40736") :method
.annotate "line", 3
new $P440, "ResizablePMCArray"
push $P440, ""
@@ -5331,7 +5331,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion" :subid("125_1267204688.82934") :method
+.sub "assertion" :subid("125_1272816831.40736") :method
.annotate "line", 138
$P443 = self."!protoregex"("assertion")
.return ($P443)
@@ -5339,7 +5339,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion" :subid("126_1267204688.82934") :method
+.sub "!PREFIX__assertion" :subid("126_1272816831.40736") :method
.annotate "line", 138
$P445 = self."!PREFIX__!protoregex"("assertion")
.return ($P445)
@@ -5347,9 +5347,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>" :subid("127_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "assertion:sym<?>" :subid("127_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P454 = "129_1267204688.82934"
+ .const 'Sub' $P454 = "129_1272816831.40736"
capture_lex $P454
.local string rx447_tgt
.local int rx447_pos
@@ -5393,7 +5393,7 @@
rx447_cur."!mark_push"(0, rx447_pos, $I10)
# rx subrule "before" subtype=zerowidth negate=
rx447_cur."!cursor_pos"(rx447_pos)
- .const 'Sub' $P454 = "129_1267204688.82934"
+ .const 'Sub' $P454 = "129_1272816831.40736"
capture_lex $P454
$P10 = rx447_cur."before"($P454)
unless $P10, rx447_fail
@@ -5426,7 +5426,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>" :subid("128_1267204688.82934") :method
+.sub "!PREFIX__assertion:sym<?>" :subid("128_1272816831.40736") :method
.annotate "line", 3
$P449 = self."!PREFIX__!subrule"("assertion", "?")
new $P450, "ResizablePMCArray"
@@ -5437,7 +5437,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block453" :anon :subid("129_1267204688.82934") :method :outer("127_1267204688.82934")
+.sub "_block453" :anon :subid("129_1272816831.40736") :method :outer("127_1272816831.40736")
.annotate "line", 140
.local string rx455_tgt
.local int rx455_pos
@@ -5493,9 +5493,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>" :subid("130_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "assertion:sym<!>" :subid("130_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P465 = "132_1267204688.82934"
+ .const 'Sub' $P465 = "132_1272816831.40736"
capture_lex $P465
.local string rx458_tgt
.local int rx458_pos
@@ -5539,7 +5539,7 @@
rx458_cur."!mark_push"(0, rx458_pos, $I10)
# rx subrule "before" subtype=zerowidth negate=
rx458_cur."!cursor_pos"(rx458_pos)
- .const 'Sub' $P465 = "132_1267204688.82934"
+ .const 'Sub' $P465 = "132_1272816831.40736"
capture_lex $P465
$P10 = rx458_cur."before"($P465)
unless $P10, rx458_fail
@@ -5572,7 +5572,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>" :subid("131_1267204688.82934") :method
+.sub "!PREFIX__assertion:sym<!>" :subid("131_1272816831.40736") :method
.annotate "line", 3
$P460 = self."!PREFIX__!subrule"("assertion", "!")
new $P461, "ResizablePMCArray"
@@ -5583,7 +5583,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block464" :anon :subid("132_1267204688.82934") :method :outer("130_1267204688.82934")
+.sub "_block464" :anon :subid("132_1272816831.40736") :method :outer("130_1272816831.40736")
.annotate "line", 141
.local string rx466_tgt
.local int rx466_pos
@@ -5639,7 +5639,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>" :subid("133_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "assertion:sym<method>" :subid("133_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx469_tgt
.local int rx469_pos
@@ -5705,7 +5705,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>" :subid("134_1267204688.82934") :method
+.sub "!PREFIX__assertion:sym<method>" :subid("134_1272816831.40736") :method
.annotate "line", 3
$P471 = self."!PREFIX__!subrule"("assertion", ".")
new $P472, "ResizablePMCArray"
@@ -5715,9 +5715,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>" :subid("135_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "assertion:sym<name>" :subid("135_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P483 = "137_1267204688.82934"
+ .const 'Sub' $P483 = "137_1272816831.40736"
capture_lex $P483
.local string rx475_tgt
.local int rx475_pos
@@ -5782,7 +5782,7 @@
.annotate "line", 150
# rx subrule "before" subtype=zerowidth negate=
rx475_cur."!cursor_pos"(rx475_pos)
- .const 'Sub' $P483 = "137_1267204688.82934"
+ .const 'Sub' $P483 = "137_1272816831.40736"
capture_lex $P483
$P10 = rx475_cur."before"($P483)
unless $P10, rx475_fail
@@ -5889,7 +5889,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>" :subid("136_1267204688.82934") :method
+.sub "!PREFIX__assertion:sym<name>" :subid("136_1272816831.40736") :method
.annotate "line", 3
new $P477, "ResizablePMCArray"
push $P477, ""
@@ -5898,7 +5898,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482" :anon :subid("137_1267204688.82934") :method :outer("135_1267204688.82934")
+.sub "_block482" :anon :subid("137_1272816831.40736") :method :outer("135_1272816831.40736")
.annotate "line", 150
.local string rx484_tgt
.local int rx484_pos
@@ -5954,9 +5954,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>" :subid("138_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "assertion:sym<[>" :subid("138_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P493 = "140_1267204688.82934"
+ .const 'Sub' $P493 = "140_1272816831.40736"
capture_lex $P493
.local string rx488_tgt
.local int rx488_pos
@@ -5991,7 +5991,7 @@
.annotate "line", 158
# rx subrule "before" subtype=zerowidth negate=
rx488_cur."!cursor_pos"(rx488_pos)
- .const 'Sub' $P493 = "140_1267204688.82934"
+ .const 'Sub' $P493 = "140_1272816831.40736"
capture_lex $P493
$P10 = rx488_cur."before"($P493)
unless $P10, rx488_fail
@@ -6029,7 +6029,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>" :subid("139_1267204688.82934") :method
+.sub "!PREFIX__assertion:sym<[>" :subid("139_1272816831.40736") :method
.annotate "line", 3
new $P490, "ResizablePMCArray"
push $P490, ""
@@ -6038,7 +6038,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492" :anon :subid("140_1267204688.82934") :method :outer("138_1267204688.82934")
+.sub "_block492" :anon :subid("140_1272816831.40736") :method :outer("138_1272816831.40736")
.annotate "line", 158
.local string rx494_tgt
.local int rx494_pos
@@ -6118,9 +6118,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem" :subid("141_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "cclass_elem" :subid("141_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P511 = "143_1267204688.82934"
+ .const 'Sub' $P511 = "143_1272816831.40736"
capture_lex $P511
.local string rx500_tgt
.local int rx500_pos
@@ -6223,7 +6223,7 @@
.annotate "line", 164
# rx subrule $P511 subtype=capture negate=
rx500_cur."!cursor_pos"(rx500_pos)
- .const 'Sub' $P511 = "143_1267204688.82934"
+ .const 'Sub' $P511 = "143_1272816831.40736"
capture_lex $P511
$P10 = rx500_cur.$P511()
unless $P10, rx500_fail
@@ -6304,7 +6304,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem" :subid("142_1267204688.82934") :method
+.sub "!PREFIX__cclass_elem" :subid("142_1272816831.40736") :method
.annotate "line", 3
new $P502, "ResizablePMCArray"
push $P502, ""
@@ -6315,13 +6315,13 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510" :anon :subid("143_1267204688.82934") :method :outer("141_1267204688.82934")
+.sub "_block510" :anon :subid("143_1272816831.40736") :method :outer("141_1272816831.40736")
.annotate "line", 164
- .const 'Sub' $P526 = "146_1267204688.82934"
+ .const 'Sub' $P526 = "146_1272816831.40736"
capture_lex $P526
- .const 'Sub' $P521 = "145_1267204688.82934"
+ .const 'Sub' $P521 = "145_1272816831.40736"
capture_lex $P521
- .const 'Sub' $P517 = "144_1267204688.82934"
+ .const 'Sub' $P517 = "144_1272816831.40736"
capture_lex $P517
.local string rx512_tgt
.local int rx512_pos
@@ -6392,7 +6392,7 @@
add rx512_pos, 1
# rx subrule $P517 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P517 = "144_1267204688.82934"
+ .const 'Sub' $P517 = "144_1272816831.40736"
capture_lex $P517
$P10 = rx512_cur.$P517()
unless $P10, rx512_fail
@@ -6403,7 +6403,7 @@
alt515_1:
# rx subrule $P521 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P521 = "145_1267204688.82934"
+ .const 'Sub' $P521 = "145_1272816831.40736"
capture_lex $P521
$P10 = rx512_cur.$P521()
unless $P10, rx512_fail
@@ -6432,7 +6432,7 @@
add rx512_pos, rx512_off, $I11
# rx subrule $P526 subtype=capture negate=
rx512_cur."!cursor_pos"(rx512_pos)
- .const 'Sub' $P526 = "146_1267204688.82934"
+ .const 'Sub' $P526 = "146_1272816831.40736"
capture_lex $P526
$P10 = rx512_cur.$P526()
unless $P10, rx512_fail
@@ -6461,7 +6461,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516" :anon :subid("144_1267204688.82934") :method :outer("143_1267204688.82934")
+.sub "_block516" :anon :subid("144_1272816831.40736") :method :outer("143_1272816831.40736")
.annotate "line", 166
.local string rx518_tgt
.local int rx518_pos
@@ -6513,7 +6513,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520" :anon :subid("145_1267204688.82934") :method :outer("143_1267204688.82934")
+.sub "_block520" :anon :subid("145_1272816831.40736") :method :outer("143_1272816831.40736")
.annotate "line", 166
.local string rx522_tgt
.local int rx522_pos
@@ -6569,7 +6569,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525" :anon :subid("146_1267204688.82934") :method :outer("143_1267204688.82934")
+.sub "_block525" :anon :subid("146_1272816831.40736") :method :outer("143_1272816831.40736")
.annotate "line", 166
.local string rx527_tgt
.local int rx527_pos
@@ -6621,9 +6621,9 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal" :subid("147_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "mod_internal" :subid("147_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
- .const 'Sub' $P543 = "149_1267204688.82934"
+ .const 'Sub' $P543 = "149_1272816831.40736"
capture_lex $P543
.local string rx535_tgt
.local int rx535_pos
@@ -6673,7 +6673,7 @@
rxquantr541_loop:
# rx subrule $P543 subtype=capture negate=
rx535_cur."!cursor_pos"(rx535_pos)
- .const 'Sub' $P543 = "149_1267204688.82934"
+ .const 'Sub' $P543 = "149_1272816831.40736"
capture_lex $P543
$P10 = rx535_cur.$P543()
unless $P10, rx535_fail
@@ -6775,7 +6775,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal" :subid("148_1267204688.82934") :method
+.sub "!PREFIX__mod_internal" :subid("148_1272816831.40736") :method
.annotate "line", 3
$P537 = self."!PREFIX__!subrule"("mod_ident", ":")
new $P538, "ResizablePMCArray"
@@ -6786,7 +6786,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block542" :anon :subid("149_1267204688.82934") :method :outer("147_1267204688.82934")
+.sub "_block542" :anon :subid("149_1272816831.40736") :method :outer("147_1272816831.40736")
.annotate "line", 176
.local string rx544_tgt
.local int rx544_pos
@@ -6854,7 +6854,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident" :subid("150_1267204688.82934") :method
+.sub "mod_ident" :subid("150_1272816831.40736") :method
.annotate "line", 181
$P552 = self."!protoregex"("mod_ident")
.return ($P552)
@@ -6862,7 +6862,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident" :subid("151_1267204688.82934") :method
+.sub "!PREFIX__mod_ident" :subid("151_1272816831.40736") :method
.annotate "line", 181
$P554 = self."!PREFIX__!protoregex"("mod_ident")
.return ($P554)
@@ -6870,7 +6870,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>" :subid("152_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "mod_ident:sym<ignorecase>" :subid("152_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx556_tgt
.local int rx556_pos
@@ -6955,7 +6955,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>" :subid("153_1267204688.82934") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>" :subid("153_1272816831.40736") :method
.annotate "line", 3
new $P558, "ResizablePMCArray"
push $P558, "i"
@@ -6964,7 +6964,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>" :subid("154_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "mod_ident:sym<ratchet>" :subid("154_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx564_tgt
.local int rx564_pos
@@ -7049,7 +7049,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>" :subid("155_1267204688.82934") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>" :subid("155_1272816831.40736") :method
.annotate "line", 3
new $P566, "ResizablePMCArray"
push $P566, "r"
@@ -7058,7 +7058,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>" :subid("156_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "mod_ident:sym<sigspace>" :subid("156_1272816831.40736") :method :outer("11_1272816831.40736")
.annotate "line", 3
.local string rx572_tgt
.local int rx572_pos
@@ -7143,7 +7143,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>" :subid("157_1267204688.82934") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>" :subid("157_1272816831.40736") :method
.annotate "line", 3
new $P574, "ResizablePMCArray"
push $P574, "s"
@@ -7153,7 +7153,7 @@
### .include 'gen/p6regex-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204695.47543")
+.sub "_block11" :anon :subid("10_1272816836.73052")
.annotate "line", 0
get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13"
capture_lex $P14
@@ -7167,9 +7167,9 @@
.namespace []
-.sub "" :load :init :subid("post90") :outer("10_1267204695.47543")
+.sub "" :load :init :subid("post90") :outer("10_1272816836.73052")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204695.47543"
+ .const 'Sub' $P12 = "10_1272816836.73052"
.local pmc block
set block, $P12
$P1570 = get_root_global ["parrot"], "P6metaclass"
@@ -7178,117 +7178,117 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13" :subid("11_1267204695.47543") :outer("10_1267204695.47543")
+.sub "_block13" :subid("11_1272816836.73052") :outer("10_1272816836.73052")
.annotate "line", 4
- .const 'Sub' $P1536 = "89_1267204695.47543"
+ .const 'Sub' $P1536 = "89_1272816836.73052"
capture_lex $P1536
- .const 'Sub' $P1467 = "85_1267204695.47543"
+ .const 'Sub' $P1467 = "85_1272816836.73052"
capture_lex $P1467
- .const 'Sub' $P1399 = "83_1267204695.47543"
+ .const 'Sub' $P1399 = "83_1272816836.73052"
capture_lex $P1399
- .const 'Sub' $P1326 = "80_1267204695.47543"
+ .const 'Sub' $P1326 = "80_1272816836.73052"
capture_lex $P1326
- .const 'Sub' $P1312 = "79_1267204695.47543"
+ .const 'Sub' $P1312 = "79_1272816836.73052"
capture_lex $P1312
- .const 'Sub' $P1288 = "78_1267204695.47543"
+ .const 'Sub' $P1288 = "78_1272816836.73052"
capture_lex $P1288
- .const 'Sub' $P1270 = "77_1267204695.47543"
+ .const 'Sub' $P1270 = "77_1272816836.73052"
capture_lex $P1270
- .const 'Sub' $P1256 = "76_1267204695.47543"
+ .const 'Sub' $P1256 = "76_1272816836.73052"
capture_lex $P1256
- .const 'Sub' $P1243 = "75_1267204695.47543"
+ .const 'Sub' $P1243 = "75_1272816836.73052"
capture_lex $P1243
- .const 'Sub' $P1212 = "74_1267204695.47543"
+ .const 'Sub' $P1212 = "74_1272816836.73052"
capture_lex $P1212
- .const 'Sub' $P1181 = "73_1267204695.47543"
+ .const 'Sub' $P1181 = "73_1272816836.73052"
capture_lex $P1181
- .const 'Sub' $P1165 = "72_1267204695.47543"
+ .const 'Sub' $P1165 = "72_1272816836.73052"
capture_lex $P1165
- .const 'Sub' $P1149 = "71_1267204695.47543"
+ .const 'Sub' $P1149 = "71_1272816836.73052"
capture_lex $P1149
- .const 'Sub' $P1133 = "70_1267204695.47543"
+ .const 'Sub' $P1133 = "70_1272816836.73052"
capture_lex $P1133
- .const 'Sub' $P1117 = "69_1267204695.47543"
+ .const 'Sub' $P1117 = "69_1272816836.73052"
capture_lex $P1117
- .const 'Sub' $P1101 = "68_1267204695.47543"
+ .const 'Sub' $P1101 = "68_1272816836.73052"
capture_lex $P1101
- .const 'Sub' $P1085 = "67_1267204695.47543"
+ .const 'Sub' $P1085 = "67_1272816836.73052"
capture_lex $P1085
- .const 'Sub' $P1069 = "66_1267204695.47543"
+ .const 'Sub' $P1069 = "66_1272816836.73052"
capture_lex $P1069
- .const 'Sub' $P1045 = "65_1267204695.47543"
+ .const 'Sub' $P1045 = "65_1272816836.73052"
capture_lex $P1045
- .const 'Sub' $P1030 = "64_1267204695.47543"
+ .const 'Sub' $P1030 = "64_1272816836.73052"
capture_lex $P1030
- .const 'Sub' $P974 = "63_1267204695.47543"
+ .const 'Sub' $P974 = "63_1272816836.73052"
capture_lex $P974
- .const 'Sub' $P953 = "62_1267204695.47543"
+ .const 'Sub' $P953 = "62_1272816836.73052"
capture_lex $P953
- .const 'Sub' $P931 = "61_1267204695.47543"
+ .const 'Sub' $P931 = "61_1272816836.73052"
capture_lex $P931
- .const 'Sub' $P921 = "60_1267204695.47543"
+ .const 'Sub' $P921 = "60_1272816836.73052"
capture_lex $P921
- .const 'Sub' $P911 = "59_1267204695.47543"
+ .const 'Sub' $P911 = "59_1272816836.73052"
capture_lex $P911
- .const 'Sub' $P901 = "58_1267204695.47543"
+ .const 'Sub' $P901 = "58_1272816836.73052"
capture_lex $P901
- .const 'Sub' $P889 = "57_1267204695.47543"
+ .const 'Sub' $P889 = "57_1272816836.73052"
capture_lex $P889
- .const 'Sub' $P877 = "56_1267204695.47543"
+ .const 'Sub' $P877 = "56_1272816836.73052"
capture_lex $P877
- .const 'Sub' $P865 = "55_1267204695.47543"
+ .const 'Sub' $P865 = "55_1272816836.73052"
capture_lex $P865
- .const 'Sub' $P853 = "54_1267204695.47543"
+ .const 'Sub' $P853 = "54_1272816836.73052"
capture_lex $P853
- .const 'Sub' $P841 = "53_1267204695.47543"
+ .const 'Sub' $P841 = "53_1272816836.73052"
capture_lex $P841
- .const 'Sub' $P829 = "52_1267204695.47543"
+ .const 'Sub' $P829 = "52_1272816836.73052"
capture_lex $P829
- .const 'Sub' $P817 = "51_1267204695.47543"
+ .const 'Sub' $P817 = "51_1272816836.73052"
capture_lex $P817
- .const 'Sub' $P805 = "50_1267204695.47543"
+ .const 'Sub' $P805 = "50_1272816836.73052"
capture_lex $P805
- .const 'Sub' $P782 = "49_1267204695.47543"
+ .const 'Sub' $P782 = "49_1272816836.73052"
capture_lex $P782
- .const 'Sub' $P759 = "48_1267204695.47543"
+ .const 'Sub' $P759 = "48_1272816836.73052"
capture_lex $P759
- .const 'Sub' $P741 = "47_1267204695.47543"
+ .const 'Sub' $P741 = "47_1272816836.73052"
capture_lex $P741
- .const 'Sub' $P731 = "46_1267204695.47543"
+ .const 'Sub' $P731 = "46_1272816836.73052"
capture_lex $P731
- .const 'Sub' $P713 = "45_1267204695.47543"
+ .const 'Sub' $P713 = "45_1272816836.73052"
capture_lex $P713
- .const 'Sub' $P666 = "44_1267204695.47543"
+ .const 'Sub' $P666 = "44_1272816836.73052"
capture_lex $P666
- .const 'Sub' $P649 = "43_1267204695.47543"
+ .const 'Sub' $P649 = "43_1272816836.73052"
capture_lex $P649
- .const 'Sub' $P634 = "42_1267204695.47543"
+ .const 'Sub' $P634 = "42_1272816836.73052"
capture_lex $P634
- .const 'Sub' $P619 = "41_1267204695.47543"
+ .const 'Sub' $P619 = "41_1272816836.73052"
capture_lex $P619
- .const 'Sub' $P593 = "40_1267204695.47543"
+ .const 'Sub' $P593 = "40_1272816836.73052"
capture_lex $P593
- .const 'Sub' $P543 = "38_1267204695.47543"
+ .const 'Sub' $P543 = "38_1272816836.73052"
capture_lex $P543
- .const 'Sub' $P475 = "36_1267204695.47543"
+ .const 'Sub' $P475 = "36_1272816836.73052"
capture_lex $P475
- .const 'Sub' $P420 = "33_1267204695.47543"
+ .const 'Sub' $P420 = "33_1272816836.73052"
capture_lex $P420
- .const 'Sub' $P405 = "32_1267204695.47543"
+ .const 'Sub' $P405 = "32_1272816836.73052"
capture_lex $P405
- .const 'Sub' $P379 = "30_1267204695.47543"
+ .const 'Sub' $P379 = "30_1272816836.73052"
capture_lex $P379
- .const 'Sub' $P362 = "29_1267204695.47543"
+ .const 'Sub' $P362 = "29_1272816836.73052"
capture_lex $P362
- .const 'Sub' $P340 = "28_1267204695.47543"
+ .const 'Sub' $P340 = "28_1272816836.73052"
capture_lex $P340
- .const 'Sub' $P308 = "27_1267204695.47543"
+ .const 'Sub' $P308 = "27_1272816836.73052"
capture_lex $P308
- .const 'Sub' $P54 = "14_1267204695.47543"
+ .const 'Sub' $P54 = "14_1272816836.73052"
capture_lex $P54
- .const 'Sub' $P21 = "13_1267204695.47543"
+ .const 'Sub' $P21 = "13_1272816836.73052"
capture_lex $P21
- .const 'Sub' $P16 = "12_1267204695.47543"
+ .const 'Sub' $P16 = "12_1272816836.73052"
capture_lex $P16
get_global $P15, "@MODIFIERS"
unless_null $P15, vivify_91
@@ -7296,23 +7296,23 @@
set_global "@MODIFIERS", $P15
vivify_91:
.annotate "line", 6
- .const 'Sub' $P16 = "12_1267204695.47543"
+ .const 'Sub' $P16 = "12_1272816836.73052"
capture_lex $P16
.lex "INIT", $P16
.annotate "line", 479
- .const 'Sub' $P21 = "13_1267204695.47543"
+ .const 'Sub' $P21 = "13_1272816836.73052"
capture_lex $P21
.lex "buildsub", $P21
.annotate "line", 496
- .const 'Sub' $P54 = "14_1267204695.47543"
+ .const 'Sub' $P54 = "14_1272816836.73052"
capture_lex $P54
.lex "capnames", $P54
.annotate "line", 562
- .const 'Sub' $P308 = "27_1267204695.47543"
+ .const 'Sub' $P308 = "27_1272816836.73052"
capture_lex $P308
.lex "backmod", $P308
.annotate "line", 569
- .const 'Sub' $P340 = "28_1267204695.47543"
+ .const 'Sub' $P340 = "28_1272816836.73052"
capture_lex $P340
.lex "subrule_alias", $P340
.annotate "line", 4
@@ -7329,11 +7329,11 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT" :subid("12_1267204695.47543") :outer("11_1267204695.47543")
+.sub "INIT" :subid("12_1272816836.73052") :outer("11_1272816836.73052")
.annotate "line", 6
new $P18, 'ExceptionHandler'
set_addr $P18, control_17
- $P18."handle_types"(58)
+ $P18."handle_types"(57)
push_eh $P18
.annotate "line", 7
@@ -7353,14 +7353,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub" :subid("13_1267204695.47543") :outer("11_1267204695.47543")
+.sub "buildsub" :subid("13_1272816836.73052") :outer("11_1272816836.73052")
.param pmc param_24
.param pmc param_25 :optional
.param int has_param_25 :opt_flag
.annotate "line", 479
new $P23, 'ExceptionHandler'
set_addr $P23, control_22
- $P23."handle_types"(58)
+ $P23."handle_types"(57)
push_eh $P23
.lex "$rpast", param_24
if has_param_25, optparam_92
@@ -7430,23 +7430,23 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames" :subid("14_1267204695.47543") :outer("11_1267204695.47543")
+.sub "capnames" :subid("14_1272816836.73052") :outer("11_1272816836.73052")
.param pmc param_57
.param pmc param_58
.annotate "line", 496
- .const 'Sub' $P283 = "25_1267204695.47543"
+ .const 'Sub' $P283 = "25_1272816836.73052"
capture_lex $P283
- .const 'Sub' $P220 = "22_1267204695.47543"
+ .const 'Sub' $P220 = "22_1272816836.73052"
capture_lex $P220
- .const 'Sub' $P178 = "20_1267204695.47543"
+ .const 'Sub' $P178 = "20_1272816836.73052"
capture_lex $P178
- .const 'Sub' $P136 = "18_1267204695.47543"
+ .const 'Sub' $P136 = "18_1272816836.73052"
capture_lex $P136
- .const 'Sub' $P69 = "15_1267204695.47543"
+ .const 'Sub' $P69 = "15_1272816836.73052"
capture_lex $P69
new $P56, 'ExceptionHandler'
set_addr $P56, control_55
- $P56."handle_types"(58)
+ $P56."handle_types"(57)
push_eh $P56
.lex "$ast", param_57
.lex "$count", param_58
@@ -7498,21 +7498,21 @@
set $S280, $P279
iseq $I281, $S280, "quant"
unless $I281, if_278_end
- .const 'Sub' $P283 = "25_1267204695.47543"
+ .const 'Sub' $P283 = "25_1272816836.73052"
capture_lex $P283
$P283()
if_278_end:
goto if_215_end
if_215:
.annotate "line", 534
- .const 'Sub' $P220 = "22_1267204695.47543"
+ .const 'Sub' $P220 = "22_1272816836.73052"
capture_lex $P220
$P220()
if_215_end:
goto if_168_end
if_168:
.annotate "line", 521
- .const 'Sub' $P178 = "20_1267204695.47543"
+ .const 'Sub' $P178 = "20_1272816836.73052"
capture_lex $P178
$P178()
if_168_end:
@@ -7526,13 +7526,13 @@
iter $P130, $P132
new $P166, 'ExceptionHandler'
set_addr $P166, loop165_handler
- $P166."handle_types"(65, 67, 66)
+ $P166."handle_types"(64, 66, 65)
push_eh $P166
loop165_test:
unless $P130, loop165_done
shift $P134, $P130
loop165_redo:
- .const 'Sub' $P136 = "18_1267204695.47543"
+ .const 'Sub' $P136 = "18_1272816836.73052"
capture_lex $P136
$P136($P134)
loop165_next:
@@ -7541,8 +7541,8 @@
.local pmc exception
.get_results (exception)
getattribute $P167, exception, 'type'
- eq $P167, 65, loop165_next
- eq $P167, 67, loop165_redo
+ eq $P167, 64, loop165_next
+ eq $P167, 66, loop165_redo
loop165_done:
pop_eh
for_undef_114:
@@ -7551,7 +7551,7 @@
goto if_64_end
if_64:
.annotate "line", 499
- .const 'Sub' $P69 = "15_1267204695.47543"
+ .const 'Sub' $P69 = "15_1272816836.73052"
capture_lex $P69
$P69()
if_64_end:
@@ -7575,9 +7575,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block282" :anon :subid("25_1267204695.47543") :outer("14_1267204695.47543")
+.sub "_block282" :anon :subid("25_1272816836.73052") :outer("14_1272816836.73052")
.annotate "line", 551
- .const 'Sub' $P294 = "26_1267204695.47543"
+ .const 'Sub' $P294 = "26_1272816836.73052"
capture_lex $P294
.annotate "line", 552
$P284 = root_new ['parrot';'Hash']
@@ -7600,13 +7600,13 @@
iter $P289, $P290
new $P300, 'ExceptionHandler'
set_addr $P300, loop299_handler
- $P300."handle_types"(65, 67, 66)
+ $P300."handle_types"(64, 66, 65)
push_eh $P300
loop299_test:
unless $P289, loop299_done
shift $P292, $P289
loop299_redo:
- .const 'Sub' $P294 = "26_1267204695.47543"
+ .const 'Sub' $P294 = "26_1272816836.73052"
capture_lex $P294
$P294($P292)
loop299_next:
@@ -7615,8 +7615,8 @@
.local pmc exception
.get_results (exception)
getattribute $P301, exception, 'type'
- eq $P301, 65, loop299_next
- eq $P301, 67, loop299_redo
+ eq $P301, 64, loop299_next
+ eq $P301, 66, loop299_redo
loop299_done:
pop_eh
for_undef_96:
@@ -7636,7 +7636,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293" :anon :subid("26_1267204695.47543") :outer("25_1267204695.47543")
+.sub "_block293" :anon :subid("26_1272816836.73052") :outer("25_1272816836.73052")
.param pmc param_295
.annotate "line", 553
.lex "$_", param_295
@@ -7656,11 +7656,11 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block219" :anon :subid("22_1267204695.47543") :outer("14_1267204695.47543")
+.sub "_block219" :anon :subid("22_1272816836.73052") :outer("14_1272816836.73052")
.annotate "line", 534
- .const 'Sub' $P260 = "24_1267204695.47543"
+ .const 'Sub' $P260 = "24_1272816836.73052"
capture_lex $P260
- .const 'Sub' $P232 = "23_1267204695.47543"
+ .const 'Sub' $P232 = "23_1272816836.73052"
capture_lex $P232
.annotate "line", 535
new $P221, "Undef"
@@ -7689,13 +7689,13 @@
iter $P227, $P228
new $P249, 'ExceptionHandler'
set_addr $P249, loop248_handler
- $P249."handle_types"(65, 67, 66)
+ $P249."handle_types"(64, 66, 65)
push_eh $P249
loop248_test:
unless $P227, loop248_done
shift $P230, $P227
loop248_redo:
- .const 'Sub' $P232 = "23_1267204695.47543"
+ .const 'Sub' $P232 = "23_1272816836.73052"
capture_lex $P232
$P232($P230)
loop248_next:
@@ -7704,8 +7704,8 @@
.local pmc exception
.get_results (exception)
getattribute $P250, exception, 'type'
- eq $P250, 65, loop248_next
- eq $P250, 67, loop248_redo
+ eq $P250, 64, loop248_next
+ eq $P250, 66, loop248_redo
loop248_done:
pop_eh
for_undef_100:
@@ -7728,13 +7728,13 @@
iter $P255, $P256
new $P274, 'ExceptionHandler'
set_addr $P274, loop273_handler
- $P274."handle_types"(65, 67, 66)
+ $P274."handle_types"(64, 66, 65)
push_eh $P274
loop273_test:
unless $P255, loop273_done
shift $P258, $P255
loop273_redo:
- .const 'Sub' $P260 = "24_1267204695.47543"
+ .const 'Sub' $P260 = "24_1272816836.73052"
capture_lex $P260
$P260($P258)
loop273_next:
@@ -7743,8 +7743,8 @@
.local pmc exception
.get_results (exception)
getattribute $P275, exception, 'type'
- eq $P275, 65, loop273_next
- eq $P275, 67, loop273_redo
+ eq $P275, 64, loop273_next
+ eq $P275, 66, loop273_redo
loop273_done:
pop_eh
for_undef_104:
@@ -7764,7 +7764,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231" :anon :subid("23_1267204695.47543") :outer("22_1267204695.47543")
+.sub "_block231" :anon :subid("23_1272816836.73052") :outer("22_1272816836.73052")
.param pmc param_233
.annotate "line", 541
.lex "$_", param_233
@@ -7804,7 +7804,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block259" :anon :subid("24_1267204695.47543") :outer("22_1267204695.47543")
+.sub "_block259" :anon :subid("24_1272816836.73052") :outer("22_1272816836.73052")
.param pmc param_261
.annotate "line", 546
.lex "$_", param_261
@@ -7844,9 +7844,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block177" :anon :subid("20_1267204695.47543") :outer("14_1267204695.47543")
+.sub "_block177" :anon :subid("20_1272816836.73052") :outer("14_1272816836.73052")
.annotate "line", 521
- .const 'Sub' $P196 = "21_1267204695.47543"
+ .const 'Sub' $P196 = "21_1272816836.73052"
capture_lex $P196
.annotate "line", 522
new $P179, "Undef"
@@ -7883,13 +7883,13 @@
iter $P191, $P192
new $P213, 'ExceptionHandler'
set_addr $P213, loop212_handler
- $P213."handle_types"(65, 67, 66)
+ $P213."handle_types"(64, 66, 65)
push_eh $P213
loop212_test:
unless $P191, loop212_done
shift $P194, $P191
loop212_redo:
- .const 'Sub' $P196 = "21_1267204695.47543"
+ .const 'Sub' $P196 = "21_1272816836.73052"
capture_lex $P196
$P196($P194)
loop212_next:
@@ -7898,8 +7898,8 @@
.local pmc exception
.get_results (exception)
getattribute $P214, exception, 'type'
- eq $P214, 65, loop212_next
- eq $P214, 67, loop212_redo
+ eq $P214, 64, loop212_next
+ eq $P214, 66, loop212_redo
loop212_done:
pop_eh
for_undef_112:
@@ -7909,7 +7909,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195" :anon :subid("21_1267204695.47543") :outer("20_1267204695.47543")
+.sub "_block195" :anon :subid("21_1272816836.73052") :outer("20_1272816836.73052")
.param pmc param_197
.annotate "line", 529
.lex "$_", param_197
@@ -7949,10 +7949,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block135" :anon :subid("18_1267204695.47543") :outer("14_1267204695.47543")
+.sub "_block135" :anon :subid("18_1272816836.73052") :outer("14_1272816836.73052")
.param pmc param_138
.annotate "line", 513
- .const 'Sub' $P147 = "19_1267204695.47543"
+ .const 'Sub' $P147 = "19_1272816836.73052"
capture_lex $P147
.annotate "line", 514
$P137 = root_new ['parrot';'Hash']
@@ -7969,13 +7969,13 @@
iter $P142, $P143
new $P161, 'ExceptionHandler'
set_addr $P161, loop160_handler
- $P161."handle_types"(65, 67, 66)
+ $P161."handle_types"(64, 66, 65)
push_eh $P161
loop160_test:
unless $P142, loop160_done
shift $P145, $P142
loop160_redo:
- .const 'Sub' $P147 = "19_1267204695.47543"
+ .const 'Sub' $P147 = "19_1272816836.73052"
capture_lex $P147
$P147($P145)
loop160_next:
@@ -7984,8 +7984,8 @@
.local pmc exception
.get_results (exception)
getattribute $P162, exception, 'type'
- eq $P162, 65, loop160_next
- eq $P162, 67, loop160_redo
+ eq $P162, 64, loop160_next
+ eq $P162, 66, loop160_redo
loop160_done:
pop_eh
for_undef_115:
@@ -8005,7 +8005,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146" :anon :subid("19_1267204695.47543") :outer("18_1267204695.47543")
+.sub "_block146" :anon :subid("19_1272816836.73052") :outer("18_1272816836.73052")
.param pmc param_148
.annotate "line", 515
.lex "$_", param_148
@@ -8045,9 +8045,9 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block68" :anon :subid("15_1267204695.47543") :outer("14_1267204695.47543")
+.sub "_block68" :anon :subid("15_1272816836.73052") :outer("14_1272816836.73052")
.annotate "line", 499
- .const 'Sub' $P78 = "16_1267204695.47543"
+ .const 'Sub' $P78 = "16_1272816836.73052"
capture_lex $P78
.annotate "line", 500
new $P70, "Undef"
@@ -8062,13 +8062,13 @@
iter $P72, $P74
new $P123, 'ExceptionHandler'
set_addr $P123, loop122_handler
- $P123."handle_types"(65, 67, 66)
+ $P123."handle_types"(64, 66, 65)
push_eh $P123
loop122_test:
unless $P72, loop122_done
shift $P76, $P72
loop122_redo:
- .const 'Sub' $P78 = "16_1267204695.47543"
+ .const 'Sub' $P78 = "16_1272816836.73052"
capture_lex $P78
$P78($P76)
loop122_next:
@@ -8077,8 +8077,8 @@
.local pmc exception
.get_results (exception)
getattribute $P124, exception, 'type'
- eq $P124, 65, loop122_next
- eq $P124, 67, loop122_redo
+ eq $P124, 64, loop122_next
+ eq $P124, 66, loop122_redo
loop122_done:
pop_eh
for_undef_123:
@@ -8091,10 +8091,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77" :anon :subid("16_1267204695.47543") :outer("15_1267204695.47543")
+.sub "_block77" :anon :subid("16_1272816836.73052") :outer("15_1272816836.73052")
.param pmc param_80
.annotate "line", 501
- .const 'Sub' $P89 = "17_1267204695.47543"
+ .const 'Sub' $P89 = "17_1272816836.73052"
capture_lex $P89
.annotate "line", 502
$P79 = root_new ['parrot';'Hash']
@@ -8111,13 +8111,13 @@
iter $P84, $P85
new $P110, 'ExceptionHandler'
set_addr $P110, loop109_handler
- $P110."handle_types"(65, 67, 66)
+ $P110."handle_types"(64, 66, 65)
push_eh $P110
loop109_test:
unless $P84, loop109_done
shift $P87, $P84
loop109_redo:
- .const 'Sub' $P89 = "17_1267204695.47543"
+ .const 'Sub' $P89 = "17_1272816836.73052"
capture_lex $P89
$P89($P87)
loop109_next:
@@ -8126,8 +8126,8 @@
.local pmc exception
.get_results (exception)
getattribute $P111, exception, 'type'
- eq $P111, 65, loop109_next
- eq $P111, 67, loop109_redo
+ eq $P111, 64, loop109_next
+ eq $P111, 66, loop109_redo
loop109_done:
pop_eh
for_undef_124:
@@ -8166,7 +8166,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88" :anon :subid("17_1267204695.47543") :outer("16_1267204695.47543")
+.sub "_block88" :anon :subid("17_1272816836.73052") :outer("16_1272816836.73052")
.param pmc param_90
.annotate "line", 503
.lex "$_", param_90
@@ -8225,13 +8225,13 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod" :subid("27_1267204695.47543") :outer("11_1267204695.47543")
+.sub "backmod" :subid("27_1272816836.73052") :outer("11_1272816836.73052")
.param pmc param_311
.param pmc param_312
.annotate "line", 562
new $P310, 'ExceptionHandler'
set_addr $P310, control_309
- $P310."handle_types"(58)
+ $P310."handle_types"(57)
push_eh $P310
.lex "$ast", param_311
.lex "$backmod", param_312
@@ -8299,13 +8299,13 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias" :subid("28_1267204695.47543") :outer("11_1267204695.47543")
+.sub "subrule_alias" :subid("28_1272816836.73052") :outer("11_1272816836.73052")
.param pmc param_343
.param pmc param_344
.annotate "line", 569
new $P342, 'ExceptionHandler'
set_addr $P342, control_341
- $P342."handle_types"(58)
+ $P342."handle_types"(57)
push_eh $P342
.lex "$past", param_343
.lex "$name", param_344
@@ -8343,12 +8343,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg" :subid("29_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "arg" :subid("29_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_365
.annotate "line", 14
new $P364, 'ExceptionHandler'
set_addr $P364, control_363
- $P364."handle_types"(58)
+ $P364."handle_types"(57)
push_eh $P364
.lex "self", self
.lex "$/", param_365
@@ -8399,14 +8399,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist" :subid("30_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "arglist" :subid("30_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_382
.annotate "line", 18
- .const 'Sub' $P392 = "31_1267204695.47543"
+ .const 'Sub' $P392 = "31_1272816836.73052"
capture_lex $P392
new $P381, 'ExceptionHandler'
set_addr $P381, control_380
- $P381."handle_types"(58)
+ $P381."handle_types"(57)
push_eh $P381
.lex "self", self
.lex "$/", param_382
@@ -8430,13 +8430,13 @@
iter $P386, $P388
new $P399, 'ExceptionHandler'
set_addr $P399, loop398_handler
- $P399."handle_types"(65, 67, 66)
+ $P399."handle_types"(64, 66, 65)
push_eh $P399
loop398_test:
unless $P386, loop398_done
shift $P390, $P386
loop398_redo:
- .const 'Sub' $P392 = "31_1267204695.47543"
+ .const 'Sub' $P392 = "31_1272816836.73052"
capture_lex $P392
$P392($P390)
loop398_next:
@@ -8445,8 +8445,8 @@
.local pmc exception
.get_results (exception)
getattribute $P400, exception, 'type'
- eq $P400, 65, loop398_next
- eq $P400, 67, loop398_redo
+ eq $P400, 64, loop398_next
+ eq $P400, 66, loop398_redo
loop398_done:
pop_eh
for_undef_143:
@@ -8465,7 +8465,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391" :anon :subid("31_1267204695.47543") :outer("30_1267204695.47543")
+.sub "_block391" :anon :subid("31_1272816836.73052") :outer("30_1272816836.73052")
.param pmc param_393
.annotate "line", 20
.lex "$_", param_393
@@ -8478,12 +8478,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP" :subid("32_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "TOP" :subid("32_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_408
.annotate "line", 24
new $P407, 'ExceptionHandler'
set_addr $P407, control_406
- $P407."handle_types"(58)
+ $P407."handle_types"(57)
push_eh $P407
.lex "self", self
.lex "$/", param_408
@@ -8520,18 +8520,18 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler" :subid("33_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "nibbler" :subid("33_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_423
.param pmc param_424 :optional
.param int has_param_424 :opt_flag
.annotate "line", 30
- .const 'Sub' $P458 = "35_1267204695.47543"
+ .const 'Sub' $P458 = "35_1272816836.73052"
capture_lex $P458
- .const 'Sub' $P432 = "34_1267204695.47543"
+ .const 'Sub' $P432 = "34_1272816836.73052"
capture_lex $P432
new $P422, 'ExceptionHandler'
set_addr $P422, control_421
- $P422."handle_types"(58)
+ $P422."handle_types"(57)
push_eh $P422
.lex "self", self
.lex "$/", param_423
@@ -8548,7 +8548,7 @@
set $S429, $P428
iseq $I430, $S429, "open"
unless $I430, if_427_end
- .const 'Sub' $P432 = "34_1267204695.47543"
+ .const 'Sub' $P432 = "34_1272816836.73052"
capture_lex $P432
$P432()
if_427_end:
@@ -8605,13 +8605,13 @@
iter $P452, $P454
new $P465, 'ExceptionHandler'
set_addr $P465, loop464_handler
- $P465."handle_types"(65, 67, 66)
+ $P465."handle_types"(64, 66, 65)
push_eh $P465
loop464_test:
unless $P452, loop464_done
shift $P456, $P452
loop464_redo:
- .const 'Sub' $P458 = "35_1267204695.47543"
+ .const 'Sub' $P458 = "35_1272816836.73052"
capture_lex $P458
$P458($P456)
loop464_next:
@@ -8620,8 +8620,8 @@
.local pmc exception
.get_results (exception)
getattribute $P466, exception, 'type'
- eq $P466, 65, loop464_next
- eq $P466, 67, loop464_redo
+ eq $P466, 64, loop464_next
+ eq $P466, 66, loop464_redo
loop464_done:
pop_eh
for_undef_156:
@@ -8641,7 +8641,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431" :anon :subid("34_1267204695.47543") :outer("33_1267204695.47543")
+.sub "_block431" :anon :subid("34_1272816836.73052") :outer("33_1272816836.73052")
.annotate "line", 32
$P433 = root_new ['parrot';'Hash']
.lex "%old", $P433
@@ -8670,7 +8670,7 @@
$P438."unshift"($P439)
.annotate "line", 38
new $P440, "Exception"
- set $P440['type'], 58
+ set $P440['type'], 57
new $P441, "Integer"
assign $P441, 1
setattribute $P440, 'payload', $P441
@@ -8681,7 +8681,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457" :anon :subid("35_1267204695.47543") :outer("33_1267204695.47543")
+.sub "_block457" :anon :subid("35_1272816836.73052") :outer("33_1272816836.73052")
.param pmc param_459
.annotate "line", 45
.lex "$_", param_459
@@ -8696,14 +8696,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish" :subid("36_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "termish" :subid("36_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_478
.annotate "line", 55
- .const 'Sub' $P491 = "37_1267204695.47543"
+ .const 'Sub' $P491 = "37_1272816836.73052"
capture_lex $P491
new $P477, 'ExceptionHandler'
set_addr $P477, control_476
- $P477."handle_types"(58)
+ $P477."handle_types"(57)
push_eh $P477
.lex "self", self
.lex "$/", param_478
@@ -8736,13 +8736,13 @@
iter $P485, $P487
new $P537, 'ExceptionHandler'
set_addr $P537, loop536_handler
- $P537."handle_types"(65, 67, 66)
+ $P537."handle_types"(64, 66, 65)
push_eh $P537
loop536_test:
unless $P485, loop536_done
shift $P489, $P485
loop536_redo:
- .const 'Sub' $P491 = "37_1267204695.47543"
+ .const 'Sub' $P491 = "37_1272816836.73052"
capture_lex $P491
$P491($P489)
loop536_next:
@@ -8751,8 +8751,8 @@
.local pmc exception
.get_results (exception)
getattribute $P538, exception, 'type'
- eq $P538, 65, loop536_next
- eq $P538, 67, loop536_redo
+ eq $P538, 64, loop536_next
+ eq $P538, 66, loop536_redo
loop536_done:
pop_eh
for_undef_159:
@@ -8771,7 +8771,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490" :anon :subid("37_1267204695.47543") :outer("36_1267204695.47543")
+.sub "_block490" :anon :subid("37_1272816836.73052") :outer("36_1272816836.73052")
.param pmc param_493
.annotate "line", 59
new $P492, "Undef"
@@ -8898,14 +8898,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom" :subid("38_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantified_atom" :subid("38_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_546
.annotate "line", 76
- .const 'Sub' $P555 = "39_1267204695.47543"
+ .const 'Sub' $P555 = "39_1272816836.73052"
capture_lex $P555
new $P545, 'ExceptionHandler'
set_addr $P545, control_544
- $P545."handle_types"(58)
+ $P545."handle_types"(57)
push_eh $P545
.lex "self", self
.lex "$/", param_546
@@ -8964,7 +8964,7 @@
goto if_551_end
if_551:
.annotate "line", 78
- .const 'Sub' $P555 = "39_1267204695.47543"
+ .const 'Sub' $P555 = "39_1272816836.73052"
capture_lex $P555
$P555()
if_551_end:
@@ -9018,7 +9018,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block554" :anon :subid("39_1267204695.47543") :outer("38_1267204695.47543")
+.sub "_block554" :anon :subid("39_1272816836.73052") :outer("38_1272816836.73052")
.annotate "line", 80
new $P556, "Undef"
.lex "$qast", $P556
@@ -9057,12 +9057,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom" :subid("40_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "atom" :subid("40_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_596
.annotate "line", 91
new $P595, 'ExceptionHandler'
set_addr $P595, control_594
- $P595."handle_types"(58)
+ $P595."handle_types"(57)
push_eh $P595
.lex "self", self
.lex "$/", param_596
@@ -9135,12 +9135,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>" :subid("41_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<*>" :subid("41_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_622
.annotate "line", 101
new $P621, 'ExceptionHandler'
set_addr $P621, control_620
- $P621."handle_types"(58)
+ $P621."handle_types"(57)
push_eh $P621
.lex "self", self
.lex "$/", param_622
@@ -9175,12 +9175,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>" :subid("42_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<+>" :subid("42_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_637
.annotate "line", 106
new $P636, 'ExceptionHandler'
set_addr $P636, control_635
- $P636."handle_types"(58)
+ $P636."handle_types"(57)
push_eh $P636
.lex "self", self
.lex "$/", param_637
@@ -9215,12 +9215,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>" :subid("43_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<?>" :subid("43_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_652
.annotate "line", 111
new $P651, 'ExceptionHandler'
set_addr $P651, control_650
- $P651."handle_types"(58)
+ $P651."handle_types"(57)
push_eh $P651
.lex "self", self
.lex "$/", param_652
@@ -9259,12 +9259,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>" :subid("44_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<**>" :subid("44_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_669
.annotate "line", 117
new $P668, 'ExceptionHandler'
set_addr $P668, control_667
- $P668."handle_types"(58)
+ $P668."handle_types"(57)
push_eh $P668
.lex "self", self
.lex "$/", param_669
@@ -9399,12 +9399,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>" :subid("45_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<ws>" :subid("45_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_716
.annotate "line", 131
new $P715, 'ExceptionHandler'
set_addr $P715, control_714
- $P715."handle_types"(58)
+ $P715."handle_types"(57)
push_eh $P715
.lex "self", self
.lex "$/", param_716
@@ -9451,12 +9451,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>" :subid("46_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<[ ]>" :subid("46_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_734
.annotate "line", 140
new $P733, 'ExceptionHandler'
set_addr $P733, control_732
- $P733."handle_types"(58)
+ $P733."handle_types"(57)
push_eh $P733
.lex "self", self
.lex "$/", param_734
@@ -9483,12 +9483,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>" :subid("47_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<( )>" :subid("47_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_744
.annotate "line", 144
new $P743, 'ExceptionHandler'
set_addr $P743, control_742
- $P743."handle_types"(58)
+ $P743."handle_types"(57)
push_eh $P743
.lex "self", self
.lex "$/", param_744
@@ -9531,12 +9531,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>" :subid("48_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<'>" :subid("48_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_762
.annotate "line", 151
new $P761, 'ExceptionHandler'
set_addr $P761, control_760
- $P761."handle_types"(58)
+ $P761."handle_types"(57)
push_eh $P761
.lex "self", self
.lex "$/", param_762
@@ -9587,12 +9587,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">" :subid("49_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<\">" :subid("49_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_785
.annotate "line", 158
new $P784, 'ExceptionHandler'
set_addr $P784, control_783
- $P784."handle_types"(58)
+ $P784."handle_types"(57)
push_eh $P784
.lex "self", self
.lex "$/", param_785
@@ -9643,12 +9643,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>" :subid("50_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<.>" :subid("50_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_808
.annotate "line", 165
new $P807, 'ExceptionHandler'
set_addr $P807, control_806
- $P807."handle_types"(58)
+ $P807."handle_types"(57)
push_eh $P807
.lex "self", self
.lex "$/", param_808
@@ -9674,12 +9674,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>" :subid("51_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<^>" :subid("51_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_820
.annotate "line", 170
new $P819, 'ExceptionHandler'
set_addr $P819, control_818
- $P819."handle_types"(58)
+ $P819."handle_types"(57)
push_eh $P819
.lex "self", self
.lex "$/", param_820
@@ -9705,12 +9705,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>" :subid("52_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<^^>" :subid("52_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_832
.annotate "line", 175
new $P831, 'ExceptionHandler'
set_addr $P831, control_830
- $P831."handle_types"(58)
+ $P831."handle_types"(57)
push_eh $P831
.lex "self", self
.lex "$/", param_832
@@ -9736,12 +9736,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>" :subid("53_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<$>" :subid("53_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_844
.annotate "line", 180
new $P843, 'ExceptionHandler'
set_addr $P843, control_842
- $P843."handle_types"(58)
+ $P843."handle_types"(57)
push_eh $P843
.lex "self", self
.lex "$/", param_844
@@ -9767,12 +9767,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>" :subid("54_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<$$>" :subid("54_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_856
.annotate "line", 185
new $P855, 'ExceptionHandler'
set_addr $P855, control_854
- $P855."handle_types"(58)
+ $P855."handle_types"(57)
push_eh $P855
.lex "self", self
.lex "$/", param_856
@@ -9798,12 +9798,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>" :subid("55_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<:::>" :subid("55_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_868
.annotate "line", 190
new $P867, 'ExceptionHandler'
set_addr $P867, control_866
- $P867."handle_types"(58)
+ $P867."handle_types"(57)
push_eh $P867
.lex "self", self
.lex "$/", param_868
@@ -9829,12 +9829,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>" :subid("56_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<lwb>" :subid("56_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_880
.annotate "line", 195
new $P879, 'ExceptionHandler'
set_addr $P879, control_878
- $P879."handle_types"(58)
+ $P879."handle_types"(57)
push_eh $P879
.lex "self", self
.lex "$/", param_880
@@ -9860,12 +9860,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>" :subid("57_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<rwb>" :subid("57_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_892
.annotate "line", 200
new $P891, 'ExceptionHandler'
set_addr $P891, control_890
- $P891."handle_types"(58)
+ $P891."handle_types"(57)
push_eh $P891
.lex "self", self
.lex "$/", param_892
@@ -9891,12 +9891,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>" :subid("58_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<bs>" :subid("58_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_904
.annotate "line", 205
new $P903, 'ExceptionHandler'
set_addr $P903, control_902
- $P903."handle_types"(58)
+ $P903."handle_types"(57)
push_eh $P903
.lex "self", self
.lex "$/", param_904
@@ -9923,12 +9923,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>" :subid("59_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<mod>" :subid("59_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_914
.annotate "line", 209
new $P913, 'ExceptionHandler'
set_addr $P913, control_912
- $P913."handle_types"(58)
+ $P913."handle_types"(57)
push_eh $P913
.lex "self", self
.lex "$/", param_914
@@ -9955,12 +9955,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>" :subid("60_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<assert>" :subid("60_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_924
.annotate "line", 213
new $P923, 'ExceptionHandler'
set_addr $P923, control_922
- $P923."handle_types"(58)
+ $P923."handle_types"(57)
push_eh $P923
.lex "self", self
.lex "$/", param_924
@@ -9987,12 +9987,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>" :subid("61_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<~>" :subid("61_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_934
.annotate "line", 217
new $P933, 'ExceptionHandler'
set_addr $P933, control_932
- $P933."handle_types"(58)
+ $P933."handle_types"(57)
push_eh $P933
.lex "self", self
.lex "$/", param_934
@@ -10049,12 +10049,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>" :subid("62_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<{*}>" :subid("62_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_956
.annotate "line", 230
new $P955, 'ExceptionHandler'
set_addr $P955, control_954
- $P955."handle_types"(58)
+ $P955."handle_types"(57)
push_eh $P955
.lex "self", self
.lex "$/", param_956
@@ -10110,12 +10110,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>" :subid("63_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<var>" :subid("63_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_977
.annotate "line", 237
new $P976, 'ExceptionHandler'
set_addr $P976, control_975
- $P976."handle_types"(58)
+ $P976."handle_types"(57)
push_eh $P976
.lex "self", self
.lex "$/", param_977
@@ -10270,12 +10270,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>" :subid("64_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<PIR>" :subid("64_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1033
.annotate "line", 257
new $P1032, 'ExceptionHandler'
set_addr $P1032, control_1031
- $P1032."handle_types"(58)
+ $P1032."handle_types"(57)
push_eh $P1032
.lex "self", self
.lex "$/", param_1033
@@ -10309,12 +10309,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>" :subid("65_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<w>" :subid("65_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1048
.annotate "line", 265
new $P1047, 'ExceptionHandler'
set_addr $P1047, control_1046
- $P1047."handle_types"(58)
+ $P1047."handle_types"(57)
push_eh $P1047
.lex "self", self
.lex "$/", param_1048
@@ -10375,12 +10375,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>" :subid("66_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<b>" :subid("66_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1072
.annotate "line", 271
new $P1071, 'ExceptionHandler'
set_addr $P1071, control_1070
- $P1071."handle_types"(58)
+ $P1071."handle_types"(57)
push_eh $P1071
.lex "self", self
.lex "$/", param_1072
@@ -10418,12 +10418,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>" :subid("67_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<e>" :subid("67_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1088
.annotate "line", 277
new $P1087, 'ExceptionHandler'
set_addr $P1087, control_1086
- $P1087."handle_types"(58)
+ $P1087."handle_types"(57)
push_eh $P1087
.lex "self", self
.lex "$/", param_1088
@@ -10443,7 +10443,7 @@
set $S1093, $P1092
iseq $I1094, $S1093, "E"
find_lex $P1095, "$/"
- $P1096 = $P1090."new"("\\e", "enumcharlist" :named("pasttype"), $I1094 :named("negate"), $P1095 :named("node"))
+ $P1096 = $P1090."new"("\e", "enumcharlist" :named("pasttype"), $I1094 :named("negate"), $P1095 :named("node"))
.annotate "line", 278
store_lex "$past", $P1096
.annotate "line", 280
@@ -10461,12 +10461,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>" :subid("68_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<f>" :subid("68_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1104
.annotate "line", 283
new $P1103, 'ExceptionHandler'
set_addr $P1103, control_1102
- $P1103."handle_types"(58)
+ $P1103."handle_types"(57)
push_eh $P1103
.lex "self", self
.lex "$/", param_1104
@@ -10486,7 +10486,7 @@
set $S1109, $P1108
iseq $I1110, $S1109, "F"
find_lex $P1111, "$/"
- $P1112 = $P1106."new"("\\f", "enumcharlist" :named("pasttype"), $I1110 :named("negate"), $P1111 :named("node"))
+ $P1112 = $P1106."new"("\f", "enumcharlist" :named("pasttype"), $I1110 :named("negate"), $P1111 :named("node"))
.annotate "line", 284
store_lex "$past", $P1112
.annotate "line", 286
@@ -10504,12 +10504,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>" :subid("69_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<h>" :subid("69_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1120
.annotate "line", 289
new $P1119, 'ExceptionHandler'
set_addr $P1119, control_1118
- $P1119."handle_types"(58)
+ $P1119."handle_types"(57)
push_eh $P1119
.lex "self", self
.lex "$/", param_1120
@@ -10547,12 +10547,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>" :subid("70_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<r>" :subid("70_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1136
.annotate "line", 295
new $P1135, 'ExceptionHandler'
set_addr $P1135, control_1134
- $P1135."handle_types"(58)
+ $P1135."handle_types"(57)
push_eh $P1135
.lex "self", self
.lex "$/", param_1136
@@ -10590,12 +10590,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>" :subid("71_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<t>" :subid("71_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1152
.annotate "line", 301
new $P1151, 'ExceptionHandler'
set_addr $P1151, control_1150
- $P1151."handle_types"(58)
+ $P1151."handle_types"(57)
push_eh $P1151
.lex "self", self
.lex "$/", param_1152
@@ -10633,12 +10633,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>" :subid("72_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<v>" :subid("72_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1168
.annotate "line", 307
new $P1167, 'ExceptionHandler'
set_addr $P1167, control_1166
- $P1167."handle_types"(58)
+ $P1167."handle_types"(57)
push_eh $P1167
.lex "self", self
.lex "$/", param_1168
@@ -10676,12 +10676,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>" :subid("73_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<o>" :subid("73_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1184
.annotate "line", 314
new $P1183, 'ExceptionHandler'
set_addr $P1183, control_1182
- $P1183."handle_types"(58)
+ $P1183."handle_types"(57)
push_eh $P1183
.lex "self", self
.lex "$/", param_1184
@@ -10759,12 +10759,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>" :subid("74_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<x>" :subid("74_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1215
.annotate "line", 323
new $P1214, 'ExceptionHandler'
set_addr $P1214, control_1213
- $P1214."handle_types"(58)
+ $P1214."handle_types"(57)
push_eh $P1214
.lex "self", self
.lex "$/", param_1215
@@ -10842,12 +10842,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>" :subid("75_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<c>" :subid("75_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1246
.annotate "line", 332
new $P1245, 'ExceptionHandler'
set_addr $P1245, control_1244
- $P1245."handle_types"(58)
+ $P1245."handle_types"(57)
push_eh $P1245
.lex "self", self
.lex "$/", param_1246
@@ -10877,12 +10877,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>" :subid("76_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<misc>" :subid("76_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1259
.annotate "line", 336
new $P1258, 'ExceptionHandler'
set_addr $P1258, control_1257
- $P1258."handle_types"(58)
+ $P1258."handle_types"(57)
push_eh $P1258
.lex "self", self
.lex "$/", param_1259
@@ -10910,12 +10910,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>" :subid("77_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<?>" :subid("77_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1273
.annotate "line", 342
new $P1272, 'ExceptionHandler'
set_addr $P1272, control_1271
- $P1272."handle_types"(58)
+ $P1272."handle_types"(57)
push_eh $P1272
.lex "self", self
.lex "$/", param_1273
@@ -10970,12 +10970,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>" :subid("78_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<!>" :subid("78_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1291
.annotate "line", 352
new $P1290, 'ExceptionHandler'
set_addr $P1290, control_1289
- $P1290."handle_types"(58)
+ $P1290."handle_types"(57)
push_eh $P1290
.lex "self", self
.lex "$/", param_1291
@@ -11038,12 +11038,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>" :subid("79_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<method>" :subid("79_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1315
.annotate "line", 365
new $P1314, 'ExceptionHandler'
set_addr $P1314, control_1313
- $P1314."handle_types"(58)
+ $P1314."handle_types"(57)
push_eh $P1314
.lex "self", self
.lex "$/", param_1315
@@ -11081,16 +11081,16 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>" :subid("80_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<name>" :subid("80_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1329
.annotate "line", 372
- .const 'Sub' $P1387 = "82_1267204695.47543"
+ .const 'Sub' $P1387 = "82_1272816836.73052"
capture_lex $P1387
- .const 'Sub' $P1351 = "81_1267204695.47543"
+ .const 'Sub' $P1351 = "81_1272816836.73052"
capture_lex $P1351
new $P1328, 'ExceptionHandler'
set_addr $P1328, control_1327
- $P1328."handle_types"(58)
+ $P1328."handle_types"(57)
push_eh $P1328
.lex "self", self
.lex "$/", param_1329
@@ -11176,13 +11176,13 @@
iter $P1378, $P1383
new $P1393, 'ExceptionHandler'
set_addr $P1393, loop1392_handler
- $P1393."handle_types"(65, 67, 66)
+ $P1393."handle_types"(64, 66, 65)
push_eh $P1393
loop1392_test:
unless $P1378, loop1392_done
shift $P1385, $P1378
loop1392_redo:
- .const 'Sub' $P1387 = "82_1267204695.47543"
+ .const 'Sub' $P1387 = "82_1272816836.73052"
capture_lex $P1387
$P1387($P1385)
loop1392_next:
@@ -11191,8 +11191,8 @@
.local pmc exception
.get_results (exception)
getattribute $P1394, exception, 'type'
- eq $P1394, 65, loop1392_next
- eq $P1394, 67, loop1392_redo
+ eq $P1394, 64, loop1392_next
+ eq $P1394, 66, loop1392_redo
loop1392_done:
pop_eh
for_undef_316:
@@ -11222,7 +11222,7 @@
goto if_1346_end
if_1346:
.annotate "line", 379
- .const 'Sub' $P1351 = "81_1267204695.47543"
+ .const 'Sub' $P1351 = "81_1272816836.73052"
capture_lex $P1351
$P1351()
if_1346_end:
@@ -11263,7 +11263,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1386" :anon :subid("82_1267204695.47543") :outer("80_1267204695.47543")
+.sub "_block1386" :anon :subid("82_1272816836.73052") :outer("80_1272816836.73052")
.param pmc param_1388
.annotate "line", 401
.lex "$_", param_1388
@@ -11275,7 +11275,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1350" :anon :subid("81_1267204695.47543") :outer("80_1267204695.47543")
+.sub "_block1350" :anon :subid("81_1272816836.73052") :outer("80_1272816836.73052")
.annotate "line", 380
new $P1352, "Undef"
.lex "$regexsym", $P1352
@@ -11285,7 +11285,7 @@
$I0 = index $S0, ':sym<'
add $I0, 5
$S0 = substr $S0, $I0
- chopn $S0, 1
+ $S0 = chopn $S0, 1
$P1353 = box $S0
store_lex "$regexsym", $P1353
@@ -11306,14 +11306,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>" :subid("83_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<[>" :subid("83_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1402
.annotate "line", 407
- .const 'Sub' $P1437 = "84_1267204695.47543"
+ .const 'Sub' $P1437 = "84_1272816836.73052"
capture_lex $P1437
new $P1401, 'ExceptionHandler'
set_addr $P1401, control_1400
- $P1401."handle_types"(58)
+ $P1401."handle_types"(57)
push_eh $P1401
.lex "self", self
.lex "$/", param_1402
@@ -11391,7 +11391,7 @@
.annotate "line", 420
new $P1461, 'ExceptionHandler'
set_addr $P1461, loop1460_handler
- $P1461."handle_types"(65, 67, 66)
+ $P1461."handle_types"(64, 66, 65)
push_eh $P1461
loop1460_test:
find_lex $P1431, "$i"
@@ -11401,7 +11401,7 @@
islt $I1435, $N1432, $N1434
unless $I1435, loop1460_done
loop1460_redo:
- .const 'Sub' $P1437 = "84_1267204695.47543"
+ .const 'Sub' $P1437 = "84_1272816836.73052"
capture_lex $P1437
$P1437()
loop1460_next:
@@ -11410,8 +11410,8 @@
.local pmc exception
.get_results (exception)
getattribute $P1462, exception, 'type'
- eq $P1462, 65, loop1460_next
- eq $P1462, 67, loop1460_redo
+ eq $P1462, 64, loop1460_next
+ eq $P1462, 66, loop1460_redo
loop1460_done:
pop_eh
.annotate "line", 431
@@ -11429,7 +11429,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1436" :anon :subid("84_1267204695.47543") :outer("83_1267204695.47543")
+.sub "_block1436" :anon :subid("84_1272816836.73052") :outer("83_1272816836.73052")
.annotate "line", 421
new $P1438, "Undef"
.lex "$ast", $P1438
@@ -11480,16 +11480,16 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem" :subid("85_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "cclass_elem" :subid("85_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1470
.annotate "line", 434
- .const 'Sub' $P1495 = "87_1267204695.47543"
+ .const 'Sub' $P1495 = "87_1272816836.73052"
capture_lex $P1495
- .const 'Sub' $P1479 = "86_1267204695.47543"
+ .const 'Sub' $P1479 = "86_1272816836.73052"
capture_lex $P1479
new $P1469, 'ExceptionHandler'
set_addr $P1469, control_1468
- $P1469."handle_types"(58)
+ $P1469."handle_types"(57)
push_eh $P1469
.lex "self", self
.lex "$/", param_1470
@@ -11528,13 +11528,13 @@
iter $P1489, $P1491
new $P1521, 'ExceptionHandler'
set_addr $P1521, loop1520_handler
- $P1521."handle_types"(65, 67, 66)
+ $P1521."handle_types"(64, 66, 65)
push_eh $P1521
loop1520_test:
unless $P1489, loop1520_done
shift $P1493, $P1489
loop1520_redo:
- .const 'Sub' $P1495 = "87_1267204695.47543"
+ .const 'Sub' $P1495 = "87_1272816836.73052"
capture_lex $P1495
$P1495($P1493)
loop1520_next:
@@ -11543,8 +11543,8 @@
.local pmc exception
.get_results (exception)
getattribute $P1522, exception, 'type'
- eq $P1522, 65, loop1520_next
- eq $P1522, 67, loop1520_redo
+ eq $P1522, 64, loop1520_next
+ eq $P1522, 66, loop1520_redo
loop1520_done:
pop_eh
for_undef_333:
@@ -11558,7 +11558,7 @@
goto if_1475_end
if_1475:
.annotate "line", 437
- .const 'Sub' $P1479 = "86_1267204695.47543"
+ .const 'Sub' $P1479 = "86_1272816836.73052"
capture_lex $P1479
$P1479()
if_1475_end:
@@ -11590,10 +11590,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1494" :anon :subid("87_1267204695.47543") :outer("85_1267204695.47543")
+.sub "_block1494" :anon :subid("87_1272816836.73052") :outer("85_1272816836.73052")
.param pmc param_1496
.annotate "line", 441
- .const 'Sub' $P1502 = "88_1267204695.47543"
+ .const 'Sub' $P1502 = "88_1272816836.73052"
capture_lex $P1502
.lex "$_", param_1496
.annotate "line", 442
@@ -11622,7 +11622,7 @@
.annotate "line", 442
goto if_1498_end
if_1498:
- .const 'Sub' $P1502 = "88_1267204695.47543"
+ .const 'Sub' $P1502 = "88_1272816836.73052"
capture_lex $P1502
$P1515 = $P1502()
set $P1497, $P1515
@@ -11633,7 +11633,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1501" :anon :subid("88_1267204695.47543") :outer("87_1267204695.47543")
+.sub "_block1501" :anon :subid("88_1272816836.73052") :outer("87_1272816836.73052")
.annotate "line", 443
new $P1503, "Undef"
.lex "$a", $P1503
@@ -11697,7 +11697,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1478" :anon :subid("86_1267204695.47543") :outer("85_1267204695.47543")
+.sub "_block1478" :anon :subid("86_1272816836.73052") :outer("85_1272816836.73052")
.annotate "line", 438
new $P1480, "Undef"
.lex "$name", $P1480
@@ -11725,12 +11725,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal" :subid("89_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "mod_internal" :subid("89_1272816836.73052") :method :outer("11_1272816836.73052")
.param pmc param_1539
.annotate "line", 472
new $P1538, 'ExceptionHandler'
set_addr $P1538, control_1537
- $P1538."handle_types"(58)
+ $P1538."handle_types"(57)
push_eh $P1538
.lex "self", self
.lex "$/", param_1539
Modified: branches/ops_pct/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- branches/ops_pct/ext/nqp-rx/src/stage0/Regex-s0.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ext/nqp-rx/src/stage0/Regex-s0.pir Wed May 5 08:45:29 2010 (r46302)
@@ -58,6 +58,34 @@
=over 4
+=item new_match()
+
+A method that creates an empty Match object, by default of type
+C<Regex::Match>. This method can be overridden for generating HLL-specific
+Match objects.
+
+=cut
+
+.sub 'new_match' :method
+ .local pmc match
+ match = new ['Regex';'Match']
+ .return (match)
+.end
+
+=item new_array()
+
+A method that creates an empty array object, by default of type
+C<ResizablePMCArray>. This method can be overridden for generating HLL-specific
+arrays for usage within Match objects.
+
+=cut
+
+.sub 'new_array' :method
+ .local pmc arr
+ arr = new ['ResizablePMCArray']
+ .return (arr)
+.end
+
=item MATCH()
Return this cursor's current Match object, generating a new one
@@ -75,7 +103,7 @@
# First, create a Match object and bind it
match_make:
- match = new ['Regex';'Match']
+ match = self.'new_match'()
setattribute self, '$!match', match
setattribute match, '$!cursor', self
.local pmc target, from, to
@@ -98,7 +126,7 @@
.local pmc arr
.local int keyint
subname = shift caparray_it
- arr = new ['ResizablePMCArray']
+ arr = self.'new_array'()
caphash[subname] = arr
keyint = is_cclass .CCLASS_NUMERIC, subname, 0
if keyint goto caparray_int
@@ -295,7 +323,7 @@
parrotclass = getattribute $P0, 'parrotclass'
cur = new parrotclass
- .local pmc from, pos, target, debug
+ .local pmc from, target, debug
from = getattribute self, '$!pos'
setattribute cur, '$!from', from
@@ -1036,7 +1064,7 @@
cand_done:
token_next:
unless token > '' goto fail
- chopn token, 1
+ token = chopn token, 1
goto token_loop
done:
Modified: branches/ops_pct/include/parrot/call.h
==============================================================================
--- branches/ops_pct/include/parrot/call.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/call.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/* call.h
- * Copyright (C) 2001-2008, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -157,22 +157,34 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
-void Parrot_pcc_append_result(PARROT_INTERP,
- ARGIN(PMC *sig_object),
- ARGIN(STRING *type),
- ARGIN(void *result))
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC* Parrot_pcc_build_call_from_c_args(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *signature),
+ ARGIN(const char *sig),
+ ...)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC* Parrot_pcc_build_call_from_varargs(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *signature),
+ ARGIN(const char *sig),
+ ARGMOD(va_list *args))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3)
- __attribute__nonnull__(4);
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*args);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
PMC* Parrot_pcc_build_sig_object_from_op(PARROT_INTERP,
ARGIN_NULLOK(PMC *signature),
- ARGIN(PMC * const raw_sig),
- ARGIN(opcode_t * const raw_args))
+ ARGIN(PMC *raw_sig),
+ ARGIN(opcode_t *raw_args))
__attribute__nonnull__(1)
__attribute__nonnull__(3)
__attribute__nonnull__(4);
@@ -188,17 +200,6 @@
__attribute__nonnull__(3);
PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC* Parrot_pcc_build_sig_object_returns_from_op(PARROT_INTERP,
- ARGIN_NULLOK(PMC *signature),
- ARGIN(PMC *raw_sig),
- ARGIN(opcode_t *raw_args))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4);
-
-PARROT_EXPORT
void Parrot_pcc_fill_params_from_c_args(PARROT_INTERP,
ARGMOD(PMC *call_object),
ARGIN(const char *signature),
@@ -212,40 +213,24 @@
void Parrot_pcc_fill_params_from_op(PARROT_INTERP,
ARGMOD_NULLOK(PMC *call_object),
ARGIN(PMC *raw_sig),
- ARGIN(opcode_t *raw_params))
+ ARGIN(opcode_t *raw_params),
+ Errors_classes direction)
__attribute__nonnull__(1)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
FUNC_MODIFIES(*call_object);
PARROT_EXPORT
-void Parrot_pcc_fill_returns_from_c_args(PARROT_INTERP,
+void Parrot_pcc_fill_params_from_varargs(PARROT_INTERP,
ARGMOD_NULLOK(PMC *call_object),
ARGIN(const char *signature),
- ...)
- __attribute__nonnull__(1)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*call_object);
-
-PARROT_EXPORT
-void Parrot_pcc_fill_returns_from_continuation(PARROT_INTERP,
- ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig),
- ARGIN(PMC *from_call_obj))
+ ARGMOD(va_list *args),
+ Errors_classes direction)
__attribute__nonnull__(1)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
- FUNC_MODIFIES(*call_object);
-
-PARROT_EXPORT
-void Parrot_pcc_fill_returns_from_op(PARROT_INTERP,
- ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig),
- ARGIN(opcode_t *raw_returns))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*call_object);
+ FUNC_MODIFIES(*call_object)
+ FUNC_MODIFIES(*args);
void Parrot_pcc_merge_signature_for_tailcall(PARROT_INTERP,
ARGMOD_NULLOK(PMC * parent),
@@ -266,11 +251,25 @@
FUNC_MODIFIES(*arg_flags)
FUNC_MODIFIES(*return_flags);
-#define ASSERT_ARGS_Parrot_pcc_append_result __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+void Parrot_pcc_split_signature_string(
+ ARGIN(const char *signature),
+ ARGMOD(const char **arg_sig),
+ ARGMOD(const char **return_sig))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*arg_sig)
+ FUNC_MODIFIES(*return_sig);
+
+#define ASSERT_ARGS_Parrot_pcc_build_call_from_c_args \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(sig_object) \
- , PARROT_ASSERT_ARG(type) \
- , PARROT_ASSERT_ARG(result))
+ , PARROT_ASSERT_ARG(sig))
+#define ASSERT_ARGS_Parrot_pcc_build_call_from_varargs \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(sig) \
+ , PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_Parrot_pcc_build_sig_object_from_op \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -280,11 +279,6 @@
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(sig))
-#define ASSERT_ARGS_Parrot_pcc_build_sig_object_returns_from_op \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_sig) \
- , PARROT_ASSERT_ARG(raw_args))
#define ASSERT_ARGS_Parrot_pcc_fill_params_from_c_args \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -295,20 +289,11 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_sig) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_Parrot_pcc_fill_returns_from_c_args \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(signature))
-#define ASSERT_ARGS_Parrot_pcc_fill_returns_from_continuation \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_sig) \
- , PARROT_ASSERT_ARG(from_call_obj))
-#define ASSERT_ARGS_Parrot_pcc_fill_returns_from_op \
+#define ASSERT_ARGS_Parrot_pcc_fill_params_from_varargs \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_sig) \
- , PARROT_ASSERT_ARG(raw_returns))
+ , PARROT_ASSERT_ARG(signature) \
+ , PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_Parrot_pcc_merge_signature_for_tailcall \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
@@ -318,6 +303,11 @@
, PARROT_ASSERT_ARG(signature) \
, PARROT_ASSERT_ARG(arg_flags) \
, PARROT_ASSERT_ARG(return_flags))
+#define ASSERT_ARGS_Parrot_pcc_split_signature_string \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(signature) \
+ , PARROT_ASSERT_ARG(arg_sig) \
+ , PARROT_ASSERT_ARG(return_sig))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/call/args.c */
@@ -329,10 +319,10 @@
/* XXX Remove interp from this */
#define ADD_OP_VAR_PART(interp, seg, pc, n) do { \
- if (*(pc) == PARROT_OP_set_args_pc || \
- *(pc) == PARROT_OP_get_results_pc || \
- *(pc) == PARROT_OP_get_params_pc || \
- *(pc) == PARROT_OP_set_returns_pc) { \
+ if (*(pc) == PARROT_OP_set_args_pc \
+ || *(pc) == PARROT_OP_get_results_pc \
+ || *(pc) == PARROT_OP_get_params_pc \
+ || *(pc) == PARROT_OP_set_returns_pc) { \
PMC * const sig = (seg)->const_table->constants[(pc)[1]]->u.key; \
(n) += VTABLE_elements((interp), sig); \
} \
Modified: branches/ops_pct/include/parrot/charset.h
==============================================================================
--- branches/ops_pct/include/parrot/charset.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/charset.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,13 +1,9 @@
/* charset.h
- * Copyright (C) 2004-2008, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
* This is the header for the 8-bit fixed-width encoding
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
*/
#ifndef PARROT_CHARSET_H_GUARD
@@ -33,47 +29,44 @@
#define PARROT_BINARY_CHARSET Parrot_binary_charset_ptr
#define PARROT_UNICODE_CHARSET Parrot_unicode_charset_ptr
-typedef STRING *(*charset_get_graphemes_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL count);
-typedef STRING *(*charset_get_graphemes_inplace_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef void (*charset_set_graphemes_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset, UINTVAL replace_count, STRING *insert_string);
-
-typedef STRING * (*charset_to_charset_t)(PARROT_INTERP, STRING *source_string, STRING *dest);
-typedef STRING * (*charset_from_unicode_t)(PARROT_INTERP, STRING *source_string, STRING *dest);
-typedef STRING* (*charset_compose_t)(PARROT_INTERP, STRING *source_string);
-typedef STRING* (*charset_decompose_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_upcase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_downcase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_titlecase_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_upcase_first_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_downcase_first_t)(PARROT_INTERP, STRING *source_string);
-typedef void (*charset_titlecase_first_t)(PARROT_INTERP, STRING *source_string);
-typedef INTVAL (*charset_compare_t)(PARROT_INTERP, const STRING *lhs, const STRING *rhs);
-typedef INTVAL (*charset_index_t)(PARROT_INTERP, STRING *source_string, STRING *search_string, UINTVAL offset);
-typedef INTVAL (*charset_rindex_t)(PARROT_INTERP, STRING *source_string, STRING *search_string, UINTVAL offset);
-typedef UINTVAL (*charset_validate_t)(PARROT_INTERP, STRING *source_string);
-typedef INTVAL (*charset_is_cclass_t)(PARROT_INTERP, INTVAL, const STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_cclass_t)(PARROT_INTERP, INTVAL, STRING *source_string, UINTVAL offset, UINTVAL count);
-typedef INTVAL (*charset_find_not_cclass_t)(PARROT_INTERP, INTVAL, STRING *source_string, UINTVAL offset, UINTVAL count);
-typedef INTVAL (*charset_is_wordchar_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_wordchar_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_not_wordchar_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_is_whitespace_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_whitespace_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_not_whitespace_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_is_digit_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_digit_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_not_digit_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_is_punctuation_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_punctuation_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_not_punctuation_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_is_newline_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_newline_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_not_newline_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef INTVAL (*charset_find_word_boundary_t)(PARROT_INTERP, STRING *source_string, UINTVAL offset);
-typedef STRING *(*charset_string_from_codepoint_t)(PARROT_INTERP, UINTVAL codepoint);
-typedef size_t (*charset_compute_hash_t)(PARROT_INTERP, const STRING *, size_t seed);
+typedef STRING * (*charset_get_graphemes_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef STRING * (*charset_to_charset_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_from_unicode_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_compose_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_decompose_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_upcase_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_downcase_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_titlecase_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_upcase_first_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_downcase_first_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef STRING * (*charset_titlecase_first_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef INTVAL (*charset_compare_t)(PARROT_INTERP, ARGIN(const STRING *lhs), ARGIN(const STRING *rhs));
+typedef INTVAL (*charset_index_t)(PARROT_INTERP, ARGIN(const STRING *src), ARGIN(const STRING *search_string), UINTVAL offset);
+typedef INTVAL (*charset_rindex_t)(PARROT_INTERP, ARGIN(const STRING *src), ARGIN(const STRING *search_string), UINTVAL offset);
+typedef UINTVAL (*charset_validate_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef INTVAL (*charset_is_cclass_t)(PARROT_INTERP, INTVAL, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_cclass_t)(PARROT_INTERP, INTVAL, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef INTVAL (*charset_find_not_cclass_t)(PARROT_INTERP, INTVAL, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef INTVAL (*charset_is_wordchar_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_wordchar_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_not_wordchar_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_is_whitespace_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_whitespace_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_not_whitespace_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_is_digit_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_digit_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_not_digit_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_is_punctuation_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_punctuation_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_not_punctuation_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_is_newline_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_newline_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_not_newline_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef INTVAL (*charset_find_word_boundary_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef STRING * (*charset_string_from_codepoint_t)(PARROT_INTERP, UINTVAL codepoint);
+typedef size_t (*charset_compute_hash_t)(PARROT_INTERP, ARGIN(const STRING *src), size_t seed);
-typedef STRING* (*charset_converter_t)(PARROT_INTERP, STRING *src, STRING *dst);
+typedef STRING * (*charset_converter_t)(PARROT_INTERP, ARGIN(const STRING *src));
/* HEADERIZER BEGIN: src/string/charset.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -86,7 +79,7 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-STRING* Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset);
+STRING * Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
@@ -137,18 +130,19 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-CHARSET * Parrot_load_charset(PARROT_INTERP, ARGIN(const char *charsetname))
+const CHARSET * Parrot_load_charset(PARROT_INTERP,
+ ARGIN(const char *charsetname))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_EXPORT
INTVAL Parrot_make_default_charset(SHIM_INTERP,
SHIM(const char *charsetname),
- ARGIN(CHARSET *charset))
+ ARGIN(const CHARSET *charset))
__attribute__nonnull__(3);
PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PARROT_MALLOC
CHARSET * Parrot_new_charset(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -164,7 +158,7 @@
PARROT_EXPORT
void Parrot_register_charset_converter(PARROT_INTERP,
ARGIN(const CHARSET *lhs),
- ARGIN(CHARSET *rhs),
+ ARGIN(const CHARSET *rhs),
ARGIN(charset_converter_t func))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -214,8 +208,6 @@
struct _charset {
const char *name;
charset_get_graphemes_t get_graphemes;
- charset_get_graphemes_inplace_t get_graphemes_inplace;
- charset_set_graphemes_t set_graphemes;
charset_to_charset_t to_charset;
charset_compose_t compose;
charset_decompose_t decompose;
@@ -238,8 +230,6 @@
};
#define CHARSET_GET_GRAPEMES(interp, source, offset, count) ((source)->charset)->get_graphemes((interp), (source), (offset), (count))
-#define CHARSET_GET_GRAPHEMES_INPLACE(interp, source, dest, offset, count) ((source)->charset)->get_graphemes((interp), (source), (dest), (offset), (count))
-#define CHARSET_SET_GRAPHEMES(interp, source, offset, replace_count, insert) ((source)->charset)->set_graphemes((interp), (source), (offset), (replace_count), (insert))
#define CHARSET_TO_UNICODE(interp, source, dest) ((source)->charset)->to_unicode((interp), (source), (dest))
#define CHARSET_COMPOSE(interp, source) ((source)->charset)->compose((interp), (source))
#define CHARSET_DECOMPOSE(interp, source) ((source)->charset)->decompose((interp), (source))
@@ -262,16 +252,10 @@
#define CHARSET_TO_ENCODING(interp, source) ((source)->encoding)->to_encoding((interp), (source))
#define CHARSET_COPY_TO_ENCODING(interp, source) ((source)->encoding)->copy_to_encoding((interp), (source))
#define CHARSET_GET_CODEPOINT(interp, source, offset) ((source)->encoding)->get_codepoint((interp), (source), (offset))
-#define CHARSET_SET_CODEPOINT(interp, source, offset, codepoint) ((source)->encoding)->set_codepoint((interp), (source), (offset), (codepoint))
#define CHARSET_GET_BYTE(interp, source, offset) ((source)->encoding)->get_byte((interp), (source), (offset))
#define CHARSET_SET_BYTE(interp, source, offset, value) ((source)->encoding)->set_byte((interp), (source), (offset), (value))
#define CHARSET_GET_CODEPOINTS(interp, source, offset, count) ((source)->encoding)->get_codepoints((interp), (source), (offset), (count))
-#define CHARSET_GET_CODEPOINTS_INPLACE(interp, source, dest, offset, count) ((source)->encoding)->get_codepoints_inplace((interp), (source), (dest), (offset), (count))
#define CHARSET_GET_BYTES(interp, source, offset, count) ((source)->encoding)->get_bytes((interp), (source), (offset), (count))
-#define CHARSET_GET_BYTES_INPLACE(interp, source, offset, count, dest) ((source)->encoding)->get_bytes((interp), (source), (offset), (count), (dest))
-#define CHARSET_SET_CODEPOINTS(interp, source, offset, count, newdata) ((source)->encoding)->set_codepoints((interp), (source), (offset), (count), (newdata))
-#define CHARSET_SET_BYTES(interp, source, offset, count, newdata) ((source)->encoding)->set_bytes((interp), (source), (offset), (count), (newdata))
-#define CHARSET_BECOME_ENCODING(interp, source) ((source)->encoding)->become_encoding((interp), (source))
#define CHARSET_CODEPOINTS(interp, source) ((source)->encoding)->codepoints((interp), (source))
#define CHARSET_BYTES(interp, source) ((source)->encoding)->bytes((interp), (source))
Modified: branches/ops_pct/include/parrot/compiler.h
==============================================================================
--- branches/ops_pct/include/parrot/compiler.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/compiler.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/* compiler.h
- * Copyright (C) 2007-2008, Parrot Foundation.
+ * Copyright (C) 2007-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -25,7 +25,7 @@
# endif
#endif
#ifdef HASATTRIBUTE_FORMAT
-# define __attribute__format__(x, y, z) __attribute__((__format__((x), (y), (z))))
+# define __attribute__format__(x, y, z) __attribute__((format((x), (y), (z))))
#endif
#ifdef HASATTRIBUTE_MALLOC
# define __attribute__malloc__ __attribute__((__malloc__))
@@ -59,6 +59,12 @@
#ifdef HASATTRIBUTE_WARN_UNUSED_RESULT
# define __attribute__warn_unused_result__ __attribute__((__warn_unused_result__))
#endif
+#ifdef HASATTRIBUTE_HOT
+# define __attribute__hot__ __attribute__((__hot__))
+#endif
+#ifdef HASATTRIBUTE_COLD
+# define __attribute__cold__ __attribute__((__cold__))
+#endif
/* If we haven't defined the attributes yet, define them to blank. */
#ifndef __attribute__deprecated__
@@ -88,6 +94,12 @@
#ifndef __attribute__warn_unused_result__
# define __attribute__warn_unused_result__
#endif
+#ifndef __attribute__hot__
+# define __attribute__hot__
+#endif
+#ifndef __attribute__cold__
+# define __attribute__cold__
+#endif
/* Shim arguments are arguments that must be included in your function,
@@ -134,6 +146,10 @@
#define PARROT_DOES_NOT_RETURN_WHEN_FALSE /*@noreturnwhenfalse@*/
#define PARROT_MALLOC /*@only@*/ __attribute__malloc__ __attribute__warn_unused_result__
+/* Hot functions can be optimized by the compiler. */
+#define PARROT_HOT __attribute__hot__
+#define PARROT_COLD __attribute__cold__
+
/* Macros for exposure tracking for splint. */
/* See http://www.splint.org/manual/html/all.html section 6.2 */
#define PARROT_OBSERVER /*@observer@*/
@@ -200,6 +216,7 @@
/* may not pass in a reference to a shared object. There is nothing */
/* special about malloc and free -- their behavior can be described */
/* entirely in terms of the provided annotations. */
+#define ARGFREE_NOTNULL(x) /*@only@*/ /*@out@*/ /*@notnull@*/ x
#endif /* PARROT_COMPILER_H_GUARD */
Modified: branches/ops_pct/include/parrot/context.h
==============================================================================
--- branches/ops_pct/include/parrot/context.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/context.h Wed May 5 08:45:29 2010 (r46302)
@@ -214,23 +214,12 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-size_t Parrot_pcc_get_pred_offset_func(PARROT_INTERP, ARGIN(PMC *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
UINTVAL Parrot_pcc_get_recursion_depth_func(PARROT_INTERP, ARGIN(PMC *ctx))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
-PMC* Parrot_pcc_get_results_signature_func(PARROT_INTERP, ARGIN(PMC *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
PMC* Parrot_pcc_get_signature_func(PARROT_INTERP, ARGIN(PMC *ctx))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -322,20 +311,6 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-void Parrot_pcc_set_pred_offset_func(PARROT_INTERP,
- ARGIN(PMC *ctx),
- size_t pred_offset)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
-void Parrot_pcc_set_results_signature_func(PARROT_INTERP,
- ARGIN(PMC *ctx),
- ARGIN_NULLOK(PMC *sig))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
void Parrot_pcc_set_signature_func(PARROT_INTERP,
ARGIN(PMC *ctx),
ARGIN_NULLOK(PMC *sig_object))
@@ -444,18 +419,10 @@
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_get_pred_offset_func \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_recursion_depth_func \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_get_results_signature_func \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_get_signature_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
@@ -503,14 +470,6 @@
#define ASSERT_ARGS_Parrot_pcc_set_pc_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_set_pred_offset_func \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(ctx))
-#define ASSERT_ARGS_Parrot_pcc_set_results_signature_func \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_Parrot_pcc_set_signature_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
@@ -551,15 +510,9 @@
# define Parrot_pcc_get_caller_ctx(i, c) (__C(c)->caller_ctx)
# define Parrot_pcc_set_caller_ctx(i, c, value) (__C(c)->caller_ctx = (value))
-# define Parrot_pcc_get_results_signature(i, c) (__C(c)->results_signature)
-# define Parrot_pcc_set_results_signature(i, c, value) (__C(c)->results_signature = (value))
-
# define Parrot_pcc_get_namespace(i, c) (__C(c)->current_namespace)
# define Parrot_pcc_set_namespace(i, c, value) (__C(c)->current_namespace = (value))
-# define Parrot_pcc_get_pred_offset(i, c) (__C(c)->pred_offset)
-# define Parrot_pcc_set_pred_offset(i, c, value) (__C(c)->pred_offset = (value))
-
# define Parrot_pcc_get_pc(i, c) (__C(c)->current_pc)
# define Parrot_pcc_set_pc(i, c, value) (__C(c)->current_pc = (value))
@@ -615,15 +568,9 @@
# define Parrot_pcc_get_caller_ctx(i, c) Parrot_pcc_get_caller_ctx_func((i), (c))
# define Parrot_pcc_set_caller_ctx(i, c, value) Parrot_pcc_set_caller_ctx_func((i), (c), (value))
-# define Parrot_pcc_get_results_signature(i, c) Parrot_pcc_get_results_signature_func((i), (c))
-# define Parrot_pcc_set_results_signature(i, c, value) Parrot_pcc_set_results_signature_func((i), (c), (value))
-
# define Parrot_pcc_get_namespace(i, c) Parrot_pcc_get_namespace_func((i), (c))
# define Parrot_pcc_set_namespace(i, c, value) Parrot_pcc_set_namespace_func((i), (c), (value))
-# define Parrot_pcc_get_pred_offset(i, c) Parrot_pcc_get_pred_offset_func((i), (c))
-# define Parrot_pcc_set_pred_offset(i, c, value) Parrot_pcc_set_pred_offset_func((i), (c), (value))
-
# define Parrot_pcc_get_pc(i, c) Parrot_pcc_get_pc_func((i), (c))
# define Parrot_pcc_set_pc(i, c, value) Parrot_pcc_set_pc_func((i), (c), (value))
Modified: branches/ops_pct/include/parrot/debugger.h
==============================================================================
--- branches/ops_pct/include/parrot/debugger.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/debugger.h Wed May 5 08:45:29 2010 (r46302)
@@ -200,9 +200,9 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-void Parrot_debugger_start(PARROT_INTERP, ARGIN(opcode_t * cur_opcode))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+void Parrot_debugger_start(PARROT_INTERP,
+ ARGIN_NULLOK(opcode_t * cur_opcode))
+ __attribute__nonnull__(1);
PARROT_EXPORT
void PDB_load_source(PARROT_INTERP, ARGIN(const char *command))
@@ -371,8 +371,7 @@
#define ASSERT_ARGS_Parrot_debugger_load __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_debugger_start __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cur_opcode))
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_PDB_load_source __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(command))
Modified: branches/ops_pct/include/parrot/dynext.h
==============================================================================
--- branches/ops_pct/include/parrot/dynext.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/dynext.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2003-2007, Parrot Foundation.
+ * Copyright (C) 2003-2010, Parrot Foundation.
*/
/* dynext.h
@@ -41,7 +41,7 @@
PARROT_CANNOT_RETURN_NULL
PMC * Parrot_load_lib(PARROT_INTERP,
ARGIN_NULLOK(STRING *lib),
- SHIM(PMC *initializer))
+ ARGIN_NULLOK(PMC *parameters))
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_clone_lib_into __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/include/parrot/embed.h
==============================================================================
--- branches/ops_pct/include/parrot/embed.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/embed.h Wed May 5 08:45:29 2010 (r46302)
@@ -56,11 +56,7 @@
PARROT_EXPORT void Parrot_pbc_fixup_loaded(Parrot_Interp);
-PARROT_EXPORT void Parrot_setup_argv(Parrot_Interp, int argc, const char **argv);
-
-PARROT_EXPORT void Parrot_setup_opt(Parrot_Interp, int n, char *argv);
-
-PARROT_EXPORT void Parrot_runcode(Parrot_Interp, int argc, char **argv);
+PARROT_EXPORT void Parrot_runcode(Parrot_Interp, int argc, const char **argv);
PARROT_EXPORT Parrot_PMC Parrot_compile_string(Parrot_Interp,
Parrot_String type, const char *code, Parrot_String *error);
@@ -77,13 +73,13 @@
PARROT_EXPORT void Parrot_run_native(PARROT_INTERP, native_func_t func);
+PARROT_EXPORT void Parrot_load_bytecode(PARROT_INTERP, Parrot_String file_str);
+
/* Parrot_set_config_hash exists in *_config.o (e.g install_config.o),
so if you make this call then you will need to link with it in
addition to libparrot */
void Parrot_set_config_hash(void);
-int Parrot_revision(void);
-
#endif /* PARROT_EMBED_H_GUARD */
/*
Modified: branches/ops_pct/include/parrot/encoding.h
==============================================================================
--- branches/ops_pct/include/parrot/encoding.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/encoding.h Wed May 5 08:45:29 2010 (r46302)
@@ -15,21 +15,16 @@
#include "parrot/parrot.h"
-typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, NOTNULL(STRING *src), NULLOK(STRING *dest));
-typedef UINTVAL (*encoding_get_codepoint_t)(PARROT_INTERP, const STRING *src, UINTVAL offset);
-typedef void (*encoding_set_codepoint_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL codepoint);
-typedef UINTVAL (*encoding_get_byte_t)(PARROT_INTERP, const STRING *src, UINTVAL offset);
-typedef void (*encoding_set_byte_t)(PARROT_INTERP, const STRING *src, UINTVAL offset, UINTVAL count);
-typedef STRING *(*encoding_get_codepoints_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count);
-typedef STRING *(*encoding_get_bytes_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count);
-typedef STRING *(*encoding_get_codepoints_inplace_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef STRING *(*encoding_get_bytes_inplace_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *dest_string);
-typedef void (*encoding_set_codepoints_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *new_bytes);
-typedef void (*encoding_set_bytes_t)(PARROT_INTERP, STRING *src, UINTVAL offset, UINTVAL count, STRING *new_bytes);
-typedef void (*encoding_become_encoding_t)(PARROT_INTERP, STRING *src);
-typedef UINTVAL (*encoding_codepoints_t)(PARROT_INTERP, STRING *src);
-typedef UINTVAL (*encoding_bytes_t)(PARROT_INTERP, STRING *src);
-typedef UINTVAL (*encoding_find_cclass_t)(PARROT_INTERP, STRING *s, const INTVAL *typetable, INTVAL flags, UINTVAL offset, UINTVAL count);
+typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef UINTVAL (*encoding_get_codepoint_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef UINTVAL (*encoding_get_byte_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset);
+typedef void (*encoding_set_byte_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef STRING * (*encoding_get_codepoints_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef STRING * (*encoding_get_bytes_t)(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count);
+typedef UINTVAL (*encoding_codepoints_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef UINTVAL (*encoding_bytes_t)(PARROT_INTERP, ARGIN(const STRING *src));
+typedef UINTVAL (*encoding_find_cclass_t)(PARROT_INTERP, ARGIN(const STRING *s), ARGIN(const INTVAL *typetable), INTVAL flags, UINTVAL offset, UINTVAL count);
+typedef size_t (*encoding_hash_t)(PARROT_INTERP, ARGIN(const STRING *s), size_t hashval);
/* iterator support */
@@ -43,20 +38,15 @@
UINTVAL max_bytes_per_codepoint;
encoding_to_encoding_t to_encoding;
encoding_get_codepoint_t get_codepoint;
- encoding_set_codepoint_t set_codepoint;
encoding_get_byte_t get_byte;
encoding_set_byte_t set_byte;
encoding_get_codepoints_t get_codepoints;
- encoding_get_codepoints_inplace_t get_codepoints_inplace;
encoding_get_bytes_t get_bytes;
- encoding_get_bytes_inplace_t get_bytes_inplace;
- encoding_set_codepoints_t set_codepoints;
- encoding_set_bytes_t set_bytes;
- encoding_become_encoding_t become_encoding;
encoding_codepoints_t codepoints;
encoding_bytes_t bytes;
encoding_iter_init_t iter_init;
encoding_find_cclass_t find_cclass;
+ encoding_hash_t hash;
};
typedef struct _encoding ENCODING;
@@ -79,21 +69,25 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
const ENCODING * Parrot_default_encoding(SHIM_INTERP);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const char * Parrot_encoding_c_name(SHIM_INTERP, INTVAL number_of_encoding);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
STRING* Parrot_encoding_name(SHIM_INTERP, INTVAL number_of_encoding);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_encoding_number(PARROT_INTERP,
ARGIN(const STRING *encodingname))
@@ -101,11 +95,13 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_encoding_number_of_str(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const ENCODING * Parrot_find_encoding(SHIM_INTERP,
@@ -122,6 +118,7 @@
__attribute__nonnull__(3);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const ENCODING* Parrot_get_encoding(SHIM_INTERP, INTVAL number_of_encoding);
@@ -199,26 +196,14 @@
((src)->encoding)->max_bytes_per_codepoint
#define ENCODING_GET_CODEPOINT(i, src, offset) \
((src)->encoding)->get_codepoint((i), (src), (offset))
-#define ENCODING_SET_CODEPOINT(i, src, offset, codepoint) \
- ((src)->encoding)->set_codepoint((i), (src), (offset), (codepoint))
#define ENCODING_GET_BYTE(i, src, offset) \
((src)->encoding)->get_byte((i), (src), (offset))
#define ENCODING_SET_BYTE(i, src, offset, value) \
((src)->encoding)->set_byte((i), (src), (offset), (value))
#define ENCODING_GET_CODEPOINTS(i, src, offset, count) \
((src)->encoding)->get_codepoints((i), (src), (offset), (count))
-#define ENCODING_GET_CODEPOINTS_INPLACE(i, src, offset, count, dest) \
- ((src)->encoding)->get_codepoints_inplace((i), (src), (offset), (count), (dest))
#define ENCODING_GET_BYTES(i, src, offset, count) \
((src)->encoding)->get_bytes((i), (src), (offset), (count))
-#define ENCODING_GET_BYTES_INPLACE(i, src, offset, count, dest) \
- ((src)->encoding)->get_bytes_inplace((i), (src), (offset), (count), (dest))
-#define ENCODING_SET_CODEPOINTS(i, src, offset, count, newdata) \
- ((src)->encoding)->set_codepoints((i), (src), (offset), (count), (newdata))
-#define ENCODING_SET_BYTES(i, src, offset, count, newdata) \
- ((src)->encoding)->set_bytes((i), (src), (offset), (count), (newdata))
-#define ENCODING_BECOME_ENCODING(i, src) \
- ((src)->encoding)->become_encoding((i), (src))
#define ENCODING_CODEPOINTS(i, src) \
((src)->encoding)->codepoints((i), (src))
#define ENCODING_BYTES(i, src) \
@@ -227,6 +212,8 @@
((src)->encoding)->iter_init((i), (src), (iter))
#define ENCODING_FIND_CCLASS(i, src, typetable, flags, pos, end) \
((src)->encoding)->find_cclass((i), (src), (typetable), (flags), (pos), (end))
+#define ENCODING_HASH(i, src, seed) \
+ ((src)->encoding)->hash((i), (src), (seed))
#endif /* PARROT_ENCODING_H_GUARD */
Modified: branches/ops_pct/include/parrot/exceptions.h
==============================================================================
--- branches/ops_pct/include/parrot/exceptions.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/exceptions.h Wed May 5 08:45:29 2010 (r46302)
@@ -51,7 +51,6 @@
EXCEPTION_JIT_UNAVAILABLE,
EXCEPTION_EXEC_UNAVAILABLE,
EXCEPTION_INTERP_ERROR,
- EXCEPTION_PREDEREF_LOAD_ERROR,
EXCEPTION_PARROT_USAGE_ERROR,
EXCEPTION_PIO_ERROR,
EXCEPTION_PARROT_POINTER_ERROR,
@@ -118,6 +117,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void exit_fatal(int exitcode, ARGIN(const char *format), ...)
__attribute__nonnull__(2);
@@ -133,6 +133,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_confess(
ARGIN(const char *cond),
ARGIN(const char *file),
@@ -160,6 +161,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_ex_rethrow_from_c(PARROT_INTERP, ARGIN(PMC *exception))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -173,12 +175,14 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_ex_throw_from_c(PARROT_INTERP, ARGIN(PMC *exception))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_ex_throw_from_c_args(PARROT_INTERP,
SHIM(void *ret_addr),
int exitcode,
@@ -206,11 +210,13 @@
__attribute__nonnull__(4);
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void die_from_exception(PARROT_INTERP, ARGIN(PMC *exception))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void do_panic(
NULLOK_INTERP,
ARGIN_NULLOK(const char *message),
Modified: branches/ops_pct/include/parrot/exit.h
==============================================================================
--- branches/ops_pct/include/parrot/exit.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/exit.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/* exit.h
- * Copyright (C) 2001-2007, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -29,12 +29,13 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_exit(PARROT_INTERP, int status)
__attribute__nonnull__(1);
PARROT_EXPORT
void Parrot_on_exit(PARROT_INTERP,
- NOTNULL(exit_handler_f function),
+ ARGIN(exit_handler_f function),
ARGIN_NULLOK(void *arg))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
Modified: branches/ops_pct/include/parrot/extend.h
==============================================================================
--- branches/ops_pct/include/parrot/extend.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/extend.h Wed May 5 08:45:29 2010 (r46302)
@@ -88,7 +88,7 @@
__attribute__nonnull__(3);
PARROT_EXPORT
-void Parrot_free_cstring(ARGIN_NULLOK(char *string));
+void Parrot_free_cstring(ARGFREE(char *string));
PARROT_EXPORT
Parrot_Int Parrot_get_intreg(PARROT_INTERP, Parrot_Int regnum)
@@ -131,13 +131,15 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
char * Parrot_PMC_get_cstring(PARROT_INTERP, Parrot_PMC pmc)
__attribute__nonnull__(1);
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char * Parrot_PMC_get_cstring_intkey(PARROT_INTERP,
Parrot_PMC pmc,
Parrot_Int key)
@@ -145,7 +147,8 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char * Parrot_PMC_get_cstringn(PARROT_INTERP,
ARGIN(Parrot_PMC pmc),
ARGOUT(Parrot_Int *length))
@@ -156,7 +159,8 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char * Parrot_PMC_get_cstringn_intkey(PARROT_INTERP,
ARGIN(Parrot_PMC pmc),
ARGOUT(Parrot_Int *length),
Modified: branches/ops_pct/include/parrot/gc_api.h
==============================================================================
--- branches/ops_pct/include/parrot/gc_api.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/gc_api.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/* gc_api.h
- * Copyright (C) 2001-2009, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -31,6 +31,8 @@
#define WORD_ALIGN_1 (sizeof (void *) - 1)
#define WORD_ALIGN_MASK ~WORD_ALIGN_1
+#define ALIGNED_STRING_SIZE(len) (((len) + sizeof (void*) + WORD_ALIGN_1) & WORD_ALIGN_MASK)
+
/* pool iteration */
typedef enum {
POOL_PMC = 0x01,
@@ -136,9 +138,8 @@
FUNC_MODIFIES(*obj);
PARROT_EXPORT
-void Parrot_gc_mark_STRING_alive_fun(PARROT_INTERP,
+void Parrot_gc_mark_STRING_alive_fun(SHIM_INTERP,
ARGMOD_NULLOK(STRING *obj))
- __attribute__nonnull__(1)
FUNC_MODIFIES(*obj);
PARROT_EXPORT
@@ -178,11 +179,6 @@
int Parrot_gc_active_sized_buffers(PARROT_INTERP)
__attribute__nonnull__(1);
-void Parrot_gc_add_pmc_sync(PARROT_INTERP, ARGMOD(PMC *pmc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*pmc);
-
void Parrot_gc_allocate_buffer_storage_aligned(PARROT_INTERP,
ARGOUT(Buffer *buffer),
size_t size)
@@ -256,11 +252,6 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*pmc);
-void Parrot_gc_free_pmc_sync(PARROT_INTERP, ARGMOD(PMC *p))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*p);
-
void Parrot_gc_free_string_header(PARROT_INTERP, ARGMOD(STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -350,8 +341,7 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(obj))
#define ASSERT_ARGS_Parrot_gc_mark_STRING_alive_fun \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_Parrot_gc_reallocate_memory_chunk \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
@@ -371,9 +361,6 @@
#define ASSERT_ARGS_Parrot_gc_active_sized_buffers \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_gc_add_pmc_sync __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_Parrot_gc_allocate_buffer_storage_aligned \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -420,9 +407,6 @@
#define ASSERT_ARGS_Parrot_gc_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_Parrot_gc_free_pmc_sync __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(p))
#define ASSERT_ARGS_Parrot_gc_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
@@ -472,8 +456,6 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/gc/api.c */
-void Parrot_gc_inf_init(PARROT_INTERP);
-
#if defined(NDEBUG) && defined(PARROT_IN_CORE)
# define Parrot_gc_mark_STRING_alive(interp, obj) \
do if (! STRING_IS_NULL(obj)) PObj_live_SET(obj); while (0)
Modified: branches/ops_pct/include/parrot/global_setup.h
==============================================================================
--- branches/ops_pct/include/parrot/global_setup.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/global_setup.h Wed May 5 08:45:29 2010 (r46302)
@@ -17,6 +17,13 @@
#include "parrot/config.h"
#include "parrot/interpreter.h"
+void Parrot_register_core_pmcs(PARROT_INTERP, ARGIN(PMC *registry))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+void Parrot_initialize_core_pmcs(PARROT_INTERP, int pass)
+ __attribute__nonnull__(1);
+
/* HEADERIZER BEGIN: src/global_setup.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
Modified: branches/ops_pct/include/parrot/hash.h
==============================================================================
--- branches/ops_pct/include/parrot/hash.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/hash.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,13 +1,9 @@
/* hash.h
- * Copyright (C) 2001-2003, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
* Hashtable implementation
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
*/
#ifndef PARROT_HASH_H_GUARD
@@ -113,15 +109,14 @@
FUNC_MODIFIES(*hash);
PARROT_EXPORT
-void parrot_hash_destroy(PARROT_INTERP, ARGMOD(Hash *hash))
+void parrot_hash_destroy(PARROT_INTERP, ARGFREE_NOTNULL(Hash *hash))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*hash);
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL parrot_hash_exists(PARROT_INTERP,
- ARGIN(Hash *hash),
+ ARGIN(const Hash *hash),
ARGIN(void *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -131,7 +126,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
void * parrot_hash_get(PARROT_INTERP,
- ARGIN(Hash *hash),
+ ARGIN(const Hash *hash),
ARGIN(const void *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -185,9 +180,10 @@
FUNC_MODIFIES(*pinfo);
PARROT_EXPORT
-void parrot_mark_hash(PARROT_INTERP, ARGIN(Hash *hash))
+void parrot_mark_hash(PARROT_INTERP, ARGMOD(Hash *hash))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*hash);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
@@ -224,15 +220,13 @@
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
-void* hash_key_from_int(PARROT_INTERP,
- ARGIN(const Hash * const hash),
- INTVAL key)
+void* hash_key_from_int(PARROT_INTERP, ARGIN(const Hash *hash), INTVAL key)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
void* hash_key_from_pmc(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN(PMC *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -240,14 +234,14 @@
PARROT_CAN_RETURN_NULL
void* hash_key_from_string(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN(STRING *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
INTVAL hash_key_to_int(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -262,61 +256,61 @@
PARROT_CANNOT_RETURN_NULL
STRING* hash_key_to_string(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
void* hash_value_from_int(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
INTVAL value)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
void* hash_value_from_number(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
FLOATVAL value)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
void* hash_value_from_pmc(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(PMC *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
void* hash_value_from_string(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(STRING *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
INTVAL hash_value_to_int(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
FLOATVAL hash_value_to_number(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
PMC* hash_value_to_pmc(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
STRING* hash_value_to_string(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGIN_NULLOK(void *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -374,15 +368,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_PURE_FUNCTION
-int PMC_compare(PARROT_INTERP, ARGIN(PMC *a), ARGIN_NULLOK(PMC *b))
+int PMC_compare(PARROT_INTERP, ARGIN(PMC *a), ARGIN(PMC *b))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-int pointer_compare(SHIM_INTERP,
- ARGIN_NULLOK(const void *a),
- ARGIN_NULLOK(const void *b));
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
int STRING_compare(PARROT_INTERP,
@@ -511,8 +500,8 @@
, PARROT_ASSERT_ARG(keyhash))
#define ASSERT_ARGS_PMC_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(a))
-#define ASSERT_ARGS_pointer_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+ , PARROT_ASSERT_ARG(a) \
+ , PARROT_ASSERT_ARG(b))
#define ASSERT_ARGS_STRING_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(search_key))
Modified: branches/ops_pct/include/parrot/imcc.h
==============================================================================
--- branches/ops_pct/include/parrot/imcc.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/imcc.h Wed May 5 08:45:29 2010 (r46302)
@@ -9,7 +9,7 @@
PARROT_EXPORT void imcc_initialize(PARROT_INTERP);
PARROT_EXPORT void imcc_start_handling_flags(PARROT_INTERP);
PARROT_EXPORT int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, Parrot_Run_core_t *core);
-PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, char **argv);
+PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, const char **argv);
#endif /* PARROT_IMCC_H_GUARD */
Modified: branches/ops_pct/include/parrot/interpreter.h
==============================================================================
--- branches/ops_pct/include/parrot/interpreter.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/interpreter.h Wed May 5 08:45:29 2010 (r46302)
@@ -26,11 +26,6 @@
PARROT_THR_COPY_INTERP = 0x2000, /* thread start copies interp state */
PARROT_THR_THREAD_POOL = 0x4000, /* type3 threads */
- PARROT_THR_TYPE_1 = PARROT_IS_THREAD,
- PARROT_THR_TYPE_2 = PARROT_IS_THREAD | PARROT_THR_COPY_INTERP,
- PARROT_THR_TYPE_3 = PARROT_IS_THREAD | PARROT_THR_COPY_INTERP |
- PARROT_THR_THREAD_POOL
-
} Parrot_Interp_flag;
/* &end_gen */
@@ -64,9 +59,6 @@
PARROT_SLOW_CORE, /* slow bounds/trace/profile core */
PARROT_FUNCTION_CORE = PARROT_SLOW_CORE,
PARROT_FAST_CORE = 0x01, /* fast DO_OP core */
- PARROT_SWITCH_CORE = 0x02, /* P = prederef */
- PARROT_CGP_CORE = 0x06, /* CP */
- PARROT_CGOTO_CORE = 0x04, /* C = cgoto */
PARROT_EXEC_CORE = 0x20, /* TODO Parrot_exec_run variants */
PARROT_GC_DEBUG_CORE = 0x40, /* run GC before each op */
PARROT_DEBUGGER_CORE = 0x80, /* used by parrot debugger */
@@ -152,18 +144,6 @@
struct _Thread_data; /* in thread.h */
struct _Caches; /* caches .h */
-typedef struct _Prederef_branch { /* item for recording branches */
- size_t offs; /* offset in code */
- void *op; /* opcode at that position */
-} Prederef_branch;
-
-typedef struct _Prederef {
- void **code; /* prederefed code */
- Prederef_branch *branches; /* list of branches in code */
- size_t n_branches; /* entries in that list */
- size_t n_allocated; /* allocated size of it */
-} Prederef;
-
/* Get Context from interpreter */
#define CONTEXT(interp) Parrot_pcc_get_context_struct((interp), (interp)->ctx)
@@ -296,7 +276,6 @@
/* during a call sequencer the caller fills these objects
* inside the invoke these get moved to the context structure */
PMC *current_cont; /* the return continuation PMC */
- PMC *current_object; /* invocant, if a method call */
};
/* typedef struct parrot_interp_t Interp; done in parrot.h so that
@@ -316,6 +295,8 @@
IGLOBALS_COMPREG_HASH,
IGLOBALS_ARGV_LIST,
IGLOBALS_NCI_FUNCS,
+ IGLOBALS_NCI_FB_CB,
+ IGLOBALS_NCI_FB_UD,
IGLOBALS_INTERPRETER, /* this interpreter as ParrotInterpreter PMC */
IGLOBALS_DYN_LIBS, /* Hash of ParrotLibrary loaded dynamic ext */
IGLOBALS_CONFIG_HASH,
@@ -331,30 +312,28 @@
#define PNCONST PF_NCONST(interp->code)
/* TODO - Make this a config option */
-/* Splint complains about PMCNULL's storage, so don't use it. */
-#ifdef S_SPLINT_S
-# define PARROT_CATCH_NULL 0
-#else
-# define PARROT_CATCH_NULL 1
+#ifndef PARROT_CATCH_NULL
+# ifdef S_SPLINT_S
+# define PARROT_CATCH_NULL 0
+# else
+# define PARROT_CATCH_NULL 1
+# endif
#endif
+/* Maybe PMC_IS_NULL(interp, pmc) ? */
#if PARROT_CATCH_NULL
PARROT_DATA PMC *PMCNULL; /* Holds single Null PMC */
+PARROT_DATA STRING *STRINGNULL; /* a single Null STRING */
+# define PMC_IS_NULL(pmc) ((pmc) == PMCNULL || (pmc) == NULL)
+# define STRING_IS_NULL(s) ((s) == STRINGNULL || (s) == NULL)
#else
-# define PMCNULL ((PMC *)NULL)
+# define PMCNULL ((PMC *)NULL)
+# define STRINGNULL ((STRING *)NULL)
+# define PMC_IS_NULL(pmc) ((pmc) == NULL)
+# define STRING_IS_NULL(string) ((string) == NULL)
#endif /* PARROT_CATCH_NULL */
-/* Maybe PMC_IS_NULL(interp, pmc) ? */
-#if PARROT_CATCH_NULL
-# define PMC_IS_NULL(pmc) ((pmc) == PMCNULL || (pmc) == NULL)
-#else
-# define PMC_IS_NULL(pmc) (pmc) == NULL
-#endif
-
-PARROT_DATA STRING *STRINGNULL; /* a single Null STRING */
-
-#define STRING_IS_NULL(s) ((s) == STRINGNULL || (s) == NULL)
-#define STRING_IS_EMPTY(s) !(int)(s)->strlen
+#define STRING_IS_EMPTY(s) ((s)->strlen == 0)
/* &gen_from_def(sysinfo.pasm) prefix(SYSINFO_) */
@@ -486,7 +465,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC* interpinfo_p(PARROT_INTERP, INTVAL what)
__attribute__nonnull__(1);
@@ -509,7 +488,7 @@
PARROT_EXPORT
void Parrot_compreg(PARROT_INTERP,
ARGIN(STRING *type),
- NOTNULL(Parrot_compiler_func_t func))
+ ARGIN(Parrot_compiler_func_t func))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
@@ -582,21 +561,10 @@
/* HEADERIZER END: src/interp/inter_misc.c */
-/* interpreter.c */
-void runops_int(Interp *, size_t offset);
-void exec_init_prederef(PARROT_INTERP,
- void *prederef_arena);
-void prepare_for_run(PARROT_INTERP);
-PARROT_EXPORT void dynop_register(PARROT_INTERP, PMC *op_lib);
-
-/* interpreter.pmc */
+/* parrotinterpreter.pmc */
+/* XXX Would be nice if this could live in some headerized grouping */
void clone_interpreter(Parrot_Interp dest, Parrot_Interp self, INTVAL flags);
-void Parrot_setup_event_func_ptrs(PARROT_INTERP);
-
-PARROT_EXPORT void disable_event_checking(PARROT_INTERP);
-PARROT_EXPORT void enable_event_checking(PARROT_INTERP);
-
#else /* !PARROT_IN_CORE */
typedef void * *(*native_func_t)(PARROT_INTERP,
Modified: branches/ops_pct/include/parrot/io.h
==============================================================================
--- branches/ops_pct/include/parrot/io.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/io.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/* io.h
- * Copyright (C) 2001-2003, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -453,14 +453,17 @@
FUNC_MODIFIES(*filehandle)
FUNC_MODIFIES(*buf);
+PARROT_WARN_UNUSED_RESULT
size_t Parrot_io_read_buffer(PARROT_INTERP,
ARGMOD(PMC *filehandle),
- ARGIN(STRING **buf))
+ ARGMOD(STRING **buf))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*filehandle);
+ FUNC_MODIFIES(*filehandle)
+ FUNC_MODIFIES(*buf);
+PARROT_WARN_UNUSED_RESULT
size_t Parrot_io_readline_buffer(PARROT_INTERP,
ARGMOD(PMC *filehandle),
ARGOUT(STRING **buf))
@@ -492,7 +495,7 @@
size_t Parrot_io_write_buffer(PARROT_INTERP,
ARGMOD(PMC *filehandle),
- ARGIN(STRING *s))
+ ARGIN(const STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
@@ -549,12 +552,11 @@
size_t Parrot_io_write_utf8(PARROT_INTERP,
ARGMOD(PMC *filehandle),
- ARGMOD(STRING *s))
+ ARGIN(const STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*filehandle)
- FUNC_MODIFIES(*s);
+ FUNC_MODIFIES(*filehandle);
#define ASSERT_ARGS_Parrot_io_read_utf8 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -584,24 +586,29 @@
FUNC_MODIFIES(*pmc);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
unsigned char * Parrot_io_get_buffer_end(SHIM_INTERP,
- ARGIN_NULLOK(PMC *filehandle));
+ ARGIN(const PMC *filehandle))
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
unsigned char * Parrot_io_get_buffer_next(SHIM_INTERP,
- ARGIN(PMC *filehandle))
+ ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
unsigned char * Parrot_io_get_buffer_start(SHIM_INTERP,
ARGIN(PMC *filehandle))
__attribute__nonnull__(2);
PARROT_EXPORT
-PIOOFF_T Parrot_io_get_file_position(SHIM_INTERP, ARGIN(PMC *filehandle))
+PARROT_WARN_UNUSED_RESULT
+PIOOFF_T Parrot_io_get_file_position(SHIM_INTERP,
+ ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_EXPORT
@@ -613,24 +620,26 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PIOOFF_T Parrot_io_get_last_file_position(SHIM_INTERP,
- ARGIN(PMC *filehandle))
+ ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_EXPORT
-PIOHANDLE Parrot_io_get_os_handle(SHIM_INTERP, ARGIN(PMC *filehandle))
+PARROT_WARN_UNUSED_RESULT
+PIOHANDLE Parrot_io_get_os_handle(SHIM_INTERP, ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_EXPORT
-INTVAL Parrot_io_is_closed_filehandle(PARROT_INTERP, ARGMOD(PMC *pmc))
+PARROT_WARN_UNUSED_RESULT
+INTVAL Parrot_io_is_closed_filehandle(PARROT_INTERP, ARGIN(const PMC *pmc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*pmc);
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_io_is_encoding(PARROT_INTERP,
- ARGIN(PMC *filehandle),
+ ARGIN(const PMC *filehandle),
ARGIN(STRING *value))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -639,14 +648,15 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_io_parse_open_flags(PARROT_INTERP,
- ARGIN_NULLOK(STRING *mode_str))
+ ARGIN_NULLOK(const STRING *mode_str))
__attribute__nonnull__(1);
PARROT_EXPORT
void Parrot_io_set_file_position(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
PIOOFF_T file_pos)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
PARROT_EXPORT
void Parrot_io_set_file_size(SHIM_INTERP,
@@ -660,21 +670,24 @@
PARROT_EXPORT
void Parrot_io_set_os_handle(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
PIOHANDLE file_descriptor)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
PARROT_CAN_RETURN_NULL
-void Parrot_io_clear_buffer(PARROT_INTERP, ARGIN(PMC *filehandle))
+void Parrot_io_clear_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
PARROT_CAN_RETURN_NULL
-INTVAL Parrot_io_get_buffer_flags(SHIM_INTERP, ARGIN(PMC *filehandle))
+INTVAL Parrot_io_get_buffer_flags(SHIM_INTERP, ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
-size_t Parrot_io_get_buffer_size(SHIM_INTERP, ARGIN(PMC *filehandle))
+PARROT_WARN_UNUSED_RESULT
+size_t Parrot_io_get_buffer_size(SHIM_INTERP, ARGIN(const PMC *filehandle))
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
@@ -687,29 +700,34 @@
FUNC_MODIFIES(*buf);
void Parrot_io_set_buffer_end(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_end))
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
void Parrot_io_set_buffer_flags(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
INTVAL new_flags)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
void Parrot_io_set_buffer_next(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_next))
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
void Parrot_io_set_buffer_size(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
size_t new_size)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
void Parrot_io_set_buffer_start(SHIM_INTERP,
- ARGIN(PMC *filehandle),
+ ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_start))
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*filehandle);
#define ASSERT_ARGS_Parrot_io_close_filehandle __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -717,7 +735,8 @@
#define ASSERT_ARGS_Parrot_io_flush_filehandle __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_Parrot_io_get_buffer_end __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_io_get_buffer_end __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(filehandle))
#define ASSERT_ARGS_Parrot_io_get_buffer_next __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(filehandle))
#define ASSERT_ARGS_Parrot_io_get_buffer_start __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -895,25 +914,6 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/io/socket_api.c */
-/* Put platform specific macros here if you must */
-#ifdef PIO_OS_WIN32
-extern STRING *PIO_sockaddr_in(PARROT_INTERP, unsigned short, STRING *);
-extern INTVAL PIO_win32_getblksize(PIOHANDLE fd);
-# define PIO_getblksize(x) PIO_win32_getblksize(x)
-#endif
-
-#ifdef PIO_OS_UNIX
-extern STRING *PIO_sockaddr_in(PARROT_INTERP, unsigned short, STRING *);
-extern INTVAL PIO_unix_getblksize(PIOHANDLE fd);
-# define PIO_getblksize(x) PIO_unix_getblksize(x)
-#endif
-
-#ifdef PIO_OS_STDIO
-extern INTVAL PIO_stdio_getblksize(PIOHANDLE fd);
-# define PIO_sockaddr_in(i, p, a)
-# define PIO_getblksize(x) PIO_stdio_getblksize(x)
-#endif
-
/*
* pioctl argument constants. These don't have to
* be unique across io commands.
Modified: branches/ops_pct/include/parrot/io_portable.h
==============================================================================
--- branches/ops_pct/include/parrot/io_portable.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/io_portable.h Wed May 5 08:45:29 2010 (r46302)
@@ -36,7 +36,9 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*filehandle);
-INTVAL Parrot_io_flush_portable(SHIM_INTERP, SHIM(PMC *filehandle));
+INTVAL Parrot_io_flush_portable(SHIM_INTERP, ARGIN(PMC *filehandle))
+ __attribute__nonnull__(2);
+
INTVAL Parrot_io_getblksize_portable(PIOHANDLE fptr);
INTVAL Parrot_io_init_portable(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -72,9 +74,10 @@
__attribute__nonnull__(3);
size_t Parrot_io_read_portable(PARROT_INTERP,
- SHIM(PMC *filehandle),
+ ARGIN(PMC *filehandle),
ARGIN(STRING **buf))
__attribute__nonnull__(1)
+ __attribute__nonnull__(2)
__attribute__nonnull__(3);
PIOOFF_T Parrot_io_seek_portable(PARROT_INTERP,
@@ -91,11 +94,10 @@
size_t Parrot_io_write_portable(PARROT_INTERP,
ARGIN(PMC *filehandle),
- ARGMOD(STRING *s))
+ ARGIN(const STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*s);
+ __attribute__nonnull__(3);
#define ASSERT_ARGS_Parrot_io_close_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -103,7 +105,8 @@
#define ASSERT_ARGS_Parrot_io_fdopen_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(filehandle))
-#define ASSERT_ARGS_Parrot_io_flush_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_io_flush_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(filehandle))
#define ASSERT_ARGS_Parrot_io_getblksize_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_Parrot_io_init_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
@@ -122,6 +125,7 @@
, PARROT_ASSERT_ARG(buf))
#define ASSERT_ARGS_Parrot_io_read_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(filehandle) \
, PARROT_ASSERT_ARG(buf))
#define ASSERT_ARGS_Parrot_io_seek_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
Modified: branches/ops_pct/include/parrot/io_unix.h
==============================================================================
--- branches/ops_pct/include/parrot/io_unix.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/io_unix.h Wed May 5 08:45:29 2010 (r46302)
@@ -39,11 +39,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
PMC * Parrot_io_fdopen_unix(PARROT_INTERP,
- ARGMOD(PMC *filehandle),
+ ARGMOD_NULLOK(PMC *filehandle),
PIOHANDLE fd,
INTVAL flags)
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
FUNC_MODIFIES(*filehandle);
INTVAL Parrot_io_flush_unix(PARROT_INTERP, ARGMOD(PMC *filehandle))
@@ -55,7 +54,7 @@
INTVAL Parrot_io_init_unix(PARROT_INTERP)
__attribute__nonnull__(1);
-INTVAL Parrot_io_is_closed_unix(PARROT_INTERP, ARGIN(PMC *filehandle))
+INTVAL Parrot_io_is_closed_unix(PARROT_INTERP, ARGIN(const PMC *filehandle))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -118,11 +117,10 @@
size_t Parrot_io_write_unix(PARROT_INTERP,
ARGIN(PMC *filehandle),
- ARGMOD(STRING *s))
+ ARGIN(const STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*s);
+ __attribute__nonnull__(3);
#define ASSERT_ARGS_Parrot_io_async_unix __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -133,8 +131,7 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(filehandle))
#define ASSERT_ARGS_Parrot_io_fdopen_unix __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(filehandle))
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_io_flush_unix __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(filehandle))
Modified: branches/ops_pct/include/parrot/io_win32.h
==============================================================================
--- branches/ops_pct/include/parrot/io_win32.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/io_win32.h Wed May 5 08:45:29 2010 (r46302)
@@ -110,7 +110,7 @@
size_t Parrot_io_write_win32(PARROT_INTERP,
ARGIN(PMC *filehandle),
- ARGIN(STRING *s))
+ ARGIN(const STRING *s))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
Modified: branches/ops_pct/include/parrot/key.h
==============================================================================
--- branches/ops_pct/include/parrot/key.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/key.h Wed May 5 08:45:29 2010 (r46302)
@@ -161,6 +161,7 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL key_type(SHIM_INTERP, ARGIN(const PMC *key))
__attribute__nonnull__(2);
Modified: branches/ops_pct/include/parrot/misc.h
==============================================================================
--- branches/ops_pct/include/parrot/misc.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/misc.h Wed May 5 08:45:29 2010 (r46302)
@@ -34,6 +34,7 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_byte_index(SHIM_INTERP,
ARGIN(const STRING *base),
ARGIN(const STRING *search),
@@ -51,12 +52,15 @@
__attribute__nonnull__(3);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
FLOATVAL Parrot_float_rand(INTVAL how_random);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_int_rand(INTVAL how_random);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_range_rand(INTVAL from, INTVAL to, INTVAL how_random);
PARROT_EXPORT
@@ -78,12 +82,15 @@
void Parrot_srand(INTVAL seed);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_uint_rand(INTVAL how_random);
PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
FLOATVAL floatval_mod(FLOATVAL n2, FLOATVAL n3);
PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
INTVAL intval_mod(INTVAL i2, INTVAL i3);
void Parrot_quicksort(PARROT_INTERP,
@@ -145,7 +152,9 @@
FUNC_MODIFIES(*ary);
PARROT_EXPORT
-int Parrot_secret_snprintf(
+PARROT_IGNORABLE_RESULT
+int /*@alt void@*/
+Parrot_secret_snprintf(
ARGOUT(char *buffer),
NULLOK(const size_t len),
ARGIN(const char *format),
@@ -192,6 +201,7 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
STRING * Parrot_vsprintf_c(PARROT_INTERP,
ARGIN(const char *pat),
va_list args)
@@ -296,11 +306,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_sprintf_format(PARROT_INTERP,
- ARGIN(STRING *pat),
- ARGIN(SPRINTF_OBJ *obj))
+ ARGIN(const STRING *pat),
+ ARGMOD(SPRINTF_OBJ *obj))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*obj);
#define ASSERT_ARGS_Parrot_sprintf_format __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -311,12 +322,6 @@
#endif /* IN_SPF_SYSTEM */
-
-/*
- * generated src/revision.c
- */
-PARROT_EXPORT int Parrot_config_revision(void);
-
#endif /* PARROT_MISC_H_GUARD */
/*
Modified: branches/ops_pct/include/parrot/nci.h
==============================================================================
--- branches/ops_pct/include/parrot/nci.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/nci.h Wed May 5 08:45:29 2010 (r46302)
@@ -15,12 +15,26 @@
#include "parrot/parrot.h"
-void *build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), NOTNULL(int *jitted));
+typedef PMC *(*nci_fb_func_t)(PMC *user_data, STRING *signature);
+typedef void (*nci_thunk_t)(PARROT_INTERP, PMC *, PMC *);
void Parrot_nci_load_core_thunks(PARROT_INTERP);
-
void Parrot_nci_load_extra_thunks(PARROT_INTERP);
+/* HEADERIZER BEGIN: src/nci/api.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_CANNOT_RETURN_NULL
+PMC * build_call_func(PARROT_INTERP, ARGIN(STRING *signature))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_build_call_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(signature))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: src/nci/api.c */
+
#endif /* PARROT_NCI_H_GUARD */
/*
Modified: branches/ops_pct/include/parrot/oo.h
==============================================================================
--- branches/ops_pct/include/parrot/oo.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/oo.h Wed May 5 08:45:29 2010 (r46302)
@@ -148,11 +148,9 @@
PARROT_CANNOT_RETURN_NULL
PMC * Parrot_oo_clone_object(PARROT_INTERP,
ARGIN(PMC *pmc),
- ARGMOD_NULLOK(PMC *class_),
ARGMOD_NULLOK(PMC *dest))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- FUNC_MODIFIES(*class_)
FUNC_MODIFIES(*dest);
void Parrot_oo_extract_methods_from_namespace(PARROT_INTERP,
Modified: branches/ops_pct/include/parrot/op.h
==============================================================================
--- branches/ops_pct/include/parrot/op.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/op.h Wed May 5 08:45:29 2010 (r46302)
@@ -57,7 +57,6 @@
/* NOTE: Sure wish we could put the types here... */
typedef opcode_t *(*op_func_t)(opcode_t *, PARROT_INTERP);
-typedef void **(*op_func_prederef_t)(void **, PARROT_INTERP);
/*
Modified: branches/ops_pct/include/parrot/oplib.h
==============================================================================
--- branches/ops_pct/include/parrot/oplib.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/oplib.h Wed May 5 08:45:29 2010 (r46302)
@@ -51,7 +51,6 @@
CORE_OPS_check_events__, /* inserted into op dispatch when an event
got scheduled */
CORE_OPS_wrapper__, /* inserted by dynop_register for new ops */
- CORE_OPS_prederef__ /* inserted by dynop_register for new ops */
/* 2 more reserved */
} special_core_ops_enum;
Modified: branches/ops_pct/include/parrot/oplib/core_ops.h
==============================================================================
--- branches/ops_pct/include/parrot/oplib/core_ops.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/oplib/core_ops.h Wed May 5 08:45:29 2010 (r46302)
@@ -13,8 +13,9 @@
#include "parrot/parrot.h"
#include "parrot/oplib.h"
+#include "parrot/runcore_api.h"
- op_lib_t *Parrot_DynOp_core_2_1_0(PARROT_INTERP, long init);
+ op_lib_t *Parrot_DynOp_core_2_3_0(PARROT_INTERP, long init);
opcode_t * Parrot_end(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_noop(opcode_t *, PARROT_INTERP);
@@ -49,9 +50,11 @@
opcode_t * Parrot_capture_lex_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_newclosure_p_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_set_args_pc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_get_results_pc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_get_params_pc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_set_returns_pc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_get_results_pc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_set_result_info_p(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_set_result_info_pc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_result_info_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_set_addr_i_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_set_addr_p_ic(opcode_t *, PARROT_INTERP);
@@ -76,11 +79,6 @@
opcode_t * Parrot_die_ic_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_exit_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_exit_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_pushmark_i(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_pushmark_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_popmark_i(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_popmark_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_pushaction_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_debug_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_debug_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bounds_i(opcode_t *, PARROT_INTERP);
@@ -117,6 +115,10 @@
opcode_t * Parrot_needs_destroy_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_loadlib_p_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_loadlib_p_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_loadlib_p_s_p(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_loadlib_p_sc_p(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_loadlib_p_s_pc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_loadlib_p_sc_pc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_dlfunc_p_p_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_dlfunc_p_p_sc_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_dlfunc_p_p_s_sc(opcode_t *, PARROT_INTERP);
@@ -143,8 +145,6 @@
opcode_t * Parrot_band_p_p_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_band_p_p_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_band_p_p_p(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bands_s_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bands_s_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bands_p_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bands_p_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bands_p_p(opcode_t *, PARROT_INTERP);
@@ -158,7 +158,6 @@
opcode_t * Parrot_bnot_i_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bnot_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bnot_p_p(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bnots_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bnots_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bnots_s_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bnots_p(opcode_t *, PARROT_INTERP);
@@ -174,8 +173,6 @@
opcode_t * Parrot_bor_p_p_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bor_p_p_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bor_p_p_p(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bors_s_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bors_s_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bors_p_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bors_p_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bors_p_p(opcode_t *, PARROT_INTERP);
@@ -232,8 +229,6 @@
opcode_t * Parrot_bxor_p_p_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bxor_p_p_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bxor_p_p_p(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bxors_s_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_bxors_s_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bxors_p_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bxors_p_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_bxors_p_p(opcode_t *, PARROT_INTERP);
@@ -447,6 +442,8 @@
opcode_t * Parrot_backtrace(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_getline_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_getfile_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_set_label_p_ic(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_get_label_i_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_close_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_fdopen_p_i_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_fdopen_p_ic_s(opcode_t *, PARROT_INTERP);
@@ -1009,8 +1006,6 @@
opcode_t * Parrot_ord_i_sc_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_chr_s_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_chr_s_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_chopn_s_i(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_chopn_s_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_chopn_s_s_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_chopn_s_sc_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_chopn_s_s_ic(opcode_t *, PARROT_INTERP);
@@ -1054,26 +1049,26 @@
opcode_t * Parrot_substr_s_sc_i_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_s_ic_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_sc_ic_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_i_i_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_ic_i_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_i_ic_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_ic_ic_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_i_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_ic_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_i_ic_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_s_ic_ic_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_i_i_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_ic_i_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_i_ic_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_ic_ic_s(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_i_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_ic_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_i_ic_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_substr_s_ic_ic_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_p_i_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_p_ic_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_p_i_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_substr_s_p_ic_ic(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_i_i_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_i_i_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_ic_i_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_ic_i_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_i_ic_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_i_ic_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_ic_ic_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_ic_ic_s(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_i_i_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_i_i_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_ic_i_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_ic_i_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_i_ic_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_i_ic_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_s_ic_ic_sc(opcode_t *, PARROT_INTERP);
+ opcode_t * Parrot_replace_s_sc_ic_ic_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_index_i_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_index_i_sc_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_index_i_s_sc(opcode_t *, PARROT_INTERP);
@@ -1098,13 +1093,10 @@
opcode_t * Parrot_stringinfo_i_sc_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_upcase_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_upcase_s_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_upcase_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_downcase_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_downcase_s_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_downcase_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_titlecase_s_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_titlecase_s_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_titlecase_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_join_s_s_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_join_s_sc_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_split_p_s_s(opcode_t *, PARROT_INTERP);
@@ -1117,8 +1109,6 @@
opcode_t * Parrot_charsetname_s_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_find_charset_i_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_find_charset_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_trans_charset_s_i(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_trans_charset_s_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_charset_s_s_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_charset_s_sc_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_charset_s_s_ic(opcode_t *, PARROT_INTERP);
@@ -1129,8 +1119,6 @@
opcode_t * Parrot_encodingname_s_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_find_encoding_i_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_find_encoding_i_sc(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_trans_encoding_s_i(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_trans_encoding_s_ic(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_encoding_s_s_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_encoding_s_sc_i(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trans_encoding_s_s_ic(opcode_t *, PARROT_INTERP);
@@ -1265,8 +1253,6 @@
opcode_t * Parrot_find_sub_not_null_p_s(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_find_sub_not_null_p_sc(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_trap(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_set_label_p_ic(opcode_t *, PARROT_INTERP);
- opcode_t * Parrot_get_label_i_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_fetch_p_p_p_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_fetch_p_pc_p_p(opcode_t *, PARROT_INTERP);
opcode_t * Parrot_fetch_p_p_pc_p(opcode_t *, PARROT_INTERP);
Modified: branches/ops_pct/include/parrot/packfile.h
==============================================================================
--- branches/ops_pct/include/parrot/packfile.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/packfile.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2001-2009, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
*/
/* packfile.h
@@ -229,7 +229,7 @@
typedef struct PackFile_FixupTable {
PackFile_Segment base;
opcode_t fixup_count;
- PackFile_FixupEntry **fixups;
+ PackFile_FixupEntry *fixups;
PackFile_ByteCode *code; /* where this segment belongs to */
} PackFile_FixupTable;
@@ -255,7 +255,6 @@
struct PackFile_ByteCode {
PackFile_Segment base;
- Prederef prederef; /* The predereferenced code and info */
struct PackFile_Debug *debugs;
PackFile_ConstTable *const_table;
PackFile_FixupTable *fixups;
@@ -270,7 +269,7 @@
typedef struct PackFile_Debug {
PackFile_Segment base;
opcode_t num_mappings;
- PackFile_DebugFilenameMapping **mappings;
+ PackFile_DebugFilenameMapping *mappings;
PackFile_ByteCode *code; /* where this segment belongs to */
} PackFile_Debug;
@@ -453,11 +452,12 @@
PARROT_EXPORT
void PackFile_add_segment(PARROT_INTERP,
ARGMOD(PackFile_Directory *dir),
- ARGIN(PackFile_Segment *seg))
+ ARGMOD(PackFile_Segment *seg))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*dir);
+ FUNC_MODIFIES(*dir)
+ FUNC_MODIFIES(*seg);
PARROT_EXPORT
void PackFile_Annotations_add_entry(PARROT_INTERP,
@@ -501,9 +501,11 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
size_t PackFile_Constant_pack_size(PARROT_INTERP,
- ARGIN(const PackFile_Constant *self))
+ ARGIN(const PackFile_Constant *self),
+ ARGIN(const PackFile_ConstTable *ct))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
@@ -562,8 +564,9 @@
__attribute__nonnull__(3);
PARROT_EXPORT
-void PackFile_destroy(PARROT_INTERP, ARGMOD_NULLOK(PackFile *pf))
+void PackFile_destroy(PARROT_INTERP, ARGMOD(PackFile *pf))
__attribute__nonnull__(1)
+ __attribute__nonnull__(2)
FUNC_MODIFIES(*pf);
PARROT_EXPORT
@@ -580,7 +583,7 @@
PARROT_CAN_RETURN_NULL
PackFile_Segment * PackFile_find_segment(PARROT_INTERP,
ARGIN_NULLOK(PackFile_Directory *dir),
- ARGIN(STRING *name),
+ ARGIN(const STRING *name),
int sub_dir)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
@@ -808,10 +811,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-opcode_t * PackFile_Annotations_pack(PARROT_INTERP,
+opcode_t * PackFile_Annotations_pack(SHIM_INTERP,
ARGIN(PackFile_Segment *seg),
ARGMOD(opcode_t *cursor))
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
FUNC_MODIFIES(*cursor);
@@ -856,7 +858,8 @@
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(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) \
@@ -880,7 +883,8 @@
, PARROT_ASSERT_ARG(seg) \
, PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_PackFile_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pf))
#define ASSERT_ARGS_PackFile_find_fixup_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(name))
@@ -976,8 +980,7 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(self))
#define ASSERT_ARGS_PackFile_Annotations_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(seg) \
+ PARROT_ASSERT_ARG(seg) \
, PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_PackFile_Annotations_packed_size \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -1016,20 +1019,6 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/packdump.c */
-/* HEADERIZER BEGIN: src/fingerprint.c */
-
-PARROT_EXPORT
-PARROT_PURE_FUNCTION
-int PackFile_check_fingerprint(ARGIN(const void *cursor))
- __attribute__nonnull__(1);
-
-PARROT_EXPORT
-size_t PackFile_write_fingerprint(NOTNULL(void *cursor))
- __attribute__nonnull__(1);
-
-/* HEADERIZER END: src/fingerprint.c */
-
-
/* HEADERIZER BEGIN: src/packfile/pf_items.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
Copied: branches/ops_pct/include/parrot/platform_interface.h (from r46301, trunk/include/parrot/platform_interface.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/include/parrot/platform_interface.h Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/include/parrot/platform_interface.h)
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2003-2010, Parrot Foundation.
+ * $Id$
+ */
+
+#ifndef PARROT_PLATFORM_INTERFACE_H_GUARD
+#define PARROT_PLATFORM_INTERFACE_H_GUARD
+/*
+** platform_interface.h
+*/
+#include "parrot/config.h"
+#include "parrot/interpreter.h"
+
+/*
+** I/O:
+*/
+
+
+/*
+** Math:
+*/
+
+extern int Parrot_signbit(double x);
+#if NUMVAL_SIZE == 12
+int Parrot_signbit_l(long double x);
+#endif
+
+/*
+** Memory:
+*/
+
+void *Parrot_memalign(size_t align, size_t size);
+void *Parrot_memalign_if_possible(size_t align, size_t size);
+void Parrot_free_memalign(void *);
+
+#if !defined(PARROT_HAS_SOME_MEMALIGN)
+# define Parrot_memalign_if_possible(a, s) malloc(s)
+#else
+# define Parrot_memalign_if_possible(a, s) Parrot_memalign((a), (s))
+#endif
+
+#ifdef PARROT_HAS_EXEC_PROTECT
+void *mem_alloc_executable(size_t);
+void mem_free_executable(void *, size_t);
+void *mem_realloc_executable(void *, size_t, size_t);
+#else
+# define mem_alloc_executable mem_internal_allocate
+# define mem_free_executable(a, b) mem_internal_free(a)
+# define mem_realloc_executable(a, b, c) mem_internal_realloc((a), (c))
+#endif
+
+/*
+** Time
+*/
+
+void Parrot_sleep(unsigned int seconds);
+void Parrot_usleep(unsigned int microseconds);
+INTVAL Parrot_intval_time(void);
+FLOATVAL Parrot_floatval_time(void);
+struct tm * Parrot_gmtime_r(const time_t *, struct tm *);
+struct tm * Parrot_localtime_r(const time_t *, struct tm *);
+char* Parrot_asctime_r(const struct tm*, char *);
+
+/*
+ * Env
+ */
+
+void Parrot_setenv(PARROT_INTERP, STRING *name, STRING *value);
+void Parrot_unsetenv(PARROT_INTERP, STRING *name);
+char * Parrot_getenv(PARROT_INTERP, STRING *name);
+
+/*
+** Dynamic Loading:
+*/
+
+/*
+ * The second argument to Parrot_dlopen below provides portable access to
+ * non-default behavior of dynamic linkers.
+ *
+ * All flags will be ignored on platforms for which they are inapplicable.
+ */
+
+/* &gen_from_enum(dlopenflags.pasm) */
+typedef enum Parrot_dlopen_enum {
+ /*
+ * Activates RTLD_GLOBAL on *NIX systems, making symbols from the newly
+ * loaded library visible to other libraries; this is usually needed if
+ * it will load libraries itself.
+ */
+ Parrot_dlopen_global_FLAG = 0x01
+} Parrot_dlopen_flags;
+/* &end_gen */
+
+void *Parrot_dlopen(const char *filename, Parrot_dlopen_flags flags);
+const char *Parrot_dlerror(void);
+void *Parrot_dlsym(void *handle, const char *symbol);
+int Parrot_dlclose(void *handle);
+
+/*
+ * signal handling
+ */
+#ifndef PARROT_HAS_HEADER_SIGNAL
+# define Parrot_set_sighandler(s, h)
+#endif
+
+/*
+ * system timer
+ */
+
+#ifdef PARROT_HAS_SOME_SYS_TIMER
+
+void * new_sys_timer_ms(void);
+void start_sys_timer_ms(void *handle, int ms);
+void stop_sys_timer_ms(void *handle);
+int get_sys_timer_ms(void *handle);
+
+#else
+
+# define new_sys_timer_ms() NULL
+# define start_sys_timer_ms(h, m)
+# define stop_sys_timer_ms(h)
+# define get_sys_timer_ms(h) 0
+
+#endif
+
+/*
+ * high-resolution timer support
+ */
+
+UHUGEINTVAL Parrot_hires_get_time(void);
+UINTVAL Parrot_hires_get_tick_duration(void);
+
+
+struct parrot_string_t;
+INTVAL Parrot_Run_OS_Command(Interp*, struct parrot_string_t *);
+INTVAL Parrot_Run_OS_Command_Argv(Interp*, struct PMC *);
+
+#endif /* PARROT_PLATFORM_INTERFACE_H_GUARD */
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/include/parrot/pmc.h
==============================================================================
--- branches/ops_pct/include/parrot/pmc.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/pmc.h Wed May 5 08:45:29 2010 (r46302)
@@ -53,6 +53,8 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_HOT
INTVAL Parrot_pmc_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc));
PARROT_EXPORT
@@ -75,6 +77,13 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_pmc_new_constant_init_int(PARROT_INTERP,
+ INTVAL base_type,
+ INTVAL init)
+ __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
PMC * Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)
__attribute__nonnull__(1);
@@ -108,7 +117,7 @@
PMC * Parrot_pmc_reuse(PARROT_INTERP,
ARGIN(PMC *pmc),
INTVAL new_type,
- UINTVAL flags)
+ NULLOK(UINTVAL flags))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -131,7 +140,7 @@
ARGIN(PMC *pmc),
INTVAL new_type,
ARGIN(PMC *init),
- UINTVAL flags)
+ NULLOK(UINTVAL flags))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(4);
@@ -148,6 +157,10 @@
PMC * Parrot_pmc_new_temporary(PARROT_INTERP, INTVAL base_type)
__attribute__nonnull__(1);
+INTVAL Parrot_pmc_type_does(PARROT_INTERP, ARGIN(STRING *role), INTVAL type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
#define ASSERT_ARGS_Parrot_pmc_create_mro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_pmc_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -171,6 +184,9 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_pmc_new_constant_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_new_constant_init_int \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_pmc_new_constant_noinit \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
@@ -203,6 +219,9 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_pmc_new_temporary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_type_does __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(role))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/pmc.c */
Modified: branches/ops_pct/include/parrot/pmc_freeze.h
==============================================================================
--- branches/ops_pct/include/parrot/pmc_freeze.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/pmc_freeze.h Wed May 5 08:45:29 2010 (r46302)
@@ -13,6 +13,8 @@
#ifndef PARROT_PMC_FREEZE_H_GUARD
#define PARROT_PMC_FREEZE_H_GUARD
+#include "parrot/packfile.h"
+
typedef enum {
VISIT_HOW_PMC_TO_VISITOR = 0x00, /* push to visitor */
VISIT_HOW_VISITOR_TO_PMC = 0x01, /* shift from visitor */
@@ -113,7 +115,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
STRING* Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -121,24 +123,59 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
+STRING * Parrot_freeze_pbc(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ ARGIN(const PackFile_ConstTable *pf))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+UINTVAL Parrot_freeze_pbc_size(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ ARGIN(const PackFile_ConstTable *pf))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
UINTVAL Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_freeze_strings(PARROT_INTERP, ARGIN(PMC *pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
PMC* Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC* Parrot_thaw_constants(PARROT_INTERP, ARGIN(STRING *image))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC* Parrot_thaw_pbc(PARROT_INTERP,
+ ARGIN(STRING *image),
+ ARGIN(PackFile_ConstTable *pf))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
void Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -153,15 +190,30 @@
#define ASSERT_ARGS_Parrot_freeze __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_freeze_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(pf))
+#define ASSERT_ARGS_Parrot_freeze_pbc_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(pf))
#define ASSERT_ARGS_Parrot_freeze_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_freeze_strings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_Parrot_thaw __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(image))
#define ASSERT_ARGS_Parrot_thaw_constants __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(image))
+#define ASSERT_ARGS_Parrot_thaw_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(image) \
+ , PARROT_ASSERT_ARG(pf))
#define ASSERT_ARGS_Parrot_visit_loop_thawfinish __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(info))
Modified: branches/ops_pct/include/parrot/pobj.h
==============================================================================
--- branches/ops_pct/include/parrot/pobj.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/pobj.h Wed May 5 08:45:29 2010 (r46302)
@@ -55,10 +55,11 @@
/* Given a pointer to the buffer, find the ref_count and the actual start of
the allocated space. Setting ref_count is clunky because we avoid lvalue
casts. */
-#define Buffer_alloc_offset sizeof (INTVAL)
+#define Buffer_alloc_offset sizeof (void*)
#define Buffer_bufallocstart(b) ((char *)Buffer_bufstart(b) - Buffer_alloc_offset)
-#define Buffer_bufrefcount(b) (*(INTVAL *)Buffer_bufallocstart(b))
#define Buffer_bufrefcountptr(b) ((INTVAL *)Buffer_bufallocstart(b))
+#define Buffer_pool(b) ((Memory_Block *)( *(INTVAL*)(Buffer_bufallocstart(b)) & ~3 ))
+#define Buffer_poolptr(b) ((Memory_Block **)Buffer_bufallocstart(b))
typedef enum {
@@ -82,8 +83,6 @@
const struct _charset *charset;
};
-struct _Sync; /* forward decl */
-
/* note that cache and flags are isomorphic with Buffer and PObj */
struct PMC {
Parrot_UInt flags;
@@ -91,17 +90,11 @@
DPOINTER *data;
PMC *_metadata; /* properties */
- /*
- * PMC access synchronization for shared PMCs
- * s. parrot/thread.h
- */
- struct _Sync *_synchronize;
};
#define PMC_data(pmc) (pmc)->data
#define PMC_data_typed(pmc, type) (type)(pmc)->data
#define PMC_metadata(pmc) ((pmc)->_metadata)
-#define PMC_sync(pmc) ((pmc)->_synchronize)
#define POBJ_FLAG(n) ((UINTVAL)1 << (n))
/* PObj flags */
@@ -142,9 +135,7 @@
PObj_sysmem_FLAG = POBJ_FLAG(15),
/* PObj usage FLAGs, COW & GC */
- /* Mark the contents as Copy on write */
- PObj_COW_FLAG = POBJ_FLAG(16),
- /* the Buffer may have COW copies */
+ /* The Buffer allows COW copies, and may have some. */
PObj_is_COWable_FLAG = POBJ_FLAG(17),
/* Private flag for the GC system. Set if the PObj's in use as
* far as the GC's concerned */
@@ -208,10 +199,6 @@
#define PObj_flags_SETTO(o, f) PObj_get_FLAGS(o) = (f)
#define PObj_flags_CLEARALL(o) PObj_flags_SETTO((o), 0)
-#define PObj_COW_TEST(o) PObj_flag_TEST(COW, o)
-#define PObj_COW_SET(o) PObj_flag_SET(COW, o)
-#define PObj_COW_CLEAR(o) PObj_flag_CLEAR(COW, o)
-
#define PObj_is_COWable_TEST(o) PObj_flag_TEST(is_COWable, o)
#define PObj_is_COWable_SET(o) PObj_flag_SET(is_COWable, o)
@@ -302,17 +289,11 @@
#define PObj_is_shared_CLEAR(o) PObj_flag_CLEAR(is_shared, o)
/* some combinations */
-#define PObj_is_cowed_TESTALL(o) (PObj_get_FLAGS(o) & \
- (PObj_COW_FLAG|PObj_constant_FLAG|PObj_external_FLAG))
-#define PObj_is_cowed_SETALL(o) (PObj_get_FLAGS(o) |= \
- (PObj_COW_FLAG|PObj_constant_FLAG|PObj_external_FLAG))
-
#define PObj_is_external_or_free_TESTALL(o) (PObj_get_FLAGS(o) & \
(UINTVAL)(PObj_external_FLAG|PObj_on_free_list_FLAG))
#define PObj_is_external_CLEARALL(o) (PObj_get_FLAGS(o) &= \
- ~(UINTVAL)(PObj_COW_FLAG| \
- PObj_external_FLAG|PObj_sysmem_FLAG))
+ ~(UINTVAL)(PObj_external_FLAG|PObj_sysmem_FLAG))
#define PObj_is_live_or_free_TESTALL(o) (PObj_get_FLAGS(o) & \
(PObj_live_FLAG | PObj_on_free_list_FLAG))
Modified: branches/ops_pct/include/parrot/runcore_api.h
==============================================================================
--- branches/ops_pct/include/parrot/runcore_api.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/runcore_api.h Wed May 5 08:45:29 2010 (r46302)
@@ -38,10 +38,6 @@
typedef enum Parrot_runcore_flags {
RUNCORE_REENTRANT_FLAG = 1 << 0,
RUNCORE_FUNC_TABLE_FLAG = 1 << 1,
- RUNCORE_EVENT_CHECK_FLAG = 1 << 2,
- RUNCORE_PREDEREF_OPS_FLAG = 1 << 3,
- RUNCORE_CGOTO_OPS_FLAG = 1 << 4,
- RUNCORE_JIT_OPS_FLAG = 1 << 5
} Parrot_runcore_flags;
@@ -55,26 +51,6 @@
#define PARROT_RUNCORE_FUNC_TABLE_SET(runcore) \
Runcore_flag_SET(runcore, RUNCORE_FUNC_TABLE_FLAG)
-#define PARROT_RUNCORE_EVENT_CHECK_TEST(runcore) \
- Runcore_flag_TEST(runcore, RUNCORE_EVENT_CHECK_FLAG)
-#define PARROT_RUNCORE_EVENT_CHECK_SET(runcore) \
- Runcore_flag_SET(runcore, RUNCORE_EVENT_CHECK_FLAG)
-
-#define PARROT_RUNCORE_PREDEREF_OPS_TEST(runcore) \
- Runcore_flag_TEST(runcore, RUNCORE_PREDEREF_OPS_FLAG)
-#define PARROT_RUNCORE_PREDEREF_OPS_SET(runcore) \
- Runcore_flag_SET(runcore, RUNCORE_PREDEREF_OPS_FLAG)
-
-#define PARROT_RUNCORE_CGOTO_OPS_TEST(runcore) \
- Runcore_flag_TEST(runcore, RUNCORE_CGOTO_OPS_FLAG)
-#define PARROT_RUNCORE_CGOTO_OPS_SET(runcore) \
- Runcore_flag_SET(runcore, RUNCORE_CGOTO_OPS_FLAG)
-
-#define PARROT_RUNCORE_JIT_OPS_TEST(runcore) \
- Runcore_flag_TEST(runcore, RUNCORE_JIT_OPS_FLAG)
-#define PARROT_RUNCORE_JIT_OPS_SET(runcore) \
- Runcore_flag_SET(runcore, RUNCORE_JIT_OPS_FLAG)
-
/* HEADERIZER BEGIN: src/runcore/main.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -83,6 +59,11 @@
__attribute__nonnull__(1);
PARROT_EXPORT
+void dynop_register(PARROT_INTERP, ARGIN(PMC *lib_pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
void enable_event_checking(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -97,10 +78,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-void dynop_register(PARROT_INTERP, ARGIN(PMC *lib_pmc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
void Parrot_runcore_destroy(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -118,6 +95,9 @@
#define ASSERT_ARGS_disable_event_checking __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_dynop_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(lib_pmc))
#define ASSERT_ARGS_enable_event_checking __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_runcore_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -126,9 +106,6 @@
#define ASSERT_ARGS_Parrot_runcore_switch __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_dynop_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(lib_pmc))
#define ASSERT_ARGS_Parrot_runcore_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_runcore_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -147,26 +124,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-oplib_init_f get_core_op_lib_init(PARROT_INTERP,
+oplib_init_f get_core_op_lib_init(SHIM_INTERP,
ARGIN(Parrot_runcore_t *runcore))
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CAN_RETURN_NULL
-void * init_prederef(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-void load_prederef(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-void Parrot_runcore_cgoto_init(PARROT_INTERP)
- __attribute__nonnull__(1);
-
-void Parrot_runcore_cgp_init(PARROT_INTERP)
- __attribute__nonnull__(1);
-
void Parrot_runcore_debugger_init(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -182,22 +143,8 @@
void Parrot_runcore_slow_init(PARROT_INTERP)
__attribute__nonnull__(1);
-void Parrot_runcore_switch_init(PARROT_INTERP)
- __attribute__nonnull__(1);
-
#define ASSERT_ARGS_get_core_op_lib_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore))
-#define ASSERT_ARGS_init_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore))
-#define ASSERT_ARGS_load_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore))
-#define ASSERT_ARGS_Parrot_runcore_cgoto_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_runcore_cgp_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(runcore))
#define ASSERT_ARGS_Parrot_runcore_debugger_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_runcore_exec_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -208,8 +155,6 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_runcore_slow_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_runcore_switch_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: src/runcore/cores.c */
Modified: branches/ops_pct/include/parrot/runcore_profiling.h
==============================================================================
--- branches/ops_pct/include/parrot/runcore_profiling.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/runcore_profiling.h Wed May 5 08:45:29 2010 (r46302)
@@ -27,8 +27,8 @@
PROFILING_EXIT_CHECK_FLAG = 1 << 0,
PROFILING_FIRST_LOOP_FLAG = 1 << 1,
PROFILING_HAVE_PRINTED_CLI_FLAG = 1 << 2,
- PROFILING_REPORT_ANNOTATIONS_FLAG = 1 << 3
-
+ PROFILING_REPORT_ANNOTATIONS_FLAG = 1 << 3,
+ PROFILING_CANONICAL_OUTPUT_FLAG = 1 << 4
} Parrot_profiling_flags;
typedef enum Parrot_profiling_line {
@@ -129,6 +129,13 @@
#define Profiling_report_annotations_CLEAR(o) \
Profiling_flag_CLEAR(o, PROFILING_REPORT_ANNOTATIONS_FLAG)
+#define Profiling_canonical_output_TEST(o) \
+ Profiling_flag_TEST(o, PROFILING_CANONICAL_OUTPUT_FLAG)
+#define Profiling_canonical_output_SET(o) \
+ Profiling_flag_SET(o, PROFILING_CANONICAL_OUTPUT_FLAG)
+#define Profiling_canonical_output_CLEAR(o) \
+ Profiling_flag_CLEAR(o, PROFILING_CANONICAL_OUTPUT_FLAG)
+
/* HEADERIZER BEGIN: src/runcore/profiling.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
Modified: branches/ops_pct/include/parrot/string.h
==============================================================================
--- branches/ops_pct/include/parrot/string.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/string.h Wed May 5 08:45:29 2010 (r46302)
@@ -24,7 +24,8 @@
typedef struct parrot_string_t STRING;
typedef enum Forward_flag {
- Buffer_moved_FLAG = 1 << 0
+ Buffer_moved_FLAG = 1 << 0,
+ Buffer_shared_FLAG = 1 << 1
} Forward_flags;
/* String iterator */
Modified: branches/ops_pct/include/parrot/string_funcs.h
==============================================================================
--- branches/ops_pct/include/parrot/string_funcs.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/string_funcs.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,5 @@
-#define ASSERT_ARGS_STRING_is_null __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
/* string_funcs.h
- * Copyright (C) 2001-2008, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -28,48 +27,31 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-STRING * Parrot_str_append(PARROT_INTERP,
- ARGMOD_NULLOK(STRING *a),
- ARGIN_NULLOK(STRING *b))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*a);
-
-PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_bitwise_and(PARROT_INTERP,
ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2),
- ARGOUT_NULLOK(STRING **dest))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ ARGIN_NULLOK(const STRING *s2))
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_bitwise_not(PARROT_INTERP,
- ARGIN_NULLOK(const STRING *s),
- ARGOUT_NULLOK(STRING **dest))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ ARGIN_NULLOK(const STRING *s))
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_bitwise_or(PARROT_INTERP,
ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2),
- ARGOUT_NULLOK(STRING **dest))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ ARGIN_NULLOK(const STRING *s2))
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_bitwise_xor(PARROT_INTERP,
ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2),
- ARGOUT_NULLOK(STRING **dest))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ ARGIN_NULLOK(const STRING *s2))
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
@@ -85,34 +67,24 @@
PARROT_CAN_RETURN_NULL
STRING* Parrot_str_change_charset(PARROT_INTERP,
ARGMOD_NULLOK(STRING *src),
- INTVAL charset_nr,
- ARGOUT_NULLOK(STRING *dest))
+ INTVAL charset_nr)
__attribute__nonnull__(1)
- FUNC_MODIFIES(*src)
- FUNC_MODIFIES(*dest);
+ FUNC_MODIFIES(*src);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
STRING* Parrot_str_change_encoding(PARROT_INTERP,
- ARGIN_NULLOK(STRING *src),
- INTVAL encoding_nr,
- ARGOUT_NULLOK(STRING *dest))
+ ARGMOD_NULLOK(STRING *src),
+ INTVAL encoding_nr)
__attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ FUNC_MODIFIES(*src);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_chopn(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-void Parrot_str_chopn_inplace(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
+STRING * Parrot_str_chopn(PARROT_INTERP, ARGIN(const STRING *s), INTVAL n)
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
@@ -124,24 +96,28 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
-STRING * Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
+STRING * Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(const STRING *src))
__attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_concat(PARROT_INTERP,
ARGIN_NULLOK(STRING *a),
- ARGIN_NULLOK(STRING *b),
- UINTVAL Uflags)
+ ARGIN_NULLOK(STRING *b))
__attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-STRING * Parrot_str_copy(PARROT_INTERP, ARGMOD(STRING *s))
+STRING * Parrot_str_copy(PARROT_INTERP, ARGIN(const STRING *s))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
+ __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_PURE_FUNCTION
+PARROT_CANNOT_RETURN_NULL
+const char * Parrot_str_cstring(SHIM_INTERP, ARGIN(const STRING *str))
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
@@ -150,11 +126,6 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-void Parrot_str_downcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_str_equal(PARROT_INTERP,
ARGIN_NULLOK(const STRING *s1),
@@ -177,7 +148,7 @@
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_str_find_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN_NULLOK(STRING *s),
+ ARGIN_NULLOK(const STRING *s),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1);
@@ -196,7 +167,7 @@
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_str_find_not_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN_NULLOK(STRING *s),
+ ARGIN_NULLOK(const STRING *s),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1);
@@ -214,7 +185,7 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-void Parrot_str_free_cstring(ARGIN_NULLOK(char *p));
+void Parrot_str_free_cstring(ARGFREE(char *p));
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
@@ -250,6 +221,8 @@
__attribute__nonnull__(3);
PARROT_EXPORT
+PARROT_HOT
+PARROT_PURE_FUNCTION
INTVAL Parrot_str_is_null(SHIM_INTERP, ARGIN_NULLOK(const STRING *s));
PARROT_EXPORT
@@ -262,19 +235,16 @@
__attribute__nonnull__(3);
PARROT_EXPORT
-PARROT_IGNORABLE_RESULT
-INTVAL /*@alt void@*/
-Parrot_str_length(PARROT_INTERP, ARGMOD(STRING *s))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
+PARROT_WARN_UNUSED_RESULT
+INTVAL Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_new(PARROT_INTERP,
- ARGIN_NULLOK(const char * const buffer),
+ ARGIN_NULLOK(const char *buffer),
const UINTVAL len)
__attribute__nonnull__(1);
@@ -286,14 +256,6 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING * Parrot_str_new_COW(PARROT_INTERP, ARGMOD(STRING *s))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
@@ -332,8 +294,7 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-void Parrot_str_pin(PARROT_INTERP, ARGMOD(STRING *s))
- __attribute__nonnull__(1)
+void Parrot_str_pin(SHIM_INTERP, ARGMOD(STRING *s))
__attribute__nonnull__(2)
FUNC_MODIFIES(*s);
@@ -347,46 +308,19 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
STRING * Parrot_str_replace(PARROT_INTERP,
- ARGIN(STRING *src),
+ ARGIN(const STRING *src),
INTVAL offset,
INTVAL length,
- ARGIN(STRING *rep),
- ARGOUT_NULLOK(STRING **d))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*d);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_resize(PARROT_INTERP, ARGMOD(STRING *s), UINTVAL addlen)
+ ARGIN(const STRING *rep))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_reuse_COW(SHIM_INTERP,
- ARGMOD(STRING *s),
- ARGOUT(STRING *d))
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*s)
- FUNC_MODIFIES(*d);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_set(PARROT_INTERP,
- ARGIN_NULLOK(STRING *dest),
- ARGMOD(STRING *src))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*src);
+ __attribute__nonnull__(5);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
PMC* Parrot_str_split(PARROT_INTERP,
ARGIN_NULLOK(STRING *delim),
ARGIN_NULLOK(STRING *str))
@@ -396,13 +330,10 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING * Parrot_str_substr(PARROT_INTERP,
- ARGIN_NULLOK(STRING *src),
+ ARGIN_NULLOK(const STRING *src),
INTVAL offset,
- INTVAL length,
- ARGOUT_NULLOK(STRING **d),
- int replace_dest)
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*d);
+ INTVAL length)
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
@@ -411,11 +342,6 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-void Parrot_str_titlecase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
char * Parrot_str_to_cstring(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
@@ -460,29 +386,6 @@
__attribute__nonnull__(1);
PARROT_EXPORT
-void Parrot_str_upcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-void Parrot_str_write_COW(PARROT_INTERP, ARGMOD(STRING *s))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
-PARROT_PURE_FUNCTION
-PARROT_CANNOT_RETURN_NULL
-const char * Parrot_string_cstring(SHIM_INTERP, ARGIN(const STRING *str))
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-UINTVAL string_capacity(SHIM_INTERP, ARGIN(const STRING *s))
- __attribute__nonnull__(2);
-
-PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING * string_chr(PARROT_INTERP, UINTVAL character)
@@ -496,9 +399,6 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-INTVAL STRING_is_null(SHIM_INTERP, ARGIN_NULLOK(const STRING *s));
-
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
STRING * string_make(PARROT_INTERP,
@@ -520,13 +420,15 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
INTVAL string_max_bytes(SHIM_INTERP, ARGIN(const STRING *s), UINTVAL nchars)
__attribute__nonnull__(2);
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-INTVAL string_ord(PARROT_INTERP, ARGIN_NULLOK(const STRING *s), INTVAL idx)
- __attribute__nonnull__(1);
+INTVAL string_ord(PARROT_INTERP, ARGIN(const STRING *s), INTVAL idx)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
@@ -543,6 +445,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
+STRING* Parrot_str_clone(PARROT_INTERP, ARGIN(const STRING *s))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
STRING * Parrot_str_from_int_base(PARROT_INTERP,
ARGOUT(char *tc),
HUGEINTVAL num,
@@ -562,8 +470,6 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*tc);
-#define ASSERT_ARGS_Parrot_str_append __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_bitwise_and __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_bitwise_not __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -582,9 +488,6 @@
#define ASSERT_ARGS_Parrot_str_chopn __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_str_chopn_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_compose __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -594,10 +497,10 @@
#define ASSERT_ARGS_Parrot_str_copy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
+#define ASSERT_ARGS_Parrot_str_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(str))
#define ASSERT_ARGS_Parrot_str_downcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_downcase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_escape __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -635,16 +538,12 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ar))
#define ASSERT_ARGS_Parrot_str_length __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
+ PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_new_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(buffer))
-#define ASSERT_ARGS_Parrot_str_new_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_new_from_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(buffer))
@@ -657,8 +556,7 @@
#define ASSERT_ARGS_Parrot_str_not_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_pin __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
+ PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_repeat __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
@@ -666,23 +564,12 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(rep))
-#define ASSERT_ARGS_Parrot_str_resize __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_str_reuse_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(s) \
- , PARROT_ASSERT_ARG(d))
-#define ASSERT_ARGS_Parrot_str_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_Parrot_str_split __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_substr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_titlecase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_to_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_str_to_hashval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -700,21 +587,11 @@
, PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_upcase_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_str_write_COW __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_string_cstring __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(str))
-#define ASSERT_ARGS_string_capacity __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_string_chr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_string_increment __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_STRING_is_null __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_string_make __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_string_make_from_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -722,11 +599,15 @@
#define ASSERT_ARGS_string_max_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_string_ord __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_string_primary_encoding_for_representation \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_string_to_cstring_nullable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_str_clone __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_Parrot_str_from_int_base __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(tc))
Modified: branches/ops_pct/include/parrot/string_primitives.h
==============================================================================
--- branches/ops_pct/include/parrot/string_primitives.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/string_primitives.h Wed May 5 08:45:29 2010 (r46302)
@@ -36,12 +36,11 @@
PARROT_EXPORT
Parrot_UInt4 string_unescape_one(PARROT_INTERP,
ARGMOD(UINTVAL *offset),
- ARGMOD(STRING *string))
+ ARGIN(const STRING *string))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*offset)
- FUNC_MODIFIES(*string);
+ FUNC_MODIFIES(*offset);
#define ASSERT_ARGS_Parrot_char_digit_value __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_str_dup_remove_quotes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/include/parrot/sub.h
==============================================================================
--- branches/ops_pct/include/parrot/sub.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/sub.h Wed May 5 08:45:29 2010 (r46302)
@@ -2,14 +2,9 @@
* Copyright (C) 2001-2008, Parrot Foundation.
* SVN Info
* $Id$
- * Overview:
* Data Structure and Algorithms:
* Subroutine, coroutine, closure and continuation structures
* and related routines.
- * History:
- * Initial version by Melvin on on 2002/06/6
- * Notes:
- * References:
*/
#ifndef PARROT_SUB_H_GUARD
@@ -36,9 +31,6 @@
SUB_FLAG_PF_IMMEDIATE = PObj_private6_FLAG,
SUB_FLAG_PF_POSTCOMP = PObj_private7_FLAG,
- /* [temporary expedient. -- rgr, 13-Jul-08.] */
- SUB_FLAG_NEWCLOSURE = SUB_FLAG_PF_IMMEDIATE,
-
SUB_FLAG_PF_MASK = SUB_FLAG_PF_ANON
| SUB_FLAG_PF_MAIN
| SUB_FLAG_PF_LOAD
@@ -64,6 +56,7 @@
typedef enum {
SUB_COMP_FLAG_BIT_0 = SUB_FLAG(0),
SUB_COMP_FLAG_BIT_1 = SUB_FLAG(1),
+ SUB_COMP_FLAG_VTABLE = SUB_COMP_FLAG_BIT_1,
SUB_COMP_FLAG_BIT_2 = SUB_FLAG(2),
SUB_COMP_FLAG_METHOD = SUB_COMP_FLAG_BIT_2,
SUB_COMP_FLAG_BIT_3 = SUB_FLAG(3),
@@ -76,6 +69,7 @@
SUB_COMP_FLAG_BIT_10 = SUB_FLAG(10),
SUB_COMP_FLAG_PF_INIT = SUB_COMP_FLAG_BIT_10,
SUB_COMP_FLAG_BIT_11 = SUB_FLAG(11),
+ SUB_COMP_FLAG_NSENTRY = SUB_COMP_FLAG_BIT_11,
SUB_COMP_FLAG_BIT_12 = SUB_FLAG(12),
SUB_COMP_FLAG_BIT_13 = SUB_FLAG(13),
SUB_COMP_FLAG_BIT_14 = SUB_FLAG(14),
@@ -95,7 +89,7 @@
SUB_COMP_FLAG_BIT_28 = SUB_FLAG(28),
SUB_COMP_FLAG_BIT_29 = SUB_FLAG(29),
SUB_COMP_FLAG_BIT_30 = SUB_FLAG(30),
- SUB_COMP_FLAG_MASK = 0x00000404
+ SUB_COMP_FLAG_MASK = SUB_COMP_FLAG_VTABLE | SUB_COMP_FLAG_METHOD | SUB_COMP_FLAG_NSENTRY | SUB_COMP_FLAG_PF_INIT
} sub_comp_flags_enum;
#undef SUB_FLAG
@@ -170,13 +164,6 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_EXPORT
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-PMC * new_ret_continuation_pmc(PARROT_INTERP,
- ARGIN_NULLOK(opcode_t *address))
- __attribute__nonnull__(1);
-
-PARROT_EXPORT
void Parrot_capture_lex(PARROT_INTERP, ARGMOD(PMC *sub_pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -217,11 +204,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-void invalidate_retc_context(PARROT_INTERP, ARGMOD(PMC *cont))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*cont);
-
void mark_context_start(void);
void Parrot_continuation_check(PARROT_INTERP, ARGIN(const PMC *pmc))
__attribute__nonnull__(1)
@@ -260,8 +242,6 @@
ARGIN_NULLOK(opcode_t *pc))
__attribute__nonnull__(1);
-#define ASSERT_ARGS_new_ret_continuation_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_capture_lex __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(sub_pmc))
@@ -281,9 +261,6 @@
#define ASSERT_ARGS_parrot_new_closure __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(sub_pmc))
-#define ASSERT_ARGS_invalidate_retc_context __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cont))
#define ASSERT_ARGS_mark_context_start __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_Parrot_continuation_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
Modified: branches/ops_pct/include/parrot/thr_windows.h
==============================================================================
--- branches/ops_pct/include/parrot/thr_windows.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/thr_windows.h Wed May 5 08:45:29 2010 (r46302)
@@ -119,13 +119,13 @@
typedef void (*Cleanup_Handler)(void *);
-#ifndef HAVE_STRUCT_TIMESPEC
-# define HAVE_STRUCT_TIMESPEC
+#ifndef _TIMESPEC_DEFINED
+# define _TIMESPEC_DEFINED
struct timespec {
time_t tv_sec;
long tv_nsec;
};
-#endif /* HAVE_STRUCT_TIMESPEC */
+#endif /* _TIMESPEC_DEFINED */
#endif /* PARROT_THR_WINDOWS_H_GUARD */
Modified: branches/ops_pct/include/parrot/thread.h
==============================================================================
--- branches/ops_pct/include/parrot/thread.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/thread.h Wed May 5 08:45:29 2010 (r46302)
@@ -147,12 +147,6 @@
/* TODO use thread pools instead */
VAR_SCOPE Shared_gc_info *shared_gc_info;
-typedef struct _Sync {
- Parrot_Interp owner; /* that interpreter, that owns
- the arena, where the PMC is in */
- Parrot_mutex pmc_lock; /* for wr access to PMCs content */
-} Sync;
-
/* HEADERIZER BEGIN: src/thread.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -164,6 +158,12 @@
void Parrot_shared_gc_unblock(PARROT_INTERP)
__attribute__nonnull__(1);
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PMC * pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)
+ __attribute__nonnull__(1);
+
void pt_add_to_interpreters(PARROT_INTERP,
ARGIN_NULLOK(Parrot_Interp new_interp))
__attribute__nonnull__(1);
@@ -194,51 +194,29 @@
void pt_suspend_self_for_gc(PARROT_INTERP)
__attribute__nonnull__(1);
+int pt_thread_create_run(PARROT_INTERP,
+ INTVAL type,
+ INTVAL clone_flags,
+ ARGIN(PMC *sub),
+ ARGIN_NULLOK(PMC *arg))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(4);
+
void pt_thread_detach(UINTVAL tid);
PARROT_CAN_RETURN_NULL
-PMC* pt_thread_join(NOTNULL(Parrot_Interp parent), UINTVAL tid)
+PMC* pt_thread_join(ARGIN(Parrot_Interp parent), UINTVAL tid)
__attribute__nonnull__(1);
void pt_thread_kill(UINTVAL tid);
void pt_thread_prepare_for_run(Parrot_Interp d, NULLOK(Parrot_Interp s));
int pt_thread_run(PARROT_INTERP,
- ARGOUT(PMC *dest_interp),
+ ARGMOD(PMC *thread_interp_pmc),
ARGIN(PMC *sub),
ARGIN_NULLOK(PMC *arg))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*dest_interp);
-
-int pt_thread_run_1(PARROT_INTERP,
- ARGOUT(PMC* dest_interp),
- ARGIN(PMC* sub),
- ARGIN(PMC *arg))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(* dest_interp);
-
-int pt_thread_run_2(PARROT_INTERP,
- ARGOUT(PMC* dest_interp),
- ARGIN(PMC* sub),
- ARGIN(PMC *arg))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(* dest_interp);
-
-int pt_thread_run_3(PARROT_INTERP,
- ARGOUT(PMC* dest_interp),
- ARGIN(PMC* sub),
- ARGIN(PMC *arg))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(* dest_interp);
+ FUNC_MODIFIES(*thread_interp_pmc);
void pt_thread_wait_with(PARROT_INTERP, ARGMOD(Parrot_mutex *mutex))
__attribute__nonnull__(1)
@@ -260,6 +238,8 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_Parrot_shared_gc_unblock __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_thread_create __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_pt_add_to_interpreters __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_pt_clone_code __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -279,6 +259,9 @@
, PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_pt_suspend_self_for_gc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_thread_create_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(sub))
#define ASSERT_ARGS_pt_thread_detach __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_pt_thread_join __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(parent))
@@ -286,23 +269,8 @@
#define ASSERT_ARGS_pt_thread_prepare_for_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_pt_thread_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(dest_interp) \
+ , PARROT_ASSERT_ARG(thread_interp_pmc) \
, PARROT_ASSERT_ARG(sub))
-#define ASSERT_ARGS_pt_thread_run_1 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(dest_interp) \
- , PARROT_ASSERT_ARG(sub) \
- , PARROT_ASSERT_ARG(arg))
-#define ASSERT_ARGS_pt_thread_run_2 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(dest_interp) \
- , PARROT_ASSERT_ARG(sub) \
- , PARROT_ASSERT_ARG(arg))
-#define ASSERT_ARGS_pt_thread_run_3 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(dest_interp) \
- , PARROT_ASSERT_ARG(sub) \
- , PARROT_ASSERT_ARG(arg))
#define ASSERT_ARGS_pt_thread_wait_with __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mutex))
Modified: branches/ops_pct/include/parrot/vtables.h
==============================================================================
--- branches/ops_pct/include/parrot/vtables.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/include/parrot/vtables.h Wed May 5 08:45:29 2010 (r46302)
@@ -1,13 +1,9 @@
/* vtables.h
- * Copyright (C) 2001-2003, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
* Vtable manipulation code. Not to be confused with vtable.h
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
*/
#ifndef PARROT_VTABLES_H_GUARD
@@ -26,10 +22,9 @@
__attribute__nonnull__(2);
PARROT_EXPORT
-void Parrot_destroy_vtable(PARROT_INTERP, ARGMOD(VTABLE *vtable))
+void Parrot_destroy_vtable(PARROT_INTERP, ARGFREE_NOTNULL(VTABLE *vtable))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*vtable);
+ __attribute__nonnull__(2);
PARROT_EXPORT
void Parrot_initialize_core_vtables(PARROT_INTERP)
Modified: branches/ops_pct/lib/Parrot/Configure/Options/Conf.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Options/Conf.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Configure/Options/Conf.pm Wed May 5 08:45:29 2010 (r46302)
@@ -91,7 +91,6 @@
--opcode=(type) Use the given type for opcodes
--ops=(files) Use the given ops files
- --cgoto=0 Don't build cgoto core - recommended when short of mem
--jitcapable Use JIT
--execcapable Use JIT to emit a native executable
--without-threads Build parrot without thread support
@@ -99,12 +98,11 @@
External Library Options:
- --without-crypto Build parrot without crypto support (libssl)
- --without-gdbm Build parrot without GDBM support
--without-gettext Build parrot without gettext support
--without-gmp Build parrot without GMP support
--without-opengl Build parrot without OpenGL support (GL/GLU/GLUT)
--without-pcre Build parrot without pcre support
+ --without-zlib Build parrot without zlib support
ICU Options:
@@ -157,6 +155,8 @@
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--infodir=DIR info documentation [PREFIX/info]
--mandir=DIR man documentation [PREFIX/man]
+ --pkgconfigdir=DIR subdirectory of <libdir> for pkgconfig
+ [<libdir>/pkgconfig/<version>]
EOT
return 1;
Modified: branches/ops_pct/lib/Parrot/Configure/Options/Conf/Shared.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Options/Conf/Shared.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Configure/Options/Conf/Shared.pm Wed May 5 08:45:29 2010 (r46302)
@@ -15,7 +15,6 @@
cc
ccflags
ccwarn
- cgoto
configure_trace
cxx
darwin_no_fink
@@ -61,6 +60,7 @@
ops
optimize
parrot_is_shared
+ pkgconfigdir
prefix
profile
sbindir
@@ -79,6 +79,7 @@
without-opengl
without-pcre
without-threads
+ without-zlib
yacc
};
Modified: branches/ops_pct/lib/Parrot/Configure/Options/Test/Prepare.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Options/Test/Prepare.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Configure/Options/Test/Prepare.pm Wed May 5 08:45:29 2010 (r46302)
@@ -78,6 +78,8 @@
? qq|$secondlevel-$number|
: $number;
$steps_tests_complex{$category}{$class}{$final}++;
+
+ return;
}
} # END wanted()
finddepth( \&wanted, ( $steps_dir ) );
Modified: branches/ops_pct/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Configure/Step/List.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Configure/Step/List.pm Wed May 5 08:45:29 2010 (r46302)
@@ -41,7 +41,6 @@
auto::isreg
auto::jit
auto::frames
- auto::cgoto
auto::inline
auto::gc
auto::memalign
@@ -52,10 +51,9 @@
auto::thread
auto::gmp
auto::readline
- auto::gdbm
auto::pcre
auto::opengl
- auto::crypto
+ auto::zlib
auto::gettext
auto::snprintf
auto::perldoc
@@ -65,7 +63,6 @@
auto::icu
gen::config_h
gen::core_pmcs
- gen::crypto
gen::opengl
gen::makefiles
gen::platform
Modified: branches/ops_pct/lib/Parrot/Distribution.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Distribution.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Distribution.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2009, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -248,13 +248,13 @@
# and make a hash out of the directories
my %dirs =
map { ( ( File::Spec->splitpath($_) )[1] => 1 ) }
- grep { m|(?i)(?:$filter_ext)| } $self->_dist_files;
+ grep { m/(?i)(?:$filter_ext)/ } $self->_dist_files;
# Filter out ignored directories
# and return the results
my @dirs = sort
map { $self->directory_with_name($_) }
- grep { !m|(?:$filter_dir)| }
+ grep { !m/(?:$filter_dir)/ }
keys %dirs;
return @dirs;
};
@@ -281,7 +281,7 @@
}
}
- print 'WARNING: ' . __FILE__ . ':' . __LINE__ . ' File not found: ' . $name . "\n";
+ print '# WARNING: ' . __FILE__ . ':' . __LINE__ . ' File not found: ' . $name . "\n";
return;
};
@@ -293,7 +293,7 @@
# and return a sorted list of filenames
my @files = sort
map { $self->file_with_name($_) }
- grep { m|(?i)(?:$filter_ext)| }
+ grep { m/(?i)(?:$filter_ext)/ }
$self->_dist_files;
return @files;
};
@@ -334,7 +334,7 @@
# and return a sorted list of filenames
my @files = sort
map { $self->file_with_name($_) }
- grep { m|[/\\]makefiles[/\\][a-z]+\.in$| }
+ grep { m{[/\\]makefiles[/\\][a-z]+\.in$} }
$self->_dist_files;
return @files;
}
@@ -582,11 +582,9 @@
=cut
-{
- sub is_pir_exemption {
- my ( $self, $file ) = @_;
- $file->path =~ m{/ext/};
- }
+sub is_pir_exemption {
+ my ( $self, $file ) = @_;
+ return $file->path =~ m{/ext/};
}
@@ -618,7 +616,7 @@
my $line = <$file_handle>;
close $file_handle;
- if ( $line && $line =~ /^#!.*parrot/ ) {
+ if ( $line && $line =~ /^#!.*parrot(?:\s|$)/ ) {
# something that specifies a pir or pbc is probably a HLL, skip it
return 0 if $line =~ /\.(?:pir|pbc)/;
return 1;
Modified: branches/ops_pct/lib/Parrot/Docs/Section/Compilers.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Docs/Section/Compilers.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Docs/Section/Compilers.pm Wed May 5 08:45:29 2010 (r46302)
@@ -45,7 +45,7 @@
$self->new_group( 'PGE', 'the Parrot Grammar Engine', 'compilers/pge' ),
$self->new_group( 'TGE', 'the Tree Grammar Engine', 'compilers/tge' ),
$self->new_group( 'PCT', 'Parrot Compiler Toolkit', 'compilers/pct' ),
- $self->new_group( 'JSON', 'JavaScript Object Notation', 'compilers/json' ),
+ $self->new_group( 'JSON', 'JavaScript Object Notation', 'compilers/data_json' ),
$self->new_group( 'PIRC', 'a PIR Compiler', 'compilers/pirc' ),
$self->new_group( 'NCIGEN', 'Native Call Interface Generator', 'compilers/ncigen' ),
);
Modified: branches/ops_pct/lib/Parrot/H2inc.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/H2inc.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/H2inc.pm Wed May 5 08:45:29 2010 (r46302)
@@ -44,17 +44,17 @@
sub parse_file {
my ( $in_file, $out_file) = @_;
- $out_file =~ s/\\/\//g; # transform Windows backslash
+ $out_file =~ s{\\}{/}g; # transform Windows backslash
- my ( @directives, %values, $last_val, $cur, $or_continues );
+ my ( %values, $last_val, $cur, $or_continues );
open my $fh, '<', $in_file or die "Can't open $in_file: $!\n";
while ( my $line = <$fh> ) {
if (
- $line =~ m!
+ $line =~ m{
&gen_from_(enum|def) \( ( [^)]* ) \)
(?: \s+ prefix \( (\w+) \) )?
(?: \s+ subst \( (s/.*?/.*?/[eig]?) \) )?
- !x
+ }x
)
{
$cur and die "Missing '&end_gen' in $in_file\n";
@@ -131,7 +131,7 @@
$values{$k} = $last_val = $v;
push @{ $cur->{defs} }, [ $k, $v ];
}
- elsif ( $line =~ m!^\s*(\w+)\s*(?:,\s*)?(?:/\*|$)! ) {
+ elsif ( $line =~ m{^\s*(\w+)\s*(?:,\s*)?(?:/\*|$)} ) {
my $k = $1;
my $v = $values{$k} = ++$last_val;
push @{ $cur->{defs} }, [ $k, $v ];
@@ -196,7 +196,7 @@
my $keylen = (sort { $a <=> $b } map { length($_->[0]) } @_ )[-1] ;
my $vallen = (sort { $a <=> $b } map { length($_->[1]) } @_ )[-1] ;
- map {sprintf ".macro_const %-${keylen}s %${vallen}s", $_->[0], $_->[1]} @_;
+ return map {sprintf ".macro_const %-${keylen}s %${vallen}s", $_->[0], $_->[1]} @_;
}
=head2 C<const_to_perl()>
@@ -221,7 +221,7 @@
my $keylen = (sort { $a <=> $b } map { length($_->[0]) } @_ )[-1] ;
- map {sprintf "use constant %-${keylen}s => %s;", $_->[0], $_->[1]} @_;
+ return map {sprintf "use constant %-${keylen}s => %s;", $_->[0], $_->[1]} @_;
}
=head2 C<transform_name()>
@@ -271,7 +271,7 @@
sub prepend_prefix {
my $prefix = shift;
- transform_name( sub { $prefix . $_[0] }, @_ );
+ return transform_name( sub { $prefix . $_[0] }, @_ );
}
=head2 C<generate_text()>
@@ -335,7 +335,7 @@
sub print_generated_file {
my $args = shift;
open my $out_fh, '>', $args->{out} or die "Can't open $args->{out}: $!\n";
- print $out_fh <<"EOF";
+ print {$out_fh} <<"EOF";
# DO NOT EDIT THIS FILE.
#
# This file is generated automatically from
@@ -346,6 +346,8 @@
$args->{gen}
EOF
close $out_fh;
+
+ return;
}
1;
Modified: branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Harness/DefaultTests.pm Wed May 5 08:45:29 2010 (r46302)
@@ -77,6 +77,7 @@
t/perl/*.t
);
+
# library tests are run unless --runcore-tests or --core-tests is present.
@library_tests = qw(
t/compilers/pct/*.t
@@ -84,8 +85,10 @@
t/compilers/pge/p5regex/*.t
t/compilers/pge/perl6regex/*.t
t/compilers/tge/*.t
+ t/compilers/data_json/*.t
t/library/*.t
t/tools/*.t
+ t/profiling/*.t
);
# configure tests are tests to be run at the beginning of 'make test';
Modified: branches/ops_pct/lib/Parrot/Harness/Options.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Harness/Options.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Harness/Options.pm Wed May 5 08:45:29 2010 (r46302)
@@ -88,10 +88,7 @@
my %remap = (
'j' => '-runcore=fast',
- 'g' => '-runcore=cgoto',
'G' => '-runcore=gcdebug',
- 'C' => '-runcore=cgp',
- 'S' => '-runcore=switch',
'b' => '-runcore=bounds',
'f' => '-runcore=fast',
'r' => '-run-pbc',
@@ -113,9 +110,6 @@
print <<"EOF";
perl t/harness [options] [testfiles]
-w ... warnings on
- -g ... run CGoto
- -C ... run CGP
- -S ... run Switched
-b ... run bounds checked
--run-exec ... run exec core
-f ... run fast core
Modified: branches/ops_pct/lib/Parrot/Harness/Smoke.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Harness/Smoke.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Harness/Smoke.pm Wed May 5 08:45:29 2010 (r46302)
@@ -116,6 +116,7 @@
. '/app/projects/process_add_report/'
. $project_id;
my $ua = LWP::UserAgent->new();
+ $ua->timeout(360);
$ua->agent( 'Parrot::Harness::Smoke' );
$ua->env_proxy();
Modified: branches/ops_pct/lib/Parrot/Headerizer.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Headerizer.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Headerizer.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,8 @@
-# Copyright (C) 2004-2007, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
# $Id$
+package Parrot::Headerizer;
+
=head1 NAME
Parrot::Headerizer - Parrot Header Generation functionality
@@ -13,8 +15,8 @@
=head1 DESCRIPTION
-C<Parrot::Headerizer> knows how to strip all kinds of information out of
-C-language files.
+C<Parrot::Headerizer> knows how to extract all kinds of information out
+of C-language files.
=head2 Class Methods
@@ -22,8 +24,6 @@
=cut
-package Parrot::Headerizer;
-
use strict;
use warnings;
@@ -33,39 +33,68 @@
Contructor of headerizer objects
-Don't blame me too much, I've never done OO in Perl before.
-
=cut
-## i'm a singleton
-my $headerizer;
-
sub new {
my ($class) = @_;
- return $headerizer if defined $headerizer;
+ my $self = bless {
+ warnings => {},
+ }, $class;
+
+ $self->{valid_macros} = { map { ( $_, 1 ) } qw(
+ PARROT_EXPORT
+ PARROT_INLINE
+
+ PARROT_CAN_RETURN_NULL
+ PARROT_CANNOT_RETURN_NULL
- my $self = bless {}, $class;
+ PARROT_IGNORABLE_RESULT
+ PARROT_WARN_UNUSED_RESULT
+
+ PARROT_PURE_FUNCTION
+ PARROT_CONST_FUNCTION
+
+ PARROT_DOES_NOT_RETURN
+ PARROT_DOES_NOT_RETURN_WHEN_FALSE
+
+ PARROT_MALLOC
+ PARROT_OBSERVER
+
+ PARROT_HOT
+ PARROT_COLD
+ )
+ };
return $self;
}
-my %warnings;
-my %valid_macros = map { ( $_, 1 ) } qw(
- PARROT_EXPORT
- PARROT_INLINE
- PARROT_CAN_RETURN_NULL
- PARROT_CANNOT_RETURN_NULL
- PARROT_IGNORABLE_RESULT
- PARROT_WARN_UNUSED_RESULT
- PARROT_PURE_FUNCTION
- PARROT_CONST_FUNCTION
- PARROT_DOES_NOT_RETURN
- PARROT_MALLOC
- PARROT_OBSERVER
-);
+=item $headerizer->valid_macro( $macro )
+
+Returns a boolean saying wither I<$macro> is a valid PARROT_XXX macro.
-=item C<extract_function_declarations($text)>
+=cut
+
+sub valid_macro {
+ my $self = shift;
+ my $macro = shift;
+
+ return exists $self->{valid_macros}{$macro};
+}
+
+=item $headerizer->valid_macros()
+
+Returns a list of all the valid PARROT_XXX macros.
+
+=cut
+
+sub valid_macros {
+ my $self = shift;
+
+ return sort keys %{$self->{valid_macros}};
+}
+
+=item $headerizer->extract_function_declarations($text)
Extracts the function declarations from the text argument, and returns an
array of strings containing the function declarations.
@@ -76,12 +105,16 @@
my $self = shift;
my $text = shift;
+ # Only check the YACC C code if we find what looks like YACC file
+ $text =~ s/%\{(.*)%\}.*/$1/sm;
+
+ # Drop all text after HEADERIZER STOP
$text =~ s{/\*\s*HEADERIZER STOP.+}{}s;
# Strip blocks of comments
$text =~ s{^/\*.*?\*/}{}mxsg;
- # Strip # compiler directives (Thanks, Audrey!)
+ # Strip # compiler directives
$text =~ s{^#(\\\n|.)*}{}mg;
# Strip code blocks
@@ -108,6 +141,9 @@
# Ignore anything with magic words HEADERIZER SKIP
@funcs = grep { !m{/\*\s*HEADERIZER SKIP\s*\*/} } @funcs;
+ # pmclass declarations in PMC files are no good
+ @funcs = grep { !m{^pmclass } } @funcs;
+
# Variables are of no use to us
@funcs = grep { !/=/ } @funcs;
@@ -135,14 +171,15 @@
Returns an anonymous hash of function components:
- file => $file,
- name => $name,
- args => \@args,
- macros => \@macros,
- is_static => $is_static,
- is_inline => $parrot_inline,
- is_api => $parrot_api,
- return_type => $return_type,
+ file => $file,
+ name => $name,
+ args => \@args,
+ macros => \@macros,
+ is_static => $is_static,
+ is_inline => $parrot_inline,
+ is_api => $parrot_api,
+ is_ignorable => $is_ignorable,
+ return_type => $return_type,
=cut
@@ -174,7 +211,7 @@
$args =~ s/\s+/ /g;
$args =~ s{([^(]+)\s*\((.+)\);?}{$2}
- or die qq{Couldn't handle "$proto"};
+ or die qq{Couldn't handle "$proto" in $file\n};
my $name = $1;
$args = $2;
@@ -190,6 +227,7 @@
or die "Bad args in $proto";
}
+ my $is_ignorable = 0;
my $is_static = 0;
$is_static = $2 if $return_type =~ s/^((static)\s+)?//i;
@@ -198,9 +236,12 @@
my %macros;
for my $macro (@macros) {
$macros{$macro} = 1;
- if ( not $valid_macros{$macro} ) {
+ if (not $self->valid_macro($macro)) {
$self->squawk( $file, $name, "Invalid macro $macro" );
}
+ if ( $macro eq 'PARROT_IGNORABLE_RESULT' ) {
+ $is_ignorable = 1;
+ }
}
if ( $return_type =~ /\*/ ) {
if ( !$macros{PARROT_CAN_RETURN_NULL} && !$macros{PARROT_CANNOT_RETURN_NULL} ) {
@@ -214,14 +255,15 @@
}
return {
- file => $file,
- name => $name,
- args => \@args,
- macros => \@macros,
- is_static => $is_static,
- is_inline => $parrot_inline,
- is_api => $parrot_api,
- return_type => $return_type,
+ file => $file,
+ name => $name,
+ args => \@args,
+ macros => \@macros,
+ is_static => $is_static,
+ is_inline => $parrot_inline,
+ is_api => $parrot_api,
+ is_ignorable => $is_ignorable,
+ return_type => $return_type,
};
}
@@ -237,7 +279,7 @@
my $function_decl = shift;
# strip out any PARROT_* function modifiers
- foreach my $key (%valid_macros) {
+ foreach my $key ($self->valid_macros) {
$function_decl =~ s/^$key$//m;
}
@@ -245,7 +287,7 @@
$function_decl =~ s/\s+/ /g;
# strip out any ARG* modifiers
- $function_decl =~ s/ARG(?:IN|IN_NULLOK|OUT|OUT_NULLOK|MOD|MOD_NULLOK|FREE)\((.*?)\)/$1/g;
+ $function_decl =~ s/ARG(?:IN|IN_NULLOK|OUT|OUT_NULLOK|MOD|MOD_NULLOK|FREE|FREE_NOTNULL)\((.*?)\)/$1/g;
# strip out the SHIM modifier
$function_decl =~ s/SHIM\((.*?)\)/$1/g;
@@ -301,7 +343,7 @@
my $func = shift;
my $error = shift;
- push( @{ $warnings{$file}->{$func} }, $error );
+ push( @{ $self->{warnings}{$file}{$func} }, $error );
return;
}
Modified: branches/ops_pct/lib/Parrot/Manifest.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Manifest.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Manifest.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
# $Id$
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
=head1 NAME
@@ -68,7 +68,7 @@
my %data = (
id => '$' . 'Id$',
time => scalar gmtime,
- cmd => -d '.svn' ? 'svn' : 'svk',
+ cmd => 'svn',
script => $argsref->{script},
file => $argsref->{file} ? $argsref->{file} : q{MANIFEST},
skip => $argsref->{skip} ? $argsref->{skip} : q{MANIFEST.SKIP},
@@ -201,7 +201,8 @@
#
# See below for documentation on the format of this file.
#
-# See docs/submissions.pod on how to recreate this file after SVN
+# See docs/submissions.pod and the documentation in
+# $self->{script} on how to recreate this file after SVN
# has been told about new or deleted files.
END_HEADER
@@ -241,8 +242,6 @@
: m[^lib/Parrot/] ? '[devel]lib'
: m[^runtime/] ? '[library]'
: m[^src/pmc/.*\.h] ? '[devel]include'
- : m[^src/pmc/.*\.pmc] ? '[devel]src'
- : m[^src/dynpmc/.*\.pmc] ? '[devel]src'
: m[^runtime/parrot/library/PCT] ? '[pct]'
: m[^runtime/parrot/library/PCT] ? '[pge]'
: m[^runtime/parrot/library/TGE] ? '[tge]'
Modified: branches/ops_pct/lib/Parrot/OpTrans.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/OpTrans.pm Wed May 5 08:45:29 2010 (r46302)
@@ -16,15 +16,9 @@
The subclass hierarchy is as follows:
OpTrans
- |___________
- | |
- C CGoto
- | |
- CPrederef |
- | | |
- | |_________|
- | |
- CSwitch CGP
+ |
+ |
+ C
=head2 Class Methods
@@ -91,11 +85,6 @@
die ref($self) . " doesn't have core_type()";
}
-=item C<core_prefix()>
-
-Implemented in subclasses to return a short prefix indicating the core
-type used to individuate core function names.
-
=item C<run_core_func_decl($base)>
Optionally implemented in subclasses to return the C code for the run
@@ -222,14 +211,6 @@
=item C<Parrot::OpTrans::C>
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CPrederef>
-
-=item C<Parrot::OpTrans::CSwitch>
-
=back
=cut
Modified: branches/ops_pct/lib/Parrot/OpTrans/C.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/C.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/OpTrans/C.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2006, Parrot Foundation.
+# Copyright (C) 2002-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -33,16 +33,6 @@
return 'PARROT_FUNCTION_CORE';
}
-=item C<core_prefix()>
-
-Returns an empty string.
-
-=cut
-
-sub core_prefix {
- return "";
-}
-
=item C<defines()>
Returns the C C<#define> macros for register access etc.
@@ -68,7 +58,7 @@
sub add_body_prelude {
my ($self) = @_;
- return " Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);\n";
+ return " const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);\n";
}
=item C<gen_goto($where)>
@@ -173,14 +163,6 @@
=item C<Parrot::OpTrans>
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CPrederef>
-
-=item C<Parrot::OpTrans::CSwitch>
-
=back
=cut
Deleted: branches/ops_pct/lib/Parrot/OpTrans/CGP.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/CGP.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,162 +0,0 @@
-# Copyright (C) 2002, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Parrot::OpTrans::CGP - C Goto Predereferenced Transform
-
-=head1 DESCRIPTION
-
-C<Parrot::OpTrans::CGP> inherits from C<Parrot::OpTrans::CPrederef> and
-C<Parrot::OpTrans::CGoto> to provide predereferenced register addressing
-and C C<goto> run loop.
-
-=head2 Instance Methods
-
-=over 4
-
-=cut
-
-package Parrot::OpTrans::CGP;
-
-use strict;
-use warnings;
-
-use base qw( Parrot::OpTrans::CPrederef Parrot::OpTrans::CGoto );
-
-=item C<core_type()>
-
-Returns C<PARROT_CGP_CORE>.
-
-=cut
-
-sub core_type {
- return 'PARROT_CGP_CORE';
-}
-
-=item C<suffix()>
-
-The suffix is C<'_cgp'>.
-
-=cut
-
-sub suffix {
- return "_cgp";
-}
-
-=item C<core_prefix()>
-
-The core prefix is C<'cgp_'>.
-
-=cut
-
-sub core_prefix {
- return "cgp_";
-}
-
-=item C<defines()>
-
-Returns the C C<#define> macros required by the ops.
-
-=cut
-
-sub defines {
- my ( $self, $pred_def );
- $self = shift;
- $pred_def = $self->SUPER::defines();
- my $type = __PACKAGE__;
- return $pred_def . <<END;
-/* defines - $0 -> $type */
-# define opcode_to_prederef(i, op) \\
- (opcode_t *) (op - Parrot_pcc_get_pred_offset(interp, i->ctx))
-END
-}
-
-=item C<goto_address($address)>
-
-Transforms the C<goto ADDRESS($address)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_address {
- my ( $self, $addr ) = @_;
-
- #print STDERR "pbcc: map_ret_abs($addr)\n";
-
- if ( $addr eq '0' ) {
- return "return (0);";
- }
- else {
- return "if ($addr == 0)
- return 0;
- Parrot_cx_handle_tasks(interp, interp->scheduler);
- _reg_base = (char*)Parrot_pcc_get_regs_ni(interp, CURRENT_CONTEXT(interp))->regs_i;
- goto **(void **)(cur_opcode = opcode_to_prederef(interp, $addr))";
- }
-}
-
-=item C<goto_offset($offset)>
-
-Transforms the C<goto OFFSET($offset)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_offset {
- my ( $self, $offset ) = @_;
-
- # this must be a single expression, in case it's in a single-statement if
- return "do {\nParrot_pcc_set_pc(interp, CURRENT_CONTEXT(interp), CUR_OPCODE + $offset);\n"
- . "goto **(void **)(cur_opcode += $offset);\n} while (1)";
-}
-
-sub run_core_func_start {
- my $type = __PACKAGE__;
- return <<END_C;
-/* run_core_func_start - $0 -> $type */
- /* at least gcc 2.95.2 miscompiles set_args - %edi
- * is used for the vtable call and _reg_base is clobbered
- * # if 1191 := PARROT_OP_set_args_pc
- * (gdb) disas l_ops_addr[1191] l_ops_addr[1192]
- */
-#if defined(__GNUC__) && defined(I386) && defined(PARROT_CGP_REGS)
- register opcode_t * cur_opcode __asm__ ("esi") = cur_op;
- register char * _reg_base __asm__ ("edi");
-#else
- opcode_t *cur_opcode = cur_op;
- char * _reg_base;
-#endif
-
- static void *const l_ops_addr[] = {
-END_C
-}
-
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item C<Parrot::OpTrans>
-
-=item C<Parrot::OpTrans::C>
-
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CPrederef>
-
-=item C<Parrot::OpTrans::CSwitch>
-
-=back
-
-=cut
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/CGoto.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,368 +0,0 @@
-# Copyright (C) 2002-2007, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Parrot::OpTrans::CGoto - CGoto Transform
-
-=head1 DESCRIPTION
-
-Used to generate C code from Parrot operations.
-
-C<Parrot::OpTrans::CGoto> inherits from C<Parrot::OpTrans> to provide a
-C C<goto> run loop.
-
-=head2 Instance Methods
-
-=over 4
-
-=cut
-
-package Parrot::OpTrans::CGoto;
-
-use strict;
-use warnings;
-
-use base qw( Parrot::OpTrans );
-
-=item C<suffix()>
-
-The suffix is C<'_cg'>.
-
-=cut
-
-sub suffix {
- return "_cg";
-}
-
-=item C<core_prefix()>
-
-The core prefix is C<'cg_'>.
-
-=cut
-
-sub core_prefix {
- return "cg_";
-}
-
-=item C<core_type()>
-
-The core type is C<PARROT_CGOTO_CORE>.
-
-=cut
-
-sub core_type {
- return 'PARROT_CGOTO_CORE';
-}
-
-=item C<defines()>
-
-Returns the C C<#define> macros required by the ops.
-
-=cut
-
-sub defines {
- my $type = __PACKAGE__;
- return <<END;
-/* defines - $0 -> $type */
-#undef CONST
-#define REL_PC ((size_t)(cur_opcode - (opcode_t*)interp->code->base.data))
-#define CUR_OPCODE cur_opcode
-#define IREG(i) REG_INT(interp, cur_opcode[i])
-#define NREG(i) REG_NUM(interp, cur_opcode[i])
-#define PREG(i) REG_PMC(interp, cur_opcode[i])
-#define SREG(i) REG_STR(interp, cur_opcode[i])
-#define CONST(i) Parrot_pcc_get_constants(interp, interp->ctx)[cur_opcode[i]]
-END
-}
-
-=item C<pc($pc)>
-
-=item C<pc()>
-
-Sets/gets the current position in Parrot code.
-
-=cut
-
-sub pc {
- my $self = shift;
-
- if (@_) {
- $self->{PC} = shift;
- }
- else {
- return $self->{PC};
- }
-}
-
-=item C<args(@args)>
-
-=item C<args()>
-
-Sets/gets the transform's arguments.
-
-=cut
-
-sub args {
- my $self = shift;
-
- if (@_) {
- $self->{ARGS} = [@_];
- }
- else {
- return $self->{ARGS};
- }
-}
-
-=item C<arg($index)>
-
-Returns the argument at C<$index>.
-
-=cut
-
-sub arg {
- my $self = shift;
-
- return $self->{ARGS}[shift];
-}
-
-=item C<goto_address($address)>
-
-Transforms the C<goto ADDRESS($address)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_address {
- my ( $self, $addr ) = @_;
-
- #print STDERR "pbcc: map_ret_abs($addr)\n";
-
- if ( $addr eq '0' ) {
- return "return (0);";
- }
- else {
- return "if ((opcode_t *) $addr == 0)
- return 0;
- goto *ops_addr[*(cur_opcode = (opcode_t *)$addr)]";
- }
-}
-
-=item C<expr_offset($offset)>
-
-Transforms the C<OFFSET($offset)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub expr_offset {
- my ( $self, $offset ) = @_;
-
- return "cur_opcode + $offset";
-}
-
-=item C<goto_offset($offset)>
-
-Transforms the C<goto OFFSET($offset)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_offset {
- my ( $self, $offset ) = @_;
-
- return "goto *ops_addr[*(cur_opcode += $offset)]";
-}
-
-my %arg_maps = (
- 'op' => "cur_opcode[%ld]",
-
- 'i' => "IREG(%ld)",
- 'n' => "NREG(%ld)",
- 'p' => "PREG(%ld)",
- 's' => "SREG(%ld)",
- 'k' => "PREG(%ld)",
- 'ki' => "IREG(%ld)",
-
- 'ic' => "cur_opcode[%ld]",
- 'nc' => "CONST(%ld)->u.number",
- 'pc' => "CONST(%ld)->u.key",
- 'sc' => "CONST(%ld)->u.string",
- 'kc' => "CONST(%ld)->u.key",
- 'kic' => "cur_opcode[%ld]"
-);
-
-=item C<access_arg($type, $num, $op)>
-
-Returns the C code for the specified op argument type (see
-C<Parrot::OpTrans>) and value. C<$op> is an instance of C<Parrot::Op>.
-
-=cut
-
-sub access_arg {
- my ( $self, $type, $num, $op ) = @_;
-
- #print STDERR "pbcc: map_arg($type, $num)\n";
-
- die "Unrecognized type '$type' for num '$num'" unless exists $arg_maps{$type};
-
- return sprintf( $arg_maps{$type}, $num );
-}
-
-=item C<restart_address($address)>
-
-Returns the C code for C<restart ADDRESS($address)>.
-
-=cut
-
-sub restart_address {
- my ( $self, $addr ) = @_;
-
- return "interp->resume_offset = $addr; interp->resume_flag = 1";
-}
-
-=item C<restart_offset($offset)>
-
-Returns the C code for C<restart OFFSET($offset)>.
-
-=cut
-
-sub restart_offset {
- my ( $self, $offset ) = @_;
-
- return "interp->resume_offset = REL_PC + $offset; interp->resume_flag = 1";
-}
-
-=item C<run_core_func_decl($core)>
-
-Returns the C code for the run core function declaration.
-
-=cut
-
-sub run_core_func_decl {
- my ( $self, $core ) = @_;
-
- return "opcode_t * " . $self->core_prefix . "$core(opcode_t *cur_op, PARROT_INTERP)";
-}
-
-=item C<ops_addr_decl($base_suffix)>
-
-Returns the C code for the ops address declaration.
-
-=cut
-
-sub ops_addr_decl {
- my ( $self, $bs ) = @_;
-
- return "static void *const* ${bs}ops_addr;\n\n";
-}
-
-=item C<run_core_func_start()>
-
-Returns the C code prior to the run core function.
-
-=cut
-
-sub run_core_func_start {
- return <<END_C;
-#if defined(__GNUC__) && defined(I386) /* && defined(NO_DYNOPS) */
- register opcode_t *cur_opcode __asm__ ("esi") = cur_op;
-#else
- opcode_t *cur_opcode = cur_op;
-#endif
-
- static void *const l_ops_addr[] = {
-END_C
-}
-
-=item C<run_core_after_addr_table($base_suffix)>
-
-Returns the run core C code for section after the address table.
-
-=cut
-
-sub run_core_after_addr_table {
- my ( $self, $bs ) = @_;
- return <<END_C;
-
- if (!${bs}ops_addr)
- ${bs}ops_addr = l_ops_addr;
- if (cur_opcode == 0) {
- DECL_CONST_CAST;
- return (opcode_t *) PARROT_const_cast(void **, ${bs}ops_addr);
- }
-END_C
-}
-
-=item C<run_core_finish($base)>
-
-Returns the C code following the run core function.
-
-=cut
-
-sub run_core_finish {
- my ( $self, $base ) = @_;
-
- return "\n} /* " . $self->core_prefix . "$base */\n\n";
-}
-
-=item C<init_func_init1($base)>
-
-Returns the C code for the init function.
-
-=cut
-
-sub init_func_init1 {
- my ( $self, $base ) = @_;
- my $cg_func = $self->core_prefix . $base;
- my $bs = $base . $self->suffix . '_';
-
- return <<END_C;
- if (!${bs}op_lib.op_func_table)
- ${bs}op_lib.op_func_table = (op_func_t *) $cg_func(0, 0);
-END_C
-}
-
-=item C<init_set_dispatch($base_suffix)>
-
-Returns the C code to initialize the dispatch mechanism within the core's
-initialization function.
-
-=cut
-
-sub init_set_dispatch {
- my ( $self, $bs ) = @_;
-
- return <<END_C;
- ${bs}ops_addr = (void**) init;
-END_C
-}
-
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item C<Parrot::OpTrans>
-
-=item C<Parrot::OpTrans::C>
-
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CPrederef>
-
-=item C<Parrot::OpTrans::CSwitch>
-
-=back
-
-=cut
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/lib/Parrot/OpTrans/CPrederef.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/CPrederef.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,144 +0,0 @@
-#! perl
-# Copyright (C) 2001-2007, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Parrot::OpTrans::CPrederef - C Predereferenced Transform
-
-=head1 DESCRIPTION
-
-C<Parrot::OpTrans::CPrederef> inherits from C<Parrot::OpTrans::C>
-to provide basic functionality for predereferenced run loops (switch,
-CGP).
-
-=head2 Instance Methods
-
-=over 4
-
-=cut
-
-package Parrot::OpTrans::CPrederef;
-
-use strict;
-use warnings;
-
-use Parrot::OpTrans;
-use base qw( Parrot::OpTrans::C );
-
-=item C<defines()>
-
-Returns the C C<#define> macros required by the ops.
-
-=cut
-
-sub defines {
- my $type = __PACKAGE__;
- return <<END;
-/* defines - $0 -> $type */
-#define REL_PC ((size_t)(cur_opcode - (opcode_t*)interp->code->prederef.code))
-#define CUR_OPCODE \\
- ((opcode_t*)cur_opcode + Parrot_pcc_get_pred_offset(interp, CURRENT_CONTEXT(interp)))
-#define OP_AS_OFFS(o) (_reg_base + ((opcode_t*)cur_opcode)[o])
-
-END
-}
-
-=item expr_address($addr)
-
-=item expr_address($offset)
-
-=item expr_pop()
-
-Create various address parts.
-
-=cut
-
-sub expr_address {
- my ( $self, $addr ) = @_;
- return "opcode_to_prederef(interp, $addr)";
-}
-
-sub expr_offset {
- my ( $self, $offset ) = @_;
- return "CUR_OPCODE + $offset";
-}
-
-sub expr_pop {
- my ($self) = @_;
- return "opcode_to_prederef(interp, pop_dest(interp))";
-}
-
-sub run_core_func_decl {
- my ( $self, $core ) = @_;
-
- my $type = __PACKAGE__;
- my $prefix = $self->core_prefix;
- return <<END;
-/* run_core_func_decl - $0 -> $type */
-opcode_t * $prefix$core(opcode_t *cur_op, PARROT_INTERP)
-END
-}
-
-=item C<access_arg($type, $num, $op)>
-
-Returns the C code for the specified op argument type (see
-C<Parrot::OpTrans>) and value. C<$op> is an instance of C<Parrot::Op>.
-
-=cut
-
-sub access_arg {
- my ( $self, $type, $num, $op ) = @_;
-
- my %arg_maps = (
- 'op' => "cur_opcode[%ld]",
-
- 'i' => "(*(INTVAL *)OP_AS_OFFS(%ld))",
- 'ki' => "(*(INTVAL *)OP_AS_OFFS(%ld))",
- 'n' => "(*(FLOATVAL *)OP_AS_OFFS(%ld))",
- 'p' => "(*(PMC **)OP_AS_OFFS(%ld))",
- 's' => "(*(STRING **)OP_AS_OFFS(%ld))",
- 'k' => "(*(PMC **)OP_AS_OFFS(%ld))",
-
- 'ic' => "((INTVAL)cur_opcode[%ld])",
- 'kic' => "((INTVAL)cur_opcode[%ld])",
- 'nc' => "(*(FLOATVAL *)cur_opcode[%ld])",
- 'sc' => "((STRING *)cur_opcode[%ld])",
- 'pc' => "((PMC *)cur_opcode[%ld])",
- 'kc' => "((PMC *)cur_opcode[%ld])",
- );
-
- die "Unrecognized type '$type' for num '$num' in opcode @{[$op->full_name]}"
- unless exists $arg_maps{$type};
-
- return sprintf( $arg_maps{$type}, $num );
-}
-
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item C<Parrot::OpTrans>
-
-=item C<Parrot::OpTrans::C>
-
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CSwitch>
-
-=back
-
-=cut
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/lib/Parrot/OpTrans/CSwitch.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpTrans/CSwitch.pm Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,247 +0,0 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Parrot::OpTrans::CSwitch - C Switch Transform
-
-=head1 DESCRIPTION
-
-C<Parrot::OpTrans::CSwitch> inherits from C<Parrot::OpTrans::CPrederef>
-to provide a mixture of predereferenced register addressing and a
-C<switch>ed run loop.
-
-=head2 Instance Methods
-
-=over 4
-
-=cut
-
-package Parrot::OpTrans::CSwitch;
-
-use strict;
-use warnings;
-
-use Parrot::OpTrans;
-use base qw( Parrot::OpTrans::CPrederef );
-
-sub new {
- my $class = shift;
- my $self = $class->SUPER::new(@_);
- $self->{split_count} ||= 0;
- return $self;
-}
-
-=item C<core_type()>
-
-The core type is C<PARROT_SWITCH_CORE>.
-
-=cut
-
-sub core_type {
- return 'PARROT_SWITCH_CORE';
-}
-
-=item C<core_prefix()>
-
-The prefix is C<'switch_'>.
-
-=cut
-
-sub core_prefix {
- return "switch_";
-}
-
-=item C<suffix()>
-
-The suffix is C<'_switch'>.
-
-=cut
-
-sub suffix {
- return "_switch";
-}
-
-=item C<defines()>
-
-Returns the C C<#define> macros required by the ops.
-
-=cut
-
-sub defines {
- my ( $self, $pred_def );
- $self = shift;
- $pred_def = $self->SUPER::defines();
- my $type = __PACKAGE__;
- return $pred_def . <<END;
-/* defines - $0 -> $type */
-# define opcode_to_prederef(i, op) (op ? \\
- (opcode_t*) (op - Parrot_pcc_get_pred_offset(interp, i->ctx)) : (opcode_t*)NULL)
-END
-}
-
-=item C<goto_address($address)>
-
-Transforms the C<goto ADDRESS($address)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_address {
- my ( $self, $addr ) = @_;
-
- #print STDERR "pbcc: map_ret_abs($addr)\n";
-
- if ( $addr eq '0' ) {
- return "return (0);";
- }
- else {
- return <<EOC;
- {
- cur_opcode = opcode_to_prederef(interp, $addr);
- goto SWITCH_RELOAD;
- }
-EOC
- }
-}
-
-=item C<goto_offset($offset)>
-
-Transforms the C<goto OFFSET($offset)> macro in an ops file into the
-relevant C code.
-
-=cut
-
-sub goto_offset {
- my ( $self, $offset ) = @_;
- return "{ cur_opcode += $offset; goto SWITCH_AGAIN; }";
-}
-
-=item C<init_func_init1($base)>
-
-Returns the C code for the init function.
-
-=cut
-
-sub init_func_init1 {
- my ( $self, $base ) = @_;
- my $cg_func = $self->core_prefix . $base;
- my $bs = $base . $self->suffix . '_';
-
- return <<END_C;
- if (!${bs}op_lib.op_func_table)
- ${bs}op_lib.op_func_table = (op_func_t *)&${bs}op_lib;
-END_C
-}
-
-
-=item C<run_core_func_start()>
-
-Returns the C code prior to the run core function.
-
-=cut
-
-sub run_core_func_start {
- my $type = __PACKAGE__;
- return <<END_C;
-/* run_core_func_start - $0 -> $type */
-#if defined(__GNUC__) && defined(I386) && defined(PARROT_SWITCH_REGS)
- register opcode_t * cur_opcode __asm__ ("esi") = cur_op;
- register char * _reg_base __asm__ ("edi");
-#else
- opcode_t * cur_opcode = cur_op;
- char * _reg_base;
-#endif
-
-SWITCH_RELOAD:
- _reg_base = (char*)Parrot_pcc_get_regs_ni(interp, CURRENT_CONTEXT(interp))->regs_i;
- do {
-SWITCH_AGAIN:
- Parrot_cx_handle_tasks(interp, interp->scheduler);
- if (!cur_opcode)
- break;
- switch (*(opcode_t*)cur_opcode) {
-END_C
-}
-
-=item C<run_core_split($base)>
-
-If defined return code to split e.g. a switch.
-
-=cut
-
-sub run_core_split {
- my ($self) = @_;
- $self->{split_count}++;
-
- return <<END_C;
- default:
- switch (*(opcode_t*)cur_opcode) {
-END_C
-}
-
-=item C<run_core_finish($base)>
-
-Returns the C code following the run core function.
-
-=cut
-
-sub run_core_finish {
- my ( $self, $base ) = @_;
- my $bs = $base . $self->suffix . '_';
- my $c = <<END_C;
- default:
- if (*(opcode_t*)cur_opcode >= 0 &&
- *(opcode_t*)cur_opcode < (opcode_t)${bs}op_lib.op_count) {
- *(opcode_t*)cur_opcode = CORE_OPS_wrapper__;
- continue;
- }
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "illegal opcode in switch core\\n");
- break;
- } /* switch */
-END_C
- for ( my $i = 0 ; $i < $self->{split_count} ; $i++ ) {
- $c .= <<END_C;
- } /* switch $i */
-END_C
- }
- $c .= <<END_C;
- } while (1);
- return NULL;
-}
-END_C
-
- $c .= " /* " . $self->core_prefix . "$base */\n\n";
-
- return $c;
-}
-
-=back
-
-=head1 SEE ALSO
-
-=over 4
-
-=item C<Parrot::OpTrans>
-
-=item C<Parrot::OpTrans::C>
-
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CPrederef>
-
-=back
-
-=cut
-
-1;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/lib/Parrot/Ops2c/Auxiliary.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Ops2c/Auxiliary.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Ops2c/Auxiliary.pm Wed May 5 08:45:29 2010 (r46302)
@@ -12,7 +12,7 @@
my $usage_msg = <<USAGE;
% perl tools/build/ops2c.pl trans [--help] [--no-lines] [--dynamic]
[--core | input.ops [input2.ops ...]]
- trans := C | CGoto | CGP | CSwitch | CPrederef
+ trans := C
For example:
Modified: branches/ops_pct/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Ops2c/Utils.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Ops2c/Utils.pm Wed May 5 08:45:29 2010 (r46302)
@@ -89,10 +89,10 @@
return;
}
my $class_name = shift @argv;
- my %is_allowed = map { $_ => 1 } qw(C CGoto CGP CSwitch CPrederef);
+ my %is_allowed = map { $_ => 1 } qw( C );
unless ( $is_allowed{$class_name} ) {
print STDERR
- "Parrot::Ops2c::Utils::new() requires C, CGoto, CGP, CSwitch and/or CPrederef: $!";
+ "Parrot::Ops2c::Utils::new() requires C: $!";
return;
}
@@ -200,7 +200,7 @@
my ( $op_info, $op_func, $getop );
$op_info = $op_func = 'NULL';
- $getop = '( int (*)(PARROT_INTERP, const char *, int) )NULL';
+ $getop = 'NULL';
if ($self->{suffix} eq '') {
$op_func = $self->{bs} . "op_func_table";
@@ -372,10 +372,6 @@
$self->_print_run_core_func_decl_source($SOURCE);
- $self->_print_cg_jump_table($SOURCE);
-
- $self->_print_goto_opcode($SOURCE);
-
$self->_print_op_function_definitions($SOURCE);
}
@@ -479,6 +475,7 @@
print $fh <<END_C;
#include "parrot/parrot.h"
#include "parrot/oplib.h"
+#include "parrot/runcore_api.h"
$self->{sym_export} op_lib_t *$self->{init_func}(PARROT_INTERP, long init);
@@ -649,7 +646,6 @@
$one_op .= "$definition $comment {\n$src}\n\n";
push @op_funcs, $one_op;
push @op_protos, $prototype;
- $prev_src = $src if ( $self->{suffix} eq '_cgp' || $self->{suffix} eq '_switch' );
$prev_index = $index;
}
$index++;
@@ -661,47 +657,6 @@
$self->{cg_jump_table} = \@cg_jump_table;
}
-sub _print_cg_jump_table {
- my ( $self, $fh ) = @_;
-
- my @cg_jump_table = @{ $self->{cg_jump_table} };
-
- if ( $self->{suffix} =~ /cg/ ) {
- print $fh @cg_jump_table;
- print $fh <<END_C;
- NULL
- };
-END_C
- print $fh $self->{trans}->run_core_after_addr_table( $self->{bs} );
- }
- return 1;
-}
-
-sub _print_goto_opcode {
- my ( $self, $fh ) = @_;
-
- if ( $self->{suffix} =~ /cgp/ ) {
- print $fh <<END_C;
-#ifdef __GNUC__
-# ifdef I386
- else if (cur_opcode == (opcode_t *)(void **) 1)
- __asm__ ("jmp *4(%ebp)"); /* jump to ret addr, used by JIT */
-# endif
-#endif
- _reg_base = (char*)Parrot_pcc_get_regs_ni(interp, CURRENT_CONTEXT(interp))->regs_i;
- goto **(void **)cur_opcode;
-
-END_C
- }
- elsif ( $self->{suffix} =~ /cg/ ) {
- print $fh <<END_C;
-goto *$self->{bs}ops_addr[*cur_opcode];
-
-END_C
- }
- return 1;
-}
-
sub _print_op_function_definitions {
my ( $self, $fh ) = @_;
@@ -893,8 +848,8 @@
static HOP **hop;
static void hop_init(PARROT_INTERP);
-static size_t hash_str(const char *str);
-static void store_op(PARROT_INTERP, op_info_t *info, int full);
+static size_t hash_str(ARGIN_NULLOK(const char *str));
+static void store_op(PARROT_INTERP, ARGIN(op_info_t *info), int full);
/* XXX on changing interpreters, this should be called,
through a hook */
@@ -911,7 +866,8 @@
* returns >= 0 (found idx into info_table), -1 if not
*/
-static size_t hash_str(const char *str) {
+static size_t hash_str(ARGIN_NULLOK(const char *str))
+{
size_t key = 0;
const char *s = str;
@@ -923,8 +879,9 @@
return key;
}
-static void store_op(PARROT_INTERP, op_info_t *info, int full) {
- HOP * const p = mem_gc_allocate_zeroed_typed(interp, HOP);
+static void store_op(PARROT_INTERP, ARGIN(op_info_t *info), int full)
+{
+ HOP * const p = mem_gc_allocate_typed(interp, HOP);
const size_t hidx =
hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
@@ -932,30 +889,40 @@
p->next = hop[hidx];
hop[hidx] = p;
}
+
static int get_op(PARROT_INTERP, const char * name, int full) {
- const HOP * p;
+ const HOP *p;
+
const size_t hidx = hash_str(name) % OP_HASH_SIZE;
+
if (!hop) {
- hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
+ hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE, HOP *);
hop_init(interp);
}
+
for (p = hop[hidx]; p; p = p->next) {
if (STREQ(name, full ? p->info->full_name : p->info->name))
return p->info - $self->{bs}op_lib.op_info_table;
}
+
return -1;
}
-static void hop_init(PARROT_INTERP) {
+
+static void hop_init(PARROT_INTERP)
+{
size_t i;
op_info_t * const info = $self->{bs}op_lib.op_info_table;
+
/* store full names */
for (i = 0; i < $self->{bs}op_lib.op_count; i++)
store_op(interp, info + i, 1);
+
/* plus one short name */
for (i = 0; i < $self->{bs}op_lib.op_count; i++)
if (get_op(interp, info[i].name, 0) == -1)
store_op(interp, info + i, 0);
}
+
static void hop_deinit(PARROT_INTERP)
{
if (hop) {
Modified: branches/ops_pct/lib/Parrot/Ops2pm/Base.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Ops2pm/Base.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Ops2pm/Base.pm Wed May 5 08:45:29 2010 (r46302)
@@ -3,6 +3,8 @@
package Parrot::Ops2pm::Base;
use strict;
use warnings;
+use Cwd;
+use File::Spec;
use lib qw ( lib );
use Parrot::OpsFile;
@@ -94,6 +96,9 @@
$argsref->{argv} = \@argv;
$argsref->{num_file} = "src/ops/ops.num";
$argsref->{skip_file} = "src/ops/ops.skip";
+ $argsref->{opsenum_file} = File::Spec->catfile(
+ cwd(), qw( include parrot opsenum.h )
+ );
return bless $argsref, $class;
}
Modified: branches/ops_pct/lib/Parrot/OpsRenumber.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/OpsRenumber.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/OpsRenumber.pm Wed May 5 08:45:29 2010 (r46302)
@@ -134,7 +134,7 @@
# above the DYNAMIC line. For the purpose of renumbering, we create
# an index $n.
- my $opsenumfn = "include/parrot/opsenum.h";
+ my $opsenumfn = $self->{opsenum_file};
open my $OPSENUM, '>', $opsenumfn or die "Can't open $opsenumfn, error $!";
print $OPSENUM $OPSENUM_PREAMBLE;
open $OP, '>', $file
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Attribute.pm Wed May 5 08:45:29 2010 (r46302)
@@ -140,7 +140,10 @@
/* Generated macro accessors for '$attrname' attribute of $pmcname PMC. */
#define GETATTR_${pmcname}_${attrname}(interp, pmc, dest) \\
do { \\
- if (PObj_is_object_TEST(pmc)) { \\
+ if (!PObj_is_object_TEST(pmc)) { \\
+ (dest) = ((Parrot_${pmcname}_attributes *)PMC_data(pmc))->$attrname; \\
+ } \\
+ else { \\
EOA
if ($isfuncptr == 1) {
@@ -189,8 +192,6 @@
$decl .= <<"EOA";
} \\
- else \\
- (dest) = ((Parrot_${pmcname}_attributes *)PMC_data(pmc))->$attrname; \\
} while (0)
#define SETATTR_${pmcname}_${attrname}(interp, pmc, value) \\
@@ -207,8 +208,7 @@
}
elsif ($attrtype eq "INTVAL") {
$decl .= <<"EOA";
- PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Integer); \\
- VTABLE_set_integer_native(interp, attr_value, value); \\
+ PMC * const attr_value = Parrot_pmc_new_init_int(interp, enum_class_Integer, value); \\
VTABLE_set_attr_str(interp, pmc, \\
Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
EOA
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Dumper.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Dumper.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Dumper.pm Wed May 5 08:45:29 2010 (r46302)
@@ -51,8 +51,7 @@
@files = glob $files[0] if $files[0] eq 'src/pmc/*.pmc';
# make sure that a default.dump will always be created if it doesn't
- # already exist; do so by adding default.pmc to list of files for dumping
- unshift @files, 'default.pmc' unless -e './src/pmc/default.dump';
+ $pmc2cMain->find_file('default.dump') or unshift @files, 'default.pmc';
# load and parse all pmc files in @files
for my $filename (@files) {
@@ -72,7 +71,7 @@
}
for my $pmc ( values %$pmcs ) {
- next if $pmc->name =~ /default$/ && $pmc->dump_is_current;
+ next if $pmc->name =~ /default$/ && $pmc->dump_is_current($pmc2cMain->find_file('default.dump'));
gen_parent_lookup_info( $pmc, $pmc2cMain, $pmcs );
gen_parent_reverse_lookup_info( $pmc, $pmcs, $vtable_dump );
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Emitter.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Emitter.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Emitter.pm Wed May 5 08:45:29 2010 (r46302)
@@ -3,7 +3,7 @@
package Parrot::Pmc2c::Emitter;
use strict;
use warnings;
-use Parrot::Pmc2c::UtilFunctions qw(count_newlines spew escape_filename);
+use Parrot::Pmc2c::UtilFunctions qw(count_newlines spew);
use Parrot::Pmc2c::Pmc2cMain ();
use overload '""' => \&stringify;
use overload 'bool' => \&boolify;
@@ -129,8 +129,8 @@
}
else {
$line = $self->{current_line} if $line == -1;
- my $filename_escaped = escape_filename($filename);
if (!$Parrot::Pmc2c::Pmc2cMain::OPTIONS->{nolines}) {
+ ( my $filename_escaped = $filename ) =~ s|\\|/|g;
$data .= "#line $line \"$filename_escaped\"\n";
}
$data .= $it->{data};
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Library.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Library.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Library.pm Wed May 5 08:45:29 2010 (r46302)
@@ -24,6 +24,7 @@
use strict;
use warnings;
+use File::Basename qw(basename);
use Parrot::Pmc2c::PMCEmitter ();
use Parrot::Pmc2c::UtilFunctions qw(dont_edit dynext_load_code c_code_coda spew);
@@ -36,8 +37,9 @@
sub generate_library {
my ( $class, $library_name, $pmcs ) = @_;
- spew( "$library_name.c", gen_c( $library_name, $pmcs ) );
- spew( "$library_name.h", gen_h($library_name) );
+ my $basename = basename($library_name);
+ spew( $library_name . '.c', gen_c( $basename, $pmcs ) );
+ spew( $library_name . '.h', gen_h( $basename ) );
}
=item C<gen_h>
Modified: branches/ops_pct/lib/Parrot/Pmc2c/MethodEmitter.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/MethodEmitter.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/MethodEmitter.pm Wed May 5 08:45:29 2010 (r46302)
@@ -107,7 +107,7 @@
$newl = "\n";
$semi = '';
}
- my $pmcarg = 'PMC *pmc';
+ my $pmcarg = 'PMC *_self';
$pmcarg = "SHIM($pmcarg)" if $self->pmc_unused;
return <<"EOC";
@@ -134,7 +134,7 @@
\.(\w+) # other_method
\(\s*(.*?)\) # capture argument list
}x,
- sub { "pmc->vtable->$1(" . full_arguments($2) . ')' }
+ sub { "_self->vtable->$1(" . full_arguments($2) . ')' }
);
# Rewrite STATICSELF.other_method(args...)
@@ -151,8 +151,8 @@
}
);
- # Rewrite SELF -> pmc, INTERP -> interp
- $body->subst( qr{\bSELF\b}, sub { 'pmc' } );
+ # Rewrite SELF -> _self, INTERP -> interp
+ $body->subst( qr{\bSELF\b}, sub { '_self' } );
$body->subst( qr{\bINTERP\b}, sub { 'interp' } );
# Rewrite GET_ATTR, SET_ATTR with typename
@@ -163,7 +163,7 @@
=item C<rewrite_vtable_method($self, $pmc, $super, $super_table)>
Rewrites the method body performing the various macro substitutions for
-vtable method bodies (see F<tools/build/pmc2c.pl>).
+vtable function bodies (see F<tools/build/pmc2c.pl>).
=cut
@@ -180,7 +180,7 @@
# Some MMD variants don't have a super mapping.
if ($super) {
my $supertype = "enum_class_$super";
- die "$pmcname defines unknown vtable method '$name'\n" unless defined $super_table->{$name};
+ die "$pmcname defines unknown vtable function '$name'\n" unless defined $super_table->{$name};
my $supermethod = "Parrot_" . $super_table->{$name} . "_$name";
# Rewrite OtherClass.SUPER(args...)
@@ -219,7 +219,7 @@
\.(\w+) # other_method
\(\s*(.*?)\) # capture argument list
}x,
- sub { "pmc->vtable->$1(" . full_arguments($2) . ')' }
+ sub { "_self->vtable->$1(" . full_arguments($2) . ')' }
);
# Rewrite SELF(args...). See comments above.
@@ -228,7 +228,7 @@
\bSELF\b # Macro: SELF
\(\s*(.*?)\) # capture argument list
}x,
- sub { "pmc->vtable->$name(" . full_arguments($1) . ')' }
+ sub { "_self->vtable->$name(" . full_arguments($1) . ')' }
);
# Rewrite OtherClass.SELF.other_method(args...)
@@ -304,8 +304,8 @@
}
);
- # Rewrite SELF -> pmc, INTERP -> interp
- $body->subst( qr{\bSELF\b}, sub { 'pmc' } );
+ # Rewrite SELF -> _self, INTERP -> interp
+ $body->subst( qr{\bSELF\b}, sub { '_self' } );
$body->subst( qr{\bINTERP\b}, sub { 'interp' } );
# Rewrite GET_ATTR, SET_ATTR with typename
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Object.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Object.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Object.pm Wed May 5 08:45:29 2010 (r46302)
@@ -37,8 +37,8 @@
generating.
Overrides the default implementation to direct all unknown methods to
-first check if there is an implementation of the vtable method in the
-vtable methods hash of this class of any others, and delegates up to
+first check if there is an implementation of the vtable function in the
+vtable function hash of this class of any others, and delegates up to
any PMCs in the MRO.
=back
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PCCMETHOD.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2008, Parrot Foundation.
+# Copyright (C) 2004-2010, Parrot Foundation.
# $Id$
package Parrot::Pmc2c::PCCMETHOD;
@@ -258,8 +258,8 @@
/*BEGIN RETURN $returns */
END
$e->emit( <<"END", __FILE__, __LINE__ + 1 );
- Parrot_pcc_fill_returns_from_c_args(interp, _call_object, "$returns_signature",
- $returns_varargs);
+ _ret_object = Parrot_pcc_build_call_from_c_args(interp, _call_object,
+ "$returns_signature", $returns_varargs);
return;
/*END RETURN $returns */
}
@@ -399,7 +399,7 @@
unshift @$linear_args,
{
type => convert_type_string_to_reg_type('PMC'),
- name => 'pmc',
+ name => '_self',
attrs => parse_adverb_attributes(':invocant')
};
@@ -415,8 +415,7 @@
PMC * const _ctx = CURRENT_CONTEXT(interp);
PMC * const _ccont = Parrot_pcc_get_continuation(interp, _ctx);
PMC * const _call_object = Parrot_pcc_get_signature(interp, _ctx);
-
- Parrot_pcc_set_signature(interp, _ctx, NULL);
+ PMC * _ret_object = PMCNULL;
{ /* BEGIN PARMS SCOPE */
END
@@ -429,11 +428,11 @@
$params_varargs);
END
}
- $e->emit( <<"END", __FILE__, __LINE__ + 1 );
+ $e->emit( <<'END', __FILE__, __LINE__ + 1 );
{ /* BEGIN PMETHOD BODY */
END
- $e_post->emit( <<"END", __FILE__, __LINE__ + 1 );
+ $e_post->emit( <<'END', __FILE__, __LINE__ + 1 );
} /* END PMETHOD BODY */
} /* END PARAMS SCOPE */
@@ -451,10 +450,6 @@
return 1;
}
-sub isquoted {
- 1;
-}
-
sub rewrite_pccinvoke {
my ( $method, $pmc ) = @_;
my $body = $method->body;
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC.pm Wed May 5 08:45:29 2010 (r46302)
@@ -132,7 +132,7 @@
=item C<implements_vtable($method)>
-True if pmc generates code for vtable method C<$method>.
+True if pmc generates code for vtable C<$method>.
=cut
@@ -321,7 +321,7 @@
=item C<vtable_method_does_write($method)>
-Returns true if the vtable method C<$method> writes our value.
+Returns true if the vtable C<$method> writes our value.
=back
@@ -432,11 +432,13 @@
=cut
sub dump_is_current {
- my ($self) = @_;
- my $dumpfile = $self->filename('.dump');
+ my ($self, $dumpfile) = @_;
+ $dumpfile ||= $self->filename('.dump');
return 0 unless -e $dumpfile;
my $pmcfile = $self->filename('.pmc');
+ return 1 unless -e $pmcfile;
+
return ( stat $dumpfile )[9] >= ( stat $pmcfile )[9];
}
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC/Null.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC/Null.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC/Null.pm Wed May 5 08:45:29 2010 (r46302)
@@ -29,7 +29,7 @@
sub pre_method_gen {
my ($self) = @_;
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next unless $self->normal_unimplemented_vtable($vt_method_name);
@@ -44,7 +44,7 @@
# to avoid compiler warnings
my $body = <<"EOC";
UNUSED(interp)
- UNUSED(pmc)
+ UNUSED(_self)
EOC
foreach my $param (split /,\s*/, $method->parameters) {
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC/Object.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC/Object.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC/Object.pm Wed May 5 08:45:29 2010 (r46302)
@@ -22,8 +22,8 @@
Returns the C code for the method body.
Overrides the default implementation to direct all unknown methods to
-first check if there is an implementation of the vtable method in the
-vtable methods hash of this class of any others, and delegates up to
+first check if there is an implementation of the vtable function in the
+vtable function hash of this class of any others, and delegates up to
any PMCs in the MRO.
=cut
@@ -31,7 +31,7 @@
sub pre_method_gen {
my ($self) = @_;
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next unless $self->normal_unimplemented_vtable($vt_method_name);
@@ -52,11 +52,11 @@
$superargs =~ s/^,//;
my $method_body_text = <<"EOC";
- Parrot_Object_attributes * const obj = PARROT_OBJECT(pmc);
+ Parrot_Object_attributes * const obj = PARROT_OBJECT(_self);
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
STRING * const meth_name = CONST_STRING_GEN(interp, "$vt_method_name");
- /* Walk and search for the vtable method. */
+ /* Walk and search for the vtable. */
const int num_classes = VTABLE_elements(interp, _class->all_parents);
int i;
for (i = 0; i < num_classes; i++) {
@@ -66,7 +66,7 @@
PMC * const meth = Parrot_oo_find_vtable_override_for_class(interp, cur_class, meth_name);
if (!PMC_IS_NULL(meth)) {
$pcc_result_decl
- Parrot_pcc_invoke_sub_from_c_args(interp, meth, "Pi$pcc_sig", pmc$pcc_args);
+ Parrot_pcc_invoke_sub_from_c_args(interp, meth, "Pi$pcc_sig", _self$pcc_args);
$pcc_return_stmt
}
/* method name is $vt_method_name */
@@ -76,7 +76,7 @@
unless ($self->vtable_method_does_multi($vt_method_name)) {
$method_body_text .= <<"EOC";
if (cur_class->vtable->base_type == enum_class_PMCProxy) {
- /* Get the PMC instance and call the vtable method on that. */
+ /* Get the PMC instance and call the vtable on that. */
STRING * const proxy = CONST_STRING_GEN(interp, "proxy");
PMC * const del_object = VTABLE_get_attr_str(interp, SELF, proxy);
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC/ParrotClass.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC/ParrotClass.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC/ParrotClass.pm Wed May 5 08:45:29 2010 (r46302)
@@ -66,7 +66,7 @@
sub pre_method_gen {
my ($self) = @_;
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next if exists $dont_delegate->{$vt_method_name};
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMC/default.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMC/default.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMC/default.pm Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -32,7 +32,7 @@
sub pre_method_gen {
my ($self) = @_;
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next unless $self->unimplemented_vtable($vt_method_name);
@@ -55,9 +55,9 @@
# Generate default_ro_find_method.
$self->{emitter}->emit(<<'EOC');
static PMC *
-Parrot_default_ro_find_method(PARROT_INTERP, PMC *pmc, STRING *method_name) {
+Parrot_default_ro_find_method(PARROT_INTERP, PMC *_self, STRING *method_name) {
/* Use non-readonly find_method. Current vtable is ro variant. So ro_variant contains non-ro variant */
- PMC *const method = pmc->vtable->ro_variant_vtable->find_method(interp, pmc, method_name);
+ PMC *const method = _self->vtable->ro_variant_vtable->find_method(interp, _self, method_name);
if (!PMC_IS_NULL(VTABLE_getprop(interp, method, CONST_STRING_GEN(interp, "write"))))
return PMCNULL;
else
@@ -90,7 +90,7 @@
$body .= " UNUSED($param)\n";
}
my $vt_method_name = uc $method->name;
- $body .= qq{ $stub_func(interp, pmc, PARROT_VTABLE_SLOT_$vt_method_name);\n};
+ $body .= qq{ $stub_func(interp, _self, PARROT_VTABLE_SLOT_$vt_method_name);\n};
$clone->body( Parrot::Pmc2c::Emitter->text($body));
@@ -134,7 +134,7 @@
PARROT_EXPORT VTABLE* Parrot_default_ro_get_vtable(PARROT_INTERP) {
- VTABLE * vt = Parrot_default_get_vtable(interp);
+ VTABLE * const vt = Parrot_default_get_vtable(interp);
$ro_vtable_decl
Modified: branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/PMCEmitter.pm Wed May 5 08:45:29 2010 (r46302)
@@ -167,7 +167,7 @@
my $name = $self->name;
my $lc_name = $self->name;
- # generate decls for all vtable methods in this PMC
+ # generate decls for all vtables in this PMC
foreach my $vt_method_name ( @{ $self->vtable->names } ) {
if ( $self->implements_vtable($vt_method_name) ) {
$hout .=
@@ -274,7 +274,7 @@
sub gen_methods {
my ($self) = @_;
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next if $vt_method_name eq 'class_init';
@@ -284,7 +284,7 @@
}
}
- # non-vtable methods
+ # methods
foreach my $method ( @{ $self->methods } ) {
next if $method->is_vtable;
$method->generate_body($self);
@@ -476,6 +476,7 @@
my $multi_strings = '';
my $cache = {};
+ my $i = 0;
for my $multi (@$multi_funcs) {
my ($name, $ssig, $fsig, $ns, $func) = @$multi;
my ($name_str, $ssig_str, $fsig_str, $ns_name) =
@@ -487,21 +488,23 @@
[$ns, $ns_name ]) {
my ($raw_string, $name) = @$s;
next if $strings_seen{$name}++;
- $multi_strings .= " STRING * const $name = "
+ $multi_strings .= " STRING * const $name = "
. qq|CONST_STRING_GEN(interp, "$raw_string");\n|;
}
push @multi_list, <<END_MULTI_LIST;
- { $name_str,
- $ssig_str,
- $fsig_str,
- $ns_name,
- (funcptr_t) $func }
+ _temp_multi_func_list[$i].multi_name = $name_str;
+ _temp_multi_func_list[$i].short_sig = $ssig_str;
+ _temp_multi_func_list[$i].full_sig = $fsig_str;
+ _temp_multi_func_list[$i].ns_name = $ns_name;
+ _temp_multi_func_list[$i].func_ptr = (funcptr_t) $func;
END_MULTI_LIST
+ $i++;
}
- my $multi_list = join( ",\n", @multi_list);
+ my $multi_list_size = @multi_list;
+ my $multi_list = join( "\n", @multi_list);
my @isa = grep { $_ ne 'default' } @{ $self->parents };
@@ -570,7 +573,7 @@
vt->base_type = entry;
vt->whoami = string_make(interp, "$classname", @{[length($classname)]},
"ascii", PObj_constant_FLAG|PObj_external_FLAG);
- vt->provides_str = Parrot_str_append(interp, vt->provides_str,
+ vt->provides_str = Parrot_str_concat(interp, vt->provides_str,
string_make(interp, "$provides", @{[length($provides)]}, "ascii",
PObj_constant_FLAG|PObj_external_FLAG));
@@ -692,14 +695,13 @@
if ( @$multi_funcs ) {
+ # Don't const the list, breaks some older C compilers
$cout .= $multi_strings . <<"EOC";
- $const multi_func_list _temp_multi_func_list[] = {
- $multi_list
- };
-#define N_MULTI_LIST (sizeof(_temp_multi_func_list)/sizeof(_temp_multi_func_list[0]))
+ multi_func_list _temp_multi_func_list[$multi_list_size];
+$multi_list
Parrot_mmd_add_multi_list_from_c_args(interp,
- _temp_multi_func_list, N_MULTI_LIST);
+ _temp_multi_func_list, $multi_list_size);
EOC
}
@@ -718,7 +720,7 @@
=item C<update_vtable_func()>
-Returns the C code for the PMC's update_vtable method.
+Returns the C code for the PMC's update_vtable.
=cut
@@ -739,8 +741,9 @@
my $flag_auto_attrs = $self->{flags}{auto_attrs};
my $flag_manual_attrs = $self->{flags}{manual_attrs};
die 'manual_attrs and auto_attrs can not be used together'
+ . 'in PMC ' . $self->name
if ($flag_auto_attrs && $flag_manual_attrs);
- warn 'PMC has attributes but no auto_attrs or manual_attrs'
+ die 'PMC ' . $self->name . ' has attributes but no auto_attrs or manual_attrs'
if (@{$self->attributes} && ! ($flag_auto_attrs || $flag_manual_attrs));
if ( @{$self->attributes} && $flag_auto_attrs) {
@@ -887,7 +890,7 @@
=item C<get_vtable_func()>
-Returns the C code for the PMC's update_vtable method.
+Returns the C code for the PMC's update_vtable.
=cut
@@ -989,7 +992,7 @@
push @{ $multi_methods{ $name } }, [ $sig[1], $ssig, $fsig, $ns, $func, $method ];
}
- # vtable methods
+ # vtables
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
next if $vt_method_name eq 'class_init';
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Parser.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Parser.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Parser.pm Wed May 5 08:45:29 2010 (r46302)
@@ -279,7 +279,7 @@
}
else {
- # Name-mangle NCI and multi methods to avoid conflict with vtable methods.
+ # Name-mangle NCI and multi methods to avoid conflict with vtables
if ( $marker) {
if ( $marker =~ /MULTI/ ) {
$method->type(Parrot::Pmc2c::Method::MULTI);
Modified: branches/ops_pct/lib/Parrot/Pmc2c/Pmc2cMain.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/Pmc2cMain.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/Pmc2cMain.pm Wed May 5 08:45:29 2010 (r46302)
@@ -240,8 +240,11 @@
return $path if -e $path;
}
- print Carp::longmess;
- die "cannot find file '$file' in path '", join( "', '", @includes ), "'" if $die_unless_found;
+ if ($die_unless_found) {
+ my $includes_list = join q|', '| => @includes;
+ Carp::confess("cannot find file '$file' in path '$includes_list'");
+ }
+
return;
}
Modified: branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Pmc2c/UtilFunctions.pm Wed May 5 08:45:29 2010 (r46302)
@@ -9,7 +9,7 @@
use base qw( Exporter );
our @EXPORT_OK = qw( count_newlines return_statement dont_edit dynext_load_code
- c_code_coda slurp spew filename escape_filename
+ c_code_coda slurp spew filename
args_from_parameter_list
passable_args_from_parameter_list
);
@@ -74,11 +74,6 @@
return scalar $_[0] =~ tr/\n//;
}
-sub escape_filename {
- ( my $filename = shift ) =~ s|(\\)|$1$1|g;
- return $filename;
-}
-
=item C<dont_edit($pmcfile)>
Returns the "DO NOT EDIT THIS FILE" warning text. C<$pmcfile> is the name
Modified: branches/ops_pct/lib/Parrot/Vtable.pm
==============================================================================
--- branches/ops_pct/lib/Parrot/Vtable.pm Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/lib/Parrot/Vtable.pm Wed May 5 08:45:29 2010 (r46302)
@@ -67,7 +67,7 @@
[ return_type method_name parameters section MMD_type attributes ]
-for each vtable method defined in C<$file>. If C<$file> is unspecified it
+for each vtable function defined in C<$file>. If C<$file> is unspecified it
defaults to F<src/vtable.tbl>. If it is not an MMD method, C<MMD_type> is -1.
=cut
@@ -209,7 +209,7 @@
/*
* vtable accessor macros
- * as vtable methods might get moved around internally
+ * as vtable functions might get moved around internally
* these macros hide the details
*/
@@ -281,7 +281,7 @@
=item C<vtbl_embed($vtable)>
-Returns the C function definitions to call the vtable methods on a PMC for the
+Returns the C function definitions to call the vtable functions on a PMC for the
elements in the referenced vtable array.
=cut
Modified: branches/ops_pct/ports/cygwin/README
==============================================================================
--- branches/ops_pct/ports/cygwin/README Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ports/cygwin/README Wed May 5 08:45:29 2010 (r46302)
@@ -682,9 +682,6 @@
/usr/include/parrot/1.0.0/parrot/op.h
/usr/include/parrot/1.0.0/parrot/oplib.h
/usr/include/parrot/1.0.0/parrot/oplib/core_ops.h
- /usr/include/parrot/1.0.0/parrot/oplib/core_ops_cg.h
- /usr/include/parrot/1.0.0/parrot/oplib/core_ops_cgp.h
- /usr/include/parrot/1.0.0/parrot/oplib/core_ops_switch.h
/usr/include/parrot/1.0.0/parrot/oplib/ops.h
/usr/include/parrot/1.0.0/parrot/packfile.h
/usr/include/parrot/1.0.0/parrot/parrot.h
@@ -748,8 +745,6 @@
/usr/lib/parrot/1.0.0/src/install_config.o
/usr/lib/parrot/1.0.0/src/nci.c
/usr/lib/parrot/1.0.0/src/null_config.o
- /usr/lib/parrot/1.0.0/src/ops/core_ops_cgp.c
- /usr/lib/parrot/1.0.0/src/ops/core_ops_switch.c
/usr/lib/parrot/1.0.0/src/parrot_config.o
/usr/lib/parrot/1.0.0/tools/build/ops2c.pl
/usr/lib/parrot/1.0.0/tools/build/pmc2c.pl
@@ -892,7 +887,6 @@
/usr/share/doc/parrot/1.0.0/html/config/auto/attributes.pm.html
/usr/share/doc/parrot/1.0.0/html/config/auto/backtrace.pm.html
/usr/share/doc/parrot/1.0.0/html/config/auto/byteorder.pm.html
- /usr/share/doc/parrot/1.0.0/html/config/auto/cgoto.pm.html
/usr/share/doc/parrot/1.0.0/html/config/auto/cpu.pm.html
/usr/share/doc/parrot/1.0.0/html/config/auto/cpu/i386/auto.pm.html
/usr/share/doc/parrot/1.0.0/html/config/auto/cpu/ppc/auto.pm.html
Modified: branches/ops_pct/ports/debian/changelog
==============================================================================
--- branches/ops_pct/ports/debian/changelog Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ports/debian/changelog Wed May 5 08:45:29 2010 (r46302)
@@ -1,3 +1,13 @@
+parrot (2.3.0-1) unstable; urgency=low
+ * New upstream release
+ * debian/patches:
+ - Removed 01_fix_doc_install.patch, change included upstream.
+ - Removed 02_fix_man_whatis.patch, change included upstream.
+ * control.in
+ - Removed package dependency on libgdbm-dev, no longer used.
+
+ -- Allison Randal <allison at parrot.org> Tue, 27 Apr 2010 18:03:12 +0100
+
parrot (2.0.0-1) unstable; urgency=low
* New upstream release
* parrot-devel.install.in
Modified: branches/ops_pct/ports/debian/control.in
==============================================================================
--- branches/ops_pct/ports/debian/control.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ports/debian/control.in Wed May 5 08:45:29 2010 (r46302)
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian Parrot Maintainers <pkg-parrot-devel at lists.alioth.debian.org>
Uploaders: Allison Randal <allison at parrot.org>, Nuno Carvalho <mestre.smash at gmail.com>, Patrick Michaud <pmichaud at pobox.com>
-Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libgdbm-dev, libreadline-dev, quilt
+Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libreadline-dev, quilt
Standards-Version: 3.8.4
Package: parrot
Deleted: branches/ops_pct/ports/debian/patches/01_fix_doc_install.patch
==============================================================================
--- branches/ops_pct/ports/debian/patches/01_fix_doc_install.patch Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,11 +0,0 @@
---- parrot-2.0.0.orig/config/gen/makefiles/root.in
-+++ parrot-2.0.0/config/gen/makefiles/root.in
-@@ -2664,6 +2664,7 @@
- --buildprefix=$(BUILDPREFIX) \
- --prefix=$(PREFIX) \
- --docdir=$(DOC_DIR) \
-+ --destdir=$(DESTDIR) \
- --versiondir=$(VERSION_DIR) \
- MANIFEST MANIFEST.generated
-
-
Deleted: branches/ops_pct/ports/debian/patches/02_fix_man_whatis.patch
==============================================================================
--- branches/ops_pct/ports/debian/patches/02_fix_man_whatis.patch Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,22 +0,0 @@
---- parrot-2.0.0.orig/tools/dev/pbc_to_exe.pir
-+++ parrot-2.0.0/tools/dev/pbc_to_exe.pir
-@@ -4,7 +4,7 @@
-
- =head1 NAME
-
--pbc_to_exe
-+pbc_to_exe - Generate executables from Parrot bytecode
-
- =head1 DESCRIPTION
-
---- parrot-2.0.0.orig/src/parrot_debugger.c
-+++ parrot-2.0.0/src/parrot_debugger.c
-@@ -4,7 +4,7 @@
-
- =head1 NAME
-
--parrot_debugger
-+parrot_debugger - The Parrot Debugger
-
- =head1 DESCRIPTION
-
Modified: branches/ops_pct/ports/debian/patches/series
==============================================================================
--- branches/ops_pct/ports/debian/patches/series Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ports/debian/patches/series Wed May 5 08:45:29 2010 (r46302)
@@ -1,3 +1 @@
-01_fix_doc_install.patch
-02_fix_man_whatis.patch
03_fix_nqp_man.patch
Copied: branches/ops_pct/ports/fedora/2.3.0/parrot.desk.in.tar.gz (from r46301, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz)
==============================================================================
Binary file (source and/or target). No diff available.
Copied: branches/ops_pct/ports/fedora/2.3.0/parrot.patch (from r46301, trunk/ports/fedora/2.3.0/parrot.patch)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/fedora/2.3.0/parrot.patch Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/fedora/2.3.0/parrot.patch)
@@ -0,0 +1,19 @@
+--- lib/Parrot/Install.pm 2009-06-01 09:29:57.000000000 +0200
++++ lib/Parrot/Install.pm 2009-06-03 08:41:22.000000000 +0200
+@@ -220,6 +220,16 @@
+ else {
+ next unless -e $src;
+ next if $^O eq 'cygwin' and -e "$src.exe"; # stat works, copy not
++ if (-l $src) {
++ # check if the system supports symbolic linking
++ use Config;
++ if ($Config{d_symlink} && $Config{d_readlink}) {
++ # copy as symbolic link
++ symlink(readlink($src), $dest);
++ print "$dest\n";
++ next;
++ }
++ }
+ copy( $src, $dest ) or die "Error: couldn't copy $src to $dest: $!\n";
+ print "$dest\n";
+ }
Copied: branches/ops_pct/ports/fedora/2.3.0/parrot.spec (from r46301, trunk/ports/fedora/2.3.0/parrot.spec)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/fedora/2.3.0/parrot.spec Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/fedora/2.3.0/parrot.spec)
@@ -0,0 +1,379 @@
+Name: parrot
+Version: 2.3.0
+Release: 1%{?dist}
+Summary: a virtual machine
+License: Artistic 2.0
+Group: Development/Libraries
+URL: http://www.parrot.org/
+
+Source0: ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
+Source1: %{name}.desk.in.tar.gz
+
+Patch0: parrot.patch
+#
+# see for upstream: https://trac.parrot.org/parrot/ticket/509
+# patched file: lib/Parrot/Install.pm
+# is to have the symlink: libparrot.so -> libparrot.so.%{version}
+# Without this %{_libdir}/libparrot.so would not be a symbolic link to
+# %{_libdir}/libparrot.so.%{version}
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: readline-devel
+BuildRequires: ncurses-devel
+BuildRequires: gmp-devel
+BuildRequires: gdbm-devel
+BuildRequires: libicu-devel
+BuildRequires: perl(Test::Harness)
+BuildRequires: perl(Test::Simple)
+BuildRequires: ctags
+BuildRequires: openssl-devel
+BuildRequires: flex
+BuildRequires: bison
+# Needed to generate the Parrot PDF book
+BuildRequires: perl(Pod::PseudoPod::LaTeX), texlive-latex
+# Needed to desktop-file-install usage
+BuildRequires: desktop-file-utils
+
+
+%package docs
+Summary: Parrot Virtual Machine documentation
+Group: Documentation
+Requires: perl(strict)
+Requires: perl(warnings)
+# Provides the executable in the desktop file (xdg-open)
+Requires: xdg-utils
+BuildArch: noarch
+
+#--
+
+%package devel
+Summary: Parrot Virtual Machine development headers and libraries
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: pkgconfig
+
+#--
+
+%package tools
+Summary: Parrot Virtual Machine development for languages
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: perl(Pod::Simple)
+Requires: perl(File::Which) >= 0.05
+Requires: perl(Parrot::OpLib::core)
+# It is necessary to have installed the package "perl-Perl-Critic" to install
+# the parrot-tools
+Provides: perl(Parrot::Pmc2c::MethodEmitter) = %{version}
+Provides: perl(Parrot::Pmc2c::PCCMETHOD_BITS) = %{version}
+Provides: perl(Parrot::Pmc2c::PMCEmitter) = %{version}
+Provides: perl(Parrot::OpLib::core) = %{version}
+
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+#--
+
+%description docs
+Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
+examples about the Parrot Virtual Machine.
+
+#--
+
+%description devel
+Parrot Virtual Machine development headers and libraries.
+
+#--
+
+%description tools
+Parrot Virtual Machine development files for building languages.
+
+
+%prep
+%setup -q
+%patch0 -p0
+
+
+cat << \EOF > %{name}-prov
+#!/bin/sh
+%{__perl_provides} $* | %{__sed} -e '/perl(A)/d' -e '/perl(B)/d' \
+ -e '/perl(DB)/d' -e '/perl(Parrot::OpLib::core)/d'
+EOF
+
+%global __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
+chmod +x %{__perl_provides}
+
+
+%build
+%ifarch %{ix86} x86_64
+ RPM_OPT_FLAGS="$RPM_OPT_FLAGS -maccumulate-outgoing-args"
+%else
+# The PowerPC-architecture do not build with the '-maccumulate-outgoing-args'
+# option.
+ RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
+%endif
+
+# there are problems in this version with the optimize="-O2" option on ppc64
+%ifarch ppc64
+ RPM_OPT_FLAGS=`echo "$RPM_OPT_FLAGS" | %{__perl} -pi -e 's/-O2//'`
+%endif
+
+%{__perl} Configure.pl \
+ --prefix=%{_usr} \
+ --libdir=%{_libdir} \
+ --sysconfdir=%{_sysconfdir} \
+ --infodir=%{_datadir}/info \
+ --mandir=%{_mandir} \
+ --cc="%{__cc}" \
+ --cxx=%{__cxx} \
+ --optimize="$RPM_OPT_FLAGS" \
+ --parrot_is_shared \
+ --disable-rpath \
+ --pkgconfigdir=pkgconfig \
+ --lex=%{_bindir}/flex
+
+# The LD_LIBRARY_PATH hack is needed for "miniparrot"
+# to find his parrot-library in "blib/lib"
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+# pbc_to_exe would not build if %{_smp_mflags} would used
+make
+make html pdf
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+# The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc"
+# to find his parrot-library in "blib/lib"
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Creating man-pages
+%{__install} -d $RPM_BUILD_ROOT%{_mandir}/man1
+for var in 'parrot docs/running.pod' 'parrot_debugger src/parrot_debugger.c' \
+ 'pbc_disassemble src/pbc_disassemble.c' 'pbc_dump src/pbc_dump.c' \
+ 'pbc_merge src/pbc_merge.c' 'pbc_to_exe tools/dev/pbc_to_exe.pir' \
+ 'parrot_config tools/build/parrot_config_c.pl' \
+ 'parrot-nqp compilers/nqp/README.pod'
+do
+ MAN_NAME=`echo $var | %{__perl} -na -e 'print $F[0]'`
+ MAN_SOURCE=`echo $var | %{__perl} -na -e 'print $F[1]'`
+ pod2man --section=1 --name=$MAN_NAME $MAN_SOURCE | %{__gzip} -c > $RPM_BUILD_ROOT%{_mandir}/man1/${MAN_NAME}.1.gz
+done
+
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}
+
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+
+
+%define RPM_PAR_LIB_DIR $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/
+
+
+# Force permissions on shared versioned libs so they get stripped.
+# The parrot-install-script don't set the permissions right
+# With changed permissions the dependencies will be found
+find %{RPM_PAR_LIB_DIR}dynext -type f -name '*.so' -exec chmod 755 {} \;
+
+# Remove module that should be install instead (perl(File::Which))
+rm -rf %{RPM_PAR_LIB_DIR}tools/lib/File
+
+
+# Added to reduce output errors when using rpmlint
+
+# Force permission on perl-scripts in the "tools" subdirctory
+find %{RPM_PAR_LIB_DIR}tools -type f -name "*.pl" -exec chmod 755 {} \; \
+ -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+# Set path to parrot binary and Force permission
+find %{RPM_PAR_LIB_DIR}tools/dev -type f -name "pbc_to_exe.pir" \
+ -exec %{__sed} -i -e '1 s&#! parrot&#!/usr/bin/parrot&' {} \; \
+ -exec chmod 755 {} \;
+
+# Remove doc-files with zero-length
+find docs/html -type f -size 0 -exec rm -f {} \;
+find docs -wholename 'docs/doc-prep' -type f -size 0 -exec rm -f {} \;
+
+# Set path for installed programs in docs package
+find examples/json -type f -name "*.pir" \
+ -exec %{__sed} -i -e '1 s&#!../../parrot&#!/usr/bin/parrot&' {} \;
+find examples -type f -path 'examples/*/*/setup.pir' \
+ -exec %{__sed} -i -e '1 s&#! ../../../parrot&#!/usr/bin/parrot&' {} \;
+find examples -type f \( -name '*.pl' -o \
+ -wholename 'examples/pir/befunge/t/basic.t' -o \
+ -path 'examples/languages/*/harness' \) \
+ -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+find examples -type f -name "*.py" \
+ -exec %{__sed} -i -e '1 s&#! python&#!/usr/bin/python&' {} \;
+find examples -type f -name "*.rb" \
+ -exec %{__sed} -i -e '1 s&#! ruby&#!/usr/bin/ruby&' {} \;
+
+find examples -type f \( -name "*.pir" -o \
+ -wholename 'examples/shootout/random.pasm' \) \
+ -exec %{__sed} -i -e '1 s&#!./parrot&#!/usr/bin/parrot&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/01-tests.t' \
+ -exec %{__sed} -i -e '1 s&#!perl&#!/usr/bin/perl&' {} \;
+find examples -wholename 'examples/shootout/revcomp.pir' \
+ -exec %{__sed} -i -e '1 s&#!parrot&#!/usr/bin/parrot&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/harness' \
+ -exec %{__perl} -pi -e 's/\r$//' {} \;
+
+#install desktop file
+%{__mkdir} ${RPM_BUILD_ROOT}%{_datadir}/applications/
+%{__tar} xzf %{SOURCE1} parrot_html.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+%{__tar} xzf %{SOURCE1} parrot_pdf.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+desktop-file-install --delete-original --add-category="Documentation" \
+ --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
+ ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+desktop-file-install --delete-original --add-category="Documentation" \
+ --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
+ ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+
+%check
+# 'make fulltest' is done by default; it take a lot of time
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+FULL='full'
+%{?_without_fulltest: FULL=''}
+%{?!_without_tests: make ${FULL}test}
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO LICENSE
+%{_bindir}/parrot
+%{_libdir}/parrot/
+%exclude %{_libdir}/parrot/%{version}/tools
+%exclude %{_libdir}/parrot/%{version}/VERSION
+%{_libdir}/libparrot.so.*
+%{_mandir}/man1/parrot.1.gz
+
+%files docs
+%defattr(-,root,root,-)
+%doc docs examples
+%{_datadir}/applications/parrot_html.desktop
+%{_datadir}/applications/parrot_pdf.desktop
+
+%files devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/parrot_nci_thunk_gen
+%{_bindir}/parrot-nqp
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_bindir}/tapir
+%{_includedir}/parrot
+%{_libdir}/libparrot.so
+%exclude %{_libdir}/libparrot.a
+%{_libdir}/pkgconfig/*
+%{_mandir}/man1/parrot_config.1.gz
+%{_mandir}/man1/parrot_debugger.1.gz
+%{_mandir}/man1/pbc_disassemble.1.gz
+%{_mandir}/man1/pbc_merge.1.gz
+%{_mandir}/man1/pbc_to_exe.1.gz
+%{_mandir}/man1/pbc_dump.1.gz
+%{_mandir}/man1/parrot-nqp.1.gz
+
+%files tools
+%defattr(-,root,root,-)
+# Files for building languages
+%{_libdir}/parrot/%{version}/tools/*
+%{_libdir}/parrot/%{version}/VERSION
+%{_usr}/src/parrot/*
+
+
+%changelog
+* Tue Apr 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.3.0-1
+- updated to 2.3.0
+- add desktop files to access the documentation for reading
+- add the tapir binary
+
+* Tue Mar 16 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.2.0-1
+- add the parrot_nci_thunk_gen binary
+
+* Wed Jan 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.0.0-1
+- new upstream version
+- add the parrot-nqp binary, with generating of the man-page
+
+* Fri Aug 21 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.5.0-1
+- add man pages
+
+* Sat Aug 1 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.4.0-9
+- include the necessary module Parrot::OpLib::core
+- change the place of header files to /usr/include/parrot/<version>
+- install the files /usr/src/parrot/*
+- add the new disable-rpath configure option
+
+* Wed Mar 25 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.0.0-6
+- add a list of changes from Lubomir Rintel
+- add filtering Provides
+- change requires for docs-subpackage
+- enable test suite
+- change the group of the subpackage "-docs" to Documentation
+- put the main-documentation from the docs-package to the main package
+- LICENSE file added
+- add Provides-lines
+- add patch for the file "tools/dev/install_files.pl"
+- add commands to reduce output of errors when using rpmlint
+- define RPM_PAR_LIB_DIR added
+- add subpackage "tools"
+- exclude tools directory from main-package
+- added make html
+
+* Sun Mar 22 2009 Fabien Georget <fabien.georget at gmail.com> 1.0.0-4
+- add tools
+
+* Sun Mar 22 2009 David Fetter <david at fetter.org> 1.0.0-3
+- Removed wrong prefix from pkgconfig per Christoph Wickert
+- Changed i386 to ix86 per Christoph Wickert
+
+* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
+- updated to 1.0.0
+
+* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
+- added parrot_utils to devel
+
+* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
+- updated to 0.8.2
+
+* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
+- Update to 0.5.3.
+
+* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
+- Update to 0.4.9.
+- BuildRequires ncurses-devel.
+- For some reason now I need to force -lm too.
+- Remove some files/directories that shouldn't be included.
+- Override lib_dir and make various substitutions to try to fix multilib.
+- Remove rpath use from Makefile.
+- Fix a pod error in src/ops/experimental.ops.
+- Enable "make test" since t/doc/pod.t won't fail now.
+- Force permissions on shared libraries so rpmbuild strips them.
+- Fix URL, description, summary, etc.
+- Add post/postun.
+- Move parrot-config to the devel sub-package.
+- Force permissions on the doc directories.
+- Add -lcurses to get readline detection to work.
+- Add BuildRequires libicu-devel.
+
+* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
+- first .spec file created
Deleted: branches/ops_pct/ports/fedora/parrot.patch
==============================================================================
--- branches/ops_pct/ports/fedora/parrot.patch Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,38 +0,0 @@
---- tools/dev/install_files.pl 2009-07-13 10:26:40.000000000 +0200
-+++ tools/dev/install_files.pl 2009-07-13 13:37:49.000000000 +0200
-@@ -163,7 +163,7 @@
- # libdir as it is typically done with automake installed packages.
- # If there is a use case to make this configurable we'll add a
- # seperate --pkgconfigdir option.
-- $filehash->{DestDirs} = ['pkgconfig', $parrotdir];
-+ $filehash->{DestDirs} = ['pkgconfig'];
- return($filehash);
- },
- },
---- config/gen/makefiles/parrot_pc.in 2009-06-06 16:33:32.000000000 +0200
-+++ config/gen/makefiles/parrot_pc.in.new 2009-07-13 23:09:45.000000000 +0200
-@@ -7,4 +7,4 @@
- Description: virtual machine to execute bytecode for interpreted languages
- Version: @VERSION@
- Libs: -L${libdir} -lparrot @icu_shared@ @libs@
--Cflags: -I${includedir}
-+Cflags: -I${includedir}@versiondir@
---- lib/Parrot/Install.pm 2009-06-01 09:29:57.000000000 +0200
-+++ lib/Parrot/Install.pm 2009-06-03 08:41:22.000000000 +0200
-@@ -220,6 +220,16 @@
- else {
- next unless -e $src;
- next if $^O eq 'cygwin' and -e "$src.exe"; # stat works, copy not
-+ if (-l $src) {
-+ # check if the system supports symbolic linking
-+ use Config;
-+ if ($Config{d_symlink} && $Config{d_readlink}) {
-+ # copy as symbolic link
-+ symlink(readlink($src), $dest);
-+ print "$dest\n";
-+ next;
-+ }
-+ }
- copy( $src, $dest ) or die "Error: couldn't copy $src to $dest: $!\n";
- print "$dest\n";
- }
Deleted: branches/ops_pct/ports/fedora/parrot.spec.fedora
==============================================================================
--- branches/ops_pct/ports/fedora/parrot.spec.fedora Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,356 +0,0 @@
-Name: parrot
-Version: 2.0.0
-Release: 1%{?dist}
-Summary: a virtual machine
-License: Artistic 2.0
-Group: Development/Libraries
-URL: http://www.parrot.org/
-
-Source0: ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
-
-Patch0: parrot.patch
-# patched file: tools/dev/install_files.pl
-# It is responsible to have no subdirectory under pkgconfig.
-#
-# patched file: config/gen/makefiles/parrot_pc.in
-# So "pkg-config parrot --cflags" works correct
-#
-# see for upstream: https://trac.parrot.org/parrot/ticket/509
-# patched file: lib/Parrot/Install.pm
-# is to have the symlink: libparrot.so -> libparrot.so.%{version}
-# Without this %{_libdir}/libparrot.so would not be a symbolic link to
-# %{_libdir}/libparrot.so.%{version}
-
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel
-BuildRequires: gmp-devel
-BuildRequires: gdbm-devel
-BuildRequires: libicu-devel
-BuildRequires: perl(Test::Harness)
-BuildRequires: perl(Test::Simple)
-BuildRequires: ctags
-BuildRequires: openssl-devel
-BuildRequires: flex
-BuildRequires: bison
-
-
-%package docs
-Summary: Parrot Virtual Machine documentation
-Group: Documentation
-Requires: perl(strict)
-Requires: perl(warnings)
-BuildArch: noarch
-
-#--
-
-%package devel
-Summary: Parrot Virtual Machine development headers and libraries
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: pkgconfig
-
-#--
-
-%package tools
-Summary: Parrot Virtual Machine development for languages
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: perl(Pod::Simple)
-Requires: perl(File::Which) >= 0.05
-Requires: perl(Parrot::OpLib::core)
-# It is necessary to have installed the package "perl-Perl-Critic" to install
-# the parrot-tools
-Provides: perl(Parrot::Pmc2c::MethodEmitter) = %{version}
-Provides: perl(Parrot::Pmc2c::PCCMETHOD_BITS) = %{version}
-Provides: perl(Parrot::Pmc2c::PMCEmitter) = %{version}
-Provides: perl(Parrot::OpLib::core) = %{version}
-
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute
-bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
-as well as variety of other languages.
-
-#--
-
-%description docs
-Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
-examples about the Parrot Virtual Machine.
-
-#--
-
-%description devel
-Parrot Virtual Machine development headers and libraries.
-
-#--
-
-%description tools
-Parrot Virtual Machine development files for building languages.
-
-
-%prep
-%setup -q
-%patch0 -p0
-
-
-cat << \EOF > %{name}-prov
-#!/bin/sh
-%{__perl_provides} $* | %{__sed} -e '/perl(A)/d' -e '/perl(B)/d' \
- -e '/perl(DB)/d' -e '/perl(Parrot::OpLib::core)/d'
-EOF
-
-%global __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
-chmod +x %{__perl_provides}
-
-
-%build
-%ifarch %{ix86} x86_64
- RPM_OPT_FLAGS="$RPM_OPT_FLAGS -maccumulate-outgoing-args"
-%else
-# The PowerPC-architecture do not build with the '-maccumulate-outgoing-args'
-# option.
- RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
-%endif
-
-%{__perl} Configure.pl \
- --prefix=%{_usr} \
- --libdir=%{_libdir} \
- --sysconfdir=%{_sysconfdir} \
- --infodir=%{_datadir}/info \
- --mandir=%{_mandir} \
- --cc="%{__cc}" \
- --cxx=%{__cxx} \
- --optimize="$RPM_OPT_FLAGS" \
- --parrot_is_shared \
- --disable-rpath \
- --lex=%{_bindir}/flex
-
-# The LD_LIBRARY_PATH hack is needed for "miniparrot"
-# to find his parrot-library in "blib/lib"
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-
-# pbc_to_exe would not build if %{_smp_mflags} would used
-make
-make parrot_utils
-make installable
-make html
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-# The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc"
-# to find his parrot-library in "blib/lib"
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-
-# install-dev: Same as 'install' taget but also install support for
-# language development
-make install-dev DESTDIR=$RPM_BUILD_ROOT
-
-# Creating man-pages
-%{__install} -d $RPM_BUILD_ROOT%{_mandir}/man1
-for var in 'parrot docs/running.pod' 'parrot_debugger src/parrot_debugger.c' \
- 'pbc_disassemble src/pbc_disassemble.c' 'pbc_dump src/pbc_dump.c' \
- 'pbc_merge src/pbc_merge.c' 'pbc_to_exe tools/dev/pbc_to_exe.pir' \
- 'parrot_config tools/build/parrot_config_c.pl' \
- 'parrot-nqp compilers/nqp/README.pod'
-do
- MAN_NAME=`echo $var | %{__perl} -na -e 'print $F[0]'`
- MAN_SOURCE=`echo $var | %{__perl} -na -e 'print $F[1]'`
- pod2man --section=1 --name=$MAN_NAME $MAN_SOURCE | %{__gzip} -c > $RPM_BUILD_ROOT%{_mandir}/man1/${MAN_NAME}.1.gz
-done
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-
-%define RPM_PAR_LIB_DIR $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/
-
-
-# Force permissions on shared versioned libs so they get stripped.
-# The parrot-install-script don't set the permissions right
-# With changed permissions the dependencies will be found
-find %{RPM_PAR_LIB_DIR}dynext -type f -name '*.so' -exec chmod 755 {} \;
-
-# Remove module that should be install instead (perl(File::Which))
-rm -rf %{RPM_PAR_LIB_DIR}tools/lib/File
-
-
-# Added to reduce output errors when using rpmlint
-
-# Force permission on perl-scripts in the "tools" subdirctory
-find %{RPM_PAR_LIB_DIR}tools -type f -name "*.pl" -exec chmod 755 {} \; \
- -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
-# Set path to parrot binary and Force permission
-find %{RPM_PAR_LIB_DIR}tools/dev -type f -name "pbc_to_exe.pir" \
- -exec %{__sed} -i -e '1 s&#! parrot&#!/usr/bin/parrot&' {} \; \
- -exec chmod 755 {} \;
-
-# Remove doc-files with zero-length
-find docs/html -type f -size 0 -exec rm -f {} \;
-find docs -wholename 'docs/doc-prep' -type f -size 0 -exec rm -f {} \;
-
-# Set path for installed programs in docs package
-find examples/json -type f -name "*.pir" \
- -exec %{__sed} -i -e '1 s&#!../../parrot&#!/usr/bin/parrot&' {} \;
-find examples -type f -path 'examples/*/*/setup.pir' \
- -exec %{__sed} -i -e '1 s&#! ../../../parrot&#!/usr/bin/parrot&' {} \;
-find examples -type f \( -name '*.pl' -o \
- -wholename 'examples/pir/befunge/t/basic.t' -o \
- -path 'examples/languages/*/harness' \) \
- -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
-find examples -type f -name "*.py" \
- -exec %{__sed} -i -e '1 s&#! python&#!/usr/bin/python&' {} \;
-find examples -type f -name "*.rb" \
- -exec %{__sed} -i -e '1 s&#! ruby&#!/usr/bin/ruby&' {} \;
-
-find examples -type f \( -name "*.pir" -o \
- -wholename 'examples/shootout/random.pasm' \) \
- -exec %{__sed} -i -e '1 s&#!./parrot&#!/usr/bin/parrot&' {} \;
-
-find examples -wholename 'examples/languages/abc/t/01-tests.t' \
- -exec %{__sed} -i -e '1 s&#!perl&#!/usr/bin/perl&' {} \;
-find examples -wholename 'examples/shootout/revcomp.pir' \
- -exec %{__sed} -i -e '1 s&#!parrot&#!/usr/bin/parrot&' {} \;
-
-find examples -wholename 'examples/languages/abc/t/harness' \
- -exec %{__perl} -pi -e 's/\r$//' {} \;
-
-
-%check
-# 'make fulltest' is done by default; it take a lot of time
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-FULL='full'
-%{?_without_fulltest: FULL=''}
-%{?!_without_tests: make ${FULL}test}
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO LICENSE
-%{_bindir}/parrot
-%{_libdir}/parrot/
-%exclude %{_libdir}/parrot/%{version}/tools
-%exclude %{_libdir}/parrot/%{version}/VERSION
-%{_libdir}/libparrot.so.*
-%{_mandir}/man1/parrot.1.gz
-
-%files docs
-%defattr(-,root,root,-)
-%doc docs examples
-
-%files devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/parrot-nqp
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/parrot
-%{_libdir}/libparrot.so
-%exclude %{_libdir}/libparrot.a
-%{_libdir}/pkgconfig/*
-%{_mandir}/man1/parrot_config.1.gz
-%{_mandir}/man1/parrot_debugger.1.gz
-%{_mandir}/man1/pbc_disassemble.1.gz
-%{_mandir}/man1/pbc_merge.1.gz
-%{_mandir}/man1/pbc_to_exe.1.gz
-%{_mandir}/man1/pbc_dump.1.gz
-%{_mandir}/man1/parrot-nqp.1.gz
-
-%files tools
-%defattr(-,root,root,-)
-# Files for building languages
-%{_libdir}/parrot/%{version}/tools/*
-%{_libdir}/parrot/%{version}/VERSION
-%{_usr}/src/parrot/*
-
-
-%changelog
-* Wed Jan 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.0.0-1
-- new upstream version
-- add the parrot-nqp binary, with generating of the man-page
-
-* Sat Aug 22 2009 Tomas Mraz <tmraz at redhat.com> 1.5.0-2
-- rebuilt with new openssl
-
-* Fri Aug 21 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.5.0-1
-- add man pages
-
-* Sat Aug 1 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.4.0-9
-- include the necessary module Parrot::OpLib::core
-- change the place of header files to /usr/include/parrot/<version>
-- install the files /usr/src/parrot/*
-- add the new disable-rpath configure option
-
-* Wed Mar 25 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.0.0-6
-- add a list of changes from Lubomir Rintel
-- add filtering Provides
-- change requires for docs-subpackage
-- enable test suite
-- change the group of the subpackage "-docs" to Documentation
-- put the main-documentation from the docs-package to the main package
-- LICENSE file added
-- change 'make install' to 'make install-dev' to also install support for development (tools)
-- add Provides-lines
-- add patch for the file "tools/dev/install_files.pl"
-- add commands to reduce output of errors when using rpmlint
-- define RPM_PAR_LIB_DIR added
-- add subpackage "tools"
-- exclude tools directory from main-package
-- added make html
-
-* Sun Mar 22 2009 Fabien Georget <fabien.georget at gmail.com> 1.0.0-4
-- add tools
-
-* Sun Mar 22 2009 David Fetter <david at fetter.org> 1.0.0-3
-- Removed wrong prefix from pkgconfig per Christoph Wickert
-- Changed i386 to ix86 per Christoph Wickert
-
-* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
-- updated to 1.0.0
-
-* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
-- added make installable
-- added parrot_utils to devel
-
-* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
-- updated to 0.8.2
-
-* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
-- Update to 0.5.3.
-
-* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
-- Update to 0.4.9.
-- BuildRequires ncurses-devel.
-- For some reason now I need to force -lm too.
-- Remove some files/directories that shouldn't be included.
-- Override lib_dir and make various substitutions to try to fix multilib.
-- Remove rpath use from Makefile.
-- Fix a pod error in src/ops/experimental.ops.
-- Enable "make test" since t/doc/pod.t won't fail now.
-- Force permissions on shared libraries so rpmbuild strips them.
-- Fix URL, description, summary, etc.
-- Add post/postun.
-- Move parrot-config to the devel sub-package.
-- Force permissions on the doc directories.
-- Add -lcurses to get readline detection to work.
-- Add BuildRequires libicu-devel.
-
-* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
-- first .spec file created
Copied: branches/ops_pct/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch (from r46301, trunk/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch)
@@ -0,0 +1,42 @@
+Index: trunk/config/gen/makefiles/dynpmc.in
+===================================================================
+--- trunk/config/gen/makefiles/dynpmc.in (revision 44649)
++++ trunk/config/gen/makefiles/dynpmc.in (revision 45824)
+@@ -39,5 +39,4 @@
+
+ PMCS_DIGEST = \
+- md2.pmc \
+ md4.pmc \
+ md5.pmc \
+@@ -49,5 +48,4 @@
+
+ OBJS_DIGEST = \
+- md2$(O) \
+ md4$(O) \
+ md5$(O) \
+@@ -202,13 +200,4 @@
+ $(PMC2C) --library digest_group --c $(PMCS_DIGEST)
+
+-md2$(O): md2.c
+- $(CC) -c @cc_o_out at md2$(O) $(INCLUDES) $(CFLAGS) md2.c
+-
+-md2.c: md2.dump
+- $(PMC2CC) md2.pmc
+-
+-md2.dump: md2.pmc
+- $(PMC2CD) md2.pmc
+-
+ md4$(O): md4.c
+ $(CC) -c @cc_o_out at md4$(O) $(INCLUDES) $(CFLAGS) md4.c
+Index: trunk/config/gen/crypto.pm
+===================================================================
+--- trunk/config/gen/crypto.pm (revision 42949)
++++ trunk/config/gen/crypto.pm (revision 45824)
+@@ -28,7 +28,4 @@
+ $data{result} = q{};
+ $data{digest} = {
+- MD2 => {
+- md_result => 'ab4f496bfb2a530b219ff33031fe06b0',
+- },
+ MD4 => {
+ md_result => 'd9130a8164549fe818874806e1c7014b',
Copied: branches/ops_pct/ports/mandriva/2.3.0/parrot.spec (from r46301, trunk/ports/mandriva/2.3.0/parrot.spec)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/mandriva/2.3.0/parrot.spec Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/mandriva/2.3.0/parrot.spec)
@@ -0,0 +1,339 @@
+%define name parrot
+%define version 2.3.0
+%define release %mkrel 2
+
+%define libname %mklibname %{name}
+%define libname_devel %mklibname -d %{name}
+
+%define _requires_exceptions perl(Parrot::Pmc2c::.*)
+%define _provides_exceptions perl(File::Which)
+
+Name: %name
+Version: %version
+Release: %release
+
+Summary: Parrot Virtual Machine
+License: Artistic 2.0
+Group: Development/Perl
+Url: http://www.parrot.org/
+Source0: ftp://ftp.parrot.org/pub/parrot/releases/devel/%{version}/%{name}-%{version}.tar.gz
+Patch0: parrot-2.3.0-remove_md2_upstream_r45824.patch
+
+BuildRequires: gdbm-devel
+BuildRequires: gmp-devel
+BuildRequires: libicu-devel
+BuildRequires: ncurses-devel
+BuildRequires: perl-doc
+BuildRequires: readline-devel
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for interpreted languages. Parrot will be the target for the final
+Perl 6 compiler, and is already usable as a backend for Pugs, as well as
+variety of other languages
+
+#--
+
+%package -n %libname
+Summary: Parrot Virtual Machine run time library
+License: Artistic 2.0
+Group: Development/Perl
+Provides: lib%{name} = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: %{_libdir}/pkgconfig
+
+%description -n %libname
+Run time library for %{name}.
+
+#--
+
+%package -n %{name}-doc
+Summary: Parrot Virtual Machine documentation
+License: Artistic 2.0
+Group: Development/Perl
+
+%description -n %{name}-doc
+Documentation for %{name}.
+
+#--
+
+%package -n %libname_devel
+Summary: Parrot Virtual Machine development headers and libraries
+License: Artistic 2.0
+Group: Development/Perl
+Provides: %{name}-devel = %{version}-%{release}
+Requires: %libname = %{version}
+
+%description -n %libname_devel
+Development files for %{name}.
+
+#--
+
+%package -n %{name}-src
+Summary: Parrot Virtual Machine sources
+License: Artistic 2.0
+Group: Development/Perl
+Provides: %{name}-src = %{version}-%{release}
+
+%description -n %{name}-src
+Sources of %{name}.
+
+
+%prep
+%setup -q
+%patch0 -p1 -b .md2
+%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
+ src/library.c
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+ tools/dev/install_files.pl \
+ tools/dev/mk_manifest_and_skip.pl
+
+%build
+%{__perl} Configure.pl \
+ --prefix=%{_usr} \
+ --libdir=%{_libdir} \
+ --sysconfdir=%{_sysconfdir} \
+ --infodir=%{_datadir}/info \
+ --mandir=%{_mandir} \
+ --cc="%{__cc}" \
+ --parrot_is_shared \
+ --lex=/usr/bin/flex \
+ --yacc=/usr/bin/yacc \
+ --libs='-lcurses -lm -lrt'
+
+ #--cxx=%{__cxx} \
+# the following Configure.pl flag makes the compile goes boom
+ #--optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
+
+%make
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+%make parrot_utils
+%make installable
+%make html
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot
+
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+
+# Force permissions on shared libs so they get stripped.
+find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
+ -exec chmod 755 {} \;
+
+%check
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+#make test
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%if %mdkversion < 200900
+%post -n %libname -p /sbin/ldconfig
+%endif
+
+%if %mdkversion < 200900
+%postun -n %libname -p /sbin/ldconfig
+%endif
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO
+%exclude %{_bindir}/parrot_config
+%exclude %{_bindir}/parrot_debugger
+%exclude %{_bindir}/pbc_*
+%{_bindir}/*
+
+%files -n %{name}-doc
+%defattr(-,root,root,-)
+%doc docs examples
+
+%files -n %libname
+%defattr(-,root,root,-)
+%{_libdir}/parrot
+%{_libdir}/*.so.*
+
+%files -n %libname_devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_includedir}/*
+%{_libdir}/pkgconfig/*
+%{_libdir}/*.so
+%{_libdir}/*.a
+
+%files -n %{name}-src
+%defattr(-,root,root,-)
+/usr/src/parrot
+
+
+%changelog
+* Wed Apr 21 2010 Jérôme Quelin <jquelin at mandriva.org> 2.3.0-2mdv2010.1
++ Revision: 537554
+- update to 2.3.0
+
+* Sun Mar 21 2010 Funda Wang <fwang at mandriva.org> 2.2.0-2mdv2010.1
++ Revision: 526122
+- rebuild for new icu
+
+* Wed Mar 17 2010 Jérôme Quelin <jquelin at mandriva.org> 2.2.0-1mdv2010.1
++ Revision: 523422
+- update to new version 2.2.0
+
+* Fri Feb 19 2010 Jérôme Quelin <jquelin at mandriva.org> 2.1.1-1mdv2010.1
++ Revision: 507974
+- update to new version 2.1.1
+
+* Tue Feb 09 2010 Funda Wang <fwang at mandriva.org> 2.0.0-2mdv2010.1
++ Revision: 503382
+- rebuild for new gmp
+
+* Thu Jan 21 2010 Jérôme Quelin <jquelin at mandriva.org> 2.0.0-1mdv2010.1
++ Revision: 494465
+- update to 2.0.0
+
+* Wed Dec 16 2009 Jérôme Quelin <jquelin at mandriva.org> 1.9.0-2mdv2010.1
++ Revision: 479530
+- bump mkrel
+- remove weird requires
+
+* Wed Dec 16 2009 Jérôme Quelin <jquelin at mandriva.org> 1.9.0-1mdv2010.1
++ Revision: 479220
+- update to new version 1.9.0
+
+* Tue Dec 08 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-5mdv2010.1
++ Revision: 474872
+- splitting -src from -devel
+
+* Tue Dec 08 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-4mdv2010.1
++ Revision: 474853
+- shipping parrot src, needed for rakudo
+
+* Mon Nov 23 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-3mdv2010.1
++ Revision: 469206
+- fix #55891: parrot was providing perl(file::which)
+
+* Wed Nov 18 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-2mdv2010.1
++ Revision: 467209
+- bump mkrel
+- removing a bogus requires auto-extracted
+
+* Tue Nov 17 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-1mdv2010.1
++ Revision: 467002
+- update to new version 1.8.0
+
+* Fri Nov 06 2009 Jérôme Quelin <jquelin at mandriva.org> 1.7.0-1mdv2010.1
++ Revision: 460705
+- update to new version 1.7.0
+
+* Tue Sep 15 2009 Jérôme Quelin <jquelin at mandriva.org> 1.6.0-1mdv2010.0
++ Revision: 443097
+- update to 1.6.0
+
+* Fri Sep 04 2009 Jérôme Quelin <jquelin at mandriva.org> 1.5.0-2mdv2010.0
++ Revision: 431070
+- rebuild
+
+* Sun Aug 23 2009 Jérôme Quelin <jquelin at mandriva.org> 1.5.0-1mdv2010.0
++ Revision: 419770
+- forgot to commit tarball
+- update to 1.5.0
+
+* Wed Jul 22 2009 Jérôme Quelin <jquelin at mandriva.org> 1.4.0-1mdv2010.0
++ Revision: 398641
+- update to 1.4.0
+
+* Thu Jun 18 2009 Jérôme Quelin <jquelin at mandriva.org> 1.3.0-1mdv2010.0
++ Revision: 386942
+- update to new version 1.3.0
+
+* Sun May 31 2009 Funda Wang <fwang at mandriva.org> 1.2.0-2mdv2010.0
++ Revision: 381586
+- rebuild for new icu libmajor
+
+* Sat May 30 2009 Jérôme Quelin <jquelin at mandriva.org> 1.2.0-1mdv2010.0
++ Revision: 381426
+- update to 1.2.0
+
+* Sun Mar 22 2009 Jérôme Quelin <jquelin at mandriva.org> 1.0.0-1mdv2009.1
++ Revision: 360489
+- removing make languages, target has been removed
+- update to 1.0.0
+
+* Wed Mar 11 2009 Jérôme Quelin <jquelin at mandriva.org> 0.9.1-2mdv2009.1
++ Revision: 353832
+- fixing url
+
+* Wed Mar 11 2009 Jérôme Quelin <jquelin at mandriva.org> 0.9.1-1mdv2009.1
++ Revision: 353669
+- Development/Liraries group doesn't exist. using devel/perl
+- adding missing group to fix strange submit error (thanks misc++)
+- fixing rpmlint warnings
+- minor tweak
+- version 0.9.1 - most of specfile taken from upstream project
+
+* Wed Jul 30 2008 Thierry Vignaud <tv at mandriva.org> 0.4.17-4mdv2009.0
++ Revision: 255040
+- rebuild
+- kill re-definition of %%buildroot on Pixel's request
+
+ + Pixel <pixel at mandriva.com>
+ - do not call ldconfig in %%post/%%postun, it is now handled by filetriggers
+
+ + Michael Scherer <misc at mandriva.org>
+ - remove old Obsoletes, prevent rpm to compile
+
+ + Olivier Blin <oblin at mandriva.com>
+ - restore BuildRoot
+
+* Fri Nov 23 2007 Thierry Vignaud <tv at mandriva.org> 0.4.17-2mdv2008.1
++ Revision: 111491
+- rebuild for new libicu
+
+ + Funda Wang <fwang at mandriva.org>
+ - New version 0.4.17
+
+* Sun Jul 15 2007 Funda Wang <fwang at mandriva.org> 0.4.13-2mdv2008.0
++ Revision: 52316
+- Obsoletes old major
+
+* Wed Jun 27 2007 Funda Wang <fwang at mandriva.org> 0.4.13-1mdv2008.0
++ Revision: 44826
+- more BuildRequires
+- remove unneeded(?) .c source files
+- disable patch
+ make reallyinstall
+- New version
+
+
+* Wed Aug 30 2006 Thierry Vignaud <tvignaud at mandriva.com> 0.4.6-1mdv2007.0
+- new release
+
+* Mon May 29 2006 Michael Scherer <misc at mandriva.org> 0.4.4-1mdv2007.0
+- New release 0.4.4
+
+* Tue Apr 18 2006 Michael Scherer <misc at mandriva.org> 0.4.3-1mdk
+- New release 0.4.3
+
+* Fri Mar 24 2006 Michael Scherer <misc at mandriva.org> 0.4.2-1mdk
+- New release 0.4.2
+- patch0 to compile with lib readline
+
+* Sat Feb 11 2006 Michael Scherer <misc at mandriva.org> 0.4.1-1mdk
+- Initial release
+
Deleted: branches/ops_pct/ports/mandriva/parrot.spec.mandriva
==============================================================================
--- branches/ops_pct/ports/mandriva/parrot.spec.mandriva Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,167 +0,0 @@
-%define name parrot
-%define version 0.9.1
-%define release %mkrel 2
-
-%define libname %mklibname %{name}
-%define libname_devel %mklibname -d %{name}
-
-Summary: Parrot Virtual Machine
-Name: %name
-Version: %version
-Release: %release
-Source0: ftp://ftp.parrot.org/pub/parrot/releases/devel/%{version}/%{name}-%{version}.tar.gz
-License: Artistic 2.0
-Group: Development/Perl
-Url: http://www.parrot.org/
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel
-BuildRequires: gmp-devel
-BuildRequires: gdbm-devel
-BuildRequires: perl-doc
-BuildRequires: libicu-devel
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute
-bytecode for interpreted languages. Parrot will be the target for the final
-Perl 6 compiler, and is already usable as a backend for Pugs, as well as
-variety of other languages
-
-#--
-
-%package -n %libname
-Summary: Parrot Virtual Machine run time library
-License: Artistic 2.0
-Group: Development/Perl
-Provides: lib%{name} = %{version}-%{release}
-Requires: %{name} = %{version}-%{release}
-Requires: %{_libdir}/pkgconfig
-
-%description -n %libname
-Run time library for %{name}.
-
-#--
-
-%package -n %{name}-doc
-Summary: Parrot Virtual Machine documentation
-License: Artistic 2.0
-Group: Development/Perl
-
-%description -n %{name}-doc
-Documentation for %{name}.
-
-#--
-
-%package -n %libname_devel
-Summary: Parrot Virtual Machine development headers and libraries
-License: Artistic 2.0
-Group: Development/Perl
-Provides: %{name}-devel = %version-%release
-Requires: %libname = %version
-
-%description -n %libname_devel
-Development files for %{name}.
-
-%prep
-%setup -q
-
-%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
- src/library.c
-%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
- tools/dev/install_files.pl \
- tools/dev/mk_manifest_and_skip.pl
-
-%build
-%{__perl} Configure.pl \
- --prefix=%{_usr} \
- --libdir=%{_libdir} \
- --sysconfdir=%{_sysconfdir} \
- --infodir=%{_datadir}/info \
- --mandir=%{_mandir} \
- --cc="%{__cc}" \
- --cxx=%{__cxx} \
- --parrot_is_shared \
- --lex=/usr/bin/flex \
- --yacc=/usr/bin/yacc \
- --libs='-lcurses -lm'
-
-# the following Configure.pl flag makes the compile goes boom
- #--optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
-
-make
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make languages
-make parrot_utils
-make installable
-make html
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-# Force permissions on shared libs so they get stripped.
-find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
- -exec chmod 755 {} \;
-
-# These files *probably* aren't needed.
-rm -rf $RPM_BUILD_ROOT%{_usr}/config \
- $RPM_BUILD_ROOT%{_includedir}/src \
- $RPM_BUILD_ROOT%{_usr}/src \
- $RPM_BUILD_ROOT%{_usr}/tools
-
-
-%check
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-#make test
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%if %mdkversion < 200900
-%post -n %libname -p /sbin/ldconfig
-%endif
-
-%if %mdkversion < 200900
-%postun -n %libname -p /sbin/ldconfig
-%endif
-
-%files
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO
-%exclude %{_bindir}/parrot_config
-%exclude %{_bindir}/parrot_debugger
-%exclude %{_bindir}/pbc_*
-%{_bindir}/*
-
-%files -n %{name}-doc
-%defattr(-,root,root,-)
-%doc docs examples
-
-%files -n %libname
-%defattr(-,root,root,-)
-%{_libdir}/parrot
-%{_libdir}/*.so.*
-
-%files -n %libname_devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/*
-%{_libdir}/pkgconfig/*
-%_libdir/*.so
-%_libdir/*.a
Copied: branches/ops_pct/ports/suse/2.2.0/parrot.diff (from r46301, trunk/ports/suse/2.2.0/parrot.diff)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/suse/2.2.0/parrot.diff Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/suse/2.2.0/parrot.diff)
@@ -0,0 +1,47 @@
+--- ./src/packfile.c.orig 2010-03-16 05:15:34.000000000 +0000
++++ ./src/packfile.c 2010-03-17 13:44:10.000000000 +0000
+@@ -4442,8 +4442,7 @@ PackFile_Annotations_add_group(PARROT_IN
+
+ /* Allocate extra space for the group in the groups array. */
+ if (self->groups)
+- self->groups =
+- self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
++ self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
+ 1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
+ else
+ self->groups = mem_gc_allocate_n_typed(interp,
+--- ./src/pmc.c.orig 2010-03-16 05:15:34.000000000 +0000
++++ ./src/pmc.c 2010-03-17 13:32:50.000000000 +0000
+@@ -584,7 +584,7 @@ Parrot_pmc_new_init_int(PARROT_INTERP, I
+ if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj)) {
+ PMC *initial = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+ VTABLE_set_integer_native(interp, initial, init);
+- VTABLE_instantiate(interp, classobj, initial);
++ return VTABLE_instantiate(interp, classobj, initial);
+ }
+ else {
+ PMC * const pmc = get_new_pmc_header(interp, base_type, 0);
+--- ./tools/dev/pbc_to_exe.pir.orig 2010-03-17 14:04:34.000000000 +0000
++++ ./tools/dev/pbc_to_exe.pir 2010-03-17 14:05:34.000000000 +0000
+@@ -510,10 +510,11 @@ END_OF_FUNCTION
+ .param int install :optional
+
+ $P0 = '_config'()
+- .local string cc, ccflags, cc_o_out, osname, build_dir, slash
++ .local string cc, ccflags, optimize, cc_o_out, osname, build_dir, slash
+ .local string installed, includepath, versiondir
+ cc = $P0['cc']
+ ccflags = $P0['ccflags']
++ optimize = $P0['optimize']
+ cc_o_out = $P0['cc_o_out']
+ osname = $P0['osname']
+ build_dir = $P0['build_dir']
+@@ -547,6 +548,8 @@ END_OF_FUNCTION
+ compile .= pathquote
+ compile .= ' '
+ compile .= ccflags
++ compile .= ' '
++ compile .= optimize
+ compile .= ' -c '
+ compile .= cfile
+
Copied: branches/ops_pct/ports/suse/2.2.0/parrot.spec (from r46301, trunk/ports/suse/2.2.0/parrot.spec)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/ports/suse/2.2.0/parrot.spec Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/ports/suse/2.2.0/parrot.spec)
@@ -0,0 +1,226 @@
+#
+# spec file for package parrot (Version 2.2.0)
+#
+# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+
+Name: parrot
+Version: 2.2.0
+Release: 1.10
+%define pversion 2_2_0
+Summary: Parrot Virtual Machine
+License: Artistic 2.0
+Group: Development/Libraries
+Url: http://www.parrot.org/
+Source0: parrot-%{version}.tar.bz2
+Patch0: parrot.diff
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: readline-devel
+BuildRequires: ncurses-devel
+BuildRequires: gmp-devel
+BuildRequires: gdbm-devel
+BuildRequires: libicu-devel
+%if ! 0%{?suse_version}
+BuildRequires: perl-Test-Harness
+%endif
+
+%package docs
+Summary: Parrot Virtual Machine documentation
+License: Artistic 2.0
+Group: Development/Libraries
+%if ! 0%{?suse_version}
+BuildRequires: /usr/bin/perldoc
+%endif
+
+%package -n libparrot%pversion
+
+
+Summary: Parrot Virtual Machine Library
+License: Artistic 2.0
+Group: Development/Libraries
+
+%package devel
+Summary: Parrot Virtual Machine development headers and libraries
+License: Artistic 2.0
+Group: Development/Libraries
+Requires: %{name} = %{version}
+Requires: readline-devel
+Requires: ncurses-devel
+Requires: gmp-devel
+Requires: gdbm-devel
+Requires: libicu-devel
+%if ! 0%{?suse_version}
+Requires: %{_libdir}/pkgconfig
+%endif
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+%description -n libparrot%pversion
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+%description docs
+Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
+examples about the Parrot Virtual Machine
+
+%description devel
+Parrot Virtual Machine development headers and libraries.
+
+%prep
+%setup -q
+%patch0
+%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
+ src/library.c
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+ tools/dev/install_files.pl
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+ tools/dev/install_dev_files.pl
+
+%build
+if test "%{_vendor}" = "suse"
+then
+ LIBS='-lncurses -lm -lrt'
+else
+ LIBS='-lcurses -lm -lrt'
+fi
+OPTIMIZE="$RPM_OPT_FLAGS -fno-strict-aliasing"
+OPTIMIZE="$RPM_OPT_FLAGS"
+%ifarch %ix86 %x86_64
+OPTIMIZE="$OPTIMIZE -maccumulate-outgoing-args"
+%endif
+%ifarch ppc ia64
+OPTIMIZE="-O0"
+%endif
+%{__perl} Configure.pl \
+ --prefix=%{_usr} \
+ --libdir=%{_libdir} \
+ --sysconfdir=%{_sysconfdir} \
+ --infodir=%{_datadir}/info \
+ --mandir=%{_mandir} \
+ --cc="%{__cc}" \
+ --cxx=%{__cxx} \
+ --optimize="$OPTIMIZE" \
+ --parrot_is_shared \
+ --disable-rpath \
+ --lex=/usr/bin/flex \
+ --yacc=/usr/bin/yacc \
+ --libs="$LIBS"
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make
+make parrot_utils
+make installable
+make html
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir $RPM_BUILD_ROOT
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make install-dev DESTDIR=$RPM_BUILD_ROOT
+PARROT_LIB=%{_libdir}`./parrot_config versiondir`
+PARROT_INC=%{_includedir}`./parrot_config versiondir`
+wd=`pwd`
+for i in $RPM_BUILD_ROOT$PARROT_LIB/tools/build/* ; do
+ perl -pi -e "s@$wd/include@$PARROT_INC at g" $i
+ perl -pi -e "s@$wd/src/pmc@$PARROT_INC/pmc at g" $i
+ perl -pi -e "s@(-Wl,)?-L$wd/blib/lib@@" $i
+ perl -pi -e "s@$wd@$PARROT_LIB at g" $i
+done
+perl -pi -e 's@^(use lib ..FindBin::Bin/\.\./)\.\."@$1lib"@' $RPM_BUILD_ROOT$PARROT_LIB/tools/build/dynpmc.pl
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT%{_usr}/share/doc/parrot # necessary for SuSE
+#rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot # for Solaris?
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+# Force permissions on shared libs so they get stripped.
+find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
+ -exec chmod 755 {} \;
+# make libparrot.so a symlink
+(cd $RPM_BUILD_ROOT%{_libdir} ; ln -fs libparrot.so.* libparrot.so)
+
+%check
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+# make test < /dev/null
+# %{?_with_fulltest:make fulltest < /dev/null}
+# make test || :
+# %{?_with_fulltest:make fulltest || :}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -n libparrot%pversion -p /sbin/ldconfig
+
+%postun -n libparrot%pversion -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%exclude %{_bindir}/parrot_config
+%exclude %{_bindir}/parrot_debugger
+%exclude %{_bindir}/pbc_*
+%{_bindir}/*
+
+%files -n libparrot%pversion
+%defattr(-,root,root,-)
+%dir %{_libdir}/parrot
+%dir %{_libdir}/parrot/*
+%{_libdir}/parrot/*/[^st]*
+%{_libdir}/libparrot.so.*
+
+%files docs
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO
+%doc docs examples
+
+%files devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_includedir}/parrot
+%{_libdir}/libparrot.so
+%{_libdir}/libparrot.a
+%{_libdir}/pkgconfig/*
+%{_libdir}/parrot/*/[st]*
+%{_usrsrc}/parrot
+
+%changelog
+* Wed Mar 17 2010 mls at suse.de
+- update to parrot-2.2.0
+ * Most internal allocations now use the GC
+ * RNG non-randomness fixes
+ * Elimination of much dead code
+* Fri Feb 19 2010 mls at suse.de
+- update to parrot-2.1.1
+* Fri Oct 23 2009 mls at suse.de
+- update to October version
+* Mon Sep 21 2009 mls at suse.de
+- update to September version
+* Thu Aug 27 2009 mls at suse.de
+- update to August version
+* Fri Jun 26 2009 mls at suse.de
+- update to June version
+* Thu Apr 23 2009 mls at suse.de
+- update to April version
+* Fri Apr 3 2009 mls at suse.de
+- initial revision
Deleted: branches/ops_pct/ports/suse/parrot.spec.suse
==============================================================================
--- branches/ops_pct/ports/suse/parrot.spec.suse Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,244 +0,0 @@
-Name: parrot
-Version: 1.1.0
-Release: 1%{dist}
-Summary: Parrot Virtual Machine
-License: Artistic 2.0
-Group: Development/Libraries
-URL: http://www.parrot.org/
-Source0: ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel
-BuildRequires: gmp-devel
-BuildRequires: gdbm-devel
-BuildRequires: libicu-devel
-BuildRequires: perl-Test-Harness
-
-%package docs
-Summary: Parrot Virtual Machine documentation
-License: Artistic 2.0
-Group: Development/Libraries
-BuildRequires: /usr/bin/perldoc
-
-%package devel
-Summary: Parrot Virtual Machine development headers and libraries
-License: Artistic 2.0
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: %{_libdir}/pkgconfig
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute
-bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
-as well as variety of other languages.
-
-%description docs
-Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
-examples about the Parrot Virtual Machine
-
-%description devel
-Parrot Virtual Machine development headers and libraries.
-
-%prep
-%setup -q
-
-%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
- src/library.c
-%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
- tools/dev/install_files.pl
-
-%build
-
-%ifarch i386 x86_64
-%{__perl} Configure.pl \
- --prefix=%{_usr} \
- --libdir=%{_libdir} \
- --sysconfdir=%{_sysconfdir} \
- --infodir=%{_datadir}/info \
- --mandir=%{_mandir} \
- --cc="%{__cc}" \
- --cxx=%{__cxx} \
- --optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
- --parrot_is_shared \
- --lex=/usr/bin/flex \
- --yacc=/usr/bin/yacc \
- --libs="-lncurses -lm"
-%else
-# PowerPC
-%{__perl} Configure.pl \
- --prefix=%{_usr} \
- --libdir=%{_libdir}
-%endif
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make
-make parrot_utils
-make installable
-make html
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT%{_usr}/share/doc/parrot # necessary for SuSE
-#rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot # for Solaris?
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-# Force permissions on shared libs so they get stripped.
-find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
- -exec chmod 755 {} \;
-
-# These files *probably* aren't needed.
-rm -rf $RPM_BUILD_ROOT%{_usr}/config \
- $RPM_BUILD_ROOT%{_includedir}/src \
- $RPM_BUILD_ROOT%{_usr}/src \
- $RPM_BUILD_ROOT%{_usr}/tools
-
-%check
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-# make test < /dev/null
-# %{?_with_fulltest:make fulltest < /dev/null}
-# make test || :
-# %{?_with_fulltest:make fulltest || :}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%exclude %{_bindir}/parrot_config
-%exclude %{_bindir}/parrot_debugger
-%exclude %{_bindir}/pbc_*
-%{_bindir}/*
-%{_libdir}/parrot
-%{_libdir}/libparrot.so.*
-
-%files docs
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO
-%doc docs examples
-
-%files devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/parrot
-%{_libdir}/libparrot.so
-%{_libdir}/libparrot.a
-%{_libdir}/pkgconfig/*
-
-%changelog
-* Tue Apr 21 2009 Francois Perrad <francois.perrad at gadz.org> 1.1.0
-- updated to 1.1.0
-
-* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
-- updated to 1.0.0
-
-* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
-- added make installable, perl6 is still not installable
-- added parrot_utils to devel
-- fixed Source0 url
-
-* Tue Jan 23 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 0.9.0
-- added make html
-- make reallyinstall => make install
-
-* Tue Jan 20 2009 chromatic <chromatic at wgz.org> 0.9.0
-- updated to 0.9.0
-
-* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
-- updated to 0.8.2
-
-* Tue Nov 18 2008 chromatic <chromatic at parrot.org> 0.8.1
-- updated to 0.8.1
-
-* Tue Oct 21 2008 particle <particle at parrot.org> 0.8.0
-- updated to 0.8.0
-
-* Tue Sep 16 2008 pmichaud <pmichaud at pobox.com> 0.7.1
-- updated to 0.7.1
-
-* Wed Sep 3 2008 chromatic <chromatic at wgz.org> 0.7.0
-- install parrot_config (not parrot-config)
-
-* Tue Jun 17 2008 Nuno Carvalho <smash at cpan.org> 0.6.3
-- updated to 0.6.3
-
-* Tue May 20 2008 chromatic <chromatic at wgz.org>> 0.6.2
-- updated to 0.6.2
-
-* Mon Apr 28 2008 chromatic <chromatic at wgz.org> 0.6.1
-- minor fixes; tested with Fedora 7, 8, and 9-beta
-
-* Tue Mar 18 2008 Bernhard Schmalhofer <Bernhard.Schmalhofer at gmx.de> 0.6.0
-- Update to 0.5.3.
-
-* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
-- Update to 0.5.3.
-
-* Tue Jan 15 2008 Bob Rogers <rogers at rgrjr.dyndns.org> 0.5.2
-- Update to 0.5.2.
-
-* Tue Dec 18 2007 Jonathan Worthington <jnthn at jnthn.net> 0.5.1
-- Update to 0.5.1.
-
-* Tue Nov 20 2007 chromatic <chromatic at wgz.org> 0.5.0
-- Update to 0.5.0.
-
-* Fri May 25 2007 David Fetter <david at fetter.org> 0.4.12-1
-- Update to 0.4.12.
-
-* Wed Apr 18 2007 Steven Pritchard <steve at kspei.com> 0.4.11-1
-- Update to 0.4.11.
-
-* Wed Mar 21 2007 Steven Pritchard <steve at kspei.com> 0.4.10-1
-- Update to 0.4.10.
-
-* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
-- Update to 0.4.9.
-- BR ncurses-devel.
-- For some reason now I need to force -lm too.
-- Remove some files/directories that shouldn't be included.
-
-* Wed Jan 17 2007 Steven Pritchard <steve at kspei.com> 0.4.8-1
-- Attempt update to 0.4.8.
-
-* Fri Jun 30 2006 Steven Pritchard <steve at kspei.com> 0.4.5-5
-- Override lib_dir and make various substitutions to try to fix multilib.
-- Remove rpath use from Makefile.
-- Fix a pod error in src/ops/experimental.ops.
-- Enable "make test" since t/doc/pod.t won't fail now.
-
-* Wed Jun 28 2006 Steven Pritchard <steve at kspei.com> 0.4.5-4
-- Force permissions on shared libraries so rpmbuild strips them.
-
-* Wed Jun 28 2006 Steven Pritchard <steve at kspei.com> 0.4.5-3
-- Fix URL, description, summary, etc.
-- Add post/postun.
-- Move parrot-config to the devel sub-package.
-- Force permissions on the doc directories.
-
-* Tue Jun 27 2006 Steven Pritchard <steve at kspei.com> 0.4.5-2
-- Add -lcurses to get readline detection to work.
-- BR libicu-devel.
-
-* Tue Jun 27 2006 Steven Pritchard <steve at kspei.com> 0.4.5-1
-- Initial packaging attempt.
-
-* Tue Mar 18 2003 Steve Fink <sfink at foxglove.localdomain> 0.0.11
-- first .spec file created
Modified: branches/ops_pct/ports/ubuntu/control.in
==============================================================================
--- branches/ops_pct/ports/ubuntu/control.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/ports/ubuntu/control.in Wed May 5 08:45:29 2010 (r46302)
@@ -4,7 +4,7 @@
Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
XSBC-Original-Maintainer: Debian Parrot Maintainers <pkg-parrot-devel at lists.alioth.debian.org>
Uploaders: Allison Randal <allison at parrot.org>, Nuno Carvalho <mestre.smash at gmail.com>, Patrick Michaud <pmichaud at pobox.com>
-Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libgdbm-dev, libreadline-dev
+Build-Depends: debhelper (>= 5.0.0), perl, perl-doc, libreadline-dev
Standards-Version: 3.8.1
Package: parrot
Copied: branches/ops_pct/runtime/parrot/library/Archive/Tar.pir (from r46301, trunk/runtime/parrot/library/Archive/Tar.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/Archive/Tar.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/Archive/Tar.pir)
@@ -0,0 +1,455 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+Archive/Tar
+
+=head2 DESCRIPTION
+
+Partial port of Archive::Tar (version 1.60)
+
+See L<http://search.cpan.org/~bingos/Archive-Tar/>
+
+=cut
+
+.include 'stat.pasm'
+
+=head3 Class Archive;Tar;File
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Tar';'File']
+
+.sub '' :init :load :anon
+ load_bytecode 'osutils.pbc' # splitpath
+ $P0 = newclass ['Archive';'Tar';'File']
+ $P0.'add_attribute'('name')
+ $P0.'add_attribute'('mode')
+ $P0.'add_attribute'('uid')
+ $P0.'add_attribute'('gid')
+ $P0.'add_attribute'('size')
+ $P0.'add_attribute'('mtime')
+ $P0.'add_attribute'('type')
+ $P0.'add_attribute'('linkname')
+ $P0.'add_attribute'('magic')
+ $P0.'add_attribute'('version')
+ $P0.'add_attribute'('uname')
+ $P0.'add_attribute'('gname')
+ $P0.'add_attribute'('devmajor')
+ $P0.'add_attribute'('devminor')
+ $P0.'add_attribute'('prefix')
+ $P0.'add_attribute'('data')
+ .globalconst int MODE = 0o666
+ .globalconst string FILE = '0'
+ .globalconst string MAGIC = 'ustar'
+ .globalconst string TAR_VERSION = '00'
+ .globalconst int BLOCK = 512
+.end
+
+=item data
+
+=cut
+
+.sub 'data' :method
+ $P0 = getattribute self, 'data'
+ .return ($P0)
+.end
+
+=item new_from_file
+
+=cut
+
+.sub 'new_from_file'
+ .param string path
+ .local string data
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ .local string data
+ data = $P0.'readall'(path)
+ pop_eh
+ .local int uid, gid, mtime
+ uid = stat path, .STAT_UID
+ gid = stat path, .STAT_GID
+ mtime = stat path, .STAT_MODIFYTIME
+ .tailcall new_from_data(path, data, uid :named('uid'), gid :named('gid'), mtime :named('mtime'))
+ _handler:
+ null $P0
+ .return ($P0)
+.end
+
+=item new_from_data
+
+=cut
+
+.sub 'new_from_data'
+ .param string path
+ .param string data
+ .param int mode :named('mode') :optional
+ .param int has_mode :opt_flag
+ .param int uid :named('uid') :optional
+ .param int has_uid :opt_flag
+ .param int gid :named('gid') :optional
+ .param int has_gid :opt_flag
+ .param int mtime :named('mtime') :optional
+ .param int has_mtime :opt_flag
+ .param string type :named('type') :optional
+ .param int has_type :opt_flag
+ .param string linkname :named('linkname') :optional
+ .param int has_linkname :opt_flag
+ .param string uname :named('uname') :optional
+ .param int has_uname :opt_flag
+ .param string gname :named('gname') :optional
+ .param int has_gname :opt_flag
+ .param int devmajor :named('devmajor') :optional
+ .param int has_devmajor :opt_flag
+ .param int devminor :named('devminor') :optional
+ .param int has_devminor :opt_flag
+ $P0 = new ['Archive';'Tar';'File']
+ .local string prefix, name
+ (prefix, name) = _prefix_and_file(path)
+ if has_mode goto L1
+ mode = MODE
+ L1:
+ if has_uid goto L2
+ uid = 0
+ L2:
+ if has_gid goto L3
+ gid = 0
+ L3:
+ if has_mtime goto L4
+ mtime = time
+ L4:
+ if has_type goto L5
+ type = FILE
+ L5:
+ if has_linkname goto L6
+ linkname = ''
+ L6:
+ if has_uname goto L7
+ uname = 'unknown'
+ L7:
+ if has_gname goto L8
+ gname = 'unknown'
+ L8:
+ if has_devmajor goto L9
+ devmajor = 0
+ L9:
+ if has_devminor goto L10
+ devminor = 0
+ L10:
+ $P1 = box data
+ setattribute $P0, 'data', $P1
+ $P1 = box name
+ setattribute $P0, 'name', $P1
+ $P1 = box mode
+ setattribute $P0, 'mode', $P1
+ $P1 = box uid
+ setattribute $P0, 'uid', $P1
+ $P1 = box gid
+ setattribute $P0, 'gid', $P1
+ $I0 = length data
+ $P1 = box $I0
+ setattribute $P0, 'size', $P1
+ $I0 = mtime
+ $P1 = box $I0
+ setattribute $P0, 'mtime', $P1
+ $P1 = box type
+ setattribute $P0, 'type', $P1
+ $P1 = box linkname
+ setattribute $P0, 'linkname', $P1
+ $P1 = box MAGIC
+ setattribute $P0, 'magic', $P1
+ $P1 = box TAR_VERSION
+ setattribute $P0, 'version', $P1
+ $P1 = box uname
+ setattribute $P0, 'uname', $P1
+ $P1 = box gname
+ setattribute $P0, 'gname', $P1
+ $P1 = box devminor
+ setattribute $P0, 'devminor', $P1
+ $P1 = box devmajor
+ setattribute $P0, 'devmajor', $P1
+ $P1 = box prefix
+ setattribute $P0, 'prefix', $P1
+ .return ($P0)
+.end
+
+.sub '_prefix_and_file' :anon
+ .param string path
+ .local string volume, directories, file
+ (volume, directories, file) = splitpath(path)
+ .return (directories, file)
+.end
+
+=item full_path
+
+=cut
+
+.sub 'full_path' :method
+ .local string prefix, name
+ $P0 = getattribute self, 'name'
+ name = $P0
+ $P0 = getattribute self, 'prefix'
+ prefix = $P0
+ unless prefix == '' goto L1
+ .return (name)
+ L1:
+ $S0 = catfile(prefix, name)
+ .return ($S0)
+.end
+
+=item rename
+
+=cut
+
+.sub 'rename' :method
+ .param string path
+ .local string prefix, name
+ (prefix, name) = _prefix_and_file(path)
+ $P0 = box name
+ setattribute self, 'name', $P0
+ $P0 = box prefix
+ setattribute self, 'prefix', $P0
+.end
+
+=item _format_tar_entry
+
+=cut
+
+.sub '_format_tar_entry' :method
+ $P0 = new 'ResizableStringArray'
+ $P1 = new 'FixedPMCArray'
+ set $P1, 1
+ .const string f1 = '%06o'
+ .const string f2 = '%11o'
+ $P2 = getattribute self, 'name'
+ $S0 = pad_string_with_null($P2, 100)
+ push $P0, $S0
+ $P2 = getattribute self, 'mode'
+ $P1[0] = $P2
+ $S0 = sprintf f1, $P1
+ $S0 = pad_string_with_null($S0, 8)
+ push $P0, $S0
+ $P2 = getattribute self, 'uid'
+ $P1[0] = $P2
+ $S0 = sprintf f1, $P1
+ $S0 = pad_string_with_null($S0, 8)
+ push $P0, $S0
+ $P2 = getattribute self, 'gid'
+ $P1[0] = $P2
+ $S0 = sprintf f1, $P1
+ $S0 = pad_string_with_null($S0, 8)
+ push $P0, $S0
+ $P2 = getattribute self, 'size'
+ $P1[0] = $P2
+ $S0 = sprintf f2, $P1
+ $S0 = pad_string_with_null($S0, 12)
+ push $P0, $S0
+ $P2 = getattribute self, 'mtime'
+ $P1[0] = $P2
+ $S0 = sprintf f2, $P1
+ $S0 = pad_string_with_null($S0, 12)
+ push $P0, $S0
+ push $P0, " " # checksum
+ $P2 = getattribute self, 'type'
+ $S0 = pad_string_with_null($P2, 1)
+ push $P0, $S0
+ $P2 = getattribute self, 'linkname'
+ $S0 = pad_string_with_null($P2, 100)
+ push $P0, $S0
+ $P2 = getattribute self, 'magic'
+ $S0 = pad_string_with_null($P2, 6)
+ push $P0, $S0
+ $P2 = getattribute self, 'version'
+ $S0 = pad_string_with_null($P2, 2)
+ push $P0, $S0
+ $P2 = getattribute self, 'uname'
+ $S0 = pad_string_with_null($P2, 32)
+ push $P0, $S0
+ $P2 = getattribute self, 'gname'
+ $S0 = pad_string_with_null($P2, 32)
+ push $P0, $S0
+ $P2 = getattribute self, 'devmajor'
+ $P1[0] = $P2
+ $S0 = sprintf f1, $P1
+ $S0 = pad_string_with_null($S0, 8)
+ push $P0, $S0
+ $P2 = getattribute self, 'devminor'
+ $P1[0] = $P2
+ $S0 = sprintf f1, $P1
+ $S0 = pad_string_with_null($S0, 8)
+ push $P0, $S0
+ $P2 = getattribute self, 'prefix'
+ $S0 = pad_string_with_null($P2, 155)
+ push $P0, $S0
+ $S0 = join '', $P0
+ $I0 = compute_checksum($S0)
+ $P1[0] = $I0
+ $S1 = sprintf "%6o\0\0", $P1
+ $S0 = replace $S0, 148, 8, $S1
+ $S0 = pad_string_with_null($S0, BLOCK)
+ .return ($S0)
+.end
+
+.sub 'pad_string_with_null' :anon
+ .param string str
+ .param int size
+ $S0 = substr str, 0, size
+ $I0 = length str
+ $I0 = size - $I0
+ unless $I0 > 0 goto L1
+ $S1 = repeat "\0", $I0
+ $S0 .= $S1
+ L1:
+ .return ($S0)
+.end
+
+.sub 'compute_checksum' :anon
+ .param string str
+ .local int chk
+ chk = 0
+ $P0 = split '', str
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $I0 = ord $S0
+ chk += $I0
+ goto L1
+ L2:
+ .return (chk)
+.end
+
+=back
+
+=head3 Class Archive;Tar
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Tar']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['Archive';'Tar']
+ $P0.'add_attribute'('data')
+.end
+
+.sub 'init' :vtable :method
+ $P0 = new 'ResizablePMCArray'
+ setattribute self, 'data', $P0
+.end
+
+=item add_files
+
+=cut
+
+.sub 'add_files' :method
+ .param pmc filenames :slurpy
+ .local pmc rv
+ rv = new 'ResizablePMCArray'
+ $P0 = iter filenames
+ L1:
+ unless $P0 goto L2
+ .local string filename
+ filename = shift $P0
+ $I0 = stat filename, .STAT_EXISTS
+ if $I0 goto L3
+ self.'_error'("No such file: '", filename, "'")
+ goto L1
+ L3:
+ .local pmc obj
+ $P1 = get_hll_global ['Archive';'Tar';'File'], 'new_from_file'
+ obj = $P1(filename)
+ unless null obj goto L4
+ self.'_error'("Unable to add file: '", filename, "'")
+ goto L1
+ L4:
+ push rv, obj
+ goto L1
+ L2:
+ $P0 = getattribute self, 'data'
+ $P1 = iter rv
+ L5:
+ unless $P1 goto L6
+ $P2 = shift $P1
+ push $P0, $P2
+ goto L5
+ L6:
+ .return (rv)
+.end
+
+=item add_data
+
+=cut
+
+.sub 'add_data' :method
+ .param string filename
+ .param string data
+ .param pmc opt :slurpy :named
+ .local pmc obj
+ $P0 = get_hll_global ['Archive';'Tar';'File'], 'new_from_data'
+ obj = $P0(filename, data, opt :flat :named)
+ $P0 = getattribute self, 'data'
+ push $P0, obj
+ .return (obj)
+.end
+
+=item write
+
+=cut
+
+.sub 'write' :method
+ .param pmc fh
+ $P0 = getattribute self, 'data'
+ $P1 = iter $P0
+ L1:
+ unless $P1 goto L2
+ .local pmc entry
+ entry = shift $P1
+ .local string header
+ header = entry.'_format_tar_entry'()
+ fh.'puts'(header)
+ $S0 = entry.'data'()
+ fh.'puts'($S0)
+ $I0 = length $S0
+ $I0 %= BLOCK
+ unless $I0 goto L1
+ .local string TAR_PAD
+ $I0 = BLOCK - $I0
+ TAR_PAD = repeat "\0", $I0
+ fh.'puts'(TAR_PAD)
+ goto L1
+ L2:
+ .local string TAR_END
+ TAR_END = repeat "\0", BLOCK
+ $S0 = repeat TAR_END, 2
+ fh.'puts'($S0)
+.end
+
+=item _error
+
+=cut
+
+.sub '_error' :method
+ .param pmc args :slurpy
+ $S0 = join '', args
+ printerr $S0
+ printerr "\n"
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/runtime/parrot/library/CGI/QueryHash.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/CGI/QueryHash.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/CGI/QueryHash.pir Wed May 5 08:45:29 2010 (r46302)
@@ -143,7 +143,7 @@
# TODO: This should be an array
v_array = new 'Hash'
v_array[0] = v
- substr k, -2, 2, ''
+ k = replace k, -2, 2, ''
query_hash[k] = v_array
branch next_item
v_isnt_array:
Modified: branches/ops_pct/runtime/parrot/library/Config/JSON.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Config/JSON.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Config/JSON.pir Wed May 5 08:45:29 2010 (r46302)
@@ -36,11 +36,10 @@
text = fh.'readall'()
# Convert the text to an object and return it.
- .local pmc json, code, config
- load_language 'data_json'
+ .local pmc json, code
+ load_language 'data_json'
json = compreg 'data_json'
code = json.'compile'(text)
-
.tailcall code()
.end
@@ -71,7 +70,7 @@
expanded = not compact
# render the object as a string.
- load_bytecode 'JSON.pir'
+ load_bytecode 'JSON.pbc'
.local string output
output = _json( config, expanded )
Modified: branches/ops_pct/runtime/parrot/library/Crow.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Crow.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Crow.pir Wed May 5 08:45:29 2010 (r46302)
@@ -124,7 +124,7 @@
$I0 = index template, symbol
if -1 == $I0 goto repl_done
$I1 = length symbol
- substr template, $I0, $I1, value
+ template = replace template, $I0, $I1, value
goto repl_loop
repl_done:
goto it_loop
Modified: branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Getopt/Obj.pir Wed May 5 08:45:29 2010 (r46302)
@@ -357,7 +357,7 @@
=item C<push_string(STRING format)>
-A vtable method, invoked by e.g. C<push getopts, "foo|f=s">. The format is as such.
+A vtable, invoked by e.g. C<push getopts, "foo|f=s">. The format is:
=over 4
Modified: branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/HTTP/Daemon.pir Wed May 5 08:45:29 2010 (r46302)
@@ -207,10 +207,9 @@
$P0 = doc_root
.end
-=item __get_bool()
+=item get_bool()
-Vtable method, called from the C<if> or C<unless> opcode. Returns
-true, if the daemon object is listening on a socket, that is if the
+Object is true if the daemon is listening on a socket, that is if the
initialization went ok.
=cut
Modified: branches/ops_pct/runtime/parrot/library/JSON.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/JSON.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/JSON.pir Wed May 5 08:45:29 2010 (r46302)
@@ -12,7 +12,7 @@
load_bytecode 'JSON.pir'
$S0 = _json( $P0 )
-To generate a PMC from a JSON string, see L<compilers/json/JSON.pir>.
+To generate a PMC from a JSON string, see L<compilers/data_json>.
=cut
Modified: branches/ops_pct/runtime/parrot/library/MIME/Base64.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/MIME/Base64.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/MIME/Base64.pir Wed May 5 08:45:29 2010 (r46302)
@@ -164,9 +164,9 @@
# padding with '='
if len_mod_3 == 0 goto END_2
- substr base64, -1, 1, ascii:"="
+ base64 = replace base64, -1, 1, ascii:"="
if len_mod_3 == 2 goto END_2
- substr base64, -2, 1, ascii:"="
+ base64 = replace base64, -2, 1, ascii:"="
END_2:
.return( base64 )
@@ -260,9 +260,9 @@
# cut padded '='
if len_mod_4 == 0 goto END_3
if len_mod_4 == 1 goto END_3
- chopn plain, 1
+ plain = chopn plain, 1
if len_mod_4 == 3 goto END_3
- chopn plain, 1
+ plain = chopn plain, 1
END_3:
.return( plain )
Modified: branches/ops_pct/runtime/parrot/library/OpenGL.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/OpenGL.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/OpenGL.pir Wed May 5 08:45:29 2010 (r46302)
@@ -309,8 +309,7 @@
# Rename all 'glutcb*' symbols to 'glut*'
rename_callbacks:
.local string renamed
- renamed = clone symbol
- substr renamed, 4, 2, ''
+ renamed = replace symbol, 4, 2, ''
export_renames[symbol] = renamed
goto symbol_loop
symbol_loop_end:
@@ -371,8 +370,7 @@
# Rename all 'glutcb*' symbols to 'glut*'
rename_callbacks:
.local string renamed
- renamed = clone symbol
- substr renamed, 4, 2, ''
+ renamed = replace symbol, 4, 2, ''
export_renames[symbol] = renamed
goto symbol_loop
symbol_loop_end:
Modified: branches/ops_pct/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/P6object.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/P6object.pir Wed May 5 08:45:29 2010 (r46302)
@@ -95,7 +95,7 @@
=cut
-.sub 'HOW' :method
+.sub 'HOW' :method :nsentry
$P0 = typeof self
$P1 = getprop 'metaclass', $P0
.return ($P1)
@@ -108,7 +108,7 @@
=cut
-.sub 'WHAT' :method
+.sub 'WHAT' :method :nsentry
.local pmc how, what
how = self.'HOW'()
.tailcall how.'WHAT'()
@@ -121,7 +121,7 @@
=cut
-.sub 'WHERE' :method
+.sub 'WHERE' :method :nsentry
$I0 = get_addr self
.return ($I0)
.end
@@ -133,7 +133,7 @@
=cut
-.sub 'WHO' :method
+.sub 'WHO' :method :nsentry
$P0 = typeof self
$P0 = getprop 'metaclass', $P0
$P0 = getattribute $P0, 'parrotclass'
@@ -170,7 +170,7 @@
.namespace ['P6metaclass']
-.sub 'WHAT' :method
+.sub 'WHAT' :method :nsentry
$P0 = getattribute self, 'protoobject'
.return ($P0)
.end
@@ -251,8 +251,7 @@
parent_proxy:
## iterate over parent's mro and methods, adding them to parrotclass' namespace
- .local pmc parrotclassns, mroiter, methods, methoditer
- parrotclassns = parrotclass.'get_namespace'()
+ .local pmc mroiter, methods, methoditer
$P0 = parentclass.'inspect'('all_parents')
mroiter = iter $P0
mro_loop:
@@ -270,18 +269,20 @@
$I0 = isa methodpmc, 'NCI'
if $I0 goto method_loop
# if there's no existing entry, add method directly
- $P0 = parrotclassns[methodname]
+ push_eh add_method_failed
+ $P0 = inspect parrotclass, 'methods'
+ $P0 = $P0[methodname]
if null $P0 goto add_method
# if existing entry isn't a MultiSub, skip it
$I0 = isa $P0, ['MultiSub']
unless $I0 goto method_loop
- push_eh err
- parrotclassns.'add_sub'(methodname, methodpmc)
- err:
+ parrotclass.'add_method'(methodname, methodpmc)
pop_eh
goto method_loop
add_method:
- parrotclassns[methodname] = methodpmc
+ parrotclass.'add_method'(methodname, methodpmc)
+ add_method_failed:
+ pop_eh
goto method_loop
mro_end:
@@ -727,7 +728,7 @@
=over 4
-=item get_string() (vtable method)
+=item get_string()
Returns the "shortname" of the protoobject's class and parens.
@@ -743,7 +744,7 @@
.return ($S0)
.end
-=item defined() (vtable method)
+=item defined()
Protoobjects are always treated as being undefined.
@@ -754,7 +755,7 @@
.end
-=item name() (vtable method)
+=item name()
Have protoobjects return their longname in response to a
C<typeof_s_p> opcode.
Copied: branches/ops_pct/runtime/parrot/library/ProfTest/Matcher.nqp (from r46301, trunk/runtime/parrot/library/ProfTest/Matcher.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/ProfTest/Matcher.nqp Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/ProfTest/Matcher.nqp)
@@ -0,0 +1,98 @@
+
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class ProfTest::Matcher is Hash;
+
+method new(*@wants) {
+ self<wants> := ();
+ for @wants -> $want {
+ self<wants>.push($want);
+ self.say("pushed a thing:"~$want.get_str);
+ }
+ self<wants>.push(
+ ProfTest::Want::Goal.new()
+ );
+ self;
+}
+
+method matches($profile) {
+
+ my @backtracks := ();
+ my $line_idx := 0;
+ my $want_idx := 0;
+ my $start_line := 0;
+ my $max_line := +$profile.profile_array;
+
+ my %curr_line;
+ my $curr_want;
+
+ while ($line_idx < $max_line) {
+
+ %curr_line := $profile.profile_array[$line_idx];
+ $curr_want := self<wants>[$want_idx];
+ self.say("current want: "~$curr_want.get_str);
+ my $line_desc;
+ if self<debugging> {
+ $line_desc := "current line: " ~ %curr_line<type> ~'(';
+ for %curr_line -> $k {
+ unless $k eq 'type' {
+ $line_desc := "$line_desc :$k(" ~ %curr_line{$k} ~") ";
+ }
+ }
+ $line_desc := $line_desc ~ ")";
+ }
+ self.say($line_desc);
+
+ if $curr_want.goal {
+ self.say("SUCCESS\n");
+ return 1;
+ }
+ elsif ($curr_want.accepts(%curr_line)) {
+
+ self.say("ACCEPTED");
+ $line_idx++;
+ # +0 is a workaround for crappy lvalue semantics
+ @backtracks.push( [$line_idx+0, $want_idx+0] );
+ self.say("saving line $line_idx, want $want_idx");
+ self.say("now have "~ ~@backtracks ~ " elements in the stack");
+ $want_idx++;
+ }
+ else {
+ self.say("REJECTED");
+ if !@backtracks && $start_line == $max_line {
+ self.say("FAILURE\n");
+ return 0;
+ }
+ elsif !@backtracks {
+ $start_line++;
+ $line_idx := $start_line+0;
+ self.say("FAILURE: restarting at $line_idx\n");
+ }
+ else {
+ my @a := @backtracks.pop;
+ $line_idx := @a[0];
+ $want_idx := @a[1];
+ self.say("backtracking to line $line_idx, want $want_idx");
+ self.say("now have "~ ~@backtracks ~ " elements in the stack");
+ }
+ }
+ self.say('');
+ }
+}
+
+method say($str) {
+ if self<debugging> {
+ pir::say($str);
+ }
+}
+
+method debugging($i) {
+ self<debugging> := $i+0;
+}
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl
Copied: branches/ops_pct/runtime/parrot/library/ProfTest/NQPProfile.nqp (from r46301, trunk/runtime/parrot/library/ProfTest/NQPProfile.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/ProfTest/NQPProfile.nqp Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/ProfTest/NQPProfile.nqp)
@@ -0,0 +1,17 @@
+
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class ProfTest::NQPProfile is ProfTest::PIRProfile;
+
+method new($nqp_code, $canonical? = 1) {
+ my $nqp_compiler := pir::compreg__ps("NQP-rx");
+ my $pir_code := $nqp_compiler.compile($nqp_code, :target('pir'));
+ ProfTest::PIRProfile.new($pir_code, $canonical);
+}
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl
Copied: branches/ops_pct/runtime/parrot/library/ProfTest/PIRProfile.nqp (from r46301, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/ProfTest/PIRProfile.nqp Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp)
@@ -0,0 +1,113 @@
+
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class ProfTest::PIRProfile is Hash;
+
+method new($pir_code, $canonical? = 1) {
+ self<canonical> := $canonical;
+ self<pir_code> := $pir_code;
+ self.build_pir_profile;
+ self.build_profile_array;
+ self;
+}
+
+method profile_array() {
+ self<profile_array>;
+}
+
+method build_profile_array() {
+ my %config := self.get_config();
+ my $newline := %config<win32> ?? "\r\n" !! "\n";
+ my @pprof_lines := pir::split($newline, self<profile>);
+ self<profile_array> := ();
+
+ for @pprof_lines -> $line {
+ my $line_match := self.make_line_hash($line);
+ #pir::say($line);
+ #_dumper($line_match);
+ self<profile_array>.push($line_match);
+ }
+}
+
+method make_line_hash($line) {
+
+ my %line_hash := {};
+
+ my $colon_idx := pir::index($line, ":");
+ #if the line starts with "VERSION, CLI or END_OF_RUNLOOP,
+ if ($colon_idx >= 3) {
+ my $type := pir::substr($line, 0, $colon_idx);
+ my $data := pir::substr($line, $colon_idx+1);
+ %line_hash<type> := $type;
+ %line_hash<data> := $data;
+ }
+ else {
+ my $type := pir::substr($line, 0, $colon_idx);
+ %line_hash<type> := $type;
+ $line := pir::substr($line, $colon_idx+1);
+ while ($line) {
+ $line := pir::substr($line, 3);
+ my $colon_idx := pir::index($line, ":");
+ my $split_idx := pir::index($line, "}x}");
+ my $name := pir::substr($line, 0, $colon_idx);
+ my $value := pir::substr($line, $colon_idx+1, $split_idx-$colon_idx-1);
+ %line_hash{ $name } := $value;
+ $line := pir::substr($line, $split_idx+3);
+ }
+ }
+ %line_hash;
+}
+
+
+method build_pir_profile() {
+
+ my %config := self.get_config();
+ #XXX(cotto) use a random filename (requires randomness from pir)
+ my $tmp_pir := %config<tempdir> ~ %config<slash> ~ 'test.pir';
+ my $tmp_pprof := %config<tempdir> ~ %config<slash> ~ 'test.pprof';
+
+ my $fh := pir::new__p_sc('FileHandle');
+ $fh.open($tmp_pir, "w");
+ $fh.puts(self<pir_code>);
+ $fh.close();
+
+ my $parrot_exe := %config<prefix> ~ %config<slash> ~ %config<test_prog>;
+ my $hash_seed_opt := '';
+
+ my %env := pir::new__p_sc('Env');
+ %env{'PARROT_PROFILING_FILENAME'} := $tmp_pprof;
+ if self<canonical> {
+ %env{'PARROT_PROFILING_CANONICAL_OUTPUT'} := 1;
+ $hash_seed_opt := '--hash-seed=1234';
+ }
+
+ my $cli := "$parrot_exe $hash_seed_opt --runcore profiling $tmp_pir";
+
+ my $pipe := pir::new__p_sc('FileHandle');
+ $pipe.open($cli, "rp");
+ $pipe.readall();
+ self<exit_status> := $pipe.exit_status();
+
+ my $pprof_fh := pir::new__p_sc('FileHandle');
+ self<profile> := $pprof_fh.readall($tmp_pprof);
+
+ pir::loadlib__ps('os');
+ pir::new__p_sc('OS').rm($tmp_pir);
+ pir::new__p_sc('OS').rm($tmp_pprof);
+}
+
+method get_config() {
+ return Q:PIR {
+ .include 'iglobals.pasm'
+ .local pmc i
+ i = getinterp
+ %r = i[.IGLOBALS_CONFIG_HASH]
+ };
+}
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl
Copied: branches/ops_pct/runtime/parrot/library/ProfTest/Want.nqp (from r46301, trunk/runtime/parrot/library/ProfTest/Want.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/ProfTest/Want.nqp Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/ProfTest/Want.nqp)
@@ -0,0 +1,185 @@
+
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class ProfTest::Want is Hash;
+
+method new() { die('...'); }
+
+method accepts() { 1; }
+
+method goal() { 0; }
+
+
+class ProfTest::Want::Goal;
+
+method new() { self; }
+
+method goal() { 1; }
+
+method get_str() { 'Goal' };
+
+
+
+class ProfTest::Want::Any is ProfTest::Want;
+
+method new(@except?) {
+ self<except> := @except;
+ self;
+}
+
+method accepts(%prof_line) {
+ for self<except> -> $except_type {
+ if $except_type eq %prof_line<type>{
+ return 0;
+ }
+ }
+ return 1;
+}
+
+method get_str() {
+ my $str := 'Any(';
+ if self<except> {
+ $str := $str ~ 'except(' ~ join(',', self<except>) ~ '),';
+ }
+ $str := $str ~ ')';
+ $str;
+}
+
+
+
+class ProfTest::Want::Version is ProfTest::Want;
+
+method new($version?) {
+ self<version> := $version;
+ self;
+}
+
+method accepts(%prof_line) {
+ if %prof_line<type> eq 'VERSION' {
+ return 1;
+ }
+}
+
+method get_str() {
+ my $str := 'Version(';
+ if self<version> {
+ $str := $str ~ 'version(' ~ self<version> ~ ')';
+ }
+ $str := $str ~ ')';
+ $str;
+}
+
+
+
+class ProfTest::Want::CLI is ProfTest::Want;
+
+method new() { self }
+
+method accepts(%prof_line) {
+ if %prof_line<type> eq 'CLI' {
+ return 1;
+ }
+}
+
+method get_str() { "CLI()" }
+
+
+
+class ProfTest::Want::EndOfRunloop is ProfTest::Want;
+
+method new() { self; }
+
+method accepts(%prof_line) {
+ if %prof_line<type> eq 'END_OF_RUNLOOP' {
+ return 1;
+ }
+}
+
+method get_str() { 'EndOfRunloop()' }
+
+
+
+class ProfTest::Want::Op is ProfTest::Want;
+
+method new($name, $line?) {
+ self<name> := $name;
+ if $line {
+ self<line> := $line;
+ }
+ self;
+}
+
+method accepts(%prof_line) {
+ if %prof_line<type> eq 'OP' {
+ if self<name> ne %prof_line<op> {
+ return 0;
+ }
+ if self<line> && self<line> != %prof_line<line> {
+ return 0;
+ }
+ return 1;
+ }
+ return 0;
+}
+
+method get_str() {
+ my $str := 'Op(' ~ self<name>;
+ if self<line> {
+ $str := $str ~ ', :line(' ~ self<line> ~ ')';
+ }
+ $str := $str ~ ')';
+ $str;
+}
+
+
+
+class ProfTest::Want::CS is ProfTest::Want;
+
+method new(:$ns?, :$slurp_until?) {
+ self<ns> := $ns;
+ if $slurp_until {
+ self<slurp_until> := $slurp_until;
+ }
+ self<found_cs> := 0;
+ self;
+}
+
+method accepts(%prof_line) {
+ if self<found_cs> && self<slurp_until> {
+ if pir::downcase__SS(%prof_line<type>) ne self<slurp_until> {
+ return 1;
+ }
+ return 0;
+ }
+ elsif %prof_line<type> eq 'CS' {
+ if !self<ns> {
+ self<found_cs> := 1;
+ return 1;
+ }
+ if %prof_line<ns> eq self<ns> {
+ self<found_cs> := 1;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+method get_str() {
+ my $str := 'CS(';
+ if self<ns> {
+ $str := $str ~ ':ns(' ~ self<ns> ~ ')';
+ }
+ if self<slurp_until> {
+ $str := $str ~ ', :slurp_until(' ~ self<slurp_until> ~ ')';
+ }
+ $str := $str ~ ')';
+ $str;
+}
+
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl
Deleted: branches/ops_pct/runtime/parrot/library/SQLite3.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/SQLite3.pir Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,135 +0,0 @@
-# Copyright (C) 2008-2009, Parrot Foundation.
-# $Id$
-
-.namespace ['SQLite3']
-
-.const int SQLITE_OK = 0 # Successful result
-# beginning-of-error-codes
-.const int SQLITE_ERROR = 1 # SQL error or missing database
-.const int SQLITE_INTERNAL = 2 # Internal logic error in SQLite
-.const int SQLITE_PERM = 3 # Access permission denied
-.const int SQLITE_ABORT = 4 # Callback routine requested an abort
-.const int SQLITE_BUSY = 5 # The database file is locked
-.const int SQLITE_LOCKED = 6 # A table in the database is locked
-.const int SQLITE_NOMEM = 7 # A malloc() failed
-.const int SQLITE_READONLY = 8 # Attempt to write a readonly database
-.const int SQLITE_INTERRUPT = 9 # Operation terminated by sqlite3_interrupt()
-.const int SQLITE_IOERR = 10 # Some kind of disk I/O error occurred
-.const int SQLITE_CORRUPT = 11 # The database disk image is malformed
-.const int SQLITE_NOTFOUND = 12 # NOT USED. Table or record not found
-.const int SQLITE_FULL = 13 # Insertion failed because database is full
-.const int SQLITE_CANTOPEN = 14 # Unable to open the database file
-.const int SQLITE_PROTOCOL = 15 # NOT USED. Database lock protocol error
-.const int SQLITE_EMPTY = 16 # Database is empty
-.const int SQLITE_SCHEMA = 17 # The database schema changed
-.const int SQLITE_TOOBIG = 18 # String or BLOB exceeds size limit
-.const int SQLITE_CONSTRAINT = 19 # Abort due to constraint violation
-.const int SQLITE_MISMATCH = 20 # Data type mismatch
-.const int SQLITE_MISUSE = 21 # Library used incorrectly
-.const int SQLITE_NOLFS = 22 # Uses OS features not supported on host
-.const int SQLITE_AUTH = 23 # Authorization denied
-.const int SQLITE_FORMAT = 24 # Auxiliary database format error
-.const int SQLITE_RANGE = 25 # 2nd parameter to sqlite3_bind out of range
-.const int SQLITE_NOTADB = 26 # File opened that is not a database file
-.const int SQLITE_ROW = 100 # sqlite3_step() has another row ready
-.const int SQLITE_DONE = 101 # sqlite3_step() has finished executing
-
-.sub '_sqlite_init' :load
- .local pmc libname
- .local pmc function
- .local pmc sqlite_funcs
-
- libname = loadlib 'libsqlite3'
- set_global '_sqlite3', libname
-
- sqlite_funcs = new 'ResizableStringArray'
- push sqlite_funcs, 'step'
- push sqlite_funcs, 'ip'
- push sqlite_funcs, 'finalize'
- push sqlite_funcs, 'ip'
- push sqlite_funcs, 'close'
- push sqlite_funcs, 'ip'
- push sqlite_funcs, 'errmsg'
- push sqlite_funcs, 'tp'
- push sqlite_funcs, 'errcode'
- push sqlite_funcs, 'ip'
- push sqlite_funcs, 'bind_int'
- push sqlite_funcs, 'ipii'
- push sqlite_funcs, 'bind_double'
- push sqlite_funcs, 'ipid'
- push sqlite_funcs, 'bind_text'
- push sqlite_funcs, 'ipitii'
- push sqlite_funcs, 'column_name'
- push sqlite_funcs, 'tpi'
- push sqlite_funcs, 'column_count'
- push sqlite_funcs, 'ip'
- push sqlite_funcs, 'column_type'
- push sqlite_funcs, 'ipi'
- push sqlite_funcs, 'column_int'
- push sqlite_funcs, 'ipi'
- push sqlite_funcs, 'column_double'
- push sqlite_funcs, 'lpi'
- push sqlite_funcs, 'column_text'
- push sqlite_funcs, 'tpi'
-
- function = dlfunc libname, 'sqlite3_open', 'itV'
- set_global 'open_raw', function
-
- function = dlfunc libname, 'sqlite3_prepare_v2', 'iptiVp'
- set_global 'prepare_raw', function
-
- .local pmc list_iter
- list_iter = iter sqlite_funcs
- .local string func_name, signature
- .local pmc function
-
- list_loop:
- unless list_iter goto done
- func_name = shift list_iter
- signature = shift list_iter
- $S0 = concat 'sqlite3_', func_name
- function = dlfunc libname, $S0, signature
- set_global func_name, function
- goto list_loop
-
- done:
-
-.end
-
-.sub 'open'
- .param string connectstr
- .local pmc dbhandle
- .local pmc open_raw
- .local int rc
-
- open_raw = get_global 'open_raw'
- dbhandle = new 'Pointer'
- rc = open_raw(connectstr, dbhandle)
-
- .return(dbhandle)
-.end
-
-.sub 'prepare'
- .param pmc dbhandle
- .param string psstr
- .local int psstrlen
- .local pmc pshandle
- .local pmc dummy
- .local pmc prepare_raw
- .local int rc
-
- prepare_raw = get_global 'prepare_raw'
-
- pshandle = new 'Pointer'
- dummy = new 'Pointer'
- psstrlen = length psstr
- rc = prepare_raw(dbhandle, psstr, psstrlen, pshandle, dummy)
-
- .return(pshandle)
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/runtime/parrot/library/Stream/Base.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Stream/Base.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Stream/Base.pir Wed May 5 08:45:29 2010 (r46302)
@@ -65,7 +65,7 @@
=cut
-.sub close :method
+.sub close :method :nsentry
.local pmc temp
# reset source
Modified: branches/ops_pct/runtime/parrot/library/String/Utils.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/String/Utils.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/String/Utils.pir Wed May 5 08:45:29 2010 (r46302)
@@ -53,7 +53,7 @@
$I0 = strl - sepl
$I1 = index res, sep, $I0
unless $I1 == $I0 goto return
- chopn res, sepl
+ res = chopn res, sepl
goto chomp
return:
Copied: branches/ops_pct/runtime/parrot/library/TAP/Formatter.pir (from r46301, trunk/runtime/parrot/library/TAP/Formatter.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/TAP/Formatter.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/TAP/Formatter.pir)
@@ -0,0 +1,851 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+TAP/Formatter
+
+=head2 DESCRIPTION
+
+Simplified port of TAP::Harness (version 3.21)
+
+See L<http://search.cpan.org/~andya/Test-Harness/>
+
+=head3 Class TAP;Formatter;Base
+
+Base class for harness output delegates
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Formatter';'Base']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Formatter';'Base']
+ $P0.'add_attribute'('verbosity')
+ $P0.'add_attribute'('normalize')
+ $P0.'add_attribute'('failures')
+ $P0.'add_attribute'('comments')
+ $P0.'add_attribute'('directives')
+ $P0.'add_attribute'('_longest')
+ $P0.'add_attribute'('_printed_summary_header')
+.end
+
+.sub 'init' :vtable :method
+ $P0 = box 0
+ setattribute self, 'verbosity', $P0
+.end
+
+=item process_args
+
+=cut
+
+.sub 'process_args' :method
+ .param pmc opts
+ $I0 = exists opts['verbose']
+ unless $I0 goto L1
+ $P0 = box 1
+ setattribute self, 'verbosity', $P0
+ L1:
+ $I0 = exists opts['quiet']
+ unless $I0 goto L2
+ $P0 = box -1
+ setattribute self, 'verbosity', $P0
+ L2:
+ $I0 = exists opts['QUIET']
+ unless $I0 goto L3
+ $P0 = box -2
+ setattribute self, 'verbosity', $P0
+ L3:
+ $I0 = exists opts['normalize']
+ unless $I0 goto L4
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'normalize', $P0
+ L4:
+ $I0 = exists opts['failures']
+ unless $I0 goto L5
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'failures', $P0
+ L5:
+ $I0 = exists opts['comments']
+ unless $I0 goto L6
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'comments', $P0
+ L6:
+ $I0 = exists opts['directives']
+ unless $I0 goto L7
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'directives', $P0
+ L7:
+.end
+
+=item verbose
+
+=cut
+
+.sub 'verbose' :method
+ $P0 = getattribute self, 'verbosity'
+ $I0 = $P0
+ $I0 = $I0 >= 1
+ .return ($I0)
+.end
+
+=item quiet
+
+=cut
+
+.sub 'quiet' :method
+ $P0 = getattribute self, 'verbosity'
+ $I0 = $P0
+ $I0 = $I0 <= -1
+ .return ($I0)
+.end
+
+=item really_quiet
+
+=cut
+
+.sub 'really_quiet' :method
+ $P0 = getattribute self, 'verbosity'
+ $I0 = $P0
+ $I0 = $I0 <= -2
+ .return ($I0)
+.end
+
+=item silent
+
+=cut
+
+.sub 'silent' :method
+ $P0 = getattribute self, 'verbosity'
+ $I0 = $P0
+ $I0 = $I0 <= -3
+ .return ($I0)
+.end
+
+=item prepare
+
+=cut
+
+.sub 'prepare' :method
+ .param pmc tests
+ .local int longest
+ longest = 0
+ $P0 = iter tests
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $I0 = length $S0
+ unless $I0 > longest goto L1
+ longest = $I0
+ goto L1
+ L2:
+ $P0 = box longest
+ setattribute self, '_longest', $P0
+.end
+
+=item _format_name
+
+=cut
+
+.sub '_format_name' :method
+ .param string name
+ $P0 = getattribute self, '_longest'
+ $I0 = $P0
+ $I0 += 2
+ $I1 = length name
+ $I0 -= $I1
+ $S0 = repeat '.', $I0
+ $S0 = ' ' . $S0
+ $S0 .= ' '
+ $S1 = name . $S0
+ .return ($S1)
+.end
+
+.sub 'open_test' :method
+ die "Unimplemented."
+.end
+
+=item summary
+
+=cut
+
+.sub 'summary' :method
+ .param pmc aggregate
+ $I0 = self.'silent'()
+ if $I0 goto L1
+ .local pmc tests
+ tests = aggregate.'descriptions'()
+ .local string runtime
+ runtime = aggregate.'elapsed_timestr'()
+ .local int total, passed
+ total = aggregate.'total'()
+ passed = aggregate.'passed'()
+
+ $I0 = aggregate.'all_passed'()
+ unless $I0 goto L2
+ self.'_output_success'("All tests successful.\n")
+ L2:
+
+ if total != passed goto L3
+ $I0 = aggregate.'has_problems'()
+ unless $I0 goto L4
+ L3:
+ self.'_output'("\nTest Summary Report")
+ self.'_output'("\n-------------------\n")
+ $P0 = iter tests
+ L5:
+ unless $P0 goto L4
+ .local string test
+ test = shift $P0
+ $P1 = box 0
+ setattribute self, '_printed_summary_header', $P1
+ .local pmc parser
+ parser = aggregate.'parsers'(test)
+ $P2 = parser.'failed'()
+ self.'_output_summary_failure'($P2, ' Failed test: ', ' Failed tests: ', test, parser)
+ $P2 = parser.'todo_passed'()
+ self.'_output_summary_failure'($P2, " TODO passed: ", " TODO passed: ", test, parser)
+
+ .local int _exit
+ _exit = parser.'exit'()
+ unless _exit goto L6
+ self.'_summary_test_header'(test, parser)
+ $S1 = _exit
+ self.'_failure_output'(" Non-zero exit status: ", $S1, "\n")
+ L6:
+
+ .local pmc errors
+ errors = parser.'parse_errors'()
+ $I0 = elements errors
+ unless $I0 goto L5
+ self.'_summary_test_header'(test, parser)
+ $P2 = iter errors
+ $S1 = shift $P2
+ self.'_failure_output'(" Parse errors: ", $S1, "\n")
+ L8:
+ unless $P2 goto L5
+ $S1 = repeat ' ', 16
+ $S2 = shift $P2
+ self.'_failure_output'($S1, $S2, "\n")
+ goto L8
+
+ L4:
+ $I0 = elements tests
+ $S1 = $I0
+ $S2 = total
+ self.'_output'("Files=", $S1, ", Tests=", $S2, ", ", runtime, "\n")
+ $S1 = aggregate.'get_status'()
+ self.'_output'("Result: ", $S1, "\n")
+ L1:
+.end
+
+.sub '_output_summary_failure' :method
+ .param pmc r
+ .param string singular
+ .param string plural
+ .param string test
+ .param pmc parser
+ $I0 = elements r
+ unless $I0 goto L1
+ self.'_summary_test_header'(test, parser)
+ unless $I0 == 1 goto L2
+ self.'_output'(singular)
+ goto L3
+ L2:
+ self.'_output'(plural)
+ L3:
+ .local pmc results
+ results = self.'_balanced_range'(40, r)
+ $S1 = shift results
+ self.'_output'($S1, "\n")
+ L4:
+ unless results goto L1
+ $S1 = repeat ' ', 16
+ $S2 = shift results
+ self.'_output'($S1, $S2, "\n")
+ goto L4
+ L1:
+.end
+
+.sub '_summary_test_header' :method
+ .param string test
+ .param pmc parser
+ .local pmc _printed_summary_header
+ _printed_summary_header = getattribute self, '_printed_summary_header'
+ if _printed_summary_header goto L1
+ .local string spaces, tests_run, failed
+ $P0 = getattribute self, '_longest'
+ $I0 = $P0
+ $I1 = length test
+ $I0 -= $I1
+ inc $I0
+ spaces = repeat ' ', $I0
+ tests_run = parser.'tests_run'()
+ $P0 = parser.'failed'()
+ $I0 = elements $P0
+ failed = $I0
+ self.'_output'(test, spaces, "(Tests: ", tests_run, " Failed: ", failed, ")\n")
+ set _printed_summary_header, 1
+ L1:
+.end
+
+=item _output
+
+=cut
+
+.sub '_output' :method
+ .param pmc args :slurpy
+ $S0 = join '', args
+ print $S0
+.end
+
+=item _failure_output
+
+=cut
+
+.sub '_failure_output' :method
+ .param pmc args :slurpy
+ self.'_output'(args :flat)
+.end
+
+.sub '_output_success' :method
+ .param pmc args :slurpy
+ self.'_output'(args :flat)
+.end
+
+.sub '_balanced_range' :method
+ .param int limit
+ .param pmc range
+ range = self.'_range'(range)
+ .local string line
+ line = ''
+ .local pmc lines
+ lines = new 'ResizableStringArray'
+ .local int curr
+ curr = 0
+ L1:
+ unless range goto L2
+ unless curr < limit goto L3
+ $S0 = shift range
+ $S0 .= ", "
+ line .= $S0
+ $I0 = length $S0
+ curr += $I0
+ goto L1
+ L3:
+ unless range goto L1
+ $I0 = length line
+ $I0 -= 2
+ line = substr line, 0, $I0
+ push lines, line
+ line = ''
+ curr = 0
+ goto L1
+ L2:
+ if line == '' goto L9
+ $I0 = length line
+ $I0 -= 2
+ line = substr line, 0, $I0
+ push lines, line
+ L9:
+ .return (lines)
+.end
+
+.sub '_range' :method
+ .param pmc numbers
+ .local int min, i, _num, next
+ .local pmc range
+ range = new 'ResizableStringArray'
+ push numbers, -1
+ min = -1
+ L1:
+ _num = shift numbers
+ if _num == -1 goto L2
+ next = shift numbers
+ unshift numbers, next
+ $I0 = _num + 1
+ unless next == $I0 goto L3
+ unless min == -1 goto L1
+ min = _num
+ goto L1
+ L3:
+ unless min != -1 goto L4
+ $S0 = min
+ $S0 .= '-'
+ $S1 = _num
+ $S0 .= $S1
+ push range, $S0
+ min = -1
+ goto L1
+ L4:
+ $S0 = _num
+ push range, $S0
+ goto L1
+ L2:
+ .return (range)
+.end
+
+=back
+
+=head3 Class TAP;Formatter;Session
+
+Abstract base class for harness output delegate
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Formatter';'Session']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Formatter';'Session']
+ $P0.'add_attribute'('name')
+ $P0.'add_attribute'('formatter')
+ $P0.'add_attribute'('parser')
+ $P0.'add_attribute'('show_count')
+.end
+
+.sub 'init' :vtable :nsentry
+ $P0 = getattribute self, 'show_count'
+ unless null $P0 goto L1
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'show_count', $P0
+ L1:
+.end
+
+=item header
+
+=cut
+
+.sub 'header' :method
+ # nothing
+.end
+
+=item result
+
+=cut
+
+.sub 'result' :method
+ .param pmc result
+ # nothing
+.end
+
+=item close_test
+
+=cut
+
+.sub 'close_test' :method
+ # nothing
+.end
+
+=item clear_for_close
+
+=cut
+
+.sub 'clear_for_close' :method
+ # nothing
+.end
+
+.sub '_should_show_count' :method
+ $P0 = getattribute self, 'formatter'
+ $I0 = $P0.'verbose'()
+ unless $I0 goto L1
+ .return (0)
+ L1:
+ # work in progress
+ .return (1)
+.end
+
+.sub '_format_for_output' :method
+ .param pmc result
+ $P0 = getattribute self, 'formatter'
+ $P0 = getattribute $P0, 'normalize'
+ if null $P0 goto L1
+ unless $P0 goto L1
+ $S0 = result
+ .return ($S0)
+ L1:
+ $P0 = getattribute result, 'raw'
+ .return ($P0)
+.end
+
+.sub '_output_test_failure' :method
+ .param pmc parser
+ .local pmc formatter
+ formatter = getattribute self, 'formatter'
+ $I0 = formatter.'really_quiet'()
+ if $I0 goto L1
+
+ .local pmc tests_run, tests_planned
+ tests_run = parser.'tests_run'()
+ tests_planned = parser.'tests_planned'()
+ .local int total
+ if null tests_planned goto L2
+ total = tests_planned
+ goto L3
+ L2:
+ total = tests_run
+ L3:
+
+ .local int passed, failed, exit
+ $P0 = parser.'passed'()
+ passed = elements $P0
+ $P0 = parser.'failed'()
+ failed = elements $P0
+ failed += total
+ $I0 = tests_run
+ failed -= $I0
+ exit = parser.'exit'()
+
+ unless exit goto L4
+ $S1 = exit
+ formatter.'_failure_output'("Dubious, test returned ", $S1, "\n")
+ L4:
+
+ unless failed == 0 goto L5
+ unless total goto L6
+ $S1 = total
+ formatter.'_failure_output'("All ", $S1, " subtests passed ")
+ goto L7
+ L6:
+ formatter.'_failure_output'("No subtests run ")
+ goto L7
+ L5:
+ $S1 = failed
+ $S2 = total
+ formatter.'_failure_output'("Failed ", $S1, "/", $S2, " subtests ")
+ if total goto L7
+ formatter.'_failure_output'("\nNo tests run!")
+ L7:
+
+ .local int skipped
+ $P0 = parser.'skipped'()
+ skipped = elements $P0
+ unless skipped goto L8
+ passed -= skipped
+ $S1 = skipped
+ $S2 = ''
+ if skipped == 1 goto L9
+ $S2 = 's'
+ L9:
+ $S3 = passed
+ formatter.'_output'("\n\t(less ", $S1, " skipped subtest", $S2, ": ", $S3, " okay)")
+ L8:
+
+ $P0 = parser.'todo_passed'()
+ failed = elements $P0
+ unless failed goto L10
+ $S1 = failed
+ $S2 = ''
+ if failed == 1 goto L11
+ $S2 = 's'
+ L11:
+ formatter.'_output'("\n\t(", $S1, " TODO test", $S2, " unexpectedly succeeded)")
+ L10:
+
+ formatter.'_output'("\n")
+ L1:
+.end
+
+=back
+
+=head3 Class TAP;Formatter;Console
+
+Harness output delegate for default console output
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Formatter';'Console']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Formatter';'Base'], ['TAP';'Formatter';'Console']
+.end
+
+=item open_test
+
+=cut
+
+.sub 'open_test' :method
+ .param string test
+ .param pmc parser
+ $P0 = new ['TAP';'Formatter';'Console';'Session']
+ $P1 = box test
+ setattribute $P0, 'name', $P1
+ setattribute $P0, 'formatter', self
+ setattribute $P0, 'parser', parser
+ $P1 = getattribute $P0, 'show_count'
+ unless $P1 goto L1
+ $I0 = $P0.'_should_show_count'()
+ set $P1, $I0
+ L1:
+ $P0.'header'()
+ .return ($P0)
+.end
+
+=item _set_colors
+
+=cut
+
+.sub '_set_colors' :method
+ .param pmc colors :slurpy
+.end
+
+=item _output_success
+
+=cut
+
+.sub '_output_success' :method
+ .param string msg
+ self.'_set_colors'('green')
+ self.'_output'(msg)
+ self.'_set_colors'('reset')
+.end
+
+=item _failure_output
+
+=cut
+
+.sub '_failure_output' :method
+ .param pmc args :slurpy
+ self.'_set_colors'('red')
+ $S0 = join '', args
+ self.'_output'($S0)
+ self.'_set_colors'('reset')
+.end
+
+=back
+
+=head3 Class TAP;Formatter;Console;Session
+
+Harness output delegate for default console output
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Formatter';'Console';'Session']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Formatter';'Session'], ['TAP';'Formatter';'Console';'Session']
+ $P0.'add_attribute'('plan')
+ $P0.'add_attribute'('newline_printed')
+ $P0.'add_attribute'('last_status_printed')
+.end
+
+.sub 'init' :vtable :method
+ $P0 = box ''
+ setattribute self, 'plan', $P0
+ $P0 = new 'Boolean'
+ set $P0, 0
+ setattribute self, 'newline_printed', $P0
+ $P0 = box 0
+ setattribute self, 'last_status_printed', $P0
+ $P0 = get_hll_global ['TAP';'Formatter';'Session'], 'init'
+ $P0(self)
+.end
+
+=item _get_output_result
+
+=cut
+
+.sub '_get_output_result' :method
+ .param pmc result
+ .local pmc formatter
+ formatter = getattribute self, 'formatter'
+ $S0 = self.'_format_for_output'(result)
+ formatter.'_output'($S0)
+.end
+
+=item header
+
+=cut
+
+.sub 'header' :method
+ .local pmc formatter
+ formatter = getattribute self, 'formatter'
+ $I0 = formatter.'really_quiet'()
+ if $I0 goto L1
+ .local pmc name
+ name = getattribute self, 'name'
+ .local string pretty
+ pretty = formatter.'_format_name'(name)
+ formatter.'_output'(pretty)
+ L1:
+.end
+
+=item result
+
+=cut
+
+.sub 'result' :method
+ .param pmc result
+ .local pmc formatter
+ formatter = getattribute self, 'formatter'
+ $I0 = isa result, ['TAP';'Parser';'Result';'Bailout']
+ unless $I0 goto L1
+ $S1 = result.'bailout'()
+ formatter.'_failure_output'("Bailout called. Further testing stopped: ", $S1, "\n")
+ L1:
+
+ $I0 = formatter.'really_quiet'()
+ if $I0 goto L2
+
+ .local pmc plan
+ plan = getattribute self, 'plan'
+ unless null plan goto L3
+ $S0 = '?'
+ .local pmc parser, tests_planned
+ parser = getattribute self, 'parser'
+ tests_planned = getattribute parser, 'tests_planned'
+ unless null tests_planned goto L4
+ $S0 = tests_planned
+ L4:
+ $S0 = '/' . $S0
+ plan = box $S0
+ setattribute self, 'plan', $P0
+ L3:
+
+ .local int is_test
+ is_test = isa result, ['TAP';'Parser';'Result';'Test']
+ unless is_test goto L5
+ .local pmc show_count
+ show_count = getattribute self, 'show_count'
+ unless show_count goto L5
+ .local int now
+ now = time
+ .local pmc last_status_printed
+ last_status_printed = getattribute self, 'last_status_printed'
+ $I0 = last_status_printed
+ if now == $I0 goto L5
+ .local pmc name
+ name = getattribute self, 'name'
+ .local string pretty
+ pretty = formatter.'_format_name'(name)
+ .local pmc number
+ number = getattribute result, 'test_num'
+ $S1 = number
+ $S2 = plan
+ formatter.'_output'("\r", pretty, $S1, $S2)
+ set last_status_printed, now
+ L5:
+
+ $I0 = formatter.'quiet'()
+ if $I0 goto L2
+ $I0 = formatter.'verbose'()
+ if $I0 goto L6
+ unless is_test goto L7
+ $P0 = getattribute formatter, 'failures'
+ if null $P0 goto L7
+ unless $P0 goto L7
+ $I0 = result.'is_ok'()
+ unless $I0 goto L6
+ L7:
+ $P0 = getattribute formatter, 'comments'
+ if null $P0 goto L8
+ $I0 = isa result, ['TAP';'Parser';'Result';'Comment']
+ if $I0 goto L6
+ L8:
+ $P0 = getattribute formatter, 'directives'
+ if null $P0 goto L2
+ $I0 = result.'has_directive'()
+ unless $I0 goto L2
+ L6:
+ $P0 = getattribute self, 'newline_printed'
+ if $P0 goto L9
+ formatter.'_output'("\n")
+ set $P0, 1
+ L9:
+ self.'_get_output_result'(result)
+ formatter.'_output'("\n")
+ L2:
+.end
+
+=item close_test
+
+=cut
+
+.sub 'close_test' :method
+ .local pmc formatter
+ formatter = getattribute self, 'formatter'
+ $I0 = formatter.'really_quiet'()
+ if $I0 goto L1
+
+ .local pmc show_count
+ show_count = getattribute self, 'show_count'
+ unless show_count goto L2
+ self.'clear_for_close'()
+ .local pmc name
+ name = getattribute self, 'name'
+ .local string pretty
+ pretty = formatter.'_format_name'(name)
+ formatter.'_output'("\r", pretty)
+ L2:
+
+ .local pmc parser, skip_all
+ parser = getattribute self, 'parser'
+ skip_all = getattribute parser, 'skip_all'
+ if null skip_all goto L3
+ unless skip_all goto L3
+ $S1 = skip_all
+ formatter.'_output'("skipped: ", $S1, "\n")
+ goto L1
+ L3:
+ $I0 = parser.'has_problems'()
+ unless $I0 goto L4
+ self.'_output_test_failure'(parser)
+ goto L1
+ L4:
+ .local string time_report
+ time_report = ''
+ # work in progress
+ formatter.'_output'("ok", time_report, "\n")
+ L1:
+.end
+
+=item clear_for_close
+
+=cut
+
+.sub 'clear_for_close' :method
+ .local pmc parser, formatter, name, plan, output
+ .local string tests_run, pretty
+ $I0 = 1
+ parser = getattribute self, 'parser'
+ tests_run = parser.'tests_run'()
+ $I1 = length tests_run
+ $I0 += $I1
+ formatter = getattribute self, 'formatter'
+ name = getattribute self, 'name'
+ pretty = formatter.'_format_name'(name)
+ $I1 = length pretty
+ $I0 += $I1
+ plan = getattribute self, 'plan'
+ $S0 = plan
+ $I1 = length $S0
+ $I0 += $I1
+ $S0 = repeat ' ', $I0
+ formatter.'_output'("\r", $S0)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/runtime/parrot/library/TAP/Harness.pir (from r46301, trunk/runtime/parrot/library/TAP/Harness.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/TAP/Harness.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/TAP/Harness.pir)
@@ -0,0 +1,406 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+TAP/Harness
+
+=head2 DESCRIPTION
+
+Simplified port of TAP::Harness (version 3.21)
+and TAP::Harness::Archive (version 0.14)
+
+See L<http://search.cpan.org/~andya/Test-Harness/>
+end L<http://search.cpan.org/~wonko/TAP-Harness-Archive/>.
+
+=head3 Class TAP;Harness
+
+This is a simple test harness which allows tests to be run and results
+automatically aggregated and output to STDOUT.
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Harness']
+
+.sub '' :init :load :anon
+ load_bytecode 'TAP/Parser.pbc'
+ load_bytecode 'TAP/Formatter.pbc'
+ $P0 = subclass ['TAP';'Base'], ['TAP';'Harness']
+ $P0.'add_attribute'('formatter')
+ $P0.'add_attribute'('exec')
+ $P0.'add_attribute'('ignore_exit')
+ $P0.'add_attribute'('merge')
+ $P0.'add_attribute'('opts')
+
+ $P0 = new 'Hash'
+ $P1 = split ' ', 'parser_args made_parser before_runtests after_runtests after_test'
+ L1:
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $P0[$S0] = 1
+ goto L1
+ L2:
+ set_global ['TAP';'Harness'], 'LEGAL_CALLBACK', $P0
+.end
+
+.sub 'init' :vtable :method
+ $P0 = get_global ['TAP';'Harness'], 'LEGAL_CALLBACK'
+ setattribute self, 'ok_callbacks', $P0
+.end
+
+=item process_args
+
+=cut
+
+.sub 'process_args' :method
+ .param pmc opts
+ setattribute self, 'opts', opts
+ $I0 = exists opts['exec']
+ unless $I0 goto L1
+ $S0 = opts['exec']
+ $P0 = box $S0
+ setattribute self, 'exec', $P0
+ L1:
+ $I0 = exists opts['ignore-exit']
+ unless $I0 goto L2
+ $S0 = opts['ignore-exit']
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'ignore_exit', $P0
+ L2:
+ $I0 = exists opts['merge']
+ unless $I0 goto L3
+ $S0 = opts['merge']
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute self, 'merge', $P0
+ L3:
+.end
+
+=item formatter
+
+=cut
+
+.sub 'formatter' :method
+ .param pmc formatter
+ setattribute self, 'formatter', formatter
+.end
+
+=item runtests
+
+=cut
+
+.sub 'runtests' :method :nsentry
+ .param pmc tests
+ $P0 = getattribute self, 'formatter'
+ unless null $P0 goto L1
+ $P0 = new ['TAP';'Formatter';'Console']
+ setattribute self, 'formatter', $P0
+ $P1 = getattribute self, 'opts'
+ $P0.'process_args'($P1)
+ L1:
+ .local pmc aggregate
+ aggregate = new ['TAP';'Parser';'Aggregator']
+ self.'_make_callback'('before_runtests', aggregate)
+ aggregate.'start'()
+ self.'aggregate_tests'(aggregate, tests)
+ aggregate.'stop'()
+ self.'summary'(aggregate)
+ self.'_make_callback'('after_runtests', aggregate)
+ .return (aggregate)
+.end
+
+.sub 'aggregate_tests' :method
+ .param pmc aggregate
+ .param pmc tests
+ $P0 = getattribute self, 'formatter'
+ $P0.'prepare'(tests)
+ .local string exec
+ exec = ''
+ $P0 = getattribute self, 'exec'
+ if null $P0 goto L1
+ exec = $P0
+ L1:
+ $P0 = iter tests
+ L2:
+ unless $P0 goto L3
+ $S0 = shift $P0
+ .local pmc parser, session
+ (parser, session) = self.'make_parser'($S0)
+ unless exec == '' goto L4
+ parser.'file'($S0)
+ goto L5
+ L4:
+ parser.'exec'(exec, $S0)
+ L5:
+ .local pmc coro
+ $P1 = get_hll_global ['TAP';'Parser'], 'next'
+ coro = newclosure $P1
+ L6:
+ .local pmc result
+ result = coro(parser)
+ if null result goto L7
+ session.'result'(result)
+ $I0 = isa result, ['TAP';'Parser';'Result';'Bailout']
+ unless $I0 goto L6
+ self.'_bailout'(result)
+ L7:
+ self.'finish_parser'(parser, session)
+ self.'_after_test'(aggregate, $S0, parser)
+ goto L2
+ L3:
+.end
+
+.sub '_after_test' :method
+ .param pmc aggregate
+ .param pmc desc
+ .param pmc parser
+ self.'_make_callback'('after_test', parser)
+ aggregate.'add'(desc, parser)
+.end
+
+.sub '_bailout' :method
+ .param pmc result
+ $S0 = ".\n"
+ $P0 = result.'bailout'()
+ if null $P0 goto L1
+ $S0 = $P0
+ L1:
+ $S0 = "FAILED--Further testing stopped" . $S0
+ die $S0
+.end
+
+.sub 'summary' :method
+ .param pmc aggregate
+ $P0 = getattribute self, 'formatter'
+ $P0.'summary'(aggregate)
+.end
+
+.sub 'make_parser' :method
+ .param string desc
+ .local pmc parser, session
+ parser = new ['TAP';'Parser']
+ $P0 = getattribute self, 'merge'
+ if null $P0 goto L1
+ parser.'merge'($P0)
+ L1:
+ $P0 = getattribute self, 'ignore_exit'
+ if null $P0 goto L2
+ parser.'ignore_exit'($P0)
+ L2:
+ self.'_open_spool'(parser, desc)
+ self.'_make_callback'('made_parser', parser)
+ $P0 = getattribute self, 'formatter'
+ session = $P0.'open_test'(desc, parser)
+ .return (parser, session)
+.end
+
+.sub 'finish_parser' :method
+ .param pmc parser
+ .param pmc session
+ session.'close_test'()
+ self.'_close_spool'(parser)
+ .return (parser)
+.end
+
+.sub '_open_spool' :method
+ .param pmc parser
+ .param string test
+ $P0 = new 'Env'
+ $I0 = exists $P0['PARROT_TEST_HARNESS_DUMP_TAP']
+ unless $I0 goto L1
+ .local string spool
+ $S0 = $P0['PARROT_TEST_HARNESS_DUMP_TAP']
+ spool = catfile($S0, test)
+ $S0 = dirname(spool)
+ mkpath($S0)
+ $P0 = new 'FileHandle'
+ $P0.'open'(spool, 'w')
+ parser.'spool'($P0)
+ L1:
+.end
+
+.sub '_close_spool' :method
+ .param pmc parser
+ $P0 = parser.'delete_spool'()
+ if null $P0 goto L1
+ close $P0
+ L1:
+.end
+
+=back
+
+=head3 Class TAP';Harness;Archive
+
+This module is a direct subclass of C<TAP;Harness> and behaves
+in exactly the same way except for one detail. In addition to
+outputting a running progress of the tests and an ending summary
+it can also capture all of the raw TAP from the individual test
+files or streams into an archive file (C<.tar.gz>).
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Harness';'Archive']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Harness'], ['TAP';'Harness';'Archive']
+ $P0.'add_attribute'('archive_file')
+ $P0.'add_attribute'('archive_extra_files')
+ $P0.'add_attribute'('archive_extra_props')
+.end
+
+=item archive
+
+=cut
+
+.sub 'archive' :method
+ .param pmc archive
+ setattribute self, 'archive_file', archive
+.end
+
+=item extra_files
+
+=cut
+
+.sub 'extra_files' :method
+ .param pmc extra_files
+ $I0 = does extra_files, 'array'
+ if $I0 goto L1
+ die "extra_files must be an array!"
+ L1:
+ setattribute self, 'archive_extra_files', extra_files
+.end
+
+=item extra_props
+
+=cut
+
+.sub 'extra_props' :method
+ .param pmc extra_props
+ $I0 = does extra_props, 'hash'
+ if $I0 goto L1
+ die "extra_props must be an hash!"
+ L1:
+ setattribute self, 'archive_extra_props', extra_props
+.end
+
+=item runtests
+
+=cut
+
+.sub 'runtests' :method
+ .param pmc files
+ load_bytecode 'Archive/Tar.pbc'
+ $P0 = getattribute self, 'archive_file'
+ unless null $P0 goto L1
+ die "You must provide the name of the archive to create!"
+ L1:
+ .local string archive_file, dir
+ archive_file = $P0
+ dir = tempdir()
+ .local pmc env
+ env = new 'Env'
+ env['PARROT_TEST_HARNESS_DUMP_TAP'] = dir
+ .local pmc aggregate
+ $P0 = get_hll_global ['TAP';'Harness'], 'runtests'
+ aggregate = $P0(self, files)
+ .local string current_dir, cmd
+ current_dir = cwd()
+ chdir(dir)
+ .local pmc archive
+ archive = new ['Archive';'Tar']
+ archive.'add_files'(files :flat)
+ chdir(current_dir)
+ rmtree(dir)
+ $P0 = getattribute self, 'archive_extra_files'
+ if null $P0 goto L2
+ archive.'add_files'($P0 :flat)
+ L2:
+ $S0 = self.'_mk_meta'(aggregate)
+ archive.'add_data'('meta.yml', $S0)
+ $P0 = loadlib 'gziphandle'
+ $P0 = new 'GzipHandle'
+ $P0.'open'(archive_file, 'wb')
+ archive.'write'($P0)
+ $P0.'close'()
+ .return (aggregate)
+.end
+
+.sub '_mk_meta' :method
+ .param pmc aggregate
+ $S0 = "---"
+ $S0 .= "\nfile_attributes:"
+ $P0 = aggregate.'descriptions'()
+ $P1 = iter $P0
+ L1:
+ unless $P1 goto L2
+ $S1 = shift $P1
+ .local pmc parser
+ parser = aggregate.'parsers'($S1)
+ $S0 .= "\n -"
+ $S0 .= "\n description: "
+ $S0 .= $S1
+ $N0 = parser.'start_time'()
+ $S0 .= "\n start_time: "
+ $S1 = $N0
+ $S0 .= $S1
+ $N0 = parser.'end_time'()
+ $S0 .= "\n stop_time: "
+ $S1 = $N0
+ $S0 .= $S1
+ goto L1
+ L2:
+ $S0 .= "\nfile_order:"
+ $P1 = iter $P0
+ L3:
+ unless $P1 goto L4
+ $S1 = shift $P1
+ $S0 .= "\n - "
+ $S0 .= $S1
+ goto L3
+ L4:
+ $I0 = aggregate.'start_time'()
+ $S0 .= "\nstart_time: "
+ $S1 = $I0
+ $S0 .= $S1
+ $I0 = aggregate.'end_time'()
+ $S0 .= "\nstop_time: "
+ $S1 = $I0
+ $S0 .= $S1
+ $P0 = getattribute self, 'archive_extra_props'
+ if null $P0 goto L5
+ $S0 .= "\nextra_properties:"
+ $P1 = iter $P0
+ L6:
+ unless $P1 goto L5
+ .local string key, value
+ key = shift $P1
+ value = $P0[key]
+ if value == '' goto L6
+ $S0 .= "\n "
+ $S0 .= key
+ $S0 .= ": "
+ $S0 .= value
+ goto L6
+ L5:
+ $S0 .= "\n"
+ .return ($S0)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/runtime/parrot/library/TAP/Parser.pir (from r46301, trunk/runtime/parrot/library/TAP/Parser.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/TAP/Parser.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/TAP/Parser.pir)
@@ -0,0 +1,1662 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+TAP/Parser
+
+=head2 DESCRIPTION
+
+Simplified port of TAP::Parser (version 3.21)
+
+See L<http://search.cpan.org/~andya/Test-Harness/>
+
+=head3 Class TAP;Parser;Result
+
+Base class for TAP::Parser output objects
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser';'Result']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Parser';'Result']
+ $P0.'add_attribute'('raw')
+ $P0.'add_attribute'('directive')
+ $P0.'add_attribute'('explanation')
+.end
+
+=item get_string
+
+=cut
+
+.sub 'get_string' :vtable :method
+ $P0 = getattribute self, 'raw'
+ $S0 = $P0
+ .return ($S0)
+.end
+
+=item type
+
+=cut
+
+.sub 'type' :method
+ $S0 = typeof self
+ $P0 = split ';', $S0
+ $S0 = pop $P0
+ $S0 = downcase $S0
+ .return ($S0)
+.end
+
+=item has_todo
+
+=cut
+
+.sub 'has_todo' :method
+ $P0 = getattribute self, 'directive'
+ unless null $P0 goto L1
+ .return (0)
+ L1:
+ $S0 = $P0
+ $I0 = $S0 == 'TODO'
+ .return ($I0)
+.end
+
+=item has_skip
+
+=cut
+
+.sub 'has_skip' :method
+ $P0 = getattribute self, 'directive'
+ unless null $P0 goto L1
+ .return (0)
+ L1:
+ $S0 = $P0
+ $I0 = $S0 == 'SKIP'
+ .return ($I0)
+.end
+
+=item has_directive
+
+=cut
+
+.sub 'has_directive' :method
+ $I0 = self.'has_todo'()
+ if $I0 goto L1
+ $I0 = self.'has_skip'()
+ L1:
+ .return ($I0)
+.end
+
+=back
+
+=head3 Class TAP;Parser;Result;Bailout
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Bailout']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Bailout']
+.end
+
+=item bailout
+
+=cut
+
+.sub 'bailout' :method
+ $P0 = getattribute self, 'explanation'
+ .return ($P0)
+.end
+
+=back
+
+=head3 Class TAP;Parser;Result;Comment
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Comment']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Comment']
+ $P0.'add_attribute'('comment')
+.end
+
+=head3 Class TAP;Parser;Result;Plan
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Plan']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Plan']
+ $P0.'add_attribute'('plan')
+ $P0.'add_attribute'('tests_planned')
+.end
+
+=head3 Class TAP;Parser;Result;Test
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Test']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Test']
+ $P0.'add_attribute'('ok')
+ $P0.'add_attribute'('test_num')
+ $P0.'add_attribute'('description')
+ $P0.'add_attribute'('unplanned')
+.end
+
+=item get_string
+
+=cut
+
+.sub 'get_string' :vtable :method
+ $P0 = getattribute self, 'ok'
+ $S0 = $P0
+ $S0 .= ' '
+ $P0 = getattribute self, 'test_num'
+ $S1 = $P0
+ $S0 .= $S1
+ $P0 = getattribute self, 'description'
+ if null $P0 goto L1
+ $S1 = $P0
+ if $S1 == '' goto L1
+ $S0 .= ' '
+ $S0 .= $S1
+ L1:
+ $P0 = getattribute self, 'directive'
+ if null $P0 goto L2
+ $S1 = $P0
+ if $S1 == '' goto L2
+ $S0 .= ' # '
+ $S0 .= $S1
+ $S0 .= ' '
+ $P0 = getattribute self, 'explanation'
+ if null $P0 goto L2
+ $S1 = $P0
+ $S0 .= $S1
+ L2:
+ .return ($S0)
+.end
+
+=item is_ok
+
+=cut
+
+.sub 'is_ok' :method
+ $P0 = getattribute self, 'unplanned'
+ if null $P0 goto L1
+ unless $P0 goto L1
+ .return (0)
+ L1:
+ $I0 = self.'has_todo'()
+ if $I0 goto L2
+ $I0 = self.'is_actual_ok'()
+ L2:
+ .return ($I0)
+.end
+
+=item is_actual_ok
+
+=cut
+
+.sub 'is_actual_ok' :method
+ $P0 = getattribute self, 'ok'
+ $S0 = $P0
+ $I0 = index $S0, 'not'
+ $I0 = $I0 != 0
+ .return ($I0)
+.end
+
+=item todo_passed
+
+=cut
+
+.sub 'todo_passed' :method
+ $I0 = self.'has_todo'()
+ unless $I0 goto L1
+ $I0 = self.'is_actual_ok'()
+ L1:
+ .return ($I0)
+.end
+
+=item is_unplanned
+
+=cut
+
+.sub 'is_unplanned' :method
+ $I0 = 0
+ $P0 = getattribute self, 'unplanned'
+ if null $P0 goto L1
+ $I0 = $P0
+ L1:
+ .return ($I0)
+.end
+
+=back
+
+=head3 Class TAP;Parser;Result;Unknown
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Unknown']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Unknown']
+.end
+
+=head3 Class TAP;Parser;Result;Version
+
+=cut
+
+.namespace ['TAP';'Parser';'Result';'Version']
+
+.sub '' :init :load :anon
+ $P0 = subclass ['TAP';'Parser';'Result'], ['TAP';'Parser';'Result';'Version']
+ $P0.'add_attribute'('version')
+.end
+
+=head3 Class TAP;Parser;Grammar
+
+C<TAP;Parser;Grammar> tokenizes lines and constructs C<TAP;Parser;Result>
+subclasses to represent the tokens.
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser';'Grammar']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Parser';'Grammar']
+.end
+
+.include 'cclass.pasm'
+
+.sub 'trim' :anon
+ .param string str
+ $I0 = length str
+ $I0 = find_not_cclass .CCLASS_WHITESPACE, str, 0, $I0
+ str = substr str, $I0
+ $I0 = length str
+ L1:
+ dec $I0
+ unless $I0 > 0 goto L2
+ $I1 = is_cclass .CCLASS_WHITESPACE, str, $I0
+ if $I1 != 0 goto L1
+ L2:
+ inc $I0
+ str = substr str, 0, $I0
+ .return (str)
+.end
+
+=item tokenize
+
+=cut
+
+.sub 'tokenize' :method
+ .param string line
+ .local pmc result
+ .local int pos, lastpos
+ .local string up, directive, explanation, ok
+ lastpos = length line
+
+ $I0 = index line, 'not ok'
+ unless $I0 == 0 goto L1
+ ok = 'not ok'
+ pos = 6
+ goto L2
+ L1:
+ $I0 = index line, 'ok'
+ unless $I0 == 0 goto L3
+ ok = 'ok'
+ pos = 2
+ L2:
+ .local string description, test_num
+ test_num = ''
+ description = ''
+ directive = ''
+ explanation = ''
+ if pos == lastpos goto L4
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, pos
+ unless $I0 goto L3
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, pos, lastpos
+ if pos == lastpos goto L4
+ $I0 = is_cclass .CCLASS_NUMERIC, line, pos
+ unless $I0 goto L5
+ $I2 = find_not_cclass .CCLASS_NUMERIC, line, pos, lastpos
+ if $I2 == lastpos goto L_5
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, $I2
+ unless $I0 goto L5
+ L_5:
+ $I1 = $I2 - pos
+ test_num = substr line, pos, $I1
+ if $I2 == lastpos goto L4
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, $I2, lastpos
+ L5:
+ $S0 = substr line, pos
+ description = trim($S0)
+ up = upcase description
+ lastpos = length description
+ pos = -1
+ L6:
+ inc pos
+ pos = index description, '#', pos
+ if pos < 0 goto L4
+ $I1 = pos - 1
+ $S0 = substr description, $I1, 1
+ inc pos
+ if $S0 == "\\" goto L6
+ if pos == lastpos goto L4
+ $I0 = is_cclass .CCLASS_WHITESPACE, description, pos
+ unless $I0 != 0 goto L7
+ pos = find_not_cclass .CCLASS_WHITESPACE, description, pos, lastpos
+ if pos == lastpos goto L4
+ L7:
+ $S0 = substr description, pos, 4
+ $I0 = index up, 'SKIP', pos
+ if $I0 == pos goto L8
+ $I0 = index up, 'TODO', pos
+ if $I0 == pos goto L8
+ goto L6
+ L8:
+ directive = substr up, pos, 4
+ $I1 = pos + 4
+ $S0 = substr description, $I1
+ explanation = trim($S0)
+ pos -= 2
+ $S0 = substr description, 0, pos
+ description = trim($S0)
+ L4:
+ result = new ['TAP';'Parser';'Result';'Test']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ $P1 = box ok
+ setattribute result, 'ok', $P1
+ unless test_num != '' goto L11
+ $I0 = test_num
+ $P1 = box test_num
+ setattribute result, 'test_num', $P1
+ L11:
+ unless description != '' goto L12
+ $P1 = box description
+ setattribute result, 'description', $P1
+ L12:
+ unless directive != '' goto L13
+ $P1 = box directive
+ setattribute result, 'directive', $P1
+ L13:
+ unless explanation != '' goto L14
+ $P1 = box explanation
+ setattribute result, 'explanation', $P1
+ L14:
+ .return (result)
+ L3:
+
+ $I0 = index line, '#'
+ unless $I0 == 0 goto L19
+ result = new ['TAP';'Parser';'Result';'Comment']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ $S0 = substr line, 1
+ $S0 = trim($S0)
+ $P1 = box $S0
+ setattribute result, 'comment', $P1
+ .return (result)
+ L19:
+
+ $I0 = index line, '1..'
+ unless $I0 == 0 goto L21
+ pos = 3
+ $I0 = is_cclass .CCLASS_NUMERIC, line, pos
+ unless $I0 goto L21
+ pos = find_not_cclass .CCLASS_NUMERIC, line, pos, lastpos
+ directive = ''
+ explanation = ''
+ .local string plan
+ plan = substr line, 0, pos
+ .local int tests_planned
+ $I1 = pos - 3
+ $S0 = substr line, 3, $I1
+ tests_planned = $S0
+ if pos == lastpos goto L22
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, pos
+ unless $I0 goto L23
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, pos, lastpos
+ if pos == lastpos goto L22
+ L23:
+ $S0 = substr line, pos, 1
+ unless $S0 == '#' goto L21
+ inc pos
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, pos
+ unless $I0 goto L24
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, pos, lastpos
+ L24:
+ up = upcase line
+ $I0 = index up, 'SKIP', pos
+ unless $I0 == pos goto L21
+ directive = 'SKIP'
+ pos += 4
+ $S0 = substr line, pos
+ explanation = trim($S0)
+ L22:
+ result = new ['TAP';'Parser';'Result';'Plan']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ $P1 = box plan
+ setattribute result, 'plan', $P1
+ $P1 = box tests_planned
+ setattribute result, 'tests_planned', $P1
+ unless tests_planned == 0 goto L25
+ directive = 'SKIP'
+ L25:
+ unless directive != '' goto L26
+ $P1 = box directive
+ setattribute result, 'directive', $P1
+ L26:
+ unless explanation != '' goto L27
+ $P1 = box explanation
+ setattribute result, 'explanation', $P1
+ L27:
+ .return (result)
+ L21:
+
+ $I0 = index line, 'Bail out!'
+ unless $I0 == 0 goto L31
+ result = new ['TAP';'Parser';'Result';'Bailout']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ $S0 = substr line, 9
+ $S0 = trim($S0)
+ $P1 = box $S0
+ setattribute result, 'explanation', $P1
+ .return (result)
+ L31:
+
+ $I0 = index line, 'TAP'
+ unless $I0 == 0 goto L41
+ pos = 3
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, pos
+ unless $I0 goto L41
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, pos, lastpos
+ $I0 = index line, 'version', pos
+ unless $I0 == pos goto L41
+ pos += 7
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, pos
+ unless $I0 goto L41
+ pos = find_not_cclass .CCLASS_WHITESPACE, line, pos, lastpos
+ $I0 = is_cclass .CCLASS_NUMERIC, line, pos
+ unless $I0 goto L41
+ $I2 = find_not_cclass .CCLASS_NUMERIC, line, pos, lastpos
+ $I1 = $I2 - pos
+ $S0 = substr line, pos, $I1
+ .local int version
+ version = $S0
+ if $I2 == lastpos goto L42
+ $I0 = is_cclass .CCLASS_WHITESPACE, line, $I2
+ unless $I0 goto L41
+ $I0 = find_not_cclass .CCLASS_WHITESPACE, line, $I2, lastpos
+ unless $I0 == lastpos goto L41
+ L42:
+ result = new ['TAP';'Parser';'Result';'Version']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ $P1 = box version
+ setattribute result, 'version', $P1
+ .return (result)
+ L41:
+
+ result = new ['TAP';'Parser';'Result';'Unknown']
+ $P1 = box line
+ setattribute result, 'raw', $P1
+ .return (result)
+.end
+
+=back
+
+=head3 Class TAP;Base
+
+Base class that provides common functionality to C<TAP;Parser>
+and C<TAP;Harness> ie. callback support.
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Base']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Base']
+ $P0.'add_attribute'('code_for')
+ $P0.'add_attribute'('ok_callbacks')
+.end
+
+=item callback
+
+=cut
+
+.sub 'callback' :method
+ .param string event
+ .param pmc callback
+ $P0 = getattribute self, 'ok_callbacks'
+ if null $P0 goto L1
+ $I0 = exists $P0[event]
+ if $I0 goto L1
+ $S0 = "Callback " . event
+ $S0 .= " is not supported."
+ die $S0
+ L1:
+ $P0 = getattribute self, 'code_for'
+ unless null $P0 goto L2
+ $P0 = new 'Hash'
+ setattribute self, 'code_for', $P0
+ L2:
+ $P0[event] = callback
+.end
+
+=item _has_callback
+
+=cut
+
+.sub '_has_callback' :method
+ $P0 = getattribute self, 'code_for'
+ if null $P0 goto L1
+ .return (1)
+ L1:
+ .return (0)
+.end
+
+=item _callback_for
+
+=cut
+
+.sub '_callback_for' :method
+ .param string event
+ null $P1
+ $P0 = getattribute self, 'code_for'
+ if null $P0 goto L1
+ $I0 = exists $P0[event]
+ unless $I0 goto L1
+ $P1 = $P0[event]
+ L1:
+ .return ($P1)
+.end
+
+=item _make_callback
+
+=cut
+
+.sub '_make_callback' :method
+ .param string event
+ .param pmc args :slurpy
+ $P0 = getattribute self, 'code_for'
+ if null $P0 goto L1
+ $I0 = exists $P0[event]
+ unless $I0 goto L1
+ $P0 = $P0[event]
+ $P0 = $P0(args :flat)
+ .return ($P0)
+ L1:
+ .return ()
+.end
+
+=back
+
+=head3 Class TAP;Parser
+
+C<TAP;Parser> is designed to produce a proper parse of TAP output.
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser']
+
+.sub '' :init :load :anon
+ load_bytecode 'osutils.pbc'
+
+ $P0 = subclass ['TAP';'Base'], ['TAP';'Parser']
+ $P0.'add_attribute'('stream')
+ $P0.'add_attribute'('skipped')
+ $P0.'add_attribute'('todo')
+ $P0.'add_attribute'('passed')
+ $P0.'add_attribute'('failed')
+ $P0.'add_attribute'('actual_failed')
+ $P0.'add_attribute'('actual_passed')
+ $P0.'add_attribute'('todo_passed')
+ $P0.'add_attribute'('parse_errors')
+ $P0.'add_attribute'('tests_run')
+ $P0.'add_attribute'('tests_planned')
+ $P0.'add_attribute'('plan')
+ $P0.'add_attribute'('good_plan')
+ $P0.'add_attribute'('skip_all')
+ $P0.'add_attribute'('version')
+ $P0.'add_attribute'('exit')
+ $P0.'add_attribute'('ignore_exit')
+ $P0.'add_attribute'('merge')
+ $P0.'add_attribute'('spool')
+ $P0.'add_attribute'('start_time')
+ $P0.'add_attribute'('end_time')
+
+ $P0 = _make_state_table()
+ set_global ['TAP';'Parser'], 'STATES', $P0
+
+ $P0 = new 'Hash'
+ $P1 = split ' ', 'test version plan comment bailout unknown ALL ELSE EOF'
+ L1:
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $P0[$S0] = 1
+ goto L1
+ L2:
+ set_global ['TAP';'Parser'], 'LEGAL_CALLBACK', $P0
+.end
+
+.sub 'init' :vtable :method
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'skipped', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'todo', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'passed', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'failed', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'actual_failed', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'actual_passed', $P0
+ $P0 = new 'ResizableIntegerArray'
+ setattribute self, 'todo_passed', $P0
+ $P0 = new 'ResizableStringArray'
+ setattribute self, 'parse_errors', $P0
+ $P0 = box 0
+ setattribute self, 'tests_run', $P0
+ $P0 = get_global ['TAP';'Parser'], 'LEGAL_CALLBACK'
+ setattribute self, 'ok_callbacks', $P0
+.end
+
+=item start_time
+
+=cut
+
+.sub 'start_time' :method
+ $P0 = getattribute self, 'start_time'
+ .return ($P0)
+.end
+
+=item end_time
+
+=cut
+
+.sub 'end_time' :method
+ $P0 = getattribute self, 'end_time'
+ .return ($P0)
+.end
+
+=item skipped
+
+=cut
+
+.sub 'skipped' :method :nsentry
+ $P0 = getattribute self, 'skipped'
+ .return ($P0)
+.end
+
+=item todo
+
+=cut
+
+.sub 'todo' :method :nsentry
+ $P0 = getattribute self, 'todo'
+ .return ($P0)
+.end
+
+=item passed
+
+=cut
+
+.sub 'passed' :method :nsentry
+ $P0 = getattribute self, 'passed'
+ .return ($P0)
+.end
+
+=item failed
+
+=cut
+
+.sub 'failed' :method :nsentry
+ $P0 = getattribute self, 'failed'
+ .return ($P0)
+.end
+
+=item todo_passed
+
+=cut
+
+.sub 'todo_passed' :method :nsentry
+ $P0 = getattribute self, 'todo_passed'
+ .return ($P0)
+.end
+
+=item parse_errors
+
+=cut
+
+.sub 'parse_errors' :method :nsentry
+ $P0 = getattribute self, 'parse_errors'
+ .return ($P0)
+.end
+
+=item tests_run
+
+=cut
+
+.sub 'tests_run' :method :nsentry
+ $P0 = getattribute self, 'tests_run'
+ .return ($P0)
+.end
+
+=item tests_planned
+
+=cut
+
+.sub 'tests_planned' :method :nsentry
+ $P0 = getattribute self, 'tests_planned'
+ .return ($P0)
+.end
+
+=item merge
+
+=cut
+
+.sub 'merge' :method :nsentry
+ .param int val
+ $P0 = new 'Boolean'
+ set $P0, val
+ setattribute self, 'merge', $P0
+.end
+
+=item ignore_exit
+
+=cut
+
+.sub 'ignore_exit' :method :nsentry
+ .param int val
+ $P0 = new 'Boolean'
+ set $P0, val
+ setattribute self, 'ignore_exit', $P0
+.end
+
+=item exit
+
+=cut
+
+.sub 'exit' :method :nsentry
+ $P0 = getattribute self, 'ignore_exit'
+ if null $P0 goto L1
+ unless $P0 goto L1
+ .return (0)
+ L1:
+ $P0 = getattribute self, 'exit'
+ $I0 = 0
+ if null $P0 goto L2
+ $I0 = $P0
+ L2:
+ .return ($I0)
+.end
+
+=item has_problems
+
+=cut
+
+.sub 'has_problems' :method
+ $P0 = getattribute self, 'failed'
+ $I0 = elements $P0
+ if $I0 goto L1
+ $P0 = getattribute self, 'parse_errors'
+ $I0 = elements $P0
+ if $I0 goto L1
+ $P0 = getattribute self, 'ignore_exit'
+ if null $P0 goto L2
+ if $P0 goto L1
+ L2:
+ $P0 = getattribute self, 'exit'
+ if null $P0 goto L1
+ $I0 = $P0
+ .return ($I0)
+ L1:
+ .return ($I0)
+.end
+
+=item _add_error
+
+=cut
+
+.sub '_add_error' :method
+ .param pmc args :slurpy
+ $P0 = getattribute self, 'parse_errors'
+ $S0 = join '', args
+ $P1 = box $S0
+ push $P0, $P1
+.end
+
+=item is_good_plan
+
+=cut
+
+.sub 'is_good_plan' :method
+ $P0 = getattribute self, 'good_plan'
+ .return ($P0)
+.end
+
+=item spool
+
+=cut
+
+.sub 'spool' :method
+ .param pmc spool
+ setattribute self, 'spool', spool
+.end
+
+=item delete_spool
+
+=cut
+
+.sub 'delete_spool' :method
+ $P0 = getattribute self, 'spool'
+ null $P1
+ setattribute self, 'spool', $P1
+ .return ($P0)
+.end
+
+=item pragma
+
+=cut
+
+.sub 'pragma' :method
+ .param string name
+ .return (1)
+.end
+
+=item tap
+
+=cut
+
+.sub 'tap' :method
+ .param string tap
+ $P0 = new 'StringHandle'
+ $P0.'open'('tap', 'w')
+ print $P0, tap
+ setattribute self, 'stream', $P0
+.end
+
+=item file
+
+=cut
+
+.sub 'file' :method
+ .param string filename
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ $P0.'open'(filename, 'r')
+ pop_eh
+ $S0 = readline $P0
+ $I0 = index $S0, '#!'
+ unless $I0 == 0 goto L1
+ close $P0
+ $S0 = _get_exec($S0)
+ .tailcall self.'exec'($S0, filename)
+ L1:
+ seek $P0, 0, 0
+ setattribute self, 'stream', $P0
+ .return ()
+ _handler:
+ .local pmc ex
+ .get_results (ex)
+ $S0 = "Can't open '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ ex = $S0
+ rethrow ex
+.end
+
+.include 'iglobals.pasm'
+
+.sub '_get_exec' :anon
+ .param string line
+ $S0 = chomp(line)
+ $I0 = length $S0
+ $I0 = find_not_cclass .CCLASS_WHITESPACE, $S0, 2, $I0
+ $S0 = substr $S0, $I0
+ .local string slash
+ $P0 = getinterp
+ $P1 = $P0[.IGLOBALS_CONFIG_HASH]
+ slash = $P1['slash']
+ $P0 = split "/", $S0
+ $S0 = join slash, $P0
+ .return ($S0)
+.end
+
+=item exec
+
+=cut
+
+.sub 'exec' :method
+ .param pmc cmds :slurpy
+ .local string cmd
+ cmd = join ' ', cmds
+ $P0 = getattribute self, 'merge'
+ if null $P0 goto L1
+ unless $P0 goto L1
+ cmd .= ' 2>&1'
+ L1:
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ $P0.'open'(cmd, 'pr')
+ pop_eh
+ setattribute self, 'stream', $P0
+ .return ()
+ _handler:
+ .local pmc ex
+ .get_results (ex)
+ $S0 = "Can't open '"
+ $S0 .= cmd
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ ex = $S0
+ rethrow ex
+.end
+
+=item run
+
+=cut
+
+.sub 'run' :method
+ .const 'Sub' $P0 = 'next'
+ $P0 = newclosure $P0
+ L1:
+ $P1 = $P0(self)
+ unless null $P1 goto L1
+.end
+
+=item next
+
+=cut
+
+.sub 'next' :method :nsentry :lex
+ .local pmc stream, spool
+ stream = getattribute self, 'stream'
+ if null stream goto L1
+ $N0 = time
+ $P0 = box $N0
+ setattribute self, 'start_time', $P0
+ .local pmc grammar, st
+ grammar = new ['TAP';'Parser';'Grammar']
+ .const 'Sub' $P0 = 'next_state'
+ capture_lex $P0
+ st = box 'INIT'
+ .lex 'state', st
+ L2:
+ $S0 = readline stream
+ if $S0 == '' goto L3
+ $S0 = chomp($S0)
+ .local pmc token
+ token = grammar.'tokenize'($S0)
+ self.'next_state'(token)
+ $S0 = token.'type'()
+ $P0 = self.'_callback_for'($S0)
+ if null $P0 goto L4
+ $P0(token)
+ goto L5
+ L4:
+ self.'_make_callback'('ELSE', token)
+ L5:
+ self.'_make_callback'('ALL', token)
+ spool = getattribute self, 'spool'
+ if null spool goto L6
+ $S0 = token
+ print spool, $S0
+ print spool, "\n"
+ L6:
+ .yield (token)
+ goto L2
+ L3:
+ close stream
+ $I0 = can stream, 'exit_status'
+ unless $I0 goto L7
+ $I0 = stream.'exit_status'()
+ unless $I0 goto L7
+ $P0 = box $I0
+ setattribute self, 'exit', $P0
+ L7:
+ self.'_finish'()
+ $I0 = self.'_make_callback'('EOF', self)
+ null $P0
+ .return ($P0)
+ L1:
+ die "no stream"
+.end
+
+.sub 'next_state' :method :lex :outer('next')
+ .param pmc token
+ .local pmc STATES, st
+ STATES = get_global ['TAP';'Parser'], 'STATES'
+ st = find_lex 'state'
+ .local string type
+ type = token.'type'()
+ REDO:
+ $I0 = STATES[st]
+ if $I0 goto L1
+ $S0 = st
+ $S0 = "Illegal state: " . $S0
+ die $S0
+ L1:
+ $P0 = STATES[st]
+ $I0 = exists $P0[type]
+ unless $I0 goto L2
+ $P1 = $P0[type]
+ $I0 = exists $P1['act']
+ unless $I0 goto L3
+ $P2 = $P1['act']
+ $P2(self, token)
+ L3:
+ $I0 = exists $P1['continue']
+ unless $I0 goto L4
+ $S0 = $P1['continue']
+ set st, $S0
+ goto REDO
+ L4:
+ $I0 = exists $P1['goto']
+ unless $I0 goto L5
+ $S0 = $P1['goto']
+ set st, $S0
+ goto L5
+ L2:
+ printerr "Unhandled token type: "
+ printerr type
+ printerr "\n"
+ L5:
+.end
+
+.sub '_make_state_table'
+ .local pmc states
+ states = new 'Hash'
+ $P0 = split ' ', 'INIT PLAN PLANNED PLANNED_AFTER_TEST GOT_PLAN UNPLANNED UNPLANNED_AFTER_TEST'
+ $P1 = split ' ', 'bailout comment plan test unknown version'
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ .local pmc st
+ st = new 'Hash'
+ states[$S0] = st
+ $P2 = iter $P1
+ L3:
+ unless $P2 goto L4
+ $S0 = shift $P2
+ $P3 = new 'Hash'
+ st[$S0] = $P3
+ goto L3
+ L4:
+ $P3 = st['version']
+ $P4 = get_hll_global ['TAP';'Parser'], '_DEFAULT_version'
+ $P3['act'] = $P4
+ $P3 = st['unknown']
+ $P4 = get_hll_global ['TAP';'Parser'], '_DEFAULT_unknown'
+ $P3['act'] = $P4
+ $P3 = st['plan']
+ $P4 = get_hll_global ['TAP';'Parser'], '_DEFAULT_plan'
+ $P3['act'] = $P4
+ $P3 = st['test']
+ $P4 = get_hll_global ['TAP';'Parser'], '_DEFAULT_test'
+ $P3['act'] = $P4
+ goto L1
+ L2:
+
+ st = states['INIT']
+ $P0 = st['version']
+ $P1 = get_hll_global ['TAP';'Parser'], '_INIT_version'
+ $P0['act'] = $P1
+ $P0['goto'] = 'PLAN'
+ $P0 = st['plan']
+ $P0['goto'] = 'PLANNED'
+ $P0 = st['test']
+ $P0['goto'] = 'UNPLANNED'
+
+ st = states['PLAN']
+ $P0 = st['plan']
+ $P0['goto'] = 'PLANNED'
+ $P0 = st['test']
+ $P0['goto'] = 'UNPLANNED'
+
+ st = states['PLANNED']
+ $P0 = st['test']
+ $P0['goto'] = 'PLANNED_AFTER_TEST'
+ $P0 = st['plan']
+ $P1 = get_hll_global ['TAP';'Parser'], '_PLANNED_plan'
+ $P0['act'] = $P1
+
+ st = states['PLANNED_AFTER_TEST']
+ $P0 = st['test']
+ $P0['goto'] = 'PLANNED_AFTER_TEST'
+ $P0 = st['plan']
+ $P1 = get_hll_global ['TAP';'Parser'], '_no_action'
+ $P0['act'] = $P1
+ $P0['continue'] = 'PLANNED'
+
+ st = states['GOT_PLAN']
+ $P0 = st['test']
+ $P1 = get_hll_global ['TAP';'Parser'], '_GOT_PLAN_test'
+ $P0['act'] = $P1
+ $P0['continue'] = 'PLANNED'
+ $P0 = st['plan']
+ $P0['continue'] = 'PLANNED'
+
+ st = states['UNPLANNED']
+ $P0 = st['test']
+ $P0['goto'] = 'UNPLANNED_AFTER_TEST'
+ $P0 = st['plan']
+ $P0['goto'] = 'GOT_PLAN'
+
+ st = states['UNPLANNED_AFTER_TEST']
+ $P0 = st['test']
+ $P1 = get_hll_global ['TAP';'Parser'], '_no_action'
+ $P0['act'] = $P1
+ $P0['continue'] = 'UNPLANNED'
+ $P0 = st['plan']
+ $P1 = get_hll_global ['TAP';'Parser'], '_no_action'
+ $P0['act'] = $P1
+ $P0['continue'] = 'UNPLANNED'
+
+ .return (states)
+.end
+
+.sub '_no_action' :method :nsentry
+ .param pmc result
+ # nothing
+.end
+
+.sub '_DEFAULT_version' :method :nsentry
+ .param pmc result
+ self.'_add_error'('If TAP version is present it must be the first line of output')
+.end
+
+.sub '_DEFAULT_unknown' :method :nsentry
+ .param pmc result
+ $I0 = self.'pragma'('strict')
+ unless $I0 goto L1
+ $P0 = getattribute result, 'raw'
+ $S1 = $P0
+ self.'_add_error'('Unknown TAP token: "', $S1, '"')
+ L1:
+.end
+
+.sub '_DEFAULT_plan' :method :nsentry
+ .param pmc result
+ $P0 = getattribute result, 'tests_planned'
+ setattribute self, 'tests_planned', $P0
+ $P0 = getattribute result, 'plan'
+ setattribute self, 'plan', $P0
+ $I0 = result.'has_skip'()
+ unless $I0 goto L1
+ $S0 = '(no reason given)'
+ $P0 = getattribute result, 'explanation'
+ if null $P0 goto L2
+ $S0 = $P0
+ L2:
+ $P0 = box $S0
+ setattribute self, 'skip_all', $P0
+ L1:
+.end
+
+.sub '_DEFAULT_test' :method :nsentry
+ .param pmc result
+ $P0 = getattribute self, 'tests_run'
+ inc $P0
+ .local int tests_run
+ tests_run = $P0
+
+ $P0 = getattribute self, 'tests_planned'
+ if null $P0 goto L11
+ .local int tests_planned
+ tests_planned = $P0
+ unless tests_run > tests_planned goto L11
+ $P0 = new 'Boolean'
+ set $P0, 1
+ setattribute result, 'unplanned', $P0
+ L11:
+
+ $P0 = getattribute result, 'test_num'
+ if null $P0 goto L21
+ .local int number
+ number = $P0
+ unless number != tests_run goto L22
+ $S1 = number
+ $S2 = tests_run
+ self.'_add_error'("Tests out of sequence. Found (", $S1, ") but expected (", $S2, ")")
+ goto L22
+ L21:
+ number = tests_run
+ $P0 = box number
+ setattribute result, 'test_num', $P0
+ L22:
+
+ $I0 = result.'has_todo'()
+ unless $I0 goto L31
+ $P0 = getattribute self, 'todo'
+ push $P0, number
+ L31:
+ $I0 = result.'todo_passed'()
+ unless $I0 goto L32
+ $P0 = getattribute self, 'todo_passed'
+ push $P0, number
+ L32:
+ $I0 = result.'has_skip'()
+ unless $I0 goto L33
+ $P0 = getattribute self, 'skipped'
+ push $P0, number
+ L33:
+ $I0 = result.'is_ok'()
+ unless $I0 goto L34
+ $P0 = getattribute self, 'passed'
+ push $P0, number
+ goto L35
+ L34:
+ $P0 = getattribute self, 'failed'
+ push $P0, number
+ L35:
+ $I0 = result.'is_actual_ok'()
+ unless $I0 goto L36
+ $P0 = getattribute self, 'actual_passed'
+ push $P0, number
+ goto L37
+ L36:
+ $P0 = getattribute self, 'actual_failed'
+ push $P0, number
+ L37:
+.end
+
+.sub '_INIT_version' :method :nsentry
+ .param pmc result
+ $P0 = getattribute result, 'version'
+ setattribute self, 'version', $P0
+.end
+
+.sub '_PLANNED_plan' :method :nsentry
+ .param pmc result
+ self.'_add_error'('More than one plan found in TAP output')
+.end
+
+.sub '_GOT_PLAN_test' :method :nsentry
+ .param pmc result
+ $P0 = getattribute self, 'plan'
+ $S1 = $P0
+ self.'_add_error'("Plan (", $S1, ") must be at the beginning or end of the TAP output")
+ self.'is_good_plan'(0)
+.end
+
+.sub '_finish' :method
+ $N0 = time
+ $P0 = box $N0
+ setattribute self, 'end_time', $P0
+
+ $P0 = getattribute self, 'plan'
+ unless null $P0 goto L1
+ self.'_add_error'('No plan found in TAP output')
+ goto L2
+ L1:
+ $P0 = getattribute self, 'good_plan'
+ unless null $P0 goto L2
+ $P0 = box 1
+ setattribute self, 'good_plan', $P0
+ L2:
+
+ .local int tests_run, tests_planned
+ $P0 = getattribute self, 'tests_run'
+ tests_run = $P0
+ tests_planned = 0
+ $P0 = getattribute self, 'tests_planned'
+ if null $P0 goto L3
+ tests_planned = $P0
+ L3:
+ unless tests_run != tests_planned goto L4
+ $P0 = box 0
+ setattribute self, 'good_plan', $P0
+ if tests_planned == 0 goto L4
+ $S1 = tests_planned
+ $S2 = tests_run
+ self.'_add_error'("Bad plan. You planned ", $S1, " tests but ran ", $S2, ".")
+ L4:
+
+ $P0 = getattribute self, 'good_plan'
+ unless null $P0 goto L5
+ $P0 = box 0
+ setattribute self, 'good_plan', $P0
+ L5:
+.end
+
+=back
+
+=head3 Class TAP;Parser;Aggregator
+
+C<TAP;Parser;Aggregator> collects parser objects and allows
+reporting/querying their aggregate results.
+
+=over 4
+
+=cut
+
+.namespace ['TAP';'Parser';'Aggregator']
+
+.sub '' :init :load :anon
+ $P0 = newclass ['TAP';'Parser';'Aggregator']
+ $P0.'add_attribute'('parser_for')
+ $P0.'add_attribute'('parse_order')
+ $P0.'add_attribute'('start_time')
+ $P0.'add_attribute'('end_time')
+ $P0.'add_attribute'('failed')
+ $P0.'add_attribute'('parse_errors')
+ $P0.'add_attribute'('passed')
+ $P0.'add_attribute'('skipped')
+ $P0.'add_attribute'('todo')
+ $P0.'add_attribute'('todo_passed')
+ $P0.'add_attribute'('total')
+ $P0.'add_attribute'('planned')
+ $P0.'add_attribute'('exit')
+ $P0.'add_attribute'('description_for_failed')
+ $P0.'add_attribute'('description_for_parse_errors')
+ $P0.'add_attribute'('description_for_passed')
+ $P0.'add_attribute'('description_for_skipped')
+ $P0.'add_attribute'('description_for_todo')
+ $P0.'add_attribute'('description_for_todo_passed')
+ $P0.'add_attribute'('description_for_planned')
+ $P0.'add_attribute'('description_for_exit')
+
+ $P0 = new 'Hash'
+ $P1 = get_hll_global ['TAP';'Parser'], 'failed'
+ $P0['failed'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'parse_errors'
+ $P0['parse_errors'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'passed'
+ $P0['passed'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'skipped'
+ $P0['skipped'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'todo'
+ $P0['todo'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'todo_passed'
+ $P0['todo_passed'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'tests_run'
+ $P0['total'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'tests_planned'
+ $P0['planned'] = $P1
+ $P1 = get_hll_global ['TAP';'Parser'], 'exit'
+ $P0['exit'] = $P1
+ set_global ['TAP';'Parser';'Aggregator'], 'SUMMARY_METHOD_FOR', $P0
+.end
+
+.sub 'init' :vtable :method
+ $P0 = new 'Hash'
+ setattribute self, 'parser_for', $P0
+ $P0 = new 'ResizableStringArray'
+ setattribute self, 'parse_order', $P0
+ .local pmc SUMMARY_METHOD_FOR
+ SUMMARY_METHOD_FOR = get_global ['TAP';'Parser';'Aggregator'], 'SUMMARY_METHOD_FOR'
+ $P0 = iter SUMMARY_METHOD_FOR
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $P1 = box 0
+ setattribute self, $S0, $P1
+ if $S0 == 'total' goto L1
+ $S0 = 'description_for_' . $S0
+ $P1 = new 'ResizableStringArray'
+ setattribute self, $S0, $P1
+ goto L1
+ L2:
+.end
+
+=item add
+
+=cut
+
+.sub 'add' :method
+ .param string description
+ .param pmc parser
+ .local pmc parser_for
+ parser_for = getattribute self, 'parser_for'
+ $I0 = exists parser_for[description]
+ unless $I0 goto L1
+ $S0 = "You already have a parser for (" . description
+ $S0 .= "). Perhaps you have run the same test twice.\n"
+ die $S0
+ L1:
+ parser_for[description] = parser
+ .local pmc parse_order
+ parse_order = getattribute self, 'parse_order'
+ push parse_order, description
+ .local pmc SUMMARY_METHOD_FOR
+ SUMMARY_METHOD_FOR = get_global ['TAP';'Parser';'Aggregator'], 'SUMMARY_METHOD_FOR'
+ $P0 = iter SUMMARY_METHOD_FOR
+ L2:
+ unless $P0 goto L3
+ .local string summary
+ summary = shift $P0
+ .local pmc method
+ method = SUMMARY_METHOD_FOR[summary]
+ .local int count
+ count = method(parser)
+ unless count > 0 goto L2
+ $P1 = getattribute self, summary
+ $P1 += count
+ if summary == 'total' goto L2
+ $S0 = 'description_for_' . summary
+ $P1 = getattribute self, $S0
+ push $P1, description
+ goto L2
+ L3:
+.end
+
+=item parsers
+
+=cut
+
+.sub 'parsers' :method
+ .param string desc
+ $P0 = getattribute self, 'parser_for'
+ $P1 = $P0[desc]
+ .return ($P1)
+.end
+
+=item total
+
+=cut
+
+.sub 'total' :method
+ $P0 = getattribute self, 'total'
+ $I0 = $P0
+ .return ($I0)
+.end
+
+=item passed
+
+=cut
+
+.sub 'passed' :method
+ $P0 = getattribute self, 'passed'
+ $I0 = $P0
+ .return ($I0)
+.end
+
+=item descriptions
+
+=cut
+
+.sub 'descriptions' :method
+ $P0 = getattribute self, 'parse_order'
+ .return ($P0)
+.end
+
+=item start
+
+=cut
+
+.sub 'start' :method
+ $N0 = time
+ $P0 = box $N0
+ setattribute self, 'start_time', $P0
+.end
+
+=item stop
+
+=cut
+
+.sub 'stop' :method
+ $N0 = time
+ $P0 = box $N0
+ setattribute self, 'end_time', $P0
+.end
+
+=item start_time
+
+=cut
+
+.sub 'start_time' :method
+ $P0= getattribute self, 'start_time'
+ .return ($P0)
+.end
+
+=item en_time
+
+=cut
+
+.sub 'end_time' :method
+ $P0= getattribute self, 'end_time'
+ .return ($P0)
+.end
+
+=item elapsed
+
+=cut
+
+.sub 'elapsed' :method
+ $P0 = getattribute self, 'end_time'
+ if null $P0 goto L1
+ $N2 = $P0
+ $P0 = getattribute self, 'start_time'
+ if null $P0 goto L1
+ $N1 = $P0
+ $N0 = $N2 - $N1
+ .return ($N0)
+ L1:
+ die "Can't call elapsed without first calling start and then stop"
+.end
+
+=item elapsed_timestr
+
+=cut
+
+.sub 'elapsed_timestr' :method
+ $N0 = self.'elapsed'()
+ $P0 = new 'FixedPMCArray'
+ $P0 = 1
+ $P0[0] = $N0
+ $S0 = sprintf "%.3f wallclock secs", $P0
+ .return ($S0)
+.end
+
+=item has_problems
+
+=cut
+
+.sub 'has_problems' :method
+ $P0 = getattribute self, 'todo_passed'
+ $I0 = $P0
+ if $I0 goto L1
+ $I0 = self.'has_errors'()
+ L1:
+ .return ($I0)
+.end
+
+=item has_errors
+
+=cut
+
+.sub 'has_errors' :method
+ $P0 = getattribute self, 'failed'
+ $I0 = $P0
+ if $I0 goto L1
+ $P0 = getattribute self, 'parse_errors'
+ $I0 = $P0
+ if $I0 goto L1
+ $P0 = getattribute self, 'exit'
+ $I0 = $P0
+ L1:
+ .return ($I0)
+.end
+
+=item get_status
+
+=cut
+
+.sub 'get_status' :method
+ .local int total, passed
+ $P0 = getattribute self, 'total'
+ total = $P0
+ $P0 = getattribute self, 'passed'
+ passed = $P0
+ $I0 = self.'has_errors'()
+ if $I0 goto L1
+ if total == passed goto L2
+ L1:
+ .return ('FAIL')
+ L2:
+ unless total goto L3
+ .return ('PASS')
+ L3:
+ .return ('NOTESTS')
+.end
+
+=item all_passed
+
+=cut
+
+.sub 'all_passed' :method
+ .local int total
+ $P0 = getattribute self, 'total'
+ total = $P0
+ unless total goto L1
+ $P0 = getattribute self, 'passed'
+ $I0 = $P0
+ unless total == $I0 goto L1
+ $I0 = self.'has_errors'()
+ $I0 = not $I0
+ .return ($I0)
+ L1:
+ .return (0)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/runtime/parrot/library/Test/Builder.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder.pir Wed May 5 08:45:29 2010 (r46302)
@@ -312,22 +312,18 @@
.return()
.end
-=item C<diag( diagnostic_message )>
+=item C<diag( diagnostic_message, ... )>
Records a diagnostic message for output.
=cut
.sub 'diag' :method
- .param string diagnostic
+ .param pmc args :slurpy
- if diagnostic goto DIAGNOSTIC_SET
- .return()
-
- DIAGNOSTIC_SET:
.local pmc output
output = self.'output'()
- output.'diag'( diagnostic )
+ .tailcall output.'diag'( args :flat )
.end
=item C<ok( passed, description )>
Modified: branches/ops_pct/runtime/parrot/library/Test/Builder/Output.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder/Output.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder/Output.pir Wed May 5 08:45:29 2010 (r46302)
@@ -122,7 +122,8 @@
newline_index = index message, "\n"
if newline_index == -1 goto END_LOOP
inc newline_index
- line = substr message, 0, newline_index, ''
+ line = substr message, 0, newline_index
+ message = replace message, 0, newline_index, ''
push lines, line
if message goto SPLIT_LOOP
@@ -161,7 +162,7 @@
.return( message )
.end
-=item C<diag( message )>
+=item C<diag( message, ... )>
Writes the string C<message> to the diagnostic filehandle, TAP-escaping any
unescaped newlines.
@@ -169,7 +170,9 @@
=cut
.sub diag :method
- .param string message
+ .param pmc args :slurpy
+ .local string message
+ message = join '', args
.local int message_length
message_length = length message
@@ -190,7 +193,7 @@
WRITE_MESSAGE:
.local pmc diag_output
diag_output = self.'diag_output'()
- diag_output.'puts'( message )
+ .tailcall diag_output.'puts'( message )
.end
=back
Modified: branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Test/Builder/Test.pir Wed May 5 08:45:29 2010 (r46302)
@@ -323,30 +323,32 @@
.sub report :method
.local pmc passed
- .local pmc description
+ .local pmc reason
.local pmc number
.local string report
- .local string number_string
- .local string desc_string
passed = self.'passed'()
number = self.'number'()
- description = self.'description'()
report = ''
- number_string = number
- desc_string = description
if passed goto PASSED
report = 'not '
PASSED:
concat report, 'ok '
- concat report, number_string
- concat report, ' # TODO'
-
- unless description goto REPORT
- concat report, ' '
- concat report, desc_string
+ $S0 = number
+ concat report, $S0
+ concat report, ' # TODO '
+
+ $S0 = self.'reason'()
+ concat report, $S0
+
+ if passed goto REPORT
+ # Build long explanation why
+ report .= "\n\tFailed (TODO) test '"
+ $S0 = self.'description'()
+ report .= $S0
+ report .= "'"
REPORT:
.return( report )
Modified: branches/ops_pct/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/Test/More.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/Test/More.pir Wed May 5 08:45:29 2010 (r46302)
@@ -527,18 +527,18 @@
done:
.end
-=item C<diag( diagnostic )>
+=item C<diag( diagnostic, ... )>
Prints C<diagnostic> to the screen, without affecting test comparisons.
=cut
.sub diag
- .param string diagnostic
+ .param pmc args :slurpy
.local pmc test
get_hll_global test, [ 'Test'; 'More' ], '_test'
- test.'diag'( diagnostic )
+ .tailcall test.'diag'( args :flat )
.end
Modified: branches/ops_pct/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/distutils.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/distutils.pir Wed May 5 08:45:29 2010 (r46302)
@@ -62,7 +62,7 @@
Output a skeleton for Plumage
-=item sdist, sdist_gztar, sdist_bztar, sdist_zip, sdist_rpm, manifest
+=item sdist, sdist_gztar, sdist_zip, sdist_rpm, manifest
Create a source distribution or a source RPM package
@@ -96,22 +96,10 @@
=over 4
-=item prove (in step 'test')
-
-core module Test-Harness
-
-=item prove --archive (in step 'smoke')
-
-module TAP-Harness-Archive
-
=item pod2html
core module Pod-Html
-=item chmod (in step 'install')
-
-core module ExtUtils::Command, see TT #1322
-
=back
=head2 PARROT DEPENDENCIES
@@ -120,9 +108,11 @@
=item glob (in step 'manifest' & 'sdist')
-PGE::Glob
+PGE/Glob.pbc
-Limitation: currently, OS.'readdir' is dummy with MSVC.
+=item tempdir (in step 'smoke')
+
+Math/Rand.pbc
=back
@@ -134,14 +124,6 @@
curl
-=item sdist_gztar
-
-Some coreutils : tar, gzip
-
-=item sdist_bztar
-
-bzip2
-
=item sdist_zip
zip
@@ -199,6 +181,7 @@
=cut
.sub '__onload' :load :init :anon
+ load_bytecode 'osutils.pbc'
$P0 = new 'Hash'
set_global '%step', $P0
@@ -214,12 +197,16 @@
register_step_after('build', _build_pir_nqp)
.const 'Sub' _build_pir_nqp_rx = '_build_pir_nqp_rx'
register_step_after('build', _build_pir_nqp_rx)
+ .const 'Sub' _build_inc_pir = '_build_inc_pir'
+ register_step_after('build', _build_inc_pir)
.const 'Sub' _build_pir_pir = '_build_pir_pir'
register_step_after('build', _build_pir_pir)
.const 'Sub' _build_pbc_pir = '_build_pbc_pir'
register_step_after('build', _build_pbc_pir)
.const 'Sub' _build_pbc_pbc = '_build_pbc_pbc'
register_step_after('build', _build_pbc_pbc)
+ .const 'Sub' _build_hll_hook = '_build_hll_hook'
+ register_step_after('build', _build_hll_hook)
.const 'Sub' _build_exe_pbc = '_build_exe_pbc'
register_step_after('build', _build_exe_pbc)
.const 'Sub' _build_installable_pbc = '_build_installable_pbc'
@@ -239,6 +226,8 @@
register_step_after('clean', _clean_pir_nqp)
.const 'Sub' _clean_pir_nqp_rx = '_clean_pir_nqp_rx'
register_step_after('clean', _clean_pir_nqp_rx)
+ .const 'Sub' _clean_inc_pir = '_clean_inc_pir'
+ register_step_after('clean', _clean_inc_pir)
.const 'Sub' _clean_pir_pir = '_clean_pir_pir'
register_step_after('clean', _clean_pir_pir)
.const 'Sub' _clean_pbc_pir = '_clean_pbc_pir'
@@ -253,8 +242,6 @@
register_step_after('clean', _clean_html_pod)
.const 'Sub' _clean_gztar = '_clean_gztar'
register_step_after('clean', _clean_gztar)
- .const 'Sub' _clean_bztar = '_clean_bztar'
- register_step_after('clean', _clean_bztar)
.const 'Sub' _clean_zip = '_clean_zip'
register_step_after('clean', _clean_zip)
.const 'Sub' _clean_smoke = '_clean_smoke'
@@ -288,8 +275,6 @@
register_step('sdist', _sdist)
.const 'Sub' _sdist_gztar = '_sdist_gztar'
register_step('sdist_gztar', _sdist_gztar)
- .const 'Sub' _sdist_bztar = '_sdist_bztar'
- register_step('sdist_bztar', _sdist_bztar)
.const 'Sub' _sdist_zip = '_sdist_zip'
register_step('sdist_zip', _sdist_zip)
.const 'Sub' _manifest = '_manifest'
@@ -386,7 +371,7 @@
=cut
-.sub 'run_step'
+.sub 'run_step' :multi()
.param string name
.param pmc kv :slurpy :named
$P0 = get_global '%step'
@@ -405,6 +390,12 @@
.return (1)
.end
+.sub 'run_step' :multi(String,Hash)
+ .param string name
+ .param pmc hash
+ .tailcall run_step(name, hash :flat :named)
+.end
+
=item register_step
Register a step by its name
@@ -540,6 +531,8 @@
.sub 'build_pbc_pir'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -558,13 +551,26 @@
$I0 = newer(pbc, src)
if $I0 goto L1
L4:
+ $S0 = dirname(pbc)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_parrot()
cmd .= " -o "
cmd .= pbc
cmd .= " "
cmd .= src
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
+ goto L1
+ L2:
+ .tailcall run_jobs(jobs)
+.end
+
+.sub 'run_jobs'
+ .param pmc jobs
+ L1:
+ unless jobs goto L2
+ $S0 = shift jobs
+ system($S0, 1 :named('verbose'))
goto L1
L2:
.end
@@ -594,6 +600,8 @@
.sub 'build_pir_pge'
.param pmc hash
.param string flags
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -612,6 +620,8 @@
$I0 = newer(pir, src)
if $I0 goto L1
L4:
+ $S0 = dirname(pir)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_parrot()
cmd .= " "
@@ -623,9 +633,10 @@
cmd .= flags
cmd .= " "
cmd .= src
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
.end
=item pir_tge
@@ -649,6 +660,8 @@
.sub 'build_pir_tge'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -657,6 +670,8 @@
tge = hash[pir]
$I0 = newer(pir, tge)
if $I0 goto L1
+ $S0 = dirname(pir)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_parrot()
cmd .= " "
@@ -666,9 +681,10 @@
cmd .= pir
cmd .= " "
cmd .= tge
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
.end
=item pir_nqp
@@ -696,6 +712,8 @@
.sub 'build_pir_nqp'
.param pmc hash
.param string flags
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -704,6 +722,8 @@
nqp = hash[pir]
$I0 = newer(pir, nqp)
if $I0 goto L1
+ $S0 = dirname(pir)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_parrot()
cmd .= " "
@@ -715,9 +735,10 @@
cmd .= flags
cmd .= " "
cmd .= nqp
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
.end
=item pir_nqp-rx / pir_nqprx
@@ -728,6 +749,8 @@
the value is the NQP pathname
+=item pir_nqp_flags
+
=cut
.sub '_build_pir_nqp_rx' :anon
@@ -735,17 +758,22 @@
$I0 = exists kv['pir_nqp-rx']
unless $I0 goto L1
$P0 = kv['pir_nqp-rx']
- build_pir_nqp_rx($P0)
+ $S0 = get_value('pir_nqp_flags', '' :named('default'), kv :flat :named)
+ build_pir_nqp_rx($P0, $S0)
L1:
$I0 = exists kv['pir_nqprx']
unless $I0 goto L2
$P0 = kv['pir_nqprx']
- build_pir_nqp_rx($P0)
+ $S0 = get_value('pir_nqp_flags', '' :named('default'), kv :flat :named)
+ build_pir_nqp_rx($P0, $S0)
L2:
.end
.sub 'build_pir_nqp_rx'
.param pmc hash
+ .param string flags
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -754,13 +782,59 @@
nqp = hash[pir]
$I0 = newer(pir, nqp)
if $I0 goto L1
+ $S0 = dirname(pir)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_nqp()
cmd .= " --target=pir --output="
cmd .= pir
cmd .= " "
+ cmd .= flags
+ cmd .= " "
cmd .= nqp
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
+ goto L1
+ L2:
+ .tailcall run_jobs(jobs)
+.end
+
+=item inc_pir (include)
+
+hash
+
+the key is the PIR pathname
+
+the value is an array of PIR pathname
+
+=cut
+
+.sub '_build_inc_pir' :anon
+ .param pmc kv :slurpy :named
+ $I0 = exists kv['inc_pir']
+ unless $I0 goto L1
+ $P0 = kv['inc_pir']
+ build_inc_pir($P0)
+ L1:
+.end
+
+.sub 'build_inc_pir'
+ .param pmc hash
+ $P0 = iter hash
+ L1:
+ unless $P0 goto L2
+ .local string inc
+ inc = shift $P0
+ .local pmc srcs
+ srcs = hash[inc]
+ $I0 = newer(inc, srcs)
+ if $I0 goto L1
+ $S0 = dirname(inc)
+ mkpath($S0, 1 :named('verbose'))
+ $S0 = "# generated by distutils\n\n.include '"
+ $S1 = join "'\n.include '", srcs
+ $S0 .= $S1
+ $S0 .= "'\n\n"
+ spew(inc, $S0, 1 :named('verbose'))
goto L1
L2:
.end
@@ -789,12 +863,14 @@
$P0 = iter hash
L1:
unless $P0 goto L2
- .local string pir, src
+ .local string pir
pir = shift $P0
.local pmc srcs
srcs = hash[pir]
$I0 = newer(pir, srcs)
if $I0 goto L1
+ $S0 = dirname(pir)
+ mkpath($S0, 1 :named('verbose'))
spew(pir, '', 1 :named('verbose'))
$P1 = iter srcs
L3:
@@ -830,25 +906,45 @@
.sub 'build_pbc_pbc'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
- .local string pbc, src
+ .local string pbc
pbc = shift $P0
.local pmc srcs
srcs = hash[pbc]
$I0 = newer(pbc, srcs)
if $I0 goto L1
- src = join ' ', srcs
+ $S0 = dirname(pbc)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = get_executable('pbc_merge')
cmd .= " -o "
cmd .= pbc
cmd .= " "
- cmd .= src
- system(cmd, 1 :named('verbose'))
+ $S0 = join " ", srcs
+ cmd .= $S0
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
+.end
+
+=item hll_hook
+
+a subroutine
+
+=cut
+
+.sub '_build_hll_hook' :anon
+ .param pmc kv :slurpy :named
+ $I0 = exists kv['hll_hook']
+ unless $I0 goto L1
+ $P0 = kv['hll_hook']
+ $P0(kv :flat :named)
+ L1:
.end
=item exe_pbc
@@ -872,6 +968,8 @@
.sub 'build_exe_pbc'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
.local string exe
exe = get_exe()
$P0 = iter hash
@@ -880,19 +978,27 @@
.local string bin, pbc
bin = shift $P0
pbc = hash[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = $S0 . exe
+ $S1 = _mk_path_exe(pbc, exe)
$I0 = newer($S1, pbc)
if $I0 goto L1
.local string cmd
cmd = get_executable('pbc_to_exe')
cmd .= " "
cmd .= pbc
- system(cmd, 1 :named('verbose'))
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
+.end
+
+.sub '_mk_path_exe' :anon
+ .param string pbcname
+ .param string exe
+ $I0 = length pbcname
+ $I0 -= 4
+ $S0 = substr pbcname, 0, $I0
+ $S1 = $S0 . exe
+ .return ($S1)
.end
=item installable_pbc
@@ -916,6 +1022,8 @@
.sub 'build_installable_pbc'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
.local string exe
exe = get_exe()
.local int has_strip
@@ -926,11 +1034,7 @@
.local string bin, pbc
bin = shift $P0
pbc = hash[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = "installable_" . $S0
- $S1 .= exe
+ $S1 = _mk_path_installable(pbc, exe)
$I0 = newer($S1, pbc)
if $I0 goto L1
.local string cmd
@@ -938,12 +1042,29 @@
cmd .= " "
cmd .= pbc
cmd .= " --install"
- system(cmd, 1 :named('verbose'))
- unless has_strip goto L1
- cmd = "strip " . $S1
- system(cmd, 1 :named('verbose'))
+ unless has_strip goto L3
+ cmd .= " && strip "
+ cmd .= $S1
+ L3:
+ push jobs, cmd
goto L1
L2:
+ .tailcall run_jobs(jobs)
+.end
+
+.sub '_mk_path_installable' :anon
+ .param string pbcname
+ .param string exe
+ $P0 = split '/', pbcname
+ $S0 = $P0[-1]
+ $I0 = length $S0
+ $I0 -= 4
+ $S0 = substr $S0, 0, $I0
+ $S1 = "installable_" . $S0
+ $S1 .= exe
+ $P0[-1] = $S1
+ $S1 = join '/', $P0
+ .return ($S1)
.end
.sub '_has_strip' :anon
@@ -1139,9 +1260,6 @@
.sub 'get_cores'
$P0 = new 'Hash'
$P0['C'] = ''
-# $P0['CGP'] = '_cgp'
-# $P0['CGoto'] = '_cg'
- $P0['CSwitch'] = '_switch'
.return ($P0)
.end
@@ -1217,7 +1335,7 @@
L2:
.end
-.sub '__build_dynpmc' :anon
+.sub '__build_dynpmc'
.param string src
.param string cflags
.local pmc config
@@ -1234,32 +1352,25 @@
pmc2c_includes .= " --include "
pmc2c_includes .= $S0
pmc2c_includes .= "/pmc"
- .local string current_dir
- current_dir = cwd()
$S0 = dirname(src)
- chdir($S0)
+ pmc2c_includes .= " --include "
+ pmc2c_includes .= $S0
.local string cmd
cmd = clone pmc2c
cmd .= " --dump "
cmd .= pmc2c_includes
cmd .= " "
-# cmd .= src
- $S0 = basename(src)
- cmd .= $S0
+ cmd .= src
system(cmd, 1 :named('verbose'))
cmd = clone pmc2c
cmd .= " --c "
cmd .= pmc2c_includes
cmd .= " "
-# cmd .= src
- $S0 = basename(src)
- cmd .= $S0
+ cmd .= src
system(cmd, 1 :named('verbose'))
- chdir(current_dir)
-
$S0 = config['o']
$S1 = _mk_path_gen_dynpmc(src, $S0)
$S2 = _mk_path_gen_dynpmc(src, '.c')
@@ -1276,10 +1387,6 @@
.local string src, obj
src = srcs[0]
obj = config['o']
- .local string current_dir
- current_dir = cwd()
- $S0 = dirname(src)
- chdir($S0)
.local string cmd
cmd = config['perl']
@@ -1287,26 +1394,15 @@
$S0 = get_tool('build/pmc2c.pl')
cmd .= $S0
cmd .= " --library "
-# $S0 = dirname(src)
-# cmd .= $S0
-# cmd .= "/"
+ $S0 = dirname(src)
+ cmd .= $S0
+ cmd .= "/"
cmd .= group
cmd .= " --c "
-# $S0 = join " ", srcs
-# cmd .= $S0
- $P0 = iter srcs
- L1:
- unless $P0 goto L2
- src = shift $P0
- $S0 = basename(src)
+ $S0 = join " ", srcs
cmd .= $S0
- cmd .= " "
- goto L1
- L2:
system(cmd, 1 :named('verbose'))
- chdir(current_dir)
-
$S1 = _mk_path_gen_dynpmc_group(src, group, obj)
$S2 = _mk_path_gen_dynpmc_group(src, group, '.c')
__compile_cc($S1, $S2, cflags)
@@ -1462,6 +1558,8 @@
pod = hash[html]
$I0 = newer(html, pod)
if $I0 goto L1
+ $S0 = dirname(html)
+ mkpath($S0, 1 :named('verbose'))
.local string cmd
cmd = "pod2html --infile "
cmd .= pod
@@ -1504,6 +1602,19 @@
L2:
.end
+=item inc_pir
+
+=cut
+
+.sub '_clean_inc_pir' :anon
+ .param pmc kv :slurpy :named
+ $I0 = exists kv['inc_pir']
+ unless $I0 goto L1
+ $P0 = kv['inc_pir']
+ clean_key($P0)
+ L1:
+.end
+
=item pir_pir
=cut
@@ -1610,14 +1721,11 @@
unless $P0 goto L2
bin = shift $P0
pbc = hash[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = $S0 . exe
+ $S1 = _mk_path_exe(pbc, exe)
unlink($S1, 1 :named('verbose'))
- $S1 = $S0 . '.c'
+ $S1 = _mk_path_exe(pbc, '.c')
unlink($S1, 1 :named('verbose'))
- $S1 = $S0 . obj
+ $S1 = _mk_path_exe(pbc, obj)
unlink($S1, 1 :named('verbose'))
goto L1
L2:
@@ -1646,15 +1754,11 @@
unless $P0 goto L2
bin = shift $P0
pbc = hash[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = 'installable_' . $S0
- $S1 .= exe
+ $S1 = _mk_path_installable(pbc, exe)
unlink($S1, 1 :named('verbose'))
- $S1 = $S0 . '.c'
+ $S1 = _mk_path_exe(pbc, '.c')
unlink($S1, 1 :named('verbose'))
- $S1 = $S0 . obj
+ $S1 = _mk_path_exe(pbc, obj)
unlink($S1, 1 :named('verbose'))
goto L1
L2:
@@ -1917,65 +2021,13 @@
=head3 Step test
-If t/harness exists, run : t/harness
-
-If parrot-tapir exists, run it with t/*.t
-
-Else run : prove t/*.t
-
-=cut
-
-.sub '_test' :anon
- .param pmc kv :slurpy :named
- run_step('build', kv :flat :named)
- $I0 = file_exists('t/harness')
- unless $I0 goto L1
- .tailcall _test_harness(kv :flat :named)
- L1:
- $S0 = get_executable('parrot-tapir')
- $I0 = file_exists($S0)
- unless $I0 goto L2
- .tailcall _test_tapir($S0, kv :flat :named)
- L2:
- .tailcall _test_prove(kv :flat :named)
-.end
-
=over 4
-=item harness_exec
-
-the default value is with perl
-
-=item harness_files
-
-the default value is "t/*.t"
-
-=cut
-
-.sub '_test_harness' :anon
- .param pmc kv :slurpy :named
- .local string cmd
- $I0 = exists kv['harness_exec']
- unless $I0 goto L1
- cmd = kv['harness_exec']
- goto L2
- L1:
- cmd = "perl -I"
- $S0 = get_libdir()
- cmd .= $S0
- cmd .= "/tools/lib"
- L2:
- cmd .= " t/harness "
- $S0 = get_value('harness_files', "t/*.t" :named('default'), kv :flat :named)
- cmd .= $S0
- system(cmd, 1 :named('verbose'))
-.end
+=item prove_exec / test_exec
-=item prove_exec
+option --exec of prove / tapir
-option --exec of prove
-
-=item prove_files
+=item prove_files / test_files
the default value is "t/*.t"
@@ -1983,111 +2035,78 @@
=cut
-.sub '_test_prove' :anon
+.sub '_test' :anon
.param pmc kv :slurpy :named
- .local string cmd
- cmd = "prove"
- $I0 = exists kv['prove_exec']
- unless $I0 goto L1
- $S0 = get_prove_version()
- $S0 = substr $S0, 0, 1
- unless $S0 == "3" goto L3
- cmd .= " --exec="
- goto L4
- L3:
- cmd .= " --perl="
- L4:
- $S0 = kv['prove_exec']
- $I0 = index $S0, ' '
- if $I0 < 0 goto L2
- cmd .= "\""
- L2:
- cmd .= $S0
- if $I0 < 0 goto L1
- cmd .= "\""
- L1:
- cmd .= " "
- $S0 = get_value('prove_files', "t/*.t" :named('default'), kv :flat :named)
- cmd .= $S0
- system(cmd, 1 :named('verbose'))
-.end
-
-.sub 'get_prove_version' :anon
- $P0 = open 'prove --version', 'rp'
- $S0 = $P0.'readline'()
- $P0.'close'()
- $I1 = index $S0, "Test::Harness v"
- $I1 += 15
- $I2 = index $S0, " ", $I1
- $I3 = $I2 - $I1
- $S0 = substr $S0, $I1, $I3
- .return ($S0)
-.end
+ run_step('build', kv :flat :named)
-.sub '_test_tapir' :anon
- .param string tapir
- .param pmc kv :slurpy :named
- .local string cmd
- cmd = tapir
+ load_bytecode 'TAP/Harness.pbc'
+ .local pmc opts, files, harness, aggregate
+ opts = new 'Hash'
$I0 = exists kv['prove_exec']
unless $I0 goto L1
- cmd .= " --exec="
$S0 = kv['prove_exec']
- $I0 = index $S0, ' '
- if $I0 < 0 goto L2
- cmd .= "\""
- L2:
- cmd .= $S0
- if $I0 < 0 goto L1
- cmd .= "\""
+ opts['exec'] = $S0
L1:
- cmd .= " "
- $S0 = get_value('prove_files', "t/*.t" :named('default'), kv :flat :named)
- cmd .= $S0
- system(cmd, 1 :named('verbose'))
+ $I0 = exists kv['test_exec']
+ unless $I0 goto L2
+ $S0 = kv['test_exec']
+ opts['exec'] = $S0
+ L2:
+ $S0 = "t/*.t"
+ $I0 = exists kv['prove_files']
+ unless $I0 goto L3
+ $S0 = kv['prove_files']
+ L3:
+ $I0 = exists kv['test_files']
+ unless $I0 goto L4
+ $S0 = kv['test_files']
+ L4:
+ $P0 = glob($S0)
+ files = sort_strings($P0)
+ harness = new ['TAP';'Harness']
+ harness.'process_args'(opts)
+ aggregate = harness.'runtests'(files)
+ $I0 = aggregate.'has_errors'()
+ unless $I0 goto L5
+ die "test fails"
+ L5:
.end
-=head3 Step smoke
-
-Unless t/harness exists, run : prove --archive t/*.t
-
-=cut
-
-.sub '_smoke' :anon
- .param pmc kv :slurpy :named
- run_step('build', kv :flat :named)
- $I0 = file_exists('t/harness')
- if $I0 goto L1
- $S0 = get_prove_version()
- $S0 = substr $S0, 0, 1
- unless $S0 == "3" goto L2
- .tailcall _smoke_prove(kv :flat :named)
- L2:
- die "Require Test::Harness v3.x (option --archive)."
+.sub 'sort_strings'
+ .param pmc array
+ # currently, FixedStringArray hasn't the method sort.
+ # see TT #1356
+ $I0 = elements array
+ $P0 = new 'FixedPMCArray'
+ set $P0, $I0
+ $I0 = 0
+ $P1 = iter array
L1:
- die "Don't known how to smoke with t/harness."
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $P0[$I0] = $S0
+ inc $I0
+ goto L1
+ L2:
+ $P0.'sort'()
+ .return ($P0)
.end
-.sub '_clean_smoke' :anon
- .param pmc kv :slurpy :named
- $S0 = get_value('prove_archive', "report.tar.gz" :named('default'), kv :flat :named)
- unlink($S0, 1 :named('verbose'))
- unlink('meta.yml', 1 :named('verbose'))
-.end
+=head3 Step smoke
=over 4
-=item prove_exec
+=item prove_exec / test_exec
option --exec of prove
-=item prove_files
+=item prove_files / test_files
the default value is "t/*.t"
-=item prove_archive
+=item prove_archive / smolder_archive
-option --archive of prove
+option --archive of prove / tapir
the default value is report.tar.gz
@@ -2111,53 +2130,64 @@
=cut
-.sub '_smoke_prove' :anon
+.sub '_smoke' :anon
.param pmc kv :slurpy :named
- .local string cmd
- cmd = "prove"
+ run_step('build', kv :flat :named)
+
+ load_bytecode 'TAP/Harness.pbc'
+ .local pmc opts, files, harness, aggregate
+ opts = new 'Hash'
$I0 = exists kv['prove_exec']
unless $I0 goto L1
- cmd .= " --exec="
$S0 = kv['prove_exec']
- $I0 = index $S0, ' '
- if $I0 < 0 goto L2
- cmd .= "\""
- L2:
- cmd .= $S0
- if $I0 < 0 goto L1
- cmd .= "\""
+ opts['exec'] = $S0
L1:
- cmd .= " "
- $S0 = get_value('prove_files', "t/*.t" :named('default'), kv :flat :named)
- cmd .= $S0
- cmd .= " --archive="
+ $I0 = exists kv['test_exec']
+ unless $I0 goto L2
+ $S0 = kv['test_exec']
+ opts['exec'] = $S0
+ L2:
+ $S0 = "t/*.t"
+ $I0 = exists kv['prove_files']
+ unless $I0 goto L3
+ $S0 = kv['prove_files']
+ L3:
+ $I0 = exists kv['test_files']
+ unless $I0 goto L4
+ $S0 = kv['test_files']
+ L4:
+ $P0 = glob($S0)
+ files = sort_strings($P0)
+ harness = new ['TAP';'Harness';'Archive']
+ harness.'process_args'(opts)
.local string archive
+ archive = "report.tar.gz"
+ $I0 = exists kv['prove_archive']
+ unless $I0 goto L5
+ archive = kv['prove_archive']
+ L5:
+ $I0 = exists kv['smolder_archive']
+ unless $I0 goto L6
+ archive = kv['smolder_archive']
+ L6:
archive = get_value('prove_archive', "report.tar.gz" :named('default'), kv :flat :named)
- cmd .= archive
- system(cmd, 1 :named('verbose'), 1 :named('ignore_error'))
-
+ harness.'archive'(archive)
$I0 = exists kv['smolder_extra_properties']
- unless $I0 goto L4
- system('perl -MExtUtils::Command -e rm_rf tmp')
- cmd = "mkdir tmp && cd tmp && tar xzf ../"
- cmd .= archive
- system(cmd, 1 :named('verbose'))
-
+ unless $I0 goto L7
$P0 = kv['smolder_extra_properties']
- $S0 = mk_extra_properties($P0)
- say "append extra properties"
- append('tmp/meta.yml', $S0)
+ harness.'extra_props'($P0)
+ L7:
+ aggregate = harness.'runtests'(files)
- unlink(archive)
- cmd = "cd tmp && tar czf ../"
- cmd .= archive
- cmd .= " *"
- system(cmd, 1 :named('verbose'))
- system('perl -MExtUtils::Command -e rm_rf tmp')
- L4:
+ smolder_post(archive, kv :flat :named)
+.end
+.sub 'smolder_post' :anon
+ .param string archive
+ .param pmc kv :slurpy :named
+ .local string cmd
$I0 = exists kv['smolder_url']
- unless $I0 goto L5
+ unless $I0 goto L1
.local pmc config
config = get_config()
cmd = "curl -F architecture="
@@ -2170,57 +2200,49 @@
$S0 = config['revision']
cmd .= $S0
$I0 = exists kv['smolder_tags']
- unless $I0 goto L6
+ unless $I0 goto L2
cmd .= " -F tags=\""
$S0 = kv['smolder_tags']
cmd .= $S0
cmd .= "\""
- L6:
+ L2:
$I0 = exists kv['smolder_comments']
- unless $I0 goto L7
+ unless $I0 goto L3
cmd .= " -F comments=\""
$S0 = kv['smolder_comments']
cmd .= $S0
cmd .= "\""
- L7:
+ L3:
cmd .= " -F report_file=@"
cmd .= archive
cmd .= " "
$S0 = kv['smolder_url']
cmd .= $S0
system(cmd, 1 :named('verbose'))
- L5:
+ L1:
.end
-.sub 'mk_extra_properties' :anon
- .param pmc hash
- $S0 = "extra_properties:\n"
- $P0 = iter hash
- L1:
- unless $P0 goto L2
- .local string key, value
- key = shift $P0
- value = hash[key]
- if value == '' goto L1
- $S0 .= " "
- $S0 .= key
- $S0 .= ": "
- $S0 .= value
- $S0 .= "\n"
- goto L1
- L2:
- .return ($S0)
+.sub '_clean_smoke' :anon
+ .param pmc kv :slurpy :named
+ $S0 = get_value('prove_archive', "report.tar.gz" :named('default'), kv :flat :named)
+ unlink($S0, 1 :named('verbose'))
+ $S0 = get_value('smolder_archive', "report.tar.gz" :named('default'), kv :flat :named)
+ unlink($S0, 1 :named('verbose'))
.end
=head3 Step install
=over 4
-=item inst_bin ???
+=item inst_bin (useful ?)
+
+array of pathname or a single pathname
+
+=item inst_data
array of pathname or a single pathname
-=item inst_dynext ???
+=item inst_dynext (useful ?)
array of pathname or a single pathname
@@ -2303,6 +2325,11 @@
$P0 = kv['inst_lib']
get_install_lib(files, "library", $P0)
L5:
+ $I0 = exists kv['inst_data']
+ unless $I0 goto L6
+ $P0 = kv['inst_data']
+ get_install_data(files, $P0)
+ L6:
.return (files)
.end
@@ -2328,6 +2355,28 @@
L2:
.end
+.sub 'get_install_data' :anon
+ .param pmc files
+ .param pmc array
+ $S1 = get_datadir()
+ $S1 .= "/"
+ $I0 = does array, 'array'
+ if $I0 goto L1
+ $S0 = array
+ $S2 = $S1 . $S0
+ files[$S2] = $S0
+ goto L2
+ L1:
+ $P0 = iter array
+ L3:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $S2 = $S1 . $S0
+ files[$S2] = $S0
+ goto L3
+ L2:
+.end
+
.sub 'get_install_lib' :anon
.param pmc files
.param string dirname
@@ -2339,7 +2388,12 @@
$I0 = does array, 'array'
if $I0 goto L1
$S0 = array
- $S2 = $S1 . $S0
+ $S3 = $S0
+ $S2 = $S1 . $S3
+ $I0 = index $S0, "build/"
+ unless $I0 == 0 goto L0
+ $S3 = substr $S0, 6
+ L0:
files[$S2] = $S0
goto L2
L1:
@@ -2347,7 +2401,12 @@
L3:
unless $P0 goto L2
$S0 = shift $P0
- $S2 = $S1 . $S0
+ $S3 = $S0
+ $I0 = index $S0, "build/"
+ unless $I0 == 0 goto L4
+ $S3 = substr $S0, 6
+ L4:
+ $S2 = $S1 . $S3
files[$S2] = $S0
goto L3
L2:
@@ -2386,11 +2445,7 @@
unless $P0 goto L2
bin = shift $P0
pbc = hash[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = 'installable_' . $S0
- $S1 .= exe
+ $S1 = _mk_path_installable(pbc, exe)
$S2 = bindir . '/'
$S2 .= bin
$S2 .= exe
@@ -2679,7 +2734,7 @@
"requires" : {
"fetch" : ["%s"],
"build" : [],
- "test" : ["perl5"],
+ "test" : [],
"install" : [],
"runtime" : []
}
@@ -2735,10 +2790,10 @@
array of pathname or a single pathname
-=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pir_nqprx, pir_pir
+=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pir_nqprx, inc_pir, pir_pir
pbc_pbc, exe_pbc, installable_pbc, dynops, dynpmc, html_pod
-=item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
+=item inst_bin, inst_data, inst_dynext, inst_inc, inst_lang, inst_lib
=item harness_files, prove_files
@@ -2771,7 +2826,7 @@
needed = new 'Hash'
generated = new 'Hash'
- $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pir_nqprx pir_pir pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
+ $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pir_nqprx inc_pir pir_pir pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
L1:
unless $P0 goto L2
$S0 = shift $P0
@@ -2782,7 +2837,7 @@
goto L1
L2:
- $P0 = split ' ', 'inst_bin inst_dynext inst_inc inst_lang inst_lib doc_files'
+ $P0 = split ' ', 'inst_bin inst_data inst_dynext inst_inc inst_lang inst_lib doc_files'
L3:
unless $P0 goto L4
$S0 = shift $P0
@@ -2967,26 +3022,33 @@
.param pmc kv :slurpy :named
run_step('manifest', kv :flat :named)
+ load_bytecode 'Archive/Tar.pbc'
$S0 = slurp('MANIFEST')
$P0 = split "\n", $S0
$S0 = pop $P0
- $S0 = get_tarname('.tar.gz', kv :flat :named)
- $I0 = newer($S0, $P0)
+ .local string archive_file
+ archive_file = get_tarname('.tar.gz', kv :flat :named)
+ $I0 = newer(archive_file, $P0)
if $I0 goto L1
- $S0 = get_tarname('', kv :flat :named)
- copy_sdist($S0, $P0)
-
- .local string cmd
- cmd = 'tar -cvf ' . $S0
- cmd .= '.tar '
- cmd .= $S0
- system(cmd, 1 :named('verbose'))
-
- rmtree($S0)
-
- cmd = 'gzip --best ' . $S0
- cmd .= '.tar'
- system(cmd, 1 :named('verbose'))
+ .local pmc archive
+ archive = new ['Archive';'Tar']
+ $P1 = archive.'add_files'($P0 :flat)
+ .local string dir
+ dir = get_tarname('', kv :flat :named)
+ L2:
+ unless $P1 goto L3
+ $P2 = shift $P1
+ $S0 = $P2.'full_path'()
+ $S0 = '/' . $S0
+ $S0 = dir . $S0
+ $P2.'rename'($S0)
+ goto L2
+ L3:
+ $P0 = loadlib 'gziphandle'
+ $P0 = new 'GzipHandle'
+ $P0.'open'(archive_file, 'wb')
+ archive.'write'($P0)
+ $P0.'close'()
L1:
.end
@@ -2998,21 +3060,6 @@
unlink('MANIFEST', 1 :named('verbose'))
.end
-.sub 'copy_sdist' :anon
- .param string dirname
- .param pmc files
- mkdir(dirname)
- $S1 = dirname . "/"
- $P0 = iter files
- L1:
- unless $P0 goto L2
- $S0 = shift $P0
- $S2 = $S1 . $S0
- install($S0, $S2)
- goto L1
- L2:
-.end
-
.sub 'get_tarname' :anon
.param string ext
.param pmc kv :slurpy :named
@@ -3027,45 +3074,6 @@
.return ($S0)
.end
-=head3 Step sdist_bztar
-
-=cut
-
-.sub '_sdist_bztar' :anon
- .param pmc kv :slurpy :named
- run_step('manifest', kv :flat :named)
-
- $S0 = slurp('MANIFEST')
- $P0 = split "\n", $S0
- $S0 = pop $P0
- $S0 = get_tarname('.tar.bz2', kv :flat :named)
- $I0 = newer($S0, $P0)
- if $I0 goto L1
- $S0 = get_tarname('', kv :flat :named)
- copy_sdist($S0, $P0)
-
- .local string cmd
- cmd = 'tar -cvf ' . $S0
- cmd .= '.tar '
- cmd .= $S0
- system(cmd, 1 :named('verbose'))
-
- rmtree($S0)
-
- cmd = 'bzip2 ' . $S0
- cmd .= '.tar'
- system(cmd, 1 :named('verbose'))
- L1:
-.end
-
-.sub '_clean_bztar' :anon
- .param pmc kv :slurpy :named
-
- $S0 = get_tarname('.tar.bz2', kv :flat :named)
- unlink($S0, 1 :named('verbose'))
- unlink('MANIFEST', 1 :named('verbose'))
-.end
-
=head3 Step sdist_zip
=cut
@@ -3102,6 +3110,21 @@
unlink('MANIFEST', 1 :named('verbose'))
.end
+.sub 'copy_sdist' :anon
+ .param string dirname
+ .param pmc files
+ mkdir(dirname)
+ $S1 = dirname . "/"
+ $P0 = iter files
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $S2 = $S1 . $S0
+ install($S0, $S2)
+ goto L1
+ L2:
+.end
+
=head3 Step sdist_rpm
=cut
@@ -3176,7 +3199,7 @@
=item installable_pbc, dynops, dynpmc
-=item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
+=item inst_bin, inst_data, inst_dynext, inst_inc, inst_lang, inst_lib
=item setup
@@ -3419,7 +3442,7 @@
=item installable_pbc, dynops, dynpmc
-=item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
+=item inst_bin, inst_data, inst_dynext, inst_inc, inst_lang, inst_lib
=item setup
@@ -3909,7 +3932,7 @@
=item installable_pbc, dynops, dynpmc
-=item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
+=item inst_bin, inst_data, inst_dynext, inst_inc, inst_lang, inst_lib
=item doc_files
@@ -3931,11 +3954,7 @@
unless $P1 goto L1
bin = shift $P1
pbc = $P0[bin]
- $I0 = length pbc
- $I0 -= 4
- $S0 = substr pbc, 0, $I0
- $S1 = 'installable_' . $S0
- $S1 .= exe
+ $S1 = _mk_path_installable(pbc, exe)
$S2 = bin . exe
$I0 = newer($S2, $S1)
if $I0 goto L2
@@ -4206,9 +4225,6 @@
flags .= " "
$S0 = $P0['cc_hasjit']
flags .= $S0
- flags .= " "
- $S0 = $P0['cg_flag']
- flags .= $S0
.return (flags)
.end
@@ -4234,6 +4250,16 @@
.return ($S0)
.end
+=item get_datadir
+
+=cut
+
+.sub 'get_datadir'
+ $P0 = get_config()
+ $S0 = $P0['datadir']
+ .return ($S0)
+.end
+
=item get_exe
=cut
@@ -4596,662 +4622,6 @@
=back
-=head2 OS Utilities
-
-=over 4
-
-=item system
-
-=cut
-
-.sub 'system'
- .param string cmd
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- .param int ignore_error :named('ignore_error') :optional
- .param int has_ignore_error :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- say cmd
- L1:
- $I0 = spawnw cmd
- unless $I0 goto L2
- unless has_ignore_error goto L3
- if ignore_error goto L2
- L3:
- $S0 = "exit status: "
- $S1 = $I0
- $S0 .= $S1
- $S0 .= "\ncommand: "
- $S0 .= cmd
- $S0 .= "\n"
- die $S0
- L2:
- .return ($I0)
-.end
-
-.include 'stat.pasm'
-
-.sub 'file_exists'
- .param string filename
- $I0 = stat filename, .STAT_EXISTS
- .return ($I0)
-.end
-
-=item newer
-
-=cut
-
-.sub 'newer' :multi(string, pmc)
- .param string target
- .param pmc depends
- $I0 = does depends, 'array'
- if $I0 goto L1
- $S0 = depends
- .tailcall newer(target, $S0)
- L1:
- $I0 = stat target, .STAT_EXISTS
- unless $I0 goto L2
- $I0 = stat target, .STAT_FILESIZE
- unless $I0 goto L2
- goto L3
- L2:
- .return (0)
- L3:
- $I0 = stat target, .STAT_MODIFYTIME
- $P0 = iter depends
- L4:
- unless $P0 goto L5
- $S0 = shift $P0
- if $S0 == '' goto L4
- $I1 = stat $S0, .STAT_MODIFYTIME
- if $I1 < $I0 goto L4
- .return (0)
- L5:
- .return (1)
-.end
-
-.sub 'newer' :multi(string, string)
- .param string target
- .param string depend
- $I0 = stat target, .STAT_EXISTS
- unless $I0 goto L1
- $I0 = stat target, .STAT_FILESIZE
- unless $I0 goto L1
- goto L2
- L1:
- .return (0)
- L2:
- $I1 = stat target, .STAT_MODIFYTIME
- $I2 = stat depend, .STAT_MODIFYTIME
- $I0 = $I1 > $I2
- .return ($I0)
-.end
-
-.sub 'newer' :multi(pmc, pmc)
- .param pmc target
- .param pmc depend
- $S0 = target
- .tailcall newer($S0, depend)
-.end
-
-=item mkpath
-
-=cut
-
-.sub 'mkpath'
- .param string pathname
- .param int verbose :named('verbose') :optional
- $I1 = 1
- L1:
- $I1 = index pathname, '/', $I1
- if $I1 < 0 goto L2
- $S0 = substr pathname, 0, $I1
- inc $I1
- $I0 = stat $S0, .STAT_EXISTS
- if $I0 goto L1
- mkdir($S0, verbose :named('verbose'))
- goto L1
- L2:
- $I0 = stat pathname, .STAT_EXISTS
- if $I0 goto L3
- mkdir(pathname, verbose :named('verbose'))
- L3:
-.end
-
-=item mkdir
-
-=cut
-
-.sub 'mkdir'
- .param string dirname
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "mkdir "
- say dirname
- L1:
- $P0 = new 'OS'
- $I1 = 0o775
- push_eh _handler
- $P0.'mkdir'(dirname, $I1)
- pop_eh
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't mkdir '"
- $S0 .= dirname
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item install
-
-=cut
-
-.sub 'install'
- .param string src
- .param string dst
- .param int exe :named('exe') :optional
- .param int has_exe :opt_flag
- .param int verbose :named('verbose') :optional
- # mkpath
- $I1 = 1
- L1:
- $I1 = index dst, '/', $I1
- if $I1 < 0 goto L2
- $S0 = substr dst, 0, $I1
- inc $I1
- $I0 = stat $S0, .STAT_EXISTS
- if $I0 goto L1
- mkdir($S0, verbose :named('verbose'))
- goto L1
- L2:
- $I0 = newer(dst, src)
- if $I0 goto L3
- cp(src, dst, verbose :named('verbose'))
- unless has_exe goto L3
- unless exe goto L3
- $P0 = getinterp
- $P0 = $P0[.IGLOBALS_CONFIG_HASH]
- $I0 = $P0['cygwin']
- if $I0 goto L4
- $I0 = $P0['hpux']
- if $I0 goto L4
- goto L3
- L4:
- chmod(dst, 0o755, verbose :named('verbose'))
- L3:
-.end
-
-=item cp
-
-=cut
-
-.sub 'cp'
- .param string src
- .param string dst
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "cp "
- print src
- print " "
- say dst
- L1:
- $P0 = new 'FileHandle'
- push_eh _handler1
- $S0 = $P0.'readall'(src)
- pop_eh
- push_eh _handler2
- $P0.'open'(dst, 'w')
- pop_eh
- $P0.'puts'($S0)
- $P0.'close'()
- .return ()
- _handler1:
- .local pmc e
- .get_results (e)
- $S0 = "Can't open '"
- $S0 .= src
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
- _handler2:
- .local pmc e
- .get_results (e)
- $S0 = "Can't open '"
- $S0 .= dst
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item chmod
-
-=cut
-
-.sub 'chmod'
- .param string filename
- .param int mode
- .param int verbose :named('verbose') :optional
- # see TT #1322
- $P0 = get_config()
- .local string cmd
- cmd = $P0['perl']
- cmd .= " -MExtUtils::Command -e ExtUtils::Command::chmod "
- $P1 = new 'FixedIntegerArray'
- set $P1, 1
- $P1[0] = mode
- $S0 = sprintf '0%o', $P1
- cmd .= $S0
- cmd .= " "
- cmd .= filename
- system(cmd, verbose :named('verbose'))
-.end
-
-=item unlink
-
-=cut
-
-.sub 'unlink' :multi(string)
- .param string filename
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- $I0 = stat filename, .STAT_EXISTS
- unless $I0 goto L1
- $I0 = stat filename, .STAT_ISREG
- unless $I0 goto L1
- unless has_verbose goto L2
- unless verbose goto L2
- print "unlink "
- say filename
- L2:
- new $P0, 'OS'
- push_eh _handler
- $P0.'rm'(filename)
- pop_eh
- L1:
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't remove '"
- $S0 .= filename
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-.sub 'unlink' :multi(pmc)
- .param pmc list
- .param int verbose :named('verbose') :optional
- $I0 = does list, 'array'
- if $I0 goto L1
- $S0 = list
- unlink($S0, verbose :named('verbose'))
- goto L2
- L1:
- $P0 = iter list
- L3:
- unless $P0 goto L2
- $S0 = shift $P0
- unlink($S0, verbose :named('verbose'))
- goto L3
- L2:
-.end
-
-=item rmtree
-
-=cut
-
-.sub 'rmtree'
- .param string path
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- $I0 = stat path, .STAT_EXISTS
- unless $I0 goto L1
- $I0 = stat path, .STAT_ISDIR
- unless $I0 goto L1
- unless has_verbose goto L2
- unless verbose goto L2
- print "rmtree "
- say path
- L2:
- new $P0, 'OS'
- $P1 = $P0.'readdir'(path)
- push_eh _handler
- L3:
- unless $P1 goto L4
- $S0 = shift $P1
- if $S0 == '.' goto L3
- if $S0 == '..' goto L3
- $S1 = path . '/'
- $S1 .= $S0
- $I0 = stat $S1, .STAT_ISDIR
- unless $I0 goto L5
- rmtree($S1)
- goto L3
- L5:
- $P0.'rm'($S1)
- goto L3
- L4:
- push_eh _handler
- $S1 = path
- $P0.'rm'($S1)
- pop_eh
- L1:
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't remove '"
- $S0 .= $S1
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item basename
-
-=cut
-
-.sub 'basename'
- .param string path
- $I0 = 0
- L1:
- $I1 = index path, '/', $I0
- if $I1 < 0 goto L2
- $I0 = $I1 + 1
- goto L1
- L2:
- $S0 = substr path, $I0
- .return ($S0)
-.end
-
-=item dirname
-
-=cut
-
-.sub 'dirname'
- .param string path
- unless path goto L3
- $I0 = 0
- L1:
- $I1 = index path, '/', $I0
- if $I1 < 0 goto L2
- $I0 = $I1 + 1
- goto L1
- L2:
- dec $I0
- unless $I0 > 0 goto L3
- $S0 = substr path, 0, $I0
- .return ($S0)
- L3:
- .return ('.')
-.end
-
-=item cwd
-
-=cut
-
-.sub 'cwd'
- new $P0, 'OS'
- $S0 = $P0.'cwd'()
- $P0 = split "\\", $S0
- $S0 = join "/", $P0
- .return ($S0)
-.end
-
-=item chdir
-
-=cut
-
-.sub 'chdir'
- .param string dirname
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "cd "
- say dirname
- L1:
- new $P0, 'OS'
- push_eh _handler
- $P0.'chdir'(dirname)
- pop_eh
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't chdir '"
- $S0 .= dirname
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item chomp
-
-=cut
-
-.include 'cclass.pasm'
-
-.sub 'chomp'
- .param string str
- $I0 = index str, "\r"
- if $I0 < 0 goto L1
- str = substr str, 0, $I0
- L1:
- $I1 = index str, "\n"
- if $I1 < 0 goto L2
- str = substr str, 0, $I1
- L2:
- .return (str)
-.end
-
-=item glob
-
-=cut
-
-.sub 'glob'
- .param string patterns
- $P0 = new 'ResizableStringArray'
- $P1 = split ' ', patterns
- L1:
- unless $P1 goto L2
- .local string pattern
- pattern = shift $P1
- $I0 = index pattern, '*'
- unless $I0 < 0 goto L3
- $I0 = index pattern, '?'
- unless $I0 < 0 goto L3
- $I0 = index pattern, '['
- unless $I0 < 0 goto L3
- $I0 = stat pattern, .STAT_EXISTS
- unless $I0 goto L1
- push $P0, pattern
- goto L1
- L3:
- .local pmc matcher
- load_bytecode 'PGE/Glob.pbc'
- $P2 = compreg 'PGE::Glob'
- matcher = $P2.'compile'(pattern)
- $S0 = dirname(pattern)
- $P3 = glob($S0)
- $P4 = new 'OS'
- L4:
- unless $P3 goto L1
- .local string dir
- dir = shift $P3
- $I0 = stat dir, .STAT_ISDIR
- unless $I0 goto L4
- $S0 = basename(dir)
- $P5 = $P4.'readdir'(dir)
- L5:
- unless $P5 goto L4
- $S0 = shift $P5
- if $S0 == '.' goto L5
- if $S0 == '..' goto L5
- if dir == '.' goto L6
- $S1 = dir . '/'
- $S0 = $S1 . $S0
- L6:
- $P6 = matcher($S0)
- unless $P6 goto L5
- push $P0, $S0
- goto L5
- L2:
- .return ($P0)
-.end
-
-=item getenv
-
-=cut
-
-.sub 'getenv'
- .param string name
- new $P0, 'Env'
- $S0 = $P0[name]
- .return ($S0)
-.end
-
-=item setenv
-
-=cut
-
-.sub 'setenv'
- .param string name
- .param string value
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "setenv "
- print name
- print " = "
- say value
- L1:
- new $P0, 'Env'
- $P0[name] = value
-.end
-
-=item slurp
-
-=cut
-
-.sub 'slurp'
- .param string filename
- $P0 = new 'FileHandle'
- push_eh _handler
- $S0 = $P0.'readall'(filename)
- pop_eh
- .return ($S0)
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't open '"
- $S0 .= filename
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item spew
-
-=cut
-
-.sub 'spew'
- .param string filename
- .param string content
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "creat "
- say filename
- L1:
- $P0 = new 'FileHandle'
- push_eh _handler
- $P0.'open'(filename, 'w')
- pop_eh
- $P0.'puts'(content)
- $P0.'close'()
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't open '"
- $S0 .= filename
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=item append
-
-=cut
-
-.sub 'append'
- .param string filename
- .param string content
- .param int verbose :named('verbose') :optional
- .param int has_verbose :opt_flag
- unless has_verbose goto L1
- unless verbose goto L1
- print "append "
- say filename
- L1:
- $P0 = new 'FileHandle'
- push_eh _handler
- $P0.'open'(filename, 'a')
- pop_eh
- $P0.'puts'(content)
- $P0.'close'()
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- $S0 = "Can't open '"
- $S0 .= filename
- $S0 .= "' ("
- $S1 = err
- $S0 .= $S1
- $S0 .= ")\n"
- e = $S0
- rethrow e
-.end
-
-=back
-
=head1 AUTHOR
Francois Perrad
Copied: branches/ops_pct/runtime/parrot/library/osutils.pir (from r46301, trunk/runtime/parrot/library/osutils.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/runtime/parrot/library/osutils.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/runtime/parrot/library/osutils.pir)
@@ -0,0 +1,865 @@
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+osutils - Parrot OS Utilities
+
+=head2 DESCRIPTION
+
+=over 4
+
+=cut
+
+.sub '' :init :load :anon
+ $P0 = loadlib 'os'
+.end
+
+=item system
+
+=cut
+
+.sub 'system'
+ .param string cmd
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ .param int ignore_error :named('ignore_error') :optional
+ .param int has_ignore_error :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ say cmd
+ L1:
+ $I0 = spawnw cmd
+ unless $I0 goto L2
+ unless has_ignore_error goto L3
+ if ignore_error goto L2
+ L3:
+ $S0 = "exit status: "
+ $S1 = $I0
+ $S0 .= $S1
+ $S0 .= "\ncommand: "
+ $S0 .= cmd
+ $S0 .= "\n"
+ die $S0
+ L2:
+ .return ($I0)
+.end
+
+.include 'stat.pasm'
+
+.sub 'file_exists'
+ .param string filename
+ $I0 = stat filename, .STAT_EXISTS
+ .return ($I0)
+.end
+
+=item newer
+
+=cut
+
+.sub 'newer' :multi(string, pmc)
+ .param string target
+ .param pmc depends
+ $I0 = does depends, 'array'
+ if $I0 goto L1
+ $S0 = depends
+ .tailcall newer(target, $S0)
+ L1:
+ $I0 = stat target, .STAT_EXISTS
+ unless $I0 goto L2
+ $I0 = stat target, .STAT_FILESIZE
+ unless $I0 goto L2
+ goto L3
+ L2:
+ .return (0)
+ L3:
+ $I0 = stat target, .STAT_MODIFYTIME
+ $P0 = iter depends
+ L4:
+ unless $P0 goto L5
+ $S0 = shift $P0
+ if $S0 == '' goto L4
+ $I1 = stat $S0, .STAT_MODIFYTIME
+ if $I1 < $I0 goto L4
+ .return (0)
+ L5:
+ .return (1)
+.end
+
+.sub 'newer' :multi(string, string)
+ .param string target
+ .param string depend
+ $I0 = stat target, .STAT_EXISTS
+ unless $I0 goto L1
+ $I0 = stat target, .STAT_FILESIZE
+ unless $I0 goto L1
+ goto L2
+ L1:
+ .return (0)
+ L2:
+ $I1 = stat target, .STAT_MODIFYTIME
+ $I2 = stat depend, .STAT_MODIFYTIME
+ $I0 = $I1 > $I2
+ .return ($I0)
+.end
+
+.sub 'newer' :multi(pmc, pmc)
+ .param pmc target
+ .param pmc depend
+ $S0 = target
+ .tailcall newer($S0, depend)
+.end
+
+=item mkpath
+
+=cut
+
+.sub 'mkpath'
+ .param string pathname
+ .param int verbose :named('verbose') :optional
+ $I1 = 1
+ L1:
+ $I1 = index pathname, '/', $I1
+ if $I1 < 0 goto L2
+ $S0 = substr pathname, 0, $I1
+ inc $I1
+ $I0 = stat $S0, .STAT_EXISTS
+ if $I0 goto L1
+ $I0 = length $S0
+ if $I0 != 2 goto L3
+ $I0 = index $S0, ':'
+ if $I0 == 1 goto L1
+ L3:
+ mkdir($S0, verbose :named('verbose'))
+ goto L1
+ L2:
+ $I0 = stat pathname, .STAT_EXISTS
+ if $I0 goto L4
+ mkdir(pathname, verbose :named('verbose'))
+ L4:
+.end
+
+=item mkdir
+
+=cut
+
+.sub 'mkdir'
+ .param string dirname
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "mkdir "
+ say dirname
+ L1:
+ $P0 = new 'OS'
+ $I1 = 0o775
+ push_eh _handler
+ $P0.'mkdir'(dirname, $I1)
+ pop_eh
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't mkdir '"
+ $S0 .= dirname
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item install
+
+=cut
+
+.include 'iglobals.pasm'
+
+.sub 'install'
+ .param string src
+ .param string dst
+ .param int exe :named('exe') :optional
+ .param int has_exe :opt_flag
+ .param int verbose :named('verbose') :optional
+ # mkpath
+ $I1 = 1
+ L1:
+ $I1 = index dst, '/', $I1
+ if $I1 < 0 goto L2
+ $S0 = substr dst, 0, $I1
+ inc $I1
+ $I0 = stat $S0, .STAT_EXISTS
+ if $I0 goto L1
+ mkdir($S0, verbose :named('verbose'))
+ goto L1
+ L2:
+ $I0 = newer(dst, src)
+ if $I0 goto L3
+ cp(src, dst, verbose :named('verbose'))
+ unless has_exe goto L3
+ unless exe goto L3
+ $P0 = getinterp
+ $P0 = $P0[.IGLOBALS_CONFIG_HASH]
+ $I0 = $P0['win32']
+ if $I0 goto L3
+ chmod(dst, 0o755, verbose :named('verbose'))
+ L3:
+.end
+
+=item cp
+
+=cut
+
+.sub 'cp'
+ .param string src
+ .param string dst
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "cp "
+ print src
+ print " "
+ say dst
+ L1:
+ $P0 = new 'FileHandle'
+ push_eh _handler1
+ $S0 = $P0.'readall'(src)
+ pop_eh
+ push_eh _handler2
+ $P0.'open'(dst, 'w')
+ pop_eh
+ $P0.'puts'($S0)
+ $P0.'close'()
+ .return ()
+ _handler1:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= src
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+ _handler2:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= dst
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item chmod
+
+=cut
+
+.sub 'chmod'
+ .param string filename
+ .param int mode
+ .param int verbose :named('verbose') :optional
+ $P0 = new 'OS'
+ $P0.'chmod'(filename, mode)
+.end
+
+=item unlink
+
+=cut
+
+.sub 'unlink' :multi(string)
+ .param string filename
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ $I0 = stat filename, .STAT_EXISTS
+ unless $I0 goto L1
+ $I0 = stat filename, .STAT_ISREG
+ unless $I0 goto L1
+ unless has_verbose goto L2
+ unless verbose goto L2
+ print "unlink "
+ say filename
+ L2:
+ new $P0, 'OS'
+ push_eh _handler
+ $P0.'rm'(filename)
+ pop_eh
+ L1:
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't remove '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+.sub 'unlink' :multi(pmc)
+ .param pmc list
+ .param int verbose :named('verbose') :optional
+ $I0 = does list, 'array'
+ if $I0 goto L1
+ $S0 = list
+ unlink($S0, verbose :named('verbose'))
+ goto L2
+ L1:
+ $P0 = iter list
+ L3:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ unlink($S0, verbose :named('verbose'))
+ goto L3
+ L2:
+.end
+
+=item rmtree
+
+=cut
+
+.sub 'rmtree'
+ .param string path
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ $I0 = stat path, .STAT_EXISTS
+ unless $I0 goto L1
+ $I0 = stat path, .STAT_ISDIR
+ unless $I0 goto L1
+ unless has_verbose goto L2
+ unless verbose goto L2
+ print "rmtree "
+ say path
+ L2:
+ new $P0, 'OS'
+ $P1 = $P0.'readdir'(path)
+ push_eh _handler
+ L3:
+ unless $P1 goto L4
+ $S0 = shift $P1
+ if $S0 == '.' goto L3
+ if $S0 == '..' goto L3
+ $S1 = path . '/'
+ $S1 .= $S0
+ $I0 = stat $S1, .STAT_ISDIR
+ unless $I0 goto L5
+ rmtree($S1)
+ goto L3
+ L5:
+ $P0.'rm'($S1)
+ goto L3
+ L4:
+ push_eh _handler
+ $S1 = path
+ $P0.'rm'($S1)
+ pop_eh
+ L1:
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't remove '"
+ $S0 .= $S1
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item basename
+
+=cut
+
+.sub 'basename'
+ .param string path
+ $I0 = 0
+ L1:
+ $I1 = index path, '/', $I0
+ if $I1 < 0 goto L2
+ $I0 = $I1 + 1
+ goto L1
+ L2:
+ $S0 = substr path, $I0
+ .return ($S0)
+.end
+
+=item dirname
+
+=cut
+
+.sub 'dirname'
+ .param string path
+ unless path goto L3
+ $I0 = 0
+ L1:
+ $I1 = index path, '/', $I0
+ if $I1 < 0 goto L2
+ $I0 = $I1 + 1
+ goto L1
+ L2:
+ dec $I0
+ unless $I0 > 0 goto L3
+ $S0 = substr path, 0, $I0
+ .return ($S0)
+ L3:
+ .return ('.')
+.end
+
+=item cwd
+
+=cut
+
+.sub 'cwd'
+ new $P0, 'OS'
+ $S0 = $P0.'cwd'()
+ $P0 = split "\\", $S0
+ $S0 = join "/", $P0
+ .return ($S0)
+.end
+
+=item chdir
+
+=cut
+
+.sub 'chdir'
+ .param string dirname
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "cd "
+ say dirname
+ L1:
+ new $P0, 'OS'
+ push_eh _handler
+ $P0.'chdir'(dirname)
+ pop_eh
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't chdir '"
+ $S0 .= dirname
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item chomp
+
+=cut
+
+.include 'cclass.pasm'
+
+.sub 'chomp'
+ .param string str
+ $I0 = index str, "\r"
+ if $I0 < 0 goto L1
+ str = substr str, 0, $I0
+ L1:
+ $I1 = index str, "\n"
+ if $I1 < 0 goto L2
+ str = substr str, 0, $I1
+ L2:
+ .return (str)
+.end
+
+=item glob
+
+=cut
+
+.sub 'glob'
+ .param string patterns
+ $P0 = new 'ResizableStringArray'
+ $P1 = split ' ', patterns
+ L1:
+ unless $P1 goto L2
+ .local string pattern
+ pattern = shift $P1
+ $I0 = index pattern, '*'
+ unless $I0 < 0 goto L3
+ $I0 = index pattern, '?'
+ unless $I0 < 0 goto L3
+ $I0 = index pattern, '['
+ unless $I0 < 0 goto L3
+ $I0 = stat pattern, .STAT_EXISTS
+ unless $I0 goto L1
+ push $P0, pattern
+ goto L1
+ L3:
+ .local pmc matcher
+ load_bytecode 'PGE/Glob.pbc'
+ $P2 = compreg 'PGE::Glob'
+ matcher = $P2.'compile'(pattern)
+ $S0 = dirname(pattern)
+ $P3 = glob($S0)
+ $P4 = new 'OS'
+ L4:
+ unless $P3 goto L1
+ .local string dir
+ dir = shift $P3
+ $I0 = stat dir, .STAT_ISDIR
+ unless $I0 goto L4
+ $S0 = basename(dir)
+ $P5 = $P4.'readdir'(dir)
+ L5:
+ unless $P5 goto L4
+ $S0 = shift $P5
+ if $S0 == '.' goto L5
+ if $S0 == '..' goto L5
+ if dir == '.' goto L6
+ $S1 = dir . '/'
+ $S0 = $S1 . $S0
+ L6:
+ $P6 = matcher($S0)
+ unless $P6 goto L5
+ push $P0, $S0
+ goto L5
+ L2:
+ .return ($P0)
+.end
+
+=item getenv
+
+=cut
+
+.sub 'getenv'
+ .param string name
+ new $P0, 'Env'
+ $S0 = $P0[name]
+ .return ($S0)
+.end
+
+=item setenv
+
+=cut
+
+.sub 'setenv'
+ .param string name
+ .param string value
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "setenv "
+ print name
+ print " = "
+ say value
+ L1:
+ new $P0, 'Env'
+ $P0[name] = value
+.end
+
+=item slurp
+
+=cut
+
+.sub 'slurp'
+ .param string filename
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ $S0 = $P0.'readall'(filename)
+ pop_eh
+ .return ($S0)
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item spew
+
+=cut
+
+.sub 'spew'
+ .param string filename
+ .param string content
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "creat "
+ say filename
+ L1:
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ $P0.'open'(filename, 'w')
+ pop_eh
+ $P0.'puts'(content)
+ $P0.'close'()
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item append
+
+=cut
+
+.sub 'append'
+ .param string filename
+ .param string content
+ .param int verbose :named('verbose') :optional
+ .param int has_verbose :opt_flag
+ unless has_verbose goto L1
+ unless verbose goto L1
+ print "append "
+ say filename
+ L1:
+ $P0 = new 'FileHandle'
+ push_eh _handler
+ $P0.'open'(filename, 'a')
+ pop_eh
+ $P0.'puts'(content)
+ $P0.'close'()
+ .return ()
+ _handler:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+.end
+
+=item tempdir
+
+=cut
+
+.sub 'tempdir'
+ .param string suffix :named('SUFFIX') :optional
+ .param int has_suffix :opt_flag
+ $S0 = tmpdir()
+ $S0 .= '/TEMPXXX'
+ unless has_suffix goto L1
+ $S0 .= suffix
+ L1:
+ .tailcall _gettemp($S0)
+.end
+
+.sub '_gettemp' :anon
+ .param string template
+ $P0 = split "/", template
+ $S0 = pop $P0
+ .const string TEMPCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ $P1 = split '', TEMPCHARS
+ $I1 = elements $P1
+ load_bytecode 'Math/Rand.pbc'
+ .local pmc rand
+ rand = get_global [ 'Math'; 'Rand' ], 'rand'
+ .local pmc srand
+ srand = get_global [ 'Math'; 'Rand' ], 'srand'
+ $I0 = time
+ srand($I0)
+ REDO:
+ $S1 = ''
+ $P2 = split '', $S0
+ L1:
+ unless $P2 goto L2
+ $S2 = shift $P2
+ unless $S2 == 'X' goto L3
+ $I0 = rand()
+ $I0 = $I0 % $I1
+ $S2 = $P1[$I0]
+ L3:
+ $S1 .= $S2
+ goto L1
+ L2:
+ push $P0, $S1
+ $S0 = join "/", $P0
+ $I0 = stat $S0, .STAT_EXISTS
+ if $I0 goto REDO
+ .return ($S0)
+.end
+
+=item tmpdir
+
+=cut
+
+.sub 'tmpdir'
+ .local pmc env, dirlist
+ env = new 'Env'
+ dirlist = new 'ResizableStringArray'
+ $P0 = getinterp
+ $P0 = $P0[.IGLOBALS_CONFIG_HASH]
+ $I0 = $P0['win32']
+ unless $I0 goto L1
+ $I0 = exists env['TMPDIR']
+ unless $I0 goto L2
+ $S0 = env['TMPDIR']
+ push dirlist, $S0
+ L2:
+ $I0 = exists env['TEMP']
+ unless $I0 goto L3
+ $S0 = env['TEMP']
+ push dirlist, $S0
+ L3:
+ $I0 = exists env['TMP']
+ unless $I0 goto L4
+ $S0 = env['TMP']
+ push dirlist, $S0
+ L4:
+ push dirlist, 'c:/system/temp'
+ push dirlist, 'c:/temp'
+ push dirlist, '/tmp'
+ push dirlist, '/'
+ goto L5
+ L1:
+ $I0 = exists env['TMPDIR']
+ unless $I0 goto L6
+ $S0 = env['TMPDIR']
+ push dirlist, $S0
+ L6:
+ push dirlist, '/tmp'
+ L5:
+ unless dirlist goto L7
+ $S0 = shift dirlist
+ $I0 = stat $S0, .STAT_EXISTS
+ unless $I0 goto L5
+ $I0 = stat $S0, .STAT_ISDIR
+ unless $I0 goto L5
+ $P0 = split "\\", $S0
+ $S0 = join "/", $P0
+ .return ($S0)
+ L7:
+.end
+
+=item gzip
+
+=cut
+
+.sub 'gzip'
+ .param string filename
+ .local pmc fh, gh
+ fh = new 'FileHandle'
+ push_eh _handler1
+ $S0 = fh.'readall'(filename)
+ $I0 = length $S0
+ pop_eh
+ $P0 = loadlib 'gziphandle'
+ push_eh _handler2
+ gh = new 'GzipHandle'
+ $S1 = filename . '.gz'
+ gh.'open'($S1, 'wb')
+ gh.'puts'($S0)
+ gh.'close'()
+ unlink(filename)
+ .return ()
+ _handler1:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't open '"
+ $S0 .= filename
+ $S0 .= "' ("
+ $S1 = err
+ $S0 .= $S1
+ $S0 .= ")\n"
+ e = $S0
+ rethrow e
+ _handler2:
+ .local pmc e
+ .get_results (e)
+ $S0 = "Can't gzip '"
+ $S0 .= filename
+ $S0 .= "'\n"
+ e = $S0
+ rethrow e
+.end
+
+=item catfile
+
+=cut
+
+.sub 'catfile'
+ .param pmc args :slurpy
+ .param int native :named('native') :optional
+ .param int has_native :opt_flag
+ .local string slash
+ slash = '/'
+ unless has_native goto L1
+ unless native goto L1
+ $P0 = getinterp
+ $P0 = $P0[.IGLOBALS_CONFIG_HASH]
+ slash = $P0['slash']
+ L1:
+ $S0 = join slash, args
+ .return ($S0)
+.end
+
+=item splitpath
+
+=cut
+
+.sub 'splitpath'
+ .param string path
+ .local string volume, directories, file
+ volume = ''
+ $I0 = index path, ':'
+ unless $I0 == 1 goto L1
+ volume = substr path, 0, 2
+ path = substr path, 2
+ L1:
+ $I0 = 0
+ L2:
+ $I1 = index path, '/', $I0
+ if $I1 < 0 goto L3
+ $I0 = $I1 + 1
+ goto L2
+ L3:
+ file = substr path, $I0
+ directories = ''
+ dec $I0
+ unless $I0 > 0 goto L4
+ directories = substr path, 0, $I0
+ L4:
+ .return (volume, directories, file)
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/runtime/parrot/library/pcore.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/pcore.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/pcore.pir Wed May 5 08:45:29 2010 (r46302)
@@ -7,7 +7,7 @@
.namespace [ 'Sub' ]
# implementation Sub.get_lexenv :method
-.sub get_lexenv :method
+.sub get_lexenv :method :nsentry
.local pmc env, pad, interp
env = new 'ResizablePMCArray'
.local int level
Modified: branches/ops_pct/runtime/parrot/library/uuid.pir
==============================================================================
--- branches/ops_pct/runtime/parrot/library/uuid.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/runtime/parrot/library/uuid.pir Wed May 5 08:45:29 2010 (r46302)
@@ -289,7 +289,7 @@
.sub 'hex' :anon
.param string in
.const string xdigits = '0123456789ABCDEF'
- upcase in
+ in = upcase in
$S1 = substr in, 0, 1
$I1 = index xdigits, $S1
$I1 *= 16
Modified: branches/ops_pct/src/byteorder.c
==============================================================================
--- branches/ops_pct/src/byteorder.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/byteorder.c Wed May 5 08:45:29 2010 (r46302)
@@ -10,7 +10,7 @@
These are assigned to a vtable when the PBC file is loaded.
-If the vtable method for conversion from the native byteorder is called,
+If the vtable function for conversion from the native byteorder is called,
it is a I<no op> and will work, but the caller should know if the
byteorder in the PBC file is native and skip the conversion and just map
it in.
Modified: branches/ops_pct/src/call/args.c
==============================================================================
--- branches/ops_pct/src/call/args.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/call/args.c Wed May 5 08:45:29 2010 (r46302)
@@ -71,85 +71,18 @@
INTVAL param_index,
INTVAL param_flags,
ARGIN(void *arg_info),
- ARGIN(struct pcc_set_funcs *accessor))
+ ARGMOD(struct pcc_set_funcs *accessor))
__attribute__nonnull__(1)
__attribute__nonnull__(4)
- __attribute__nonnull__(5);
-
-static void assign_default_result_value(PARROT_INTERP,
- ARGMOD(PMC *results),
- INTVAL index,
- INTVAL result_flags)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*results);
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*accessor);
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC* clone_key_arg(PARROT_INTERP, ARGIN(PMC *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void csr_fill_integer(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key,
- INTVAL value)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void csr_fill_number(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key,
- FLOATVAL value)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void csr_fill_pmc(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key,
- ARGIN_NULLOK(PMC *value))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void csr_fill_string(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key,
- ARGIN_NULLOK(STRING *value))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static void* csr_get_pointer_keyed_int(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static STRING* csr_get_string_keyed_int(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL key)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void csr_push_pointer(PARROT_INTERP,
- ARGIN(PMC *self),
- ARGIN_NULLOK(void *value),
- INTVAL type)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static void** csr_reallocate_return_values(PARROT_INTERP,
- ARGIN(PMC *self),
- INTVAL size)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static INTVAL csr_returns_count(PARROT_INTERP, ARGIN(PMC *self))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
static void dissect_aggregate_arg(PARROT_INTERP,
ARGMOD(PMC *call_object),
ARGIN(PMC *aggregate))
@@ -161,8 +94,8 @@
static void extract_named_arg_from_op(PARROT_INTERP,
ARGMOD(PMC *call_object),
ARGIN(STRING *name),
- ARGIN(PMC * const raw_sig),
- ARGIN(opcode_t * const raw_args),
+ ARGIN(PMC *raw_sig),
+ ARGIN(opcode_t *raw_args),
INTVAL arg_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -175,224 +108,129 @@
ARGMOD_NULLOK(PMC *call_object),
ARGIN(PMC *raw_sig),
ARGIN(void *arg_info),
- ARGIN(struct pcc_set_funcs *accessor))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*call_object);
-
-static void fill_results(PARROT_INTERP,
- ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig),
- ARGIN(void *return_info),
- ARGIN(struct pcc_get_funcs *accessor))
+ ARGIN(struct pcc_set_funcs *accessor),
+ Errors_classes direction)
__attribute__nonnull__(1)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
__attribute__nonnull__(5)
FUNC_MODIFIES(*call_object);
-PARROT_CANNOT_RETURN_NULL
-static INTVAL intval_arg_from_c_args(PARROT_INTERP,
- ARGIN(va_list *args),
- SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static INTVAL intval_arg_from_continuation(PARROT_INTERP,
- ARGIN(PMC *cs),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static INTVAL intval_arg_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_args),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static INTVAL intval_constant_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+PARROT_WARN_UNUSED_RESULT
+static INTVAL intval_constant_from_op(SHIM_INTERP,
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
-static INTVAL intval_constant_from_varargs(PARROT_INTERP,
- ARGIN(void *data),
- INTVAL index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
+static INTVAL intval_constant_from_varargs(SHIM_INTERP,
+ SHIM(void *data),
+ SHIM(INTVAL index));
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static INTVAL* intval_param_from_c_args(PARROT_INTERP,
+static INTVAL* intval_param_from_c_args(SHIM_INTERP,
ARGIN(va_list *args),
SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static INTVAL* intval_param_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL numval_arg_from_c_args(PARROT_INTERP,
- ARGIN(va_list *args),
- SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL numval_arg_from_continuation(PARROT_INTERP,
- ARGIN(PMC *cs),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL numval_arg_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_args),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
+PARROT_WARN_UNUSED_RESULT
static FLOATVAL numval_constant_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static FLOATVAL numval_constant_from_varargs(PARROT_INTERP,
- ARGIN(void *data),
- INTVAL index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
+static FLOATVAL numval_constant_from_varargs(SHIM_INTERP,
+ SHIM(void *data),
+ SHIM(INTVAL index));
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static FLOATVAL* numval_param_from_c_args(PARROT_INTERP,
+static FLOATVAL* numval_param_from_c_args(SHIM_INTERP,
ARGIN(va_list *args),
SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static FLOATVAL* numval_param_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CAN_RETURN_NULL
static void parse_signature_string(PARROT_INTERP,
ARGIN(const char *signature),
- ARGMOD(PMC **arg_flags),
- ARGMOD(PMC **return_flags))
+ ARGMOD(PMC **arg_flags))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*arg_flags)
- FUNC_MODIFIES(*return_flags);
-
-PARROT_CANNOT_RETURN_NULL
-static PMC* pmc_arg_from_c_args(PARROT_INTERP,
- ARGIN(va_list *args),
- SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static PMC* pmc_arg_from_continuation(PARROT_INTERP,
- ARGIN(PMC *cs),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static PMC* pmc_arg_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_args),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ FUNC_MODIFIES(*arg_flags);
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static PMC* pmc_constant_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
-static PMC* pmc_constant_from_varargs(PARROT_INTERP,
- ARGIN(void *data),
- INTVAL index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
+static PMC* pmc_constant_from_varargs(SHIM_INTERP,
+ SHIM(void *data),
+ SHIM(INTVAL index));
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static PMC** pmc_param_from_c_args(PARROT_INTERP,
+static PMC** pmc_param_from_c_args(SHIM_INTERP,
ARGIN(va_list *args),
SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static PMC** pmc_param_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-static STRING* string_arg_from_c_args(PARROT_INTERP,
- ARGIN(va_list *args),
- SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static STRING* string_arg_from_continuation(PARROT_INTERP,
- ARGIN(PMC *cs),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-static STRING* string_arg_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_args),
- INTVAL arg_index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static STRING* string_constant_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
-static STRING* string_constant_from_varargs(PARROT_INTERP,
- ARGIN(void *data),
- INTVAL index)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
+static STRING* string_constant_from_varargs(SHIM_INTERP,
+ SHIM(void *data),
+ SHIM(INTVAL index));
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static STRING** string_param_from_c_args(PARROT_INTERP,
+static STRING** string_param_from_c_args(SHIM_INTERP,
ARGIN(va_list *args),
SHIM(INTVAL param_index))
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING** string_param_from_op(PARROT_INTERP,
- ARGIN(opcode_t *raw_params),
+ ARGIN(const opcode_t *raw_params),
INTVAL param_index)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -401,39 +239,9 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(arg_info) \
, PARROT_ASSERT_ARG(accessor))
-#define ASSERT_ARGS_assign_default_result_value __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(results))
#define ASSERT_ARGS_clone_key_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(key))
-#define ASSERT_ARGS_csr_fill_integer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_fill_number __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_fill_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_fill_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_get_pointer_keyed_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_get_string_keyed_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_push_pointer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_reallocate_return_values __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
-#define ASSERT_ARGS_csr_returns_count __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(self))
#define ASSERT_ARGS_dissect_aggregate_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(call_object) \
@@ -449,97 +257,42 @@
, PARROT_ASSERT_ARG(raw_sig) \
, PARROT_ASSERT_ARG(arg_info) \
, PARROT_ASSERT_ARG(accessor))
-#define ASSERT_ARGS_fill_results __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_sig) \
- , PARROT_ASSERT_ARG(return_info) \
- , PARROT_ASSERT_ARG(accessor))
-#define ASSERT_ARGS_intval_arg_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
-#define ASSERT_ARGS_intval_arg_from_continuation __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cs))
-#define ASSERT_ARGS_intval_arg_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_args))
#define ASSERT_ARGS_intval_constant_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_intval_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(data))
+ PARROT_ASSERT_ARG(raw_params))
+#define ASSERT_ARGS_intval_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_intval_param_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
+ PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_intval_param_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_numval_arg_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
-#define ASSERT_ARGS_numval_arg_from_continuation __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cs))
-#define ASSERT_ARGS_numval_arg_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_args))
#define ASSERT_ARGS_numval_constant_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_numval_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_numval_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_numval_param_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
+ PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_numval_param_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
#define ASSERT_ARGS_parse_signature_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(signature) \
- , PARROT_ASSERT_ARG(arg_flags) \
- , PARROT_ASSERT_ARG(return_flags))
-#define ASSERT_ARGS_pmc_arg_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
-#define ASSERT_ARGS_pmc_arg_from_continuation __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cs))
-#define ASSERT_ARGS_pmc_arg_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_args))
+ , PARROT_ASSERT_ARG(arg_flags))
#define ASSERT_ARGS_pmc_constant_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_pmc_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_pmc_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_pmc_param_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
+ PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_pmc_param_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_string_arg_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
-#define ASSERT_ARGS_string_arg_from_continuation __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(cs))
-#define ASSERT_ARGS_string_arg_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(raw_args))
#define ASSERT_ARGS_string_constant_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
-#define ASSERT_ARGS_string_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_string_constant_from_varargs __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_string_param_from_c_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(args))
+ PARROT_ASSERT_ARG(args))
#define ASSERT_ARGS_string_param_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(raw_params))
@@ -549,7 +302,7 @@
/*
=item C<PMC* Parrot_pcc_build_sig_object_from_op(PARROT_INTERP, PMC *signature,
-PMC * const raw_sig, opcode_t * const raw_args)>
+PMC *raw_sig, opcode_t *raw_args)>
Take a raw signature and argument list from a set_args opcode and
convert it to a CallContext PMC.
@@ -563,26 +316,28 @@
PARROT_CANNOT_RETURN_NULL
PMC*
Parrot_pcc_build_sig_object_from_op(PARROT_INTERP, ARGIN_NULLOK(PMC *signature),
- ARGIN(PMC * const raw_sig), ARGIN(opcode_t * const raw_args))
+ ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_args))
{
ASSERT_ARGS(Parrot_pcc_build_sig_object_from_op)
- PMC *call_object;
PMC * const ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object;
INTVAL *int_array;
INTVAL arg_count;
- INTVAL arg_index;
+ INTVAL arg_index = 0;
if (PMC_IS_NULL(signature))
call_object = Parrot_pmc_new(interp, enum_class_CallContext);
- else
+ else {
call_object = signature;
+ VTABLE_morph(interp, call_object, PMCNULL);
+ }
/* this macro is much, much faster than the VTABLE STRING comparisons */
SETATTR_CallContext_arg_flags(interp, call_object, raw_sig);
GETATTR_FixedIntegerArray_size(interp, raw_sig, arg_count);
GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
- for (arg_index = 0; arg_index < arg_count; arg_index++) {
+ for (; arg_index < arg_count; ++arg_index) {
const INTVAL arg_flags = int_array[arg_index];
const INTVAL constant = PARROT_ARG_CONSTANT_ISSET(arg_flags);
const INTVAL raw_index = raw_args[arg_index + 2];
@@ -609,14 +364,12 @@
{
STRING *string_value;
if (constant)
- /* ensure that callees don't modify constant caller strings */
- string_value = Parrot_str_new_COW(interp,
- Parrot_pcc_get_string_constant(interp, ctx, raw_index));
+ string_value = Parrot_pcc_get_string_constant(interp, ctx, raw_index);
else
string_value = CTX_REG_STR(ctx, raw_index);
if (arg_flags & PARROT_ARG_NAME) {
- arg_index++;
+ ++arg_index;
if (!PMC_IS_NULL(call_object)
&& VTABLE_exists_keyed_str(interp, call_object, string_value)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
@@ -643,7 +396,11 @@
dissect_aggregate_arg(interp, call_object, pmc_value);
}
else {
- VTABLE_push_pmc(interp, call_object, clone_key_arg(interp, pmc_value));
+ VTABLE_push_pmc(interp, call_object, PMC_IS_NULL(pmc_value)
+ ? PMCNULL
+ : clone_key_arg(interp, pmc_value));
+ if (arg_flags & PARROT_ARG_INVOCANT)
+ Parrot_pcc_set_object(interp, call_object, pmc_value);
}
break;
@@ -660,7 +417,7 @@
/*
=item C<static void extract_named_arg_from_op(PARROT_INTERP, PMC *call_object,
-STRING *name, PMC * const raw_sig, opcode_t * const raw_args, INTVAL arg_index)>
+STRING *name, PMC *raw_sig, opcode_t *raw_args, INTVAL arg_index)>
Pulls in the next argument from a set_args opcode, and sets it as the
value of a named argument in the CallContext PMC.
@@ -671,8 +428,7 @@
static void
extract_named_arg_from_op(PARROT_INTERP, ARGMOD(PMC *call_object), ARGIN(STRING *name),
- ARGIN(PMC * const raw_sig), ARGIN(opcode_t * const raw_args),
- INTVAL arg_index)
+ ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_args), INTVAL arg_index)
{
ASSERT_ARGS(extract_named_arg_from_op)
PMC * const ctx = CURRENT_CONTEXT(interp);
@@ -698,10 +454,8 @@
break;
case PARROT_ARG_STRING:
if (constant)
- /* ensure that callees don't modify constant caller strings */
VTABLE_set_string_keyed_str(interp, call_object, name,
- Parrot_str_new_COW(interp,
- Parrot_pcc_get_string_constant(interp, ctx, raw_index)));
+ Parrot_pcc_get_string_constant(interp, ctx, raw_index));
else
VTABLE_set_string_keyed_str(interp, call_object, name,
CTX_REG_STR(ctx, raw_index));
@@ -733,7 +487,6 @@
*/
-PARROT_CANNOT_RETURN_NULL
static void
dissect_aggregate_arg(PARROT_INTERP, ARGMOD(PMC *call_object), ARGIN(PMC *aggregate))
{
@@ -741,7 +494,7 @@
if (VTABLE_does(interp, aggregate, CONST_STRING(interp, "array"))) {
const INTVAL elements = VTABLE_elements(interp, aggregate);
INTVAL index;
- for (index = 0; index < elements; index++) {
+ for (index = 0; index < elements; ++index) {
VTABLE_push_pmc(interp, call_object,
VTABLE_get_pmc_keyed_int(interp, aggregate, index));
}
@@ -754,7 +507,7 @@
SETATTR_Key_next_key(interp, key, (PMC *)INITBucketIndex);
/* Low-level hash iteration. */
- for (index = 0; index < elements; index++) {
+ for (index = 0; index < elements; ++index) {
if (!PMC_IS_NULL(key)) {
STRING * const name = (STRING *)parrot_hash_get_idx(interp,
(Hash *)VTABLE_get_pointer(interp, aggregate), key);
@@ -772,12 +525,12 @@
/*
-=item C<PMC* Parrot_pcc_build_sig_object_returns_from_op(PARROT_INTERP, PMC
-*signature, PMC *raw_sig, opcode_t *raw_args)>
+=item C<PMC* Parrot_pcc_build_call_from_c_args(PARROT_INTERP, PMC *signature,
+const char *sig, ...)>
-Take a raw signature and argument list from a set_results opcode and
-convert it to a CallContext PMC. Uses an existing CallContext PMC if
-one was already created for set_args. Otherwise, creates a new one.
+Converts a variable list of C args into a CallContext PMC. The CallContext
+stores the original short signature string and an array of integer types to
+pass on to the multiple dispatch search.
=cut
@@ -785,74 +538,105 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC*
-Parrot_pcc_build_sig_object_returns_from_op(PARROT_INTERP, ARGIN_NULLOK(PMC *signature),
- ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_args))
+Parrot_pcc_build_call_from_c_args(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *signature), ARGIN(const char *sig), ...)
{
- ASSERT_ARGS(Parrot_pcc_build_sig_object_returns_from_op)
- PMC *call_object;
- INTVAL *int_array;
- PMC * const ctx = CURRENT_CONTEXT(interp);
- INTVAL arg_index;
- INTVAL arg_count;
+ ASSERT_ARGS(Parrot_pcc_build_call_from_c_args)
+ PMC *call_object;
+ va_list args;
+ va_start(args, sig);
+ call_object = Parrot_pcc_build_call_from_varargs(interp, signature,
+ sig, &args);
+ va_end(args);
+ return call_object;
+}
+
+/*
+
+=item C<PMC* Parrot_pcc_build_call_from_varargs(PARROT_INTERP, PMC *signature,
+const char *sig, va_list *args)>
+
+Converts a varargs list into a CallContext PMC. The CallContext stores the
+original short signature string and an array of integer types to pass on to the
+multiple dispatch search.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC*
+Parrot_pcc_build_call_from_varargs(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *signature), ARGIN(const char *sig),
+ ARGMOD(va_list *args))
+{
+ ASSERT_ARGS(Parrot_pcc_build_call_from_varargs)
+ PMC * arg_flags = PMCNULL;
+ PMC * call_object;
+ INTVAL i = 0;
if (PMC_IS_NULL(signature))
call_object = Parrot_pmc_new(interp, enum_class_CallContext);
- /* A hack to support 'get_results' as the way of fetching the
- * exception object inside an exception handler. The first argument
- * in the call object is the exception, stick it directly into the
- * destination register. */
- else if (CALLSIGNATURE_is_exception_TEST(signature)) {
- const INTVAL raw_index = raw_args[2];
- CTX_REG_PMC(ctx, raw_index) =
- VTABLE_get_pmc_keyed_int(interp, signature, 0);
- return NULL;
- }
- else
+ else {
call_object = signature;
+ VTABLE_morph(interp, call_object, PMCNULL);
+ }
- /* a little encapsulation violation for great speed */
- SETATTR_CallContext_return_flags(interp, call_object, raw_sig);
-
- GETATTR_FixedIntegerArray_size(interp, raw_sig, arg_count);
- GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
+ parse_signature_string(interp, sig, &arg_flags);
+ VTABLE_set_attr_str(interp, call_object, CONST_STRING(interp, "arg_flags"), arg_flags);
- for (arg_index = 0; arg_index < arg_count; arg_index++) {
- const INTVAL arg_flags = int_array[arg_index];
- const INTVAL raw_index = raw_args[arg_index + 2];
+ /* Process the varargs list */
+ for (; sig[i] != '\0'; ++i) {
+ const INTVAL type = sig[i];
- /* Returns store a pointer to the register, so they can pass
- * the result back to the caller. */
- switch (PARROT_ARG_TYPE_MASK_MASK(arg_flags)) {
- case PARROT_ARG_INTVAL:
- csr_push_pointer(interp, call_object, &(CTX_REG_INT(ctx, raw_index)),
- PARROT_ARG_INTVAL);
+ /* Regular arguments just set the value */
+ switch (type) {
+ case 'I':
+ VTABLE_push_integer(interp, call_object, va_arg(*args, INTVAL));
break;
- case PARROT_ARG_FLOATVAL:
- csr_push_pointer(interp, call_object, &(CTX_REG_NUM(ctx, raw_index)),
- PARROT_ARG_FLOATVAL);
+ case 'N':
+ VTABLE_push_float(interp, call_object, va_arg(*args, FLOATVAL));
break;
- case PARROT_ARG_STRING:
- if (arg_flags & PARROT_ARG_NAME) {
- STRING * string_val = arg_flags & PARROT_ARG_CONSTANT
- ? Parrot_pcc_get_string_constant(interp, ctx, raw_index)
- : CTX_REG_STR(ctx, raw_index);
- csr_push_pointer(interp, call_object, string_val, PARROT_ARG_STRING);
- }
- else {
- csr_push_pointer(interp, call_object,
- &(CTX_REG_STR(ctx, raw_index)), PARROT_ARG_STRING);
- }
+ case 'S':
+ VTABLE_push_string(interp, call_object, va_arg(*args, STRING *));
break;
- case PARROT_ARG_PMC:
- csr_push_pointer(interp, call_object, &(CTX_REG_PMC(ctx, raw_index)),
- PARROT_ARG_PMC);
+ case 'P':
+ {
+ const INTVAL type_lookahead = sig[i+1];
+ PMC * const pmc_arg = va_arg(*args, PMC *);
+ if (type_lookahead == 'f') {
+ dissect_aggregate_arg(interp, call_object, pmc_arg);
+ ++i; /* skip 'f' */
+ }
+ else if (type_lookahead == 'i') {
+ if (i)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Dispatch: only the first argument can be an invocant");
+ else {
+ VTABLE_push_pmc(interp, call_object, pmc_arg);
+ ++i; /* skip 'i' */
+ Parrot_pcc_set_object(interp, call_object, pmc_arg);
+ }
+ }
+ else
+ VTABLE_push_pmc(interp, call_object, PMC_IS_NULL(pmc_arg)
+ ? PMCNULL
+ : clone_key_arg(interp, pmc_arg));
+ break;
+ }
+ case '-':
+ return call_object;
break;
default:
- break;
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Dispatch: invalid argument type %c!", type);
}
-
}
return call_object;
@@ -879,100 +663,75 @@
ARGIN(const char *sig), va_list args)
{
ASSERT_ARGS(Parrot_pcc_build_sig_object_from_varargs)
- PMC *arg_flags = PMCNULL;
- PMC *return_flags = PMCNULL;
+ PMC * arg_flags = PMCNULL;
PMC * const call_object = Parrot_pmc_new(interp, enum_class_CallContext);
- const INTVAL sig_len = strlen(sig);
INTVAL in_return_sig = 0;
INTVAL i;
int append_pi = 1;
- if (!sig_len)
+ /* empty args or empty returns */
+ if (*sig == '-' || *sig == '\0')
return call_object;
- parse_signature_string(interp, sig, &arg_flags, &return_flags);
+ parse_signature_string(interp, sig, &arg_flags);
VTABLE_set_attr_str(interp, call_object, CONST_STRING(interp, "arg_flags"), arg_flags);
- VTABLE_set_attr_str(interp, call_object, CONST_STRING(interp, "return_flags"), return_flags);
/* Process the varargs list */
- for (i = 0; i < sig_len; ++i) {
+ for (i = 0; sig[i] != '\0'; ++i) {
const INTVAL type = sig[i];
- if (in_return_sig) {
- /* Returns store the original passed-in pointer so they can pass
- * the result back to the caller. */
- switch (type) {
- case 'I':
- csr_push_pointer(interp, call_object,
- (void *)va_arg(args, INTVAL *), PARROT_ARG_INTVAL);
- break;
- case 'N':
- csr_push_pointer(interp, call_object,
- (void *)va_arg(args, FLOATVAL *), PARROT_ARG_FLOATVAL);
- break;
- case 'S':
- csr_push_pointer(interp, call_object,
- (void *)va_arg(args, STRING **), PARROT_ARG_STRING);
- break;
- case 'P':
- csr_push_pointer(interp, call_object,
- (void *)va_arg(args, PMC **), PARROT_ARG_PMC);
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "Dispatch: invalid argument type %c!", type);
- }
- }
- else {
- /* Regular arguments just set the value */
- switch (type) {
- case 'I':
- VTABLE_push_integer(interp, call_object, va_arg(args, INTVAL));
- break;
- case 'N':
- VTABLE_push_float(interp, call_object, va_arg(args, FLOATVAL));
- break;
- case 'S':
- VTABLE_push_string(interp, call_object, va_arg(args, STRING *));
- break;
- case 'P':
- {
- const INTVAL type_lookahead = sig[i+1];
- PMC * const pmc_arg = va_arg(args, PMC *);
- if (type_lookahead == 'f') {
- dissect_aggregate_arg(interp, call_object, pmc_arg);
- i++; /* skip 'f' */
- }
- else {
- VTABLE_push_pmc(interp, call_object, clone_key_arg(interp, pmc_arg));
- if (type_lookahead == 'i') {
- if (i != 0)
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "Dispatch: only the first argument can be an invocant");
- i++; /* skip 'i' */
- append_pi = 0; /* Don't append Pi in front of signature */
- }
+ /* Don't process returns */
+ if (in_return_sig)
+ break;
+
+ /* Regular arguments just set the value */
+ switch (type) {
+ case 'I':
+ VTABLE_push_integer(interp, call_object, va_arg(args, INTVAL));
+ break;
+ case 'N':
+ VTABLE_push_float(interp, call_object, va_arg(args, FLOATVAL));
+ break;
+ case 'S':
+ VTABLE_push_string(interp, call_object, va_arg(args, STRING *));
+ break;
+ case 'P':
+ {
+ const INTVAL type_lookahead = sig[i+1];
+ PMC * const pmc_arg = va_arg(args, PMC *);
+ if (type_lookahead == 'f') {
+ dissect_aggregate_arg(interp, call_object, pmc_arg);
+ ++i; /* skip 'f' */
+ }
+ else {
+ VTABLE_push_pmc(interp, call_object, PMC_IS_NULL(pmc_arg)
+ ? PMCNULL
+ : clone_key_arg(interp, pmc_arg));
+ if (type_lookahead == 'i') {
+ if (i != 0)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Dispatch: only the first argument "
+ "can be an invocant");
+ ++i; /* skip 'i' */
+ append_pi = 0; /* Don't prepend Pi to signature */
}
- break;
}
- case '-':
- i++; /* skip '>' */
- in_return_sig = 1;
break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "Dispatch: invalid argument type %c!", type);
}
+ case '-':
+ in_return_sig = 1;
+ break;
+ default:
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Dispatch: invalid argument type %c!", type);
}
}
- /* Check if we have an invocant, and add it to the front of the arguments iff needed */
- if (!PMC_IS_NULL(obj) && append_pi) {
+ /* Add invocant to the front of the arguments iff needed */
+ if (!PMC_IS_NULL(obj) && append_pi)
VTABLE_unshift_pmc(interp, call_object, obj);
- }
return call_object;
}
@@ -980,7 +739,7 @@
/*
=item C<static void fill_params(PARROT_INTERP, PMC *call_object, PMC *raw_sig,
-void *arg_info, struct pcc_set_funcs *accessor)>
+void *arg_info, struct pcc_set_funcs *accessor, Errors_classes direction)>
Gets args for the current function call and puts them into position.
First it gets the positional non-slurpy parameters, then the positional
@@ -993,7 +752,9 @@
static void
fill_params(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig), ARGIN(void *arg_info), ARGIN(struct pcc_set_funcs *accessor))
+ ARGIN(PMC *raw_sig), ARGIN(void *arg_info),
+ ARGIN(struct pcc_set_funcs *accessor),
+ Errors_classes direction)
{
ASSERT_ARGS(fill_params)
INTVAL *raw_params;
@@ -1009,7 +770,7 @@
/* Check if we should be throwing errors. This is configured separately
* for parameters and return values. */
- if (PARROT_ERRORS_test(interp, PARROT_ERRORS_PARAM_COUNT_FLAG))
+ if (PARROT_ERRORS_test(interp, direction))
err_check = 1;
/* A null call object is fine if there are no arguments and no returns. */
@@ -1043,24 +804,23 @@
}
/* First iterate over positional args and positional parameters. */
- arg_index = 0;
- param_index = 0;
- positional_args = VTABLE_elements(interp, call_object);
+ GETATTR_CallContext_num_positionals(interp, call_object, positional_args);
+
while (1) {
INTVAL param_flags;
/* Check if we've used up all the parameters. */
if (param_index >= param_count) {
- if (arg_index >= positional_args) {
- /* We've used up all the arguments and parameters, we're done. */
+ /* We've used up all arguments and parameters; we're done. */
+ if (arg_index >= positional_args)
break;
- }
else if (err_check) {
/* We've used up all the parameters, but have extra positional
* args left over. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many positional arguments: %d passed, %d expected",
- positional_args, param_index);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many positional arguments: %d passed, %d expected",
+ positional_args, param_index);
}
return;
}
@@ -1076,23 +836,25 @@
if (param_flags & PARROT_ARG_SLURPY_ARRAY) {
PMC *collect_positional;
- /* Can't handle named slurpy here, go on to named argument handling. */
+ /* Can't handle named slurpy here, go to named argument handling */
if (param_flags & PARROT_ARG_NAME)
break;
if (named_count > 0)
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
collect_positional = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
- for (; arg_index < positional_args; arg_index++) {
+ Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
+
+ for (; arg_index < positional_args; ++arg_index) {
VTABLE_push_pmc(interp, collect_positional,
- VTABLE_get_pmc_keyed_int(interp, call_object, arg_index));
+ VTABLE_get_pmc_keyed_int(interp, call_object, arg_index));
}
+
*accessor->pmc(interp, arg_info, param_index) = collect_positional;
- param_index++;
+ ++param_index;
break; /* Terminate the positional arg loop. */
}
@@ -1103,13 +865,15 @@
if (param_flags & PARROT_ARG_NAME) {
STRING *param_name;
if (!(param_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must have a name specified");
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must have a name specified");
param_name = PARROT_ARG_CONSTANT_ISSET(param_flags)
- ? accessor->string_constant(interp, arg_info, param_index)
- : *accessor->string(interp, arg_info, param_index);
- named_count++;
- param_index++;
+ ? accessor->string_constant(interp, arg_info, param_index)
+ : *accessor->string(interp, arg_info, param_index);
+
+ ++named_count;
+ ++param_index;
if (param_index >= param_count)
continue;
@@ -1121,10 +885,10 @@
VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
}
- else if (named_count > 0) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
- }
+ else if (named_count > 0)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
/* Check for :lookahead parameter goes here. */
@@ -1132,23 +896,23 @@
switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
case PARROT_ARG_INTVAL:
*accessor->intval(interp, arg_info, param_index) =
- VTABLE_get_integer_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_integer_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_FLOATVAL:
*accessor->numval(interp, arg_info, param_index) =
- VTABLE_get_number_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_number_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_STRING:
*accessor->string(interp, arg_info, param_index) =
- VTABLE_get_string_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_string_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_PMC:
*accessor->pmc(interp, arg_info, param_index) =
- VTABLE_get_pmc_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_pmc_keyed_int(interp, call_object, arg_index);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid parameter type");
+ EXCEPTION_INVALID_OPERATION, "invalid parameter type");
break;
}
@@ -1158,7 +922,7 @@
const int next_param_flags = raw_params[param_index + 1];
if (next_param_flags & PARROT_ARG_OPT_FLAG) {
- param_index++;
+ ++param_index;
*accessor->intval(interp, arg_info, param_index) = 1;
}
}
@@ -1181,7 +945,7 @@
const INTVAL next_param_flags = raw_params[param_index + 1];
if (next_param_flags & PARROT_ARG_OPT_FLAG) {
- param_index++;
+ ++param_index;
*accessor->intval(interp, arg_info, param_index) = 0;
}
}
@@ -1194,20 +958,22 @@
break;
if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few positional arguments: %d passed, %d (or more) expected",
- positional_args, param_index + 1);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too few positional arguments: "
+ "%d passed, %d (or more) expected",
+ positional_args, param_index + 1);
}
/* Go on to next argument and parameter. */
- arg_index++;
- param_index++;
+ ++arg_index;
+ ++param_index;
}
/* Now iterate over the named arguments and parameters. */
while (1) {
- STRING *param_name = NULL;
- INTVAL param_flags;
+ STRING *param_name;
+ INTVAL param_flags;
/* Check if we've used up all the parameters. We'll check for leftover
* named args after the loop. */
@@ -1217,10 +983,10 @@
param_flags = raw_params[param_index];
/* All remaining parameters must be named. */
- if (!(param_flags & PARROT_ARG_NAME)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
- }
+ if (!(param_flags & PARROT_ARG_NAME))
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
if (arg_index < positional_args) {
PMC *arg_sig;
@@ -1229,13 +995,15 @@
/* We've used up all the positional parameters, but have extra
* positional args left over. */
- if (VTABLE_get_integer_keyed_int(interp, arg_sig, arg_index) & PARROT_ARG_NAME) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named arguments must follow all positional arguments");
- }
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many positional arguments: %d passed, %d expected",
- positional_args, param_index);
+ if (VTABLE_get_integer_keyed_int(interp, arg_sig, arg_index) & PARROT_ARG_NAME)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named arguments must follow all positional arguments");
+
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many positional arguments: %d passed, %d expected",
+ positional_args, param_index);
}
/* Collected ("slurpy") named parameter */
@@ -1243,24 +1011,26 @@
PMC * const collect_named = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
PMC * const named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
+
if (!PMC_IS_NULL(named_arg_list)) {
- INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
+ const INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
INTVAL named_arg_index;
/* Named argument iteration. */
- for (named_arg_index = 0; named_arg_index < named_arg_count; named_arg_index++) {
+ for (named_arg_index = 0; named_arg_index < named_arg_count; ++named_arg_index) {
STRING * const name = VTABLE_get_string_keyed_int(interp,
named_arg_list, named_arg_index);
- if ((PMC_IS_NULL(named_used_list)) ||
- !VTABLE_exists_keyed_str(interp, named_used_list, name)) {
+ if ((PMC_IS_NULL(named_used_list))
+ || !VTABLE_exists_keyed_str(interp, named_used_list, name)) {
VTABLE_set_pmc_keyed_str(interp, collect_named, name,
VTABLE_get_pmc_keyed_str(interp, call_object, name));
/* Mark the name as used, cannot be filled again. */
- if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
+ /* named_used_list only created if needed. */
+ if (PMC_IS_NULL(named_used_list))
named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
VTABLE_set_integer_keyed_str(interp, named_used_list, name, 1);
- named_count++;
+ ++named_count;
}
}
}
@@ -1270,17 +1040,18 @@
}
/* Store the name. */
- if (!(param_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must have a name specified");
+ if (!(param_flags & PARROT_ARG_STRING))
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must have a name specified");
+
param_name = PARROT_ARG_CONSTANT_ISSET(param_flags)
- ? accessor->string_constant(interp, arg_info, param_index)
- : *accessor->string(interp, arg_info, param_index);
+ ? accessor->string_constant(interp, arg_info, param_index)
+ : *accessor->string(interp, arg_info, param_index);
if (!STRING_IS_NULL(param_name)) {
/* The next parameter is the actual value. */
- param_index++;
- if (param_index >= param_count)
+ if (++param_index >= param_count)
continue;
param_flags = raw_params[param_index];
@@ -1288,32 +1059,33 @@
if (VTABLE_exists_keyed_str(interp, call_object, param_name)) {
/* Mark the name as used, cannot be filled again. */
- if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
+ /* named_used_list only created if needed. */
+ if (PMC_IS_NULL(named_used_list))
named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
- named_count++;
+ ++named_count;
/* Fill the named parameter. */
switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
case PARROT_ARG_INTVAL:
*accessor->intval(interp, arg_info, param_index) =
- VTABLE_get_integer_keyed_str(interp, call_object, param_name);
+ VTABLE_get_integer_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_FLOATVAL:
*accessor->numval(interp, arg_info, param_index) =
- VTABLE_get_number_keyed_str(interp, call_object, param_name);
+ VTABLE_get_number_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_STRING:
*accessor->string(interp, arg_info, param_index) =
- VTABLE_get_string_keyed_str(interp, call_object, param_name);
+ VTABLE_get_string_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_PMC:
*accessor->pmc(interp, arg_info, param_index) =
- VTABLE_get_pmc_keyed_str(interp, call_object, param_name);
+ VTABLE_get_pmc_keyed_str(interp, call_object, param_name);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid parameter type");
+ EXCEPTION_INVALID_OPERATION, "invalid parameter type");
break;
}
@@ -1323,7 +1095,7 @@
const INTVAL next_param_flags = raw_params[param_index + 1];
if (next_param_flags & PARROT_ARG_OPT_FLAG) {
- param_index++;
+ ++param_index;
*accessor->intval(interp, arg_info, param_index) = 1;
}
}
@@ -1333,28 +1105,30 @@
assign_default_param_value(interp, param_index, param_flags,
arg_info, accessor);
- /* Mark the option flag for the parameter to FALSE, it was filled
- * with a default value. */
+ /* Mark the option flag for the parameter to FALSE;
+ * it was filled with a default value. */
if (param_index + 1 < param_count) {
const INTVAL next_param_flags = raw_params[param_index + 1];
if (next_param_flags & PARROT_ARG_OPT_FLAG) {
- param_index++;
+ ++param_index;
*accessor->intval(interp, arg_info, param_index) = 0;
}
}
}
- /* We don't have an argument for the parameter, and it's not optional,
- * so it's an error. */
+
+ /* We don't have an argument for the parameter, and it's not
+ * optional, so it's an error. */
else {
if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few named arguments: no argument for required parameter '%S'",
- param_name);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too few named arguments: "
+ "no argument for required parameter '%S'", param_name);
}
}
- param_index++;
+ ++param_index;
}
/* Double check that all named arguments were assigned to parameters. */
@@ -1367,28 +1141,32 @@
return;
named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
+
if (!PMC_IS_NULL(named_arg_list)) {
const INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
if (PMC_IS_NULL(named_used_list))
return;
- /* The 'return' above is a temporary hack to duplicate an old bug,
- * and will be replaced by the exception below at the next
+
+ /* The 'return' above is a temporary hack to duplicate an old
+ * bug, and will be replaced by the exception below at the next
* deprecation point, see TT #1103
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many named arguments: %d passed, 0 used",
- named_arg_count);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many named arguments: %d passed, 0 used",
+ named_arg_count);
*/
+
if (named_arg_count > named_count) {
/* At this point we know we have named arguments that weren't
* assigned to parameters. We're going to throw an exception
- * anyway, so spend a little extra effort to tell the user *which*
- * named argument is extra. */
+ * anyway, so spend a little extra effort to tell the user
+ * *which* named argument is extra. */
INTVAL named_arg_index;
/* Named argument iteration. */
- for (named_arg_index = 0; named_arg_index < named_arg_count; named_arg_index++) {
- STRING *name = VTABLE_get_string_keyed_int(interp,
+ for (named_arg_index = 0; named_arg_index < named_arg_count; ++named_arg_index) {
+ STRING * const name = VTABLE_get_string_keyed_int(interp,
named_arg_list, named_arg_index);
if (!VTABLE_exists_keyed_str(interp, named_used_list, name)) {
@@ -1403,6 +1181,7 @@
}
}
+
/*
=item C<static void assign_default_param_value(PARROT_INTERP, INTVAL
@@ -1417,7 +1196,7 @@
static void
assign_default_param_value(PARROT_INTERP, INTVAL param_index, INTVAL param_flags,
- ARGIN(void *arg_info), ARGIN(struct pcc_set_funcs *accessor))
+ ARGIN(void *arg_info), ARGMOD(struct pcc_set_funcs *accessor))
{
ASSERT_ARGS(assign_default_param_value)
switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
@@ -1442,49 +1221,17 @@
/*
-=item C<static void assign_default_result_value(PARROT_INTERP, PMC *results,
-INTVAL index, INTVAL result_flags)>
-
-Assign an appropriate default value to the result depending on its type
-
-=cut
-
-*/
-
-static void
-assign_default_result_value(PARROT_INTERP, ARGMOD(PMC *results), INTVAL index, INTVAL result_flags)
-{
- ASSERT_ARGS(assign_default_result_value)
- switch (PARROT_ARG_TYPE_MASK_MASK(result_flags)) {
- case PARROT_ARG_INTVAL:
- csr_fill_integer(interp, results, index, 0);
- break;
- case PARROT_ARG_FLOATVAL:
- csr_fill_number(interp, results, index, 0.0);
- break;
- case PARROT_ARG_STRING:
- csr_fill_string(interp, results, index, NULL);
- break;
- case PARROT_ARG_PMC:
- csr_fill_pmc(interp, results, index, PMCNULL);
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid parameter type");
- break;
- }
-}
-
-/*
-
=item C<void Parrot_pcc_fill_params_from_op(PARROT_INTERP, PMC *call_object, PMC
-*raw_sig, opcode_t *raw_params)>
+*raw_sig, opcode_t *raw_params, Errors_classes direction)>
Gets args for the current function call and puts them into position.
First it gets the positional non-slurpy parameters, then the positional
slurpy parameters, then the named parameters, and finally the named
slurpy parameters.
+C<direction> used to distinguish set_returns vs set_params for checking
+different flags.
+
=cut
*/
@@ -1492,7 +1239,7 @@
PARROT_EXPORT
void
Parrot_pcc_fill_params_from_op(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_params))
+ ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_params), Errors_classes direction)
{
ASSERT_ARGS(Parrot_pcc_fill_params_from_op)
@@ -1508,7 +1255,7 @@
(pmc_func_t)pmc_constant_from_op,
};
- fill_params(interp, call_object, raw_sig, raw_params, &function_pointers);
+ fill_params(interp, call_object, raw_sig, raw_params, &function_pointers, direction);
}
/*
@@ -1537,8 +1284,39 @@
{
ASSERT_ARGS(Parrot_pcc_fill_params_from_c_args)
va_list args;
+
+ va_start(args, signature);
+ Parrot_pcc_fill_params_from_varargs(interp, call_object, signature, &args,
+ PARROT_ERRORS_PARAM_COUNT_FLAG);
+ va_end(args);
+}
+
+/*
+
+=item C<void Parrot_pcc_fill_params_from_varargs(PARROT_INTERP, PMC
+*call_object, const char *signature, va_list *args, Errors_classes direction)>
+
+Gets args for the current function call and puts them into position.
+First it gets the positional non-slurpy parameters, then the positional
+slurpy parameters, then the named parameters, and finally the named
+slurpy parameters.
+
+The signature is a string in the format used for
+C<Parrot_pcc_invoke_from_sig_object>, but with no return arguments. The
+parameters are passed in as a list of references to the destination
+variables.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_pcc_fill_params_from_varargs(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
+ ARGIN(const char *signature), ARGMOD(va_list *args), Errors_classes direction)
+{
+ ASSERT_ARGS(Parrot_pcc_fill_params_from_varargs)
PMC *raw_sig = PMCNULL;
- PMC *invalid_sig = PMCNULL;
static pcc_set_funcs function_pointers = {
(intval_ptr_func_t)intval_param_from_c_args,
(numval_ptr_func_t)numval_param_from_c_args,
@@ -1551,837 +1329,161 @@
(pmc_func_t)pmc_constant_from_varargs,
};
- parse_signature_string(interp, signature, &raw_sig, &invalid_sig);
- if (!PMC_IS_NULL(invalid_sig))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "returns should not be included in the parameter list");
+ /* empty args or empty returns */
+ if (*signature == '-' || *signature == '\0')
+ return;
- va_start(args, signature);
- fill_params(interp, call_object, raw_sig, &args, &function_pointers);
- va_end(args);
+ parse_signature_string(interp, signature, &raw_sig);
+
+ fill_params(interp, call_object, raw_sig, args, &function_pointers,
+ direction);
}
/*
-=item C<static void fill_results(PARROT_INTERP, PMC *call_object, PMC *raw_sig,
-void *return_info, struct pcc_get_funcs *accessor)>
+=item C<void Parrot_pcc_split_signature_string(const char *signature, const char
+**arg_sig, const char **return_sig)>
-Gets return values for the current return and puts them into position.
-First it gets the positional non-slurpy returns, then the positional
-slurpy returns, then the named returns, and finally the named
-slurpy returns.
+Splits a full signature string and creates call and return signature strings.
+The two result strings should be passed in as references to a C string.
=cut
*/
-static void
-fill_results(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig), ARGIN(void *return_info), ARGIN(struct pcc_get_funcs *accessor))
+void
+Parrot_pcc_split_signature_string(ARGIN(const char *signature),
+ ARGMOD(const char **arg_sig), ARGMOD(const char **return_sig))
{
- ASSERT_ARGS(fill_results)
- INTVAL *return_array = NULL;
- INTVAL *result_array = NULL;
- PMC *result_sig = NULL;
- PMC *named_used_list = PMCNULL;
- PMC *named_return_list = PMCNULL;
- INTVAL return_index = 0;
- INTVAL return_subindex = 0;
- INTVAL result_index = 0;
- INTVAL named_count = 0;
- INTVAL err_check = 0;
- INTVAL positional_returns = 0; /* initialized by a loop later */
- INTVAL i = 0; /* used by the initialization loop */
- INTVAL return_count;
- INTVAL result_count;
+ ASSERT_ARGS(Parrot_pcc_split_signature_string)
+ const char *cur;
+ *arg_sig = signature;
+
+ for (cur = signature; *cur != '\0'; ++cur) {
+ if (*cur == '-') {
+ *return_sig = cur + 2;
+ return;
+ }
+ }
- /* Check if we should be throwing errors. This is configured separately
- * for parameters and return values. */
- if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
- err_check = 1;
+ *return_sig = cur;
+}
- GETATTR_FixedIntegerArray_size(interp, raw_sig, return_count);
+/*
- /* A null call object is fine if there are no returns and no results. */
- if (PMC_IS_NULL(call_object)) {
- /* If the return_count is 0, then there are no return values waiting to
- * fill the results, so no error. */
- if (return_count > 0 && err_check)
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "too few returns: 0 passed, %d expected", return_count);
+=item C<static void parse_signature_string(PARROT_INTERP, const char *signature,
+PMC **arg_flags)>
- return;
- }
+Parses a signature string and creates call and return signature integer
+arrays. The two integer arrays should be passed in as references to a
+PMC.
- GETATTR_CallContext_return_flags(interp, call_object, result_sig);
+=cut
- result_count = csr_returns_count(interp, call_object);
- PARROT_ASSERT((result_count == 0) || !PMC_IS_NULL(result_sig));
+*/
- GETATTR_FixedIntegerArray_int_array(interp, raw_sig, return_array);
- if (!PMC_IS_NULL(result_sig))
- GETATTR_FixedIntegerArray_int_array(interp, result_sig, result_array);
-
- /* the call obj doesn't have the returns as positionals.
- * instead count number of returns before first named return */
- for (i = 0; i < return_count; i++) {
- const INTVAL flags = return_array[i];
- if (flags & PARROT_ARG_NAME)
- break;
+static void
+parse_signature_string(PARROT_INTERP, ARGIN(const char *signature),
+ ARGMOD(PMC **arg_flags))
+{
+ ASSERT_ARGS(parse_signature_string)
+ PMC *current_array;
+ const char *x;
+ INTVAL flags = 0;
+ INTVAL set = 0;
- positional_returns++;
- }
+ if (PMC_IS_NULL(*arg_flags))
+ *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+ current_array = *arg_flags;
- /*
- Parrot_io_eprintf(interp,
- "return_count: %d\nresult_count: %d\npositional_returns: %d\nraw_sig: %S\nresult_sig: %S\n",
- return_count, result_count, positional_returns, VTABLE_get_repr(interp, raw_sig),
- VTABLE_get_repr(interp, result_sig));
- */
+ for (x = signature; *x != '\0'; ++x) {
- while (1) {
- INTVAL result_flags;
+ /* detect -> separator */
+ if (*x == '-')
+ break;
- /* Check if we've used up all the results. */
- if (result_index >= result_count) {
- if (return_index >= return_count) {
- /* We've used up all returns and results, we're
- * done with the whole process. */
- return;
+ /* parse arg type */
+ else if (isupper((unsigned char)*x)) {
+ /* Starting a new argument, so store the previous argument,
+ * if there was one. */
+ if (set) {
+ VTABLE_push_integer(interp, current_array, flags);
+ set = 0;
}
- else if (err_check) {
- /* We've used up all the results, but have extra positional
- * returns left over. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many positional returns: %d passed, %d expected",
- return_index, result_count);
+
+ switch (*x) {
+ case 'I': flags = PARROT_ARG_INTVAL; ++set; break;
+ case 'N': flags = PARROT_ARG_FLOATVAL; ++set; break;
+ case 'S': flags = PARROT_ARG_STRING; ++set; break;
+ case 'P': flags = PARROT_ARG_PMC; ++set; break;
+ default:
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "invalid signature string element %c!", *x);
+ }
+
+ }
+ /* parse arg adverbs */
+ else if (islower((unsigned char)*x)) {
+ switch (*x) {
+ case 'c': flags |= PARROT_ARG_CONSTANT; break;
+ case 'f': flags |= PARROT_ARG_FLATTEN; break;
+ case 'i': flags |= PARROT_ARG_INVOCANT; break;
+ case 'l': flags |= PARROT_ARG_LOOKAHEAD; break;
+ case 'n': flags |= PARROT_ARG_NAME; break;
+ case 'o': flags |= PARROT_ARG_OPTIONAL; break;
+ case 'p': flags |= PARROT_ARG_OPT_FLAG; break;
+ case 's': flags |= PARROT_ARG_SLURPY_ARRAY; break;
+ default:
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "invalid signature string element %c!", *x);
}
- return;
}
+ }
- result_flags = result_array[result_index];
+ /* Store the final argument, if there was one. */
+ if (set)
+ VTABLE_push_integer(interp, current_array, flags);
+}
- /* If the result is slurpy, collect all remaining positional
- * returns into an array.*/
- if (result_flags & PARROT_ARG_SLURPY_ARRAY) {
- PMC *collect_positional;
+/*
- /* Can't handle named slurpy here, go on to named return handling. */
- if (result_flags & PARROT_ARG_NAME)
- break;
+=item C<void Parrot_pcc_parse_signature_string(PARROT_INTERP, STRING *signature,
+PMC **arg_flags, PMC **return_flags)>
- if (named_count > 0)
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "named results must follow all positional results");
+Parses a signature string and creates call and return signature integer
+arrays. The two integer arrays should be passed in as references to a
+PMC.
- collect_positional = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
+=cut
- /* Iterate over all positional returns in the list. */
- while (1) {
- INTVAL constant;
- INTVAL return_flags;
- if (return_index >= return_count)
- break; /* no more returns */
+*/
- return_flags = return_array[return_index];
+PARROT_CAN_RETURN_NULL
+void
+Parrot_pcc_parse_signature_string(PARROT_INTERP, ARGIN(STRING *signature),
+ ARGMOD(PMC **arg_flags), ARGMOD(PMC **return_flags))
+{
+ ASSERT_ARGS(Parrot_pcc_parse_signature_string)
+ char * const s = Parrot_str_to_cstring(interp, signature);
+ const char *arg_sig, *ret_sig;
- if (return_flags & PARROT_ARG_NAME)
- break; /* stop at named returns */
+ Parrot_pcc_split_signature_string(s, &arg_sig, &ret_sig);
- constant = PARROT_ARG_CONSTANT_ISSET(return_flags);
- switch (PARROT_ARG_TYPE_MASK_MASK(return_flags)) {
- case PARROT_ARG_INTVAL:
- VTABLE_push_integer(interp, collect_positional, constant?
- accessor->intval_constant(interp, return_info, return_index)
- :accessor->intval(interp, return_info, return_index));
- break;
- case PARROT_ARG_FLOATVAL:
- VTABLE_push_float(interp, collect_positional, constant?
- accessor->numval_constant(interp, return_info, return_index)
- :accessor->numval(interp, return_info, return_index));
- break;
- case PARROT_ARG_STRING:
- VTABLE_push_string(interp, collect_positional, constant?
- accessor->string_constant(interp, return_info, return_index)
- :accessor->string(interp, return_info, return_index));
- break;
- case PARROT_ARG_PMC:
- {
- PMC *return_item = (constant)
- ? accessor->pmc_constant(interp, return_info, return_index)
- : accessor->pmc(interp, return_info, return_index);
- if (return_flags & PARROT_ARG_FLATTEN) {
- INTVAL flat_pos;
- INTVAL flat_elems;
- if (!VTABLE_does(interp, return_item, CONST_STRING(interp, "array"))) {
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "flattened return on a non-array");
- }
- flat_elems = VTABLE_elements(interp, return_item);
- for (flat_pos = 0; flat_pos < flat_elems; flat_pos++) {
- /* fetch an item out of the aggregate */
- VTABLE_push_pmc(interp, collect_positional,
- VTABLE_get_pmc_keyed_int(interp, return_item, flat_pos));
- }
- }
- else
- VTABLE_push_pmc(interp, collect_positional, return_item);
- break;
- }
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid return type");
- break;
- }
- return_index++;
- }
- csr_fill_pmc(interp, call_object, result_index, collect_positional);
- result_index++;
- break; /* Terminate the positional return loop. */
- }
+ *arg_flags = PMCNULL;
+ *return_flags = PMCNULL;
+ parse_signature_string(interp, arg_sig, arg_flags);
+ parse_signature_string(interp, ret_sig, return_flags);
+ Parrot_str_free_cstring(s);
+}
- /* We have a positional return, fill the result with it. */
- if (return_index < positional_returns) {
- INTVAL return_flags = return_array[return_index];
- INTVAL constant = PARROT_ARG_CONSTANT_ISSET(return_flags);
-
- /* Fill a named result with a positional return. */
- if (result_flags & PARROT_ARG_NAME) {
- STRING *result_name;
- if (!(result_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named results must have a name specified 1683");
- result_name = csr_get_string_keyed_int(interp, call_object, result_index);
- named_count++;
- result_index++;
- if (result_index >= result_count)
- continue;
- result_flags = result_array[result_index];
+/*
- /* Mark the name as used, cannot be filled again. */
- if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
- named_used_list = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
- VTABLE_set_integer_keyed_str(interp, named_used_list, result_name, 1);
- }
- else if (named_count > 0) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named results must follow all positional results");
- }
+=item C<void Parrot_pcc_merge_signature_for_tailcall(PARROT_INTERP, PMC *
+parent, PMC * tailcall)>
- /* Check for :lookahead result goes here. */
-
- /* Go ahead and fill the result with a positional return. */
- switch (PARROT_ARG_TYPE_MASK_MASK(return_flags)) {
- case PARROT_ARG_INTVAL:
- if (constant)
- csr_fill_integer(interp, call_object, result_index,
- accessor->intval_constant(interp, return_info, return_index));
- else
- csr_fill_integer(interp, call_object, result_index,
- accessor->intval(interp, return_info, return_index));
- break;
- case PARROT_ARG_FLOATVAL:
- if (constant)
- csr_fill_number(interp, call_object, result_index,
- accessor->numval_constant(interp, return_info, return_index));
- else
- csr_fill_number(interp, call_object, result_index,
- accessor->numval(interp, return_info, return_index));
- break;
- case PARROT_ARG_STRING:
- if (constant)
- csr_fill_string(interp, call_object, result_index,
- accessor->string_constant(interp, return_info, return_index));
- else
- csr_fill_string(interp, call_object, result_index,
- accessor->string(interp, return_info, return_index));
- break;
- case PARROT_ARG_PMC:
- {
- PMC *return_item = (constant)
- ? accessor->pmc_constant(interp, return_info, return_index)
- : accessor->pmc(interp, return_info, return_index);
- if (return_flags & PARROT_ARG_FLATTEN) {
- INTVAL flat_elems;
- if (!VTABLE_does(interp, return_item, CONST_STRING(interp, "array"))) {
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "flattened return on a non-array");
- }
- flat_elems = VTABLE_elements(interp, return_item);
- if (flat_elems == 0) {
- /* Skip empty aggregate */
- break;
- }
- if (return_subindex < flat_elems) {
- /* fetch an item out of the aggregate */
- return_item = VTABLE_get_pmc_keyed_int(interp, return_item,
- return_subindex);
- return_subindex++;
- }
- if (return_subindex >= flat_elems) {
- return_subindex = 0; /* reset */
- }
- else {
- return_index--; /* we want to stay on the same item */
- }
- }
- csr_fill_pmc(interp, call_object, result_index, return_item);
- break;
- }
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid return type");
- break;
- }
-
- /* Mark the option flag for the filled result. */
- if (result_flags & PARROT_ARG_OPTIONAL) {
- if (result_index + 1 < result_count) {
- const INTVAL next_result_flags = result_array[result_index + 1];
- if (next_result_flags & PARROT_ARG_OPT_FLAG) {
- result_index++;
- csr_fill_integer(interp, call_object, result_index, 1);
- }
- }
- }
- }
- /* We have no more positional returns, fill the optional result
- * with a default value. */
- else if (result_flags & PARROT_ARG_OPTIONAL) {
- /* We don't handle optional named results here, handle them in the
- * next loop. */
- if (result_flags & PARROT_ARG_NAME)
- break;
-
- assign_default_result_value(interp, call_object, result_index, result_flags);
-
- /* Mark the option flag for the result to FALSE, it was filled
- * with a default value. */
- if (result_index + 1 < result_count) {
- const INTVAL next_result_flags = result_array[result_index + 1];
- if (next_result_flags & PARROT_ARG_OPT_FLAG) {
- result_index++;
- csr_fill_integer(interp, call_object, result_index, 0);
- }
- }
- }
- /* We don't have an return for the result, and it's not optional,
- * so it's an error. */
- else {
- /* We don't handle named results here, go to the next loop. */
- if (result_flags & PARROT_ARG_NAME)
- break;
-
- if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few positional returns: %d passed, %d (or more) expected",
- positional_returns, result_index + 1);
- }
-
- /* Go on to next return and result. */
- return_index++;
- result_index++;
- }
-
- for (; return_index < return_count; return_index++) {
- STRING *return_name;
- INTVAL return_flags;
- INTVAL constant;
-
- return_flags = return_array[return_index];
-
- /* All remaining returns must be named. */
- if (!(return_flags & PARROT_ARG_NAME))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named returns must follow all positional returns");
-
- if (!(return_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named results must have a name specified 1836");
-
- return_name = PARROT_ARG_CONSTANT_ISSET(return_flags)
- ? accessor->string_constant(interp, return_info, return_index)
- : accessor->string(interp, return_info, return_index);
- named_count++;
- return_index++;
- if (result_index >= result_count)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named returns must have a value");
-
- return_flags = return_array[return_index];
-
- if (PMC_IS_NULL(named_return_list)) /* Only created if needed. */
- named_return_list = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
-
- if (VTABLE_exists_keyed_str(interp, named_return_list, return_name))
- continue;
-
- constant = PARROT_ARG_CONSTANT_ISSET(return_flags);
- switch (PARROT_ARG_TYPE_MASK_MASK(return_flags)) {
- case PARROT_ARG_INTVAL:
- VTABLE_set_integer_keyed_str(interp, named_return_list, return_name,
- constant
- ? accessor->intval_constant(interp, return_info, return_index)
- : accessor->intval(interp, return_info, return_index));
- break;
- case PARROT_ARG_FLOATVAL:
- VTABLE_set_number_keyed_str(interp, named_return_list, return_name,
- constant
- ? accessor->numval_constant(interp, return_info, return_index)
- : accessor->numval(interp, return_info, return_index));
- break;
- case PARROT_ARG_STRING:
- VTABLE_set_string_keyed_str(interp, named_return_list, return_name,
- constant
- ? accessor->string_constant(interp, return_info, return_index)
- : accessor->string(interp, return_info, return_index));
- break;
- case PARROT_ARG_PMC:
- if (0) {
- PMC * const return_item = (constant)
- ? accessor->pmc_constant(interp, return_info, return_index)
- : accessor->pmc(interp, return_info, return_index);
- if (return_flags & PARROT_ARG_FLATTEN) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named flattened returns not yet implemented");
- }
- VTABLE_set_pmc_keyed_str(interp, named_return_list, return_name, return_item);
- break;
- }
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid return type");
- break;
- }
- }
-
- /* Now iterate over the named results, filling them from the
- * temporary hash of named returns. */
- while (1) {
- STRING *result_name = NULL;
- INTVAL result_flags;
-
- /* Check if we've used up all the results. We'll check for leftover
- * named returns after the loop. */
- if (result_index >= result_count)
- break;
-
- result_flags = result_array[result_index];
-
- /* All remaining results must be named. */
- if (!(result_flags & PARROT_ARG_NAME))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named results must follow all positional results");
-
- /* Collected ("slurpy") named result */
- if (result_flags & PARROT_ARG_SLURPY_ARRAY) {
- if (PMC_IS_NULL(named_return_list))
- named_return_list = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
-
- csr_fill_pmc(interp, call_object, result_index, named_return_list);
- break; /* End of named results. */
- }
-
- /* Store the name. */
- if (!(result_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named results must have a name specified 1926");
- result_name = csr_get_string_keyed_int(interp, call_object, result_index);
-
- if (!STRING_IS_NULL(result_name)) {
- /* The next result is the actual value. */
- result_index++;
- if (result_index >= result_count)
- continue;
- result_flags = result_array[result_index];
-
- if (VTABLE_exists_keyed_str(interp, named_return_list, result_name)) {
-
- named_count++;
-
- /* Fill the named result. */
- switch (PARROT_ARG_TYPE_MASK_MASK(result_flags)) {
- case PARROT_ARG_INTVAL:
- csr_fill_integer(interp, call_object, result_index,
- VTABLE_get_integer_keyed_str(interp, named_return_list, result_name));
- break;
- case PARROT_ARG_FLOATVAL:
- csr_fill_number(interp, call_object, result_index,
- VTABLE_get_number_keyed_str(interp, named_return_list, result_name));
- break;
- case PARROT_ARG_STRING:
- csr_fill_string(interp, call_object, result_index,
- VTABLE_get_string_keyed_str(interp, named_return_list, result_name));
- break;
- case PARROT_ARG_PMC:
- csr_fill_pmc(interp, call_object, result_index,
- VTABLE_get_pmc_keyed_str(interp, named_return_list, result_name));
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid result type");
- break;
- }
- VTABLE_delete_keyed_str(interp, named_return_list, result_name);
-
- /* Mark the option flag for the filled result. */
- if (result_flags & PARROT_ARG_OPTIONAL) {
- if (result_index + 1 < result_count) {
- const INTVAL next_result_flags = return_array[result_index + 1];
- if (next_result_flags & PARROT_ARG_OPT_FLAG) {
- result_index++;
- csr_fill_integer(interp, call_object, result_index, 1);
- }
- }
- }
- }
- else if (result_flags & PARROT_ARG_OPTIONAL) {
- assign_default_result_value(interp, call_object, result_index, result_flags);
-
- /* Mark the option flag for the result to FALSE, it was filled
- * with a default value. */
- if (result_index + 1 < result_count) {
- const INTVAL next_result_flags = result_array[result_index + 1];
- if (next_result_flags & PARROT_ARG_OPT_FLAG) {
- result_index++;
- csr_fill_integer(interp, call_object, result_index, 1);
- }
- }
- }
- /* We don't have a return for the result, and it's not optional,
- * so it's an error. */
- else {
- if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few named returns: no return for required result '%S'",
- result_name);
- }
- }
-
- result_index++;
- }
-
- /* Double check that all named returns were assigned to results. */
- if (err_check) {
- if (!PMC_IS_NULL(named_return_list)) {
- const INTVAL named_return_count = VTABLE_elements(interp, named_return_list);
- if (named_return_count > 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many named returns: %d passed, %d used",
- named_return_count + named_count, named_count);
- }
- }
-
-}
-
-/*
-
-=item C<void Parrot_pcc_fill_returns_from_op(PARROT_INTERP, PMC *call_object,
-PMC *raw_sig, opcode_t *raw_returns)>
-
-Sets return values for the current function call. First it sets the
-positional returns, then the named returns.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_pcc_fill_returns_from_op(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_returns))
-{
- ASSERT_ARGS(Parrot_pcc_fill_returns_from_op)
-
- static pcc_get_funcs function_pointers = {
- (intval_func_t)intval_arg_from_op,
- (numval_func_t)numval_arg_from_op,
- (string_func_t)string_arg_from_op,
- (pmc_func_t)pmc_arg_from_op,
-
- (intval_func_t)intval_constant_from_op,
- (numval_func_t)numval_constant_from_op,
- (string_func_t)string_constant_from_op,
- (pmc_func_t)pmc_constant_from_op,
- };
-
- INTVAL raw_return_count = 0;
-
- GETATTR_FixedIntegerArray_size(interp, raw_sig, raw_return_count);
-
- /* A null call object is fine if there are no arguments and no returns. */
- if (PMC_IS_NULL(call_object)) {
-
- /* Check if we should be throwing errors. This is configured separately
- * for parameters and return values. */
- if (raw_return_count > 0
- && PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "too many return values: %d passed, 0 expected",
- raw_return_count);
- return;
- }
-
- fill_results(interp, call_object, raw_sig, raw_returns, &function_pointers);
-
- return;
-}
-
-
-/*
-
-=item C<void Parrot_pcc_fill_returns_from_continuation(PARROT_INTERP, PMC
-*call_object, PMC *raw_sig, PMC *from_call_obj)>
-
-Evil function. Fill results from arguments passed to a continuation.
-Only works for positional arguments.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_pcc_fill_returns_from_continuation(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(PMC *raw_sig), ARGIN(PMC *from_call_obj))
-{
- ASSERT_ARGS(Parrot_pcc_fill_returns_from_continuation)
- const INTVAL raw_return_count = VTABLE_elements(interp, raw_sig);
-
- static pcc_get_funcs function_pointers = {
- (intval_func_t)intval_arg_from_continuation,
- (numval_func_t)numval_arg_from_continuation,
- (string_func_t)string_arg_from_continuation,
- (pmc_func_t)pmc_arg_from_continuation,
-
- (intval_func_t)intval_arg_from_continuation,
- (numval_func_t)numval_arg_from_continuation,
- (string_func_t)string_arg_from_continuation,
- (pmc_func_t)pmc_arg_from_continuation,
- };
-
- /* A null call object is fine if there are no arguments and no returns. */
- if (PMC_IS_NULL(call_object)) {
-
- /* Check if we should be throwing errors. This is configured separately
- * for parameters and return values. */
- if (raw_return_count > 0
- && PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "too many return values: %d passed, 0 expected",
- raw_return_count);
- return;
- }
-
- fill_results(interp, call_object, raw_sig, from_call_obj, &function_pointers);
-
- return;
-}
-
-
-/*
-
-=item C<void Parrot_pcc_fill_returns_from_c_args(PARROT_INTERP, PMC
-*call_object, const char *signature, ...)>
-
-Sets return values for the current function call. First it sets the
-positional returns, then the named returns.
-
-The signature is a string in the format used for
-C<Parrot_pcc_invoke_from_sig_object>, but with only return arguments.
-The parameters are passed in as a list of INTVAL, FLOATVAL, STRING *, or
-PMC * variables.
-
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_pcc_fill_returns_from_c_args(PARROT_INTERP, ARGMOD_NULLOK(PMC *call_object),
- ARGIN(const char *signature), ...)
-{
- ASSERT_ARGS(Parrot_pcc_fill_returns_from_c_args)
- va_list args;
- INTVAL raw_return_count = 0;
- PMC *raw_sig = PMCNULL;
- PMC *invalid_sig = PMCNULL;
-
- static pcc_get_funcs function_pointers = {
- (intval_func_t)intval_arg_from_c_args,
- (numval_func_t)numval_arg_from_c_args,
- (string_func_t)string_arg_from_c_args,
- (pmc_func_t)pmc_arg_from_c_args,
-
- (intval_func_t)intval_constant_from_varargs,
- (numval_func_t)numval_constant_from_varargs,
- (string_func_t)string_constant_from_varargs,
- (pmc_func_t)pmc_constant_from_varargs,
- };
-
- parse_signature_string(interp, signature, &raw_sig, &invalid_sig);
-
- if (!PMC_IS_NULL(invalid_sig))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "parameters should not be included in the return signature");
-
- raw_return_count = VTABLE_elements(interp, raw_sig);
-
- /* A null call object is fine if there are no arguments and no returns. */
- if (PMC_IS_NULL(call_object)) {
-
- /* Check if we should be throwing errors. This is configured separately
- * for parameters and return values. */
- if (raw_return_count > 0
- && PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "too many return values: %d passed, 0 expected",
- raw_return_count);
- return;
- }
-
- va_start(args, signature);
- fill_results(interp, call_object, raw_sig, &args, &function_pointers);
- va_end(args);
-}
-
-
-/*
-
-=item C<static void parse_signature_string(PARROT_INTERP, const char *signature,
-PMC **arg_flags, PMC **return_flags)>
-
-Parses a signature string and creates call and return signature integer
-arrays. The two integer arrays should be passed in as references to a
-PMC.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-static void
-parse_signature_string(PARROT_INTERP, ARGIN(const char *signature),
- ARGMOD(PMC **arg_flags), ARGMOD(PMC **return_flags))
-{
- ASSERT_ARGS(parse_signature_string)
- PMC *current_array;
- const char *x;
- INTVAL flags = 0;
- INTVAL set = 0;
-
- if (PMC_IS_NULL(*arg_flags))
- *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
- current_array = *arg_flags;
-
- for (x = signature; *x != '\0'; x++) {
-
- /* detect -> separator */
- if (*x == '-') {
- /* skip '>' */
- x++;
-
- /* Starting a new argument, so store the previous argument,
- * if there was one. */
- if (set) {
- VTABLE_push_integer(interp, current_array, flags);
- set = 0;
- }
-
- /* Switch to the return argument flags. */
- if (PMC_IS_NULL(*return_flags))
- *return_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
- current_array = *return_flags;
- }
- /* parse arg type */
- else if (isupper((unsigned char)*x)) {
- /* Starting a new argument, so store the previous argument,
- * if there was one. */
- if (set) {
- VTABLE_push_integer(interp, current_array, flags);
- set = 0;
- }
-
- switch (*x) {
- case 'I': flags = PARROT_ARG_INTVAL; set++; break;
- case 'N': flags = PARROT_ARG_FLOATVAL; set++; break;
- case 'S': flags = PARROT_ARG_STRING; set++; break;
- case 'P': flags = PARROT_ARG_PMC; set++; break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "invalid signature string element %c!", *x);
- }
-
- }
- /* parse arg adverbs */
- else if (islower((unsigned char)*x)) {
- switch (*x) {
- case 'c': flags |= PARROT_ARG_CONSTANT; break;
- case 'f': flags |= PARROT_ARG_FLATTEN; break;
- case 'i': flags |= PARROT_ARG_INVOCANT; break;
- case 'l': flags |= PARROT_ARG_LOOKAHEAD; break;
- case 'n': flags |= PARROT_ARG_NAME; break;
- case 'o': flags |= PARROT_ARG_OPTIONAL; break;
- case 'p': flags |= PARROT_ARG_OPT_FLAG; break;
- case 's': flags |= PARROT_ARG_SLURPY_ARRAY; break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "invalid signature string element %c!", *x);
- }
- }
- }
-
- /* Store the final argument, if there was one. */
- if (set)
- VTABLE_push_integer(interp, current_array, flags);
-}
-
-/*
-
-=item C<void Parrot_pcc_parse_signature_string(PARROT_INTERP, STRING *signature,
-PMC **arg_flags, PMC **return_flags)>
-
-Parses a signature string and creates call and return signature integer
-arrays. The two integer arrays should be passed in as references to a
-PMC.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-void
-Parrot_pcc_parse_signature_string(PARROT_INTERP, ARGIN(STRING *signature),
- ARGMOD(PMC **arg_flags), ARGMOD(PMC **return_flags))
-{
- ASSERT_ARGS(Parrot_pcc_parse_signature_string)
- char * const s = Parrot_str_to_cstring(interp, signature);
- *arg_flags = PMCNULL;
- *return_flags = PMCNULL;
- parse_signature_string(interp, s, arg_flags, return_flags);
- Parrot_str_free_cstring(s);
-}
-
-/*
-
-=item C<void Parrot_pcc_merge_signature_for_tailcall(PARROT_INTERP, PMC *
-parent, PMC * tailcall)>
-
-merge in signatures for tailcall
+merge in signatures for tailcall
=cut
@@ -2396,20 +1498,8 @@
return;
else {
/* Broke encapuslation. Direct poking into CallContext is much faster */
- void ** returns_values;
- void ** tailcall_returns_values;
- INTVAL returns_size;
PMC * return_flags;
- GETATTR_CallContext_returns_size(interp, parent, returns_size);
- GETATTR_CallContext_returns_values(interp, parent, returns_values);
-
- /* Resize tailcall.returns_values to new size */
- tailcall_returns_values = csr_reallocate_return_values(interp, tailcall, returns_size);
-
- /* And copy values over it */
- mem_copy_n_typed(tailcall_returns_values, returns_values, returns_size, void**);
-
/* Store raw signature */
GETATTR_CallContext_return_flags(interp, parent, return_flags);
SETATTR_CallContext_return_flags(interp, tailcall, return_flags);
@@ -2419,60 +1509,46 @@
/*
-Get the appropriate argument value from the continuation
-
-=item C<static INTVAL intval_arg_from_continuation(PARROT_INTERP, PMC *cs,
-INTVAL arg_index)>
-
-=item C<static FLOATVAL numval_arg_from_continuation(PARROT_INTERP, PMC *cs,
-INTVAL arg_index)>
-
-=item C<static STRING* string_arg_from_continuation(PARROT_INTERP, PMC *cs,
-INTVAL arg_index)>
-
-=item C<static PMC* pmc_arg_from_continuation(PARROT_INTERP, PMC *cs, INTVAL
-arg_index)>
-
Get the appropriate argument value from the op.
-=item C<static INTVAL intval_arg_from_op(PARROT_INTERP, opcode_t *raw_args,
-INTVAL arg_index)>
+=item C<static INTVAL intval_arg_from_op(PARROT_INTERP, const opcode_t
+*raw_args, INTVAL arg_index)>
-=item C<static FLOATVAL numval_arg_from_op(PARROT_INTERP, opcode_t *raw_args,
-INTVAL arg_index)>
+=item C<static FLOATVAL numval_arg_from_op(PARROT_INTERP, const opcode_t
+*raw_args, INTVAL arg_index)>
-=item C<static STRING* string_arg_from_op(PARROT_INTERP, opcode_t *raw_args,
-INTVAL arg_index)>
+=item C<static STRING* string_arg_from_op(PARROT_INTERP, const opcode_t
+*raw_args, INTVAL arg_index)>
-=item C<static PMC* pmc_arg_from_op(PARROT_INTERP, opcode_t *raw_args, INTVAL
-arg_index)>
+=item C<static PMC* pmc_arg_from_op(PARROT_INTERP, const opcode_t *raw_args,
+INTVAL arg_index)>
Get the appropriate parameter value from the op (these are pointers, so the
argument value can be stored into them.)
-=item C<static INTVAL* intval_param_from_op(PARROT_INTERP, opcode_t *raw_params,
-INTVAL param_index)>
+=item C<static INTVAL* intval_param_from_op(PARROT_INTERP, const opcode_t
+*raw_params, INTVAL param_index)>
-=item C<static FLOATVAL* numval_param_from_op(PARROT_INTERP, opcode_t
+=item C<static FLOATVAL* numval_param_from_op(PARROT_INTERP, const opcode_t
*raw_params, INTVAL param_index)>
-=item C<static STRING** string_param_from_op(PARROT_INTERP, opcode_t
+=item C<static STRING** string_param_from_op(PARROT_INTERP, const opcode_t
*raw_params, INTVAL param_index)>
-=item C<static PMC** pmc_param_from_op(PARROT_INTERP, opcode_t *raw_params,
-INTVAL param_index)>
+=item C<static PMC** pmc_param_from_op(PARROT_INTERP, const opcode_t
+*raw_params, INTVAL param_index)>
-=item C<static INTVAL intval_constant_from_op(PARROT_INTERP, opcode_t
+=item C<static INTVAL intval_constant_from_op(PARROT_INTERP, const opcode_t
*raw_params, INTVAL param_index)>
-=item C<static FLOATVAL numval_constant_from_op(PARROT_INTERP, opcode_t
+=item C<static FLOATVAL numval_constant_from_op(PARROT_INTERP, const opcode_t
*raw_params, INTVAL param_index)>
-=item C<static STRING* string_constant_from_op(PARROT_INTERP, opcode_t
+=item C<static STRING* string_constant_from_op(PARROT_INTERP, const opcode_t
*raw_params, INTVAL param_index)>
-=item C<static PMC* pmc_constant_from_op(PARROT_INTERP, opcode_t *raw_params,
-INTVAL param_index)>
+=item C<static PMC* pmc_constant_from_op(PARROT_INTERP, const opcode_t
+*raw_params, INTVAL param_index)>
Get the appropriate argument value from varargs.
@@ -2506,264 +1582,172 @@
Parrot constants cannot be passed from varargs, so these functions are dummies
that throw exceptions.
-=item C<static INTVAL intval_constant_from_varargs(PARROT_INTERP, void *data,
-INTVAL index)>
-
-=item C<static FLOATVAL numval_constant_from_varargs(PARROT_INTERP, void *data,
-INTVAL index)>
-
-=item C<static STRING* string_constant_from_varargs(PARROT_INTERP, void *data,
-INTVAL index)>
-
-=item C<static PMC* pmc_constant_from_varargs(PARROT_INTERP, void *data, INTVAL
-index)>
-
- - More specific comments can be added later
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static INTVAL
-intval_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
-{
- ASSERT_ARGS(intval_arg_from_continuation)
- const INTVAL ret = VTABLE_get_integer_keyed_int(interp, cs, arg_index);
- return ret;
-}
-
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL
-numval_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
-{
- ASSERT_ARGS(numval_arg_from_continuation)
- const FLOATVAL ret = VTABLE_get_number_keyed_int(interp, cs, arg_index);
- return ret;
-}
+=item C<static INTVAL intval_constant_from_varargs(PARROT_INTERP, void *data,
+INTVAL index)>
-PARROT_CANNOT_RETURN_NULL
-static STRING*
-string_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
-{
- ASSERT_ARGS(string_arg_from_continuation)
- STRING * const ret = VTABLE_get_string_keyed_int(interp, cs, arg_index);
- return ret;
-}
+=item C<static FLOATVAL numval_constant_from_varargs(PARROT_INTERP, void *data,
+INTVAL index)>
-PARROT_CANNOT_RETURN_NULL
-static PMC*
-pmc_arg_from_continuation(PARROT_INTERP, ARGIN(PMC *cs), INTVAL arg_index)
-{
- ASSERT_ARGS(pmc_arg_from_continuation)
- PMC * const ret = VTABLE_get_pmc_keyed_int(interp, cs, arg_index);
- return ret;
-}
+=item C<static STRING* string_constant_from_varargs(PARROT_INTERP, void *data,
+INTVAL index)>
-PARROT_CANNOT_RETURN_NULL
-static INTVAL
-intval_arg_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_args), INTVAL arg_index)
-{
- ASSERT_ARGS(intval_arg_from_op)
- const INTVAL raw_index = raw_args[arg_index + 2];
- return REG_INT(interp, raw_index);
-}
+=item C<static PMC* pmc_constant_from_varargs(PARROT_INTERP, void *data, INTVAL
+index)>
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL
-numval_arg_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_args), INTVAL arg_index)
-{
- ASSERT_ARGS(numval_arg_from_op)
- const INTVAL raw_index = raw_args[arg_index + 2];
- return REG_NUM(interp, raw_index);
-}
+ - More specific comments can be added later
-PARROT_CANNOT_RETURN_NULL
-static STRING*
-string_arg_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_args), INTVAL arg_index)
-{
- ASSERT_ARGS(string_arg_from_op)
- const INTVAL raw_index = raw_args[arg_index + 2];
- return REG_STR(interp, raw_index);
-}
+=cut
-PARROT_CANNOT_RETURN_NULL
-static PMC*
-pmc_arg_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_args), INTVAL arg_index)
-{
- ASSERT_ARGS(pmc_arg_from_op)
- const INTVAL raw_index = raw_args[arg_index + 2];
- return REG_PMC(interp, raw_index);
-}
+*/
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static INTVAL*
-intval_param_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+intval_param_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(intval_param_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return ®_INT(interp, raw_index);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static FLOATVAL*
-numval_param_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+numval_param_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(numval_param_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return ®_NUM(interp, raw_index);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING**
-string_param_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+string_param_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(string_param_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return ®_STR(interp, raw_index);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static PMC**
-pmc_param_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+pmc_param_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(pmc_param_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return ®_PMC(interp, raw_index);
}
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-intval_constant_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+intval_constant_from_op(SHIM_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(intval_constant_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return raw_index;
}
+PARROT_WARN_UNUSED_RESULT
static FLOATVAL
-numval_constant_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+numval_constant_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(numval_constant_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return Parrot_pcc_get_num_constant(interp, CURRENT_CONTEXT(interp), raw_index);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static STRING*
-string_constant_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+string_constant_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(string_constant_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return Parrot_pcc_get_string_constant(interp, CURRENT_CONTEXT(interp), raw_index);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static PMC*
-pmc_constant_from_op(PARROT_INTERP, ARGIN(opcode_t *raw_params), INTVAL param_index)
+pmc_constant_from_op(PARROT_INTERP, ARGIN(const opcode_t *raw_params), INTVAL param_index)
{
ASSERT_ARGS(pmc_constant_from_op)
const INTVAL raw_index = raw_params[param_index + 2];
return Parrot_pcc_get_pmc_constant(interp, CURRENT_CONTEXT(interp), raw_index);
}
-PARROT_CANNOT_RETURN_NULL
-static INTVAL
-intval_arg_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
-{
- ASSERT_ARGS(intval_arg_from_c_args)
- return va_arg(*args, INTVAL);
-}
-
-PARROT_CANNOT_RETURN_NULL
-static FLOATVAL
-numval_arg_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
-{
- ASSERT_ARGS(numval_arg_from_c_args)
- return va_arg(*args, FLOATVAL);
-}
-
-PARROT_CANNOT_RETURN_NULL
-static STRING*
-string_arg_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
-{
- ASSERT_ARGS(string_arg_from_c_args)
- return va_arg(*args, STRING*);
-}
-
-PARROT_CANNOT_RETURN_NULL
-static PMC*
-pmc_arg_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
-{
- ASSERT_ARGS(pmc_arg_from_c_args)
- return va_arg(*args, PMC*);
-}
-
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static INTVAL*
-intval_param_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
+intval_param_from_c_args(SHIM_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
{
ASSERT_ARGS(intval_param_from_c_args)
return va_arg(*args, INTVAL*);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static FLOATVAL*
-numval_param_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
+numval_param_from_c_args(SHIM_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
{
ASSERT_ARGS(numval_param_from_c_args)
return va_arg(*args, FLOATVAL*);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING**
-string_param_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
+string_param_from_c_args(SHIM_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
{
ASSERT_ARGS(string_param_from_c_args)
return va_arg(*args, STRING**);
}
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static PMC**
-pmc_param_from_c_args(PARROT_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
+pmc_param_from_c_args(SHIM_INTERP, ARGIN(va_list *args), SHIM(INTVAL param_index))
{
ASSERT_ARGS(pmc_param_from_c_args)
return va_arg(*args, PMC**);
}
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-intval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
+intval_constant_from_varargs(SHIM_INTERP, SHIM(void *data), SHIM(INTVAL index))
{
ASSERT_ARGS(intval_constant_from_varargs)
- UNUSED(index);
PARROT_FAILURE("Wrong call");
return 0;
}
+PARROT_WARN_UNUSED_RESULT
static FLOATVAL
-numval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
+numval_constant_from_varargs(SHIM_INTERP, SHIM(void *data), SHIM(INTVAL index))
{
ASSERT_ARGS(numval_constant_from_varargs)
- UNUSED(index);
PARROT_FAILURE("Wrong call");
return 0.0;
}
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static STRING*
-string_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
+string_constant_from_varargs(SHIM_INTERP, SHIM(void *data), SHIM(INTVAL index))
{
ASSERT_ARGS(string_constant_from_varargs)
- UNUSED(index);
PARROT_FAILURE("Wrong call");
return NULL;
}
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
-pmc_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
+pmc_constant_from_varargs(SHIM_INTERP, SHIM(void *data), SHIM(INTVAL index))
{
ASSERT_ARGS(pmc_constant_from_varargs)
- UNUSED(index);
PARROT_FAILURE("Wrong call");
return PMCNULL;
}
@@ -2781,6 +1765,7 @@
*/
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
clone_key_arg(PARROT_INTERP, ARGIN(PMC *key))
{
@@ -2805,384 +1790,6 @@
/*
-VTABLE functions from CallContextReturns. TODO Rename them appropriately.
-
-*/
-
-/* mask off lower two bits (1 + 2 = 3) for pointer tags */
-#define TAG_BITS 3
-#define UNTAG_CELL(c) INTVAL2PTR(void *, (PTR2INTVAL(c)) & ~TAG_BITS)
-#define CELL_TYPE_MASK(c) (PTR2INTVAL(c)) & TAG_BITS
-
-/*
-
-=item C<static void** csr_reallocate_return_values(PARROT_INTERP, PMC *self,
-INTVAL size)>
-
-Resizes the array to C<size> elements.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static void**
-csr_reallocate_return_values(PARROT_INTERP, ARGIN(PMC *self), INTVAL size)
-{
- ASSERT_ARGS(csr_reallocate_return_values)
- void **values = NULL;
- INTVAL resize_threshold;
-
- GETATTR_CallContext_returns_values(interp, self, values);
- GETATTR_CallContext_returns_resize_threshold(interp, self, resize_threshold);
-
- /* Empty. Allocate 8 elements (arbitary number) */
- if (!values) {
- /* It's slightly wrong. We have to allocate directly from system allocator
- * when initial size is greater than 8. But it's never happen. So, put
- * assert here to be sure */
- PARROT_ASSERT(size < 8);
- values = (void **)Parrot_gc_allocate_fixed_size_storage(interp,
- 8 * sizeof (void *));
-
- SETATTR_CallContext_returns_values(interp, self, values);
- SETATTR_CallContext_returns_size(interp, self, size);
- SETATTR_CallContext_returns_resize_threshold(interp, self, 8);
- }
- else if (size <= resize_threshold) {
- SETATTR_CallContext_returns_size(interp, self, size);
- }
- else {
- INTVAL cur = resize_threshold;
-
- /* Switch to system allocator */
- if (cur == 8) {
- void * const old_values = values;
-
- values = mem_gc_allocate_n_typed(interp, 8, void *);
- memcpy(values, old_values, 8 * sizeof (void *));
- Parrot_gc_free_fixed_size_storage(interp,
- 8 * sizeof (void *), old_values);
- }
-
- if (cur < 8192)
- cur = size < 2 * cur ? 2 * cur : size;
- else {
- const INTVAL needed = size - cur;
- cur += needed + 4096;
- cur &= ~0xfff;
- }
-
- values = mem_gc_realloc_n_typed_zeroed(interp, values,
- cur, resize_threshold, void *);
-
- SETATTR_CallContext_returns_values(interp, self, values);
- SETATTR_CallContext_returns_size(interp, self, size);
- SETATTR_CallContext_returns_resize_threshold(interp, self, cur);
- }
-
- return values;
-}
-
-/*
-
-=item C<static INTVAL csr_returns_count(PARROT_INTERP, PMC *self)>
-
-Returns the number of returns values.
-
-=cut
-
-*/
-
-static INTVAL
-csr_returns_count(PARROT_INTERP, ARGIN(PMC *self))
-{
- ASSERT_ARGS(csr_returns_count)
- INTVAL size;
- GETATTR_CallContext_returns_size(interp, self, size);
- return size;
-}
-
-/*
-
-=item C<static void csr_push_pointer(PARROT_INTERP, PMC *self, void *value,
-INTVAL type)>
-
-Push pointer to results. The pointer should point to a storage
-location for a return value -- it must be a pointer to an INTVAL, FLOATVAL,
-PMC, or STRING storage location. C<type> is type of pointer.
-
-TODO Rephrase doc. It's weird.
-
-=cut
-
-*/
-
-static void
-csr_push_pointer(PARROT_INTERP, ARGIN(PMC *self), ARGIN_NULLOK(void *value), INTVAL type)
-{
- ASSERT_ARGS(csr_push_pointer)
- void **values;
- INTVAL size;
-
- PARROT_ASSERT_MSG((type >= 0 && type < 4), "Wrong pointer type");
-
- GETATTR_CallContext_returns_size(interp, self, size);
- values = csr_reallocate_return_values(interp, self, size + 1);
-
- /* Tag pointer */
- values[size] = INTVAL2PTR(void *, PTR2INTVAL(value) | type);
-}
-
-
-/*
-
-=item C<static void csr_fill_integer(PARROT_INTERP, PMC *self, INTVAL key,
-INTVAL value)>
-
-=item C<static void csr_fill_number(PARROT_INTERP, PMC *self, INTVAL key,
-FLOATVAL value)>
-
-=item C<static void csr_fill_string(PARROT_INTERP, PMC *self, INTVAL key, STRING
-*value)>
-
-=item C<static void csr_fill_pmc(PARROT_INTERP, PMC *self, INTVAL key, PMC
-*value)>
-
-Sets the value of the element at index C<key> to C<value>, casting if
-necessary.
-
-=cut
-
-*/
-
-static void
-csr_fill_integer(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, INTVAL value)
-{
- ASSERT_ARGS(csr_fill_integer)
- void * const cell = csr_get_pointer_keyed_int(interp, self, key);
- void * const ptr = UNTAG_CELL(cell);
-
- switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
- case PARROT_ARG_INTVAL:
- *(INTVAL *)ptr = value;
- break;
- case PARROT_ARG_FLOATVAL:
- *(FLOATVAL *)ptr = value;
- break;
- case PARROT_ARG_STRING:
- *(STRING **)ptr = Parrot_str_from_int(interp, value);
- break;
- case PARROT_ARG_PMC:
- *(PMC **)ptr = get_integer_pmc(interp, value);
- break;
- default:
- PARROT_FAILURE("Impossible type");
- }
-}
-
-static void
-csr_fill_number(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, FLOATVAL value)
-{
- ASSERT_ARGS(csr_fill_number)
- void * const cell = csr_get_pointer_keyed_int(interp, self, key);
- void * const ptr = UNTAG_CELL(cell);
-
- switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
- case PARROT_ARG_INTVAL:
- *(INTVAL *)ptr = value;
- break;
- case PARROT_ARG_FLOATVAL:
- *(FLOATVAL *)ptr = value;
- break;
- case PARROT_ARG_STRING:
- *(STRING **)ptr = Parrot_str_from_num(interp, value);
- break;
- case PARROT_ARG_PMC:
- *(PMC **)ptr = get_number_pmc(interp, value);
- break;
- default:
- PARROT_FAILURE("Impossible type");
- }
-}
-
-static void
-csr_fill_string(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, ARGIN_NULLOK(STRING *value))
-{
- ASSERT_ARGS(csr_fill_string)
- void * const cell = csr_get_pointer_keyed_int(interp, self, key);
- void * const ptr = UNTAG_CELL(cell);
-
- switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
- case PARROT_ARG_INTVAL:
- *(INTVAL *)ptr = Parrot_str_to_int(interp, value);
- break;
- case PARROT_ARG_FLOATVAL:
- *(FLOATVAL *)ptr = Parrot_str_to_num(interp, value);
- break;
- case PARROT_ARG_STRING:
- *(STRING **)ptr = value;
- break;
- case PARROT_ARG_PMC:
- *(PMC **)ptr = STRING_IS_NULL(value) ?
- PMCNULL :
- get_string_pmc(interp, value);
- break;
- default:
- PARROT_FAILURE("Impossible type");
- }
-}
-
-static void
-csr_fill_pmc(PARROT_INTERP, ARGIN(PMC *self), INTVAL key, ARGIN_NULLOK(PMC *value))
-{
- ASSERT_ARGS(csr_fill_pmc)
- void * const cell = csr_get_pointer_keyed_int(interp, self, key);
- void * const ptr = UNTAG_CELL(cell);
-
- switch ((Call_bits_enum_t)CELL_TYPE_MASK(cell)) {
- case PARROT_ARG_INTVAL:
- *(INTVAL *)ptr = VTABLE_get_integer(interp, value);
- break;
- case PARROT_ARG_FLOATVAL:
- *(FLOATVAL *)ptr = VTABLE_get_number(interp, value);
- break;
- case PARROT_ARG_STRING:
- *(STRING **)ptr = VTABLE_get_string(interp, value);
- break;
- case PARROT_ARG_PMC:
- *(PMC **)ptr = value;
- break;
- default:
- PARROT_FAILURE("Impossible type");
- }
-}
-
-/*
-
-=item C<static STRING* csr_get_string_keyed_int(PARROT_INTERP, PMC *self, INTVAL
-key)>
-
-Gets raw pointer for result.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING*
-csr_get_string_keyed_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
-{
- ASSERT_ARGS(csr_get_string_keyed_int)
- void * const cell = csr_get_pointer_keyed_int(interp, self, key);
- void * const ptr = UNTAG_CELL(cell);
- return (STRING *)ptr;
-}
-
-
-/*
-
-=item C<static void* csr_get_pointer_keyed_int(PARROT_INTERP, PMC *self, INTVAL
-key)>
-
-Gets raw pointer for result.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static void*
-csr_get_pointer_keyed_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
-{
- ASSERT_ARGS(csr_get_pointer_keyed_int)
- void **values;
- INTVAL size;
-
- GETATTR_CallContext_returns_size(interp, self, size);
- PARROT_ASSERT_MSG(key < size, "Wrong index");
-
- GETATTR_CallContext_returns_values(interp, self, values);
- return values[key];
-}
-
-/*
-
-=item C<void Parrot_pcc_append_result(PARROT_INTERP, PMC *sig_object, STRING
-*type, void *result)>
-
-Helper function between old and new style PCC to append return pointer to signature.
-
-To be removed with deprecated functions.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_pcc_append_result(PARROT_INTERP, ARGIN(PMC *sig_object), ARGIN(STRING *type),
- ARGIN(void *result))
-{
- ASSERT_ARGS(Parrot_pcc_append_result)
- STRING *full_sig;
- PMC *return_flags;
- INTVAL return_flags_size;
- INTVAL int_type;
-
- Parrot_String return_flags_name = Parrot_str_new_constant(interp, "return_flags");
-
- full_sig = VTABLE_get_string(interp, sig_object);
- /* Append ->[T] */
- Parrot_str_concat(interp, full_sig, Parrot_str_new_constant(interp, "->"), 0);
- Parrot_str_concat(interp, full_sig, type, 0);
-
- /* Update returns_flag */
- return_flags = VTABLE_get_attr_str(interp, sig_object, return_flags_name);
- if (PMC_IS_NULL(return_flags)) {
- /* Create return_flags for single element */
- return_flags = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
- return_flags_size = 0;
- VTABLE_set_integer_native(interp, return_flags, 1);
- VTABLE_set_attr_str(interp, sig_object, return_flags_name, return_flags);
- }
- else {
- /* Extend return_flags by one element */
- return_flags_size = VTABLE_elements(interp, return_flags);
- VTABLE_set_integer_native(interp, return_flags, return_flags_size + 1);
- }
- switch (Parrot_str_indexed(interp, type, 0)) {
- case 'I':
- VTABLE_set_integer_keyed_int(interp, return_flags, return_flags_size,
- PARROT_ARG_INTVAL);
- int_type = PARROT_ARG_INTVAL;
- break;
- case 'N':
- VTABLE_set_integer_keyed_int(interp, return_flags, return_flags_size,
- PARROT_ARG_FLOATVAL);
- int_type = PARROT_ARG_FLOATVAL;
- break;
- case 'S':
- VTABLE_set_integer_keyed_int(interp, return_flags, return_flags_size,
- PARROT_ARG_STRING);
- int_type = PARROT_ARG_STRING;
- break;
- case 'P':
- VTABLE_set_integer_keyed_int(interp, return_flags, return_flags_size,
- PARROT_ARG_PMC);
- int_type = PARROT_ARG_PMC;
- break;
- default:
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "invalid signature string element!");
- }
-
- csr_push_pointer(interp, sig_object, result, int_type);
-}
-
-/*
-
=back
=head1 SEE ALSO
Modified: branches/ops_pct/src/call/context.c
==============================================================================
--- branches/ops_pct/src/call/context.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/call/context.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2009, Parrot Foundation.
+Copyright (C) 2009-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -79,10 +79,10 @@
ARGIN(const UINTVAL *number_regs_used))
__attribute__nonnull__(2);
-static void clear_regs(PARROT_INTERP, ARGMOD(PMC *pmcctx))
+static void clear_regs(PARROT_INTERP, ARGMOD(Parrot_Context *ctx))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- FUNC_MODIFIES(*pmcctx);
+ FUNC_MODIFIES(*ctx);
PARROT_INLINE
PARROT_CANNOT_RETURN_NULL
@@ -111,7 +111,7 @@
PARROT_ASSERT_ARG(number_regs_used))
#define ASSERT_ARGS_clear_regs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pmcctx))
+ , PARROT_ASSERT_ARG(ctx))
#define ASSERT_ARGS_get_context_struct_fast __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(ctx))
@@ -242,7 +242,7 @@
/*
-=item C<static void clear_regs(PARROT_INTERP, PMC *pmcctx)>
+=item C<static void clear_regs(PARROT_INTERP, Parrot_Context *ctx)>
Clears all registers in a context. PMC and STRING registers contain PMCNULL
and NULL, respectively. Integer and float registers contain negative flag
@@ -253,32 +253,31 @@
*/
static void
-clear_regs(PARROT_INTERP, ARGMOD(PMC *pmcctx))
+clear_regs(PARROT_INTERP, ARGMOD(Parrot_Context *ctx))
{
ASSERT_ARGS(clear_regs)
UINTVAL i;
- Parrot_Context *ctx = get_context_struct_fast(interp, pmcctx);
/* NULL out registers - P/S have to be NULL for GC
*
* if the architecture has 0x := NULL and 0.0 we could memset too
*/
- for (i = 0; i < ctx->n_regs_used[REGNO_PMC]; i++) {
+ for (i = 0; i < ctx->n_regs_used[REGNO_PMC]; ++i) {
ctx->bp_ps.regs_p[-1L - i] = PMCNULL;
}
- for (i = 0; i < ctx->n_regs_used[REGNO_STR]; i++) {
- ctx->bp_ps.regs_s[i] = NULL;
+ for (i = 0; i < ctx->n_regs_used[REGNO_STR]; ++i) {
+ ctx->bp_ps.regs_s[i] = STRINGNULL;
}
if (Interp_debug_TEST(interp, PARROT_REG_DEBUG_FLAG)) {
/* depending on -D40, set int and num to identifiable garbage values */
- for (i = 0; i < ctx->n_regs_used[REGNO_INT]; i++) {
+ for (i = 0; i < ctx->n_regs_used[REGNO_INT]; ++i) {
ctx->bp.regs_i[i] = -999;
}
- for (i = 0; i < ctx->n_regs_used[REGNO_NUM]; i++) {
+ for (i = 0; i < ctx->n_regs_used[REGNO_NUM]; ++i) {
ctx->bp.regs_n[-1L - i] = -99.9;
}
}
@@ -315,14 +314,12 @@
if (!PMC_IS_NULL(ctx->current_sub))
return;
- ctx->results_signature = NULL;
ctx->lex_pad = PMCNULL;
ctx->outer_ctx = NULL;
ctx->current_cont = NULL;
ctx->current_object = NULL;
ctx->handlers = PMCNULL;
ctx->caller_ctx = NULL;
- ctx->pred_offset = 0;
ctx->current_sig = PMCNULL;
ctx->current_sub = PMCNULL;
@@ -332,7 +329,6 @@
ctx->warns = old->warns;
ctx->errors = old->errors;
ctx->trace_flags = old->trace_flags;
- ctx->pred_offset = old->pred_offset;
ctx->current_HLL = old->current_HLL;
ctx->current_namespace = old->current_namespace;
/* end COW */
@@ -344,14 +340,13 @@
ctx->warns = 0;
ctx->errors = 0;
ctx->trace_flags = 0;
- ctx->pred_offset = 0;
ctx->current_HLL = 0;
ctx->current_namespace = PMCNULL;
ctx->recursion_depth = 0;
}
/* other stuff is set inside Sub.invoke */
- clear_regs(interp, pmcctx);
+ clear_regs(interp, ctx);
}
@@ -489,7 +484,7 @@
/* ctx.bp_ps points to S0, which has Px on the left */
ctx->bp_ps.regs_s = (STRING **)((char *)ctx->registers + size_nip);
- clear_regs(interp, pmcctx);
+ clear_regs(interp, ctx);
}
@@ -528,18 +523,12 @@
{
ASSERT_ARGS(Parrot_pcc_free_registers)
Parrot_CallContext_attributes * const ctx = PARROT_CALLCONTEXT(pmcctx);
- size_t reg_size;
-
- if (!ctx)
- return;
-
- reg_size = Parrot_pcc_calculate_registers_size(interp, ctx->n_regs_used);
- if (!reg_size)
- return;
- /* Free registers */
- Parrot_gc_free_fixed_size_storage(interp, reg_size, ctx->registers);
+ const size_t reg_size =
+ Parrot_pcc_calculate_registers_size(interp, ctx->n_regs_used);
+ if (reg_size)
+ Parrot_gc_free_fixed_size_storage(interp, reg_size, ctx->registers);
}
Modified: branches/ops_pct/src/call/context_accessors.c
==============================================================================
--- branches/ops_pct/src/call/context_accessors.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/call/context_accessors.c Wed May 5 08:45:29 2010 (r46302)
@@ -471,72 +471,6 @@
/*
-=item C<PMC* Parrot_pcc_get_results_signature_func(PARROT_INTERP, PMC *ctx)>
-
-=item C<void Parrot_pcc_set_results_signature_func(PARROT_INTERP, PMC *ctx, PMC
-*sig)>
-
-Get/set ptr into code with get_results opcode.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
-PMC*
-Parrot_pcc_get_results_signature_func(PARROT_INTERP, ARGIN(PMC *ctx))
-{
- ASSERT_ARGS(Parrot_pcc_get_results_signature_func)
- Parrot_Context const *c = get_context_struct_fast(interp, ctx);
- return c->results_signature;
-}
-
-PARROT_EXPORT
-void
-Parrot_pcc_set_results_signature_func(PARROT_INTERP, ARGIN(PMC *ctx), ARGIN_NULLOK(PMC *sig))
-{
- ASSERT_ARGS(Parrot_pcc_set_results_signature_func)
- Parrot_Context *c = get_context_struct_fast(interp, ctx);
- PARROT_ASSERT(PMC_IS_NULL(sig) || PObj_is_PMC_TEST(sig));
- c->results_signature = sig;
-}
-
-
-/*
-
-=item C<size_t Parrot_pcc_get_pred_offset_func(PARROT_INTERP, PMC *ctx)>
-
-=item C<void Parrot_pcc_set_pred_offset_func(PARROT_INTERP, PMC *ctx, size_t
-pred_offset)>
-
-Get/set pred_offset
-
-=cut
-
-*/
-
-PARROT_EXPORT
-size_t
-Parrot_pcc_get_pred_offset_func(PARROT_INTERP, ARGIN(PMC *ctx))
-{
- ASSERT_ARGS(Parrot_pcc_get_pred_offset_func)
- Parrot_Context const *c = get_context_struct_fast(interp, ctx);
- return c->pred_offset;
-}
-
-PARROT_EXPORT
-void
-Parrot_pcc_set_pred_offset_func(PARROT_INTERP, ARGIN(PMC *ctx), size_t pred_offset)
-{
- ASSERT_ARGS(Parrot_pcc_set_pred_offset_func)
- Parrot_Context *c = get_context_struct_fast(interp, ctx);
- c->pred_offset = pred_offset;
-}
-
-
-/*
-
=item C<UINTVAL Parrot_pcc_warnings_on_func(PARROT_INTERP, PMC *ctx, UINTVAL
flags)>
@@ -746,6 +680,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_int_constant_func)
Parrot_Context const * c = get_context_struct_fast(interp, ctx);
+ PARROT_ASSERT(c->constants[idx]->type == 'i');
return c->constants[idx]->u.integer;
}
@@ -756,6 +691,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_num_constant_func)
Parrot_Context const * c = get_context_struct_fast(interp, ctx);
+ PARROT_ASSERT(c->constants[idx]->type == 'n');
return c->constants[idx]->u.number;
}
@@ -766,6 +702,7 @@
{
ASSERT_ARGS(Parrot_pcc_get_string_constant_func)
Parrot_Context const * c = get_context_struct_fast(interp, ctx);
+ PARROT_ASSERT(c->constants[idx]->type == 's');
return c->constants[idx]->u.string;
}
@@ -776,6 +713,8 @@
{
ASSERT_ARGS(Parrot_pcc_get_pmc_constant_func)
Parrot_Context const * c = get_context_struct_fast(interp, ctx);
+ PARROT_ASSERT((c->constants[idx]->type == 'k')
+ || (c->constants[idx]->type == 'p'));
return c->constants[idx]->u.key;
}
Modified: branches/ops_pct/src/call/ops.c
==============================================================================
--- branches/ops_pct/src/call/ops.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/call/ops.c Wed May 5 08:45:29 2010 (r46302)
@@ -22,6 +22,7 @@
#include "parrot/parrot.h"
#include "parrot/oplib/ops.h"
#include "pmc/pmc_continuation.h"
+#include "parrot/runcore_api.h"
/* HEADERIZER HFILE: include/parrot/call.h */
Modified: branches/ops_pct/src/call/pcc.c
==============================================================================
--- branches/ops_pct/src/call/pcc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/call/pcc.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -35,16 +35,24 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+static void Parrot_pcc_add_invocant(PARROT_INTERP,
+ ARGIN(PMC *call_obj),
+ ARGIN(PMC *pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
#define ASSERT_ARGS_do_run_ops __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(sub_obj))
+#define ASSERT_ARGS_Parrot_pcc_add_invocant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(call_obj) \
+ , PARROT_ASSERT_ARG(pmc))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
-/* Make sure we don't conflict with any other MAX() macros defined elsewhere */
-#define PARROT_MAX(a, b) (((a)) > (b) ? (a) : (b))
-
/*
=item C<void Parrot_pcc_invoke_sub_from_c_args(PARROT_INTERP, PMC *sub_obj,
@@ -64,15 +72,24 @@
ARGIN(const char *sig), ...)
{
ASSERT_ARGS(Parrot_pcc_invoke_sub_from_c_args)
- PMC *sig_obj;
- va_list args;
+ PMC *call_obj;
+ va_list args;
+ const char *arg_sig, *ret_sig;
+ PMC * const old_call_obj =
+ Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+
+ Parrot_pcc_split_signature_string(sig, &arg_sig, &ret_sig);
va_start(args, sig);
- sig_obj = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL,
- sig, args);
+ call_obj = Parrot_pcc_build_call_from_varargs(interp, PMCNULL,
+ arg_sig, &args);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_obj);
+ Parrot_pcc_invoke_from_sig_object(interp, sub_obj, call_obj);
+ call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+ Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
va_end(args);
-
- Parrot_pcc_invoke_from_sig_object(interp, sub_obj, sig_obj);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_call_obj);
}
@@ -156,10 +173,32 @@
"Method '%Ss' not found", method_name);
/* Invoke the subroutine object with the given CallSignature object */
- interp->current_object = pmc;
Parrot_pcc_invoke_from_sig_object(interp, sub_obj, sig_obj);
}
+
+/*
+
+=item C<static void Parrot_pcc_add_invocant(PARROT_INTERP, PMC *call_obj, PMC
+*pmc)>
+
+Adds the given PMC as an invocant to the given CallContext PMC. You should
+never have to use this, and it should go away with interp->current_object.
+
+*/
+
+static void
+Parrot_pcc_add_invocant(PARROT_INTERP, ARGIN(PMC *call_obj), ARGIN(PMC *pmc))
+{
+ ASSERT_ARGS(Parrot_pcc_add_invocant)
+ PMC *arg_flags;
+ GETATTR_CallContext_arg_flags(interp, call_obj, arg_flags);
+
+ VTABLE_unshift_integer(interp, arg_flags,
+ PARROT_ARG_PMC | PARROT_ARG_INVOCANT);
+ VTABLE_unshift_pmc(interp, call_obj, pmc);
+}
+
/*
=item C<void Parrot_pcc_invoke_method_from_c_args(PARROT_INTERP, PMC* pmc,
@@ -183,27 +222,38 @@
ARGIN(const char *signature), ...)
{
ASSERT_ARGS(Parrot_pcc_invoke_method_from_c_args)
- PMC *sig_obj;
- PMC *sub_obj;
- va_list args;
+ PMC *call_obj;
+ PMC *sub_obj;
+ va_list args;
+ const char *arg_sig, *ret_sig;
+ PMC * const old_call_obj =
+ Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+
+ Parrot_pcc_split_signature_string(signature, &arg_sig, &ret_sig);
va_start(args, signature);
- sig_obj = Parrot_pcc_build_sig_object_from_varargs(interp, pmc,
- signature, args);
- va_end(args);
+ call_obj = Parrot_pcc_build_call_from_varargs(interp, PMCNULL, arg_sig, &args);
+ Parrot_pcc_add_invocant(interp, call_obj, pmc);
+
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_obj);
/* Find the subroutine object as a named method on pmc */
sub_obj = VTABLE_find_method(interp, pmc, method_name);
if (PMC_IS_NULL(sub_obj))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_METHOD_NOT_FOUND,
- "Method '%Ss' not found", method_name);
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_METHOD_NOT_FOUND,
+ "Method '%Ss' not found", method_name);
- /* Invoke the subroutine object with the given CallSignature object */
- interp->current_object = pmc;
- Parrot_pcc_invoke_from_sig_object(interp, sub_obj, sig_obj);
+ /* Invoke the subroutine object with the given CallContext object */
+ Parrot_pcc_invoke_from_sig_object(interp, sub_obj, call_obj);
+ call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+ Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
+ va_end(args);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_call_obj);
}
+
/*
=item C<static int is_invokable(PARROT_INTERP, PMC *sub_obj)>
@@ -240,8 +290,6 @@
do_run_ops(PARROT_INTERP, ARGIN(PMC *sub_obj))
{
ASSERT_ARGS(do_run_ops)
- if (!PMC_IS_NULL(interp->current_object))
- return 0;
if (sub_obj->vtable->base_type < enum_class_core_max)
return sub_obj->vtable->base_type == enum_class_Sub
@@ -292,7 +340,7 @@
opcode_t *dest;
UINTVAL n_regs_used[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
PMC *ctx = Parrot_push_context(interp, n_regs_used);
- PMC * const ret_cont = new_ret_continuation_pmc(interp, NULL);
+ PMC * const ret_cont = pmc_new(interp, enum_class_Continuation);
Parrot_pcc_set_signature(interp, ctx, call_object);
Parrot_pcc_set_continuation(interp, ctx, ret_cont);
@@ -308,14 +356,12 @@
Parrot_runcore_t *old_core = interp->run_core;
const opcode_t offset = dest - interp->code->base.data;
- if (PARROT_RUNCORE_PREDEREF_OPS_TEST(interp->run_core))
- Parrot_runcore_switch(interp, CONST_STRING(interp, "slow"));
-
runops(interp, offset);
Interp_core_SET(interp, old_core);
}
- Parrot_pcc_set_signature(interp, ctx, NULL);
Parrot_pop_context(interp);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp),
+ Parrot_pcc_get_signature(interp, ctx));
}
/*
Modified: branches/ops_pct/src/datatypes.c
==============================================================================
--- branches/ops_pct/src/datatypes.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/datatypes.c Wed May 5 08:45:29 2010 (r46302)
@@ -44,7 +44,7 @@
char * const type = Parrot_str_to_cstring(interp, type_name);
int i;
- for (i = enum_first_type; i < enum_last_type; i++) {
+ for (i = enum_first_type; i < enum_last_type; ++i) {
if (STREQ(data_types[i - enum_first_type].name, type)) {
Parrot_str_free_cstring(type);
return i;
Modified: branches/ops_pct/src/debug.c
==============================================================================
--- branches/ops_pct/src/debug.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/debug.c Wed May 5 08:45:29 2010 (r46302)
@@ -863,7 +863,7 @@
PARROT_EXPORT
void
-Parrot_debugger_start(PARROT_INTERP, ARGIN(opcode_t * cur_opcode))
+Parrot_debugger_start(PARROT_INTERP, ARGIN_NULLOK(opcode_t * cur_opcode))
{
ASSERT_ARGS(Parrot_debugger_start)
TRACEDEB_MSG("Parrot_debugger_start");
@@ -966,8 +966,6 @@
PDB_get_command(PARROT_INTERP)
{
ASSERT_ARGS(PDB_get_command)
- unsigned int i;
- int ch;
char *c;
PDB_t * const pdb = interp->pdb;
@@ -987,7 +985,7 @@
PARROT_ASSERT(pdb->cur_command);
if (interp->pdb->script_file) {
- FILE *fd = interp->pdb->script_file;
+ FILE * const fd = interp->pdb->script_file;
char buf[DEBUG_CMD_BUFFER_LENGTH+1];
const char *ptr;
@@ -1022,29 +1020,25 @@
if (pdb->cur_command[0] != '\0')
strcpy(pdb->last_command, pdb->cur_command);
- i = 0;
-
c = pdb->cur_command;
Parrot_io_eprintf(pdb->debugger, "\n");
{
- Interp *interpdeb = interp->pdb->debugger;
- STRING *readline = CONST_STRING(interpdeb, "readline_interactive");
- STRING *prompt = CONST_STRING(interpdeb, "(pdb) ");
- STRING *s = Parrot_str_new(interpdeb, NULL, 0);
- PMC *tmp_stdin = Parrot_io_stdhandle(interpdeb, 0, NULL);
+ Interp * const interpdeb = interp->pdb->debugger;
+ STRING * const readline = CONST_STRING(interpdeb, "readline_interactive");
+ STRING * const prompt = CONST_STRING(interpdeb, "(pdb) ");
+ STRING * const s = Parrot_str_new(interpdeb, NULL, 0);
+ PMC * const tmp_stdin = Parrot_io_stdhandle(interpdeb, 0, NULL);
Parrot_pcc_invoke_method_from_c_args(interpdeb,
tmp_stdin, readline,
- "S->S", prompt, & s);
+ "S->S", prompt, &s);
{
char * const aux = Parrot_str_to_cstring(interpdeb, s);
strcpy(c, aux);
Parrot_str_free_cstring(aux);
}
-
- ch = '\n';
}
}
}
@@ -1163,22 +1157,6 @@
/* Erase the stopped flag */
pdb->state &= ~PDB_STOPPED;
- /* Testing use of the debugger runloop */
- #if 0
-
- /* Execute */
- for (; n && pdb->cur_opcode; n--)
- DO_OP(pdb->cur_opcode, pdb->debugee);
-
- /* Set the stopped flag */
- pdb->state |= PDB_STOPPED;
-
- /* If program ended */
-
- if (!pdb->cur_opcode)
- (void)PDB_program_end(interp);
- #endif
-
debugee = pdb->debugee;
new_runloop_jump_point(debugee);
@@ -1302,7 +1280,6 @@
char str[DEBUG_CMD_BUFFER_LENGTH + 1];
unsigned short cond_argleft;
unsigned short cond_type;
- unsigned char regleft;
int i, reg_number;
TRACEDEB_MSG("PDB_cond");
@@ -1321,8 +1298,9 @@
cond_argleft = condition_regtype(command);
/* get the register number */
- auxcmd = ++command;
- regleft = (unsigned char)get_uint(&command, 0);
+ auxcmd = ++command;
+ reg_number = get_uint(&command, 0);
+
if (auxcmd == command) {
Parrot_io_eprintf(interp->pdb->debugger, "Invalid register\n");
return NULL;
@@ -1372,7 +1350,7 @@
if (*(command + 1) == '=')
command += 2;
else
- command++;
+ ++command;
command = skip_whitespace(command);
@@ -1431,7 +1409,7 @@
condition->type |= PDB_cond_const;
}
else if (condition->type & PDB_cond_str) {
- for (i = 1; ((command[i] != '"') && (i < DEBUG_CMD_BUFFER_LENGTH)); i++)
+ for (i = 1; ((command[i] != '"') && (i < DEBUG_CMD_BUFFER_LENGTH)); ++i)
str[i - 1] = command[i];
str[i - 1] = '\0';
#if TRACE_DEBUGGER
@@ -1519,7 +1497,7 @@
/* Move to the line where we will set the break point */
line = pdb->file->line;
- for (i = 1; ((i < ln) && (line->next)); i++)
+ for (i = 1; ((i < ln) && (line->next)); ++i)
line = line->next;
/* Abort if the line number provided doesn't exist */
@@ -1690,27 +1668,6 @@
PDB_skip_breakpoint(interp, ln);
}
- /* Run while no break point is reached */
- /*
- while (!PDB_break(interp))
- DO_OP(pdb->cur_opcode, pdb->debugee);
- */
-
- #if 0
- pdb->tracing = 0;
- Parrot_runcore_switch(pdb->debugee, CONST_STRING(interp, "debugger"));
-
- new_internal_exception(pdb->debugee);
- if (setjmp(pdb->debugee->exceptions->destination)) {
- Parrot_io_eprintf(pdb->debugee, "Unhandled exception while debugging: %Ss\n",
- pdb->debugee->exceptions->msg);
- pdb->state |= PDB_STOPPED;
- return;
- }
- runops_int(pdb->debugee, pdb->debugee->code->base.data - pdb->cur_opcode);
- if (!pdb->cur_opcode)
- (void)PDB_program_end(interp);
- #endif
pdb->state |= PDB_RUNNING;
pdb->state &= ~PDB_BREAK;
pdb->state &= ~PDB_STOPPED;
@@ -1953,7 +1910,7 @@
PDB_check_condition(PARROT_INTERP, ARGIN(const PDB_condition_t *condition))
{
ASSERT_ARGS(PDB_check_condition)
- PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC * const ctx = CURRENT_CONTEXT(interp);
TRACEDEB_MSG("PDB_check_condition");
@@ -2121,7 +2078,7 @@
/* If we have to skip breakpoints, do so. */
if (pdb->breakpoint_skip) {
TRACEDEB_MSG("PDB_break skipping");
- pdb->breakpoint_skip--;
+ --pdb->breakpoint_skip;
return 0;
}
@@ -2174,7 +2131,7 @@
fill = _new = mem_gc_allocate_n_typed(interp, length * 2 + 1, char);
- for (; string < end; string++) {
+ for (; string < end; ++string) {
switch (*string) {
case '\0':
*(fill++) = '\\';
@@ -2205,7 +2162,14 @@
*(fill++) = '"';
break;
default:
- *(fill++) = *string;
+ /* Hide non-ascii chars that may come from utf8 or latin-1
+ * strings in constant strings.
+ * Workaround for TT #1557
+ */
+ if ((unsigned char)*string > 127)
+ *(fill++) = '?';
+ else
+ *(fill++) = *string;
break;
}
}
@@ -2231,8 +2195,8 @@
ASSERT_ARGS(PDB_unescape)
int l = 0;
- for (; *string; string++) {
- l++;
+ for (; *string; ++string) {
+ ++l;
if (*string == '\\') {
char *fill;
@@ -2260,7 +2224,7 @@
fill = string;
- for (i = 1; fill[i + 1]; i++)
+ for (i = 1; fill[i + 1]; ++i)
fill[i] = fill[i + 1];
fill[i] = '\0';
@@ -2306,7 +2270,7 @@
dest[size++] = ' ';
/* Concat the arguments */
- for (j = 1; j < info->op_count; j++) {
+ for (j = 1; j < info->op_count; ++j) {
char buf[256];
INTVAL i = 0;
@@ -2525,7 +2489,7 @@
/* Register decoding. It would be good to abstract this, too. */
PARROT_OBSERVER static const char regs[] = "ISPN";
- for (j = 0; j < n_values; j++) {
+ for (j = 0; j < n_values; ++j) {
size_t idx = 0;
const int sig_value = VTABLE_get_integer_keyed_int(interp, sig, j);
@@ -2811,7 +2775,7 @@
/* Get the name of the file */
for (j = 0; command[j] == ' '; ++j)
continue;
- for (i = 0; command[j]; i++, j++)
+ for (i = 0; command[j]; ++i, ++j)
f[i] = command[j];
f[i] = '\0';
@@ -2844,7 +2808,7 @@
}
pfile->source[pfile->size] = (char)c;
- pfile->size++;
+ ++pfile->size;
if (c == '\n') {
/* If the line has an opcode move to the next one,
@@ -2909,7 +2873,7 @@
h = 0;
}
- c++;
+ ++c;
}
return h;
@@ -2962,7 +2926,7 @@
return;
}
reg_type_id = (unsigned char) toupper((unsigned char) command[0]);
- command++;
+ ++command;
register_num = get_ulong(&command, 0);
switch (reg_type_id) {
@@ -3045,7 +3009,7 @@
line = pdb->file->line;
- for (i = 0; i < pdb->file->list_line && line->next; i++)
+ for (i = 0; i < pdb->file->list_line && line->next; ++i)
line = line->next;
i = 1;
@@ -3416,7 +3380,7 @@
TRACEDEB_MSG("GDB_P");
/* Skip leading whitespace. */
while (isspace((unsigned char)*s))
- s++;
+ ++s;
reg_type = (unsigned char) toupper((unsigned char)*s);
@@ -3432,7 +3396,7 @@
const int max_reg = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), t);
int n;
- for (n = 0; n < max_reg; n++) {
+ for (n = 0; n < max_reg; ++n) {
/* this must be done in two chunks because PMC's print directly. */
Parrot_io_eprintf(interp, "\n %c%d = ", reg_type, n);
Parrot_io_eprintf(interp, "%Ss", GDB_print_reg(interp, t, n));
Modified: branches/ops_pct/src/dynext.c
==============================================================================
--- branches/ops_pct/src/dynext.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynext.c Wed May 5 08:45:29 2010 (r46302)
@@ -42,20 +42,23 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
-static void * dlopen_string(PARROT_INTERP, ARGIN(STRING *path))
+static void * dlopen_string(PARROT_INTERP,
+ Parrot_dlopen_flags flags,
+ ARGIN(STRING *path))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static STRING * get_path(PARROT_INTERP,
ARGMOD_NULLOK(STRING *lib),
+ Parrot_dlopen_flags flags,
ARGOUT(void **handle),
ARGIN(STRING *wo_ext),
ARGIN_NULLOK(STRING *ext))
__attribute__nonnull__(1)
- __attribute__nonnull__(3)
__attribute__nonnull__(4)
+ __attribute__nonnull__(5)
FUNC_MODIFIES(*lib)
FUNC_MODIFIES(*handle);
@@ -218,9 +221,11 @@
/*
-=item C<static void * dlopen_string(PARROT_INTERP, STRING *path)>
+=item C<static void * dlopen_string(PARROT_INTERP, Parrot_dlopen_flags flags,
+STRING *path)>
-Call Parrot_dlopen with the Parrot String argument converted to C string.
+Call Parrot_dlopen with the Parrot String argument converted to C string. The
+flags argument will be converted into native form and used if applicable.
=cut
@@ -229,20 +234,20 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static void *
-dlopen_string(PARROT_INTERP, ARGIN(STRING *path))
+dlopen_string(PARROT_INTERP, Parrot_dlopen_flags flags, ARGIN(STRING *path))
{
ASSERT_ARGS(dlopen_string)
char * const pathstr = Parrot_str_to_cstring(interp, path);
- void * handle = Parrot_dlopen(pathstr);
+ void * handle = Parrot_dlopen(pathstr, flags);
Parrot_str_free_cstring(pathstr);
return handle;
}
/*
-=item C<static STRING * get_path(PARROT_INTERP, STRING *lib, void **handle,
-STRING *wo_ext, STRING *ext)>
+=item C<static STRING * get_path(PARROT_INTERP, STRING *lib, Parrot_dlopen_flags
+flags, void **handle, STRING *wo_ext, STRING *ext)>
Return path and handle of a dynamic lib, setting lib_name to just the filestem
(i.e. without path or extension) as a freshly-allocated C string.
@@ -254,8 +259,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static STRING *
-get_path(PARROT_INTERP, ARGMOD_NULLOK(STRING *lib), ARGOUT(void **handle),
- ARGIN(STRING *wo_ext), ARGIN_NULLOK(STRING *ext))
+get_path(PARROT_INTERP, ARGMOD_NULLOK(STRING *lib), Parrot_dlopen_flags flags,
+ ARGOUT(void **handle), ARGIN(STRING *wo_ext),
+ ARGIN_NULLOK(STRING *ext))
{
ASSERT_ARGS(get_path)
STRING *path, *full_name;
@@ -268,7 +274,7 @@
PARROT_LIB_DYN_EXTS);
if (lib == NULL) {
- *handle = Parrot_dlopen((char *)NULL);
+ *handle = Parrot_dlopen((char *)NULL, flags);
if (*handle) {
return string_from_literal(interp, "");
}
@@ -288,11 +294,11 @@
for (i = 0; i < n; ++i) {
ext = VTABLE_get_string_keyed_int(interp, share_ext, i);
- full_name = Parrot_str_concat(interp, wo_ext, ext, 0);
+ full_name = Parrot_str_concat(interp, wo_ext, ext);
path = Parrot_locate_runtime_file_str(interp, full_name,
PARROT_RUNTIME_FT_DYNEXT);
if (path) {
- *handle = dlopen_string(interp, path);
+ *handle = dlopen_string(interp, flags, path);
if (*handle) {
return path;
}
@@ -307,7 +313,7 @@
* File with extension and prefix was not found,
* so try file.extension w/o prefix
*/
- *handle = dlopen_string(interp, full_name);
+ *handle = dlopen_string(interp, flags, full_name);
if (*handle) {
return full_name;
}
@@ -322,7 +328,7 @@
full_name = Parrot_locate_runtime_file_str(interp, lib,
PARROT_RUNTIME_FT_DYNEXT);
if (full_name) {
- *handle = dlopen_string(interp, full_name);
+ *handle = dlopen_string(interp, flags, full_name);
if (*handle) {
return full_name;
}
@@ -333,9 +339,9 @@
*/
#ifdef WIN32
if (!STRING_IS_EMPTY(lib) && memcmp(lib->strstart, "lib", 3) == 0) {
- *handle = Parrot_dlopen((char *)lib->strstart + 3);
+ *handle = Parrot_dlopen((char *)lib->strstart + 3, 0);
if (*handle) {
- path = Parrot_str_substr(interp, lib, 3, lib->strlen - 3, NULL, 0);
+ path = Parrot_str_substr(interp, lib, 3, lib->strlen - 3);
return path;
}
}
@@ -344,10 +350,10 @@
/* And on cygwin replace a leading "lib" by "cyg". */
#ifdef __CYGWIN__
if (!STRING_IS_EMPTY(lib) && memcmp(lib->strstart, "lib", 3) == 0) {
- path = Parrot_str_append(interp, CONST_STRING(interp, "cyg"),
- Parrot_str_substr(interp, lib, 3, lib->strlen - 3, NULL, 0));
+ path = Parrot_str_concat(interp, CONST_STRING(interp, "cyg"),
+ Parrot_str_substr(interp, lib, 3, lib->strlen - 3));
- *handle = dlopen_string(interp, path);
+ *handle = dlopen_string(interp, flags, path);
if (*handle)
return path;
@@ -356,7 +362,7 @@
/* And after-finally, let the OS use his own search */
if (!STRING_IS_EMPTY(lib)) {
- *handle = dlopen_string(interp, lib);
+ *handle = dlopen_string(interp, flags, lib);
if (*handle)
return lib;
}
@@ -606,11 +612,13 @@
/*
-=item C<PMC * Parrot_load_lib(PARROT_INTERP, STRING *lib, PMC *initializer)>
+=item C<PMC * Parrot_load_lib(PARROT_INTERP, STRING *lib, PMC *parameters)>
Dynamic library loader.
-C<initializer> is currently unused.
+C<parameters>, if not null, points to something which controls library
+loading and initialization. Currently just its integer value is used,
+interpreted as C<Parrot_dlopen_flags>.
Calls C<Parrot_lib_%s_load()> which performs the registration of the lib
once C<Parrot_lib_%s_init()> gets called (if exists) to perform thread
@@ -633,7 +641,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
PMC *
-Parrot_load_lib(PARROT_INTERP, ARGIN_NULLOK(STRING *lib), SHIM(PMC *initializer))
+Parrot_load_lib(PARROT_INTERP, ARGIN_NULLOK(STRING *lib), ARGIN_NULLOK(PMC *parameters))
{
ASSERT_ARGS(Parrot_load_lib)
void *handle;
@@ -641,6 +649,7 @@
STRING *path;
STRING *lib_name, *wo_ext, *ext; /* library stem without path
* or extension. */
+ int flags = 0;
/* Find the pure library name, without path or extension. */
/*
* TODO move the class_count_mutex here
@@ -662,7 +671,11 @@
return lib_pmc;
}
- path = get_path(interp, lib, &handle, wo_ext, ext);
+ if (!PMC_IS_NULL(parameters)) {
+ flags = VTABLE_get_integer(interp, parameters);
+ }
+
+ path = get_path(interp, lib, (Parrot_dlopen_flags)flags, &handle, wo_ext, ext);
if (!path || !handle) {
/*
* XXX Parrot_ex_throw_from_c_args? return PMCNULL?
@@ -682,10 +695,6 @@
F<include/parrot/dynext.h> and F<src/pmc/parrotlibrary.pmc>.
-=head1 HISTORY
-
-Initial rev by leo 2003.08.06.
-
=cut
*/
Modified: branches/ops_pct/src/dynoplibs/Defines.in
==============================================================================
--- branches/ops_pct/src/dynoplibs/Defines.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynoplibs/Defines.in Wed May 5 08:45:29 2010 (r46302)
@@ -1,12 +1,6 @@
DYNOPLIBS_TARGETS = \
-#IF(cg_flag): $(DYNEXT_DIR)/obscure_ops_cg$(LOAD_EXT) \
-#IF(cg_flag): $(DYNEXT_DIR)/obscure_ops_cgp$(LOAD_EXT) \
$(DYNEXT_DIR)/obscure_ops$(LOAD_EXT) \
- $(DYNEXT_DIR)/obscure_ops_switch$(LOAD_EXT) \
-#IF(cg_flag): $(DYNEXT_DIR)/math_ops_cg$(LOAD_EXT) \
-#IF(cg_flag): $(DYNEXT_DIR)/math_ops_cgp$(LOAD_EXT) \
$(DYNEXT_DIR)/math_ops$(LOAD_EXT) \
- $(DYNEXT_DIR)/math_ops_switch$(LOAD_EXT)
DYNOPLIBS_CLEANUPS = \
src/dynoplibs/*.c \
Modified: branches/ops_pct/src/dynoplibs/Rules.in
==============================================================================
--- branches/ops_pct/src/dynoplibs/Rules.in Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynoplibs/Rules.in Wed May 5 08:45:29 2010 (r46302)
@@ -14,42 +14,6 @@
src/dynoplibs/obscure_ops.c: src/dynoplibs/obscure.ops $(BUILD_TOOLS_DIR)/ops2c.pl
$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --dynamic src/dynoplibs/obscure.ops
-$(DYNEXT_DIR)/obscure_ops_switch$(LOAD_EXT): src/dynoplibs/obscure_ops_switch$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/obscure_ops_switch$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/obscure_ops_switch$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/obscure_ops_switch.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/obscure_ops_switch.h: src/dynoplibs/obscure_ops_switch.c
-
-src/dynoplibs/obscure_ops_switch.c: src/dynoplibs/obscure.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --dynamic src/dynoplibs/obscure.ops
-
-$(DYNEXT_DIR)/obscure_ops_cg$(LOAD_EXT): src/dynoplibs/obscure_ops_cg$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/obscure_ops_cg$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/obscure_ops_cg$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/obscure_ops_cg.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/obscure_ops_cg.h: src/dynoplibs/obscure_ops_cg.c
-
-src/dynoplibs/obscure_ops_cg.c: src/dynoplibs/obscure.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --dynamic src/dynoplibs/obscure.ops
-
-$(DYNEXT_DIR)/obscure_ops_cgp$(LOAD_EXT): src/dynoplibs/obscure_ops_cgp$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/obscure_ops_cgp$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/obscure_ops_cgp$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/obscure_ops_cgp.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/obscure_ops_cgp.h: src/dynoplibs/obscure_ops_cgp.c
-
-src/dynoplibs/obscure_ops_cgp.c: src/dynoplibs/obscure.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --dynamic src/dynoplibs/obscure.ops
-
$(DYNEXT_DIR)/math_ops$(LOAD_EXT): src/dynoplibs/math_ops$(O) $(LIBPARROT)
$(LD) @ld_out@$@ src/dynoplibs/math_ops$(O) $(LINKARGS)
#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
@@ -62,38 +26,3 @@
src/dynoplibs/math_ops.h: src/dynoplibs/math_ops.c
-$(DYNEXT_DIR)/math_ops_switch$(LOAD_EXT): src/dynoplibs/math_ops_switch$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/math_ops_switch$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/math_ops_switch$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/math_ops_switch.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/math_ops_switch.h: src/dynoplibs/math_ops_switch.c
-
-src/dynoplibs/math_ops_switch.c: src/dynoplibs/math.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --dynamic src/dynoplibs/math.ops
-
-$(DYNEXT_DIR)/math_ops_cg$(LOAD_EXT): src/dynoplibs/math_ops_cg$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/math_ops_cg$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/math_ops_cg$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/math_ops_cg.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/math_ops_cg.h: src/dynoplibs/math_ops_cg.c
-
-src/dynoplibs/math_ops_cg.c: src/dynoplibs/math.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --dynamic src/dynoplibs/math.ops
-
-$(DYNEXT_DIR)/math_ops_cgp$(LOAD_EXT): src/dynoplibs/math_ops_cgp$(O) $(LIBPARROT)
- $(LD) @ld_out@$@ src/dynoplibs/math_ops_cgp$(O) $(LINKARGS)
-#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-#IF(cygwin or hpux): $(CHMOD) 0775 $@
-
-src/dynoplibs/math_ops_cgp$(O): include/pmc/pmc_parrotlibrary.h include/pmc/pmc_callcontext.h src/dynoplibs/math_ops_cgp.c $(PARROT_H_HEADERS)
-
-src/dynoplibs/math_ops_cgp.h: src/dynoplibs/math_ops_cgp.c
-
-src/dynoplibs/math_ops_cgp.c: src/dynoplibs/math.ops $(BUILD_TOOLS_DIR)/ops2c.pl
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --dynamic src/dynoplibs/math.ops
Copied: branches/ops_pct/src/dynpmc/Defines.in (from r46301, trunk/src/dynpmc/Defines.in)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/dynpmc/Defines.in Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/dynpmc/Defines.in)
@@ -0,0 +1,103 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+DYNPMC_TARGETS = \
+#IF(has_zlib): $(DYNEXT_DIR)/gziphandle$(LOAD_EXT) \
+ $(DYNEXT_DIR)/dynlexpad$(LOAD_EXT) \
+ $(DYNEXT_DIR)/file$(LOAD_EXT) \
+ $(DYNEXT_DIR)/foo_group$(LOAD_EXT) \
+ $(DYNEXT_DIR)/os$(LOAD_EXT) \
+ $(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT) \
+ $(DYNEXT_DIR)/rotest$(LOAD_EXT) \
+ $(DYNEXT_DIR)/rational$(LOAD_EXT) \
+ $(DYNEXT_DIR)/subproxy$(LOAD_EXT)
+
+DYNPMC_FOO = \
+ src/dynpmc/foo.pmc \
+ src/dynpmc/foo2.pmc
+
+DYNPMC_FOO_OBJS = \
+ src/dynpmc/foo$(O) \
+ src/dynpmc/foo2$(O)
+
+DYNPMC_H_FILES = \
+ include/parrot/caches.h \
+ include/parrot/call.h \
+ include/parrot/cclass.h \
+ include/parrot/charset.h \
+ include/parrot/compiler.h \
+ include/parrot/config.h \
+ include/parrot/context.h \
+ include/parrot/core_pmcs.h \
+ include/parrot/core_types.h \
+ include/parrot/datatypes.h \
+ include/parrot/debugger.h \
+ include/parrot/dynext.h \
+ include/parrot/encoding.h \
+ include/parrot/enums.h \
+ include/parrot/exceptions.h \
+ include/parrot/exit.h \
+ include/parrot/extend.h \
+ include/parrot/extend_vtable.h \
+ include/parrot/feature.h \
+ include/parrot/gc_api.h \
+ include/parrot/global.h \
+ include/parrot/global_setup.h \
+ include/parrot/has_header.h \
+ include/parrot/hash.h \
+ include/parrot/hll.h \
+ include/parrot/interpreter.h \
+ include/parrot/io.h \
+ include/parrot/key.h \
+ include/parrot/library.h \
+ include/parrot/longopt.h \
+ include/parrot/memory.h \
+ include/parrot/misc.h \
+ include/parrot/multidispatch.h \
+ include/parrot/nci.h \
+ include/parrot/oo.h \
+ include/parrot/op.h \
+ include/parrot/oplib.h \
+ include/parrot/packfile.h \
+ include/parrot/parrot.h \
+ include/parrot/pbcversion.h \
+ include/parrot/platform.h \
+ include/parrot/platform_interface.h \
+ include/parrot/platform_limits.h \
+ include/parrot/pmc.h \
+ include/parrot/pmc_freeze.h \
+ include/parrot/pobj.h \
+ include/parrot/scheduler.h \
+ include/parrot/settings.h \
+ include/parrot/stat.h \
+ include/parrot/string.h \
+ include/parrot/string_funcs.h \
+ include/parrot/string_primitives.h \
+ include/parrot/sub.h \
+ include/parrot/thread.h \
+ include/parrot/vtable.h \
+ include/parrot/vtables.h \
+ include/parrot/warnings.h \
+ include/pmc/pmc_callcontext.h \
+ include/pmc/pmc_continuation.h \
+ include/pmc/pmc_default.h
+
+#IF(win32 and cc==gcc):LIB_ZLIB = -lz
+#ELSIF(win32):LIB_ZLIB = zlib.lib
+#ELSE:LIB_ZLIB = -lz
+
+DYNPMC_CLEANUPS = \
+ $(DYNPMC_TARGETS) \
+ $(DYNPMC_FOO_OBJS) \
+ src/dynpmc/*.dump \
+ src/dynpmc/pmc_*.h \
+ src/dynpmc/*_group.h \
+ src/dynpmc/*.c \
+#IF(o): src/dynpmc/*$(O) \
+#IF(win32): src/dynpmc/*.lib" \
+#IF(win32): src/dynpmc/*.pdb" \
+#IF(win32): src/dynpmc/*.ilk" \
+#IF(win32): src/dynpmc/*.exp" \
+#IF(win32): src/dynpmc/*.def" \
+#IF(win32): src/dynpmc/*.manifest" \
+#IF(load_ext): src/dynpmc/*@load_ext@
Copied: branches/ops_pct/src/dynpmc/Rules.in (from r46301, trunk/src/dynpmc/Rules.in)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/dynpmc/Rules.in Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/dynpmc/Rules.in)
@@ -0,0 +1,149 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+$(DYNEXT_DIR)/dynlexpad$(LOAD_EXT): src/dynpmc/dynlexpad$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/dynlexpad$(LOAD_EXT) src/dynpmc/dynlexpad$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/dynlexpad$(O): src/dynpmc/dynlexpad.c $(DYNPMC_H_FILES)
+
+src/dynpmc/dynlexpad.c: src/dynpmc/dynlexpad.dump
+ $(PMC2CC) src/dynpmc/dynlexpad.pmc
+
+src/dynpmc/dynlexpad.dump: src/dynpmc/dynlexpad.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/dynlexpad.pmc
+
+
+
+$(DYNEXT_DIR)/file$(LOAD_EXT): src/dynpmc/file$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/file$(LOAD_EXT) src/dynpmc/file$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/file$(O): src/dynpmc/file.c $(DYNPMC_H_FILES)
+
+src/dynpmc/file.c: src/dynpmc/file.dump
+ $(PMC2CC) src/dynpmc/file.pmc
+
+src/dynpmc/file.dump: src/dynpmc/file.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/file.pmc
+
+
+
+$(DYNEXT_DIR)/foo_group$(LOAD_EXT): $(DYNPMC_FOO_OBJS) src/dynpmc/foo_group$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/foo_group$(LOAD_EXT) src/dynpmc/foo_group$(O) $(DYNPMC_FOO_OBJS) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/foo_group$(O): src/dynpmc/foo.c src/dynpmc/foo2.c $(DYNPMC_H_FILES)
+
+src/dynpmc/foo_group.c: $(DYNPMC_FOO_OBJS)
+ $(PMC2C) --library foo_group --c $(DYNPMC_FOO)
+ $(MV) foo_group.c src/dynpmc/foo_group.c
+ $(MV) foo_group.h src/dynpmc/foo_group.h
+
+src/dynpmc/foo$(O): src/dynpmc/foo.c $(DYNPMC_H_FILES)
+
+src/dynpmc/foo.c: src/dynpmc/foo.dump
+ $(PMC2CC) src/dynpmc/foo.pmc
+
+src/dynpmc/foo.dump: src/dynpmc/foo.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/foo.pmc
+
+src/dynpmc/foo2$(O): src/dynpmc/foo2.c $(DYNPMC_H_FILES)
+
+src/dynpmc/foo2.c: src/dynpmc/foo2.dump src/dynpmc/foo.pmc
+ $(PMC2CC) src/dynpmc/foo2.pmc
+
+src/dynpmc/foo2.dump: src/dynpmc/foo2.pmc src/dynpmc/foo.dump vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/foo2.pmc
+
+
+
+$(DYNEXT_DIR)/gziphandle$(LOAD_EXT): src/dynpmc/gziphandle$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/gziphandle$(LOAD_EXT) src/dynpmc/gziphandle$(O) $(LINKARGS) $(LIB_ZLIB)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/gziphandle$(O): src/dynpmc/gziphandle.c $(DYNPMC_H_FILES)
+
+src/dynpmc/gziphandle.c: src/dynpmc/gziphandle.dump
+ $(PMC2CC) src/dynpmc/gziphandle.pmc
+
+src/dynpmc/gziphandle.dump: src/dynpmc/gziphandle.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/gziphandle.pmc
+
+
+
+$(DYNEXT_DIR)/os$(LOAD_EXT): src/dynpmc/os$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/os$(LOAD_EXT) src/dynpmc/os$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/os$(O): src/dynpmc/os.c $(DYNPMC_H_FILES)
+
+src/dynpmc/os.c: src/dynpmc/os.dump
+ $(PMC2CC) src/dynpmc/os.pmc
+
+src/dynpmc/os.dump: src/dynpmc/os.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/os.pmc
+
+
+
+$(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT): src/dynpmc/pccmethod_test$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT) src/dynpmc/pccmethod_test$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+
+src/dynpmc/pccmethod_test$(O): src/dynpmc/pccmethod_test.c $(DYNPMC_H_FILES)
+
+src/dynpmc/pccmethod_test.c: src/dynpmc/pccmethod_test.dump
+ $(PMC2CC) src/dynpmc/pccmethod_test.pmc
+
+src/dynpmc/pccmethod_test.dump: src/dynpmc/pccmethod_test.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/pccmethod_test.pmc
+
+
+
+$(DYNEXT_DIR)/rotest$(LOAD_EXT): src/dynpmc/rotest$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/rotest$(LOAD_EXT) src/dynpmc/rotest$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/rotest$(O): src/dynpmc/rotest.c $(DYNPMC_H_FILES)
+
+src/dynpmc/rotest.c: src/dynpmc/rotest.dump
+ $(PMC2CC) src/dynpmc/rotest.pmc
+
+src/dynpmc/rotest.dump: src/dynpmc/rotest.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/rotest.pmc
+
+
+
+$(DYNEXT_DIR)/rational$(LOAD_EXT): src/dynpmc/rational$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/rational$(LOAD_EXT) src/dynpmc/rational$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/rational$(O): src/dynpmc/rational.c $(DYNPMC_H_FILES)
+
+src/dynpmc/rational.c: src/dynpmc/rational.dump
+ $(PMC2CC) src/dynpmc/rational.pmc
+
+src/dynpmc/rational.dump: src/dynpmc/rational.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/rational.pmc
+
+
+
+$(DYNEXT_DIR)/subproxy$(LOAD_EXT): src/dynpmc/subproxy$(O)
+ $(LD) @ld_out@$(DYNEXT_DIR)/subproxy$(LOAD_EXT) src/dynpmc/subproxy$(O) $(LINKARGS)
+#IF(win32): if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux): $(CHMOD) 0775 $@
+
+src/dynpmc/subproxy$(O): src/dynpmc/subproxy.c $(DYNPMC_H_FILES)
+
+src/dynpmc/subproxy.c: src/dynpmc/subproxy.dump
+ $(PMC2CC) src/dynpmc/subproxy.pmc
+
+src/dynpmc/subproxy.dump: src/dynpmc/subproxy.pmc vtable.dump $(CLASS_O_FILES)
+ $(PMC2CD) src/dynpmc/subproxy.pmc
Modified: branches/ops_pct/src/dynpmc/dynlexpad.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/dynlexpad.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynpmc/dynlexpad.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -24,7 +24,7 @@
ATTR PMC *init; /* the PMC used to initialize this DynLexPad */
VTABLE void init() {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"don't create me like this");
}
@@ -44,8 +44,8 @@
Parrot_DynLexPad_attributes *attrs =
(Parrot_DynLexPad_attributes *) PMC_data(SELF);
- if (VTABLE_elements(interp, lexinfo)) {
- attrs->init = Parrot_pmc_new_init(interp, enum_class_LexPad, lexinfo);
+ if (VTABLE_elements(INTERP, lexinfo)) {
+ attrs->init = Parrot_pmc_new_init(INTERP, enum_class_LexPad, lexinfo);
}
else
attrs->init = NULL;
@@ -68,7 +68,7 @@
VTABLE void set_pointer(void* ctx) {
PMC *std_pad = PARROT_DYNLEXPAD(SELF)->init;
if (std_pad)
- VTABLE_set_pointer(interp, std_pad, ctx);
+ VTABLE_set_pointer(INTERP, std_pad, ctx);
}
/*
@@ -81,7 +81,7 @@
*/
VTABLE INTVAL elements() {
- return parrot_hash_size(interp, PARROT_DYNLEXPAD(SELF)->hash);
+ return parrot_hash_size(INTERP, PARROT_DYNLEXPAD(SELF)->hash);
}
/*
@@ -97,17 +97,17 @@
*/
VTABLE INTVAL exists_keyed(PMC* name) {
- STRING *s = VTABLE_get_string(interp, name);
+ STRING *s = VTABLE_get_string(INTERP, name);
return SELF.exists_keyed_str(s);
}
VTABLE INTVAL exists_keyed_str(STRING* name) {
PMC *std_pad;
- if (parrot_hash_exists(interp, PARROT_DYNLEXPAD(SELF)->hash, name))
+ if (parrot_hash_exists(INTERP, PARROT_DYNLEXPAD(SELF)->hash, name))
return 1;
std_pad = PARROT_DYNLEXPAD(SELF)->init;
if (std_pad)
- return VTABLE_exists_keyed_str(interp, std_pad, name);
+ return VTABLE_exists_keyed_str(INTERP, std_pad, name);
return 0;
}
@@ -124,14 +124,14 @@
*/
VTABLE PMC* get_pmc_keyed_str(STRING* name) {
- HashBucket *b = parrot_hash_get_bucket(interp,
+ HashBucket *b = parrot_hash_get_bucket(INTERP,
PARROT_DYNLEXPAD(SELF)->hash, name);
if (!b) {
PMC *std_pad = PARROT_DYNLEXPAD(SELF)->init;
if (std_pad)
- return VTABLE_get_pmc_keyed_str(interp, std_pad, name);
+ return VTABLE_get_pmc_keyed_str(INTERP, std_pad, name);
return PMCNULL;
}
@@ -140,7 +140,7 @@
}
VTABLE PMC* get_pmc_keyed(PMC* name) {
- STRING *s = VTABLE_get_string(interp, name);
+ STRING *s = VTABLE_get_string(INTERP, name);
return SELF.get_pmc_keyed_str(s);
}
@@ -159,17 +159,17 @@
*/
VTABLE void set_pmc_keyed(PMC* name, PMC* value) {
- STRING *s = VTABLE_get_string(interp, name);
+ STRING *s = VTABLE_get_string(INTERP, name);
SELF.set_pmc_keyed_str(s, value);
}
VTABLE void set_pmc_keyed_str(STRING* name, PMC* value) {
PMC *std_pad = PARROT_DYNLEXPAD(SELF)->init;
- if (std_pad && VTABLE_exists_keyed_str(interp, std_pad, name))
- VTABLE_set_pmc_keyed_str(interp, std_pad, name, value);
+ if (std_pad && VTABLE_exists_keyed_str(INTERP, std_pad, name))
+ VTABLE_set_pmc_keyed_str(INTERP, std_pad, name, value);
- parrot_hash_put(interp, PARROT_DYNLEXPAD(SELF)->hash, name, value);
+ parrot_hash_put(INTERP, PARROT_DYNLEXPAD(SELF)->hash, name, value);
}
/*
@@ -184,7 +184,7 @@
VTABLE void destroy() {
if (PARROT_DYNLEXPAD(SELF)->hash) {
- parrot_hash_destroy(interp, PARROT_DYNLEXPAD(SELF)->hash);
+ parrot_hash_destroy(INTERP, PARROT_DYNLEXPAD(SELF)->hash);
PARROT_DYNLEXPAD(SELF)->hash = NULL;
}
}
@@ -202,7 +202,7 @@
PMC *std_pad = PARROT_DYNLEXPAD(SELF)->init;
Parrot_gc_mark_PMC_alive(INTERP, std_pad);
if (PARROT_DYNLEXPAD(SELF)->hash)
- parrot_mark_hash(interp, PARROT_DYNLEXPAD(SELF)->hash);
+ parrot_mark_hash(INTERP, PARROT_DYNLEXPAD(SELF)->hash);
}
Copied: branches/ops_pct/src/dynpmc/file.pmc (from r46301, trunk/src/dynpmc/file.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/dynpmc/file.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/dynpmc/file.pmc)
@@ -0,0 +1,287 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/file.pmc - File PMC
+
+=head1 DESCRIPTION
+
+C<File> is a singleton class which provides access to File functions.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#ifdef WIN32
+# include <direct.h>
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+/* TT #1050 apparently, strerror_r is thread-safe and should be used instead.*/
+
+static PMC *File_PMC;
+pmclass File dynpmc singleton {
+
+/*
+
+=item C<void *get_pointer()>
+
+=item C<void set_pointer(void *ptr)>
+
+These two functions are part of the singleton creation interface. For more
+information see F<src/pmc.c>.
+
+=cut
+
+*/
+ void class_init() {
+ File_PMC = NULL;
+ }
+
+ VTABLE void *get_pointer() {
+ return File_PMC;
+ }
+
+ VTABLE void set_pointer(void *ptr) {
+ File_PMC = (PMC *)ptr;
+ }
+
+/*
+
+=item C<INTVAL exists(STRING *file)>
+
+Returns a true value (1) if the supplied file or directory exists.
+
+=cut
+
+*/
+
+ METHOD exists(STRING *path) {
+ struct stat info;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+#ifdef WIN32
+ const int error = stat(cpath, &info);
+#else
+ const int error = lstat(cpath, &info);
+#endif
+ Parrot_str_free_cstring(cpath);
+
+ if (error)
+ RETURN(INTVAL 0);
+
+ RETURN(INTVAL 1);
+ }
+
+/*
+
+=item C<INTVAL is_dir(STRING *path)>
+
+Returns a true value (1) if the supplied path is a directory.
+
+=cut
+
+*/
+
+ METHOD is_dir(STRING *path) {
+ struct stat info;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+#ifdef WIN32
+ const int error = stat(cpath, &info);
+#else
+ const int error = lstat(cpath, &info);
+#endif
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+
+ if (S_ISDIR(info.st_mode))
+ RETURN(INTVAL 1);
+ else
+ RETURN(INTVAL 0);
+ }
+
+/*
+
+=item C<INTVAL is_file(STRING *path)>
+
+Returns a true value (1) if the supplied path is a plain file.
+
+=cut
+
+*/
+
+ METHOD is_file(STRING *path) {
+ struct stat info;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+#ifdef WIN32
+ int error = stat(cpath, &info);
+#else
+ int error = lstat(cpath, &info);
+#endif
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+
+ if (S_ISREG(info.st_mode))
+ RETURN(INTVAL 1);
+ else
+ RETURN(INTVAL 0);
+ }
+
+/*
+
+=item C<INTVAL is_link(STRING *path)>
+
+Returns a true value (1) if the supplied path is a link.
+
+=cut
+
+*/
+
+ METHOD is_link(STRING *path) {
+#ifdef WIN32
+ /* I love win32 implementations */
+ RETURN(INTVAL 0);
+#else
+ struct stat info;
+
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ const int error = lstat(cpath, &info);
+
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+
+ if (S_ISLNK(info.st_mode))
+ RETURN(INTVAL 1);
+ else
+ RETURN(INTVAL 0);
+#endif
+ }
+
+/*
+
+=item C<void copy(STRING *from, STRING *to)>
+
+Copy the contents from file represented by path C<from> to the path
+C<to>.
+
+Uses the "work everywhere method". It is good enough to start with.
+
+NOTE: I'm sure that there should be more efficient ways to do this. Be
+free to change or give me hints on how to change it. -- ambs
+
+=cut
+
+*/
+
+ METHOD copy(STRING *from, STRING *to) {
+#define CHUNK_SIZE 1024
+
+ char * const cfrom = Parrot_str_to_cstring(INTERP, from);
+ FILE * const source = fopen(cfrom, "rb");
+
+ Parrot_str_free_cstring(cfrom);
+
+ if (source) {
+ char * const cto = Parrot_str_to_cstring(INTERP, to);
+ FILE * const target = fopen(cto, "w+b");
+
+ Parrot_str_free_cstring(cto);
+
+ if (target) {
+ while (!feof(source)) {
+ char buf[CHUNK_SIZE];
+ const size_t bytes_read = fread(buf, 1, CHUNK_SIZE, source);
+
+ if (bytes_read) {
+ const size_t bytes_written = fwrite(buf, 1, bytes_read, target);
+ if (bytes_read != bytes_written) {
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_EXTERNAL_ERROR, "Error writing file");
+ break;
+ }
+ }
+ }
+ fclose(target);
+ }
+ else {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ fclose(source);
+ }
+ else {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+#undef CHUNK_SIZE
+ }
+
+/*
+
+=item C<void rename(STRING *from, STRING *to)>
+
+Rename a file C<from> to the path C<to>.
+
+=cut
+
+*/
+
+ METHOD rename(STRING *from, STRING *to) {
+ char * const cfrom = Parrot_str_to_cstring(INTERP, from);
+ char * const cto = Parrot_str_to_cstring(INTERP, to);
+ const int error = rename(cfrom, cto);
+
+ Parrot_str_free_cstring(cfrom);
+ Parrot_str_free_cstring(cto);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+}
+
+/*
+
+=back
+
+=head1 SEE ALS0
+
+ stat(2), rename(2)
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/dynpmc/foo.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/foo.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynpmc/foo.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -16,15 +16,15 @@
MULTI PMC* subtract(Integer value, PMC *dest) {
if (!dest)
- dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
- VTABLE_set_integer_native(interp, dest, 144);
+ dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+ VTABLE_set_integer_native(INTERP, dest, 144);
return dest;
}
MULTI PMC* subtract(DEFAULT value, PMC *dest) {
if (!dest)
- dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
- VTABLE_set_integer_native(interp, dest, 244);
+ dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+ VTABLE_set_integer_native(INTERP, dest, 244);
return dest;
}
}
Deleted: branches/ops_pct/src/dynpmc/gdbmhash.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/gdbmhash.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,446 +0,0 @@
-/* gdbmhash.pmc
- * Copyright (C) 2005-2009, Parrot Foundation.
- * SVN Info
- * $Id$
- * Overview:
- * These are the vtable functions for the GDBMHash PMC
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * Please remove unneeded entries.
- * References:
-
-=head1 NAME
-
-src/dynpmc/gdbmhash.pmc - GDBM PMC
-
-=head1 DESCRIPTION
-
-This is an interface to the GNU dbm library.
-
-=head1 keys
-
-On inserted and fetch, keys are converted to STRINGs.
-
-=head2 store
-
-PMC insert values are converted to STRINGs.
-
-=head2 fetch
-
-get_integer_keyed() and get_number_keyed() probably don't make any sense,
-as integers usually can't be converted.
-
-When a PMC is requested, a String PMC is returned.
-
-
-=head2 Functions
-
-=over 4
-
-=cut
-
- */
-
-#include <gdbm.h>
-#include "parrot/extend.h"
-
-typedef struct GDBM_FH {
- GDBM_FILE f;
-} GDBM_FH;
-
-#define PMC_dbfh(x) ((Parrot_GDBMHash_attributes *)PMC_data(x))->db_handle->f
-
-
-/*
-
-=item C<static STRING* make_hash_key(PARROT_INTERP, PMC *key)>
-
-Returns a Parrot string for C<*key>.
-
-=cut
-
-*/
-
-static STRING* make_hash_key(PARROT_INTERP, NOTNULL(PMC * key))
-{
- if (key)
- return VTABLE_get_string(interp, key);
-
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
- "Hash: Cannot use NULL key");
-
-}
-
-
-pmclass GDBMHash provides hash dynpmc lib gdbm auto_attrs {
- ATTR struct GDBM_FH *db_handle;
-
-/*
-
-=item C<void class_init()>
-
-Class initialization. GDBMHash is a dynamic PMC, meaning that a dynamically
-loadable module is created. On Unix-like systems this is a shared library.
-When it is available, the shared library has linked in the library 'gdbm'.
-
-On WIN32 the relevant library seems to be called 'gdbm3'.
-So we do a bit of cheating here, and load it during class initialization.
-
-=cut
-
-*/
-
- VTABLE void class_init() {
-#ifdef WIN32
- /* TT #1252: What if libgdbm.so cannot be loaded */
- /* Parrot_load_lib(interp, slib, NULL); */
- STRING *slib = CONST_STRING(interp, "gdbm3");
-#endif
- }
-
- VTABLE void init() {
- Parrot_GDBMHash_attributes *attrs = PARROT_GDBMHASH(SELF);
- attrs->db_handle = mem_gc_allocate_zeroed_typed(INTERP, GDBM_FH);
- PObj_custom_destroy_SET(SELF);
- }
-
- VTABLE void destroy() {
- Parrot_GDBMHash_attributes *attrs = PARROT_GDBMHASH(SELF);
- mem_gc_free(INTERP, attrs->db_handle);
- PMC_data(SELF) = NULL;
- }
-
- VTABLE void* get_pointer() {
- return PMC_dbfh(SELF);
- }
-
- VTABLE void set_pointer(void* p) {
- PMC_dbfh(SELF) = (GDBM_FILE)p;
- }
-
-/*
-
-=item C<VOID set_string_native(STRING* value)>
-
-Open a or create a new dbm file.
-
-=cut
-
-*/
-
- VTABLE void set_string_native(STRING* value) {
- char * const c_db_name = Parrot_str_to_cstring(interp, value);
- GDBM_FILE dbf = gdbm_open(c_db_name, 0, GDBM_NEWDB, 0666, 0);
-
- Parrot_str_free_cstring(c_db_name);
-
- PMC_dbfh(SELF) = dbf;
- }
-
-/*
-
-=item C<INTVAL get_integer()>
-
-Returns the number of pairs in the hash.
-A uninitialized GDBMHash returns 0.
-
-=cut
-
-*/
-
- VTABLE INTVAL get_integer() {
- GDBM_FILE dbf = PMC_dbfh(SELF);
- if (! dbf) {
- return 0;
- }
- else {
- INTVAL cnt = 0;
- datum key, nextkey;
- for (key = gdbm_firstkey(dbf); key.dptr; key = nextkey) {
- cnt++;
- nextkey = gdbm_nextkey(dbf, key);
- free(key.dptr);
- }
-
- return cnt;
- }
- }
-
-/*
-
-=item C<INTVAL get_bool()>
-
-Returns true if the hash size is not zero.
-
-=cut
-
-*/
-
- VTABLE INTVAL get_bool() {
- GDBM_FILE dbf = PMC_dbfh(SELF);
- if (! dbf) {
- return 0;
- }
- else {
- datum key = gdbm_firstkey(dbf);
- if (key.dptr) {
- return 1;
- }
- else {
- return 0;
- }
- }
- }
-
-/*
-
-=item C<void set_string_keyed(PMC *key, STRING *value)>
-
-=cut
-
-*/
-
- VTABLE void set_string_keyed(PMC* key, STRING* value) {
- STRING* keystr;
- GDBM_FILE dbf = PMC_dbfh(SELF);
- datum key_gdbm, val_gdbm;
-
- if (!key) return;
- if (!dbf) return;
- keystr = make_hash_key(interp, key);
-
- key_gdbm.dptr = Parrot_str_to_cstring(interp, keystr);
- key_gdbm.dsize = strlen(key_gdbm.dptr);
- val_gdbm.dptr = Parrot_str_to_cstring(interp, value);
- val_gdbm.dsize = strlen(val_gdbm.dptr);
-
- gdbm_store(dbf, key_gdbm, val_gdbm, GDBM_REPLACE);
-
- Parrot_str_free_cstring(key_gdbm.dptr);
- Parrot_str_free_cstring(val_gdbm.dptr);
-
- return;
- }
-
-/*
-
-=item C<STRING *get_string_keyed(PMC *key)>
-
-Returns the string value for the element at C<*key>.
-
-=cut
-
-*/
-
- VTABLE STRING* get_string_keyed(PMC *key) {
- STRING *keystr, *val;
- GDBM_FILE dbf = PMC_dbfh(SELF);
- datum key_gdbm, val_gdbm;
-
- if (!key)
- return string_from_literal(INTERP, "");
-
- if (!dbf)
- return string_from_literal(INTERP, "");
-
- keystr = make_hash_key(interp, key);
-
- key_gdbm.dptr = Parrot_str_to_cstring(interp, keystr);
- key_gdbm.dsize = strlen(key_gdbm.dptr);
- val_gdbm = gdbm_fetch(dbf, key_gdbm);
-
- val = Parrot_str_new(interp, val_gdbm.dptr, val_gdbm.dsize);
- Parrot_str_free_cstring(key_gdbm.dptr);
- free(val_gdbm.dptr);
-
- return val;
- }
-
-
-/*
-
-=item C<void set_pmc_keyed(PMC* key, PMC *value)>
-
-Convert C<value> to a string and set the string for the C<key>.
-
-=cut
-
-*/
-
- VTABLE void set_pmc_keyed(PMC* key, PMC* value) {
- STRING *temp;
-
- temp = VTABLE_get_string(interp, value);
- SELF.set_string_keyed(key, temp);
- }
-
-/*
-
-=item C<PMC *get_pmc_keyed(PMC *key)>
-
-Returns the PMC value for the element at C<*key>.
-
-=cut
-
-*/
-
- VTABLE PMC* get_pmc_keyed(PMC* key) {
- STRING * ret_string = SELF.get_string_keyed(key);
- PMC *ret_pmc = Parrot_pmc_new(interp, enum_class_String);
-
- VTABLE_set_string_native(interp, ret_pmc, ret_string);
-
- return ret_pmc;
- }
-
-/*
-
-=item C<void set_integer_keyed(PMC* key, INTVAL value)>
-
-Convert C<value> to a string and set the string for the C<key>.
-
-=cut
-
-*/
-
- VTABLE void set_integer_keyed(PMC* key, INTVAL value) {
- PMC *temp;
-
- temp = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_integer_native(interp, temp, value);
- SELF.set_pmc_keyed(key, temp);
- }
-
-
-/*
-
-=item C<void set_number_keyed(PMC* key, FLOATVAL value)>
-
-Convert C<value> to a string and set the string for the C<key>.
-
-=cut
-
-*/
-
- VTABLE void set_number_keyed(PMC* key, FLOATVAL value) {
- PMC *temp;
-
- temp = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_number_native(interp, temp, value);
- SELF.set_pmc_keyed(key, temp);
- }
-
-/*
-
-=item C<INTVAL exists_keyed(PMC *key)>
-
-Returns whether a key C<*key> exists in the hash.
-
-=cut
-
-*/
-
- VTABLE INTVAL exists_keyed(PMC* key) {
- STRING* keystr;
- GDBM_FILE dbf = PMC_dbfh(SELF);
- datum key_gdbm;
- INTVAL ret;
-
- if (!key) return 0;
- if (!dbf) return 0;
- keystr = make_hash_key(interp, key);
-
- key_gdbm.dptr = Parrot_str_to_cstring(interp, keystr);
- key_gdbm.dsize = strlen(key_gdbm.dptr);
-
- ret = gdbm_exists(dbf, key_gdbm);
- Parrot_str_free_cstring(key_gdbm.dptr);
-
- return ret;
- }
-
-/*
-
-=item C<void delete_keyed(PMC *key)>
-
-Deletes the element associated with C<*key>.
-
-=cut
-
-*/
-
- VTABLE void delete_keyed(PMC* key) {
- STRING* keystr;
- GDBM_FILE dbf = PMC_dbfh(SELF);
- datum key_gdbm;
-
- if (!key) return;
- if (!dbf) return;
- keystr = make_hash_key(interp, key);
-
- key_gdbm.dptr = Parrot_str_to_cstring(interp, keystr);
- key_gdbm.dsize = strlen(key_gdbm.dptr);
-
- if (gdbm_exists(dbf, key_gdbm)) {
- gdbm_delete(dbf, key_gdbm);
- }
-
- Parrot_str_free_cstring(key_gdbm.dptr);
-
- return;
- }
-
-/*
-
-=back
-
-=head2 Specific Methods
-
-=over 4
-
-=item C<void open(STRING* value)>
-
-Open a or create a new dbm file.
-
-=cut
-
-*/
-
- METHOD void open(STRING* value) {
- VTABLE_set_string_native(interp, SELF, value);
- }
-
-/*
-
-=item C<void close()>
-
-Close current dbm file.
-
-=cut
-
-*/
-
- METHOD void close() {
- gdbm_close(PMC_dbfh(SELF));
- }
-}
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-F<docs/pdds/pdd08_keys.pod>, L<http://gdbm.gnu.org>
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Copied: branches/ops_pct/src/dynpmc/gziphandle.pmc (from r46301, trunk/src/dynpmc/gziphandle.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/dynpmc/gziphandle.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/dynpmc/gziphandle.pmc)
@@ -0,0 +1,314 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/dynpmc/gziphandle.pmc - GzipHandle PMC
+
+=head1 DESCRIPTION
+
+The GzipHandle PMC performs I/O operations on a source or destination file.
+
+This PMC wraps the zlib.
+
+=head2 Vtable Functions
+
+=over 4
+
+=cut
+
+*/
+
+#include <zlib.h>
+#include "parrot/extend.h"
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass GzipHandle provides Handle dynpmc auto_attrs {
+ ATTR void *file;
+
+/*
+
+=item C<void init()>
+
+Initializes a newly created FileHandle object.
+
+=cut
+
+*/
+ VTABLE void init() {
+ PARROT_GZIPHANDLE(SELF)->file = NULL;
+ }
+
+/*
+
+=item C<INTVAL get_bool()>
+
+Returns whether the GzipHandle has reached the end of the file.
+
+=cut
+
+*/
+ VTABLE INTVAL get_bool() {
+ gzFile file;
+ GET_ATTR_file(INTERP, SELF, file);
+ return !gzeof(file);
+ }
+
+/*
+
+=back
+
+=head2 Stream-Oriented Methods
+
+=over 4
+
+=item C<METHOD open(STRING *filename, STRING *mode :optional)>
+
+Opens the file at the given filename (including path) with the given mode. The
+invocant is modified and becomes an open filehandle.
+
+=cut
+
+*/
+ METHOD open(STRING *filename, STRING *mode :optional,
+ INTVAL has_mode :opt_flag) {
+ char * const path = Parrot_str_to_cstring(INTERP, filename);
+ gzFile file;
+
+ if (has_mode) {
+ char * const mod = Parrot_str_to_cstring(INTERP, mode);
+ file = gzopen(path, mod);
+ Parrot_str_free_cstring(mod);
+ }
+ else
+ file = gzopen(path, "rb");
+
+ Parrot_str_free_cstring(path);
+
+ if (!file)
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+ "gzopen fails");
+
+ SET_ATTR_file(INTERP, SELF, file);
+ RETURN(PMC SELF);
+ }
+
+/*
+
+=item C<METHOD close()>
+
+Close the gziphandle.
+
+=cut
+
+*/
+ METHOD close() {
+ INTVAL status;
+ gzFile file;
+ GET_ATTR_file(INTERP, SELF, file);
+ status = gzclose(file);
+ RETURN(INTVAL status);
+ }
+
+/*
+
+=item C<METHOD eof()>
+
+Returns true if the filehandle is at end-of-file, returns false otherwise.
+
+=cut
+
+*/
+ METHOD eof() {
+ INTVAL status;
+ gzFile file;
+ GET_ATTR_file(INTERP, SELF, file);
+ status = gzeof(file);
+ RETURN(INTVAL status);
+ }
+
+/*
+
+=item C<METHOD flush()>
+
+Flushes the gziphandle.
+
+=cut
+
+*/
+ METHOD flush() {
+ INTVAL status;
+ gzFile file;
+ GET_ATTR_file(INTERP, SELF, file);
+ status = gzflush(file, Z_SYNC_FLUSH);
+ RETURN(INTVAL status);
+ }
+
+/*
+
+=item C<METHOD print([INTVAL|FLOATVAL|STRING *|PMC*] value)>
+
+Print the passed in integer, number, string, or PMC to the gziphandle.
+(Integers, numbers, and strings are auto-boxed as PMCs.)
+
+=cut
+
+*/
+ METHOD print(PMC *value) {
+ gzFile file;
+ STRING * const str = VTABLE_get_string(INTERP, value);
+ char * const buf = Parrot_str_to_cstring(INTERP, str);
+ const UINTVAL len = Parrot_str_byte_length(INTERP, str);
+
+ GET_ATTR_file(INTERP, SELF, file);
+ (void)gzwrite(file, buf, len);
+ Parrot_str_free_cstring(buf);
+ }
+
+
+/*
+
+=item C<METHOD puts(STRING *value)>
+
+Print the string to the gziphandle.
+
+=cut
+
+*/
+ METHOD puts(STRING *value) {
+ INTVAL status;
+ gzFile file;
+ char * const buf = Parrot_str_to_cstring(INTERP, value);
+ const UINTVAL len = Parrot_str_byte_length(INTERP, value);
+
+ GET_ATTR_file(INTERP, SELF, file);
+ status = gzwrite(file, buf, len);
+ Parrot_str_free_cstring(buf);
+ RETURN(INTVAL status);
+ }
+
+/*
+
+=item C<METHOD read(INTVAL bytes)>
+
+Read the given number of bytes from the gziphandle and return them in a string.
+
+=cut
+
+*/
+ METHOD read(INTVAL length) {
+ int result;
+ gzFile file;
+ STRING *str = STRINGNULL;
+ char * const buf = mem_allocate_n_zeroed_typed(length, char);
+ GET_ATTR_file(INTERP, SELF, file);
+ result = gzread(file, buf, length);
+ if (result > 0) {
+ str = Parrot_str_new(INTERP, buf, result);
+ }
+ mem_sys_free(buf);
+ RETURN(STRING *str);
+ }
+
+/*
+
+=item C<METHOD is_tty()>
+
+GzipHandles are never tty's, returns false.
+
+=cut
+
+*/
+ METHOD is_tty() {
+ RETURN(INTVAL 0);
+ }
+
+/*
+
+=back
+
+=head2 Basic Methods
+
+=over 4
+
+=item C<METHOD version()>
+
+Returns a string with the zlib version.
+
+*/
+ METHOD version() {
+ STRING *version = Parrot_str_new_constant(INTERP, zlibVersion());
+ RETURN(STRING *version);
+ }
+
+ METHOD compress(STRING *str) {
+ int rc;
+ char *buf;
+ STRING *dst = NULL;
+ UINTVAL srcLen, bufSize, dstLen;
+ char * const src = Parrot_str_to_cstring(INTERP, str);
+
+ if (!src)
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+ "failed to allocate");
+
+ srcLen = Parrot_str_byte_length(INTERP, str);
+ bufSize = 12 + srcLen + srcLen / 1000;
+ buf = mem_allocate_n_zeroed_typed(bufSize, char);
+
+ if (!buf) {
+ Parrot_str_free_cstring(src);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+ "failed to allocate");
+ }
+
+ rc = compress((Bytef *)buf, &dstLen, (const Bytef *)src, srcLen);
+ Parrot_str_free_cstring(src);
+
+ switch (rc) {
+ case Z_OK:
+ dst = Parrot_str_new(INTERP, buf, dstLen);
+ mem_sys_free(buf);
+ break;
+
+ case Z_MEM_ERROR:
+ mem_sys_free(buf);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+ "not enough memory");
+ break;
+
+ case Z_BUF_ERROR:
+ mem_sys_free(buf);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
+ "output buffer error");
+ break;
+
+ default:
+ /* these are the only three documented return values */
+ break;
+ }
+
+ RETURN(STRING *dst);
+ }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+
Copied: branches/ops_pct/src/dynpmc/os.pmc (from r46301, trunk/src/dynpmc/os.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/dynpmc/os.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/dynpmc/os.pmc)
@@ -0,0 +1,610 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/os.pmc - Files and Directories PMC
+
+=head1 DESCRIPTION
+
+C<OS> is a singleton class which provides access to the filesystem
+files and directories.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#if defined(_MSC_VER)
+# include <direct.h>
+# include <io.h>
+# include <tchar.h>
+# include <windows.h>
+#elif defined(__BORLANDC__)
+# include <dir.h>
+# include <dirent.h>
+#else
+# include <dirent.h>
+#endif
+
+/* XXX Check if we need to deallocate strerror strings */
+/* XXX apparently, strerror_r is thread-safe and should be used instead.*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+static PMC *OS_PMC;
+pmclass OS dynpmc singleton {
+
+/*
+
+=item C<void *get_pointer()>
+
+=item C<void set_pointer(void *ptr)>
+
+These two functions are part of the singleton creation interface. For more
+information see F<src/pmc.c>.
+
+=cut
+
+*/
+
+ void class_init() {
+ OS_PMC = NULL;
+ }
+
+ VTABLE void *get_pointer() {
+ return OS_PMC;
+ }
+
+ VTABLE void set_pointer(void *ptr) {
+ OS_PMC = (PMC *)ptr;
+ }
+
+
+/*
+
+=item C<STRING *cwd()>
+
+Returns the current working directory.
+
+=cut
+
+*/
+
+ METHOD cwd() {
+ char *cwd;
+#ifdef _MSC_VER
+ cwd = _getcwd(NULL, 0);
+ /* capitalize the drive letter */
+ cwd[0] = (char)toupper((unsigned char)cwd[0]);
+#else
+# ifdef PATH_MAX
+ cwd = getcwd(NULL, PATH_MAX+1);
+# else
+ cwd = getcwd(NULL, 0);
+# endif
+#endif
+ if (cwd) {
+ STRING * const scwd = Parrot_str_new(INTERP, cwd, strlen(cwd));
+ free(cwd);
+ RETURN(STRING *scwd);
+ }
+ else {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+
+/*
+
+=item C<void chdir(STRING *path)>
+
+Changes the current working directory to the one specified by C<path>.
+
+=cut
+
+*/
+
+ METHOD chdir(STRING *path) {
+ int error;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+#ifdef _MSC_VER
+ error = _chdir(cpath);
+#else
+ error = chdir(cpath);
+#endif
+ Parrot_str_free_cstring(cpath);
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+
+/*
+
+=item C<void rm(STRING *path)>
+
+Calls C<remove> to remove the file or empty directory specified by
+C<path>.
+
+=cut
+
+*/
+
+ METHOD rm(STRING *path) {
+ struct stat info;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ int error = stat(cpath, &info);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_str_free_cstring(cpath);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+
+ if (S_ISDIR(info.st_mode)) {
+#ifdef _MSC_VER
+ error = _rmdir(cpath);
+#else
+ error = rmdir(cpath);
+#endif
+ Parrot_str_free_cstring(cpath);
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+ else {
+ error = remove(cpath);
+ Parrot_str_free_cstring(cpath);
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+ }
+
+/*
+
+=item C<void mkdir(STRING *path, STRING *mode)>
+
+Creates a directory specified by C<path> with mode C<mode>.
+
+=cut
+
+*/
+
+ METHOD mkdir(STRING *path, INTVAL mode) {
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ /* should we validate mode? */
+#ifdef WIN32
+ const int error = _mkdir(cpath);
+#else
+ const int error = mkdir(cpath, (mode_t)mode);
+#endif
+ Parrot_str_free_cstring(cpath);
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+
+/*
+
+=item C<fixedpmcarray *stat(STRING *path)>
+
+Stats a file, and returns a 13 position array as in Perl:
+
+ 0 dev device number of filesystem
+ 1 ino inode number
+ 2 mode file mode (type and permissions)
+ 3 nlink number of (hard) links to the file
+ 4 uid numeric user ID of file's owner
+ 5 gid numeric group ID of file's owner
+ 6 rdev the device identifier (special files only)
+ 7 size total size of file, in bytes
+ 8 atime last access time in seconds since the epoch
+ 9 mtime last modify time in seconds since the epoch
+ 10 ctime inode change time in seconds since the epoch (*)
+ 11 blksize preferred block size for file system I/O
+ 12 blocks actual number of blocks allocated
+
+11 and 12 are not available under Windows.
+
+=cut
+
+TT #849: Provide a mechanism for setting 'mtime' and 'atime':
+https://trac.parrot.org/parrot/ticket/849
+
+*/
+
+ METHOD stat(STRING *path) {
+ struct stat info;
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ const int error = stat(cpath, &info);
+
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ else {
+ PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
+ VTABLE_set_integer_native(INTERP, array, 13);
+
+ VTABLE_set_integer_keyed_int(INTERP, array, 0,
+ (INTVAL)info.st_dev);
+ VTABLE_set_integer_keyed_int(INTERP, array, 1,
+ (INTVAL)info.st_ino);
+ VTABLE_set_integer_keyed_int(INTERP, array, 2,
+ (INTVAL)info.st_mode);
+ VTABLE_set_integer_keyed_int(INTERP, array, 3,
+ (INTVAL)info.st_nlink);
+ VTABLE_set_integer_keyed_int(INTERP, array, 4,
+ (INTVAL)info.st_uid);
+ VTABLE_set_integer_keyed_int(INTERP, array, 5,
+ (INTVAL)info.st_gid);
+ VTABLE_set_integer_keyed_int(INTERP, array, 6,
+ (INTVAL)info.st_rdev);
+ VTABLE_set_integer_keyed_int(INTERP, array, 7,
+ (INTVAL)info.st_size);
+ VTABLE_set_integer_keyed_int(INTERP, array, 8,
+ (INTVAL)info.st_atime);
+ VTABLE_set_integer_keyed_int(INTERP, array, 9,
+ (INTVAL)info.st_mtime);
+ VTABLE_set_integer_keyed_int(INTERP, array, 10,
+ (INTVAL)info.st_ctime);
+#ifndef WIN32
+ VTABLE_set_integer_keyed_int(INTERP, array, 11,
+ (INTVAL)info.st_blksize);
+ VTABLE_set_integer_keyed_int(INTERP, array, 12,
+ (INTVAL)info.st_blocks);
+#endif
+ RETURN(PMC *array);
+ }
+ }
+
+/*
+
+=item C<fixedpmcarray *lstat(STRING *path)>
+
+Stats a file, and returns a 13 position array as in Perl:
+
+ 0 dev device number of filesystem
+ 1 ino inode number
+ 2 mode file mode (type and permissions)
+ 3 nlink number of (hard) links to the file
+ 4 uid numeric user ID of file's owner
+ 5 gid numeric group ID of file's owner
+ 6 rdev the device identifier (special files only)
+ 7 size total size of file, in bytes
+ 8 atime last access time in seconds since the epoch
+ 9 mtime last modify time in seconds since the epoch
+ 10 ctime inode change time in seconds since the epoch (*)
+ 11 blksize preferred block size for file system I/O
+ 12 blocks actual number of blocks allocated
+
+11 and 12 are not available under Windows.
+
+=cut
+
+*/
+
+ METHOD lstat(STRING *path) {
+ struct stat info;
+
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+#ifdef WIN32
+ const int error = stat(cpath, &info);
+#else
+ const int error = lstat(cpath, &info);
+#endif
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ else {
+ PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
+ VTABLE_set_integer_native(INTERP, array, 13);
+
+ VTABLE_set_integer_keyed_int(INTERP, array, 0,
+ (INTVAL)info.st_dev);
+ VTABLE_set_integer_keyed_int(INTERP, array, 1,
+ (INTVAL)info.st_ino);
+ VTABLE_set_integer_keyed_int(INTERP, array, 2,
+ (INTVAL)info.st_mode);
+ VTABLE_set_integer_keyed_int(INTERP, array, 3,
+ (INTVAL)info.st_nlink);
+ VTABLE_set_integer_keyed_int(INTERP, array, 4,
+ (INTVAL)info.st_uid);
+ VTABLE_set_integer_keyed_int(INTERP, array, 5,
+ (INTVAL)info.st_gid);
+ VTABLE_set_integer_keyed_int(INTERP, array, 6,
+ (INTVAL)info.st_rdev);
+ VTABLE_set_integer_keyed_int(INTERP, array, 7,
+ (INTVAL)info.st_size);
+ VTABLE_set_integer_keyed_int(INTERP, array, 8,
+ (INTVAL)info.st_atime);
+ VTABLE_set_integer_keyed_int(INTERP, array, 9,
+ (INTVAL)info.st_mtime);
+ VTABLE_set_integer_keyed_int(INTERP, array, 10,
+ (INTVAL)info.st_ctime);
+#ifndef WIN32
+ VTABLE_set_integer_keyed_int(INTERP, array, 11,
+ (INTVAL)info.st_blksize);
+ VTABLE_set_integer_keyed_int(INTERP, array, 12,
+ (INTVAL)info.st_blocks);
+#endif
+ RETURN(PMC *array);
+ }
+ }
+
+/*
+
+=item C<void symlink(STRING *from, STRING *to)>
+
+Creates a symlink, where available
+
+=cut
+
+*/
+
+ METHOD symlink(STRING *from, STRING *to) {
+#ifndef WIN32
+ char * const cfrom = Parrot_str_to_cstring(INTERP, from);
+ char * const cto = Parrot_str_to_cstring(INTERP, to);
+ const int error = symlink(cfrom, cto);
+
+ Parrot_str_free_cstring(cfrom);
+ Parrot_str_free_cstring(cto);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+#else
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
+ "Win32 does not support symlinks!");
+#endif
+ }
+
+/*
+
+=item C<void link(STRING *from, STRING *to)>
+
+Creates a hard link, where available(?)
+
+=cut
+
+*/
+
+ METHOD link(STRING *from, STRING *to) {
+#ifndef WIN32
+ char * const cfrom = Parrot_str_to_cstring(INTERP, from);
+ char * const cto = Parrot_str_to_cstring(INTERP, to);
+ const int error = link(cfrom, cto);
+
+ Parrot_str_free_cstring(cfrom);
+ Parrot_str_free_cstring(cto);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ "link() failed for OS PMC: %s\n", errmsg);
+ }
+#else
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
+ "Win32 is not POSIX. Need win32 developer!");
+#endif
+ }
+
+/*
+
+=item C<INTVAL umask(INTVAL mask)>
+
+umask sets the process's file mode creation mask (and returns the
+previous one).
+
+=cut
+
+*/
+
+ METHOD umask(INTVAL mask) {
+#ifndef _MSC_VER
+ const INTVAL old = umask((mode_t)mask);
+ RETURN(INTVAL old);
+#else
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_UNIMPLEMENTED,
+ "Win32 is not POSIX. Need Win32 developer!");
+#endif
+ }
+
+/*
+
+=item C<INTVAL chroot(STRING *path)>
+
+it makes the named directory the new root directory for all further
+pathnames that begin with a "/" by your process and all its children.
+
+B<NOTE>: perl restricts this operation to superusers. It might be a good
+idea to do the same with parrot.
+
+=cut
+
+*/
+
+ METHOD chroot(STRING *path) {
+#ifndef WIN32
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ const int error = chroot(cpath);
+
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+#else
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
+ "Win32 is not POSIX. Need Win32 developer!");
+#endif
+ }
+
+
+/*
+
+=item C<PMC *readdir(STRING *path)>
+
+reads entries from a directory.
+
+=cut
+
+*/
+ METHOD readdir(STRING *path) {
+ PMC * array = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+#ifndef _MSC_VER
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+ DIR * const dir = opendir(cpath);
+ struct dirent *dirent;
+
+ Parrot_str_free_cstring(cpath);
+
+ if (!dir) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+
+ while ((dirent = readdir(dir)) != NULL) {
+ VTABLE_push_string(INTERP, array, Parrot_str_new(INTERP, dirent->d_name, 0));
+ }
+
+ closedir(dir);
+#else
+ WIN32_FIND_DATA file_find_data;
+ char * cpath;
+ HANDLE hFind = INVALID_HANDLE_VALUE;
+
+ /* Add \* to the directory name and start search. */
+ STRING *last_char = Parrot_str_substr(INTERP, path,
+ Parrot_str_length(INTERP, path) - 1, 1, NULL, 0);
+ int trailing_slash = Parrot_str_equal(INTERP, last_char, string_from_literal(INTERP, "\\"))
+ ||
+ Parrot_str_equal(INTERP, last_char, string_from_literal(INTERP, "/"));
+ cpath = Parrot_str_to_cstring(INTERP, Parrot_str_concat(INTERP,
+ path, string_from_literal(INTERP, trailing_slash ? "*" : "\\*"), 0));
+ hFind = FindFirstFile(cpath, &file_find_data);
+ Parrot_str_free_cstring(cpath);
+ if (hFind == INVALID_HANDLE_VALUE)
+ {
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ "Unable to readdir");
+ }
+
+ /* Loop over all directories and add to result array. */
+ do
+ {
+ VTABLE_push_string(INTERP, array, Parrot_str_new(INTERP,
+ file_find_data.cFileName, 0));
+ }
+ while (FindNextFile(hFind, &file_find_data) != 0);
+ if (GetLastError() != ERROR_NO_MORE_FILES)
+ {
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ "Error during readdir");
+ }
+ FindClose(hFind);
+#endif
+ RETURN(PMC *array);
+ }
+/*
+=item C<rename(STRING *oldpath, STRING *newpath)>
+
+This method is a wrapper for rename(2). On error a SystemError exception is
+thrown.
+
+=cut
+
+*/
+ METHOD rename(STRING *oldpath, STRING *newpath) {
+ char * const coldpath = Parrot_str_to_cstring(INTERP, oldpath);
+ char * const cnewpath = Parrot_str_to_cstring(INTERP, newpath);
+ const int ret = rename(coldpath, cnewpath);
+
+ Parrot_str_free_cstring(coldpath);
+ Parrot_str_free_cstring(cnewpath);
+
+ if (ret < 0) {
+ const char * const errmsg = strerror(errno) ;
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ "%s", errmsg);
+ }
+ }
+
+/*
+
+=item C<chmod(STRING *path, INTVAL mode)>
+
+=cut
+
+*/
+
+ METHOD chmod(STRING *path, INTVAL mode) {
+ char * const cpath = Parrot_str_to_cstring(INTERP, path);
+
+#ifndef WIN32
+ const int error = chmod(cpath, mode);
+#else
+ const int error = _chmod(cpath, mode);
+#endif
+
+ Parrot_str_free_cstring(cpath);
+
+ if (error) {
+ const char * const errmsg = strerror(errno);
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
+ errmsg);
+ }
+ }
+
+}
+
+/*
+
+=back
+
+=head1 SEE ALS0
+
+ chdir(2), getcwd(3), unlink(2), mkdir(2), stat(2), lstat(2),
+ symlink(2), link(2), umask(2), chroot(2)
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/dynpmc/pccmethod_test.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/pccmethod_test.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynpmc/pccmethod_test.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,32 +20,32 @@
METHOD test_method()
{
UNUSED(SELF);
- Parrot_io_printf(interp, "test_method\n");
+ Parrot_io_printf(INTERP, "test_method\n");
}
METHOD test_method0(int a1)
{
UNUSED(SELF);
- Parrot_io_printf(interp, "test_method0\n");
- Parrot_io_printf(interp, "%d\n", a1);
+ Parrot_io_printf(INTERP, "test_method0\n");
+ Parrot_io_printf(INTERP, "%d\n", a1);
}
METHOD test_method1(int a1, int a2, int a3, int a4, int a5, int a6)
{
UNUSED(SELF);
- Parrot_io_printf(interp, "test_method1\n");
- Parrot_io_printf(interp, "%d,%d,%d,%d,%d,%d\n", a1, a2, a3, a4, a5, a6);
+ Parrot_io_printf(INTERP, "test_method1\n");
+ Parrot_io_printf(INTERP, "%d,%d,%d,%d,%d,%d\n", a1, a2, a3, a4, a5, a6);
}
METHOD test_method2(int a1 :optional, int a1o :opt_flag,
PMC *slurpy_pos :slurpy)
{
- STRING *kevin = CONST_STRING(interp, "KEVIN");
+ STRING *kevin = CONST_STRING(INTERP, "KEVIN");
UNUSED(SELF);
- Parrot_io_printf(interp, "test_method2\n");
- Parrot_io_printf(interp, "%d, %d, %Ss %Ss\n", a1, a1o,
- VTABLE_name(interp, slurpy_pos),
- VTABLE_get_repr(interp, slurpy_pos));
+ Parrot_io_printf(INTERP, "test_method2\n");
+ Parrot_io_printf(INTERP, "%d, %d, %Ss %Ss\n", a1, a1o,
+ VTABLE_name(INTERP, slurpy_pos),
+ VTABLE_get_repr(INTERP, slurpy_pos));
RETURN(int 1000, STRING *kevin);
}
@@ -53,8 +53,8 @@
METHOD test_method3(PMC *a1 :named("a1name"), PMC *a2 :named("a2name"))
{
UNUSED(SELF);
- Parrot_io_printf(interp, "test_method3\n");
- Parrot_io_printf(interp, "%Ps, %Ps\n", a1, a2);
+ Parrot_io_printf(INTERP, "test_method3\n");
+ Parrot_io_printf(INTERP, "%Ps, %Ps\n", a1, a2);
}
METHOD test_method4(int george :optional, int g_f :opt_flag,
@@ -65,7 +65,7 @@
UNUSED(g_f);
UNUSED(slurpy_pos);
UNUSED(slurpy_named);
- Parrot_io_printf(interp, "test_method4\n");
+ Parrot_io_printf(INTERP, "test_method4\n");
}
}
Modified: branches/ops_pct/src/dynpmc/rational.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/rational.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynpmc/rational.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1028,7 +1028,7 @@
mpq_init(t);
mpq_set_ui(t, VTABLE_get_integer(INTERP, value), 1);
- eq = (INTVAL) mpq_equal(RT(SELF), RT(value));
+ eq = (INTVAL) mpq_equal(RT(SELF), t);
mpq_clear(t);
return eq;
Modified: branches/ops_pct/src/dynpmc/subproxy.pmc
==============================================================================
--- branches/ops_pct/src/dynpmc/subproxy.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/dynpmc/subproxy.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -34,22 +34,22 @@
Parrot_Sub_attributes *rsub, *my_sub;
if (!key)
- Parrot_ex_throw_from_c_args(interp, NULL, 1, "SubProxy: no key");
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1, "SubProxy: no key");
- file = VTABLE_get_string(interp, key);
+ file = VTABLE_get_string(INTERP, key);
if (!file)
- Parrot_ex_throw_from_c_args(interp, NULL, 1, "SubProxy: no file");
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1, "SubProxy: no file");
- sub_pmc = key_next(interp, key);
+ sub_pmc = key_next(INTERP, key);
if (!sub_pmc)
- Parrot_ex_throw_from_c_args(interp, NULL, 1, "SubProxy: no sub");
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1, "SubProxy: no sub");
- Parrot_load_bytecode(interp, file);
- rsub_pmc = VTABLE_get_pmc_keyed(interp,
- interp->root_namespace, sub_pmc);
+ Parrot_load_bytecode(INTERP, file);
+ rsub_pmc = VTABLE_get_pmc_keyed(INTERP,
+ INTERP->root_namespace, sub_pmc);
- if (!VTABLE_defined(interp, rsub_pmc))
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ if (!VTABLE_defined(INTERP, rsub_pmc))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"SubProxy: sub not found");
PObj_get_FLAGS(SELF) &= ~PObj_private0_FLAG;
Modified: branches/ops_pct/src/embed.c
==============================================================================
--- branches/ops_pct/src/embed.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/embed.c Wed May 5 08:45:29 2010 (r46302)
@@ -44,7 +44,7 @@
__attribute__nonnull__(1);
PARROT_CANNOT_RETURN_NULL
-static PMC* setup_argv(PARROT_INTERP, int argc, ARGIN(char **argv))
+static PMC* setup_argv(PARROT_INTERP, int argc, ARGIN(const char **argv))
__attribute__nonnull__(1)
__attribute__nonnull__(3);
@@ -122,9 +122,6 @@
Flag Effect
C<PARROT_BOUNDS_FLAG> enable bounds checking
C<PARROT_PROFILE_FLAG> enable profiling,
-C<PARROT_THR_TYPE_1> disable variable sharing and thread communication
-C<PARROT_THR_TYPE_2> disable variable sharing but enable thread communication
-C<PARROT_THR_TYPE_3> enable variable sharing.
=cut
@@ -336,15 +333,6 @@
case PARROT_FAST_CORE:
Parrot_runcore_switch(interp, Parrot_str_new_constant(interp, "fast"));
break;
- case PARROT_SWITCH_CORE:
- Parrot_runcore_switch(interp, Parrot_str_new_constant(interp, "switch"));
- break;
- case PARROT_CGP_CORE:
- Parrot_runcore_switch(interp, Parrot_str_new_constant(interp, "cgp"));
- break;
- case PARROT_CGOTO_CORE:
- Parrot_runcore_switch(interp, Parrot_str_new_constant(interp, "cgoto"));
- break;
case PARROT_EXEC_CORE:
Parrot_runcore_switch(interp, Parrot_str_new_constant(interp, "exec"));
break;
@@ -586,7 +574,7 @@
PARROT_EXPORT
void
-Parrot_pbc_load(PARROT_INTERP, NOTNULL(PackFile *pf))
+Parrot_pbc_load(PARROT_INTERP, ARGIN(PackFile *pf))
{
if (!pf) {
Parrot_io_eprintf(interp, "Invalid packfile\n");
@@ -618,7 +606,7 @@
/*
-=item C<static PMC* setup_argv(PARROT_INTERP, int argc, char **argv)>
+=item C<static PMC* setup_argv(PARROT_INTERP, int argc, const char **argv)>
Creates and returns C<ARGS> array PMC.
@@ -628,7 +616,7 @@
PARROT_CANNOT_RETURN_NULL
static PMC*
-setup_argv(PARROT_INTERP, int argc, ARGIN(char **argv))
+setup_argv(PARROT_INTERP, int argc, ARGIN(const char **argv))
{
ASSERT_ARGS(setup_argv)
PMC * const userargv = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
@@ -644,7 +632,7 @@
VTABLE_set_pmc_keyed_int(interp, interp->iglobals,
(INTVAL)IGLOBALS_ARGV_LIST, userargv);
- for (i = 0; i < argc; i++) {
+ for (i = 0; i < argc; ++i) {
/* Run through argv, adding everything to @ARGS. */
STRING * const arg =
string_make(interp, argv[i], strlen(argv[i]), "unicode",
@@ -702,7 +690,7 @@
set_current_sub(PARROT_INTERP)
{
ASSERT_ARGS(set_current_sub)
- PMC *sub_pmc;
+ PMC *new_sub_pmc;
PackFile_ByteCode * const cur_cs = interp->code;
PackFile_FixupTable * const ft = cur_cs->fixups;
@@ -715,9 +703,9 @@
* entry point with the address at our resume_offset.
*/
- for (i = 0; i < ft->fixup_count; i++) {
- if (ft->fixups[i]->type == enum_fixup_sub) {
- const opcode_t ci = ft->fixups[i]->offset;
+ 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;
Parrot_Sub_attributes *sub;
@@ -739,16 +727,16 @@
/* If we didn't find anything, put a dummy PMC into current_sub.
The default values set by SUb.init are appropiate for the
dummy, don't need additional settings. */
- sub_pmc = Parrot_pmc_new(interp, enum_class_Sub);
- Parrot_pcc_set_sub(interp, CURRENT_CONTEXT(interp), sub_pmc);
+ new_sub_pmc = Parrot_pmc_new(interp, enum_class_Sub);
+ Parrot_pcc_set_sub(interp, CURRENT_CONTEXT(interp), new_sub_pmc);
- return sub_pmc;
+ return new_sub_pmc;
}
/*
-=item C<void Parrot_runcode(PARROT_INTERP, int argc, char **argv)>
+=item C<void Parrot_runcode(PARROT_INTERP, int argc, const char **argv)>
Sets up C<ARGV> and runs the ops.
@@ -758,7 +746,7 @@
PARROT_EXPORT
void
-Parrot_runcode(PARROT_INTERP, int argc, ARGIN(char **argv))
+Parrot_runcode(PARROT_INTERP, int argc, ARGIN(const char **argv))
{
PMC *userargv, *main_sub;
@@ -803,7 +791,7 @@
/*
=item C<opcode_t * Parrot_debug(PARROT_INTERP, Parrot_Interp debugger, opcode_t
-* pc)>
+*pc)>
Runs the interpreter's bytecode in debugging mode.
@@ -814,7 +802,7 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
opcode_t *
-Parrot_debug(PARROT_INTERP, NOTNULL(Parrot_Interp debugger), opcode_t * pc)
+Parrot_debug(PARROT_INTERP, ARGIN(Parrot_Interp debugger), ARGIN(opcode_t *pc))
{
PDB_t * const pdb = debugger->pdb;
@@ -894,13 +882,13 @@
case enum_class_FixedIntegerArray:
{
const INTVAL n = VTABLE_elements(interp, c->u.key);
- INTVAL i;
+ INTVAL j;
Parrot_io_fprintf(interp, output, "[");
- for (i = 0; i < n; ++i) {
- const INTVAL val = VTABLE_get_integer_keyed_int(interp, c->u.key, i);
+ 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 (i < n - 1)
+ if (j < n - 1)
Parrot_io_fprintf(interp, output, ",");
}
Parrot_io_fprintf(interp, output, "]");
@@ -957,7 +945,7 @@
Parrot_disassemble(PARROT_INTERP, ARGIN(const char *outfile), Parrot_disassemble_options options)
{
PDB_line_t *line;
- PDB_t * const pdb = mem_gc_allocate_typed(interp, PDB_t);
+ PDB_t * const pdb = mem_gc_allocate_zeroed_typed(interp, PDB_t);
int num_mappings = 0;
int curr_mapping = 0;
int op_code_seq_num = 0;
@@ -1001,15 +989,15 @@
/* Parrot_io_fprintf(interp, output, "%i < %i %i == %i \n", curr_mapping,
* num_mappings, op_code_seq_num,
- * interp->code->debugs->mappings[curr_mapping]->offset); */
+ * interp->code->debugs->mappings[curr_mapping].offset); */
if (debugs && curr_mapping < num_mappings) {
- if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping]->offset) {
+ if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping].offset) {
const int filename_const_offset =
- interp->code->debugs->mappings[curr_mapping]->filename;
+ 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);
- curr_mapping++;
+ ++curr_mapping;
}
}
@@ -1034,7 +1022,7 @@
Parrot_io_fprintf(interp, output, "\n");
line = line->next;
- op_code_seq_num++;
+ ++op_code_seq_num;
}
if (outfile != NULL)
Parrot_io_close(interp, output);
@@ -1105,7 +1093,8 @@
if (!interp->initial_pf) {
/* SIDE EFFECT: PackFile_new_dummy sets interp->initial_pf */
- PackFile_new_dummy(interp, Parrot_str_new_constant(interp, "compile_string"));
+ interp->initial_pf = PackFile_new_dummy(interp,
+ Parrot_str_new_constant(interp, "compile_string"));
/* Assumption: there is no valid reason to fail to create it.
* If the assumption changes, replace the assertion with a
* runtime check */
Modified: branches/ops_pct/src/exceptions.c
==============================================================================
--- branches/ops_pct/src/exceptions.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/exceptions.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -89,6 +89,7 @@
*/
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
die_from_exception(PARROT_INTERP, ARGIN(PMC *exception))
{
@@ -261,7 +262,7 @@
PMC *sig_obj;
va_start(args, sig);
- sig_obj = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL, sig, args);
+ sig_obj = Parrot_pcc_build_call_from_varargs(interp, PMCNULL, sig, &args);
va_end(args);
CALLSIGNATURE_is_exception_SET(sig_obj);
@@ -326,6 +327,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
Parrot_ex_throw_from_c(PARROT_INTERP, ARGIN(PMC *exception))
{
@@ -423,6 +425,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
Parrot_ex_throw_from_c_args(PARROT_INTERP, SHIM(void *ret_addr),
int exitcode, ARGIN(const char *format), ...)
@@ -476,6 +479,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
Parrot_ex_rethrow_from_c(PARROT_INTERP, ARGIN(PMC *exception))
{
@@ -511,8 +515,8 @@
=over 4
-=item C<PARROT_DOES_NOT_RETURN_WHEN_FALSE void Parrot_assert(INTVAL condition,
-const char *condition_string, const char *file, unsigned int line)>
+=item C<void Parrot_assert(INTVAL condition, const char *condition_string, const
+char *file, unsigned int line)>
A better version of assert() that gives a backtrace.
@@ -544,6 +548,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
Parrot_confess(ARGIN(const char *cond), ARGIN(const char *file), unsigned int line)
{
@@ -584,7 +589,7 @@
"Backtrace - Obtained %d stack frames (max trace depth is %d).\n",
size, BACKTRACE_DEPTH);
# ifndef BACKTRACE_VERBOSE
- for (i = 0; i < size; i++) {
+ for (i = 0; i < size; ++i) {
Dl_info frameInfo;
const int found = dladdr(array[i], &frameInfo);
@@ -603,7 +608,7 @@
{ /* Scope for strings */
char ** strings = backtrace_symbols(array, size);
if (strings) {
- for (i = 0; i < size; i++)
+ for (i = 0; i < size; ++i)
fprintf(stderr, "%s\n", strings[i]);
/* backtrace_symbols gets memory using malloc */
free(strings);
@@ -637,6 +642,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
exit_fatal(int exitcode, ARGIN(const char *format), ...)
{
@@ -675,6 +681,7 @@
*/
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
do_panic(NULLOK_INTERP, ARGIN_NULLOK(const char *message),
ARGIN_NULLOK(const char *file), unsigned int line)
Modified: branches/ops_pct/src/exit.c
==============================================================================
--- branches/ops_pct/src/exit.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/exit.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -38,7 +38,7 @@
PARROT_EXPORT
void
-Parrot_on_exit(PARROT_INTERP, NOTNULL(exit_handler_f function), ARGIN_NULLOK(void *arg))
+Parrot_on_exit(PARROT_INTERP, ARGIN(exit_handler_f function), ARGIN_NULLOK(void *arg))
{
ASSERT_ARGS(Parrot_on_exit)
@@ -62,6 +62,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void
Parrot_exit(PARROT_INTERP, int status)
{
@@ -103,10 +104,6 @@
F<include/parrot/exit.h> and F<t/src/exit.t>.
-=head1 HISTORY
-
-Initial version by Josh Wilmes.
-
=cut
*/
Modified: branches/ops_pct/src/extend.c
==============================================================================
--- branches/ops_pct/src/extend.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/extend.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2007, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -417,10 +417,10 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char *
-Parrot_PMC_get_cstring_intkey(PARROT_INTERP,
- Parrot_PMC pmc, Parrot_Int key)
+Parrot_PMC_get_cstring_intkey(PARROT_INTERP, Parrot_PMC pmc, Parrot_Int key)
{
ASSERT_ARGS(Parrot_PMC_get_cstring_intkey)
STRING *intermediate;
@@ -448,7 +448,8 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
char *
Parrot_PMC_get_cstring(PARROT_INTERP, Parrot_PMC pmc)
{
@@ -482,10 +483,10 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char *
-Parrot_PMC_get_cstringn(PARROT_INTERP, ARGIN(Parrot_PMC pmc),
- ARGOUT(Parrot_Int *length))
+Parrot_PMC_get_cstringn(PARROT_INTERP, ARGIN(Parrot_PMC pmc), ARGOUT(Parrot_Int *length))
{
ASSERT_ARGS(Parrot_PMC_get_cstringn)
char *retval;
@@ -516,7 +517,8 @@
PARROT_EXPORT
PARROT_MALLOC
-PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
char *
Parrot_PMC_get_cstringn_intkey(PARROT_INTERP, ARGIN(Parrot_PMC pmc),
ARGOUT(Parrot_Int *length), Parrot_Int key)
@@ -832,8 +834,7 @@
PARROT_EXPORT
void
-Parrot_PMC_push_intval(PARROT_INTERP,
- Parrot_PMC pmc, Parrot_Int value)
+Parrot_PMC_push_intval(PARROT_INTERP, Parrot_PMC pmc, Parrot_Int value)
{
ASSERT_ARGS(Parrot_PMC_push_intval)
PARROT_CALLIN_START(interp);
@@ -1003,7 +1004,7 @@
PARROT_EXPORT
void
-Parrot_free_cstring(ARGIN_NULLOK(char *string))
+Parrot_free_cstring(ARGFREE(char *string))
{
ASSERT_ARGS(Parrot_free_cstring)
Parrot_str_free_cstring(string);
@@ -1047,15 +1048,26 @@
{
ASSERT_ARGS(Parrot_ext_call)
va_list args;
- PMC *sig_object;
+ PMC *call_obj;
+ const char *arg_sig, *ret_sig;
+
+ PMC * const old_call_obj = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
+ Parrot_pcc_split_signature_string(signature, &arg_sig, &ret_sig);
va_start(args, signature);
- sig_object = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL, signature, args);
- va_end(args);
+ call_obj = Parrot_pcc_build_call_from_varargs(interp, PMCNULL,
+ arg_sig, &args);
- Parrot_pcc_invoke_from_sig_object(interp, sub_pmc, sig_object);
+ Parrot_pcc_invoke_from_sig_object(interp, sub_pmc, call_obj);
+ call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+ Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
+ va_end(args);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_call_obj);
}
+
/*
=item C<Parrot_Int Parrot_get_intreg(PARROT_INTERP, Parrot_Int regnum)>
Modified: branches/ops_pct/src/frame_builder.c
==============================================================================
--- branches/ops_pct/src/frame_builder.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/frame_builder.c Wed May 5 08:45:29 2010 (r46302)
@@ -259,7 +259,7 @@
while (*sig) {
switch (*sig) {
case 't':
- (*strings)++;
+ ++(*strings);
stack_size +=4;
break;
case 'd':
@@ -269,7 +269,7 @@
stack_size +=4;
break;
}
- sig++;
+ ++sig;
}
return stack_size;
@@ -299,7 +299,7 @@
const int ST_SIZE_OF = 124;
const int JIT_ALLOC_SIZE = 1024;
- char *signature_str = Parrot_str_to_cstring(interp, signature);
+ char * const signature_str = Parrot_str_to_cstring(interp, signature);
/* skip over the result */
char *sig = signature_str + 1;
size_t stack_space_needed = calc_signature_needs(sig,
@@ -408,7 +408,7 @@
case 'J': /* interpreter */
emitm_movl_m_r(interp, pc, emit_EAX, emit_EBP, 0, 1, 8);
emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, args_offset);
- arg_count--;
+ --arg_count;
break;
case 'p': /* push pmc->data */
/* FIXME (TT #1325) emitm_call_cfunc(pc, get_nci_p); */
@@ -461,8 +461,8 @@
return NULL;
}
args_offset +=4;
- arg_count++;
- sig++;
+ ++arg_count;
+ ++sig;
}
/* prepare to call VTABLE_get_pointer, set up args */
@@ -608,7 +608,7 @@
/* free temporary strings */
strings_offset = st_offset + ST_SIZE_OF;
- for (i=0; i<string_buffer_count; i++) {
+ for (i=0; i<string_buffer_count; ++i) {
emitm_movl_m_r(interp, pc, emit_EAX, emit_EBP, 0, 1, strings_offset);
emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, temp_calls_offset + 0);
emitm_call_cfunc(pc, Parrot_str_free_cstring);
Modified: branches/ops_pct/src/gc/alloc_resources.c
==============================================================================
--- branches/ops_pct/src/gc/alloc_resources.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/alloc_resources.c Wed May 5 08:45:29 2010 (r46302)
@@ -30,7 +30,7 @@
#define RESOURCE_DEBUG 0
#define RESOURCE_DEBUG_SIZE 1000000
-#define POOL_SIZE 65536 * 2
+#define POOL_SIZE (65536 * 2)
typedef void (*compact_f) (Interp *, Memory_Pools * const, Variable_Size_Pool *);
@@ -39,35 +39,31 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void alloc_new_block(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+static void alloc_new_block(
+ ARGMOD(Memory_Pools *mem_pools),
size_t size,
ARGMOD(Variable_Size_Pool *pool),
ARGIN(const char *why))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
__attribute__nonnull__(4)
- __attribute__nonnull__(5)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool);
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-static const char* buffer_location(PARROT_INTERP, ARGIN(const PObj *b))
+static const char * buffer_location(PARROT_INTERP, ARGIN(const Buffer *b))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void check_fixed_size_obj_pool(ARGMOD(Fixed_Size_Pool * pool))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(* pool);
+static void check_fixed_size_obj_pool(ARGIN(const Fixed_Size_Pool *pool))
+ __attribute__nonnull__(1);
-static void check_memory_system(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static void check_memory_system(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
-static void check_var_size_obj_pool(ARGMOD(Variable_Size_Pool *pool))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*pool);
+static void check_var_size_obj_pool(ARGIN(const Variable_Size_Pool *pool))
+ __attribute__nonnull__(1);
static void debug_print_buf(PARROT_INTERP, ARGIN(const Buffer *b))
__attribute__nonnull__(1)
@@ -75,57 +71,85 @@
static void fix_pmc_syncs(
ARGMOD(Interp *dest_interp),
- ARGIN(Fixed_Size_Pool *pool))
+ ARGIN(const Fixed_Size_Pool *pool))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*dest_interp);
-static void free_memory_pool(Variable_Size_Pool *pool);
-static void free_pool(ARGMOD(Fixed_Size_Pool *pool))
+static void free_memory_pool(ARGFREE(Variable_Size_Pool *pool));
+static void free_old_mem_blocks(
+ ARGMOD(Memory_Pools *mem_pools),
+ ARGMOD(Variable_Size_Pool *pool),
+ ARGMOD(Memory_Block *new_block),
+ UINTVAL total_size)
__attribute__nonnull__(1)
- FUNC_MODIFIES(*pool);
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*mem_pools)
+ FUNC_MODIFIES(*pool)
+ FUNC_MODIFIES(*new_block);
+
+static void free_pool(ARGFREE(Fixed_Size_Pool *pool));
+static int is_block_almost_full(ARGIN(const Memory_Block *block))
+ __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * move_one_buffer(PARROT_INTERP,
+ ARGIN(Memory_Block *pool),
+ ARGMOD(Buffer *old_buf),
+ ARGMOD(char *new_pool_ptr))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*old_buf)
+ FUNC_MODIFIES(*new_pool_ptr);
+PARROT_WARN_UNUSED_RESULT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
static Variable_Size_Pool * new_memory_pool(
size_t min_block,
- NULLOK(compact_f compact));
+ ARGIN_NULLOK(compact_f compact));
+
+PARROT_CANNOT_RETURN_NULL
+static UINTVAL pad_pool_size(ARGIN(const Variable_Size_Pool *pool))
+ __attribute__nonnull__(1);
static void Parrot_gc_merge_buffer_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *dest),
ARGMOD(Fixed_Size_Pool *source))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*dest)
FUNC_MODIFIES(*source);
static int sweep_cb_buf(PARROT_INTERP,
ARGIN(Memory_Pools *mem_pools),
- ARGMOD(Fixed_Size_Pool *pool),
+ ARGFREE(Fixed_Size_Pool *pool),
SHIM(int flag),
- ARGIN(void *arg))
+ SHIM(void *arg))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*pool);
+ __attribute__nonnull__(2);
static int sweep_cb_pmc(PARROT_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
SHIM(int flag),
SHIM(void *arg))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool);
#define ASSERT_ARGS_alloc_new_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools) \
+ PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(why))
#define ASSERT_ARGS_buffer_location __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -134,8 +158,7 @@
#define ASSERT_ARGS_check_fixed_size_obj_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_check_memory_system __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_check_var_size_obj_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_debug_print_buf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -145,9 +168,21 @@
PARROT_ASSERT_ARG(dest_interp) \
, PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_free_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_free_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_free_old_mem_blocks __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(mem_pools) \
+ , PARROT_ASSERT_ARG(pool) \
+ , PARROT_ASSERT_ARG(new_block))
+#define ASSERT_ARGS_free_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_is_block_almost_full __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(block))
+#define ASSERT_ARGS_move_one_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pool) \
+ , PARROT_ASSERT_ARG(old_buf) \
+ , PARROT_ASSERT_ARG(new_pool_ptr))
#define ASSERT_ARGS_new_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_pad_pool_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_Parrot_gc_merge_buffer_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -155,9 +190,7 @@
, PARROT_ASSERT_ARG(source))
#define ASSERT_ARGS_sweep_cb_buf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools) \
- , PARROT_ASSERT_ARG(pool) \
- , PARROT_ASSERT_ARG(arg))
+ , PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_sweep_cb_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -168,8 +201,8 @@
/*
-=item C<static void alloc_new_block(PARROT_INTERP, Memory_Pools * const
-mem_pools, size_t size, Variable_Size_Pool *pool, const char *why)>
+=item C<static void alloc_new_block( Memory_Pools *mem_pools, size_t size,
+Variable_Size_Pool *pool, const char *why)>
Allocate a new memory block. We allocate either the requested size or the
default size, whichever is larger. Add the new block to the given memory
@@ -180,9 +213,10 @@
*/
static void
-alloc_new_block(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t size, ARGMOD(Variable_Size_Pool *pool),
+alloc_new_block(
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t size,
+ ARGMOD(Variable_Size_Pool *pool),
ARGIN(const char *why))
{
ASSERT_ARGS(alloc_new_block)
@@ -230,8 +264,8 @@
/*
-=item C<void * mem_allocate(PARROT_INTERP, Memory_Pools * const mem_pools,
-size_t size, Variable_Size_Pool *pool)>
+=item C<void * mem_allocate(PARROT_INTERP, Memory_Pools *mem_pools, size_t size,
+Variable_Size_Pool *pool)>
Allocates memory for headers.
@@ -249,15 +283,13 @@
Buffer memory layout:
- +-----------------+
- | ref_count |f | # GC header
- obj->bufstart -> +-----------------+
- | data |
- v v
-
- * if PObj_is_COWable is set, then we have
- - a ref_count, {inc, dec}remented by 2 always
- - the lo bit 'f' means 'is being forwarded" - what TAIL_flag was
+ +-------------------+
+ | flags # GC header |
+ obj->bufstart -> +-------------------+
+ | data |
+ v v
+
+ * if PObj_is_COWable is set, then we have space for flags.
* if PObj_align_FLAG is set, obj->bufstart is aligned like discussed above
* obj->buflen is the usable length excluding the optional GC part.
@@ -270,8 +302,9 @@
PARROT_CANNOT_RETURN_NULL
void *
mem_allocate(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t size, ARGMOD(Variable_Size_Pool *pool))
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t size,
+ ARGMOD(Variable_Size_Pool *pool))
{
ASSERT_ARGS(mem_allocate)
void *return_val;
@@ -312,9 +345,9 @@
* Mark the block as big block (it has just one item)
* And don't set big blocks as the top_block.
*/
- alloc_new_block(interp, mem_pools, size, pool, "compact failed");
+ alloc_new_block(mem_pools, size, pool, "compact failed");
- mem_pools->mem_allocs_since_last_collect++;
+ ++mem_pools->mem_allocs_since_last_collect;
if (pool->top_block->free < size) {
fprintf(stderr, "out of mem\n");
@@ -333,10 +366,10 @@
/*
-=item C<static const char* buffer_location(PARROT_INTERP, const PObj *b)>
+=item C<static const char * buffer_location(PARROT_INTERP, const Buffer *b)>
Recturns a constant string representing the location of the given
-PObj C<b> in one of the PMC registers. If the PMC is not located
+Buffer C<b> in one of the PMC registers. If the PMC is not located
in one of the PMC registers of the current context, returns the
string C<"???">.
@@ -347,19 +380,18 @@
#if RESOURCE_DEBUG
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-static const char*
-buffer_location(PARROT_INTERP, ARGIN(const PObj *b))
+static const char *
+buffer_location(PARROT_INTERP, ARGIN(const Buffer *b))
{
ASSERT_ARGS(buffer_location)
- int i;
+ Parrot_Context * const ctx = CONTEXT(interp);
static char reg[10];
-
- Parrot_Context* const ctx = CONTEXT(interp);
+ UINTVAL i;
for (i = 0; i < ctx->n_regs_used[REGNO_STR]; ++i) {
- PObj * const obj = (PObj *) CTX_REG_STR(interp, ctx, i);
- if (obj == b) {
- sprintf(reg, "S%d", i);
+ PObj * const obj = (PObj *)Parrot_pcc_get_STRING_reg(interp, ctx, i);
+ if ((PObj *)obj == b) {
+ sprintf(reg, "S%d", (int)i);
return reg;
}
}
@@ -394,7 +426,7 @@
=over 4
-=item C<void compact_pool(PARROT_INTERP, Memory_Pools * const mem_pools,
+=item C<void compact_pool(PARROT_INTERP, Memory_Pools *mem_pools,
Variable_Size_Pool *pool)>
Compact the string buffer pool. Does not perform a GC scan, or mark items
@@ -406,7 +438,7 @@
void
compact_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Variable_Size_Pool *pool))
{
ASSERT_ARGS(compact_pool)
@@ -427,51 +459,12 @@
/* We're collecting */
mem_pools->mem_allocs_since_last_collect = 0;
mem_pools->header_allocs_since_last_collect = 0;
- mem_pools->gc_collect_runs++;
-
- /* total - reclaimable == currently used. Add a minimum block to the
- * current amount, so we can avoid having to allocate it in the future. */
- {
- Memory_Block *cur_block = pool->top_block;
-
- total_size = 0;
-
- while (cur_block) {
- /*
- * TODO - Big blocks
- *
- * Currently all available blocks are compacted into on new
- * block with total_size. This is more than suboptimal, if
- * the block has just one live item from a big allocation.
- *
- * But currently it's unknown if the buffer memory is alive
- * as the live bits are in Buffer headers. We have to run the
- * compaction loop below to check liveness. OTOH if this
- * compaction is running through all the buffer headers, there
- * is no relation to the block.
- *
- *
- * Moving the life bit into the buffer thus also solves this
- * problem easily.
- */
- total_size += cur_block->size - cur_block->free;
- cur_block = cur_block->prev;
- }
- }
- /*
- * XXX for some reason the guarantee isn't correct
- * TODO check why
- */
-
- /* total_size -= pool->guaranteed_reclaimable; */
-
- /* this makes for ever increasing allocations but fewer collect runs */
-#if WE_WANT_EVER_GROWING_ALLOCATIONS
- total_size += pool->minimum_block_size;
-#endif
+ ++mem_pools->gc_collect_runs;
/* Snag a block big enough for everything */
- alloc_new_block(interp, mem_pools, total_size, pool, "inside compact");
+ total_size = pad_pool_size(pool);
+
+ alloc_new_block(mem_pools, total_size, pool, "inside compact");
new_block = pool->top_block;
@@ -496,90 +489,14 @@
const size_t objects_end = cur_buffer_arena->used;
for (i = objects_end; i; --i) {
- INTVAL *ref_count = NULL;
- /* ! (on_free_list | constant | external | sysmem) */
if (Buffer_buflen(b) && PObj_is_movable_TESTALL(b)) {
- ptrdiff_t offset = 0;
-#if RESOURCE_DEBUG
- if (Buffer_buflen(b) >= RESOURCE_DEBUG_SIZE)
- debug_print_buf(interp, b);
-#endif
+ Memory_Block *old_block = Buffer_pool(b);
- /* we can't perform the math all the time, because
- * strstart might be in unallocated memory */
- if (PObj_is_COWable_TEST(b)) {
- ref_count = Buffer_bufrefcountptr(b);
-
- if (PObj_is_string_TEST(b)) {
- offset = (ptrdiff_t)((STRING *)b)->strstart -
- (ptrdiff_t)Buffer_bufstart(b);
- }
- }
-
- /* buffer has already been moved; just change the header */
- if (PObj_COW_TEST(b) &&
- (ref_count && *ref_count & Buffer_moved_FLAG)) {
- /* Find out who else references our data */
- Buffer * const hdr = *((Buffer **)Buffer_bufstart(b));
-
-
- PARROT_ASSERT(PObj_is_COWable_TEST(b));
-
- /* Make sure they know that we own it too */
- PObj_COW_SET(hdr);
-
- /* TODO incr ref_count, after fixing string too
- * Now make sure we point to where the other guy does */
- Buffer_bufstart(b) = Buffer_bufstart(hdr);
-
- /* And if we're a string, update strstart */
- /* Somewhat of a hack, but if we get per-pool
- * collections, it should help ease the pain */
- if (PObj_is_string_TEST(b)) {
- ((STRING *)b)->strstart = (char *)Buffer_bufstart(b) +
- offset;
- }
- }
- else {
- cur_spot = aligned_mem(b, cur_spot);
-
- if (PObj_is_COWable_TEST(b)) {
- INTVAL * const new_ref_count = ((INTVAL*) cur_spot) - 1;
- *new_ref_count = 2;
- }
-
- /* Copy our memory to the new pool */
- memcpy(cur_spot, Buffer_bufstart(b), Buffer_buflen(b));
-
- /* If we're COW */
- if (PObj_COW_TEST(b)) {
- PARROT_ASSERT(PObj_is_COWable_TEST(b));
-
- /* Let the old buffer know how to find us */
- *((Buffer **)Buffer_bufstart(b)) = b;
-
- /* No guarantees that our data is still COW, so
- * assume not, and let the above code fix-up */
- PObj_COW_CLEAR(b);
-
- /* Finally, let the tail know that we've moved, so
- * that any other references can know to look for
- * us and not re-copy */
- if (ref_count)
- *ref_count |= Buffer_moved_FLAG;
- }
-
- Buffer_bufstart(b) = cur_spot;
-
- if (PObj_is_string_TEST(b)) {
- ((STRING *)b)->strstart = (char *)Buffer_bufstart(b) +
- offset;
- }
-
- cur_spot += Buffer_buflen(b);
- }
+ if (!is_block_almost_full(old_block))
+ cur_spot = move_one_buffer(interp, new_block, b, cur_spot);
}
+
b = (Buffer *)((char *)b + object_size);
}
}
@@ -593,96 +510,281 @@
(size_t)new_block->start);
/* How much is free. That's the total size minus the amount we used */
- new_block->free = new_block->size - (new_block->top - new_block->start);
+ new_block->free = new_block->size - (cur_spot - new_block->start);
+ mem_pools->memory_collected += (cur_spot - new_block->start);
+
+ free_old_mem_blocks(mem_pools, pool, new_block, total_size);
+
+ --mem_pools->gc_sweep_block_level;
+}
+
+/*
+
+=item C<static UINTVAL pad_pool_size(const Variable_Size_Pool *pool)>
- mem_pools->memory_collected += (new_block->top - new_block->start);
+Calculate the size of the new pool. The currently used size equals the total
+size minus the reclaimable size. Add a minimum block to the current amount, so
+we can avoid having to allocate it in the future.
+
+TODO - Big blocks
+
+Currently all available blocks are compacted into one new
+block with total_size. This is suboptimal, if the block has
+just one live item from a big allocation.
+
+But currently it's unknown if the buffer memory is alive
+as the live bits are in Buffer headers. We have to run the
+compaction loop to check liveness. OTOH if this compaction
+is running through all the buffer headers, there is no
+relation to the block.
- /* Now we're done. We're already on the pool's free list, so let us be the
- * only one on the free list and free the rest */
- {
- Memory_Block *cur_block = new_block->prev;
+Moving the live bit into the buffer thus also solves this
+problem easily.
- PARROT_ASSERT(new_block == pool->top_block);
+=cut
- while (cur_block) {
- Memory_Block * const next_block = cur_block->prev;
+*/
+PARROT_CANNOT_RETURN_NULL
+static UINTVAL
+pad_pool_size(ARGIN(const Variable_Size_Pool *pool))
+{
+ ASSERT_ARGS(pad_pool_size)
+ Memory_Block *cur_block = pool->top_block;
+
+ UINTVAL total_size = 0;
+#if RESOURCE_DEBUG
+ size_t total_blocks = 0;
+#endif
+
+ while (cur_block) {
+ total_size += cur_block->size - cur_block->freed - cur_block->free;
+ cur_block = cur_block->prev;
+#if RESOURCE_DEBUG
+ ++total_blocks;
+#endif
+ }
+
+ /* this makes for ever increasing allocations but fewer collect runs */
+#if WE_WANT_EVER_GROWING_ALLOCATIONS
+ total_size += pool->minimum_block_size;
+#endif
+
+#if RESOURCE_DEBUG
+ fprintf(stderr, "Total blocks: %d\n", total_blocks);
+#endif
+
+ return total_size;
+}
+
+/*
+
+=item C<static char * move_one_buffer(PARROT_INTERP, Memory_Block *pool, Buffer
+*old_buf, char *new_pool_ptr)>
+
+The compact_pool operation collects disjointed blocks of memory allocated on a
+given pool's free list into one large block of memory. Once the new larger
+memory block has been allocated, this function moves one buffer from the old
+memory block to the new memory block and marks that it has been moved.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char *
+move_one_buffer(PARROT_INTERP, ARGIN(Memory_Block *pool),
+ ARGMOD(Buffer *old_buf), ARGMOD(char *new_pool_ptr))
+{
+ ASSERT_ARGS(move_one_buffer)
+
+ INTVAL *flags = NULL;
+ ptrdiff_t offset = 0;
+ Memory_Block *old_block = NULL;
+#if RESOURCE_DEBUG
+ if (Buffer_buflen(old_buf) >= RESOURCE_DEBUG_SIZE)
+ debug_print_buf(interp, old_buf);
+#else
+ UNUSED(interp);
+#endif
+
+ /* we can't perform the math all the time, because
+ * strstart might be in unallocated memory */
+ if (PObj_is_COWable_TEST(old_buf)) {
+ flags = Buffer_bufrefcountptr(old_buf);
+ old_block = Buffer_pool(old_buf);
+
+ if (PObj_is_string_TEST(old_buf)) {
+ offset = (ptrdiff_t)((STRING *)old_buf)->strstart -
+ (ptrdiff_t)Buffer_bufstart(old_buf);
+ }
+ }
+
+ /* buffer has already been moved; just change the header */
+ if (flags && (*flags & Buffer_shared_FLAG)
+ && (*flags & Buffer_moved_FLAG)) {
+ /* Find out who else references our data */
+ Buffer * const hdr = *((Buffer **)Buffer_bufstart(old_buf));
+
+ PARROT_ASSERT(PObj_is_COWable_TEST(old_buf));
+
+ /* Make sure they know that we own it too */
+ /* Set Buffer_shared_FLAG in new buffer */
+ *Buffer_bufrefcountptr(hdr) |= Buffer_shared_FLAG;
+
+ /* Now make sure we point to where the other guy does */
+ Buffer_bufstart(old_buf) = Buffer_bufstart(hdr);
+
+ /* And if we're a string, update strstart */
+ /* Somewhat of a hack, but if we get per-pool
+ * collections, it should help ease the pain */
+ if (PObj_is_string_TEST(old_buf))
+ ((STRING *)old_buf)->strstart =
+ (char *)Buffer_bufstart(old_buf) + offset;
+ }
+ else {
+ new_pool_ptr = aligned_mem(old_buf, new_pool_ptr);
+
+ /* Copy our memory to the new pool */
+ memcpy(new_pool_ptr, Buffer_bufstart(old_buf),
+ Buffer_buflen(old_buf));
+
+ /* If we're shared */
+ if (flags && (*flags & Buffer_shared_FLAG)) {
+ PARROT_ASSERT(PObj_is_COWable_TEST(old_buf));
+
+ /* Let the old buffer know how to find us */
+ *((Buffer **)Buffer_bufstart(old_buf)) = old_buf;
+
+ /* Finally, let the tail know that we've moved, so
+ * that any other references can know to look for
+ * us and not re-copy */
+ *flags |= Buffer_moved_FLAG;
+ }
+
+ Buffer_bufstart(old_buf) = new_pool_ptr;
+
+ /* Remember new pool inside */
+ *Buffer_poolptr(old_buf) = pool;
+
+ if (PObj_is_string_TEST(old_buf))
+ ((STRING *)old_buf)->strstart =
+ (char *)Buffer_bufstart(old_buf) + offset;
+
+ new_pool_ptr += Buffer_buflen(old_buf);
+ }
+
+ return new_pool_ptr;
+}
+
+/*
+
+=item C<static void free_old_mem_blocks( Memory_Pools *mem_pools,
+Variable_Size_Pool *pool, Memory_Block *new_block, UINTVAL total_size)>
+
+The compact_pool operation collects disjointed blocks of memory allocated on a
+given pool's free list into one large block of memory, setting it as the new
+top block for the pool. Once that is done, and all items have been moved into
+the new block of memory, this function iterates through the old blocks and
+frees each one. It also performs the necessary housekeeping to record the
+freed memory blocks. At the end of this function, the pool will have only one
+block of memory on its free list.
+
+=cut
+
+*/
+
+static void
+free_old_mem_blocks(
+ ARGMOD(Memory_Pools *mem_pools),
+ ARGMOD(Variable_Size_Pool *pool),
+ ARGMOD(Memory_Block *new_block),
+ UINTVAL total_size)
+{
+ ASSERT_ARGS(free_old_mem_blocks)
+ Memory_Block *prev_block = new_block;
+ Memory_Block *cur_block = new_block->prev;
+ size_t i;
+
+ PARROT_ASSERT(new_block == pool->top_block);
+
+ while (cur_block) {
+ Memory_Block * const next_block = cur_block->prev;
+
+ if (is_block_almost_full(cur_block)) {
+ /* Skip block */
+ prev_block = cur_block;
+ cur_block = next_block;
+ }
+ else {
/* Note that we don't have it any more */
mem_pools->memory_allocated -= cur_block->size;
/* We know the pool body and pool header are a single chunk, so
* this is enough to get rid of 'em both */
mem_internal_free(cur_block);
- cur_block = next_block;
- }
+ cur_block = next_block;
- /* Set our new pool as the only pool */
- new_block->prev = NULL;
- pool->total_allocated = total_size;
+ /* Unlink it from list */
+ prev_block->prev = next_block;
+ }
}
+ /* Terminate list */
+ prev_block->prev = NULL;
+
+
+ /* ANR: I suspect this should be set to new_block->size, instead of passing
+ * in the raw value of total_size, because alloc_new_block pads the size of
+ * the new block under certain conditions. Leaving it unmodified for now,
+ * so this refactor has no functionality changes, only code cleanups.*/
+ pool->total_allocated = total_size;
pool->guaranteed_reclaimable = 0;
pool->possibly_reclaimable = 0;
-
- --mem_pools->gc_sweep_block_level;
}
/*
-=item C<char * aligned_mem(const Buffer *buffer, char *mem)>
+=item C<static int is_block_almost_full(const Memory_Block *block)>
-Returns a pointer to the aligned allocated storage for Buffer C<buffer>,
-which might not be the same as the pointer to C<buffeR> because of
-memory alignment.
+Tests if the block is almost full and should be skipped during compacting.
+
+Returns true if less that 20% of block is available
=cut
*/
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-char *
-aligned_mem(ARGIN(const Buffer *buffer), ARGIN(char *mem))
+static int
+is_block_almost_full(ARGIN(const Memory_Block *block))
{
- ASSERT_ARGS(aligned_mem)
-#if 0
- This code causing assert in compact_pool. Looks like STRINGs have
- aligned flag set, but allocated less memory.
- See C<aligned_string_size>.
- if (PObj_is_COWable_TEST(buffer))
- mem += sizeof (void*);
- if (PObj_aligned_TEST(buffer))
- mem = (char*)(((unsigned long)(mem + BUFFER_ALIGN_1)) &
- BUFFER_ALIGN_MASK);
- else
- mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
-#endif
- mem += sizeof (void*);
- mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
-
- return mem;
+ ASSERT_ARGS(is_block_almost_full)
+ return (block->free + block->freed) < block->size * 0.2;
}
/*
-=item C<size_t aligned_string_size(size_t len)>
+=item C<char * aligned_mem(const Buffer *buffer, char *mem)>
-Determines the size of a string of length C<len> in RAM, accounting for
-alignment.
+Returns a pointer to the aligned allocated storage for Buffer C<buffer>,
+which might not be the same as the pointer to C<buffer> because of
+memory alignment.
=cut
*/
-PARROT_CONST_FUNCTION
+PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-size_t
-aligned_string_size(size_t len)
+char *
+aligned_mem(SHIM(const Buffer *buffer), ARGIN(char *mem))
{
- ASSERT_ARGS(aligned_string_size)
- len += sizeof (void*);
- len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
- return len;
+ ASSERT_ARGS(aligned_mem)
+ mem += sizeof (void *);
+ mem = (char *)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
+
+ return mem;
}
/*
@@ -703,10 +805,11 @@
*/
+PARROT_WARN_UNUSED_RESULT
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
static Variable_Size_Pool *
-new_memory_pool(size_t min_block, NULLOK(compact_f compact))
+new_memory_pool(size_t min_block, ARGIN_NULLOK(compact_f compact))
{
ASSERT_ARGS(new_memory_pool)
Variable_Size_Pool * const pool = mem_internal_allocate_typed(Variable_Size_Pool);
@@ -724,8 +827,7 @@
/*
-=item C<void initialize_var_size_pools(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<void initialize_var_size_pools(PARROT_INTERP, Memory_Pools *mem_pools)>
Initialize the managed memory pools. Parrot maintains two C<Variable_Size_Pool>
structures, the general memory pool and the constant string pool. Create
@@ -737,17 +839,16 @@
*/
void
-initialize_var_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+initialize_var_size_pools(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
{
ASSERT_ARGS(initialize_var_size_pools)
mem_pools->memory_pool = new_memory_pool(POOL_SIZE, &compact_pool);
- alloc_new_block(interp, mem_pools, POOL_SIZE, mem_pools->memory_pool, "init");
+ alloc_new_block(mem_pools, POOL_SIZE, mem_pools->memory_pool, "init");
/* Constant strings - not compacted */
mem_pools->constant_string_pool = new_memory_pool(POOL_SIZE, NULL);
- alloc_new_block(interp, mem_pools, POOL_SIZE, mem_pools->constant_string_pool, "init");
+ alloc_new_block(mem_pools, POOL_SIZE, mem_pools->constant_string_pool, "init");
}
@@ -797,8 +898,7 @@
/*
-=item C<static void check_memory_system(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static void check_memory_system(const Memory_Pools *mem_pools)>
Checks the memory system of parrot on any corruptions, including
the string system.
@@ -808,8 +908,7 @@
*/
static void
-check_memory_system(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+check_memory_system(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(check_memory_system)
size_t i;
@@ -821,8 +920,8 @@
check_fixed_size_obj_pool(mem_pools->string_header_pool);
check_fixed_size_obj_pool(mem_pools->constant_string_header_pool);
- for (i = 0; i < mem_pools->num_sized; i++) {
- Fixed_Size_Pool * pool = mem_pools->sized_header_pools[i];
+ for (i = 0; i < mem_pools->num_sized; ++i) {
+ const Fixed_Size_Pool * const pool = mem_pools->sized_header_pools[i];
if (pool != NULL && pool != mem_pools->string_header_pool)
check_fixed_size_obj_pool(pool);
}
@@ -830,7 +929,7 @@
/*
-=item C<static void check_fixed_size_obj_pool(Fixed_Size_Pool * pool)>
+=item C<static void check_fixed_size_obj_pool(const Fixed_Size_Pool *pool)>
Checks a small object pool, if it contains buffer it checks the buffers also.
@@ -839,15 +938,13 @@
*/
static void
-check_fixed_size_obj_pool(ARGMOD(Fixed_Size_Pool * pool))
+check_fixed_size_obj_pool(ARGIN(const Fixed_Size_Pool *pool))
{
ASSERT_ARGS(check_fixed_size_obj_pool)
size_t total_objects;
size_t last_free_list_count;
Fixed_Size_Arena * arena_walker;
size_t free_objects;
- PObj * object;
- size_t i;
size_t count;
GC_MS_PObj_Wrapper * pobj_walker;
@@ -859,8 +956,12 @@
arena_walker = pool->last_Arena;
while (arena_walker != NULL) {
+ size_t i;
+ PObj * object;
+
total_objects -= arena_walker->total_objects;
object = (PObj*)arena_walker->start_objects;
+
for (i = 0; i < arena_walker->total_objects; ++i) {
if (PObj_on_free_list_TEST(object)) {
++free_objects;
@@ -909,7 +1010,7 @@
/*
-=item C<static void check_var_size_obj_pool(Variable_Size_Pool *pool)>
+=item C<static void check_var_size_obj_pool(const Variable_Size_Pool *pool)>
Checks a memory pool, containing buffer data
@@ -918,7 +1019,7 @@
*/
static void
-check_var_size_obj_pool(ARGMOD(Variable_Size_Pool *pool))
+check_var_size_obj_pool(ARGIN(const Variable_Size_Pool *pool))
{
ASSERT_ARGS(check_var_size_obj_pool)
size_t count;
@@ -998,8 +1099,8 @@
/*
-=item C<void Parrot_gc_destroy_header_pools(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<void Parrot_gc_destroy_header_pools(PARROT_INTERP, Memory_Pools
+*mem_pools)>
Performs a garbage collection sweep on all pools, then frees them. Calls
C<header_pools_iterate_callback> to loop over all the pools, passing
@@ -1011,8 +1112,7 @@
*/
void
-Parrot_gc_destroy_header_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+Parrot_gc_destroy_header_pools(PARROT_INTERP, ARGMOD(Memory_Pools *mem_pools))
{
ASSERT_ARGS(Parrot_gc_destroy_header_pools)
INTVAL pass;
@@ -1028,16 +1128,16 @@
header_pools_iterate_callback(interp, mem_pools, POOL_PMC | POOL_CONST, NULL,
sweep_cb_pmc);
- for (pass = start; pass <= 2; pass++) {
+ /* for (pass = start; pass <= 2; ++pass) { */ /* XXX it's unsed loop */
header_pools_iterate_callback(interp, mem_pools, POOL_BUFFER | POOL_CONST,
- (void *)pass, sweep_cb_buf);
- }
+ (void *)start, sweep_cb_buf);
+ /* } */
mem_internal_free(mem_pools->sized_header_pools);
if (mem_pools->attrib_pools) {
unsigned int i;
- for (i = 0; i < mem_pools->num_attribs; i++) {
+ for (i = 0; i < mem_pools->num_attribs; ++i) {
PMC_Attribute_Pool *pool = mem_pools->attrib_pools[i];
PMC_Attribute_Arena *arena;
@@ -1076,7 +1176,7 @@
static int
sweep_cb_pmc(PARROT_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
SHIM(int flag), SHIM(void *arg))
{
@@ -1102,11 +1202,11 @@
static int
sweep_cb_buf(PARROT_INTERP,
ARGIN(Memory_Pools *mem_pools),
- ARGMOD(Fixed_Size_Pool *pool),
- SHIM(int flag), ARGIN(void *arg))
+ ARGFREE(Fixed_Size_Pool *pool),
+ SHIM(int flag), SHIM(void *arg))
{
ASSERT_ARGS(sweep_cb_buf)
- UNUSED(arg);
+
Parrot_gc_sweep_pool(interp, mem_pools, pool);
free_pool(pool);
@@ -1125,7 +1225,7 @@
*/
static void
-free_pool(ARGMOD(Fixed_Size_Pool *pool))
+free_pool(ARGFREE(Fixed_Size_Pool *pool))
{
ASSERT_ARGS(free_pool)
Fixed_Size_Arena *cur_arena;
@@ -1151,7 +1251,7 @@
*/
static void
-free_memory_pool(Variable_Size_Pool *pool)
+free_memory_pool(ARGFREE(Variable_Size_Pool *pool))
{
ASSERT_ARGS(free_memory_pool)
@@ -1169,8 +1269,8 @@
/*
-=item C<void Parrot_gc_destroy_memory_pools(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<void Parrot_gc_destroy_memory_pools(PARROT_INTERP, Memory_Pools
+*mem_pools)>
Destroys the memory pool and the constant string pool. Loop through both
pools and destroy all memory blocks contained in them. Once all the
@@ -1181,8 +1281,7 @@
*/
void
-Parrot_gc_destroy_memory_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+Parrot_gc_destroy_memory_pools(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
{
ASSERT_ARGS(Parrot_gc_destroy_memory_pools)
@@ -1192,8 +1291,8 @@
/*
-=item C<void Parrot_gc_merge_memory_pools(Interp *dest_interp, Memory_Pools *
-const dest_arena, Memory_Pools * const source_arena)>
+=item C<void Parrot_gc_merge_memory_pools(Interp *dest_interp, Memory_Pools
+*dest_arena, const Memory_Pools *source_arena)>
Merges the header pools of C<source_interp> into those of C<dest_interp>.
(Used to deal with shared objects left after interpreter destruction.)
@@ -1204,8 +1303,8 @@
void
Parrot_gc_merge_memory_pools(ARGMOD(Interp *dest_interp),
- ARGIN(Memory_Pools * const dest_arena),
- ARGIN(Memory_Pools * const source_arena))
+ ARGMOD(Memory_Pools *dest_arena),
+ ARGIN(const Memory_Pools *source_arena))
{
ASSERT_ARGS(Parrot_gc_merge_memory_pools)
@@ -1244,8 +1343,8 @@
/*
-=item C<static void Parrot_gc_merge_buffer_pools(PARROT_INTERP, Memory_Pools *
-const mem_pools, Fixed_Size_Pool *dest, Fixed_Size_Pool *source)>
+=item C<static void Parrot_gc_merge_buffer_pools(PARROT_INTERP, Memory_Pools
+*mem_pools, Fixed_Size_Pool *dest, Fixed_Size_Pool *source)>
Merge pool C<source> into pool C<dest>. Combines the free lists directly,
moves all arenas to the new pool, and remove the old pool. To merge, the
@@ -1258,12 +1357,11 @@
static void
Parrot_gc_merge_buffer_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *dest), ARGMOD(Fixed_Size_Pool *source))
{
ASSERT_ARGS(Parrot_gc_merge_buffer_pools)
Fixed_Size_Arena *cur_arena;
- GC_MS_PObj_Wrapper *free_list_end;
PARROT_ASSERT(dest->object_size == source->object_size);
PARROT_ASSERT((dest->name == NULL && source->name == NULL)
@@ -1273,11 +1371,10 @@
/* append new free_list to old */
/* XXX this won't work with, e.g., gc_gms */
- free_list_end = dest->free_list;
-
- if (free_list_end == NULL)
+ if (dest->free_list == NULL)
dest->free_list = source->free_list;
else {
+ GC_MS_PObj_Wrapper *free_list_end = dest->free_list;
while (free_list_end->next_ptr)
free_list_end = free_list_end->next_ptr;
@@ -1313,7 +1410,8 @@
/*
-=item C<static void fix_pmc_syncs(Interp *dest_interp, Fixed_Size_Pool *pool)>
+=item C<static void fix_pmc_syncs(Interp *dest_interp, const Fixed_Size_Pool
+*pool)>
Walks through the given arena, looking for all live and shared PMCs,
transferring their sync values to the destination interpreter.
@@ -1323,7 +1421,7 @@
*/
static void
-fix_pmc_syncs(ARGMOD(Interp *dest_interp), ARGIN(Fixed_Size_Pool *pool))
+fix_pmc_syncs(ARGMOD(Interp *dest_interp), ARGIN(const Fixed_Size_Pool *pool))
{
ASSERT_ARGS(fix_pmc_syncs)
Fixed_Size_Arena *cur_arena;
@@ -1333,16 +1431,13 @@
PMC *p = (PMC *)((char*)cur_arena->start_objects);
size_t i;
- for (i = 0; i < cur_arena->used; i++) {
+ for (i = 0; i < cur_arena->used; ++i) {
if (!PObj_on_free_list_TEST(p) && PObj_is_PMC_TEST(p)) {
- if (PObj_is_PMC_shared_TEST(p))
- PMC_sync(p)->owner = dest_interp;
- else
- Parrot_ex_throw_from_c_args(dest_interp, NULL,
- EXCEPTION_INTERP_ERROR,
- "Unshared PMC still alive after interpreter"
- "destruction. address=%p, base_type=%d\n",
- p, p->vtable->base_type);
+ Parrot_ex_throw_from_c_args(dest_interp, NULL,
+ EXCEPTION_INTERP_ERROR,
+ "Unshared PMC still alive after interpreter"
+ "destruction. address=%p, base_type=%d\n",
+ p, p->vtable->base_type);
}
p = (PMC *)((char *)p + object_size);
@@ -1359,10 +1454,6 @@
F<src/gc/memory.c>.
-=head1 HISTORY
-
-Initial version by Dan on 2001.10.2.
-
=cut
*/
Modified: branches/ops_pct/src/gc/api.c
==============================================================================
--- branches/ops_pct/src/gc/api.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/api.c Wed May 5 08:45:29 2010 (r46302)
@@ -177,13 +177,6 @@
/* if object is a PMC and contains buffers or PMCs, then attach the PMC
* to the chained mark list. */
if (PObj_is_special_PMC_TEST(obj)) {
- if (PObj_is_PMC_shared_TEST(obj)) {
- Parrot_Interp i = PMC_sync(obj)->owner;
-
- if (!i->mem_pools->gc_mark_ptr)
- i->mem_pools->gc_mark_ptr = obj;
- }
-
if (PObj_custom_mark_TEST(obj))
VTABLE_mark(interp, obj);
}
@@ -205,7 +198,7 @@
PARROT_EXPORT
void
-Parrot_gc_mark_STRING_alive_fun(PARROT_INTERP, ARGMOD_NULLOK(STRING *obj))
+Parrot_gc_mark_STRING_alive_fun(SHIM_INTERP, ARGMOD_NULLOK(STRING *obj))
{
ASSERT_ARGS(Parrot_gc_mark_STRING_alive_fun)
if (!STRING_IS_NULL(obj)) {
@@ -252,14 +245,12 @@
};
/* Assertions that GC subsystem has complete API */
- PARROT_ASSERT(interp->gc_sys->finalize_gc_system);
- PARROT_ASSERT(interp->gc_sys->destroy_child_interp);
-
PARROT_ASSERT(interp->gc_sys->do_gc_mark);
PARROT_ASSERT(interp->gc_sys->compact_string_pool);
- PARROT_ASSERT(interp->gc_sys->mark_special);
- PARROT_ASSERT(interp->gc_sys->pmc_needs_early_collection);
+ /* It should be mandatory. But there is abstraction leak in */
+ /* mark_foo_alive. */
+ /* PARROT_ASSERT(interp->gc_sys->mark_special); */
PARROT_ASSERT(interp->gc_sys->allocate_pmc_header);
PARROT_ASSERT(interp->gc_sys->free_pmc_header);
@@ -288,14 +279,6 @@
PARROT_ASSERT(interp->gc_sys->reallocate_memory_chunk_with_interior_pointers);
PARROT_ASSERT(interp->gc_sys->free_memory_chunk);
- PARROT_ASSERT(interp->gc_sys->block_mark);
- PARROT_ASSERT(interp->gc_sys->unblock_mark);
- PARROT_ASSERT(interp->gc_sys->is_blocked_mark);
-
- PARROT_ASSERT(interp->gc_sys->block_sweep);
- PARROT_ASSERT(interp->gc_sys->unblock_sweep);
- PARROT_ASSERT(interp->gc_sys->is_blocked_sweep);
-
PARROT_ASSERT(interp->gc_sys->get_gc_info);
}
@@ -346,12 +329,10 @@
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ALLOCATION_ERROR,
"Parrot VM: PMC allocation failed!\n");
- if (flags & PObj_is_PMC_shared_FLAG)
- Parrot_gc_add_pmc_sync(interp, pmc);
-
PObj_get_FLAGS(pmc) = PObj_is_PMC_FLAG|flags;
pmc->vtable = NULL;
PMC_data(pmc) = NULL;
+ PMC_metadata(pmc) = PMCNULL;
return pmc;
}
@@ -375,59 +356,6 @@
/*
-=item C<void Parrot_gc_free_pmc_sync(PARROT_INTERP, PMC *p)>
-
-Frees the PMC_sync field of the PMC, if one exists.
-
-=cut
-
-*/
-
-void
-Parrot_gc_free_pmc_sync(PARROT_INTERP, ARGMOD(PMC *p))
-{
- ASSERT_ARGS(Parrot_gc_free_pmc_sync)
-
- if (PObj_is_PMC_shared_TEST(p) && PMC_sync(p)) {
- MUTEX_DESTROY(PMC_sync(p)->pmc_lock);
- mem_internal_free(PMC_sync(p));
- PMC_sync(p) = NULL;
- }
-}
-
-/*
-
-=item C<void Parrot_gc_add_pmc_sync(PARROT_INTERP, PMC *pmc)>
-
-Adds a C<Sync*> structure to the given C<PMC>. Initializes the PMC's owner
-field and the synchronization mutext. Throws an exception if Sync allocation
-fails.
-
-=cut
-
-*/
-
-void
-Parrot_gc_add_pmc_sync(PARROT_INTERP, ARGMOD(PMC *pmc))
-{
- ASSERT_ARGS(Parrot_gc_add_pmc_sync)
-
- /* This mutex already exists, leave it alone. */
- if (PMC_sync(pmc))
- return;
-
- PMC_sync(pmc) = mem_gc_allocate_zeroed_typed(interp, Sync);
-
- if (!PMC_sync(pmc))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ALLOCATION_ERROR,
- "Parrot VM: PMC Sync allocation failed!\n");
-
- PMC_sync(pmc)->owner = interp;
- MUTEX_INIT(PMC_sync(pmc)->pmc_lock);
-}
-
-/*
-
=item C<STRING * Parrot_gc_new_string_header(PARROT_INTERP, UINTVAL flags)>
Returns a new C<STRING> header from the string pool or the constant string
@@ -796,7 +724,8 @@
ARGIN(Interp *source_interp))
{
ASSERT_ARGS(Parrot_gc_destroy_child_interp)
- dest_interp->gc_sys->destroy_child_interp(dest_interp, source_interp);
+ if (dest_interp->gc_sys->destroy_child_interp)
+ dest_interp->gc_sys->destroy_child_interp(dest_interp, source_interp);
}
/*
Modified: branches/ops_pct/src/gc/gc_inf.c
==============================================================================
--- branches/ops_pct/src/gc/gc_inf.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/gc_inf.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -32,142 +32,145 @@
#include "parrot/parrot.h"
#include "gc_private.h"
+#define PANIC_OUT_OF_MEM(size) failed_allocation(__LINE__, (size))
+
/* HEADERIZER HFILE: src/gc/gc_private.h */
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void gc_inf_allocate_buffer_storage(PARROT_INTERP,
+PARROT_DOES_NOT_RETURN
+static void failed_allocation(unsigned int line, unsigned long size);
+
+static void gc_inf_allocate_buffer_storage(SHIM_INTERP,
ARGMOD(Buffer *buffer),
size_t size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*buffer);
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
-static Buffer* gc_inf_allocate_bufferlike_header(PARROT_INTERP,
- SHIM(size_t size))
- __attribute__nonnull__(1);
+static Buffer* gc_inf_allocate_bufferlike_header(SHIM_INTERP,
+ SHIM(size_t size));
PARROT_CAN_RETURN_NULL
-static void* gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
- __attribute__nonnull__(1);
+static void* gc_inf_allocate_fixed_size_storage(SHIM_INTERP, size_t size);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_inf_allocate_memory_chunk(SHIM_INTERP, size_t size);
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_inf_allocate_memory_chunk_zeroed(SHIM_INTERP, size_t size);
+
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
-static void* gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
- __attribute__nonnull__(1)
+static void* gc_inf_allocate_pmc_attributes(SHIM_INTERP, ARGMOD(PMC *pmc))
__attribute__nonnull__(2)
FUNC_MODIFIES(*pmc);
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
-static PMC* gc_inf_allocate_pmc_header(PARROT_INTERP, SHIM(UINTVAL flags))
- __attribute__nonnull__(1);
+static PMC* gc_inf_allocate_pmc_header(SHIM_INTERP, SHIM(UINTVAL flags));
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
-static STRING* gc_inf_allocate_string_header(PARROT_INTERP,
- SHIM(UINTVAL flags))
- __attribute__nonnull__(1);
+static STRING* gc_inf_allocate_string_header(SHIM_INTERP,
+ SHIM(UINTVAL flags));
-static void gc_inf_allocate_string_storage(PARROT_INTERP,
+static void gc_inf_allocate_string_storage(SHIM_INTERP,
ARGMOD(STRING *str),
size_t size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*str);
-static void gc_inf_compact_memory_pool(PARROT_INTERP)
- __attribute__nonnull__(1);
-
-static void gc_inf_free_bufferlike_header(PARROT_INTERP,
- ARGIN_NULLOK(Buffer *b),
- SHIM(size_t size))
- __attribute__nonnull__(1);
+static void gc_inf_compact_memory_pool(SHIM_INTERP);
+static void gc_inf_free_bufferlike_header(SHIM_INTERP,
+ ARGFREE(Buffer *b),
+ SHIM(size_t size));
-static void gc_inf_free_fixed_size_storage(PARROT_INTERP,
+static void gc_inf_free_fixed_size_storage(SHIM_INTERP,
SHIM(size_t size),
ARGMOD(void *data))
- __attribute__nonnull__(1)
__attribute__nonnull__(3)
FUNC_MODIFIES(*data);
-static void gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
- __attribute__nonnull__(1)
+static void gc_inf_free_memory_chunk(SHIM_INTERP, ARGFREE(void *data));
+static void gc_inf_free_pmc_attributes(SHIM_INTERP, ARGMOD(PMC *pmc))
__attribute__nonnull__(2)
FUNC_MODIFIES(*pmc);
-static void gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
- __attribute__nonnull__(1);
-
-static void gc_inf_free_string_header(PARROT_INTERP,
- ARGIN_NULLOK(STRING *s))
- __attribute__nonnull__(1);
-
-static size_t gc_inf_get_gc_info(PARROT_INTERP, SHIM(Interpinfo_enum what))
- __attribute__nonnull__(1);
-
+static void gc_inf_free_pmc_header(SHIM_INTERP, ARGFREE(PMC *pmc));
+static void gc_inf_free_string_header(SHIM_INTERP, ARGFREE(STRING *s));
+static size_t gc_inf_get_gc_info(SHIM_INTERP, SHIM(Interpinfo_enum what));
static void gc_inf_mark_and_sweep(SHIM_INTERP, UINTVAL flags);
-static void gc_inf_reallocate_buffer_storage(PARROT_INTERP,
+static void gc_inf_reallocate_buffer_storage(SHIM_INTERP,
ARGMOD(Buffer *buffer),
size_t size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*buffer);
-static void gc_inf_reallocate_string_storage(PARROT_INTERP,
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_inf_reallocate_memory_chunk(SHIM_INTERP,
+ ARGFREE(void *from),
+ size_t size);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_inf_reallocate_memory_chunk_zeroed(SHIM_INTERP,
+ ARGFREE(void *data),
+ size_t newsize,
+ size_t oldsize);
+
+static void gc_inf_reallocate_string_storage(SHIM_INTERP,
ARGMOD(STRING *str),
size_t size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*str);
+#define ASSERT_ARGS_failed_allocation __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_allocate_buffer_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(buffer))
+ PARROT_ASSERT_ARG(buffer))
#define ASSERT_ARGS_gc_inf_allocate_bufferlike_header \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_allocate_fixed_size_storage \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_allocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_allocate_memory_chunk_zeroed \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_allocate_pmc_attributes \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_gc_inf_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_inf_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_inf_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_allocate_string_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(str))
-#define ASSERT_ARGS_gc_inf_compact_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_inf_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_gc_inf_compact_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_free_fixed_size_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(data))
+ PARROT_ASSERT_ARG(data))
+#define ASSERT_ARGS_gc_inf_free_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_free_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_gc_inf_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_inf_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_inf_get_gc_info __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_inf_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_get_gc_info __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_mark_and_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_reallocate_buffer_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(buffer))
+ PARROT_ASSERT_ARG(buffer))
+#define ASSERT_ARGS_gc_inf_reallocate_memory_chunk \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_inf_reallocate_memory_chunk_zeroed \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_inf_reallocate_string_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(str))
+ PARROT_ASSERT_ARG(str))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -211,7 +214,7 @@
*/
static void
-gc_inf_compact_memory_pool(PARROT_INTERP)
+gc_inf_compact_memory_pool(SHIM_INTERP)
{
ASSERT_ARGS(gc_inf_compact_memory_pool)
}
@@ -259,57 +262,61 @@
*/
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
static PMC*
-gc_inf_allocate_pmc_header(PARROT_INTERP, SHIM(UINTVAL flags))
+gc_inf_allocate_pmc_header(SHIM_INTERP, SHIM(UINTVAL flags))
{
ASSERT_ARGS(gc_inf_allocate_pmc_header)
return (PMC*)calloc(sizeof (PMC), 1);
}
static void
-gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
+gc_inf_free_pmc_header(SHIM_INTERP, ARGFREE(PMC *pmc))
{
ASSERT_ARGS(gc_inf_free_pmc_header)
if (pmc)
free(pmc);
}
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
static STRING*
-gc_inf_allocate_string_header(PARROT_INTERP, SHIM(UINTVAL flags))
+gc_inf_allocate_string_header(SHIM_INTERP, SHIM(UINTVAL flags))
{
ASSERT_ARGS(gc_inf_allocate_string_header)
return (STRING*)calloc(sizeof (STRING), 1);
}
static void
-gc_inf_free_string_header(PARROT_INTERP, ARGIN_NULLOK(STRING *s))
+gc_inf_free_string_header(SHIM_INTERP, ARGFREE(STRING *s))
{
ASSERT_ARGS(gc_inf_free_string_header)
if (s)
free(s);
}
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
static Buffer*
-gc_inf_allocate_bufferlike_header(PARROT_INTERP, SHIM(size_t size))
+gc_inf_allocate_bufferlike_header(SHIM_INTERP, SHIM(size_t size))
{
ASSERT_ARGS(gc_inf_allocate_bufferlike_header)
return (Buffer*)calloc(sizeof (Buffer), 1);
}
static void
-gc_inf_free_bufferlike_header(PARROT_INTERP, ARGIN_NULLOK(Buffer *b), SHIM(size_t size))
+gc_inf_free_bufferlike_header(SHIM_INTERP, ARGFREE(Buffer *b), SHIM(size_t size))
{
ASSERT_ARGS(gc_inf_free_bufferlike_header)
if (b)
free(b);
}
+PARROT_MALLOC
PARROT_CAN_RETURN_NULL
static void*
-gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+gc_inf_allocate_pmc_attributes(SHIM_INTERP, ARGMOD(PMC *pmc))
{
ASSERT_ARGS(gc_inf_allocate_pmc_attributes)
const size_t attr_size = pmc->vtable->attr_size;
@@ -318,7 +325,7 @@
}
static void
-gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+gc_inf_free_pmc_attributes(SHIM_INTERP, ARGMOD(PMC *pmc))
{
ASSERT_ARGS(gc_inf_free_pmc_attributes)
if (PMC_data(pmc))
@@ -327,30 +334,27 @@
static void
-gc_inf_allocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
+gc_inf_allocate_string_storage(SHIM_INTERP, ARGMOD(STRING *str), size_t size)
{
ASSERT_ARGS(gc_inf_allocate_string_storage)
- char *mem;
- Buffer_buflen(str) = 0;
- Buffer_bufstart(str) = NULL;
-
- if (size == 0)
- return;
+ Buffer_buflen(str) = size;
- mem = (char *)mem_internal_allocate(size);
+ if (size > 0) {
+ char * const mem = (char *)mem_internal_allocate(size);
- Buffer_bufstart(str) = str->strstart = mem;
- Buffer_buflen(str) = size;
+ Buffer_bufstart(str) = str->strstart = mem;
+ }
+ else {
+ Buffer_bufstart(str) = NULL;
+ }
}
static void
-gc_inf_reallocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
+gc_inf_reallocate_string_storage(SHIM_INTERP, ARGMOD(STRING *str), size_t size)
{
ASSERT_ARGS(gc_inf_reallocate_string_storage)
- char *mem;
-
- mem = (char *)mem_internal_realloc(Buffer_bufstart(str), size);
+ char * const mem = (char *)mem_internal_realloc(Buffer_bufstart(str), size);
Buffer_bufstart(str) = str->strstart = mem;
Buffer_buflen(str) = size;
@@ -358,7 +362,7 @@
static void
-gc_inf_allocate_buffer_storage(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t size)
+gc_inf_allocate_buffer_storage(SHIM_INTERP, ARGMOD(Buffer *buffer), size_t size)
{
ASSERT_ARGS(gc_inf_allocate_buffer_storage)
char *mem;
@@ -376,12 +380,10 @@
}
static void
-gc_inf_reallocate_buffer_storage(PARROT_INTERP, ARGMOD(Buffer *buffer), size_t size)
+gc_inf_reallocate_buffer_storage(SHIM_INTERP, ARGMOD(Buffer *buffer), size_t size)
{
ASSERT_ARGS(gc_inf_reallocate_buffer_storage)
- char *mem;
-
- mem = (char *)mem_internal_realloc(Buffer_bufstart(buffer), size);
+ char * const mem = (char *)mem_internal_realloc(Buffer_bufstart(buffer), size);
Buffer_bufstart(buffer) = mem;
Buffer_buflen(buffer) = size;
@@ -389,14 +391,14 @@
PARROT_CAN_RETURN_NULL
static void*
-gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
+gc_inf_allocate_fixed_size_storage(SHIM_INTERP, size_t size)
{
ASSERT_ARGS(gc_inf_allocate_fixed_size_storage)
return calloc(size, 1);
}
static void
-gc_inf_free_fixed_size_storage(PARROT_INTERP, SHIM(size_t size), ARGMOD(void *data))
+gc_inf_free_fixed_size_storage(SHIM_INTERP, SHIM(size_t size), ARGMOD(void *data))
{
ASSERT_ARGS(gc_inf_free_fixed_size_storage)
if (data)
@@ -413,7 +415,7 @@
*/
static size_t
-gc_inf_get_gc_info(PARROT_INTERP, SHIM(Interpinfo_enum what))
+gc_inf_get_gc_info(SHIM_INTERP, SHIM(Interpinfo_enum what))
{
ASSERT_ARGS(gc_inf_get_gc_info)
return 0;
@@ -472,10 +474,126 @@
interp->gc_sys->allocate_fixed_size_storage = gc_inf_allocate_fixed_size_storage;
interp->gc_sys->free_fixed_size_storage = gc_inf_free_fixed_size_storage;
+ /* We don't distinguish between chunk and chunk_with_pointers */
+ interp->gc_sys->allocate_memory_chunk = gc_inf_allocate_memory_chunk;
+ interp->gc_sys->reallocate_memory_chunk = gc_inf_reallocate_memory_chunk;
+ interp->gc_sys->allocate_memory_chunk_with_interior_pointers
+ = gc_inf_allocate_memory_chunk_zeroed;
+ interp->gc_sys->reallocate_memory_chunk_with_interior_pointers
+ = gc_inf_reallocate_memory_chunk_zeroed;
+ interp->gc_sys->free_memory_chunk = gc_inf_free_memory_chunk;
+
interp->gc_sys->get_gc_info = gc_inf_get_gc_info;
}
+/*
+
+=item C<static void * gc_inf_allocate_memory_chunk(PARROT_INTERP, size_t size)>
+
+=item C<static void * gc_inf_reallocate_memory_chunk(PARROT_INTERP, void *from,
+size_t size)>
+
+=item C<static void * gc_inf_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t
+size)>
+
+=item C<static void * gc_inf_reallocate_memory_chunk_zeroed(PARROT_INTERP, void
+*data, size_t newsize, size_t oldsize)>
+
+=item C<static void gc_inf_free_memory_chunk(PARROT_INTERP, void *data)>
+
+=item C<static void failed_allocation(unsigned int line, unsigned long size)>
+
+TODO Write docu.
+
+*/
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void *
+gc_inf_allocate_memory_chunk(SHIM_INTERP, size_t size)
+{
+ ASSERT_ARGS(gc_inf_allocate_memory_chunk)
+ void * const ptr = malloc(size);
+#ifdef DETAIL_MEMORY_DEBUG
+ fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+ if (!ptr)
+ PANIC_OUT_OF_MEM(size);
+ return ptr;
+}
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void *
+gc_inf_reallocate_memory_chunk(SHIM_INTERP, ARGFREE(void *from), size_t size)
+{
+ ASSERT_ARGS(gc_inf_reallocate_memory_chunk)
+ void *ptr;
+#ifdef DETAIL_MEMORY_DEBUG
+ fprintf(stderr, "Freed %p (realloc -- %i bytes)\n", from, size);
+#endif
+ if (from)
+ ptr = realloc(from, size);
+ else
+ ptr = calloc(1, size);
+#ifdef DETAIL_MEMORY_DEBUG
+ fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+ if (!ptr)
+ PANIC_OUT_OF_MEM(size);
+ return ptr;
+}
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void *
+gc_inf_allocate_memory_chunk_zeroed(SHIM_INTERP, size_t size)
+{
+ ASSERT_ARGS(gc_inf_allocate_memory_chunk_zeroed)
+ void * const ptr = calloc(1, (size_t)size);
+#ifdef DETAIL_MEMORY_DEBUG
+ fprintf(stderr, "Allocated %i at %p\n", size, ptr);
+#endif
+ if (!ptr)
+ PANIC_OUT_OF_MEM(size);
+ return ptr;
+}
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void *
+gc_inf_reallocate_memory_chunk_zeroed(SHIM_INTERP, ARGFREE(void *data),
+ size_t newsize, size_t oldsize)
+{
+ ASSERT_ARGS(gc_inf_reallocate_memory_chunk_zeroed)
+ void * const ptr = realloc(data, newsize);
+ if (newsize > oldsize)
+ memset((char*)ptr + oldsize, 0, newsize - oldsize);
+ return ptr;
+}
+
+static void
+gc_inf_free_memory_chunk(SHIM_INTERP, ARGFREE(void *data))
+{
+ ASSERT_ARGS(gc_inf_free_memory_chunk)
+#ifdef DETAIL_MEMORY_DEBUG
+ fprintf(stderr, "Freed %p\n", data);
+#endif
+ if (data)
+ free(data);
+}
+
+PARROT_DOES_NOT_RETURN
+static void
+failed_allocation(unsigned int line, unsigned long size)
+{
+ ASSERT_ARGS(failed_allocation)
+ fprintf(stderr, "Failed allocation of %lu bytes\n", size);
+ do_panic(NULL, "Out of mem", __FILE__, line);
+}
+
+
/*
Modified: branches/ops_pct/src/gc/gc_ms.c
==============================================================================
--- branches/ops_pct/src/gc/gc_ms.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/gc_ms.c Wed May 5 08:45:29 2010 (r46302)
@@ -31,16 +31,13 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static int gc_ms_active_sized_buffers(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static int gc_ms_active_sized_buffers(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
static void gc_ms_add_free_object(SHIM_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ SHIM(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGIN(void *to_add))
- __attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
FUNC_MODIFIES(*pool);
@@ -65,11 +62,19 @@
static Buffer * gc_ms_allocate_bufferlike_header(PARROT_INTERP, size_t size)
__attribute__nonnull__(1);
-static void * gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)
- __attribute__nonnull__(1);
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_ms_allocate_memory_chunk(SHIM_INTERP, size_t size);
-static void * gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t size)
- __attribute__nonnull__(1);
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_ms_allocate_memory_chunk_zeroed(SHIM_INTERP, size_t size);
+
+PARROT_CANNOT_RETURN_NULL
+static void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*pmc);
PARROT_CAN_RETURN_NULL
static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
@@ -100,12 +105,11 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
+static void gc_ms_free_attributes_from_pool(
ARGMOD(PMC_Attribute_Pool *pool),
ARGMOD(void *data))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3)
FUNC_MODIFIES(*pool)
FUNC_MODIFIES(*data);
@@ -116,9 +120,7 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*obj);
-static void gc_ms_free_memory_chunk(PARROT_INTERP, ARGFREE(void *data))
- __attribute__nonnull__(1);
-
+static void gc_ms_free_memory_chunk(SHIM_INTERP, ARGFREE(void *data));
static void gc_ms_free_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -174,16 +176,18 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*buffer);
-static void * gc_ms_reallocate_memory_chunk(PARROT_INTERP,
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_ms_reallocate_memory_chunk(SHIM_INTERP,
ARGFREE(void *from),
- size_t size)
- __attribute__nonnull__(1);
+ size_t size);
-static void * gc_ms_reallocate_memory_chunk_zeroed(PARROT_INTERP,
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+static void * gc_ms_reallocate_memory_chunk_zeroed(SHIM_INTERP,
ARGFREE(void *data),
size_t newsize,
- size_t oldsize)
- __attribute__nonnull__(1);
+ size_t oldsize);
static void gc_ms_reallocate_string_storage(PARROT_INTERP,
ARGMOD(STRING *str),
@@ -204,10 +208,8 @@
FUNC_MODIFIES(*pool)
FUNC_MODIFIES(*arg);
-static int gc_ms_total_sized_buffers(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static int gc_ms_total_sized_buffers(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
static int gc_ms_trace_active_PMCs(PARROT_INTERP,
Parrot_gc_trace_type trace)
@@ -219,12 +221,39 @@
static void gc_ms_unblock_GC_sweep(PARROT_INTERP)
__attribute__nonnull__(1);
+static void Parrot_gc_allocate_new_attributes_arena(
+ ARGMOD(PMC_Attribute_Pool *pool))
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*pool);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
+static PMC_Attribute_Pool * Parrot_gc_create_attrib_pool(size_t attrib_idx);
+
+PARROT_CANNOT_RETURN_NULL
+static PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t attrib_size)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
+
+PARROT_CANNOT_RETURN_NULL
+static void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
+ ARGMOD(PMC_Attribute_Pool * pool))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(* pool);
+
+static void Parrot_gc_initialize_fixed_size_pools(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t init_num_pools)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
+
#define ASSERT_ARGS_gc_ms_active_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_gc_ms_add_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(mem_pools) \
- , PARROT_ASSERT_ARG(pool) \
+ PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(to_add))
#define ASSERT_ARGS_gc_ms_alloc_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -236,11 +265,12 @@
#define ASSERT_ARGS_gc_ms_allocate_bufferlike_header \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_ms_allocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_ms_allocate_memory_chunk_zeroed \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_gc_ms_allocate_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_gc_ms_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -259,14 +289,12 @@
, PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_gc_ms_free_attributes_from_pool \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool) \
+ PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(data))
#define ASSERT_ARGS_gc_ms_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(obj))
-#define ASSERT_ARGS_gc_ms_free_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_free_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_ms_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
@@ -298,11 +326,9 @@
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(buffer))
-#define ASSERT_ARGS_gc_ms_reallocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_reallocate_memory_chunk __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_ms_reallocate_memory_chunk_zeroed \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_gc_ms_reallocate_string_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -313,14 +339,26 @@
, PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(arg))
#define ASSERT_ARGS_gc_ms_total_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_gc_ms_trace_active_PMCs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_unblock_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_unblock_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_gc_allocate_new_attributes_arena \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_Parrot_gc_create_attrib_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_gc_get_attribute_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_Parrot_gc_get_attributes_from_pool \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_Parrot_gc_initialize_fixed_size_pools \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(mem_pools))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -493,9 +531,6 @@
pt_gc_start_mark(interp);
Parrot_gc_run_init(interp, interp->mem_pools);
- /* compact STRING pools to collect free headers and allocated buffers */
- Parrot_gc_compact_memory_pool(interp);
-
/* Now go trace the PMCs. returning true means we did a complete trace.
false means it was a lazy trace. */
if (gc_ms_trace_active_PMCs(interp, (flags & GC_trace_stack_FLAG)
@@ -506,8 +541,8 @@
/* We've done the mark, now do the sweep. Pass the sweep callback
function to the PMC pool and all the sized pools. */
- header_pools_iterate_callback(interp, interp->mem_pools, POOL_BUFFER | POOL_PMC,
- (void*)&total_free, gc_ms_sweep_cb);
+ header_pools_iterate_callback(interp, interp->mem_pools,
+ POOL_BUFFER | POOL_PMC, (void *)&total_free, gc_ms_sweep_cb);
}
else {
@@ -516,10 +551,13 @@
Parrot_gc_clear_live_bits(interp, mem_pools->pmc_pool);
}
+ /* compact STRING pools to collect free headers and allocated buffers */
+ Parrot_gc_compact_memory_pool(interp);
+
pt_gc_stop_mark(interp);
/* Note it */
- mem_pools->gc_mark_runs++;
+ ++mem_pools->gc_mark_runs;
--mem_pools->gc_mark_block_level;
mem_pools->header_allocs_since_last_collect = 0;
@@ -628,7 +666,7 @@
? interp->mem_pools->constant_pmc_pool
: interp->mem_pools->pmc_pool;
- return (PMC*)pool->get_free_object(interp, interp->mem_pools, pool);
+ return (PMC *)pool->get_free_object(interp, interp->mem_pools, pool);
}
/*
@@ -651,7 +689,7 @@
PObj_flags_SETTO((PObj *)pmc, PObj_on_free_list_FLAG);
pool->add_free_object(interp, interp->mem_pools, pool, (PObj *)pmc);
- pool->num_free_objects++;
+ ++pool->num_free_objects;
}
/*
@@ -674,7 +712,9 @@
? interp->mem_pools->constant_string_header_pool
: interp->mem_pools->string_header_pool;
- return (STRING*)pool->get_free_object(interp, interp->mem_pools, pool);
+ STRING *s = (STRING *)pool->get_free_object(interp, interp->mem_pools, pool);
+ memset(s, 0, sizeof (STRING));
+ return s;
}
@@ -695,7 +735,7 @@
Fixed_Size_Pool * const pool = interp->mem_pools->string_header_pool;
PObj_flags_SETTO((PObj *)s, PObj_on_free_list_FLAG);
pool->add_free_object(interp, interp->mem_pools, pool, s);
- pool->num_free_objects++;
+ ++pool->num_free_objects;
}
}
@@ -748,7 +788,190 @@
/*
-=item C<void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
+=over 4
+
+=item C<static void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
+PMC_Attribute_Pool * pool)>
+
+Get a new fixed-size storage space from the given pool. The pool contains
+information on the size of the item to allocate already.
+
+=item C<static void Parrot_gc_allocate_new_attributes_arena(PMC_Attribute_Pool
+*pool)>
+
+Allocate a new arena of fixed-sized data structures for the given pool.
+
+=item C<static void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
+Memory_Pools *mem_pools, size_t init_num_pools)>
+
+Initialize the pools (zeroize)
+
+=item C<static PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP,
+Memory_Pools *mem_pools, size_t attrib_size)>
+
+Find a fixed-sized data structure pool given the size of the object to
+allocate. If the pool does not exist, create it.
+
+=item C<static PMC_Attribute_Pool * Parrot_gc_create_attrib_pool(size_t
+attrib_idx)>
+
+Create a new pool for fixed-sized data items with the given C<attrib_size>.
+
+=back
+
+=cut
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+static void *
+Parrot_gc_get_attributes_from_pool(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool * pool))
+{
+ ASSERT_ARGS(Parrot_gc_get_attributes_from_pool)
+ PMC_Attribute_Free_List *item;
+
+#if GC_USE_LAZY_ALLOCATOR
+ if (pool->free_list) {
+ item = pool->free_list;
+ pool->free_list = item->next;
+ }
+ else if (pool->newfree) {
+ item = pool->newfree;
+ pool->newfree = (PMC_Attribute_Free_List *)
+ ((char *)(pool->newfree) + pool->attr_size);
+ if (pool->newfree >= pool->newlast)
+ pool->newfree = NULL;
+ }
+ else {
+ Parrot_gc_allocate_new_attributes_arena(pool);
+ return Parrot_gc_get_attributes_from_pool(interp, pool);
+ }
+#else
+ if (pool->free_list == NULL)
+ Parrot_gc_allocate_new_attributes_arena(pool);
+ item = pool->free_list;
+ pool->free_list = item->next;
+#endif
+
+ --pool->num_free_objects;
+ return (void *)item;
+}
+
+
+static void
+Parrot_gc_allocate_new_attributes_arena(ARGMOD(PMC_Attribute_Pool *pool))
+{
+ ASSERT_ARGS(Parrot_gc_allocate_new_attributes_arena)
+ PMC_Attribute_Free_List *next;
+
+ const size_t num_items = pool->objects_per_alloc;
+ const size_t item_size = pool->attr_size;
+ const size_t item_space = item_size * num_items;
+ const size_t total_size = sizeof (PMC_Attribute_Arena) + item_space;
+
+ PMC_Attribute_Arena * const new_arena = (PMC_Attribute_Arena *)mem_internal_allocate(
+ total_size);
+
+ new_arena->prev = NULL;
+ new_arena->next = pool->top_arena;
+ pool->top_arena = new_arena;
+ next = (PMC_Attribute_Free_List *)(new_arena + 1);
+
+#if GC_USE_LAZY_ALLOCATOR
+ pool->newfree = next;
+ pool->newlast = (PMC_Attribute_Free_List *)((char *)next + item_space);
+#else
+ pool->free_list = next;
+ for (i = 0; i < num_items; ++i) {
+ list = next;
+ list->next = (PMC_Attribute_Free_List *)((char *)list + item_size);
+ next = list->next;
+ }
+ list->next = pool->free_list;
+#endif
+
+ pool->num_free_objects += num_items;
+ pool->total_objects += num_items;
+}
+
+static void
+Parrot_gc_initialize_fixed_size_pools(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t init_num_pools)
+{
+ ASSERT_ARGS(Parrot_gc_initialize_fixed_size_pools)
+ PMC_Attribute_Pool **pools;
+ const size_t total_size = (init_num_pools + 1) * sizeof (void *);
+
+ pools = (PMC_Attribute_Pool **)mem_internal_allocate(total_size);
+ memset(pools, 0, total_size);
+
+ mem_pools->attrib_pools = pools;
+ mem_pools->num_attribs = init_num_pools;
+}
+
+
+PARROT_CANNOT_RETURN_NULL
+static PMC_Attribute_Pool *
+Parrot_gc_get_attribute_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
+ size_t attrib_size)
+{
+ ASSERT_ARGS(Parrot_gc_get_attribute_pool)
+
+ PMC_Attribute_Pool **pools = mem_pools->attrib_pools;
+ const size_t idx = (attrib_size < sizeof (void *))
+ ? 0
+ : attrib_size - sizeof (void *);
+
+ if (mem_pools->num_attribs <= idx) {
+ const size_t total_length = idx + GC_ATTRIB_POOLS_HEADROOM;
+ const size_t total_size = total_length * sizeof (void *);
+ const size_t current_size = mem_pools->num_attribs;
+ const size_t diff = total_length - current_size;
+
+ pools = (PMC_Attribute_Pool **)mem_internal_realloc(pools, total_size);
+ memset(pools + current_size, 0, diff * sizeof (void *));
+ mem_pools->attrib_pools = pools;
+ mem_pools->num_attribs = total_length;
+ }
+
+ if (!pools[idx]) {
+ PMC_Attribute_Pool * const pool = Parrot_gc_create_attrib_pool(idx);
+ /* Create the first arena now, so we don't have to check for it later */
+ Parrot_gc_allocate_new_attributes_arena(pool);
+ pools[idx] = pool;
+ }
+
+ return pools[idx];
+}
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
+static PMC_Attribute_Pool *
+Parrot_gc_create_attrib_pool(size_t attrib_idx)
+{
+ ASSERT_ARGS(Parrot_gc_create_attrib_pool)
+ const size_t attrib_size = attrib_idx + sizeof (void *);
+ const size_t num_objs_raw =
+ (GC_FIXED_SIZE_POOL_SIZE - sizeof (PMC_Attribute_Arena)) / attrib_size;
+ const size_t num_objs = (num_objs_raw == 0)?(1):(num_objs_raw);
+ PMC_Attribute_Pool * const newpool = mem_internal_allocate_typed(PMC_Attribute_Pool);
+
+ newpool->attr_size = attrib_size;
+ newpool->total_objects = 0;
+ newpool->objects_per_alloc = num_objs;
+ newpool->num_free_objects = 0;
+ newpool->free_list = NULL;
+ newpool->top_arena = NULL;
+
+ return newpool;
+}
+
+
+/*
+
+=item C<static void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)>
Allocates a new attribute structure for a PMC if it has the auto_attrs flag
set.
@@ -758,7 +981,7 @@
*/
PARROT_CANNOT_RETURN_NULL
-void *
+static void *
gc_ms_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
{
ASSERT_ARGS(gc_ms_allocate_pmc_attributes)
@@ -799,9 +1022,9 @@
const size_t item_size = attr_size < sizeof (void *) ? sizeof (void *) : attr_size;
PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
const size_t idx = item_size - sizeof (void *);
- gc_ms_free_attributes_from_pool(interp, pools[idx], data);
+ gc_ms_free_attributes_from_pool(pools[idx], data);
#else
- gc_ms_free_memory_chunk(PMC_data(pmc));
+ gc_ms_free_memory_chunk(intepr, PMC_data(pmc));
PMC_data(pmc) = NULL;
#endif
}
@@ -809,8 +1032,8 @@
/*
-=item C<static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
-PMC_Attribute_Pool *pool, void *data)>
+=item C<static void gc_ms_free_attributes_from_pool(PMC_Attribute_Pool *pool,
+void *data)>
Frees a fixed-size data item back to the pool for later reallocation. Private
to this file.
@@ -818,9 +1041,7 @@
*/
static void
-gc_ms_free_attributes_from_pool(PARROT_INTERP,
- ARGMOD(PMC_Attribute_Pool *pool),
- ARGMOD(void *data))
+gc_ms_free_attributes_from_pool(ARGMOD(PMC_Attribute_Pool *pool), ARGMOD(void *data))
{
ASSERT_ARGS(gc_ms_free_attributes_from_pool)
PMC_Attribute_Free_List * const item = (PMC_Attribute_Free_List *)data;
@@ -828,7 +1049,7 @@
item->next = pool->free_list;
pool->free_list = item;
- pool->num_free_objects++;
+ ++pool->num_free_objects;
}
/*
@@ -849,18 +1070,16 @@
ARGOUT(Buffer *buffer), size_t size)
{
ASSERT_ARGS(gc_ms_allocate_buffer_storage)
- size_t new_size;
- char *mem;
+ const size_t new_size = ALIGNED_STRING_SIZE(size);
- Buffer_buflen(buffer) = 0;
- Buffer_bufstart(buffer) = NULL;
- new_size = aligned_string_size(size);
- mem = (char *)mem_allocate(interp, interp->mem_pools, new_size,
- interp->mem_pools->memory_pool);
- mem = aligned_mem(buffer, mem);
- Buffer_bufstart(buffer) = mem;
- new_size -= sizeof (void*);
- Buffer_buflen(buffer) = new_size;
+ Buffer_bufstart(buffer) = (void *)aligned_mem(buffer,
+ (char *)mem_allocate(interp,
+ interp->mem_pools, new_size, interp->mem_pools->memory_pool));
+
+ /* Save pool used to allocate into buffer header */
+ *Buffer_poolptr(buffer) = interp->mem_pools->memory_pool->top_block;
+
+ Buffer_buflen(buffer) = new_size - sizeof (void *);
}
/*
@@ -888,9 +1107,7 @@
Variable_Size_Pool * const pool = interp->mem_pools->memory_pool;
size_t new_size, needed, old_size;
- /*
- * we don't shrink buffers
- */
+ /* we don't shrink buffers */
if (newsize <= Buffer_buflen(buffer))
return;
@@ -902,25 +1119,20 @@
* normally, which play ping pong with buffers.
* The normal case is therefore always to allocate a new block
*/
- new_size = aligned_string_size(newsize);
- old_size = aligned_string_size(Buffer_buflen(buffer));
+ new_size = ALIGNED_STRING_SIZE(newsize);
+ old_size = ALIGNED_STRING_SIZE(Buffer_buflen(buffer));
needed = new_size - old_size;
if ((pool->top_block->free >= needed)
&& (pool->top_block->top == (char *)Buffer_bufstart(buffer) + old_size)) {
pool->top_block->free -= needed;
pool->top_block->top += needed;
- Buffer_buflen(buffer) = newsize;
+ Buffer_buflen(buffer) = newsize;
return;
}
copysize = Buffer_buflen(buffer);
- if (!PObj_COW_TEST(buffer))
- pool->guaranteed_reclaimable += copysize;
- else
- pool->possibly_reclaimable += copysize;
-
mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
mem = aligned_mem(buffer, mem);
@@ -934,6 +1146,9 @@
new_size -= sizeof (void *);
Buffer_buflen(buffer) = new_size;
+
+ /* Save pool used to allocate into buffer header */
+ *Buffer_poolptr(buffer) = interp->mem_pools->memory_pool->top_block;
}
/*
@@ -969,12 +1184,15 @@
? interp->mem_pools->constant_string_pool
: interp->mem_pools->memory_pool;
- new_size = aligned_string_size(size);
+ new_size = ALIGNED_STRING_SIZE(size);
mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
- mem += sizeof (void*);
+ mem += sizeof (void *);
Buffer_bufstart(str) = str->strstart = mem;
- Buffer_buflen(str) = new_size - sizeof (void*);
+ Buffer_buflen(str) = new_size - sizeof (void *);
+
+ /* Save pool used to allocate into buffer header */
+ *Buffer_poolptr(str) = pool->top_block;
}
/*
@@ -1013,15 +1231,15 @@
* - if the passed strings buffer is the last string in the pool and
* - if there is enough size, we can just move the pool's top pointer
*/
- new_size = aligned_string_size(newsize);
- old_size = aligned_string_size(Buffer_buflen(str));
+ new_size = ALIGNED_STRING_SIZE(newsize);
+ old_size = ALIGNED_STRING_SIZE(Buffer_buflen(str));
needed = new_size - old_size;
if (pool->top_block->free >= needed
&& pool->top_block->top == (char *)Buffer_bufstart(str) + old_size) {
pool->top_block->free -= needed;
pool->top_block->top += needed;
- Buffer_buflen(str) = new_size - sizeof (void*);
+ Buffer_buflen(str) = new_size - sizeof (void *);
return;
}
@@ -1030,11 +1248,6 @@
/* only copy used memory, not total string buffer */
copysize = str->bufused;
- if (!PObj_COW_TEST(str))
- pool->guaranteed_reclaimable += Buffer_buflen(str);
- else
- pool->possibly_reclaimable += Buffer_buflen(str);
-
mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
mem += sizeof (void *);
@@ -1042,12 +1255,15 @@
oldmem = str->strstart;
Buffer_bufstart(str) = (void *)mem;
str->strstart = mem;
- Buffer_buflen(str) = new_size - sizeof (void*);
+ Buffer_buflen(str) = new_size - sizeof (void *);
/* We shouldn't ever have a 0 from size, but we do. If we can track down
* those bugs, this can be removed which would make things cheaper */
if (copysize)
memcpy(mem, oldmem, copysize);
+
+ /* Save pool used to allocate into buffer header */
+ *Buffer_poolptr(str) = pool->top_block;
}
/*
@@ -1095,7 +1311,7 @@
const size_t idx = size - sizeof (void *);
PMC_Attribute_Pool ** const pools = interp->mem_pools->attrib_pools;
- gc_ms_free_attributes_from_pool(interp, pools[idx], data);
+ gc_ms_free_attributes_from_pool(pools[idx], data);
}
/*
@@ -1117,8 +1333,10 @@
*/
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
static void *
-gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)
+gc_ms_allocate_memory_chunk(SHIM_INTERP, size_t size)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
void * const ptr = malloc(size);
@@ -1130,8 +1348,10 @@
return ptr;
}
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
static void *
-gc_ms_reallocate_memory_chunk(PARROT_INTERP, ARGFREE(void *from), size_t size)
+gc_ms_reallocate_memory_chunk(SHIM_INTERP, ARGFREE(void *from), size_t size)
{
ASSERT_ARGS(gc_ms_reallocate_memory_chunk)
void *ptr;
@@ -1150,8 +1370,10 @@
return ptr;
}
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
static void *
-gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t size)
+gc_ms_allocate_memory_chunk_zeroed(SHIM_INTERP, size_t size)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk_zeroed)
void * const ptr = calloc(1, (size_t)size);
@@ -1163,8 +1385,10 @@
return ptr;
}
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
static void *
-gc_ms_reallocate_memory_chunk_zeroed(PARROT_INTERP, ARGFREE(void *data),
+gc_ms_reallocate_memory_chunk_zeroed(SHIM_INTERP, ARGFREE(void *data),
size_t newsize, size_t oldsize)
{
ASSERT_ARGS(gc_ms_reallocate_memory_chunk_zeroed)
@@ -1175,7 +1399,7 @@
}
static void
-gc_ms_free_memory_chunk(PARROT_INTERP, ARGFREE(void *data))
+gc_ms_free_memory_chunk(SHIM_INTERP, ARGFREE(void *data))
{
ASSERT_ARGS(gc_ms_free_memory_chunk)
#ifdef DETAIL_MEMORY_DEBUG
@@ -1322,7 +1546,7 @@
static void
gc_ms_add_free_object(SHIM_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ SHIM(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGIN(void *to_add))
{
@@ -1361,26 +1585,28 @@
PObj *free_list = (PObj *)pool->free_list;
#if GC_USE_LAZY_ALLOCATOR
- if (!free_list && !pool->newfree) {
- (*pool->more_objects)(interp, mem_pools, pool);
- free_list = (PObj *)pool->free_list;
- }
+ HAVE_FREE:
if (free_list) {
ptr = free_list;
pool->free_list = ((GC_MS_PObj_Wrapper *)ptr)->next_ptr;
}
- else {
+ else if (pool->newfree) {
Fixed_Size_Arena * const arena = pool->last_Arena;
ptr = (PObj *)pool->newfree;
pool->newfree = (void *)((char *)pool->newfree + pool->object_size);
- arena->used++;
+ ++arena->used;
if (pool->newfree >= pool->newlast)
pool->newfree = NULL;
PARROT_ASSERT(ptr < (PObj *)pool->newlast);
}
+ else {
+ (*pool->more_objects)(interp, mem_pools, pool);
+ free_list = (PObj *)pool->free_list;
+ goto HAVE_FREE;
+ }
#else
/* if we don't have any objects */
if (!free_list) {
@@ -1392,9 +1618,6 @@
pool->free_list = ((GC_MS_PObj_Wrapper*)ptr)->next_ptr;
#endif
- /* PObj_flags_SETTO(ptr, 0); */
- memset(ptr, 0, pool->object_size);
-
--pool->num_free_objects;
return ptr;
@@ -1438,18 +1661,10 @@
Parrot_add_to_free_list(interp, pool, new_arena);
/* Allocate more next time */
- if (GC_DEBUG(interp)) {
- pool->objects_per_alloc *= GC_DEBUG_UNITS_PER_ALLOC_GROWTH_FACTOR;
- pool->replenish_level =
- (size_t)(pool->total_objects *
- GC_DEBUG_REPLENISH_LEVEL_FACTOR);
- }
- else {
- pool->objects_per_alloc = (size_t)(pool->objects_per_alloc *
- UNITS_PER_ALLOC_GROWTH_FACTOR);
- pool->replenish_level =
- (size_t)(pool->total_objects * REPLENISH_LEVEL_FACTOR);
- }
+ pool->objects_per_alloc *= GC_DEBUG_UNITS_PER_ALLOC_GROWTH_FACTOR;
+ pool->replenish_level =
+ (size_t)(pool->total_objects *
+ GC_DEBUG_REPLENISH_LEVEL_FACTOR);
/* check alloc size against maximum */
alloc_size = pool->object_size * pool->objects_per_alloc;
@@ -1496,7 +1711,7 @@
gc_ms_block_GC_mark(PARROT_INTERP)
{
ASSERT_ARGS(gc_ms_block_GC_mark)
- interp->mem_pools->gc_mark_block_level++;
+ ++interp->mem_pools->gc_mark_block_level;
Parrot_shared_gc_block(interp);
}
@@ -1505,7 +1720,7 @@
{
ASSERT_ARGS(gc_ms_unblock_GC_mark)
if (interp->mem_pools->gc_mark_block_level) {
- interp->mem_pools->gc_mark_block_level--;
+ --interp->mem_pools->gc_mark_block_level;
Parrot_shared_gc_unblock(interp);
}
}
@@ -1514,7 +1729,7 @@
gc_ms_block_GC_sweep(PARROT_INTERP)
{
ASSERT_ARGS(gc_ms_block_GC_sweep)
- interp->mem_pools->gc_sweep_block_level++;
+ ++interp->mem_pools->gc_sweep_block_level;
}
static void
@@ -1522,7 +1737,7 @@
{
ASSERT_ARGS(gc_ms_unblock_GC_sweep)
if (interp->mem_pools->gc_sweep_block_level)
- interp->mem_pools->gc_sweep_block_level--;
+ --interp->mem_pools->gc_sweep_block_level;
}
static unsigned int
@@ -1566,11 +1781,11 @@
return mem_pools->pmc_pool->total_objects -
mem_pools->pmc_pool->num_free_objects;
case ACTIVE_BUFFERS:
- return gc_ms_active_sized_buffers(interp, mem_pools);
+ return gc_ms_active_sized_buffers(mem_pools);
case TOTAL_PMCS:
return mem_pools->pmc_pool->total_objects;
case TOTAL_BUFFERS:
- return gc_ms_total_sized_buffers(interp, mem_pools);
+ return gc_ms_total_sized_buffers(mem_pools);
case HEADER_ALLOCS_SINCE_COLLECT:
return mem_pools->header_allocs_since_last_collect;
case MEM_ALLOCS_SINCE_COLLECT:
@@ -1590,8 +1805,7 @@
/*
-=item C<static int gc_ms_active_sized_buffers(PARROT_INTERP, Memory_Pools *
-const mem_pools)>
+=item C<static int gc_ms_active_sized_buffers(const Memory_Pools *mem_pools)>
Returns the number of actively used sized buffers.
@@ -1600,12 +1814,11 @@
*/
static int
-gc_ms_active_sized_buffers(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+gc_ms_active_sized_buffers(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(gc_ms_active_sized_buffers)
int j, ret = 0;
- for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+ for (j = 0; j < (INTVAL)mem_pools->num_sized; ++j) {
Fixed_Size_Pool * const header_pool =
mem_pools->sized_header_pools[j];
if (header_pool)
@@ -1617,8 +1830,7 @@
/*
-=item C<static int gc_ms_total_sized_buffers(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static int gc_ms_total_sized_buffers(const Memory_Pools *mem_pools)>
Returns the total number of sized buffers that we are managing.
@@ -1627,12 +1839,11 @@
*/
static int
-gc_ms_total_sized_buffers(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+gc_ms_total_sized_buffers(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(gc_ms_total_sized_buffers)
int j, ret = 0;
- for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+ for (j = 0; j < (INTVAL)mem_pools->num_sized; ++j) {
Fixed_Size_Pool * const header_pool =
mem_pools->sized_header_pools[j];
if (header_pool)
Modified: branches/ops_pct/src/gc/gc_private.h
==============================================================================
--- branches/ops_pct/src/gc/gc_private.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/gc_private.h Wed May 5 08:45:29 2010 (r46302)
@@ -171,11 +171,14 @@
struct Memory_Block *next;
char *start;
char *top;
+
+ /* Amount of freed memory. Used in compact_pool */
+ size_t freed;
} Memory_Block;
typedef struct Variable_Size_Pool {
Memory_Block *top_block;
- void (*compact)(PARROT_INTERP, struct Memory_Pools *const, struct Variable_Size_Pool *);
+ void (*compact)(PARROT_INTERP, struct Memory_Pools *, struct Variable_Size_Pool *);
size_t minimum_block_size;
size_t total_allocated; /* total bytes allocated to this pool */
size_t guaranteed_reclaimable; /* bytes that can definitely be reclaimed*/
@@ -314,8 +317,7 @@
/* HEADERIZER BEGIN: src/gc/system.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-void trace_system_areas(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+void trace_system_areas(PARROT_INTERP, ARGIN(const Memory_Pools *mem_pools))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -329,112 +331,93 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_WARN_UNUSED_RESULT
-INTVAL contained_in_pool(PARROT_INTERP,
+INTVAL contained_in_pool(
ARGIN(const Fixed_Size_Pool *pool),
ARGIN(const void *ptr))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
size_t buffer_size)
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
PARROT_IGNORABLE_RESULT
int /*@alt void@*/
header_pools_iterate_callback(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
int flag,
ARGIN_NULLOK(void *arg),
- NOTNULL(pool_iter_fn func))
+ ARGIN(pool_iter_fn func))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(5);
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*mem_pools);
void initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+ ARGMOD(Memory_Pools *mem_pools))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
void mark_special(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGIN(PMC *obj))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*mem_pools);
-void Parrot_add_to_free_list(PARROT_INTERP,
+void Parrot_add_to_free_list(SHIM_INTERP,
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Fixed_Size_Arena *arena))
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
FUNC_MODIFIES(*pool)
FUNC_MODIFIES(*arena);
-void Parrot_append_arena_in_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+void Parrot_append_arena_in_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Fixed_Size_Arena *new_arena),
size_t size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool)
FUNC_MODIFIES(*new_arena);
-void Parrot_gc_clear_live_bits(PARROT_INTERP,
+void Parrot_gc_clear_live_bits(SHIM_INTERP,
ARGIN(const Fixed_Size_Pool *pool))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t attrib_size)
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
- ARGMOD(PMC_Attribute_Pool * pool))
- __attribute__nonnull__(1)
+void Parrot_gc_run_init(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
__attribute__nonnull__(2)
- FUNC_MODIFIES(* pool);
-
-void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t init_num_pools)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-void Parrot_gc_run_init(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ FUNC_MODIFIES(*mem_pools);
void Parrot_gc_sweep_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool);
int Parrot_gc_trace_root(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
Parrot_gc_trace_type trace)
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
#define ASSERT_ARGS_contained_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool) \
+ PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(ptr))
#define ASSERT_ARGS_get_bufferlike_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -451,31 +434,16 @@
, PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(obj))
#define ASSERT_ARGS_Parrot_add_to_free_list __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool) \
+ PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(arena))
#define ASSERT_ARGS_Parrot_append_arena_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools) \
+ PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(new_arena))
#define ASSERT_ARGS_Parrot_gc_clear_live_bits __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_Parrot_gc_get_attribute_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
-#define ASSERT_ARGS_Parrot_gc_get_attributes_from_pool \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_Parrot_gc_initialize_fixed_size_pools \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_Parrot_gc_run_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_Parrot_gc_sweep_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -492,14 +460,9 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-char * aligned_mem(ARGIN(const Buffer *buffer), ARGIN(char *mem))
- __attribute__nonnull__(1)
+char * aligned_mem(SHIM(const Buffer *buffer), ARGIN(char *mem))
__attribute__nonnull__(2);
-PARROT_CONST_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t aligned_string_size(size_t len);
-
void check_buffer_ptr(
ARGMOD(Buffer * pobj),
ARGMOD(Variable_Size_Pool * pool))
@@ -509,27 +472,28 @@
FUNC_MODIFIES(* pool);
void compact_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Variable_Size_Pool *pool))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool);
-void initialize_var_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+void initialize_var_size_pools(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
void * mem_allocate(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
size_t size,
ARGMOD(Variable_Size_Pool *pool))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(4)
+ FUNC_MODIFIES(*mem_pools)
FUNC_MODIFIES(*pool);
void merge_pools(
@@ -541,28 +505,28 @@
FUNC_MODIFIES(*source);
void Parrot_gc_destroy_header_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+ ARGMOD(Memory_Pools *mem_pools))
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
-void Parrot_gc_destroy_memory_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+void Parrot_gc_destroy_memory_pools(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools))
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
void Parrot_gc_merge_memory_pools(
ARGMOD(Interp *dest_interp),
- ARGIN(Memory_Pools * const dest_arena),
- ARGIN(Memory_Pools * const source_arena))
+ ARGMOD(Memory_Pools *dest_arena),
+ ARGIN(const Memory_Pools *source_arena))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
- FUNC_MODIFIES(*dest_interp);
+ FUNC_MODIFIES(*dest_interp)
+ FUNC_MODIFIES(*dest_arena);
#define ASSERT_ARGS_aligned_mem __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(buffer) \
- , PARROT_ASSERT_ARG(mem))
-#define ASSERT_ARGS_aligned_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+ PARROT_ASSERT_ARG(mem))
#define ASSERT_ARGS_check_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pobj) \
, PARROT_ASSERT_ARG(pool))
@@ -571,8 +535,7 @@
, PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(pool))
#define ASSERT_ARGS_initialize_var_size_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_mem_allocate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -586,8 +549,7 @@
, PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_Parrot_gc_destroy_memory_pools \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_Parrot_gc_merge_memory_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(dest_interp) \
, PARROT_ASSERT_ARG(dest_arena) \
@@ -603,12 +565,6 @@
void * gc_ms_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
__attribute__nonnull__(1);
-PARROT_CANNOT_RETURN_NULL
-void * gc_ms_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*pmc);
-
void gc_ms_allocate_string_storage(PARROT_INTERP,
ARGOUT(STRING *str),
size_t size)
@@ -642,9 +598,6 @@
#define ASSERT_ARGS_gc_ms_allocate_fixed_size_storage \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_ms_allocate_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_gc_ms_allocate_string_storage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(str))
Modified: branches/ops_pct/src/gc/malloc.c
==============================================================================
--- branches/ops_pct/src/gc/malloc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/malloc.c Wed May 5 08:45:29 2010 (r46302)
@@ -1768,7 +1768,7 @@
case 4: *mzp++ = 0; \
case 3: *mzp++ = 0; \
case 2: *mzp++ = 0; \
- case 1: *mzp++ = 0; if (mcn <= 0) break; mcn--; } \
+ case 1: *mzp++ = 0; if (mcn <= 0) break; --mcn; } \
} \
} while (0)
@@ -1787,7 +1787,7 @@
case 4: *mcdst++ = *mcsrc++; \
case 3: *mcdst++ = *mcsrc++; \
case 2: *mcdst++ = *mcsrc++; \
- case 1: *mcdst++ = *mcsrc++; if (mcn <= 0) break; mcn--; } \
+ case 1: *mcdst++ = *mcsrc++; if (mcn <= 0) break; --mcn; } \
} \
} while (0)
@@ -3857,7 +3857,7 @@
#if HAVE_MMAP
int ret;
INTERNAL_SIZE_T offset = p->prev_size;
- av->n_mmaps--;
+ --av->n_mmaps;
av->mmapped_mem -= (size + offset);
ret = munmap((char*)p - offset, size + offset);
/* munmap returns non-zero on failure */
@@ -4913,7 +4913,7 @@
}
/ / save ptrs so they can be freed during cleanup
our_os_pools[next_os_pool] = ptr;
- next_os_pool++;
+ ++next_os_pool;
ptr = (void *) ((((CHUNK_SIZE_T) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK);
sbrk_top = (char *) ptr + size;
return ptr;
Modified: branches/ops_pct/src/gc/malloc_trace.c
==============================================================================
--- branches/ops_pct/src/gc/malloc_trace.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/malloc_trace.c Wed May 5 08:45:29 2010 (r46302)
@@ -76,9 +76,9 @@
if (fd2>=0 && (count = read(fd2, cmdline, 127)) > 0) {
close(fd2);
cmdline[count] = 0;
- for (s=cmdline; *s++;); s--;
+ for (s=cmdline; ++*s;); --s;
while (--s>cmdline && *s!='/');
- if (*s == '/') s++;
+ if (*s == '/') ++s;
sprintf(name, LOG_NAME ".%.12s.%d", s, pid);
}
else {
@@ -116,7 +116,7 @@
buffer[buffer_i].size = t.tv_sec;
buffer[buffer_i].ptr = (void *)t.tv_usec;
buffer[buffer_i].ptr2 = NULL;
- buffer_i++;
+ ++buffer_i;
if (fd < 0) open_log_file();
if (getpid() != pid) { /* Oops, must have forked... */
if (fd >= 0) close(fd);
@@ -176,7 +176,7 @@
buffer[buffer_i].size = t.tv_sec;
buffer[buffer_i].ptr = (void *)t.tv_usec;
buffer[buffer_i].ptr2 = NULL;
- buffer_i++;
+ ++buffer_i;
}
buffer[buffer_i].code = code;
buffer[buffer_i].size = size;
Modified: branches/ops_pct/src/gc/mark_sweep.c
==============================================================================
--- branches/ops_pct/src/gc/mark_sweep.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/mark_sweep.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -32,10 +32,9 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
static void free_buffer(SHIM_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ SHIM(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Buffer *b))
- __attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
FUNC_MODIFIES(*pool)
@@ -53,7 +52,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGIN(const Memory_Pools *mem_pools),
size_t actual_buffer_size)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -72,25 +71,14 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static Fixed_Size_Pool * new_string_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
INTVAL constant)
__attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP,
- ARGMOD(PMC_Attribute_Pool *pool))
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
- FUNC_MODIFIES(*pool);
-
-PARROT_CANNOT_RETURN_NULL
-static PMC_Attribute_Pool * Parrot_gc_create_attrib_pool(PARROT_INTERP,
- size_t attrib_idx)
- __attribute__nonnull__(1);
+ FUNC_MODIFIES(*mem_pools);
#define ASSERT_ARGS_free_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(mem_pools) \
- , PARROT_ASSERT_ARG(pool) \
+ PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(b))
#define ASSERT_ARGS_free_pmc_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -105,12 +93,6 @@
#define ASSERT_ARGS_new_string_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools))
-#define ASSERT_ARGS_Parrot_gc_allocate_new_attributes_arena \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(pool))
-#define ASSERT_ARGS_Parrot_gc_create_attrib_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -119,7 +101,7 @@
/*
-=item C<void Parrot_gc_run_init(PARROT_INTERP, Memory_Pools * const mem_pools)>
+=item C<void Parrot_gc_run_init(PARROT_INTERP, Memory_Pools *mem_pools)>
Prepares the collector for a mark & sweep GC run. Initializes the various
fields in the Memory_Pools structure that need to be zeroed out prior to the
@@ -130,8 +112,7 @@
*/
void
-Parrot_gc_run_init(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+Parrot_gc_run_init(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
{
ASSERT_ARGS(Parrot_gc_run_init)
@@ -142,7 +123,7 @@
/*
-=item C<int Parrot_gc_trace_root(PARROT_INTERP, Memory_Pools * const mem_pools,
+=item C<int Parrot_gc_trace_root(PARROT_INTERP, Memory_Pools *mem_pools,
Parrot_gc_trace_type trace)>
Traces the root set with behavior that's dependent on the flags passed.
@@ -173,7 +154,7 @@
int
Parrot_gc_trace_root(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
Parrot_gc_trace_type trace)
{
ASSERT_ARGS(Parrot_gc_trace_root)
@@ -257,7 +238,7 @@
/*
-=item C<void Parrot_gc_sweep_pool(PARROT_INTERP, Memory_Pools * const mem_pools,
+=item C<void Parrot_gc_sweep_pool(PARROT_INTERP, Memory_Pools *mem_pools,
Fixed_Size_Pool *pool)>
Puts any buffers/PMCs that are marked as "dead" or "black" onto the pool
@@ -269,7 +250,7 @@
void
Parrot_gc_sweep_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool))
{
ASSERT_ARGS(Parrot_gc_sweep_pool)
@@ -287,12 +268,12 @@
b = (PObj *)cur_arena->start_objects;
/* loop only while there are objects in the arena */
- for (i = objects_end; i; i--) {
+ for (i = objects_end; i; --i) {
/* if it's on free list, do nothing */
if (PObj_live_TEST(b)) {
- total_used++;
+ ++total_used;
PObj_live_CLEAR(b);
PObj_get_FLAGS(b) &= ~PObj_custom_GC_FLAG;
}
@@ -329,8 +310,7 @@
/*
-=item C<INTVAL contained_in_pool(PARROT_INTERP, const Fixed_Size_Pool *pool,
-const void *ptr)>
+=item C<INTVAL contained_in_pool(const Fixed_Size_Pool *pool, const void *ptr)>
Returns whether the given C<*ptr> points to a location in C<pool>.
@@ -340,7 +320,7 @@
PARROT_WARN_UNUSED_RESULT
INTVAL
-contained_in_pool(PARROT_INTERP, ARGIN(const Fixed_Size_Pool *pool), ARGIN(const void *ptr))
+contained_in_pool(ARGIN(const Fixed_Size_Pool *pool), ARGIN(const void *ptr))
{
ASSERT_ARGS(contained_in_pool)
const Fixed_Size_Arena *arena;
@@ -361,8 +341,7 @@
/*
-=item C<void mark_special(PARROT_INTERP, Memory_Pools * const mem_pools, PMC
-*obj)>
+=item C<void mark_special(PARROT_INTERP, Memory_Pools *mem_pools, PMC *obj)>
Handles marking a PMC. Specifically, calls the VTABLE_mark for that PMC
if one is present. Also handles marking shared PMCs.
@@ -372,31 +351,10 @@
*/
void
-mark_special(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- ARGIN(PMC *obj))
+mark_special(PARROT_INTERP, ARGMOD(Memory_Pools *mem_pools), ARGIN(PMC *obj))
{
ASSERT_ARGS(mark_special)
- /*
- * If the object is shared, we have to use the arena and gc
- * pointers of the originating interpreter.
- *
- * We are possibly changing another interpreter's data here, so
- * the mark phase of GC must run only on one interpreter of a pool
- * at a time. However, freeing unused objects can occur in parallel.
- * And: to be sure that a shared object is dead, we have to finish
- * the mark phase of all interpreters in a pool that might reference
- * the object.
- */
- if (PObj_is_PMC_shared_TEST(obj)) {
- interp = PMC_sync(obj)->owner;
- PARROT_ASSERT(interp);
-
- if (!mem_pools->gc_mark_ptr)
- mem_pools->gc_mark_ptr = obj;
- }
-
PObj_get_FLAGS(obj) |= PObj_custom_GC_FLAG;
/* clearing the flag is much more expensive then testing */
@@ -427,7 +385,7 @@
*/
void
-Parrot_gc_clear_live_bits(PARROT_INTERP, ARGIN(const Fixed_Size_Pool *pool))
+Parrot_gc_clear_live_bits(SHIM_INTERP, ARGIN(const Fixed_Size_Pool *pool))
{
ASSERT_ARGS(Parrot_gc_clear_live_bits)
Fixed_Size_Arena *arena;
@@ -437,7 +395,7 @@
Buffer *b = (Buffer *)arena->start_objects;
UINTVAL i;
- for (i = 0; i < arena->used; i++) {
+ for (i = 0; i < arena->used; ++i) {
PObj_live_CLEAR(b);
b = (Buffer *)((char *)b + object_size);
}
@@ -457,7 +415,7 @@
*/
void
-Parrot_add_to_free_list(PARROT_INTERP,
+Parrot_add_to_free_list(SHIM_INTERP,
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Fixed_Size_Arena *arena))
{
@@ -479,7 +437,7 @@
#else
/* Move all the new objects into the free list */
arena->used = num_objects;
- for (i = 0; i < num_objects; i++) {
+ for (i = 0; i < num_objects; ++i) {
pool->add_free_object(interp, pool, object);
object = (void *)((char *)object + pool->object_size);
}
@@ -490,8 +448,8 @@
/*
-=item C<void Parrot_append_arena_in_pool(PARROT_INTERP, Memory_Pools * const
-mem_pools, Fixed_Size_Pool *pool, Fixed_Size_Arena *new_arena, size_t size)>
+=item C<void Parrot_append_arena_in_pool(PARROT_INTERP, Memory_Pools *mem_pools,
+Fixed_Size_Pool *pool, Fixed_Size_Arena *new_arena, size_t size)>
Insert the new arena into the pool's structure. Arenas are stored in a
linked list, so add the new arena to the list. Set information in the
@@ -502,8 +460,8 @@
*/
void
-Parrot_append_arena_in_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+Parrot_append_arena_in_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Fixed_Size_Arena *new_arena), size_t size)
{
@@ -595,8 +553,8 @@
/*
-=item C<static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP, Memory_Pools
-* const mem_pools, size_t actual_buffer_size)>
+=item C<static Fixed_Size_Pool * new_bufferlike_pool(PARROT_INTERP, const
+Memory_Pools *mem_pools, size_t actual_buffer_size)>
Creates a new pool for buffer-like structures. This is called from
C<get_bufferlike_pool()>, and should probably not be called directly.
@@ -609,7 +567,7 @@
PARROT_CANNOT_RETURN_NULL
static Fixed_Size_Pool *
new_bufferlike_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGIN(const Memory_Pools *mem_pools),
size_t actual_buffer_size)
{
ASSERT_ARGS(new_bufferlike_pool)
@@ -663,8 +621,8 @@
/*
-=item C<static Fixed_Size_Pool * new_string_pool(PARROT_INTERP, Memory_Pools *
-const mem_pools, INTVAL constant)>
+=item C<static Fixed_Size_Pool * new_string_pool(PARROT_INTERP, Memory_Pools
+*mem_pools, INTVAL constant)>
Creates a new pool for C<STRING>s and returns it. This calls
C<get_bufferlike_pool> internally, which in turn calls C<new_bufferlike_pool>.
@@ -676,9 +634,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static Fixed_Size_Pool *
-new_string_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- INTVAL constant)
+new_string_pool(PARROT_INTERP, ARGMOD(Memory_Pools *mem_pools), INTVAL constant)
{
ASSERT_ARGS(new_string_pool)
Fixed_Size_Pool *pool;
@@ -709,20 +665,35 @@
static void
free_buffer(SHIM_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ SHIM(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Buffer *b))
{
ASSERT_ARGS(free_buffer)
Variable_Size_Pool * const mem_pool = (Variable_Size_Pool *)pool->mem_pool;
+ /* If there is no allocated buffer - bail out */
+ if (!Buffer_buflen(b))
+ return;
+
/* XXX Jarkko reported that on irix pool->mem_pool was NULL, which really
* shouldn't happen */
if (mem_pool) {
- if (!PObj_COW_TEST(b))
- mem_pool->guaranteed_reclaimable += Buffer_buflen(b);
- else
- mem_pool->possibly_reclaimable += Buffer_buflen(b);
+ /* Update Memory_Block usage */
+ if (PObj_is_movable_TESTALL(b)) {
+ INTVAL *buffer_flags = Buffer_bufrefcountptr(b);
+
+ /* Mask low 2 bits used for flags */
+ Memory_Block * block = Buffer_pool(b);
+
+ PARROT_ASSERT(block);
+
+ /* We can have shared buffers. Don't count them (yet) */
+ if (!(*buffer_flags & Buffer_shared_FLAG)) {
+ block->freed += ALIGNED_STRING_SIZE(Buffer_buflen(b));
+ }
+
+ }
}
Buffer_buflen(b) = 0;
@@ -731,8 +702,8 @@
/*
-=item C<Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, Memory_Pools *
-const mem_pools, size_t buffer_size)>
+=item C<Fixed_Size_Pool * get_bufferlike_pool(PARROT_INTERP, Memory_Pools
+*mem_pools, size_t buffer_size)>
Makes and return a bufferlike header pool for objects of a given size. If a
pool for objects of that size already exists, no new pool will be created and
@@ -746,7 +717,7 @@
PARROT_CANNOT_RETURN_NULL
Fixed_Size_Pool *
get_bufferlike_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
size_t buffer_size)
{
ASSERT_ARGS(get_bufferlike_pool)
@@ -777,8 +748,8 @@
/*
-=item C<void initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<void initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools
+*mem_pools)>
The initialization routine for the interpreter's header pools. Initializes
pools for string headers, constant string headers, buffers, PMCs and
@@ -792,8 +763,7 @@
*/
void
-initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+initialize_fixed_size_pools(PARROT_INTERP, ARGMOD(Memory_Pools *mem_pools))
{
ASSERT_ARGS(initialize_fixed_size_pools)
@@ -827,8 +797,8 @@
/*
-=item C<int header_pools_iterate_callback(PARROT_INTERP, Memory_Pools * const
-mem_pools, int flag, void *arg, pool_iter_fn func)>
+=item C<int header_pools_iterate_callback(PARROT_INTERP, Memory_Pools
+*mem_pools, int flag, void *arg, pool_iter_fn func)>
Iterates through header pools, invoking the given callback function on each
pool in the list matching the given criteria. Determines which pools to iterate
@@ -868,14 +838,14 @@
PARROT_IGNORABLE_RESULT
int
header_pools_iterate_callback(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGMOD(Memory_Pools *mem_pools),
int flag, ARGIN_NULLOK(void *arg),
- NOTNULL(pool_iter_fn func))
+ ARGIN(pool_iter_fn func))
{
ASSERT_ARGS(header_pools_iterate_callback)
if (flag & POOL_PMC) {
- Fixed_Size_Pool *pool = flag & POOL_CONST
+ Fixed_Size_Pool * const pool = flag & POOL_CONST
? mem_pools->constant_pmc_pool
: mem_pools->pmc_pool;
@@ -912,187 +882,6 @@
return 0;
}
-/*
-
-=over 4
-
-=item C<void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
-PMC_Attribute_Pool * pool)>
-
-Get a new fixed-size storage space from the given pool. The pool contains
-information on the size of the item to allocate already.
-
-=item C<static void Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP,
-PMC_Attribute_Pool *pool)>
-
-Allocate a new arena of fixed-sized data structures for the given pool.
-
-=item C<void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools *
-const mem_pools, size_t init_num_pools)>
-
-Initialize the pools (zeroize)
-
-=item C<PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(PARROT_INTERP,
-Memory_Pools * const mem_pools, size_t attrib_size)>
-
-Find a fixed-sized data structure pool given the size of the object to
-allocate. If the pool does not exist, create it.
-
-=item C<static PMC_Attribute_Pool * Parrot_gc_create_attrib_pool(PARROT_INTERP,
-size_t attrib_idx)>
-
-Create a new pool for fixed-sized data items with the given C<attrib_size>.
-
-=back
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-void *
-Parrot_gc_get_attributes_from_pool(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool * pool))
-{
- ASSERT_ARGS(Parrot_gc_get_attributes_from_pool)
- PMC_Attribute_Free_List *item;
-
-#if GC_USE_LAZY_ALLOCATOR
- if (pool->free_list) {
- item = pool->free_list;
- pool->free_list = item->next;
- }
- else if (pool->newfree) {
- item = pool->newfree;
- pool->newfree = (PMC_Attribute_Free_List *)
- ((char *)(pool->newfree) + pool->attr_size);
- if (pool->newfree >= pool->newlast)
- pool->newfree = NULL;
- }
- else {
- Parrot_gc_allocate_new_attributes_arena(interp, pool);
- return Parrot_gc_get_attributes_from_pool(interp, pool);
- }
-#else
- if (pool->free_list == NULL)
- Parrot_gc_allocate_new_attributes_arena(interp, pool);
- item = pool->free_list;
- pool->free_list = item->next;
-#endif
-
- pool->num_free_objects--;
- return (void *)item;
-}
-
-
-static void
-Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool *pool))
-{
- ASSERT_ARGS(Parrot_gc_allocate_new_attributes_arena)
- PMC_Attribute_Free_List *next;
-
- const size_t num_items = pool->objects_per_alloc;
- const size_t item_size = pool->attr_size;
- const size_t item_space = item_size * num_items;
- const size_t total_size = sizeof (PMC_Attribute_Arena) + item_space;
-
- PMC_Attribute_Arena * const new_arena = (PMC_Attribute_Arena *)mem_internal_allocate(
- total_size);
-
- new_arena->prev = NULL;
- new_arena->next = pool->top_arena;
- pool->top_arena = new_arena;
- next = (PMC_Attribute_Free_List *)(new_arena + 1);
-
-#if GC_USE_LAZY_ALLOCATOR
- pool->newfree = next;
- pool->newlast = (PMC_Attribute_Free_List *)((char *)next + item_space);
-#else
- pool->free_list = next;
- for (i = 0; i < num_items; i++) {
- list = next;
- list->next = (PMC_Attribute_Free_List *)((char *)list + item_size);
- next = list->next;
- }
- list->next = pool->free_list;
-#endif
-
- pool->num_free_objects += num_items;
- pool->total_objects += num_items;
-}
-
-void
-Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t init_num_pools)
-{
- ASSERT_ARGS(Parrot_gc_initialize_fixed_size_pools)
- PMC_Attribute_Pool **pools;
- const size_t total_size = (init_num_pools + 1) * sizeof (void *);
-
- pools = (PMC_Attribute_Pool **)mem_internal_allocate(total_size);
- memset(pools, 0, total_size);
-
- mem_pools->attrib_pools = pools;
- mem_pools->num_attribs = init_num_pools;
-}
-
-
-PARROT_CANNOT_RETURN_NULL
-PMC_Attribute_Pool *
-Parrot_gc_get_attribute_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- size_t attrib_size)
-{
- ASSERT_ARGS(Parrot_gc_get_attribute_pool)
-
- PMC_Attribute_Pool **pools = mem_pools->attrib_pools;
- const size_t idx = (attrib_size < sizeof (void *))
- ? 0
- : attrib_size - sizeof (void *);
-
- if (mem_pools->num_attribs <= idx) {
- const size_t total_length = idx + GC_ATTRIB_POOLS_HEADROOM;
- const size_t total_size = total_length * sizeof (void *);
- const size_t current_size = mem_pools->num_attribs;
- const size_t diff = total_length - current_size;
-
- pools = (PMC_Attribute_Pool **)mem_internal_realloc(pools, total_size);
- memset(pools + current_size, 0, diff * sizeof (void *));
- mem_pools->attrib_pools = pools;
- mem_pools->num_attribs = total_length;
- }
-
- if (!pools[idx]) {
- PMC_Attribute_Pool * const pool = Parrot_gc_create_attrib_pool(interp, idx);
- /* Create the first arena now, so we don't have to check for it later */
- Parrot_gc_allocate_new_attributes_arena(interp, pool);
- pools[idx] = pool;
- }
-
- return pools[idx];
-}
-
-PARROT_CANNOT_RETURN_NULL
-static PMC_Attribute_Pool *
-Parrot_gc_create_attrib_pool(PARROT_INTERP, size_t attrib_idx)
-{
- ASSERT_ARGS(Parrot_gc_create_attrib_pool)
- const size_t attrib_size = attrib_idx + sizeof (void *);
- const size_t num_objs_raw =
- (GC_FIXED_SIZE_POOL_SIZE - sizeof (PMC_Attribute_Arena)) / attrib_size;
- const size_t num_objs = (num_objs_raw == 0)?(1):(num_objs_raw);
- PMC_Attribute_Pool * const newpool = mem_internal_allocate_typed(PMC_Attribute_Pool);
-
- newpool->attr_size = attrib_size;
- newpool->total_objects = 0;
- newpool->objects_per_alloc = num_objs;
- newpool->num_free_objects = 0;
- newpool->free_list = NULL;
- newpool->top_arena = NULL;
-
- return newpool;
-}
-
/*
Modified: branches/ops_pct/src/gc/system.c
==============================================================================
--- branches/ops_pct/src/gc/system.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/gc/system.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -39,78 +39,62 @@
__attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-static size_t get_max_buffer_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static size_t get_max_buffer_address(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-static size_t get_max_pmc_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static size_t get_max_pmc_address(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-static size_t get_min_buffer_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static size_t get_min_buffer_address(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-static size_t get_min_pmc_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+static size_t get_min_pmc_address(ARGIN(const Memory_Pools *mem_pools))
+ __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
-static int is_buffer_ptr(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+static int is_buffer_ptr(
+ ARGIN(const Memory_Pools *mem_pools),
ARGIN(const void *ptr))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static int is_pmc_ptr(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+static int is_pmc_ptr(
+ ARGIN(const Memory_Pools *mem_pools),
ARGIN(const void *ptr))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(2);
static void trace_mem_block(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGIN(const Memory_Pools *mem_pools),
size_t lo_var_ptr,
size_t hi_var_ptr)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
static void trace_system_stack(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+ ARGIN(const Memory_Pools *mem_pools))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
#define ASSERT_ARGS_find_common_mask __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_max_buffer_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_get_max_pmc_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_get_min_buffer_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_get_min_pmc_address __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ PARROT_ASSERT_ARG(mem_pools))
#define ASSERT_ARGS_is_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools) \
+ PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(ptr))
#define ASSERT_ARGS_is_pmc_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools) \
+ PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(ptr))
#define ASSERT_ARGS_trace_mem_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -123,7 +107,7 @@
/*
-=item C<void trace_system_areas(PARROT_INTERP, Memory_Pools * const mem_pools)>
+=item C<void trace_system_areas(PARROT_INTERP, const Memory_Pools *mem_pools)>
Initiates a trace of the system stack, looking for pointers which are being
used by functions in the call chain, but which might not be marked as alive
@@ -136,8 +120,7 @@
*/
void
-trace_system_areas(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+trace_system_areas(PARROT_INTERP, ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(trace_system_areas)
{
@@ -245,8 +228,8 @@
/*
-=item C<static void trace_system_stack(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static void trace_system_stack(PARROT_INTERP, const Memory_Pools
+*mem_pools)>
Traces the memory block starting at C<< interp->lo_var_ptr >>. This should be
the address of a local variable which has been created on the stack early in
@@ -258,8 +241,7 @@
*/
static void
-trace_system_stack(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+trace_system_stack(PARROT_INTERP, ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(trace_system_stack)
/* Create a local variable on the system stack. This represents the
@@ -275,8 +257,7 @@
/*
-=item C<static size_t get_max_buffer_address(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static size_t get_max_buffer_address(const Memory_Pools *mem_pools)>
Calculates the maximum buffer address and returns it. This is done by looping
through all the sized pools, and finding the pool whose C<end_arena_memory>
@@ -290,14 +271,13 @@
PARROT_WARN_UNUSED_RESULT
static size_t
-get_max_buffer_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+get_max_buffer_address(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(get_max_buffer_address)
size_t max = 0;
UINTVAL i;
- for (i = 0; i < mem_pools->num_sized; i++) {
+ for (i = 0; i < mem_pools->num_sized; ++i) {
if (mem_pools->sized_header_pools[i]) {
if (mem_pools->sized_header_pools[i]->end_arena_memory > max)
max = mem_pools->sized_header_pools[i]->end_arena_memory;
@@ -310,8 +290,7 @@
/*
-=item C<static size_t get_min_buffer_address(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static size_t get_min_buffer_address(const Memory_Pools *mem_pools)>
Calculates the minimum buffer address and returns it. Loops through all sized
pools, and finds the one with the smallest C<start_arena_memory> field. Notice
@@ -326,18 +305,17 @@
PARROT_WARN_UNUSED_RESULT
static size_t
-get_min_buffer_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+get_min_buffer_address(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(get_min_buffer_address)
size_t min = (size_t) -1;
UINTVAL i;
- for (i = 0; i < mem_pools->num_sized; i++) {
- if (mem_pools->sized_header_pools[i]
- && mem_pools->sized_header_pools[i]->start_arena_memory) {
- if (mem_pools->sized_header_pools[i]->start_arena_memory < min)
- min = mem_pools->sized_header_pools[i]->start_arena_memory;
+ for (i = 0; i < mem_pools->num_sized; ++i) {
+ const Fixed_Size_Pool * const pool = mem_pools->sized_header_pools[i];
+ if (pool && pool->start_arena_memory) {
+ if (pool->start_arena_memory < min)
+ min = pool->start_arena_memory;
}
}
@@ -347,8 +325,7 @@
/*
-=item C<static size_t get_max_pmc_address(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static size_t get_max_pmc_address(const Memory_Pools *mem_pools)>
Returns the maximum memory address used by the C<pmc_pool>.
@@ -358,8 +335,7 @@
PARROT_WARN_UNUSED_RESULT
static size_t
-get_max_pmc_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+get_max_pmc_address(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(get_max_pmc_address)
return mem_pools->pmc_pool->end_arena_memory;
@@ -368,8 +344,7 @@
/*
-=item C<static size_t get_min_pmc_address(PARROT_INTERP, Memory_Pools * const
-mem_pools)>
+=item C<static size_t get_min_pmc_address(const Memory_Pools *mem_pools)>
Returns the minimum memory address used by the C<pmc_pool>. Notice that the
memory region between C<get_min_pmc_address> and C<get_max_pmc_address> may be
@@ -381,8 +356,7 @@
PARROT_WARN_UNUSED_RESULT
static size_t
-get_min_pmc_address(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
+get_min_pmc_address(ARGIN(const Memory_Pools *mem_pools))
{
ASSERT_ARGS(get_min_pmc_address)
return mem_pools->pmc_pool->start_arena_memory;
@@ -413,7 +387,7 @@
/* Shifting a value by its size (in bits) or larger is undefined behaviour.
So need an explicit check to return 0 if there is no prefix, rather than
attempting to rely on (say) 0xFFFFFFFF << 32 being 0. */
- for (i = 0; i < bound; i++) {
+ for (i = 0; i < bound; ++i) {
if (val1 == val2)
return ~(size_t)0 << i;
@@ -432,8 +406,8 @@
/*
-=item C<static void trace_mem_block(PARROT_INTERP, Memory_Pools * const
-mem_pools, size_t lo_var_ptr, size_t hi_var_ptr)>
+=item C<static void trace_mem_block(PARROT_INTERP, const Memory_Pools
+*mem_pools, size_t lo_var_ptr, size_t hi_var_ptr)>
Traces the memory block between C<lo_var_ptr> and C<hi_var_ptr>.
Attempt to find pointers to PObjs or buffers, and mark them as "alive"
@@ -446,17 +420,17 @@
static void
trace_mem_block(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+ ARGIN(const Memory_Pools *mem_pools),
size_t lo_var_ptr, size_t hi_var_ptr)
{
ASSERT_ARGS(trace_mem_block)
size_t prefix;
ptrdiff_t cur_var_ptr;
- const size_t buffer_min = get_min_buffer_address(interp, mem_pools);
- const size_t buffer_max = get_max_buffer_address(interp, mem_pools);
- const size_t pmc_min = get_min_pmc_address(interp, mem_pools);
- const size_t pmc_max = get_max_pmc_address(interp, mem_pools);
+ const size_t buffer_min = get_min_buffer_address(mem_pools);
+ const size_t buffer_max = get_max_buffer_address(mem_pools);
+ const size_t pmc_min = get_min_pmc_address(mem_pools);
+ const size_t pmc_max = get_max_pmc_address(mem_pools);
const size_t mask =
find_common_mask(interp,
@@ -486,12 +460,11 @@
* guaranteed to be live pmcs/buffers, and could very well have
* had their bufstart/vtable destroyed due to the linked list of
* free headers... */
- if (pmc_min <= ptr && ptr < pmc_max &&
- is_pmc_ptr(interp, mem_pools, (void *)ptr)) {
+ if ((pmc_min <= ptr) && (ptr < pmc_max) && is_pmc_ptr(mem_pools, (void *)ptr)) {
Parrot_gc_mark_PObj_alive(interp, (PObj *)ptr);
}
- else if (buffer_min <= ptr && ptr < buffer_max &&
- is_buffer_ptr(interp, mem_pools, (void *)ptr)) {
+ else if ((buffer_min <= ptr) && (ptr < buffer_max) &&
+ is_buffer_ptr(mem_pools, (void *)ptr)) {
/* ...and since Parrot_gc_mark_PObj_alive doesn't care about bufstart, it
* doesn't really matter if it sets a flag */
Parrot_gc_mark_PObj_alive(interp, (PObj *)ptr);
@@ -504,8 +477,8 @@
/*
-=item C<static int is_buffer_ptr(PARROT_INTERP, Memory_Pools * const mem_pools,
-const void *ptr)>
+=item C<static int is_buffer_ptr(const Memory_Pools *mem_pools, const void
+*ptr)>
Checks whether the given C<ptr> is located within one of the sized
header pools. Returns C<1> if it is, and C<0> if not.
@@ -516,16 +489,14 @@
PARROT_WARN_UNUSED_RESULT
static int
-is_buffer_ptr(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- ARGIN(const void *ptr))
+is_buffer_ptr(ARGIN(const Memory_Pools *mem_pools), ARGIN(const void *ptr))
{
ASSERT_ARGS(is_buffer_ptr)
UINTVAL i;
- for (i = 0; i < mem_pools->num_sized; i++) {
+ for (i = 0; i < mem_pools->num_sized; ++i) {
if (mem_pools->sized_header_pools[i]
- && contained_in_pool(interp, mem_pools->sized_header_pools[i], ptr))
+ && contained_in_pool(mem_pools->sized_header_pools[i], ptr))
return 1;
}
@@ -534,8 +505,7 @@
/*
-=item C<static int is_pmc_ptr(PARROT_INTERP, Memory_Pools * const mem_pools,
-const void *ptr)>
+=item C<static int is_pmc_ptr(const Memory_Pools *mem_pools, const void *ptr)>
Checks that C<ptr> is actually a PMC pointer. Returns C<1> if it is, C<0>
otherwise.
@@ -546,12 +516,10 @@
PARROT_WARN_UNUSED_RESULT
static int
-is_pmc_ptr(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
- ARGIN(const void *ptr))
+is_pmc_ptr(ARGIN(const Memory_Pools *mem_pools), ARGIN(const void *ptr))
{
ASSERT_ARGS(is_pmc_ptr)
- return contained_in_pool(interp, mem_pools->pmc_pool, ptr);
+ return contained_in_pool(mem_pools->pmc_pool, ptr);
}
Modified: branches/ops_pct/src/global.c
==============================================================================
--- branches/ops_pct/src/global.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/global.c Wed May 5 08:45:29 2010 (r46302)
@@ -648,7 +648,7 @@
ASSERT_ARGS(Parrot_find_global_op)
PMC *res;
- if (!globalname)
+ if (STRING_IS_NULL(globalname))
Parrot_ex_throw_from_c_args(interp, next, EXCEPTION_GLOBAL_NOT_FOUND,
"Tried to get null global");
Modified: branches/ops_pct/src/global_setup.c
==============================================================================
--- branches/ops_pct/src/global_setup.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/global_setup.c Wed May 5 08:45:29 2010 (r46302)
@@ -211,8 +211,7 @@
parrot_global_setup_2(PARROT_INTERP)
{
ASSERT_ARGS(parrot_global_setup_2)
- PMC *classname_hash, *iglobals;
- int i;
+ PMC *classname_hash;
create_initial_context(interp);
@@ -228,13 +227,8 @@
Parrot_register_core_pmcs(interp, classname_hash);
/* init the interpreter globals array */
- iglobals = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
- interp->iglobals = iglobals;
- VTABLE_set_integer_native(interp, iglobals, (INTVAL)IGLOBALS_SIZE);
-
- /* clear the array */
- for (i = 0; i < (INTVAL)IGLOBALS_SIZE; i++)
- VTABLE_set_pmc_keyed_int(interp, iglobals, i, NULL);
+ interp->iglobals = Parrot_pmc_new_init_int(interp,
+ enum_class_FixedPMCArray, (INTVAL)IGLOBALS_SIZE);
}
/*
Modified: branches/ops_pct/src/hash.c
==============================================================================
--- branches/ops_pct/src/hash.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/hash.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -54,7 +54,7 @@
FUNC_MODIFIES(*hash);
static void hash_freeze(PARROT_INTERP,
- ARGIN(const Hash * const hash),
+ ARGIN(const Hash *hash),
ARGMOD(PMC *info))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -76,7 +76,7 @@
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
static size_t key_hash_pointer(SHIM_INTERP,
ARGIN(const void *value),
size_t seed)
@@ -94,6 +94,12 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+PARROT_WARN_UNUSED_RESULT
+PARROT_CONST_FUNCTION
+static int pointer_compare(SHIM_INTERP,
+ ARGIN_NULLOK(const void *a),
+ ARGIN_NULLOK(const void *b));
+
#define ASSERT_ARGS_cstring_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(a) \
, PARROT_ASSERT_ARG(b))
@@ -121,6 +127,7 @@
#define ASSERT_ARGS_parrot_mark_hash_values __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(hash))
+#define ASSERT_ARGS_pointer_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -176,7 +183,8 @@
return 1;
/* COWed strings */
- if (Buffer_bufstart(s1) == Buffer_bufstart(s2) && s1->bufused == s2->bufused)
+ if (Buffer_bufstart(s1) == Buffer_bufstart(s2)
+ && s1->bufused == s2->bufused)
return 0;
return CHARSET_COMPARE(interp, s1, s2);
@@ -185,7 +193,7 @@
/*
-=item C<int pointer_compare(PARROT_INTERP, const void *a, const void *b)>
+=item C<static int pointer_compare(PARROT_INTERP, const void *a, const void *b)>
Compares the two pointers, returning 0 if they are identical
@@ -194,8 +202,8 @@
*/
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-int
+PARROT_CONST_FUNCTION
+static int
pointer_compare(SHIM_INTERP, ARGIN_NULLOK(const void *a), ARGIN_NULLOK(const void *b))
{
ASSERT_ARGS(pointer_compare)
@@ -215,7 +223,7 @@
*/
PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
+PARROT_CONST_FUNCTION
static size_t
key_hash_pointer(SHIM_INTERP, ARGIN(const void *value), size_t seed)
{
@@ -312,7 +320,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_PURE_FUNCTION
int
-PMC_compare(PARROT_INTERP, ARGIN(PMC *a), ARGIN_NULLOK(PMC *b))
+PMC_compare(PARROT_INTERP, ARGIN(PMC *a), ARGIN(PMC *b))
{
ASSERT_ARGS(PMC_compare)
@@ -399,7 +407,7 @@
PARROT_EXPORT
void
-parrot_mark_hash(PARROT_INTERP, ARGIN(Hash *hash))
+parrot_mark_hash(PARROT_INTERP, ARGMOD(Hash *hash))
{
ASSERT_ARGS(parrot_mark_hash)
int mark_key = 0;
@@ -564,18 +572,24 @@
HashBucket *b;
switch (hash->key_type) {
+ case Hash_key_type_int:
+ {
+ const INTVAL i_key = VTABLE_shift_integer(interp, info);
+ b = parrot_hash_put(interp, hash, (void*)i_key, NULL);
+ }
+ break;
case Hash_key_type_STRING:
{
STRING * const s_key = VTABLE_shift_string(interp, info);
b = parrot_hash_put(interp, hash, s_key, NULL);
}
break;
- case Hash_key_type_int:
+ case Hash_key_type_PMC:
{
- const INTVAL i_key = VTABLE_shift_integer(interp, info);
- b = parrot_hash_put(interp, hash, (void*)i_key, NULL);
+ PMC * const p_key = VTABLE_shift_pmc(interp, info);
+ b = parrot_hash_put(interp, hash, p_key, NULL);
+ break;
}
- break;
default:
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"unimplemented key type");
@@ -583,18 +597,24 @@
}
switch (hash->entry_type) {
- case enum_hash_pmc:
- {
- PMC *p = VTABLE_shift_pmc(interp, info);
- b->value = (void *)p;
- break;
- }
case enum_hash_int:
{
const INTVAL i = VTABLE_shift_integer(interp, info);
b->value = (void *)i;
break;
}
+ case enum_hash_string:
+ {
+ STRING * const s = VTABLE_shift_string(interp, info);
+ b->value = (void *)s;
+ break;
+ }
+ case enum_hash_pmc:
+ {
+ PMC * const p = VTABLE_shift_pmc(interp, info);
+ b->value = (void *)p;
+ break;
+ }
default:
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"unimplemented value type");
@@ -606,8 +626,7 @@
/*
-=item C<static void hash_freeze(PARROT_INTERP, const Hash * const hash, PMC
-*info)>
+=item C<static void hash_freeze(PARROT_INTERP, const Hash *hash, PMC *info)>
Freezes hash into a string.
@@ -621,20 +640,23 @@
*/
static void
-hash_freeze(PARROT_INTERP, ARGIN(const Hash * const hash), ARGMOD(PMC *info))
+hash_freeze(PARROT_INTERP, ARGIN(const Hash *hash), ARGMOD(PMC *info))
{
ASSERT_ARGS(hash_freeze)
size_t i;
- for (i = 0; i < hash->entries; i++) {
+ for (i = 0; i < hash->entries; ++i) {
HashBucket * const b = hash->bs+i;
switch (hash->key_type) {
+ case Hash_key_type_int:
+ VTABLE_push_integer(interp, info, (INTVAL)b->key);
+ break;
case Hash_key_type_STRING:
VTABLE_push_string(interp, info, (STRING *)b->key);
break;
- case Hash_key_type_int:
- VTABLE_push_integer(interp, info, (INTVAL)b->key);
+ case Hash_key_type_PMC:
+ VTABLE_push_pmc(interp, info, (PMC *)b->key);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL, 1,
@@ -643,12 +665,15 @@
}
switch (hash->entry_type) {
- case enum_hash_pmc:
- VTABLE_push_pmc(interp, info, (PMC *)b->value);
- break;
case enum_hash_int:
VTABLE_push_integer(interp, info, (INTVAL)b->value);
break;
+ case enum_hash_string:
+ VTABLE_push_string(interp, info, (STRING *)b->value);
+ break;
+ case enum_hash_pmc:
+ VTABLE_push_pmc(interp, info, (PMC *)b->value);
+ break;
default:
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"unimplemented value type");
@@ -728,13 +753,13 @@
ASSERT_ARGS(expand_hash)
HashBucket **old_bi, **new_bi;
HashBucket *bs, *b, *new_mem;
- HashBucket *old_offset = (HashBucket *)((char *)hash + sizeof (Hash));
+ HashBucket * const old_offset = (HashBucket *)((char *)hash + sizeof (Hash));
void * const old_mem = hash->bs;
const UINTVAL old_size = hash->mask + 1;
const UINTVAL new_size = old_size << 1;
const UINTVAL old_nb = N_BUCKETS(old_size);
- size_t offset, i, new_loc;
+ size_t offset, i;
/*
allocate some less buckets
@@ -792,8 +817,9 @@
* as expand_hash is only called for that case).
*/
if (offset) {
- for (i = 0; i < old_size; ++i) {
- HashBucket **next_p = new_bi + i;
+ size_t j;
+ for (j = 0; j < old_size; ++j) {
+ HashBucket **next_p = new_bi + j;
while (*next_p) {
*next_p = (HashBucket *)((char *)*next_p + offset);
b = *next_p;
@@ -805,11 +831,11 @@
/* recalc bucket index */
for (i = 0; i < old_size; ++i) {
HashBucket **next_p = new_bi + i;
- while (*next_p) {
- b = *next_p;
+
+ while ((b = *next_p) != NULL) {
/* rehash the bucket */
- new_loc = (hash->hash_val)(interp, b->key, hash->seed) &
- (new_size - 1);
+ const size_t new_loc =
+ (hash->hash_val)(interp, b->key, hash->seed) & (new_size - 1);
if (i != new_loc) {
*next_p = b->next;
@@ -988,14 +1014,9 @@
for (i = 0, --bp; i < N_BUCKETS(INITIAL_BUCKETS); ++i, --bp) {
bp->next = hash->free_list;
- bp->key = NULL;
- bp->value = NULL;
hash->free_list = bp;
}
- for (i = 0; i < INITIAL_BUCKETS; ++i)
- hash->bi[i] = NULL;
-
return hash;
}
@@ -1007,16 +1028,18 @@
Frees the memory allocated to the specified hash and its bucket store. Used by
parrot_chash_destroy.
+Unlike the C library function free(), the hash function must not be NULL.
+
=cut
*/
PARROT_EXPORT
void
-parrot_hash_destroy(PARROT_INTERP, ARGMOD(Hash *hash))
+parrot_hash_destroy(PARROT_INTERP, ARGFREE_NOTNULL(Hash *hash))
{
ASSERT_ARGS(parrot_hash_destroy)
- HashBucket *bp = (HashBucket*)((char*)hash + sizeof (Hash));
+ HashBucket * const bp = (HashBucket*)((char*)hash + sizeof (Hash));
if (bp != hash->bs)
mem_gc_free(interp, hash->bs);
mem_gc_free(interp, hash);
@@ -1040,7 +1063,7 @@
ASSERT_ARGS(parrot_chash_destroy)
UINTVAL i;
- for (i = 0; i <= hash->mask; i++) {
+ for (i = 0; i <= hash->mask; ++i) {
HashBucket *bucket = hash->bi[i];
while (bucket) {
mem_gc_free(interp, bucket->key);
@@ -1075,7 +1098,7 @@
ASSERT_ARGS(parrot_chash_destroy_values)
UINTVAL i;
- for (i = 0; i <= hash->mask; i++) {
+ for (i = 0; i <= hash->mask; ++i) {
HashBucket *bucket = hash->bi[i];
while (bucket) {
mem_gc_free(interp, bucket->key);
@@ -1203,8 +1226,8 @@
const UINTVAL entries = hash->entries;
UINTVAL i;
- for (i = 0; i < entries; i++) {
- HashBucket *bucket = hash->bs + i;
+ for (i = 0; i < entries; ++i) {
+ HashBucket * const bucket = hash->bs + i;
/* the hash->compare cost is too high for this fast path */
if (bucket->key == key)
@@ -1234,7 +1257,8 @@
/*
-=item C<void * parrot_hash_get(PARROT_INTERP, Hash *hash, const void *key)>
+=item C<void * parrot_hash_get(PARROT_INTERP, const Hash *hash, const void
+*key)>
Returns the value keyed by C<key>, or C<NULL> if no bucket is found.
@@ -1246,7 +1270,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
void *
-parrot_hash_get(PARROT_INTERP, ARGIN(Hash *hash), ARGIN(const void *key))
+parrot_hash_get(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN(const void *key))
{
ASSERT_ARGS(parrot_hash_get)
const HashBucket * const bucket = parrot_hash_get_bucket(interp, hash, key);
@@ -1256,7 +1280,7 @@
/*
-=item C<INTVAL parrot_hash_exists(PARROT_INTERP, Hash *hash, void *key)>
+=item C<INTVAL parrot_hash_exists(PARROT_INTERP, const Hash *hash, void *key)>
Returns whether the key exists in the hash.
@@ -1267,7 +1291,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL
-parrot_hash_exists(PARROT_INTERP, ARGIN(Hash *hash), ARGIN(void *key))
+parrot_hash_exists(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN(void *key))
{
ASSERT_ARGS(parrot_hash_exists)
const HashBucket * const bucket = parrot_hash_get_bucket(interp, hash, key);
@@ -1300,13 +1324,14 @@
/* When the hash is constant, check that the key and value are also
* constant. */
if (!PMC_IS_NULL(hash->container)
- && PObj_constant_TEST(hash->container)) {
+ && PObj_constant_TEST(hash->container)) {
if (hash->key_type == Hash_key_type_STRING
- && !PObj_constant_TEST((PObj *)key))
+ && !PObj_constant_TEST((PObj *)key))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
"Used non-constant key in constant hash.");
- if (((hash->entry_type == enum_type_PMC) || (hash->entry_type == enum_type_STRING))
- && !PObj_constant_TEST((PObj *)value))
+ if (((hash->entry_type == enum_type_PMC)
+ || (hash->entry_type == enum_type_STRING))
+ && !PObj_constant_TEST((PObj *)value))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
"Used non-constant value in constant hash.");
}
@@ -1321,7 +1346,6 @@
if (bucket)
bucket->value = value;
else {
-
bucket = hash->free_list;
if (!bucket) {
@@ -1329,7 +1353,7 @@
bucket = hash->free_list;
}
- hash->entries++;
+ ++hash->entries;
hash->free_list = bucket->next;
bucket->key = key;
bucket->value = value;
@@ -1368,7 +1392,7 @@
else
hash->bi[hashval] = bucket->next;
- hash->entries--;
+ --hash->entries;
bucket->next = hash->free_list;
bucket->key = NULL;
hash->free_list = bucket;
@@ -1399,7 +1423,7 @@
UINTVAL entries = hash->entries;
UINTVAL i;
- for (i = 0; i < entries; i++) {
+ for (i = 0; i < entries; ++i) {
void *valtmp;
HashBucket *b = hash->bs+i;
void * const key = b->key;
@@ -1412,7 +1436,7 @@
break;
case enum_type_STRING:
- valtmp = (void *)Parrot_str_copy(interp, (STRING *)b->value);
+ valtmp = b->value;
break;
case enum_type_PMC:
@@ -1428,9 +1452,8 @@
"hash corruption: type = %d\n", hash->entry_type);
};
- if (key){
+ if (key)
parrot_hash_put(interp, dest, key, valtmp);
- }
}
}
@@ -1512,8 +1535,7 @@
/*
-=item C<void* hash_key_from_int(PARROT_INTERP, const Hash * const hash, INTVAL
-key)>
+=item C<void* hash_key_from_int(PARROT_INTERP, const Hash *hash, INTVAL key)>
Cast INTVAL to hash key.
@@ -1523,7 +1545,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_key_from_int(PARROT_INTERP, ARGIN(const Hash * const hash), INTVAL key)
+hash_key_from_int(PARROT_INTERP, ARGIN(const Hash *hash), INTVAL key)
{
ASSERT_ARGS(hash_key_from_int)
void *ret;
@@ -1547,8 +1569,8 @@
/*
-=item C<void* hash_key_from_string(PARROT_INTERP, const Hash * const hash,
-STRING *key)>
+=item C<void* hash_key_from_string(PARROT_INTERP, const Hash *hash, STRING
+*key)>
Cast STRING to hash key.
@@ -1558,7 +1580,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_key_from_string(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN(STRING *key))
+hash_key_from_string(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN(STRING *key))
{
ASSERT_ARGS(hash_key_from_string)
void *ret;
@@ -1588,8 +1610,7 @@
/*
-=item C<void* hash_key_from_pmc(PARROT_INTERP, const Hash * const hash, PMC
-*key)>
+=item C<void* hash_key_from_pmc(PARROT_INTERP, const Hash *hash, PMC *key)>
Cast PMC* to hash key.
@@ -1599,7 +1620,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_key_from_pmc(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN(PMC *key))
+hash_key_from_pmc(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN(PMC *key))
{
ASSERT_ARGS(hash_key_from_pmc)
void *ret;
@@ -1641,7 +1662,7 @@
case Hash_key_type_STRING:
{
STRING * const tmp = VTABLE_get_string(interp, key);
- if (!tmp)
+ if (STRING_IS_NULL(tmp))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"hash: can't use null as key");
ret = (void *)tmp;
@@ -1656,8 +1677,7 @@
/*
-=item C<INTVAL hash_key_to_int(PARROT_INTERP, const Hash * const hash, void
-*key)>
+=item C<INTVAL hash_key_to_int(PARROT_INTERP, const Hash *hash, void *key)>
Cast hash key to INTVAL.
@@ -1666,7 +1686,7 @@
*/
INTVAL
-hash_key_to_int(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *key))
+hash_key_to_int(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *key))
{
ASSERT_ARGS(hash_key_to_int)
INTVAL ret;
@@ -1689,8 +1709,7 @@
/*
-=item C<STRING* hash_key_to_string(PARROT_INTERP, const Hash * const hash, void
-*key)>
+=item C<STRING* hash_key_to_string(PARROT_INTERP, const Hash *hash, void *key)>
Cast hash key to STRING.
@@ -1700,7 +1719,7 @@
PARROT_CANNOT_RETURN_NULL
STRING*
-hash_key_to_string(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *key))
+hash_key_to_string(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *key))
{
ASSERT_ARGS(hash_key_to_string)
STRING *ret;
@@ -1762,7 +1781,7 @@
/*
-=item C<void* hash_value_from_int(PARROT_INTERP, const Hash * const hash, INTVAL
+=item C<void* hash_value_from_int(PARROT_INTERP, const Hash *hash, INTVAL
value)>
Cast INTVAL to hash value.
@@ -1773,7 +1792,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_value_from_int(PARROT_INTERP, ARGIN(const Hash * const hash), INTVAL value)
+hash_value_from_int(PARROT_INTERP, ARGIN(const Hash *hash), INTVAL value)
{
ASSERT_ARGS(hash_value_from_int)
void *ret;
@@ -1799,8 +1818,8 @@
/*
-=item C<void* hash_value_from_string(PARROT_INTERP, const Hash * const hash,
-STRING *value)>
+=item C<void* hash_value_from_string(PARROT_INTERP, const Hash *hash, STRING
+*value)>
Cast STRING to hash value.
@@ -1810,7 +1829,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_value_from_string(PARROT_INTERP, ARGIN(const Hash * const hash),
+hash_value_from_string(PARROT_INTERP, ARGIN(const Hash *hash),
ARGIN_NULLOK(STRING *value))
{
ASSERT_ARGS(hash_value_from_string)
@@ -1842,8 +1861,7 @@
/*
-=item C<void* hash_value_from_pmc(PARROT_INTERP, const Hash * const hash, PMC
-*value)>
+=item C<void* hash_value_from_pmc(PARROT_INTERP, const Hash *hash, PMC *value)>
Cast PMC to hash value.
@@ -1853,7 +1871,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_value_from_pmc(PARROT_INTERP, ARGIN(const Hash * const hash),
+hash_value_from_pmc(PARROT_INTERP, ARGIN(const Hash *hash),
ARGIN_NULLOK(PMC *value))
{
ASSERT_ARGS(hash_value_from_pmc)
@@ -1882,8 +1900,8 @@
/*
-=item C<void* hash_value_from_number(PARROT_INTERP, const Hash * const hash,
-FLOATVAL value)>
+=item C<void* hash_value_from_number(PARROT_INTERP, const Hash *hash, FLOATVAL
+value)>
Cast FLOATVAL to hash value.
@@ -1893,7 +1911,7 @@
PARROT_CAN_RETURN_NULL
void*
-hash_value_from_number(PARROT_INTERP, ARGIN(const Hash * const hash), FLOATVAL value)
+hash_value_from_number(PARROT_INTERP, ARGIN(const Hash *hash), FLOATVAL value)
{
ASSERT_ARGS(hash_value_from_number)
void *ret;
@@ -1922,8 +1940,7 @@
/*
-=item C<INTVAL hash_value_to_int(PARROT_INTERP, const Hash * const hash, void
-*value)>
+=item C<INTVAL hash_value_to_int(PARROT_INTERP, const Hash *hash, void *value)>
Cast hash value to INTVAL.
@@ -1932,7 +1949,7 @@
*/
INTVAL
-hash_value_to_int(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *value))
+hash_value_to_int(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *value))
{
ASSERT_ARGS(hash_value_to_int)
INTVAL ret;
@@ -1956,8 +1973,8 @@
/*
-=item C<STRING* hash_value_to_string(PARROT_INTERP, const Hash * const hash,
-void *value)>
+=item C<STRING* hash_value_to_string(PARROT_INTERP, const Hash *hash, void
+*value)>
Cast hash value to STRING.
@@ -1967,7 +1984,7 @@
PARROT_CANNOT_RETURN_NULL
STRING*
-hash_value_to_string(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *value))
+hash_value_to_string(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *value))
{
ASSERT_ARGS(hash_value_to_string)
STRING *ret;
@@ -1990,8 +2007,7 @@
/*
-=item C<PMC* hash_value_to_pmc(PARROT_INTERP, const Hash * const hash, void
-*value)>
+=item C<PMC* hash_value_to_pmc(PARROT_INTERP, const Hash *hash, void *value)>
Cast hash value to PMC.
@@ -2001,7 +2017,7 @@
PARROT_CANNOT_RETURN_NULL
PMC*
-hash_value_to_pmc(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *value))
+hash_value_to_pmc(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *value))
{
ASSERT_ARGS(hash_value_to_pmc)
PMC *ret;
@@ -2024,8 +2040,8 @@
/*
-=item C<FLOATVAL hash_value_to_number(PARROT_INTERP, const Hash * const hash,
-void *value)>
+=item C<FLOATVAL hash_value_to_number(PARROT_INTERP, const Hash *hash, void
+*value)>
Cast hash value to FLOATVAL.
@@ -2034,7 +2050,7 @@
*/
FLOATVAL
-hash_value_to_number(PARROT_INTERP, ARGIN(const Hash * const hash), ARGIN_NULLOK(void *value))
+hash_value_to_number(PARROT_INTERP, ARGIN(const Hash *hash), ARGIN_NULLOK(void *value))
{
ASSERT_ARGS(hash_value_to_number)
FLOATVAL ret;
Modified: branches/ops_pct/src/hll.c
==============================================================================
--- branches/ops_pct/src/hll.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/hll.c Wed May 5 08:45:29 2010 (r46302)
@@ -52,16 +52,6 @@
/* for shared HLL data, do COW stuff */
#define START_READ_HLL_INFO(interp, hll_info)
#define END_READ_HLL_INFO(interp, hll_info)
-#define START_WRITE_HLL_INFO(interp, hll_info) \
- do { \
- if (PObj_is_PMC_shared_TEST(hll_info) && PMC_sync((interp)->HLL_info)) { \
- (hll_info) = (interp)->HLL_info = \
- Parrot_clone((interp), (interp)->HLL_info); \
- if (PMC_sync((interp)->HLL_info)) \
- mem_internal_free(PMC_sync((interp)->HLL_info)); \
- } \
- } while (0)
-#define END_WRITE_HLL_INFO(interp, hll_info)
/*
@@ -88,7 +78,8 @@
PMC *entry_id;
- PMC * const entry = Parrot_pmc_new_constant(interp, enum_class_FixedPMCArray);
+ PMC * const entry = Parrot_pmc_new_constant_init_int(interp,
+ enum_class_FixedPMCArray, e_HLL_MAX);
if (entry_name && !STRING_IS_EMPTY(entry_name)) {
VTABLE_set_pmc_keyed_str(interp, hll_info, entry_name, entry);
@@ -96,10 +87,7 @@
else
VTABLE_push_pmc(interp, hll_info, entry);
- VTABLE_set_integer_native(interp, entry, e_HLL_MAX);
-
- entry_id = Parrot_pmc_new_constant(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, entry_id, id);
+ entry_id = Parrot_pmc_new_constant_init_int(interp, enum_class_Integer, id);
VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_id, entry_id);
return entry;
@@ -162,8 +150,6 @@
hll_info = interp->HLL_info;
- START_WRITE_HLL_INFO(interp, hll_info);
-
idx = VTABLE_elements(interp, hll_info);
entry = new_hll_entry(interp, hll_name);
@@ -192,9 +178,6 @@
VTABLE_set_pointer(interp, type_hash, parrot_new_intval_hash(interp));
VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_typemap, type_hash);
- /* UNLOCK */
- END_WRITE_HLL_INFO(interp, hll_info);
-
return idx;
}
@@ -217,11 +200,8 @@
{
ASSERT_ARGS(Parrot_register_HLL_lib)
PMC *hll_info = interp->HLL_info;
- PMC *entry, *name;
INTVAL nelements, i;
- START_WRITE_HLL_INFO(interp, hll_info);
-
nelements = VTABLE_elements(interp, hll_info);
for (i = 0; i < nelements; ++i) {
@@ -229,28 +209,28 @@
PMC * const lib_name = VTABLE_get_pmc_keyed_int(interp, entry, e_HLL_lib);
if (!PMC_IS_NULL(lib_name)) {
- const STRING * const name = VTABLE_get_string(interp, lib_name);
- if (Parrot_str_equal(interp, name, hll_lib))
+ const STRING * const lib_name_str = VTABLE_get_string(interp, lib_name);
+ if (Parrot_str_equal(interp, lib_name_str, hll_lib))
break;
}
}
if (i < nelements)
return i;
+ else {
+ PMC * const new_entry = new_hll_entry(interp, NULL);
+ PMC *name;
- entry = new_hll_entry(interp, NULL);
-
- VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_name, PMCNULL);
-
- /* register dynlib */
- name = Parrot_pmc_new_constant(interp, enum_class_String);
+ VTABLE_set_pmc_keyed_int(interp, new_entry, e_HLL_name, PMCNULL);
- VTABLE_set_string_native(interp, name, hll_lib);
- VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_lib, name);
+ /* register dynlib */
+ name = Parrot_pmc_new_constant(interp, enum_class_String);
- END_WRITE_HLL_INFO(interp, hll_info);
+ VTABLE_set_string_native(interp, name, hll_lib);
+ VTABLE_set_pmc_keyed_int(interp, new_entry, e_HLL_lib, name);
- return 0;
+ return 0;
+ }
}
/*
@@ -271,15 +251,18 @@
Parrot_get_HLL_id(PARROT_INTERP, ARGIN_NULLOK(STRING *hll_name))
{
ASSERT_ARGS(Parrot_get_HLL_id)
+ PMC * entry;
PMC * const hll_info = interp->HLL_info;
- INTVAL i;
+ INTVAL i = -1;
+
+ if (!hll_name)
+ return i;
START_READ_HLL_INFO(interp, hll_info);
- if (!hll_name || !VTABLE_exists_keyed_str(interp, hll_info, hll_name))
- i = -1;
- else {
- PMC * const entry = VTABLE_get_pmc_keyed_str(interp, hll_info, hll_name);
+ entry = VTABLE_get_pmc_keyed_str(interp, hll_info, hll_name);
+
+ if (!PMC_IS_NULL(entry)) {
PMC * const entry_id = VTABLE_get_pmc_keyed_int(interp, entry, e_HLL_id);
i = VTABLE_get_integer(interp, entry_id);
}
@@ -355,15 +338,6 @@
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_GLOBAL_NOT_FOUND,
"no such HLL ID (%vd)", hll_id);
- /* the type might already be registered in a non-conflicting way, in which
- * ca se we can avoid copying */
- if (PObj_is_PMC_shared_TEST(hll_info) && PMC_sync(hll_info)) {
- if (hll_type == Parrot_get_HLL_type(interp, hll_id, core_type))
- return;
- }
-
- START_WRITE_HLL_INFO(interp, hll_info);
-
entry = VTABLE_get_pmc_keyed_int(interp, hll_info, hll_id);
PARROT_ASSERT(!PMC_IS_NULL(entry));
@@ -371,8 +345,6 @@
PARROT_ASSERT(!PMC_IS_NULL(type_hash));
VTABLE_set_integer_keyed_int(interp, type_hash, core_type, hll_type);
-
- END_WRITE_HLL_INFO(interp, hll_info);
}
/*
@@ -518,11 +490,11 @@
if (PMC_IS_NULL(ns_hash) ||
ns_hash->vtable->base_type == enum_class_Undef)
{
- STRING * const hll_name = Parrot_get_HLL_name(interp, hll_id);
+ STRING * hll_name = Parrot_get_HLL_name(interp, hll_id);
if (!hll_name)
continue;
- Parrot_str_downcase_inplace(interp, hll_name);
+ hll_name = Parrot_str_downcase(interp, hll_name);
/* XXX as in Parrot_register_HLL() this needs to be fixed to use
* the correct type of namespace. It's relatively easy to do that
Modified: branches/ops_pct/src/interp/inter_cb.c
==============================================================================
--- branches/ops_pct/src/interp/inter_cb.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/interp/inter_cb.c Wed May 5 08:45:29 2010 (r46302)
@@ -314,11 +314,6 @@
case 'v':
pasm_sig[1] = 'v';
break;
-#if 0
- case '2':
- case '3':
- case '4':
-#endif
case 'l':
i_param = (INTVAL)(long) external_data;
goto case_I;
@@ -334,14 +329,6 @@
pasm_sig[1] = 'I';
param = (void*) i_param;
break;
-#if 0
- case 'f':
- case 'd':
- /* these types don't fit into a pointer, they will not
- * work
- */
- break;
-#endif
case 'p':
/* created a UnManagedStruct */
p_param = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
@@ -349,11 +336,6 @@
pasm_sig[1] = 'P';
param = (void*) p_param;
break;
-#if 0
- case 'P':
- pasm_sig[1] = 'P';
- break;
-#endif
case 't':
pasm_sig[1] = 'S';
param = Parrot_str_new(interp, external_data, 0);
Modified: branches/ops_pct/src/interp/inter_create.c
==============================================================================
--- branches/ops_pct/src/interp/inter_create.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/interp/inter_create.c Wed May 5 08:45:29 2010 (r46302)
@@ -131,7 +131,11 @@
interp->parent_interpreter = parent;
else {
interp->parent_interpreter = NULL;
+
+#if PARROT_CATCH_NULL
PMCNULL = NULL;
+#endif
+
/*
* we need a global mutex to protect the interpreter array
*/
@@ -237,11 +241,6 @@
/* param count mismatch is an error by default */
PARROT_ERRORS_on(interp, PARROT_ERRORS_PARAM_COUNT_FLAG);
-#if 0
- /* TODO not yet - too many test failures */
- PARROT_ERRORS_on(interp, PARROT_ERRORS_RESULT_COUNT_FLAG);
-#endif
-
create_initial_context(interp);
/* clear context introspection vars */
@@ -369,6 +368,15 @@
*/
Parrot_gc_completely_unblock(interp);
+ /* Set non buffered mode in standard out and err handles, flushing
+ * the buffers and avoiding pending output gets confused or lost in
+ * case of errors during destruction.
+ */
+ Parrot_io_setbuf(interp,
+ Parrot_io_stdhandle(interp, PIO_STDOUT_FILENO, NULL), PIOCTL_NONBUF);
+ Parrot_io_setbuf(interp,
+ Parrot_io_stdhandle(interp, PIO_STDERR_FILENO, NULL), PIOCTL_NONBUF);
+
if (Interp_trace_TEST(interp, ~0)) {
Parrot_io_eprintf(interp, "FileHandle objects (like stdout and stderr)"
"are about to be closed, so clearing trace flags.\n");
Modified: branches/ops_pct/src/interp/inter_misc.c
==============================================================================
--- branches/ops_pct/src/interp/inter_misc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/interp/inter_misc.c Wed May 5 08:45:29 2010 (r46302)
@@ -111,10 +111,9 @@
{
ASSERT_ARGS(Parrot_mark_method_writes)
STRING *const str_name = Parrot_str_new_constant(interp, name);
- PMC *const pmc_true = Parrot_pmc_new(interp, enum_class_Integer);
+ PMC *const pmc_true = Parrot_pmc_new_init_int(interp, enum_class_Integer, 1);
PMC *const method = VTABLE_get_pmc_keyed_str(
interp, interp->vtables[type]->_namespace, str_name);
- VTABLE_set_integer_native(interp, pmc_true, 1);
VTABLE_setprop(interp, method, CONST_STRING(interp, "write"), pmc_true);
}
@@ -131,17 +130,16 @@
PARROT_EXPORT
void
-Parrot_compreg(PARROT_INTERP, ARGIN(STRING *type),
- NOTNULL(Parrot_compiler_func_t func))
+Parrot_compreg(PARROT_INTERP, ARGIN(STRING *type), ARGIN(Parrot_compiler_func_t func))
{
ASSERT_ARGS(Parrot_compreg)
- PMC* const iglobals = interp->iglobals;
- PMC *nci = Parrot_pmc_new(interp, enum_class_NCI);
- STRING *sc = CONST_STRING(interp, "PJt");
- PMC *hash = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
+ PMC * const iglobals = interp->iglobals;
+ PMC * const nci = Parrot_pmc_new(interp, enum_class_NCI);
+ STRING * const sc = CONST_STRING(interp, "PJt");
+ PMC * hash = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
IGLOBALS_COMPREG_HASH);
- if (!hash) {
+ if (PMC_IS_NULL(hash)) {
hash = Parrot_pmc_new_noinit(interp, enum_class_Hash);
VTABLE_init(interp, hash);
VTABLE_set_pmc_keyed_int(interp, iglobals,
@@ -238,12 +236,6 @@
else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "fast")))
return PARROT_FAST_CORE;
else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "switch")))
- return PARROT_SWITCH_CORE;
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "cgp")))
- return PARROT_CGP_CORE;
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "cgoto")))
- return PARROT_CGOTO_CORE;
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "exec")))
return PARROT_EXEC_CORE;
else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "gc_debug")))
return PARROT_GC_DEBUG_CORE;
@@ -273,30 +265,33 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC*
interpinfo_p(PARROT_INTERP, INTVAL what)
{
ASSERT_ARGS(interpinfo_p)
+
+ PMC *result;
switch (what) {
case CURRENT_SUB:
- return Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
+ result = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
+ break;
case CURRENT_CONT:
- {
- PMC * const cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
- if (!PMC_IS_NULL(cont) && cont->vtable->base_type ==
- enum_class_RetContinuation)
- return VTABLE_clone(interp, cont);
- return cont;
- }
+ result = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
+ break;
case CURRENT_OBJECT:
- return Parrot_pcc_get_object(interp, CURRENT_CONTEXT(interp));
+ result = Parrot_pcc_get_object(interp, CURRENT_CONTEXT(interp));
+ break;
case CURRENT_LEXPAD:
- return Parrot_pcc_get_lex_pad(interp, CURRENT_CONTEXT(interp));
+ result = Parrot_pcc_get_lex_pad(interp, CURRENT_CONTEXT(interp));
+ break;
default: /* or a warning only? */
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
"illegal argument in interpinfo");
}
+
+ /* Don't send NULL values to P registers */
+ return result ? result : PMCNULL;
}
/*
@@ -323,15 +318,14 @@
ASSERT_ARGS(interpinfo_s)
switch (what) {
case EXECUTABLE_FULLNAME: {
- PMC *exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
+ PMC * const exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
IGLOBALS_EXECUTABLE);
if (PMC_IS_NULL(exe_name))
return string_from_literal(interp, "");
return VTABLE_get_string(interp, exe_name);
}
case EXECUTABLE_BASENAME: {
- STRING *basename;
- PMC *exe_name = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const exe_name = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_EXECUTABLE);
if (PMC_IS_NULL(exe_name))
@@ -339,17 +333,18 @@
else {
/* Need to strip back to what follows the final / or \. */
- STRING * fullname = VTABLE_get_string(interp, exe_name);
+ STRING * const fullname = VTABLE_get_string(interp, exe_name);
char * const fullname_c = Parrot_str_to_cstring(interp, fullname);
int pos = strlen(fullname_c) - 1;
+ STRING *basename;
while (pos > 0
&& fullname_c[pos] != '/'
&& fullname_c[pos] != '\\')
- pos--;
+ --pos;
if (pos > 0)
- pos++;
+ ++pos;
basename = Parrot_str_new(interp, fullname_c + pos, 0);
Parrot_str_free_cstring(fullname_c);
Modified: branches/ops_pct/src/io/api.c
==============================================================================
--- branches/ops_pct/src/io/api.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/api.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -28,6 +28,7 @@
*/
#include "parrot/parrot.h"
+#include "parrot/extend.h"
#include "io_private.h"
#include "api.str"
#include "pmc/pmc_filehandle.h"
@@ -122,25 +123,24 @@
ASSERT_ARGS(Parrot_io_open)
PMC *new_filehandle, *filehandle;
INTVAL flags;
+ const INTVAL typenum = Parrot_get_ctx_HLL_type(interp,
+ Parrot_PMC_typenum(interp, "FileHandle"));
if (PMC_IS_NULL(pmc)) {
- /* TODO: We should look up the HLL mapped type, instead of always
- using FileHandle here */
- new_filehandle = Parrot_pmc_new(interp, enum_class_FileHandle);
- PARROT_ASSERT(new_filehandle->vtable->base_type == enum_class_FileHandle);
+ new_filehandle = Parrot_pmc_new(interp, typenum);
}
else
new_filehandle = pmc;
flags = Parrot_io_parse_open_flags(interp, mode);
- if (new_filehandle->vtable->base_type == enum_class_FileHandle) {
+ if (new_filehandle->vtable->base_type == typenum) {
/* TODO: StringHandle may have a null path, but a filehandle really
shouldn't allow that. */
- PARROT_ASSERT(new_filehandle->vtable->base_type == enum_class_FileHandle);
+ PARROT_ASSERT(new_filehandle->vtable->base_type == typenum);
filehandle = PIO_OPEN(interp, new_filehandle, path, flags);
if (PMC_IS_NULL(filehandle))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
"Unable to open filehandle from path '%S'", path);
- PARROT_ASSERT(filehandle->vtable->base_type == enum_class_FileHandle);
+ PARROT_ASSERT(filehandle->vtable->base_type == typenum);
SETATTR_FileHandle_flags(interp, new_filehandle, flags);
SETATTR_FileHandle_filename(interp, new_filehandle, path);
SETATTR_FileHandle_mode(interp, new_filehandle, mode);
@@ -179,9 +179,8 @@
{
ASSERT_ARGS(Parrot_io_fdopen)
PMC *new_filehandle;
- INTVAL flags;
+ const INTVAL flags = Parrot_io_parse_open_flags(interp, sflags);
- flags = Parrot_io_parse_open_flags(interp, sflags);
if (!flags)
return PMCNULL;
@@ -349,7 +348,7 @@
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
"Cannot read from a closed or non-readable filehandle");
- result = Parrot_io_make_string(interp, &result, length);
+ result = Parrot_str_new_noinit(interp, enum_stringrep_one, length);
result->bufused = length;
if (Parrot_io_is_encoding(interp, pmc, CONST_STRING(interp, "utf8")))
@@ -367,11 +366,10 @@
"Cannot read from a closed filehandle");
if (length == 0)
- result = Parrot_str_copy(interp, string_orig);
+ result = string_orig;
else {
- INTVAL orig_length, read_length;
- read_length = length;
- orig_length = Parrot_str_byte_length(interp, string_orig);
+ INTVAL read_length = length;
+ const INTVAL orig_length = Parrot_str_byte_length(interp, string_orig);
GETATTR_StringHandle_read_offset(interp, pmc, offset);
@@ -379,8 +377,7 @@
if (offset + read_length > orig_length)
read_length = orig_length - offset;
- result = Parrot_str_substr(interp, string_orig, offset,
- read_length, NULL, 0);
+ result = Parrot_str_substr(interp, string_orig, offset, read_length);
SETATTR_StringHandle_read_offset(interp, pmc, offset + read_length);
}
}
@@ -438,8 +435,7 @@
else
read_length = newline_pos - offset + 1; /* +1 to include the newline */
- result = Parrot_str_substr(interp, result, offset,
- read_length, NULL, 0);
+ result = Parrot_str_substr(interp, result, offset, read_length);
SETATTR_StringHandle_read_offset(interp, pmc, newline_pos + 1);
}
else
@@ -464,14 +460,13 @@
Parrot_io_write(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(const void *buffer), size_t length)
{
ASSERT_ARGS(Parrot_io_write)
- DECL_CONST_CAST;
INTVAL result;
STRING *s;
if (PMC_IS_NULL(pmc))
return -1;
- s = Parrot_str_new(interp, (char *) PARROT_const_cast(void *, buffer), length);
+ s = Parrot_str_new(interp, (const char *)buffer, length);
result = Parrot_io_putps(interp, pmc, s);
return result;
@@ -905,7 +900,7 @@
=item C<PIOOFF_T Parrot_io_make_offset_pmc(PARROT_INTERP, PMC *pmc)>
-Returns the return value of the C<get_integer> vtable method on C<*pmc>.
+Returns the return value of the C<get_integer> vtable on C<*pmc>.
=cut
Modified: branches/ops_pct/src/io/buffer.c
==============================================================================
--- branches/ops_pct/src/io/buffer.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/buffer.c Wed May 5 08:45:29 2010 (r46302)
@@ -228,14 +228,13 @@
Parrot_io_fill_readbuf(PARROT_INTERP, ARGMOD(PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_fill_readbuf)
- size_t got;
- STRING fake;
- STRING *s = &fake;
PIOOFF_T pos = Parrot_io_get_file_position(interp, filehandle);
-
- Buffer_bufstart(s) = Parrot_io_get_buffer_start(interp, filehandle);
- fake.bufused = Parrot_io_get_buffer_size(interp, filehandle);
- got = PIO_READ(interp, filehandle, &s);
+ char *buf = (char *) Parrot_io_get_buffer_start(interp, filehandle);
+ size_t size = Parrot_io_get_buffer_size(interp, filehandle);
+ STRING *s = Parrot_str_new_init(interp, buf, size,
+ PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
+ PObj_external_FLAG);
+ size_t got = PIO_READ(interp, filehandle, &s);
/* buffer-filling does not change fileposition */
Parrot_io_set_file_position(interp, filehandle, pos);
@@ -267,9 +266,10 @@
*/
+PARROT_WARN_UNUSED_RESULT
size_t
Parrot_io_read_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle),
- ARGIN(STRING **buf))
+ ARGMOD(STRING **buf))
{
ASSERT_ARGS(Parrot_io_read_buffer)
unsigned char *out_buf, *buffer_start, *buffer_next, *buffer_end;
@@ -292,17 +292,11 @@
if (Parrot_io_get_flags(interp, filehandle) & PIO_F_LINEBUF)
return Parrot_io_readline_buffer(interp, filehandle, buf);
- if (*buf == NULL) {
- *buf = Parrot_gc_new_string_header(interp, 0);
- (*buf)->bufused = len = 2048;
- }
-
- s = *buf;
- len = s->bufused;
-
- if (!s->strstart)
- Parrot_gc_allocate_string_storage(interp, s, len);
+ if (*buf == NULL)
+ *buf = Parrot_str_new_noinit(interp, enum_stringrep_one, 2048);
+ s = *buf;
+ len = s->bufused;
out_buf = (unsigned char *)s->strstart;
/* read Data from buffer */
@@ -343,11 +337,9 @@
size_t got;
if (len >= Parrot_io_get_buffer_size(interp, filehandle)) {
- STRING fake;
- STRING *sf = &fake;
-
- Buffer_bufstart(sf) = (char *)out_buf;
- fake.bufused = len;
+ STRING *sf = Parrot_str_new_init(interp, (char *)out_buf, len,
+ PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
+ PObj_external_FLAG);
got = PIO_READ(interp, filehandle, &sf);
s->strlen = s->bufused = current + got;
@@ -357,11 +349,6 @@
}
got = Parrot_io_fill_readbuf(interp, filehandle);
-
- /* got is never < 0, but C's type system can't tell */
- if (got < 0)
- got = 0;
-
len = (len < got) ? len : got;
}
@@ -461,6 +448,7 @@
*/
+PARROT_WARN_UNUSED_RESULT
size_t
Parrot_io_readline_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGOUT(STRING **buf))
{
@@ -493,7 +481,7 @@
buf_start = buffer_next;
for (l = 0; buffer_next < buffer_end;) {
- l++;
+ ++l;
if (io_is_end_of_line((char *)buffer_next)) {
Parrot_io_set_buffer_next(interp, filehandle, ++buffer_next);
break;
@@ -555,8 +543,8 @@
/*
-=item C<size_t Parrot_io_write_buffer(PARROT_INTERP, PMC *filehandle, STRING
-*s)>
+=item C<size_t Parrot_io_write_buffer(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
The buffer layer's C<Write> function.
@@ -565,7 +553,7 @@
*/
size_t
-Parrot_io_write_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(STRING *s))
+Parrot_io_write_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_io_write_buffer)
unsigned char * const buffer_start = Parrot_io_get_buffer_start(interp, filehandle);
Modified: branches/ops_pct/src/io/core.c
==============================================================================
--- branches/ops_pct/src/io/core.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/core.c Wed May 5 08:45:29 2010 (r46302)
@@ -124,7 +124,7 @@
/* this was i < PIO_NR_OPEN, but only standard handles 0..2 need
* to be kept alive AFAIK -leo
*/
- for (i = 0; i < 3; i++) {
+ for (i = 0; i < 3; ++i) {
Parrot_gc_mark_PMC_alive(interp, table[i]);
}
}
Modified: branches/ops_pct/src/io/filehandle.c
==============================================================================
--- branches/ops_pct/src/io/filehandle.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/filehandle.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -27,7 +27,8 @@
=over 4
-=item C<INTVAL Parrot_io_parse_open_flags(PARROT_INTERP, STRING *mode_str)>
+=item C<INTVAL Parrot_io_parse_open_flags(PARROT_INTERP, const STRING
+*mode_str)>
Parses a Parrot string for file open mode flags (C<r> for read, C<w> for write,
C<a> for append, and C<p> for pipe) and returns the combined generic bit flags.
@@ -39,7 +40,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL
-Parrot_io_parse_open_flags(PARROT_INTERP, ARGIN_NULLOK(STRING *mode_str))
+Parrot_io_parse_open_flags(PARROT_INTERP, ARGIN_NULLOK(const STRING *mode_str))
{
ASSERT_ARGS(Parrot_io_parse_open_flags)
INTVAL i, mode_len;
@@ -51,7 +52,7 @@
mode_len = Parrot_str_byte_length(interp, mode_str);
for (i = 0; i < mode_len; ++i) {
- INTVAL s = Parrot_str_indexed(interp, mode_str, i);
+ const INTVAL s = Parrot_str_indexed(interp, mode_str, i);
switch (s) {
case 'r':
flags |= PIO_F_READ;
@@ -124,7 +125,7 @@
return *buf;
}
else {
- STRING *s = *buf;
+ STRING * const s = *buf;
if (s->bufused < len)
Parrot_gc_reallocate_string_storage(interp, s, len);
return s;
@@ -154,7 +155,7 @@
PARROT_EXPORT
void
-Parrot_io_set_os_handle(SHIM_INTERP, ARGIN(PMC *filehandle), PIOHANDLE file_descriptor)
+Parrot_io_set_os_handle(SHIM_INTERP, ARGMOD(PMC *filehandle), PIOHANDLE file_descriptor)
{
ASSERT_ARGS(Parrot_io_set_os_handle)
PARROT_FILEHANDLE(filehandle)->os_handle = file_descriptor;
@@ -162,7 +163,7 @@
/*
-=item C<PIOHANDLE Parrot_io_get_os_handle(PARROT_INTERP, PMC *filehandle)>
+=item C<PIOHANDLE Parrot_io_get_os_handle(PARROT_INTERP, const PMC *filehandle)>
Retrieve the C<os_handle> attribute of the FileHandle object, which stores the
low-level filehandle for the OS.
@@ -177,8 +178,9 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PIOHANDLE
-Parrot_io_get_os_handle(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_os_handle(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_os_handle)
return PARROT_FILEHANDLE(filehandle)->os_handle;
@@ -205,7 +207,7 @@
Parrot_io_set_flags(SHIM_INTERP, ARGIN(PMC *filehandle), INTVAL flags)
{
ASSERT_ARGS(Parrot_io_set_flags)
- Parrot_FileHandle_attributes *handle_struct = PARROT_FILEHANDLE(filehandle);
+ Parrot_FileHandle_attributes * const handle_struct = PARROT_FILEHANDLE(filehandle);
handle_struct->flags = flags;
}
@@ -304,7 +306,7 @@
*/
void
-Parrot_io_set_buffer_start(SHIM_INTERP, ARGIN(PMC *filehandle),
+Parrot_io_set_buffer_start(SHIM_INTERP, ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_start))
{
ASSERT_ARGS(Parrot_io_set_buffer_start)
@@ -329,6 +331,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
unsigned char *
Parrot_io_get_buffer_start(SHIM_INTERP, ARGIN(PMC *filehandle))
@@ -339,7 +342,7 @@
/*
-=item C<unsigned char * Parrot_io_get_buffer_next(PARROT_INTERP, PMC
+=item C<unsigned char * Parrot_io_get_buffer_next(PARROT_INTERP, const PMC
*filehandle)>
Get the C<buffer_next> attribute of the FileHandle object, which stores
@@ -357,7 +360,7 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
unsigned char *
-Parrot_io_get_buffer_next(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_buffer_next(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_buffer_next)
return PARROT_FILEHANDLE(filehandle)->buffer_next;
@@ -381,7 +384,7 @@
*/
void
-Parrot_io_set_buffer_next(SHIM_INTERP, ARGIN(PMC *filehandle),
+Parrot_io_set_buffer_next(SHIM_INTERP, ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_next))
{
ASSERT_ARGS(Parrot_io_set_buffer_next)
@@ -390,7 +393,7 @@
/*
-=item C<unsigned char * Parrot_io_get_buffer_end(PARROT_INTERP, PMC
+=item C<unsigned char * Parrot_io_get_buffer_end(PARROT_INTERP, const PMC
*filehandle)>
Get the C<buffer_end> attribute of the FileHandle object, which stores
@@ -406,9 +409,10 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
unsigned char *
-Parrot_io_get_buffer_end(SHIM_INTERP, ARGIN_NULLOK(PMC *filehandle))
+Parrot_io_get_buffer_end(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_buffer_end)
return PARROT_FILEHANDLE(filehandle)->buffer_end;
@@ -432,7 +436,7 @@
*/
void
-Parrot_io_set_buffer_end(SHIM_INTERP, ARGIN(PMC *filehandle),
+Parrot_io_set_buffer_end(SHIM_INTERP, ARGMOD(PMC *filehandle),
ARGIN_NULLOK(unsigned char *new_end))
{
ASSERT_ARGS(Parrot_io_set_buffer_end)
@@ -441,7 +445,7 @@
/*
-=item C<INTVAL Parrot_io_get_buffer_flags(PARROT_INTERP, PMC *filehandle)>
+=item C<INTVAL Parrot_io_get_buffer_flags(PARROT_INTERP, const PMC *filehandle)>
Get the C<buffer_flags> attribute of the FileHandle object, which stores
a collection of flags specific to the buffer.
@@ -457,7 +461,7 @@
PARROT_CAN_RETURN_NULL
INTVAL
-Parrot_io_get_buffer_flags(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_buffer_flags(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_buffer_flags)
return PARROT_FILEHANDLE(filehandle)->buffer_flags;
@@ -481,7 +485,7 @@
*/
void
-Parrot_io_set_buffer_flags(SHIM_INTERP, ARGIN(PMC *filehandle), INTVAL new_flags)
+Parrot_io_set_buffer_flags(SHIM_INTERP, ARGMOD(PMC *filehandle), INTVAL new_flags)
{
ASSERT_ARGS(Parrot_io_set_buffer_flags)
PARROT_FILEHANDLE(filehandle)->buffer_flags = new_flags;
@@ -489,7 +493,7 @@
/*
-=item C<size_t Parrot_io_get_buffer_size(PARROT_INTERP, PMC *filehandle)>
+=item C<size_t Parrot_io_get_buffer_size(PARROT_INTERP, const PMC *filehandle)>
Get the C<buffer_size> attribute of the FileHandle object, which stores
the size of the buffer (in bytes).
@@ -504,8 +508,9 @@
*/
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
size_t
-Parrot_io_get_buffer_size(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_buffer_size(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_buffer_size)
return PARROT_FILEHANDLE(filehandle)->buffer_size;
@@ -529,7 +534,7 @@
*/
void
-Parrot_io_set_buffer_size(SHIM_INTERP, ARGIN(PMC *filehandle), size_t new_size)
+Parrot_io_set_buffer_size(SHIM_INTERP, ARGMOD(PMC *filehandle), size_t new_size)
{
ASSERT_ARGS(Parrot_io_set_buffer_size)
PARROT_FILEHANDLE(filehandle)->buffer_size = new_size;
@@ -552,7 +557,7 @@
PARROT_CAN_RETURN_NULL
void
-Parrot_io_clear_buffer(PARROT_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_clear_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_clear_buffer)
Parrot_FileHandle_attributes * const io = PARROT_FILEHANDLE(filehandle);
@@ -564,7 +569,8 @@
/*
-=item C<PIOOFF_T Parrot_io_get_file_position(PARROT_INTERP, PMC *filehandle)>
+=item C<PIOOFF_T Parrot_io_get_file_position(PARROT_INTERP, const PMC
+*filehandle)>
Get the C<file_pos> attribute of the FileHandle object, which stores
the current file position of the filehandle.
@@ -579,8 +585,9 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PIOOFF_T
-Parrot_io_get_file_position(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_file_position(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_file_position)
return PARROT_FILEHANDLE(filehandle)->file_pos;
@@ -588,7 +595,7 @@
/*
-=item C<PIOOFF_T Parrot_io_get_last_file_position(PARROT_INTERP, PMC
+=item C<PIOOFF_T Parrot_io_get_last_file_position(PARROT_INTERP, const PMC
*filehandle)>
Get the C<file_pos> attribute of the FileHandle object, which stores
@@ -604,8 +611,9 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
PIOOFF_T
-Parrot_io_get_last_file_position(SHIM_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_get_last_file_position(SHIM_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_get_last_file_position)
return PARROT_FILEHANDLE(filehandle)->last_pos;
@@ -631,7 +639,7 @@
PARROT_EXPORT
void
-Parrot_io_set_file_position(SHIM_INTERP, ARGIN(PMC *filehandle), PIOOFF_T file_pos)
+Parrot_io_set_file_position(SHIM_INTERP, ARGMOD(PMC *filehandle), PIOOFF_T file_pos)
{
ASSERT_ARGS(Parrot_io_set_file_position)
Parrot_FileHandle_attributes * const handle_struct = PARROT_FILEHANDLE(filehandle);
@@ -641,8 +649,8 @@
/*
-=item C<INTVAL Parrot_io_is_encoding(PARROT_INTERP, PMC *filehandle, STRING
-*value)>
+=item C<INTVAL Parrot_io_is_encoding(PARROT_INTERP, const PMC *filehandle,
+STRING *value)>
Check whether the encoding attribute of the filehandle matches a passed in
string.
@@ -659,7 +667,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL
-Parrot_io_is_encoding(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(STRING *value))
+Parrot_io_is_encoding(PARROT_INTERP, ARGIN(const PMC *filehandle), ARGIN(STRING *value))
{
ASSERT_ARGS(Parrot_io_is_encoding)
Parrot_FileHandle_attributes * const handle_struct = PARROT_FILEHANDLE(filehandle);
@@ -704,7 +712,7 @@
/*
-=item C<INTVAL Parrot_io_is_closed_filehandle(PARROT_INTERP, PMC *pmc)>
+=item C<INTVAL Parrot_io_is_closed_filehandle(PARROT_INTERP, const PMC *pmc)>
Test whether a filehandle is closed.
@@ -713,8 +721,9 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL
-Parrot_io_is_closed_filehandle(PARROT_INTERP, ARGMOD(PMC *pmc))
+Parrot_io_is_closed_filehandle(PARROT_INTERP, ARGIN(const PMC *pmc))
{
ASSERT_ARGS(Parrot_io_is_closed_filehandle)
return PIO_IS_CLOSED(interp, pmc);
Modified: branches/ops_pct/src/io/portable.c
==============================================================================
--- branches/ops_pct/src/io/portable.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/portable.c Wed May 5 08:45:29 2010 (r46302)
@@ -349,7 +349,7 @@
*/
INTVAL
-Parrot_io_flush_portable(SHIM_INTERP, SHIM(PMC *filehandle))
+Parrot_io_flush_portable(SHIM_INTERP, ARGIN(PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_flush_portable)
return fflush((FILE *)Parrot_io_get_os_handle(interp, filehandle));
@@ -369,7 +369,7 @@
*/
size_t
-Parrot_io_read_portable(PARROT_INTERP, SHIM(PMC *filehandle),
+Parrot_io_read_portable(PARROT_INTERP, ARGIN(PMC *filehandle),
ARGIN(STRING **buf))
{
ASSERT_ARGS(Parrot_io_read_portable)
@@ -393,8 +393,8 @@
/*
-=item C<size_t Parrot_io_write_portable(PARROT_INTERP, PMC *filehandle, STRING
-*s)>
+=item C<size_t Parrot_io_write_portable(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
Writes the given STRING to the provided IO PMC.
@@ -403,10 +403,10 @@
*/
size_t
-Parrot_io_write_portable(PARROT_INTERP, ARGIN(PMC *filehandle), ARGMOD(STRING *s))
+Parrot_io_write_portable(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_io_write_portable)
- void * const buffer = s->strstart;
+ const void * const buffer = s->strstart;
return fwrite(buffer, 1, s->bufused,
(FILE *)Parrot_io_get_os_handle(interp, filehandle));
}
@@ -424,15 +424,15 @@
*/
PIOOFF_T
-Parrot_io_seek_portable(PARROT_INTERP, ARGMOD(PMC *filehandle),
- PIOOFF_T offset, INTVAL whence)
+Parrot_io_seek_portable(PARROT_INTERP, ARGMOD(PMC *filehandle), PIOOFF_T offset, INTVAL whence)
{
ASSERT_ARGS(Parrot_io_seek_portable)
- PIOOFF_T pos;
errno = 0;
- if ((pos = fseek((FILE *)Parrot_io_get_os_handle(interp, filehandle),
- (long)offset, whence)) >= 0)
+ const PIOOFF_T pos = fseek(
+ (FILE *)Parrot_io_get_os_handle(interp, filehandle), (long)offset, whence);
+
+ if (pos >= 0)
Parrot_io_set_file_position(interp, filehandle, pos);
/* Seek clears EOF */
Modified: branches/ops_pct/src/io/socket_api.c
==============================================================================
--- branches/ops_pct/src/io/socket_api.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/socket_api.c Wed May 5 08:45:29 2010 (r46302)
@@ -190,6 +190,7 @@
PIO_F_SOCKET|PIO_F_READ|PIO_F_WRITE);
else
new_socket = socket;
+ /* XXX new_socket is assigned, but never used. Probably a bug? */
return PIO_SOCKET(interp, socket, fam, type, proto);
}
Modified: branches/ops_pct/src/io/socket_unix.c
==============================================================================
--- branches/ops_pct/src/io/socket_unix.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/socket_unix.c Wed May 5 08:45:29 2010 (r46302)
@@ -395,7 +395,7 @@
This is not equivalent to any specific POSIX or BSD socket call, but
it is a useful, common primitive.
-Not at all usefule --leo.
+Not at all useful --leo.
Also, a buffering layer above this may choose to reimplement by checking
the read buffer.
Modified: branches/ops_pct/src/io/socket_win32.c
==============================================================================
--- branches/ops_pct/src/io/socket_win32.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/socket_win32.c Wed May 5 08:45:29 2010 (r46302)
@@ -77,9 +77,10 @@
Parrot_io_socket_win32(PARROT_INTERP, ARGIN(PMC * s), int fam, int type, int proto)
{
ASSERT_ARGS(Parrot_io_socket_win32)
- int i = 1;
+
const int sock = socket(fam, type, proto);
if (sock >= 0) {
+ int i = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&i, sizeof (i));
Parrot_io_set_os_handle(interp, s, sock);
SOCKADDR_REMOTE(s)->sin_family = fam;
@@ -102,7 +103,7 @@
Parrot_io_connect_win32(PARROT_INTERP, ARGMOD(PMC *socket), ARGIN(PMC *r))
{
ASSERT_ARGS(Parrot_io_connect_win32)
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
if (!r)
return -1;
@@ -141,7 +142,7 @@
Parrot_io_bind_win32(PARROT_INTERP, ARGMOD(PMC *socket), ARGMOD(PMC *sockaddr))
{
ASSERT_ARGS(Parrot_io_bind_win32)
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
struct sockaddr_in * saddr;
if (!sockaddr)
@@ -174,7 +175,7 @@
Parrot_io_listen_win32(SHIM_INTERP, ARGMOD(PMC *socket), INTVAL sec)
{
ASSERT_ARGS(Parrot_io_listen_win32)
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
if ((listen((int)io->os_handle, sec)) == -1) {
return -1;
}
@@ -197,7 +198,7 @@
Parrot_io_accept_win32(PARROT_INTERP, ARGMOD(PMC *socket))
{
ASSERT_ARGS(Parrot_io_accept_win32)
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
PMC * newio = Parrot_io_new_socket_pmc(interp,
PIO_F_SOCKET | PIO_F_READ|PIO_F_WRITE);
Parrot_Socklen_t addrlen = sizeof (struct sockaddr_in);
@@ -240,7 +241,7 @@
{
ASSERT_ARGS(Parrot_io_send_win32)
int error, bytes, byteswrote;
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
bytes = s->bufused;
byteswrote = 0;
@@ -295,7 +296,7 @@
int error;
unsigned int bytesread = 0;
char buf[2048];
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
AGAIN:
if ((error = recv((int)io->os_handle, buf, 2048, 0)) >= 0) {
@@ -342,7 +343,7 @@
This is not equivalent to any specific POSIX or BSD socket call, but
it is a useful, common primitive.
-Not at all usefule --leo.
+Not at all useful --leo.
Also, a buffering layer above this may choose to reimplement by checking
the read buffer.
@@ -359,7 +360,7 @@
int n;
fd_set r, w, e;
struct timeval t;
- Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+ const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
t.tv_sec = sec;
t.tv_usec = usec;
Modified: branches/ops_pct/src/io/unix.c
==============================================================================
--- branches/ops_pct/src/io/unix.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/unix.c Wed May 5 08:45:29 2010 (r46302)
@@ -305,7 +305,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
PMC *
-Parrot_io_fdopen_unix(PARROT_INTERP, ARGMOD(PMC *filehandle), PIOHANDLE fd, INTVAL flags)
+Parrot_io_fdopen_unix(PARROT_INTERP, ARGMOD_NULLOK(PMC *filehandle), PIOHANDLE fd, INTVAL flags)
{
ASSERT_ARGS(Parrot_io_fdopen_unix)
if (io_is_tty_unix(fd))
@@ -388,7 +388,7 @@
/*
-=item C<INTVAL Parrot_io_is_closed_unix(PARROT_INTERP, PMC *filehandle)>
+=item C<INTVAL Parrot_io_is_closed_unix(PARROT_INTERP, const PMC *filehandle)>
Test whether the filehandle has been closed.
@@ -397,7 +397,7 @@
*/
INTVAL
-Parrot_io_is_closed_unix(PARROT_INTERP, ARGIN(PMC *filehandle))
+Parrot_io_is_closed_unix(PARROT_INTERP, ARGIN(const PMC *filehandle))
{
ASSERT_ARGS(Parrot_io_is_closed_unix)
if (Parrot_io_get_os_handle(interp, filehandle) == -1)
@@ -541,7 +541,8 @@
/*
-=item C<size_t Parrot_io_write_unix(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_unix(PARROT_INTERP, PMC *filehandle, const STRING
+*s)>
Calls C<write()> to write C<len> bytes from the memory starting at
C<buffer> to the file descriptor in C<*io>.
@@ -551,7 +552,7 @@
*/
size_t
-Parrot_io_write_unix(PARROT_INTERP, ARGIN(PMC *filehandle), ARGMOD(STRING *s))
+Parrot_io_write_unix(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_io_write_unix)
const PIOHANDLE file_descriptor = Parrot_io_get_os_handle(interp, filehandle);
@@ -815,8 +816,9 @@
Parrot_io_pipe_unix(SHIM_INTERP, ARGMOD(PIOHANDLE *reader), ARGMOD(PIOHANDLE *writer))
{
ASSERT_ARGS(Parrot_io_pipe_unix)
- int fds[2], rv;
- rv = pipe(fds);
+ int fds[2];
+ const int rv = pipe(fds);
+
if (rv >= 0) {
*reader = fds[0];
*writer = fds[1];
Modified: branches/ops_pct/src/io/utf8.c
==============================================================================
--- branches/ops_pct/src/io/utf8.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/utf8.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -73,19 +73,20 @@
goto ok;
/* need len - 1 more chars */
- len2--;
- s2 = NULL;
- s2 = Parrot_io_make_string(interp, &s2, len2);
+ --len2;
+ s2 = Parrot_str_new_init(interp, NULL, len2, Parrot_utf8_encoding_ptr,
+ Parrot_unicode_charset_ptr, 0);
s2->bufused = len2;
- s2->charset = Parrot_unicode_charset_ptr;
- s2->encoding = Parrot_utf8_encoding_ptr;
/* TT #1257: need to check the amount read here? */
read = Parrot_io_read_buffer(interp, filehandle, &s2);
UNUSED(read);
s->strlen = iter.charpos;
- s = Parrot_str_append(interp, s, s2);
+ s = Parrot_str_concat(interp, s, s2);
+ /* String is updated. Poke into iterator to replace old string */
+ iter.str = s;
+ *buf = s;
len += len2 + 1;
/* check last char */
@@ -100,7 +101,8 @@
/*
-=item C<size_t Parrot_io_write_utf8(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_utf8(PARROT_INTERP, PMC *filehandle, const STRING
+*s)>
Write a Parrot string to a filehandle in UTF-8 format.
@@ -109,8 +111,7 @@
*/
size_t
-Parrot_io_write_utf8(PARROT_INTERP, ARGMOD(PMC *filehandle),
- ARGMOD(STRING *s))
+Parrot_io_write_utf8(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_io_write_utf8)
STRING *dest;
@@ -118,8 +119,7 @@
if (s->encoding == Parrot_utf8_encoding_ptr)
return Parrot_io_write_buffer(interp, filehandle, s);
- dest = Parrot_utf8_encoding_ptr->to_encoding(interp, s,
- Parrot_gc_new_string_header(interp, 0));
+ dest = Parrot_utf8_encoding_ptr->to_encoding(interp, s);
return Parrot_io_write_buffer(interp, filehandle, dest);
}
@@ -134,10 +134,6 @@
F<src/io/io_layers.c>,
F<src/io/io_private.h>.
-=head1 HISTORY
-
-Initially written by Leo.
-
=cut
*/
Modified: branches/ops_pct/src/io/win32.c
==============================================================================
--- branches/ops_pct/src/io/win32.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/io/win32.c Wed May 5 08:45:29 2010 (r46302)
@@ -472,7 +472,8 @@
/*
-=item C<size_t Parrot_io_write_win32(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_win32(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
Calls C<WriteFile()> to write C<len> bytes from the memory starting at
C<buffer> to C<*io>'s file descriptor. Returns C<(size_t)-1> on
@@ -483,9 +484,7 @@
*/
size_t
-Parrot_io_write_win32(PARROT_INTERP,
- ARGIN(PMC *filehandle),
- ARGIN(STRING *s))
+Parrot_io_write_win32(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_io_write_win32)
DWORD countwrote = 0;
@@ -660,8 +659,8 @@
if (comspec == NULL)
comspec = "cmd";
auxcomm = Parrot_str_new(interp, comspec, 0);
- auxcomm = Parrot_str_append(interp, auxcomm, Parrot_str_new(interp, " /c ", 0));
- auxcomm = Parrot_str_append(interp, auxcomm, command);
+ auxcomm = Parrot_str_concat(interp, auxcomm, Parrot_str_new(interp, " /c ", 0));
+ auxcomm = Parrot_str_concat(interp, auxcomm, command);
cmd = Parrot_str_to_cstring(interp, auxcomm);
start.cb = sizeof start;
GetStartupInfo(&start);
Modified: branches/ops_pct/src/key.c
==============================================================================
--- branches/ops_pct/src/key.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/key.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -301,6 +301,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL
key_type(SHIM_INTERP, ARGIN(const PMC *key))
@@ -443,19 +444,13 @@
{
STRING *s;
GETATTR_Key_str_key(interp, key, s);
- if (s)
- s = Parrot_str_new_COW(interp, s);
return s;
}
case KEY_string_FLAG | KEY_register_FLAG:
{
INTVAL int_key;
- STRING *s;
GETATTR_Key_int_key(interp, key, int_key);
- s = REG_STR(interp, int_key);
- if (s)
- s = Parrot_str_new_COW(interp, s);
- return s;
+ return REG_STR(interp, int_key);
}
case KEY_pmc_FLAG | KEY_register_FLAG:
{
@@ -543,9 +538,9 @@
key_next(PARROT_INTERP, ARGIN(PMC *key))
{
ASSERT_ARGS(key_next)
- PMC *next_key;
if (VTABLE_isa(interp, key, CONST_STRING(interp, "Key"))) {
+ PMC *next_key;
GETATTR_Key_next_key(interp, key, next_key);
return next_key;
}
@@ -655,65 +650,65 @@
switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
case KEY_integer_FLAG:
GETATTR_Key_int_key(interp, key, int_key);
- value = Parrot_str_append(interp, value,
- Parrot_str_from_int(interp, int_key));
+ value = Parrot_str_concat(interp, value,
+ Parrot_str_from_int(interp, int_key));
break;
case KEY_number_FLAG:
GETATTR_Key_int_key(interp, key, int_key);
- value = Parrot_str_append(interp, value,
- Parrot_str_from_num(interp, (FLOATVAL)int_key));
+ value = Parrot_str_concat(interp, value,
+ Parrot_str_from_num(interp, (FLOATVAL)int_key));
break;
case KEY_string_FLAG:
GETATTR_Key_str_key(interp, key, str_key);
- value = Parrot_str_append(interp, value, quote);
- value = Parrot_str_append(interp, value, str_key);
- value = Parrot_str_append(interp, value, quote);
+ value = Parrot_str_concat(interp, value, quote);
+ value = Parrot_str_concat(interp, value, str_key);
+ value = Parrot_str_concat(interp, value, quote);
break;
case KEY_pmc_FLAG:
- value = Parrot_str_append(interp, value,
- VTABLE_get_string(interp, key));
+ value = Parrot_str_concat(interp, value,
+ VTABLE_get_string(interp, key));
break;
case KEY_integer_FLAG | KEY_register_FLAG:
GETATTR_Key_int_key(interp, key, int_key);
- value = Parrot_str_append(interp, value,
+ value = Parrot_str_concat(interp, value,
Parrot_str_from_int(interp,
REG_INT(interp, int_key)));
break;
case KEY_number_FLAG | KEY_register_FLAG:
GETATTR_Key_int_key(interp, key, int_key);
- value = Parrot_str_append(interp, value,
+ value = Parrot_str_concat(interp, value,
Parrot_str_from_num(interp,
REG_NUM(interp, int_key)));
break;
case KEY_string_FLAG | KEY_register_FLAG:
- value = Parrot_str_append(interp, value, quote);
+ value = Parrot_str_concat(interp, value, quote);
GETATTR_Key_int_key(interp, key, int_key);
- value = Parrot_str_append(interp, value,
+ value = Parrot_str_concat(interp, value,
REG_STR(interp, int_key));
- value = Parrot_str_append(interp, value, quote);
+ value = Parrot_str_concat(interp, value, quote);
break;
case KEY_pmc_FLAG | KEY_register_FLAG:
{
PMC *reg;
GETATTR_Key_int_key(interp, key, int_key);
reg = REG_PMC(interp, int_key);
- value = Parrot_str_append(interp, value,
- VTABLE_get_string(interp, reg));
+ value = Parrot_str_concat(interp, value,
+ VTABLE_get_string(interp, reg));
}
break;
default:
- value = Parrot_str_append(interp, value, CONST_STRING(interp, "Key type unknown"));
+ value = Parrot_str_concat(interp, value, CONST_STRING(interp, "Key type unknown"));
break;
}
GETATTR_Key_next_key(interp, key, next_key);
if (next_key)
- value = Parrot_str_append(interp, value, semicolon);
+ value = Parrot_str_concat(interp, value, semicolon);
GETATTR_Key_next_key(interp, key, key);
}
- value = Parrot_str_append(interp, value, Parrot_str_new(interp, " ]", 2));
+ value = Parrot_str_concat(interp, value, Parrot_str_new(interp, " ]", 2));
return value;
}
@@ -725,10 +720,6 @@
F<include/parrot/key.h>.
-=head1 HISTORY
-
-Initial version by Jeff G. on 2001.12.05.
-
=cut
*/
Modified: branches/ops_pct/src/library.c
==============================================================================
--- branches/ops_pct/src/library.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/library.c Wed May 5 08:45:29 2010 (r46302)
@@ -168,9 +168,8 @@
(INTVAL)IGLOBALS_CONFIG_HASH);
/* create the lib_paths array */
- PMC * const lib_paths = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
-
- VTABLE_set_integer_native(interp, lib_paths, PARROT_LIB_PATH_SIZE);
+ PMC * const lib_paths = Parrot_pmc_new_init_int(interp,
+ enum_class_FixedPMCArray, PARROT_LIB_PATH_SIZE);
VTABLE_set_pmc_keyed_int(interp, iglobals,
IGLOBALS_LIB_PATHS, lib_paths);
@@ -182,7 +181,7 @@
versionlib = VTABLE_get_string_keyed_str(interp, config_hash, libkey);
entry = VTABLE_get_string_keyed_str(interp, config_hash, verkey);
- versionlib = Parrot_str_append(interp, versionlib, entry);
+ versionlib = Parrot_str_concat(interp, versionlib, entry);
if (!VTABLE_get_integer_keyed_str(interp, config_hash, installed))
builddir = VTABLE_get_string_keyed_str(interp,
@@ -194,32 +193,47 @@
paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
VTABLE_set_pmc_keyed_int(interp, lib_paths,
PARROT_LIB_PATH_INCLUDE, paths);
+ { /* EXPERIMENTAL: add include path from environment */
+ const char *envvar = Parrot_getenv(interp,
+ Parrot_str_new_constant(interp, "PARROT_INCLUDE"));
+ if (envvar != NULL && envvar[0]) {
+ entry = Parrot_str_new(interp, envvar, 0);
+ VTABLE_push_string(interp, paths, entry);
+ }
+ }
if (!STRING_IS_NULL(builddir)) {
- entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/"), 0);
+ entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/"));
VTABLE_push_string(interp, paths, entry);
- entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/include/"), 0);
+ entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/include/"));
VTABLE_push_string(interp, paths, entry);
}
entry = CONST_STRING(interp, "./");
VTABLE_push_string(interp, paths, entry);
if (!STRING_IS_NULL(versionlib)) {
- entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/include/"), 0);
+ entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/include/"));
VTABLE_push_string(interp, paths, entry);
}
-
/* define library paths */
paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
VTABLE_set_pmc_keyed_int(interp, lib_paths,
PARROT_LIB_PATH_LIBRARY, paths);
+ { /* EXPERIMENTAL: add library path from environment */
+ const char *envvar = Parrot_getenv(interp,
+ Parrot_str_new_constant(interp, "PARROT_LIBRARY"));
+ if (envvar != NULL && envvar[0]) {
+ entry = Parrot_str_new(interp, envvar, 0);
+ VTABLE_push_string(interp, paths, entry);
+ }
+ }
if (!STRING_IS_NULL(builddir)) {
- entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/library/"), 0);
+ entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/library/"));
VTABLE_push_string(interp, paths, entry);
}
entry = CONST_STRING(interp, "./");
VTABLE_push_string(interp, paths, entry);
if (!STRING_IS_NULL(versionlib)) {
- entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/library/"), 0);
+ entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/library/"));
VTABLE_push_string(interp, paths, entry);
}
@@ -228,13 +242,13 @@
VTABLE_set_pmc_keyed_int(interp, lib_paths,
PARROT_LIB_PATH_LANG, paths);
if (!STRING_IS_NULL(builddir)) {
- entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/languages/"), 0);
+ entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/languages/"));
VTABLE_push_string(interp, paths, entry);
}
entry = CONST_STRING(interp, "./");
VTABLE_push_string(interp, paths, entry);
if (!STRING_IS_NULL(versionlib)) {
- entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/languages/"), 0);
+ entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/languages/"));
VTABLE_push_string(interp, paths, entry);
}
@@ -243,13 +257,13 @@
VTABLE_set_pmc_keyed_int(interp, lib_paths,
PARROT_LIB_PATH_DYNEXT, paths);
if (!STRING_IS_NULL(builddir)) {
- entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/dynext/"), 0);
+ entry = Parrot_str_concat(interp, builddir, CONST_STRING(interp, "/runtime/parrot/dynext/"));
VTABLE_push_string(interp, paths, entry);
}
entry = CONST_STRING(interp, "dynext/");
VTABLE_push_string(interp, paths, entry);
if (!STRING_IS_NULL(versionlib)) {
- entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/dynext/"), 0);
+ entry = Parrot_str_concat(interp, versionlib, CONST_STRING(interp, "/dynext/"));
VTABLE_push_string(interp, paths, entry);
}
@@ -405,9 +419,9 @@
STRING * const nul = string_chr(interp, '\0');
- path = Parrot_str_append(interp, path, nul);
- path->bufused--;
- path->strlen--;
+ path = Parrot_str_concat(interp, path, nul);
+ --path->bufused;
+ --path->strlen;
#ifdef WIN32
cnv_to_win32_filesep(path);
@@ -440,7 +454,7 @@
/* make sure the path has a trailing slash before appending the file */
if (Parrot_str_indexed(interp, path , path->strlen - 1)
!= Parrot_str_indexed(interp, path_separator_string, 0))
- path = Parrot_str_append(interp, path , path_separator_string);
+ path = Parrot_str_concat(interp, path , path_separator_string);
return path;
}
@@ -465,7 +479,7 @@
{
ASSERT_ARGS(path_append)
l_path = path_guarantee_trailing_separator(interp, l_path);
- l_path = Parrot_str_append(interp, l_path, r_path);
+ l_path = Parrot_str_concat(interp, l_path, r_path);
return l_path;
}
@@ -491,9 +505,9 @@
ASSERT_ARGS(path_concat)
STRING* join;
- join = Parrot_str_copy(interp, l_path);
+ join = l_path;
join = path_guarantee_trailing_separator(interp, join);
- join = Parrot_str_append(interp, join, r_path);
+ join = Parrot_str_concat(interp, join, r_path);
return join;
}
@@ -518,9 +532,7 @@
ASSERT_ARGS(try_load_path)
STRING *final;
- final = Parrot_str_copy(interp, path);
-
- final = path_finalize(interp, final);
+ final = path_finalize(interp, path);
if (Parrot_stat_info_intval(interp, final, STAT_EXISTS)) {
return final;
@@ -552,7 +564,7 @@
STRING * const pir_extension = CONST_STRING(interp, ".pir");
STRING * const pasm_extension = CONST_STRING(interp, ".pasm");
- test_path = Parrot_str_copy(interp, path);
+ test_path = path;
/* First try the path as given. */
result = try_load_path(interp, test_path);
@@ -568,11 +580,11 @@
if (!STRING_IS_NULL(test_path)) {
if (Parrot_str_byte_length(interp, test_path) > 4) {
- STRING *orig_ext = Parrot_str_substr(interp, test_path, -4, 4, NULL, 0);
+ STRING *orig_ext = Parrot_str_substr(interp, test_path, -4, 4);
/* First try substituting .pbc for the .pir extension */
if (Parrot_str_equal(interp, orig_ext, pir_extension)) {
STRING * const without_ext = Parrot_str_chopn(interp, test_path, 4);
- test_path = Parrot_str_append(interp, without_ext, bytecode_extension);
+ test_path = Parrot_str_concat(interp, without_ext, bytecode_extension);
result = try_load_path(interp, test_path);
if (result)
return result;
@@ -580,12 +592,12 @@
/* Next try substituting .pir, then .pasm for the .pbc extension */
else if (Parrot_str_equal(interp, orig_ext, bytecode_extension)) {
STRING * const without_ext = Parrot_str_chopn(interp, test_path, 4);
- test_path = Parrot_str_append(interp, without_ext, pir_extension);
+ test_path = Parrot_str_concat(interp, without_ext, pir_extension);
result = try_load_path(interp, test_path);
if (result)
return result;
- test_path = Parrot_str_append(interp, without_ext, pasm_extension);
+ test_path = Parrot_str_concat(interp, without_ext, pasm_extension);
result = try_load_path(interp, test_path);
if (result)
return result;
@@ -595,10 +607,10 @@
/* Finally, try substituting .pbc for the .pasm extension. */
if (Parrot_str_byte_length(interp, test_path) > 5) {
- STRING * const orig_ext = Parrot_str_substr(interp, test_path, -5, 5, NULL, 0);
+ STRING * const orig_ext = Parrot_str_substr(interp, test_path, -5, 5);
if (Parrot_str_equal(interp, orig_ext, pasm_extension)) {
STRING * const without_ext = Parrot_str_chopn(interp, test_path, 5);
- test_path = Parrot_str_append(interp, without_ext, bytecode_extension);
+ test_path = Parrot_str_concat(interp, without_ext, bytecode_extension);
result = try_load_path(interp, test_path);
if (result)
return result;
@@ -703,8 +715,7 @@
STRING * const path = VTABLE_get_string_keyed_int(interp, paths, i);
STRING *found_name;
- full_name = Parrot_str_copy(interp, path);
- full_name = path_append(interp, full_name, file);
+ full_name = path_append(interp, path, file);
found_name =
(type & PARROT_RUNTIME_FT_DYNEXT)
@@ -903,23 +914,22 @@
++pos_dot;
++pos_sl;
if (pos_sl && pos_dot) {
- stem = Parrot_str_substr(interp, in, pos_sl, pos_dot - pos_sl - 1,
- NULL, 0);
- *wo_ext = Parrot_str_substr(interp, in, 0, pos_dot - 1, NULL, 0);
- *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot, NULL, 0);
+ stem = Parrot_str_substr(interp, in, pos_sl, pos_dot - pos_sl - 1);
+ *wo_ext = Parrot_str_substr(interp, in, 0, pos_dot - 1);
+ *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot);
}
else if (pos_dot) {
- stem = Parrot_str_substr(interp, in, 0, pos_dot - 1, NULL, 0);
+ stem = Parrot_str_substr(interp, in, 0, pos_dot - 1);
*wo_ext = stem;
- *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot, NULL, 0);
+ *ext = Parrot_str_substr(interp, in, pos_dot, len - pos_dot);
}
else if (pos_sl) {
- stem = Parrot_str_substr(interp, in, pos_sl, len - pos_sl, NULL, 0);
- *wo_ext = Parrot_str_copy(interp, in);
+ stem = Parrot_str_substr(interp, in, pos_sl, len - pos_sl);
+ *wo_ext = in;
*ext = NULL;
}
else {
- stem = Parrot_str_copy(interp, in);
+ stem = in;
*wo_ext = stem;
*ext = NULL;
}
Modified: branches/ops_pct/src/longopt.c
==============================================================================
--- branches/ops_pct/src/longopt.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/longopt.c Wed May 5 08:45:29 2010 (r46302)
@@ -145,13 +145,13 @@
const struct longopt_opt_decl* dptr;
while (argv[dex][optlen] != '\0' && argv[dex][optlen] != '=') {
- optlen++;
+ ++optlen;
}
- for (dptr = options; dptr->opt_id; dptr++) {
+ for (dptr = options; dptr->opt_id; ++dptr) {
int sptr;
/* For each listed long option... */
- for (sptr = 0; dptr->opt_long[sptr]; sptr++) {
+ for (sptr = 0; dptr->opt_long[sptr]; ++sptr) {
if (strncmp(dptr->opt_long[sptr], argv[dex], optlen) == 0
&& dptr->opt_long[sptr][optlen] == '\0') {
/* Found it */
@@ -246,7 +246,7 @@
info_buf->_shortopt_pos = &argv[dex][1];
pos = info_buf->_shortopt_pos;
- for (dptr = options; dptr->opt_id; dptr++) {
+ for (dptr = options; dptr->opt_id; ++dptr) {
if (dptr->opt_short == *pos) {
/* Found it */
info_buf->opt_id = dptr->opt_id;
Modified: branches/ops_pct/src/main.c
==============================================================================
--- branches/ops_pct/src/main.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/main.c Wed May 5 08:45:29 2010 (r46302)
@@ -42,22 +42,26 @@
static int is_all_hex_digits(ARGIN(const char *s))
__attribute__nonnull__(1);
-static void Parrot_version(PARROT_INTERP)
- __attribute__nonnull__(1);
-
+static void Parrot_version(void);
PARROT_CAN_RETURN_NULL
static const char * parseflags(PARROT_INTERP,
- ARGIN(int *argc),
- ARGIN(char **argv[]),
- ARGIN(Parrot_Run_core_t *core),
- ARGIN(Parrot_trace_flags *trace))
+ ARGMOD(int *argc),
+ ARGMOD(const char **argv[]),
+ ARGMOD(Parrot_Run_core_t *core),
+ ARGMOD(Parrot_trace_flags *trace))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
__attribute__nonnull__(4)
- __attribute__nonnull__(5);
-
-static void parseflags_minimal(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*argc)
+ FUNC_MODIFIES(*argv[])
+ FUNC_MODIFIES(*core)
+ FUNC_MODIFIES(*trace);
+
+static void parseflags_minimal(PARROT_INTERP,
+ int argc,
+ ARGIN(const char *argv[]))
__attribute__nonnull__(1)
__attribute__nonnull__(3);
@@ -69,8 +73,7 @@
#define ASSERT_ARGS_help_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_is_all_hex_digits __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(s))
-#define ASSERT_ARGS_Parrot_version __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_version __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_parseflags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(argc) \
@@ -87,7 +90,7 @@
/*
-=item C<int main(int argc, char * argv[])>
+=item C<int main(int argc, const char *argv[])>
The entry point from the command line into Parrot.
@@ -96,7 +99,7 @@
*/
int
-main(int argc, char * argv[])
+main(int argc, const char *argv[])
{
int stacktop;
const char *sourcefile;
@@ -128,18 +131,6 @@
initialize_interpreter(interp, (void*)&stacktop);
imcc_initialize(interp);
- { /* EXPERIMENTAL: add library and include paths from environment */
- PMC *env = Parrot_pmc_new(interp, enum_class_Env);
- STRING *path = VTABLE_get_string_keyed_str(interp, env,
- Parrot_str_new_constant(interp, "PARROT_LIBRARY"));
- if (!Parrot_str_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
- Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_LIBRARY);
- path = VTABLE_get_string_keyed_str(interp, env,
- Parrot_str_new_constant(interp, "PARROT_INCLUDE"));
- if (!Parrot_str_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
- Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_INCLUDE);
- }
-
/* Parse flags */
sourcefile = parseflags(interp, &argc, &argv, &core, &trace);
@@ -160,6 +151,7 @@
#define OPT_HELP_DEBUG 130
#define OPT_PBC_OUTPUT 131
#define OPT_RUNTIME_PREFIX 132
+#define OPT_HASH_SEED 133
#define SET_FLAG(flag) Parrot_set_flag(interp, (flag))
#define SET_DEBUG(flag) Parrot_set_debug(interp, (flag))
@@ -170,7 +162,7 @@
{ 'D', 'D', OPTION_optional_FLAG, { "--parrot-debug" } },
{ 'E', 'E', (OPTION_flags)0, { "--pre-process-only" } },
{ 'G', 'G', (OPTION_flags)0, { "--no-gc" } },
- { 'H', 'H', OPTION_required_FLAG, { "--hash-seed" } },
+ { '\0', OPT_HASH_SEED, OPTION_required_FLAG, { "--hash-seed" } },
{ 'I', 'I', OPTION_required_FLAG, { "--include" } },
{ 'L', 'L', OPTION_required_FLAG, { "--library" } },
{ 'O', 'O', OPTION_optional_FLAG, { "--optimize" } },
@@ -214,7 +206,7 @@
is_all_hex_digits(ARGIN(const char *s))
{
ASSERT_ARGS(is_all_hex_digits)
- for (; *s; s++)
+ for (; *s; ++s)
if (!isxdigit(*s))
return 0;
return 1;
@@ -306,11 +298,11 @@
" -V --version\n"
" -I --include add path to include search\n"
" -L --library add path to library search\n"
- " -H --hash-seed F00F specify hex value to use as hash seed\n"
+ " --hash-seed F00F specify hex value to use as hash seed\n"
" -X --dynext add path to dynamic extension search\n"
" <Run core options>\n"
- " -R --runcore slow|bounds|fast|cgoto|cgp\n"
- " -R --runcore switch|trace|profiling|gcdebug\n"
+ " -R --runcore slow|bounds|fast\n"
+ " -R --runcore trace|profiling|gcdebug\n"
" -t --trace [flags]\n"
" <VM options>\n"
" -D --parrot-debug[=HEXFLAGS]\n"
@@ -341,7 +333,7 @@
/*
-=item C<static void Parrot_version(PARROT_INTERP)>
+=item C<static void Parrot_version(void)>
Print out parrot version number.
@@ -350,7 +342,7 @@
*/
static void
-Parrot_version(PARROT_INTERP)
+Parrot_version(void)
{
ASSERT_ARGS(Parrot_version)
printf("This is Parrot version " PARROT_VERSION);
@@ -368,7 +360,8 @@
/*
-=item C<static void parseflags_minimal(PARROT_INTERP, int argc, char *argv[])>
+=item C<static void parseflags_minimal(PARROT_INTERP, int argc, const char
+*argv[])>
Parse minimal subset of args required for initializing interpreter.
@@ -376,14 +369,15 @@
*/
static void
-parseflags_minimal(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+parseflags_minimal(PARROT_INTERP, int argc, ARGIN(const char *argv[]))
{
ASSERT_ARGS(parseflags_minimal)
int pos = 0;
- const char *arg;
+
while (pos < argc) {
- arg = argv[pos];
+ const char *arg = argv[pos];
+
if (STREQ(arg, "--gc")) {
++pos;
if (pos == argc) {
@@ -405,12 +399,23 @@
}
break;
}
- else if (STREQ(arg, "--hash-seed")) {
- ++pos;
- arg = argv[pos];
+ else if (!strncmp(arg, "--hash-seed", 11)) {
+
+ if ((arg = strrchr(arg, '=')))
+ ++arg;
+ else
+ arg = argv[++pos];
+
if (is_all_hex_digits(arg)) {
interp->hash_seed = strtoul(arg, NULL, 16);
}
+ else {
+ fprintf(stderr, "error: invalid hash seed specified:"
+ "'%s'\n", arg);
+ exit(EXIT_FAILURE);
+ }
+ ++pos;
+ arg = argv[pos];
}
++pos;
}
@@ -418,8 +423,8 @@
/*
-=item C<static const char * parseflags(PARROT_INTERP, int *argc, char **argv[],
-Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
+=item C<static const char * parseflags(PARROT_INTERP, int *argc, const char
+**argv[], Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
Parse Parrot's command line for options and set appropriate flags.
@@ -430,8 +435,8 @@
PARROT_CAN_RETURN_NULL
static const char *
parseflags(PARROT_INTERP,
- ARGIN(int *argc), ARGIN(char **argv[]),
- ARGIN(Parrot_Run_core_t *core), ARGIN(Parrot_trace_flags *trace))
+ ARGMOD(int *argc), ARGMOD(const char **argv[]),
+ ARGMOD(Parrot_Run_core_t *core), ARGMOD(Parrot_trace_flags *trace))
{
ASSERT_ARGS(parseflags)
struct longopt_opt_info opt = LONGOPT_OPT_INFO_INIT;
@@ -449,26 +454,15 @@
imcc_start_handling_flags(interp);
- while ((status = longopt_get(interp, *argc, _tempargv, options,
- &opt)) > 0) {
+ while ((status = longopt_get(interp, *argc, _tempargv, options, &opt)) > 0) {
switch (opt.opt_id) {
case 'R':
if (STREQ(opt.opt_arg, "slow") || STREQ(opt.opt_arg, "bounds"))
*core = PARROT_SLOW_CORE;
else if (STREQ(opt.opt_arg, "fast") || STREQ(opt.opt_arg, "function"))
*core = PARROT_FAST_CORE;
- else if (STREQ(opt.opt_arg, "switch"))
- *core = PARROT_SWITCH_CORE;
- else if (STREQ(opt.opt_arg, "cgp"))
- *core = PARROT_CGP_CORE;
- else if (STREQ(opt.opt_arg, "cgoto"))
- *core = PARROT_CGOTO_CORE;
else if (STREQ(opt.opt_arg, "jit"))
*core = PARROT_FAST_CORE;
- else if (STREQ(opt.opt_arg, "cgp-jit"))
- *core = PARROT_CGP_CORE;
- else if (STREQ(opt.opt_arg, "switch-jit"))
- *core = PARROT_SWITCH_CORE;
else if (STREQ(opt.opt_arg, "exec"))
*core = PARROT_EXEC_CORE;
else if (STREQ(opt.opt_arg, "trace"))
@@ -512,7 +506,7 @@
help();
exit(EXIT_FAILURE);
break;
- case 'H':
+ case OPT_HASH_SEED:
/* handled in parseflags_minimal */
break;
case OPT_HELP_DEBUG:
@@ -524,7 +518,7 @@
Parrot_get_runtime_path(interp));
exit(EXIT_SUCCESS);
case 'V':
- Parrot_version(interp);
+ Parrot_version();
break;
case OPT_GC_DEBUG:
Modified: branches/ops_pct/src/misc.c
==============================================================================
--- branches/ops_pct/src/misc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/misc.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -82,6 +82,7 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
STRING *
Parrot_vsprintf_c(PARROT_INTERP, ARGIN(const char *pat), va_list args)
{
@@ -112,17 +113,16 @@
size_t len, ARGIN(const char *pat), va_list args)
{
ASSERT_ARGS(Parrot_vsnprintf)
- char *str_ret;
- size_t str_len;
+
if (len == 0)
return;
- len--;
+ --len;
if (len) {
const STRING * const ret = Parrot_vsprintf_c(interp, pat, args);
/* string_transcode(interp, ret, NULL, NULL, &ret); */
- str_ret = Parrot_str_to_cstring(interp, ret);
- str_len = strlen(str_ret);
+ char * const str_ret = Parrot_str_to_cstring(interp, ret);
+ const size_t str_len = strlen(str_ret);
if (len > str_len) {
len = str_len;
}
@@ -256,6 +256,7 @@
PARROT_EXPORT
+PARROT_IGNORABLE_RESULT
int
Parrot_secret_snprintf(ARGOUT(char *buffer), SHIM(const size_t len),
ARGIN(const char *format), ...)
Modified: branches/ops_pct/src/multidispatch.c
==============================================================================
--- branches/ops_pct/src/multidispatch.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/multidispatch.c Wed May 5 08:45:29 2010 (r46302)
@@ -264,24 +264,26 @@
ARGIN(const char *name), ARGIN(const char *sig), ...)
{
ASSERT_ARGS(Parrot_mmd_multi_dispatch_from_c_args)
- PMC *sig_object, *sub;
-
+ PMC *call_obj, *sub;
va_list args;
+ const char *arg_sig, *ret_sig;
+
+ Parrot_pcc_split_signature_string(sig, &arg_sig, &ret_sig);
+
va_start(args, sig);
- sig_object = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL, sig, args);
- va_end(args);
+ call_obj = Parrot_pcc_build_call_from_varargs(interp, PMCNULL, arg_sig, &args);
/* Check the cache. */
sub = Parrot_mmd_cache_lookup_by_types(interp, interp->op_mmd_cache, name,
- VTABLE_get_pmc(interp, sig_object));
+ VTABLE_get_pmc(interp, call_obj));
if (PMC_IS_NULL(sub)) {
sub = Parrot_mmd_find_multi_from_sig_obj(interp,
- Parrot_str_new_constant(interp, name), sig_object);
+ Parrot_str_new_constant(interp, name), call_obj);
if (!PMC_IS_NULL(sub))
Parrot_mmd_cache_store_by_types(interp, interp->op_mmd_cache, name,
- VTABLE_get_pmc(interp, sig_object), sub);
+ VTABLE_get_pmc(interp, call_obj), sub);
}
if (PMC_IS_NULL(sub))
@@ -296,7 +298,11 @@
VTABLE_name(interp, sub));
#endif
- Parrot_pcc_invoke_from_sig_object(interp, sub, sig_object);
+ Parrot_pcc_invoke_from_sig_object(interp, sub, call_obj);
+ call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+ Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
+ va_end(args);
}
@@ -385,13 +391,12 @@
mmd_build_type_tuple_from_type_list(PARROT_INTERP, ARGIN(PMC *type_list))
{
ASSERT_ARGS(mmd_build_type_tuple_from_type_list)
- PMC *multi_sig = Parrot_pmc_new_constant(interp, enum_class_FixedIntegerArray);
INTVAL param_count = VTABLE_elements(interp, type_list);
+ PMC *multi_sig = Parrot_pmc_new_constant_init_int(interp,
+ enum_class_FixedIntegerArray, param_count);
INTVAL i;
- VTABLE_set_integer_native(interp, multi_sig, param_count);
-
- for (i = 0; i < param_count; i++) {
+ for (i = 0; i < param_count; ++i) {
STRING *type_name = VTABLE_get_string_keyed_int(interp, type_list, i);
INTVAL type;
@@ -512,10 +517,8 @@
type = Parrot_pmc_get_type(interp, sig_elem);
/* create destination PMC only as necessary */
- if (PMC_IS_NULL(ar)) {
- ar = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
- VTABLE_set_integer_native(interp, ar, n);
- }
+ if (PMC_IS_NULL(ar))
+ ar = Parrot_pmc_new_init_int(interp, enum_class_FixedIntegerArray, n);
VTABLE_set_integer_keyed_int(interp, ar, i, type);
}
@@ -628,21 +631,40 @@
/* now go through args */
for (i = 0; i < n; ++i) {
const INTVAL type_sig = VTABLE_get_integer_keyed_int(interp, multi_sig, i);
- const INTVAL type_call = VTABLE_get_integer_keyed_int(interp, arg_tuple, i);
+ INTVAL type_call = VTABLE_get_integer_keyed_int(interp, arg_tuple, i);
if (type_sig == type_call)
continue;
/* promote primitives to their PMC equivalents, as PCC will autobox
- * the distance penalty makes primitive variants look cheaper */
+ * them. If it's a direct autobox, int->Integer, str->String, or
+ * num->Num, the distance is 1 and we move to the next arg. If it's
+ * autoboxing to "any" PMC type, we increment the distance and continue
+ * weighing other things. A direct autobox should be cheaper than an
+ * autobox plus type conversion or implicit type acceptance. */
switch (type_call) {
case enum_type_INTVAL:
if (type_sig == enum_class_Integer) { dist++; continue; }
+ if (type_sig == enum_type_PMC ||
+ (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
+ ++dist;
+ type_call = enum_class_Integer;
+ }
break;
case enum_type_FLOATVAL:
if (type_sig == enum_class_Float) { dist++; continue; }
+ if (type_sig == enum_type_PMC ||
+ (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
+ ++dist;
+ type_call = enum_class_Float;
+ }
break;
case enum_type_STRING:
if (type_sig == enum_class_String) { dist++; continue; }
+ if (type_sig == enum_type_PMC ||
+ (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
+ ++dist;
+ type_call = enum_class_String;
+ }
break;
default:
break;
@@ -653,7 +675,7 @@
* which matches any PMC
*/
if (type_call <= 0 && type_sig == enum_type_PMC) {
- dist++;
+ ++dist;
continue;
}
@@ -1100,7 +1122,7 @@
STRING *key;
INTVAL i;
- for (i = 0; i < num_values; i++) {
+ for (i = 0; i < num_values; ++i) {
const INTVAL id = VTABLE_type(interp, VTABLE_get_pmc_keyed_int(interp, values, i));
if (id == 0) {
mem_gc_free(interp, type_ids);
@@ -1201,7 +1223,7 @@
STRING *key;
INTVAL i;
- for (i = 0; i < num_types; i++) {
+ for (i = 0; i < num_types; ++i) {
const INTVAL id = VTABLE_get_integer_keyed_int(interp, types, i);
if (id == 0) {
Modified: branches/ops_pct/src/nci/api.c
==============================================================================
--- branches/ops_pct/src/nci/api.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/nci/api.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,30 +1,49 @@
/* nci.c
- * Copyright (C) 2001-2009, Parrot Foundation.
- * SVN Info
- * $Id$
- * Overview:
- * Native Call Interface routines. The code needed to build a
- * parrot to C call frame is in here
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
- */
+Copyright (C) 2001-2009, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/nci/api.c - Native Call Interface routines
+
+=head1 DESCRIPTION
+
+This file implements the interface to the Parrot Native Call Interface system,
+which builds parrot to C call frames.
+
+=head2 Functions
+
+=over 4
+
+=cut
+
+*/
#include "parrot/parrot.h"
#include "parrot/nci.h"
#include "api.str"
/* HEADERIZER HFILE: include/parrot/nci.h */
-/* HEADERIZER STOP */
-/* This function serves a single purpose. It takes the function
- signature for a C function we want to call and returns a pointer
- to a function that can call it. */
-
-void *
-build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted)) {
- PMC *iglobals;
+/*
+
+=item C<PMC * build_call_func(PARROT_INTERP, STRING *signature)>
+
+This function serves a single purpose. It takes the function signature for a
+C function we want to call and returns a PMC with a pointer to a function
+that can call it.
+
+=cut
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+PMC *
+build_call_func(PARROT_INTERP, ARGIN(STRING *signature))
+{
+ ASSERT_ARGS(build_call_func)
+
+ PMC * const iglobals = interp->iglobals;
PMC *nci_funcs;
PMC *thunk;
@@ -32,7 +51,6 @@
if (STRING_IS_EMPTY(signature))
signature = CONST_STRING(interp, "v");
- iglobals = interp->iglobals;
if (PMC_IS_NULL(iglobals))
PANIC(interp, "iglobals isn't created yet");
@@ -42,32 +60,39 @@
thunk = VTABLE_get_pmc_keyed_str(interp, nci_funcs, signature);
- PARROT_ASSERT(PMC_IS_NULL(thunk) || thunk->vtable);
-
- if ((!PMC_IS_NULL(thunk)) && thunk->vtable->base_type == enum_class_UnManagedStruct)
- return F2DPTR(VTABLE_get_pointer(interp, thunk));
+ if (PMC_IS_NULL(thunk)) {
+ /* try to dynamically build a thunk */
+ PMC *nci_fb_cb = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FB_CB);
+ if (!PMC_IS_NULL(nci_fb_cb)) {
+ void *cb_ptr = VTABLE_get_pointer(interp, nci_fb_cb);
+ nci_fb_func_t cb = (nci_fb_func_t)D2FPTR(cb_ptr);
+ if (cb_ptr) {
+ PMC *nci_fb_ud = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FB_UD);
+ thunk = cb(nci_fb_ud, signature);
+ }
+ }
+ }
- /*
- These lines have been added to aid debugging. I want to be able to
- see which signature has an unknown type. I am sure someone can come up
- with a neater way to do this.
- */
- {
- STRING *ns = CONST_STRING(interp, " is an unknown signature type");
- STRING *message = Parrot_str_concat(interp, signature, ns, 0);
-
- ns = CONST_STRING(interp, ".\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/nci/extra_thunks.nci");
- message = Parrot_str_concat(interp, message, ns, 0);
-
- /*
- * I think there may be memory issues with this but if we get to here we are
- * aborting.
- */
- PANIC(interp, Parrot_str_to_cstring(interp, message));
+ if (!PMC_IS_NULL(thunk)) {
+ PARROT_ASSERT(thunk->vtable);
+ PARROT_ASSERT(thunk->vtable->base_type == enum_class_UnManagedStruct);
+ return thunk;
}
+
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_UNIMPLEMENTED,
+ "No NCI thunk available for signature '%S'", signature);
}
/*
+
+=back
+
+=cut
+
+*/
+
+/*
* Local variables:
* c-file-style: "parrot"
* End:
Modified: branches/ops_pct/src/nci/core_thunks.c
==============================================================================
--- branches/ops_pct/src/nci/core_thunks.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/nci/core_thunks.c Wed May 5 08:45:29 2010 (r46302)
@@ -40,149 +40,163 @@
static void
-pcf_d_JOd(PARROT_INTERP, PMC *self)
+pcf_d_JOd(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef double(* func_t)(PARROT_INTERP, PMC *, double);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
PMC * t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (double)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_I_JOS(PARROT_INTERP, PMC *self)
+pcf_I_JOS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_P_JOl(PARROT_INTERP, PMC *self)
+pcf_P_JOl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_Jt(PARROT_INTERP, PMC *self)
+pcf_P_Jt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_S_JOS(PARROT_INTERP, PMC *self)
+pcf_S_JOS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_I_JI(PARROT_INTERP, PMC *self)
+pcf_I_JI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_v_JOSP(PARROT_INTERP, PMC *self)
+pcf_v_JOSP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -192,20 +206,22 @@
}
static void
-pcf_v_JOS(PARROT_INTERP, PMC *self)
+pcf_v_JOS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -214,112 +230,122 @@
}
static void
-pcf_P_JOS(PARROT_INTERP, PMC *self)
+pcf_P_JOS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_I_JOI(PARROT_INTERP, PMC *self)
+pcf_I_JOI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_P_JOP(PARROT_INTERP, PMC *self)
+pcf_P_JOP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JOPS(PARROT_INTERP, PMC *self)
+pcf_P_JOPS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
STRING * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPS", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_v_JOPSP(PARROT_INTERP, PMC *self)
+pcf_v_JOPSP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
STRING * t_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPSP", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
@@ -330,21 +356,23 @@
}
static void
-pcf_v_JPPP(PARROT_INTERP, PMC *self)
+pcf_v_JPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -354,21 +382,23 @@
}
static void
-pcf_v_JPIP(PARROT_INTERP, PMC *self)
+pcf_v_JPIP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
INTVAL t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -378,21 +408,23 @@
}
static void
-pcf_v_JPSP(PARROT_INTERP, PMC *self)
+pcf_v_JPSP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -402,21 +434,23 @@
}
static void
-pcf_v_JPNP(PARROT_INTERP, PMC *self)
+pcf_v_JPNP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
FLOATVAL t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -426,20 +460,22 @@
}
static void
-pcf_v_JPP(PARROT_INTERP, PMC *self)
+pcf_v_JPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -448,20 +484,22 @@
}
static void
-pcf_v_JPI(PARROT_INTERP, PMC *self)
+pcf_v_JPI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -470,20 +508,22 @@
}
static void
-pcf_v_JPS(PARROT_INTERP, PMC *self)
+pcf_v_JPS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -492,20 +532,22 @@
}
static void
-pcf_v_JPN(PARROT_INTERP, PMC *self)
+pcf_v_JPN(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -514,201 +556,219 @@
}
static void
-pcf_P_JPPP(PARROT_INTERP, PMC *self)
+pcf_P_JPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JPIP(PARROT_INTERP, PMC *self)
+pcf_P_JPIP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
INTVAL t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JPSP(PARROT_INTERP, PMC *self)
+pcf_P_JPSP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
STRING * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JPNP(PARROT_INTERP, PMC *self)
+pcf_P_JPNP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
FLOATVAL t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_I_JPP(PARROT_INTERP, PMC *self)
+pcf_I_JPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_I_JPS(PARROT_INTERP, PMC *self)
+pcf_I_JPS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_I_JPN(PARROT_INTERP, PMC *self)
+pcf_I_JPN(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JP(PARROT_INTERP, PMC *self)
+pcf_i_JP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_v_JP(PARROT_INTERP, PMC *self)
+pcf_v_JP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1);
@@ -716,71 +776,77 @@
}
static void
-pcf_i_JPi(PARROT_INTERP, PMC *self)
+pcf_i_JPi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JPii(PARROT_INTERP, PMC *self)
+pcf_i_JPii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JPiii(PARROT_INTERP, PMC *self)
+pcf_i_JPiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -788,47 +854,51 @@
}
static void
-pcf_i_JPt(PARROT_INTERP, PMC *self)
+pcf_i_JPt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_P_JOSSS(PARROT_INTERP, PMC *self)
+pcf_P_JOSSS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
STRING * t_2;
STRING * t_3;
STRING * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSSS", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
@@ -836,21 +906,23 @@
}
static void
-pcf_v_JOSS(PARROT_INTERP, PMC *self)
+pcf_v_JOSS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
STRING * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSS", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -860,42 +932,46 @@
}
static void
-pcf_S_JOI(PARROT_INTERP, PMC *self)
+pcf_S_JOI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_v_JOb(PARROT_INTERP, PMC *self)
+pcf_v_JOb(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, Buffer_bufstart(t_2));
@@ -904,73 +980,79 @@
}
static void
-pcf_i_JOPxAT_(PARROT_INTERP, PMC *self)
+pcf_i_JOPxAT_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_I_JOPxAT_(PARROT_INTERP, PMC *self)
+pcf_I_JOPxAT_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_I_JOIPxAT_(PARROT_INTERP, PMC *self)
+pcf_I_JOIPxAT_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
PMC * t_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIPPs", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -978,40 +1060,44 @@
}
static void
-pcf_P_JO(PARROT_INTERP, PMC *self)
+pcf_P_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_v_JOP(PARROT_INTERP, PMC *self)
+pcf_v_JOP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -1020,41 +1106,38 @@
}
static void
-pcf_P_Ji(PARROT_INTERP, PMC *self)
+pcf_P_Ji(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
void
Parrot_nci_load_core_thunks(PARROT_INTERP)
-;
- void
-Parrot_nci_load_core_thunks(PARROT_INTERP)
{
- PMC *iglobals;
+ PMC * const iglobals = interp->iglobals;
PMC *nci_funcs;
PMC *temp_pmc;
- iglobals = interp->iglobals;
PARROT_ASSERT(!(PMC_IS_NULL(iglobals)));
- nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals,
- IGLOBALS_NCI_FUNCS);
+ nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
PARROT_ASSERT(!(PMC_IS_NULL(nci_funcs)));
temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
Modified: branches/ops_pct/src/nci/extra_thunks.c
==============================================================================
--- branches/ops_pct/src/nci/extra_thunks.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/nci/extra_thunks.c Wed May 5 08:45:29 2010 (r46302)
@@ -40,330 +40,360 @@
static void
-pcf_v_J(PARROT_INTERP, PMC *self)
+pcf_v_J(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp);
}
static void
-pcf_i_ip(PARROT_INTERP, PMC *self)
+pcf_i_ip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JPip(PARROT_INTERP, PMC *self)
+pcf_i_JPip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JpP(PARROT_INTERP, PMC *self)
+pcf_i_JpP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, void *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_Jpii(PARROT_INTERP, PMC *self)
+pcf_i_Jpii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_p(PARROT_INTERP, PMC *self)
+pcf_i_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_tp(PARROT_INTERP, PMC *self)
+pcf_i_tp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(char *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_J(PARROT_INTERP, PMC *self)
+pcf_p_J(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_Jp(PARROT_INTERP, PMC *self)
+pcf_p_Jp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_t_J(PARROT_INTERP, PMC *self)
+pcf_t_J(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(PARROT_INTERP);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(interp);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_Jpti(PARROT_INTERP, PMC *self)
+pcf_t_Jpti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(PARROT_INTERP, void *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_1, &ts_2, &t_3);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_t_p(PARROT_INTERP, PMC *self)
+pcf_t_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_pt(PARROT_INTERP, PMC *self)
+pcf_t_pt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_v_p(PARROT_INTERP, PMC *self)
+pcf_v_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
}
static void
-pcf_v_pit(PARROT_INTERP, PMC *self)
+pcf_v_pit(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, int, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
INTVAL t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
@@ -372,21 +402,23 @@
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_v_ptt(PARROT_INTERP, PMC *self)
+pcf_v_ptt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
@@ -395,13 +427,14 @@
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_v_Jtiiipt(PARROT_INTERP, PMC *self)
+pcf_v_Jtiiipt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, char *, int, int, int, void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
char *t_1; STRING *ts_1;
@@ -410,9 +443,10 @@
INTVAL t_4;
PMC *t_5;
char *t_6; STRING *ts_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIIIPS", &ts_1, &t_2, &t_3, &t_4, &t_5, &ts_6);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
@@ -425,13 +459,14 @@
if (t_6) Parrot_str_free_cstring(t_6);
}
static void
-pcf_p_JttPP(PARROT_INTERP, PMC *self)
+pcf_p_JttPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, char *, char *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -439,16 +474,17 @@
char *t_2; STRING *ts_2;
PMC * t_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSPP", &ts_1, &ts_2, &t_3, &t_4);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -456,70 +492,76 @@
}
static void
-pcf_P_Jtpi(PARROT_INTERP, PMC *self)
+pcf_P_Jtpi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, char *, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
char *t_1; STRING *ts_1;
PMC *t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPI", &ts_1, &t_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_Vppp(PARROT_INTERP, PMC *self)
+pcf_i_Vppp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void **, void *, void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; void *v_0;
PMC *t_1;
PMC *t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
v_0 = VTABLE_get_pointer(interp, t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(&v_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_pointer(interp, t_0, v_0);
}
static void
-pcf_v_JpPP(PARROT_INTERP, PMC *self)
+pcf_v_JpPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, void *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
@@ -529,20 +571,22 @@
}
static void
-pcf_v_pt(PARROT_INTERP, PMC *self)
+pcf_v_pt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
@@ -550,20 +594,22 @@
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_v_Jpt(PARROT_INTERP, PMC *self)
+pcf_v_Jpt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
@@ -572,39 +618,43 @@
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_v_(PARROT_INTERP, PMC *self)
+pcf_v_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)();
}
static void
-pcf_v_Jiiip(PARROT_INTERP, PMC *self)
+pcf_v_Jiiip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, int, int, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
PMC *t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
@@ -615,39 +665,43 @@
}
static void
-pcf_v_i(PARROT_INTERP, PMC *self)
+pcf_v_i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0);
}
static void
-pcf_v_ii(PARROT_INTERP, PMC *self)
+pcf_v_ii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0, t_1);
@@ -655,13 +709,14 @@
}
static void
-pcf_v_illllllll(PARROT_INTERP, PMC *self)
+pcf_v_illllllll(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(int, long, long, long, long, long, long, long, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
INTVAL t_0;
@@ -673,9 +728,10 @@
INTVAL t_6;
INTVAL t_7;
INTVAL t_8;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
@@ -690,41 +746,45 @@
}
static void
-pcf_v_l(PARROT_INTERP, PMC *self)
+pcf_v_l(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0);
}
static void
-pcf_v_pbip(PARROT_INTERP, PMC *self)
+pcf_v_pbip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, void *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
STRING *t_1;
INTVAL t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIP", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
@@ -734,20 +794,22 @@
}
static void
-pcf_v_pi(PARROT_INTERP, PMC *self)
+pcf_v_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
@@ -755,13 +817,14 @@
}
static void
-pcf_v_piiii(PARROT_INTERP, PMC *self)
+pcf_v_piiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
@@ -769,9 +832,10 @@
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
@@ -782,20 +846,22 @@
}
static void
-pcf_v_pl(PARROT_INTERP, PMC *self)
+pcf_v_pl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
@@ -803,20 +869,22 @@
}
static void
-pcf_v_pp(PARROT_INTERP, PMC *self)
+pcf_v_pp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
@@ -824,172 +892,188 @@
}
static void
-pcf_i_JPP(PARROT_INTERP, PMC *self)
+pcf_i_JPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_P_JP(PARROT_INTERP, PMC *self)
+pcf_P_JP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JPP(PARROT_INTERP, PMC *self)
+pcf_P_JPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JO(PARROT_INTERP, PMC *self)
+pcf_P_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_S_JO(PARROT_INTERP, PMC *self)
+pcf_S_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_i_P(PARROT_INTERP, PMC *self)
+pcf_i_P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_P_JOPP(PARROT_INTERP, PMC *self)
+pcf_P_JOPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JOPPP(PARROT_INTERP, PMC *self)
+pcf_P_JOPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
@@ -997,21 +1081,23 @@
}
static void
-pcf_v_JOPP(PARROT_INTERP, PMC *self)
+pcf_v_JOPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -1021,22 +1107,24 @@
}
static void
-pcf_v_JOPPP(PARROT_INTERP, PMC *self)
+pcf_v_JOPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
PMC * t_2;
PMC * t_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
@@ -1047,13 +1135,14 @@
}
static void
-pcf_P_JOPPPP(PARROT_INTERP, PMC *self)
+pcf_P_JOPPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
@@ -1061,12 +1150,13 @@
PMC * t_3;
PMC * t_4;
PMC * t_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPP", &t_1, &t_2, &t_3, &t_4, &t_5);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
@@ -1075,13 +1165,14 @@
}
static void
-pcf_P_JOPPPPP(PARROT_INTERP, PMC *self)
+pcf_P_JOPPPPP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
@@ -1090,12 +1181,13 @@
PMC * t_4;
PMC * t_5;
PMC * t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPPP", &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5, t_6);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
@@ -1105,49 +1197,53 @@
}
static void
-pcf_I_JOSI(PARROT_INTERP, PMC *self)
+pcf_I_JOSI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
STRING * t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_P_JOSII(PARROT_INTERP, PMC *self)
+pcf_P_JOSII(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
STRING * t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSII", &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
@@ -1155,157 +1251,170 @@
}
static void
-pcf_t_p3(PARROT_INTERP, PMC *self)
+pcf_t_p3(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
PMC *t_1; int i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_i_pp3p(PARROT_INTERP, PMC *self)
+pcf_i_pp3p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
PMC *t_2; int i_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_pp3(PARROT_INTERP, PMC *self)
+pcf_i_pp3(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
PMC *t_2; int i_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_ppd(PARROT_INTERP, PMC *self)
+pcf_i_ppd(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, double);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPN", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ptii(PARROT_INTERP, PMC *self)
+pcf_i_ptii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_pipi(PARROT_INTERP, PMC *self)
+pcf_i_pipi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
PMC *t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPI", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_t_ptti(PARROT_INTERP, PMC *self)
+pcf_t_ptti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, char *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
@@ -1313,51 +1422,55 @@
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_t_pti(PARROT_INTERP, PMC *self)
+pcf_t_pti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_t_pttti(PARROT_INTERP, PMC *self)
+pcf_t_pttti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, char *, char *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
@@ -1366,13 +1479,14 @@
char *t_2; STRING *ts_2;
char *t_3; STRING *ts_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSI", &t_0, &ts_1, &ts_2, &ts_3, &t_4);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -1380,102 +1494,110 @@
}
static void
-pcf_p_Ji(PARROT_INTERP, PMC *self)
+pcf_p_Ji(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_Jipp(PARROT_INTERP, PMC *self)
+pcf_p_Jipp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, int, void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
INTVAL t_1;
PMC *t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_Jbip(PARROT_INTERP, PMC *self)
+pcf_p_Jbip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, void *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
STRING *t_1;
INTVAL t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_v_Jp(PARROT_INTERP, PMC *self)
+pcf_v_Jp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
@@ -1483,19 +1605,21 @@
}
static void
-pcf_v_JS(PARROT_INTERP, PMC *self)
+pcf_v_JS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
STRING * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1);
@@ -1503,66 +1627,72 @@
}
static void
-pcf_t_tt(PARROT_INTERP, PMC *self)
+pcf_t_tt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
char *t_0; STRING *ts_0;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SS", &ts_0, &ts_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0, t_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_I_JOt(PARROT_INTERP, PMC *self)
+pcf_I_JOt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_v_JOSI(PARROT_INTERP, PMC *self)
+pcf_v_JOSI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
STRING * t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2, t_3);
@@ -1572,42 +1702,46 @@
}
static void
-pcf_S_JOi(PARROT_INTERP, PMC *self)
+pcf_S_JOi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(PARROT_INTERP, PMC *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_v_JOi(PARROT_INTERP, PMC *self)
+pcf_v_JOi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -1616,60 +1750,66 @@
}
static void
-pcf_I_JO(PARROT_INTERP, PMC *self)
+pcf_I_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef INTVAL(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (INTVAL)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_N_JO(PARROT_INTERP, PMC *self)
+pcf_N_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef FLOATVAL(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (FLOATVAL)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_v_JON(PARROT_INTERP, PMC *self)
+pcf_v_JON(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -1678,42 +1818,46 @@
}
static void
-pcf_P_JOi(PARROT_INTERP, PMC *self)
+pcf_P_JOi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_v_JOI(PARROT_INTERP, PMC *self)
+pcf_v_JOI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1, t_2);
@@ -1722,324 +1866,353 @@
}
static void
-pcf_P_JOI(PARROT_INTERP, PMC *self)
+pcf_P_JOI(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_P_JOIS(PARROT_INTERP, PMC *self)
+pcf_P_JOIS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
PMC * return_data;
PMC * t_1;
INTVAL t_2;
STRING * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIS", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", return_data);
}
static void
-pcf_S_JOSP(PARROT_INTERP, PMC *self)
+pcf_S_JOSP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
PMC * t_1;
STRING * t_2;
PMC * t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(interp, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_i_(PARROT_INTERP, PMC *self)
+pcf_i_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_i3i(PARROT_INTERP, PMC *self)
+pcf_i_i3i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1; int i_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPI", &t_0, &t_1, &t_2);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, &i_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_i_ibi(PARROT_INTERP, PMC *self)
+pcf_i_ibi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
STRING *t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, Buffer_bufstart(t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_l_lttl(PARROT_INTERP, PMC *self)
+pcf_l_lttl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(long, char *, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISSI", &t_0, &ts_1, &ts_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(t_0, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_pip(PARROT_INTERP, PMC *self)
+pcf_i_pip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_piS(PARROT_INTERP, PMC *self)
+pcf_i_piS(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, STRING *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
STRING * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_S_i(PARROT_INTERP, PMC *self)
+pcf_S_i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef STRING *(* func_t)(int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
STRING * return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (STRING *)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", return_data);
}
static void
-pcf_l_p(PARROT_INTERP, PMC *self)
+pcf_l_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_c_p(PARROT_INTERP, PMC *self)
+pcf_c_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_p_pi(PARROT_INTERP, PMC *self)
+pcf_p_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_p(PARROT_INTERP, PMC *self)
+pcf_p_p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_i_pttttt(PARROT_INTERP, PMC *self)
+pcf_i_pttttt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, char *, char *, char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -2048,12 +2221,13 @@
char *t_3; STRING *ts_3;
char *t_4; STRING *ts_4;
char *t_5; STRING *ts_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSS", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2062,38 +2236,41 @@
if (t_5) Parrot_str_free_cstring(t_5);
}
static void
-pcf_c_pttt(PARROT_INTERP, PMC *self)
+pcf_c_pttt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char(* func_t)(void *, char *, char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
char *t_3; STRING *ts_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSS", &t_0, &ts_1, &ts_2, &ts_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
if (t_3) Parrot_str_free_cstring(t_3);
}
static void
-pcf_p_pttttiti(PARROT_INTERP, PMC *self)
+pcf_p_pttttiti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2105,16 +2282,17 @@
INTVAL t_5;
char *t_6; STRING *ts_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2125,286 +2303,311 @@
}
static void
-pcf_i_pt(PARROT_INTERP, PMC *self)
+pcf_i_pt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_ptl(PARROT_INTERP, PMC *self)
+pcf_i_ptl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_pi(PARROT_INTERP, PMC *self)
+pcf_i_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pl(PARROT_INTERP, PMC *self)
+pcf_i_pl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_l_(PARROT_INTERP, PMC *self)
+pcf_l_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_p_pt(PARROT_INTERP, PMC *self)
+pcf_p_pt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_p_ptt(PARROT_INTERP, PMC *self)
+pcf_p_ptt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_pit(PARROT_INTERP, PMC *self)
+pcf_i_pit(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_p_pp(PARROT_INTERP, PMC *self)
+pcf_p_pp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_l_ttl(PARROT_INTERP, PMC *self)
+pcf_l_ttl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(char *, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSI", &ts_0, &ts_1, &t_2);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_l_pttl(PARROT_INTERP, PMC *self)
+pcf_l_pttl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void *, char *, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_v_t(PARROT_INTERP, PMC *self)
+pcf_v_t(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_pttttitl(PARROT_INTERP, PMC *self)
+pcf_p_pttttitl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2416,16 +2619,17 @@
INTVAL t_5;
char *t_6; STRING *ts_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2436,13 +2640,14 @@
}
static void
-pcf_p_tiB3P(PARROT_INTERP, PMC *self)
+pcf_p_tiB3P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *, int, char **, int *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2451,16 +2656,17 @@
char *t_2; STRING *ts_2;
PMC *t_3; int i_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SISPP", &ts_0, &t_1, &ts_2, &t_3, &t_4);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *) NULL;i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, &t_2, &i_3, t_4);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2468,13 +2674,14 @@
}
static void
-pcf_p_tip3P(PARROT_INTERP, PMC *self)
+pcf_p_tip3P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *, int, void *, int *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2483,16 +2690,17 @@
PMC *t_2;
PMC *t_3; int i_3;
PMC * t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIPPP", &ts_0, &t_1, &t_2, &t_3, &t_4);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), &i_3, t_4);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
@@ -2500,13 +2708,14 @@
}
static void
-pcf_i_pPtiiipi(PARROT_INTERP, PMC *self)
+pcf_i_pPtiiipi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, PMC *, char *, int, int, int, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -2517,12 +2726,13 @@
INTVAL t_5;
PMC *t_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPSIIIPI", &t_0, &t_1, &ts_2, &t_3, &t_4, &t_5, &t_6, &t_7);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2533,13 +2743,14 @@
}
static void
-pcf_i_tpiibi(PARROT_INTERP, PMC *self)
+pcf_i_tpiibi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(char *, void *, int, int, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
@@ -2548,12 +2759,13 @@
INTVAL t_3;
STRING *t_4;
INTVAL t_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPIISI", &ts_0, &t_1, &t_2, &t_3, &t_4, &t_5);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, Buffer_bufstart(t_4), t_5);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
@@ -2562,13 +2774,14 @@
}
static void
-pcf_p_ptippppi(PARROT_INTERP, PMC *self)
+pcf_p_ptippppi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, int, void *, void *, void *, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2580,16 +2793,17 @@
PMC *t_5;
PMC *t_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
@@ -2600,13 +2814,14 @@
}
static void
-pcf_p_pi33ipi(PARROT_INTERP, PMC *self)
+pcf_p_pi33ipi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, int, int *, int *, int, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2617,16 +2832,17 @@
INTVAL t_4;
PMC *t_5;
INTVAL t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPPIPI", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
VTABLE_set_integer_native(interp, t_2, i_2);
@@ -2636,13 +2852,14 @@
}
static void
-pcf_p_pttip(PARROT_INTERP, PMC *self)
+pcf_p_pttip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, char *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2651,16 +2868,17 @@
char *t_2; STRING *ts_2;
INTVAL t_3;
PMC *t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSIP", &t_0, &ts_1, &ts_2, &t_3, &t_4);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -2668,13 +2886,14 @@
}
static void
-pcf_p_ptipppi(PARROT_INTERP, PMC *self)
+pcf_p_ptipppi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, int, void *, void *, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2685,16 +2904,17 @@
PMC *t_4;
PMC *t_5;
INTVAL t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
@@ -2704,41 +2924,44 @@
}
static void
-pcf_p_ppP(PARROT_INTERP, PMC *self)
+pcf_p_ppP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, void *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
PMC *t_1;
PMC * t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_iiil(PARROT_INTERP, PMC *self)
+pcf_p_iiil(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, int, int, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2746,60 +2969,65 @@
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_i_ppl(PARROT_INTERP, PMC *self)
+pcf_i_ppl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_v_pip(PARROT_INTERP, PMC *self)
+pcf_v_pip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
@@ -2808,64 +3036,69 @@
}
static void
-pcf_p_pti(PARROT_INTERP, PMC *self)
+pcf_p_pti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_ppp(PARROT_INTERP, PMC *self)
+pcf_i_ppp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_p_ptii(PARROT_INTERP, PMC *self)
+pcf_p_ptii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -2873,392 +3106,428 @@
char *t_1; STRING *ts_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_p_ti(PARROT_INTERP, PMC *self)
+pcf_p_ti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
char *t_0; STRING *ts_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_ptp(PARROT_INTERP, PMC *self)
+pcf_p_ptp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, char *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
char *t_1; STRING *ts_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_pt33(PARROT_INTERP, PMC *self)
+pcf_i_pt33(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, int *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
PMC *t_2; int i_2;
PMC *t_3; int i_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSPP", &t_0, &ts_1, &t_2, &t_3);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
VTABLE_set_integer_native(interp, t_2, i_2);
VTABLE_set_integer_native(interp, t_3, i_3);
}
static void
-pcf_c_(PARROT_INTERP, PMC *self)
+pcf_c_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_c_pi(PARROT_INTERP, PMC *self)
+pcf_c_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_d_(PARROT_INTERP, PMC *self)
+pcf_d_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef double(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (double)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_d_d(PARROT_INTERP, PMC *self)
+pcf_d_d(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef double(* func_t)(double);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
FLOATVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (double)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_f_(PARROT_INTERP, PMC *self)
+pcf_f_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef float(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (float)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_f_ff(PARROT_INTERP, PMC *self)
+pcf_f_ff(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef float(* func_t)(float, float);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
FLOATVAL t_0;
FLOATVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "NN", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (float)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_f_is(PARROT_INTERP, PMC *self)
+pcf_f_is(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef float(* func_t)(int, short);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
FLOATVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (float)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "N", return_data);
}
static void
-pcf_i_b(PARROT_INTERP, PMC *self)
+pcf_i_b(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
STRING *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(Buffer_bufstart(t_0));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_d(PARROT_INTERP, PMC *self)
+pcf_i_d(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(double);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
FLOATVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_i(PARROT_INTERP, PMC *self)
+pcf_i_i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ii(PARROT_INTERP, PMC *self)
+pcf_i_ii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ii4(PARROT_INTERP, PMC *self)
+pcf_i_ii4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
PMC *t_2; long i_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, &i_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_ii4i(PARROT_INTERP, PMC *self)
+pcf_i_ii4i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, long *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
PMC *t_2; long i_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIPI", &t_0, &t_1, &t_2, &t_3);
i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, &i_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_iiii(PARROT_INTERP, PMC *self)
+pcf_i_iiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iiilsp(PARROT_INTERP, PMC *self)
+pcf_i_iiilsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, int, long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
@@ -3267,12 +3536,13 @@
INTVAL t_3;
INTVAL t_4;
PMC *t_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3281,312 +3551,339 @@
}
static void
-pcf_i_iil(PARROT_INTERP, PMC *self)
+pcf_i_iil(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iili(PARROT_INTERP, PMC *self)
+pcf_i_iili(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, long, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iip(PARROT_INTERP, PMC *self)
+pcf_i_iip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iit(PARROT_INTERP, PMC *self)
+pcf_i_iit(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIS", &t_0, &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_iiti(PARROT_INTERP, PMC *self)
+pcf_i_iiti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IISI", &t_0, &t_1, &ts_2, &t_3);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_ilsp(PARROT_INTERP, PMC *self)
+pcf_i_ilsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iti(PARROT_INTERP, PMC *self)
+pcf_i_iti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_l(PARROT_INTERP, PMC *self)
+pcf_i_l(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_li(PARROT_INTERP, PMC *self)
+pcf_i_li(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_lp(PARROT_INTERP, PMC *self)
+pcf_i_lp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_lsp(PARROT_INTERP, PMC *self)
+pcf_i_lsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_p33(PARROT_INTERP, PMC *self)
+pcf_i_p33(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; int i_1;
PMC *t_2; int i_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_p333(PARROT_INTERP, PMC *self)
+pcf_i_p333(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int *, int *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; int i_1;
PMC *t_2; int i_2;
PMC *t_3; int i_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
VTABLE_set_integer_native(interp, t_3, i_3);
}
static void
-pcf_i_p333333(PARROT_INTERP, PMC *self)
+pcf_i_p333333(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int *, int *, int *, int *, int *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3596,12 +3893,13 @@
PMC *t_4; int i_4;
PMC *t_5; int i_5;
PMC *t_6; int i_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPPPP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);i_4 = VTABLE_get_integer(interp, t_4);i_5 = VTABLE_get_integer(interp, t_5);i_6 = VTABLE_get_integer(interp, t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3, &i_4, &i_5, &i_6);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
@@ -3611,151 +3909,164 @@
VTABLE_set_integer_native(interp, t_6, i_6);
}
static void
-pcf_i_p4(PARROT_INTERP, PMC *self)
+pcf_i_p4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; long i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_i_p42p(PARROT_INTERP, PMC *self)
+pcf_i_p42p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long *, short *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; long i_1;
PMC *t_2; short i_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_p4i(PARROT_INTERP, PMC *self)
+pcf_i_p4i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; long i_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_i_pb(PARROT_INTERP, PMC *self)
+pcf_i_pb(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
STRING *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pii(PARROT_INTERP, PMC *self)
+pcf_i_pii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pii4(PARROT_INTERP, PMC *self)
+pcf_i_pii4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
PMC *t_3; long i_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_3, i_3);
}
static void
-pcf_i_pii4i(PARROT_INTERP, PMC *self)
+pcf_i_pii4i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, long *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3763,12 +4074,13 @@
INTVAL t_2;
PMC *t_3; long i_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIPI", &t_0, &t_1, &t_2, &t_3, &t_4);
i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3776,38 +4088,41 @@
}
static void
-pcf_i_piii(PARROT_INTERP, PMC *self)
+pcf_i_piii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_piiiiii(PARROT_INTERP, PMC *self)
+pcf_i_piiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3817,12 +4132,13 @@
INTVAL t_4;
INTVAL t_5;
INTVAL t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3832,13 +4148,14 @@
}
static void
-pcf_i_piiilsp(PARROT_INTERP, PMC *self)
+pcf_i_piiilsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, int, long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3848,12 +4165,13 @@
INTVAL t_4;
INTVAL t_5;
PMC *t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3863,38 +4181,41 @@
}
static void
-pcf_i_piil(PARROT_INTERP, PMC *self)
+pcf_i_piil(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_piili(PARROT_INTERP, PMC *self)
+pcf_i_piili(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, long, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3902,12 +4223,13 @@
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3915,38 +4237,41 @@
}
static void
-pcf_i_piit(PARROT_INTERP, PMC *self)
+pcf_i_piit(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
char *t_3; STRING *ts_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIS", &t_0, &t_1, &t_2, &ts_3);
t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_3) Parrot_str_free_cstring(t_3);
}
static void
-pcf_i_piiti(PARROT_INTERP, PMC *self)
+pcf_i_piiti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, int, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3954,12 +4279,13 @@
INTVAL t_2;
char *t_3; STRING *ts_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIISI", &t_0, &t_1, &t_2, &ts_3, &t_4);
t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3967,13 +4293,14 @@
}
static void
-pcf_i_pilsp(PARROT_INTERP, PMC *self)
+pcf_i_pilsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -3981,12 +4308,13 @@
INTVAL t_2;
INTVAL t_3;
PMC *t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIP", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -3994,59 +4322,64 @@
}
static void
-pcf_i_pli(PARROT_INTERP, PMC *self)
+pcf_i_pli(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pll(PARROT_INTERP, PMC *self)
+pcf_i_pll(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pllllllll(PARROT_INTERP, PMC *self)
+pcf_i_pllllllll(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long, long, long, long, long, long, long, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -4058,12 +4391,13 @@
INTVAL t_6;
INTVAL t_7;
INTVAL t_8;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -4075,105 +4409,114 @@
}
static void
-pcf_i_plp(PARROT_INTERP, PMC *self)
+pcf_i_plp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_plsp(PARROT_INTERP, PMC *self)
+pcf_i_plsp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, long, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pp(PARROT_INTERP, PMC *self)
+pcf_i_pp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ppi(PARROT_INTERP, PMC *self)
+pcf_i_ppi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ppiiiiiiii(PARROT_INTERP, PMC *self)
+pcf_i_ppiiiiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -4186,12 +4529,13 @@
INTVAL t_7;
INTVAL t_8;
INTVAL t_9;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -4204,627 +4548,682 @@
}
static void
-pcf_i_pppp(PARROT_INTERP, PMC *self)
+pcf_i_pppp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
PMC *t_2;
PMC *t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_psp(PARROT_INTERP, PMC *self)
+pcf_i_psp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pti(PARROT_INTERP, PMC *self)
+pcf_i_pti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
char *t_1; STRING *ts_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_pitl(PARROT_INTERP, PMC *self)
+pcf_i_pitl(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, char *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
char *t_2; STRING *ts_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISI", &t_0, &t_1, &ts_2, &t_3);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_s(PARROT_INTERP, PMC *self)
+pcf_i_s(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_s22(PARROT_INTERP, PMC *self)
+pcf_i_s22(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, short *, short *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1; short i_1;
PMC *t_2; short i_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_0, &t_1, &t_2);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, &i_1, &i_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_i_s222(PARROT_INTERP, PMC *self)
+pcf_i_s222(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, short *, short *, short *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1; short i_1;
PMC *t_2; short i_2;
PMC *t_3; short i_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPPP", &t_0, &t_1, &t_2, &t_3);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, &i_1, &i_2, &i_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
VTABLE_set_integer_native(interp, t_3, i_3);
}
static void
-pcf_i_sp(PARROT_INTERP, PMC *self)
+pcf_i_sp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_sss(PARROT_INTERP, PMC *self)
+pcf_i_sss(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, short, short);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ssss(PARROT_INTERP, PMC *self)
+pcf_i_ssss(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, short, short, short);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_t(PARROT_INTERP, PMC *self)
+pcf_i_t(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_i_ti(PARROT_INTERP, PMC *self)
+pcf_i_ti(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(char *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_i_4(PARROT_INTERP, PMC *self)
+pcf_i_4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; long i_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
i_0 = VTABLE_get_integer(interp, t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(&i_0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_0, i_0);
}
static void
-pcf_i_4i(PARROT_INTERP, PMC *self)
+pcf_i_4i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; long i_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
i_0 = VTABLE_get_integer(interp, t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(&i_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_0, i_0);
}
static void
-pcf_i_42p(PARROT_INTERP, PMC *self)
+pcf_i_42p(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(long *, short *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; long i_0;
PMC *t_1; short i_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(&i_0, &i_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_0, i_0);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_l_ii(PARROT_INTERP, PMC *self)
+pcf_l_ii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_l_l4(PARROT_INTERP, PMC *self)
+pcf_l_l4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(long, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1; long i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(t_0, &i_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_l_pi(PARROT_INTERP, PMC *self)
+pcf_l_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_l_pii(PARROT_INTERP, PMC *self)
+pcf_l_pii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_l_p33l(PARROT_INTERP, PMC *self)
+pcf_l_p33l(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(void *, int *, int *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1; int i_1;
PMC *t_2; int i_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_l_33l(PARROT_INTERP, PMC *self)
+pcf_l_33l(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef long(* func_t)(int *, int *, long);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; int i_0;
PMC *t_1; int i_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (long)(*fn_pointer)(&i_0, &i_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_0, i_0);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_p_(PARROT_INTERP, PMC *self)
+pcf_p_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)();
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_B(PARROT_INTERP, PMC *self)
+pcf_p_B(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char **);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(&t_0);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_b(PARROT_INTERP, PMC *self)
+pcf_p_b(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
STRING *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(Buffer_bufstart(t_0));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_Jt(PARROT_INTERP, PMC *self)
+pcf_p_Jt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(PARROT_INTERP, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(interp, t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_p_i(PARROT_INTERP, PMC *self)
+pcf_p_i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_ii(PARROT_INTERP, PMC *self)
+pcf_p_ii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_iiii(PARROT_INTERP, PMC *self)
+pcf_p_iiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -4832,29 +5231,31 @@
INTVAL t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_iiiiii(PARROT_INTERP, PMC *self)
+pcf_p_iiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -4864,16 +5265,17 @@
INTVAL t_3;
INTVAL t_4;
INTVAL t_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
@@ -4882,13 +5284,14 @@
}
static void
-pcf_p_iiiiiiii(PARROT_INTERP, PMC *self)
+pcf_p_iiiiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, int, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -4900,16 +5303,17 @@
INTVAL t_5;
INTVAL t_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
@@ -4920,41 +5324,44 @@
}
static void
-pcf_p_pii(PARROT_INTERP, PMC *self)
+pcf_p_pii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_p_piiii(PARROT_INTERP, PMC *self)
+pcf_p_piiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -4963,16 +5370,17 @@
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
@@ -4980,65 +5388,70 @@
}
static void
-pcf_p_t(PARROT_INTERP, PMC *self)
+pcf_p_t(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_tpp(PARROT_INTERP, PMC *self)
+pcf_p_tpp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *, void *, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
char *t_0; STRING *ts_0;
PMC *t_1;
PMC *t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPP", &ts_0, &t_1, &t_2);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_p_ttttttt(PARROT_INTERP, PMC *self)
+pcf_p_ttttttt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(char *, char *, char *, char *, char *, char *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -5049,16 +5462,17 @@
char *t_4; STRING *ts_4;
char *t_5; STRING *ts_5;
char *t_6; STRING *ts_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSSSSSS", &ts_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5, &ts_6);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
if (t_1) Parrot_str_free_cstring(t_1);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -5068,385 +5482,421 @@
if (t_6) Parrot_str_free_cstring(t_6);
}
static void
-pcf_s_(PARROT_INTERP, PMC *self)
+pcf_s_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef short(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (short)(*fn_pointer)();
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_t_(PARROT_INTERP, PMC *self)
+pcf_t_(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ UNUSED(return_data); /* Potentially unused, at least */
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)();
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_i(PARROT_INTERP, PMC *self)
+pcf_t_i(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
INTVAL t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_ii(PARROT_INTERP, PMC *self)
+pcf_t_ii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0, t_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_pi(PARROT_INTERP, PMC *self)
+pcf_t_pi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_pii(PARROT_INTERP, PMC *self)
+pcf_t_pii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_t(PARROT_INTERP, PMC *self)
+pcf_t_t(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_t_tl4(PARROT_INTERP, PMC *self)
+pcf_t_tl4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(char *, long, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
char *t_0; STRING *ts_0;
INTVAL t_1;
PMC *t_2; long i_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &ts_0, &t_1, &t_2);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0, t_1, &i_2);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
VTABLE_set_integer_native(interp, t_2, i_2);
}
static void
-pcf_t_t4(PARROT_INTERP, PMC *self)
+pcf_t_t4(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(char *, long *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
char *t_0; STRING *ts_0;
PMC *t_1; long i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(t_0, &i_1);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_i_sc(PARROT_INTERP, PMC *self)
+pcf_i_sc(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(short, char);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_s_sc(PARROT_INTERP, PMC *self)
+pcf_s_sc(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef short(* func_t)(short, char);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (short)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_c_sc(PARROT_INTERP, PMC *self)
+pcf_c_sc(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char(* func_t)(short, char);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char)(*fn_pointer)(t_0, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_iii(PARROT_INTERP, PMC *self)
+pcf_i_iii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_i3(PARROT_INTERP, PMC *self)
+pcf_i_i3(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_0;
PMC *t_1; int i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, &i_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_t_b(PARROT_INTERP, PMC *self)
+pcf_t_b(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
STRING *t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(Buffer_bufstart(t_0));
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
}
static void
-pcf_t_B(PARROT_INTERP, PMC *self)
+pcf_t_B(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef char *(* func_t)(char **);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
char * return_data;
STRING *final_destination;
char *t_0; STRING *ts_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (char *)(*fn_pointer)(&t_0);
final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "S", final_destination);
if (t_0) Parrot_str_free_cstring(t_0);
}
static void
-pcf_v_P(PARROT_INTERP, PMC *self)
+pcf_v_P(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0);
}
static void
-pcf_v_pP(PARROT_INTERP, PMC *self)
+pcf_v_pP(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
@@ -5454,68 +5904,74 @@
}
static void
-pcf_p_ip(PARROT_INTERP, PMC *self)
+pcf_p_ip(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(int, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
INTVAL t_0;
PMC *t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
}
static void
-pcf_i_33(PARROT_INTERP, PMC *self)
+pcf_i_33(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(int *, int *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0; int i_0;
PMC *t_1; int i_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(&i_0, &i_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
VTABLE_set_integer_native(interp, t_0, i_0);
VTABLE_set_integer_native(interp, t_1, i_1);
}
static void
-pcf_v_pii(PARROT_INTERP, PMC *self)
+pcf_v_pii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0;
INTVAL t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
@@ -5524,19 +5980,21 @@
}
static void
-pcf_v_JO(PARROT_INTERP, PMC *self)
+pcf_v_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(interp, t_1);
@@ -5544,124 +6002,136 @@
}
static void
-pcf_i_JO(PARROT_INTERP, PMC *self)
+pcf_i_JO(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JOi(PARROT_INTERP, PMC *self)
+pcf_i_JOi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
INTVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_JOt(PARROT_INTERP, PMC *self)
+pcf_i_JOt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC * t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_Jt(PARROT_INTERP, PMC *self)
+pcf_i_Jt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_1; STRING *ts_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
}
static void
-pcf_i_Ji(PARROT_INTERP, PMC *self)
+pcf_i_Ji(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(PARROT_INTERP, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(interp, t_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_v_Vi(PARROT_INTERP, PMC *self)
+pcf_v_Vi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void **, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0; void *v_0;
INTVAL t_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
v_0 = VTABLE_get_pointer(interp, t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(&v_0, t_1);
@@ -5669,13 +6139,14 @@
}
static void
-pcf_p_ppiii(PARROT_INTERP, PMC *self)
+pcf_p_ppiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, void *, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -5684,16 +6155,17 @@
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
@@ -5701,13 +6173,14 @@
}
static void
-pcf_p_ppiiiiiii(PARROT_INTERP, PMC *self)
+pcf_p_ppiiiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void *(* func_t)(void *, void *, int, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC * final_destination = PMCNULL;
@@ -5720,16 +6193,17 @@
INTVAL t_6;
INTVAL t_7;
INTVAL t_8;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8);
if (return_data != NULL) {
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "P", final_destination);
@@ -5741,38 +6215,41 @@
}
static void
-pcf_i_ppii(PARROT_INTERP, PMC *self)
+pcf_i_ppii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
INTVAL t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPII", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_ppiii(PARROT_INTERP, PMC *self)
+pcf_i_ppiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5780,12 +6257,13 @@
INTVAL t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5793,13 +6271,14 @@
}
static void
-pcf_i_ppiiii(PARROT_INTERP, PMC *self)
+pcf_i_ppiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5808,12 +6287,13 @@
INTVAL t_3;
INTVAL t_4;
INTVAL t_5;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5822,13 +6302,14 @@
}
static void
-pcf_i_ppiiiii(PARROT_INTERP, PMC *self)
+pcf_i_ppiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5838,12 +6319,13 @@
INTVAL t_4;
INTVAL t_5;
INTVAL t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5853,13 +6335,14 @@
}
static void
-pcf_i_ppiiiiii(PARROT_INTERP, PMC *self)
+pcf_i_ppiiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5870,12 +6353,13 @@
INTVAL t_5;
INTVAL t_6;
INTVAL t_7;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5886,61 +6370,66 @@
}
static void
-pcf_i_ppt(PARROT_INTERP, PMC *self)
+pcf_i_ppt(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, char *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
char *t_2; STRING *ts_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPS", &t_0, &t_1, &ts_2);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
}
static void
-pcf_i_pppi(PARROT_INTERP, PMC *self)
+pcf_i_pppi(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
PMC *t_1;
PMC *t_2;
INTVAL t_3;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pppii(PARROT_INTERP, PMC *self)
+pcf_i_pppii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5948,12 +6437,13 @@
PMC *t_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPII", &t_0, &t_1, &t_2, &t_3, &t_4);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5961,13 +6451,14 @@
}
static void
-pcf_i_pppiiii(PARROT_INTERP, PMC *self)
+pcf_i_pppiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -5977,12 +6468,13 @@
INTVAL t_4;
INTVAL t_5;
INTVAL t_6;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4, t_5, t_6);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -5992,13 +6484,14 @@
}
static void
-pcf_i_ppppiiiiii(PARROT_INTERP, PMC *self)
+pcf_i_ppppiiiiii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, void *, void *, void *, int, int, int, int, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -6011,12 +6504,13 @@
INTVAL t_7;
INTVAL t_8;
INTVAL t_9;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), t_4, t_5, t_6, t_7, t_8, t_9);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
@@ -6029,21 +6523,23 @@
}
static void
-pcf_v_fff(PARROT_INTERP, PMC *self)
+pcf_v_fff(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(float, float, float);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
FLOATVAL t_0;
FLOATVAL t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "NNN", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(t_0, t_1, t_2);
@@ -6052,40 +6548,44 @@
}
static void
-pcf_v_V(PARROT_INTERP, PMC *self)
+pcf_v_V(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void **);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0; void *v_0;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
v_0 = VTABLE_get_pointer(interp, t_0);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(&v_0);
VTABLE_set_pointer(interp, t_0, v_0);
}
static void
-pcf_v_VVV(PARROT_INTERP, PMC *self)
+pcf_v_VVV(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef void(* func_t)(void **, void **, void **);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
void * return_data;
PMC *t_0; void *v_0;
PMC *t_1; void *v_1;
PMC *t_2; void *v_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
v_0 = VTABLE_get_pointer(interp, t_0);v_1 = VTABLE_get_pointer(interp, t_1);v_2 = VTABLE_get_pointer(interp, t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
(*fn_pointer)(&v_0, &v_1, &v_2);
@@ -6094,34 +6594,37 @@
VTABLE_set_pointer(interp, t_2, v_2);
}
static void
-pcf_i_tV(PARROT_INTERP, PMC *self)
+pcf_i_tV(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(char *, void **);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
char *t_0; STRING *ts_0;
PMC *t_1; void *v_1;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;v_1 = VTABLE_get_pointer(interp, t_1);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(t_0, &v_1);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_0) Parrot_str_free_cstring(t_0);
VTABLE_set_pointer(interp, t_1, v_1);
}
static void
-pcf_i_ptiVp(PARROT_INTERP, PMC *self)
+pcf_i_ptiVp(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, char *, int, void **, void *);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -6129,12 +6632,13 @@
INTVAL t_2;
PMC *t_3; void *v_3;
PMC *t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPP", &t_0, &ts_1, &t_2, &t_3, &t_4);
t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;v_3 = VTABLE_get_pointer(interp, t_3);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &v_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_1) Parrot_str_free_cstring(t_1);
@@ -6142,36 +6646,39 @@
}
static void
-pcf_i_pid(PARROT_INTERP, PMC *self)
+pcf_i_pid(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, double);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
INTVAL t_1;
FLOATVAL t_2;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIN", &t_0, &t_1, &t_2);
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
}
static void
-pcf_i_pitii(PARROT_INTERP, PMC *self)
+pcf_i_pitii(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
{
typedef int(* func_t)(void *, int, char *, int, int);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
INTVAL return_data;
PMC *t_0;
@@ -6179,12 +6686,13 @@
char *t_2; STRING *ts_2;
INTVAL t_3;
INTVAL t_4;
+ UNUSED(return_data); /* Potentially unused, at least */
Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISII", &t_0, &t_1, &ts_2, &t_3, &t_4);
t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
return_data = (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "I", return_data);
if (t_2) Parrot_str_free_cstring(t_2);
@@ -6194,19 +6702,14 @@
void
Parrot_nci_load_extra_thunks(PARROT_INTERP)
-;
- void
-Parrot_nci_load_extra_thunks(PARROT_INTERP)
{
- PMC *iglobals;
+ PMC * const iglobals = interp->iglobals;
PMC *nci_funcs;
PMC *temp_pmc;
- iglobals = interp->iglobals;
PARROT_ASSERT(!(PMC_IS_NULL(iglobals)));
- nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals,
- IGLOBALS_NCI_FUNCS);
+ nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
PARROT_ASSERT(!(PMC_IS_NULL(nci_funcs)));
temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
Modified: branches/ops_pct/src/nci_test.c
==============================================================================
--- branches/ops_pct/src/nci_test.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/nci_test.c Wed May 5 08:45:29 2010 (r46302)
@@ -892,10 +892,10 @@
nci_cb_D4(cb_D4_func times_ten, void* user_data)
{
int cnt;
- for (cnt = 0; cnt < 9; cnt++)
+ for (cnt = 0; cnt < 9; ++cnt)
{
(times_ten)(user_data, &int_cb_D4);
- int_cb_D4++;
+ ++int_cb_D4;
}
return;
Modified: branches/ops_pct/src/oo.c
==============================================================================
--- branches/ops_pct/src/oo.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/oo.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2007-2009, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -130,7 +130,7 @@
}
}
- /* Import any vtable methods. */
+ /* Import any vtables. */
Parrot_pcc_invoke_method_from_c_args(interp, ns, CONST_STRING(interp, "get_associated_vtable_methods"), "->P", &vtable_overrides);
if (!PMC_IS_NULL(vtable_overrides)) {
@@ -169,49 +169,51 @@
ASSERT_ARGS(Parrot_oo_get_class)
PMC *classobj = PMCNULL;
- if (PObj_is_class_TEST(key))
- classobj = key;
- else {
- /* Fast select of behavior based on type of the lookup key */
- switch (key->vtable->base_type) {
- case enum_class_NameSpace:
- classobj = VTABLE_get_class(interp, key);
- break;
- case enum_class_String:
- case enum_class_Key:
- case enum_class_ResizableStringArray:
- {
- PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp,
- interp->HLL_namespace,
- Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
- PMC * const ns = Parrot_get_namespace_keyed(interp,
- hll_ns, key);
+ if (!PMC_IS_NULL(key)) {
+ if (PObj_is_class_TEST(key))
+ classobj = key;
+ else {
+ /* Fast select of behavior based on type of the lookup key */
+ switch (key->vtable->base_type) {
+ case enum_class_NameSpace:
+ classobj = VTABLE_get_class(interp, key);
+ break;
+ case enum_class_String:
+ case enum_class_Key:
+ case enum_class_ResizableStringArray:
+ {
+ PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp,
+ interp->HLL_namespace,
+ Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
+ PMC * const ns = Parrot_get_namespace_keyed(interp,
+ hll_ns, key);
- if (!PMC_IS_NULL(ns))
- classobj = VTABLE_get_class(interp, ns);
+ if (!PMC_IS_NULL(ns))
+ classobj = VTABLE_get_class(interp, ns);
+ }
+ default:
+ break;
}
- default:
- break;
}
- }
- /* If the PMCProxy doesn't exist yet for the given key, we look up the
- type ID here and create a new one */
- if (PMC_IS_NULL(classobj)) {
- INTVAL type;
- const INTVAL base_type = key->vtable->base_type;
-
- /* This is a hack! All PMCs should be able to be handled through
- a single codepath, and all of them should be able to avoid
- stringification because it's so imprecise. */
- if (base_type == enum_class_Key
- || base_type == enum_class_ResizableStringArray
- || base_type == enum_class_String)
- type = Parrot_pmc_get_type(interp, key);
- else
- type = Parrot_pmc_get_type_str(interp, VTABLE_get_string(interp, key));
+ /* If the PMCProxy doesn't exist yet for the given key, we look up the
+ type ID here and create a new one */
+ if (PMC_IS_NULL(classobj)) {
+ INTVAL type;
+ const INTVAL base_type = key->vtable->base_type;
+
+ /* This is a hack! All PMCs should be able to be handled through
+ a single codepath, and all of them should be able to avoid
+ stringification because it's so imprecise. */
+ if (base_type == enum_class_Key
+ || base_type == enum_class_ResizableStringArray
+ || base_type == enum_class_String)
+ type = Parrot_pmc_get_type(interp, key);
+ else
+ type = Parrot_pmc_get_type_str(interp, VTABLE_get_string(interp, key));
- classobj = get_pmc_proxy(interp, type);
+ classobj = get_pmc_proxy(interp, type);
+ }
}
return classobj;
@@ -219,8 +221,7 @@
/*
-=item C<PMC * Parrot_oo_clone_object(PARROT_INTERP, PMC *pmc, PMC *class_, PMC
-*dest)>
+=item C<PMC * Parrot_oo_clone_object(PARROT_INTERP, PMC *pmc, PMC *dest)>
Clone an Object PMC. If an existing PMC C<dest> is provided, reuse that
PMC to store copies of the data. Otherwise, create a new PMC and populate
@@ -232,11 +233,10 @@
PARROT_CANNOT_RETURN_NULL
PMC *
-Parrot_oo_clone_object(PARROT_INTERP, ARGIN(PMC *pmc),
- ARGMOD_NULLOK(PMC *class_), ARGMOD_NULLOK(PMC *dest))
+Parrot_oo_clone_object(PARROT_INTERP, ARGIN(PMC *pmc), ARGMOD_NULLOK(PMC *dest))
{
ASSERT_ARGS(Parrot_oo_clone_object)
- Parrot_Object_attributes *obj;
+ Parrot_Object_attributes *obj = PARROT_OBJECT(pmc);
Parrot_Object_attributes *cloned_guts;
Parrot_Class_attributes *_class;
PMC *cloned;
@@ -244,13 +244,9 @@
INTVAL i, num_attrs;
if (!PMC_IS_NULL(dest)) {
- PARROT_ASSERT(!PMC_IS_NULL(class_));
- PARROT_ASSERT(class_->vtable->base_type == enum_class_Class);
- obj = PARROT_OBJECT(pmc);
cloned = dest;
}
else {
- obj = PARROT_OBJECT(pmc);
cloned = Parrot_pmc_new_noinit(interp, enum_class_Object);
}
@@ -268,10 +264,10 @@
/* Now clone attributes list.class. */
cloned_guts = (Parrot_Object_attributes *) PMC_data(cloned);
cloned_guts->_class = obj->_class;
- cloned_guts->attrib_store = NULL;
+ cloned_guts->attrib_store = NULL; /* XXX Do we need to set ->attrib_store twice? */
cloned_guts->attrib_store = VTABLE_clone(interp, obj->attrib_store);
num_attrs = VTABLE_elements(interp, cloned_guts->attrib_store);
- for (i = 0; i < num_attrs; i++) {
+ for (i = 0; i < num_attrs; ++i) {
PMC * const to_clone = VTABLE_get_pmc_keyed_int(interp, cloned_guts->attrib_store, i);
if (!PMC_IS_NULL(to_clone)) {
VTABLE_set_pmc_keyed_int(interp, cloned_guts->attrib_store, i,
@@ -282,9 +278,10 @@
/* Some of the attributes may have been the PMCs providing storage for any
* PMCs we inherited from; also need to clone those. */
if (CLASS_has_alien_parents_TEST(obj->_class)) {
+ int j;
/* Locate any PMC parents. */
- for (i = 0; i < num_classes; i++) {
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+ for (j = 0; j < num_classes; ++j) {
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp, _class->all_parents, j);
if (cur_class->vtable->base_type == enum_class_PMCProxy) {
/* Clone this PMC too. */
STRING * const proxy = CONST_STRING(interp, "proxy");
@@ -342,9 +339,7 @@
/* Create proxy if not found */
if (PMC_IS_NULL(proxy)) {
- PMC * const type_num = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, type_num, type);
- proxy = Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
+ proxy = Parrot_pmc_new_init_int(interp, enum_class_PMCProxy, type);
Parrot_pcc_invoke_method_from_c_args(interp, pmc_ns, CONST_STRING(interp, "set_class"), "P->", proxy);
}
return proxy;
@@ -438,10 +433,9 @@
ARGIN(PMC *classobj), ARGIN(STRING *name))
{
ASSERT_ARGS(Parrot_oo_find_vtable_override_for_class)
- Parrot_Class_attributes *class_info;
+ const Parrot_Class_attributes * const class_info = PARROT_CLASS(classobj);;
PARROT_ASSERT(PObj_is_class_TEST(classobj));
- class_info = PARROT_CLASS(classobj);
return VTABLE_get_pmc_keyed_str(interp, class_info->vtable_overrides, name);
}
@@ -471,11 +465,11 @@
VTABLE_get_pmc_keyed_str(interp, _class->parent_overrides, name);
if (PMC_IS_NULL(result)) {
- /* Walk and search for the vtable method. */
+ /* Walk and search for the vtable. */
const INTVAL num_classes = VTABLE_elements(interp, _class->all_parents);
INTVAL i;
- for (i = 0; i < num_classes; i++) {
+ for (i = 0; i < num_classes; ++i) {
/* Get the class. */
PMC * const cur_class =
VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
@@ -653,11 +647,10 @@
}
{
if (!typeid_exists) {
- PMC * const classname_hash = interp->class_hash;
- PMC * const item = Parrot_pmc_new(interp, enum_class_Integer);
/* set entry in name->type hash */
- VTABLE_set_integer_native(interp, item, type);
-
+ PMC * const classname_hash = interp->class_hash;
+ PMC * const item = Parrot_pmc_new_init_int(interp,
+ enum_class_Integer, type);
VTABLE_set_pmc_keyed(interp, classname_hash, name, item);
}
}
@@ -691,7 +684,7 @@
if (!mc)
return;
- for (type = 0; type < mc->mc_size; type++) {
+ for (type = 0; type < mc->mc_size; ++type) {
if (!mc->idx[type])
continue;
@@ -744,7 +737,7 @@
Caches * const mc = interp->caches;
/* mc->idx[type][bits] = e; */
- for (i = 0; i < mc->mc_size; i++) {
+ for (i = 0; i < mc->mc_size; ++i) {
if (mc->idx[i])
invalidate_type_caches(interp, i);
}
@@ -808,8 +801,8 @@
invalidate_all_caches(PARROT_INTERP)
{
ASSERT_ARGS(invalidate_all_caches)
- UINTVAL i;
- for (i = 1; i < (UINTVAL)interp->n_vtable_max; ++i)
+ int i;
+ for (i = 1; i < interp->n_vtable_max; ++i)
invalidate_type_caches(interp, i);
}
@@ -1044,13 +1037,26 @@
PMC * const mro = _class->vtable->mro;
const INTVAL n = VTABLE_elements(interp, mro);
+ STRING * const methods_str = CONST_STRING(interp, "methods");
+ STRING * const class_str = CONST_STRING(interp, "class");
for (i = 0; i < n; ++i) {
- PMC *method, *ns;
+ PMC * const _class = VTABLE_get_pmc_keyed_int(interp, mro, i);
+ PMC * const ns = VTABLE_get_namespace(interp, _class);
+ PMC * const class_obj = VTABLE_inspect_str(interp, ns, class_str);
+ PMC *method = PMCNULL;
+ PMC * method_hash;
+
+ if (PMC_IS_NULL(class_obj))
+ method_hash = VTABLE_inspect_str(interp, ns, methods_str);
+ else
+ method_hash = VTABLE_inspect_str(interp, class_obj, methods_str);
+
+ if (!PMC_IS_NULL(method_hash))
+ method = VTABLE_get_pmc_keyed_str(interp, method_hash, method_name);
- _class = VTABLE_get_pmc_keyed_int(interp, mro, i);
- ns = VTABLE_get_namespace(interp, _class);
- method = VTABLE_get_pmc_keyed_str(interp, ns, method_name);
+ if (PMC_IS_NULL(method))
+ method = VTABLE_get_pmc_keyed_str(interp, ns, method_name);
TRACE_FM(interp, _class, method_name, method);
@@ -1087,7 +1093,7 @@
/* Try and find something appropriate to add to the MRO - basically, the
* first list head that is not in the tail of all the other lists. */
- for (i = 0; i < list_count; i++) {
+ for (i = 0; i < list_count; ++i) {
PMC * const cand_list = VTABLE_get_pmc_keyed_int(interp, merge_list, i);
PMC *cand_class;
@@ -1098,9 +1104,9 @@
continue;
cand_class = VTABLE_get_pmc_keyed_int(interp, cand_list, 0);
- cand_count++;
+ ++cand_count;
- for (j = 0; j < list_count; j++) {
+ for (j = 0; j < list_count; ++j) {
/* Skip the current list. */
if (j != i) {
/* Is it in the tail? If so, reject. */
@@ -1110,7 +1116,7 @@
const int check_length = VTABLE_elements(interp, check_list);
int k;
- for (k = 1; k < check_length; k++) {
+ for (k = 1; k < check_length; ++k) {
if (VTABLE_get_pmc_keyed_int(interp, check_list, k) ==
cand_class) {
reject = 1;
@@ -1137,13 +1143,13 @@
"Could not build C3 linearization: ambiguous hierarchy");
/* Otherwise, remove what was accepted from the merge lists. */
- for (i = 0; i < list_count; i++) {
+ for (i = 0; i < list_count; ++i) {
- PMC * const list = VTABLE_get_pmc_keyed_int(interp, merge_list, i);
- const INTVAL list_count = VTABLE_elements(interp, list);
+ PMC * const list = VTABLE_get_pmc_keyed_int(interp, merge_list, i);
+ const INTVAL sublist_count = VTABLE_elements(interp, list);
INTVAL j;
- for (j = 0; j < list_count; j++) {
+ for (j = 0; j < sublist_count; ++j) {
if (VTABLE_get_pmc_keyed_int(interp, list, j) == accepted) {
VTABLE_delete_keyed_int(interp, list, j);
break;
@@ -1191,7 +1197,7 @@
INTVAL parent_count;
/* Now get immediate parents list. */
- if (!immediate_parents)
+ if (PMC_IS_NULL(immediate_parents))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_METHOD_NOT_FOUND,
"Failed to get parents list from class!");
@@ -1207,7 +1213,7 @@
/* Otherwise, need to do merge. For that, need linearizations of all of
* our parents added to the merge list. */
merge_list = PMCNULL;
- for (i = 0; i < parent_count; i++) {
+ for (i = 0; i < parent_count; ++i) {
PMC * const lin = Parrot_ComputeMRO_C3(interp,
VTABLE_get_pmc_keyed_int(interp, immediate_parents, i));
@@ -1275,7 +1281,7 @@
/* Check we have not already composed the role; if so, just ignore it. */
INTVAL roles_count = VTABLE_elements(interp, roles_list);
- for (i = 0; i < roles_count; i++)
+ for (i = 0; i < roles_count; ++i)
if (VTABLE_get_pmc_keyed_int(interp, roles_list, i) == role)
return;
@@ -1303,7 +1309,7 @@
if (got_exclude) {
const int exclude_count = VTABLE_elements(interp, exclude);
- for (i = 0; i < exclude_count; i++) {
+ for (i = 0; i < exclude_count; ++i) {
const STRING * const check =
VTABLE_get_string_keyed_int(interp, exclude, i);
@@ -1399,7 +1405,7 @@
/* Class already has a multi-sub; need to merge our methods into it. */
const INTVAL num_subs = VTABLE_elements(interp, cur_method);
INTVAL j;
- for (j = 0; j < num_subs; j++)
+ for (j = 0; j < num_subs; ++j)
VTABLE_push_pmc(interp, cur_entry, VTABLE_get_pmc_keyed_int(interp,
cur_method, j));
}
@@ -1419,7 +1425,7 @@
/* Add this role to the roles list. */
VTABLE_push_pmc(interp, roles_list, role);
- roles_count++;
+ ++roles_count;
/* As a result of composing this role, we will also now do the roles
* that it did itself. Note that we already have the correct methods
@@ -1428,13 +1434,13 @@
Parrot_pcc_invoke_method_from_c_args(interp, role, CONST_STRING(interp, "roles"), "->P", &roles_of_role);
roles_of_role_count = VTABLE_elements(interp, roles_of_role);
- for (i = 0; i < roles_of_role_count; i++) {
+ for (i = 0; i < roles_of_role_count; ++i) {
/* Only add if we don't already have it in the list. */
PMC * const cur_role = VTABLE_get_pmc_keyed_int(interp,
roles_of_role, i);
INTVAL j;
- for (j = 0; j < roles_count; j++) {
+ for (j = 0; j < roles_count; ++j) {
if (VTABLE_get_pmc_keyed_int(interp, roles_list, j) == cur_role) {
/* We ain't be havin' it. */
VTABLE_push_pmc(interp, roles_list, cur_role);
Modified: branches/ops_pct/src/ops/bit.ops
==============================================================================
--- branches/ops_pct/src/ops/bit.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/bit.ops Wed May 5 08:45:29 2010 (r46302)
@@ -89,8 +89,6 @@
VTABLE_set_integer_native(interp, $1, a & b);
}
-=item B<bands>(inout STR, in STR)
-
=item B<bands>(invar PMC, in STR)
=item B<bands>(invar PMC, invar PMC)
@@ -109,37 +107,33 @@
=cut
-inline op bands(inout STR, in STR) :base_core {
- Parrot_str_bitwise_and(interp, $1, $2, &$1);
-}
-
inline op bands(invar PMC, in STR) :base_core {
STRING * const a = VTABLE_get_string(interp, $1);
- STRING * const b = Parrot_str_bitwise_and(interp, a, $2, NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, $2);
VTABLE_set_string_native(interp, $1, b);
}
inline op bands(invar PMC, invar PMC) :base_core {
STRING * a = VTABLE_get_string(interp, $1);
- STRING * b = VTABLE_get_string(interp, $2);
- a = Parrot_str_bitwise_and(interp, a, b, NULL);
+ STRING * const b = VTABLE_get_string(interp, $2);
+ a = Parrot_str_bitwise_and(interp, a, b);
VTABLE_set_string_native(interp, $1, a);
}
inline op bands(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_and(interp, $2, $3, NULL);
+ $1 = Parrot_str_bitwise_and(interp, $2, $3);
}
inline op bands(invar PMC, invar PMC, in STR) :base_core {
STRING * const a = VTABLE_get_string(interp, $2);
- STRING * const b = Parrot_str_bitwise_and(interp, a, $3, NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, $3);
VTABLE_set_string_native(interp, $1, b);
}
inline op bands(invar PMC, invar PMC, invar PMC) :base_core {
STRING * const a = VTABLE_get_string(interp, $2);
STRING * const b = VTABLE_get_string(interp, $3);
- STRING * const c = Parrot_str_bitwise_and(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_and(interp, a, b);
VTABLE_set_string_native(interp, $1, c);
}
@@ -177,8 +171,6 @@
$1 = b;
}
-=item B<bnots>(inout STR)
-
=item B<bnots>(invar PMC)
=item B<bnots>(out STR, in STR)
@@ -187,23 +179,19 @@
=cut
-inline op bnots(inout STR) :base_core {
- Parrot_str_bitwise_not(interp, $1, &$1);
-}
-
inline op bnots(out STR, in STR) :base_core {
- Parrot_str_bitwise_not(interp, $2, &$1);
+ $1 = Parrot_str_bitwise_not(interp, $2);
}
inline op bnots(invar PMC) :base_core {
- STRING * a = VTABLE_get_string(interp, $1);
- STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+ STRING * const a = VTABLE_get_string(interp, $1);
+ STRING * const b = Parrot_str_bitwise_not(interp, a);
VTABLE_set_string_native(interp, $1, b);
}
inline op bnots(out PMC, invar PMC) :base_core {
- STRING * a = VTABLE_get_string(interp, $2);
- STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+ STRING * const a = VTABLE_get_string(interp, $2);
+ STRING * const b = Parrot_str_bitwise_not(interp, a);
VTABLE_set_string_native(interp, $1, b);
}
@@ -259,8 +247,6 @@
VTABLE_set_integer_native(interp, $1, a | b);
}
-=item B<bors>(inout STR, in STR)
-
=item B<bors>(invar PMC, in STR)
=item B<bors>(invar PMC, invar PMC)
@@ -279,37 +265,33 @@
=cut
-inline op bors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_or(interp, $1, $2, &$1);
-}
-
inline op bors(invar PMC, in STR) :base_core {
STRING * const a = VTABLE_get_string(interp, $1);
- STRING * const b = Parrot_str_bitwise_or(interp, a, $2, NULL);
+ STRING * const b = Parrot_str_bitwise_or(interp, a, $2);
VTABLE_set_string_native(interp, $1, b);
}
inline op bors(invar PMC, invar PMC) :base_core {
STRING * const a = VTABLE_get_string(interp, $1);
STRING * const b = VTABLE_get_string(interp, $2);
- STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, a, b);
VTABLE_set_string_native(interp, $1, c);
}
inline op bors(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_or(interp, $2, $3, NULL);
+ $1 = Parrot_str_bitwise_or(interp, $2, $3);
}
inline op bors(invar PMC, invar PMC, in STR) :base_core {
STRING * const b = VTABLE_get_string(interp, $2);
- STRING * const c = Parrot_str_bitwise_or(interp, b, $3, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, b, $3);
VTABLE_set_string_native(interp, $1, c);
}
inline op bors(invar PMC, invar PMC, invar PMC) :base_core {
STRING * const a = VTABLE_get_string(interp, $2);
STRING * const b = VTABLE_get_string(interp, $3);
- STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, a, b);
VTABLE_set_string_native(interp, $1, c);
}
@@ -559,8 +541,6 @@
VTABLE_set_integer_native(interp, $1, (INTVAL)c);
}
-=item B<bxors>(inout STR, in STR)
-
=item B<bxors>(invar PMC, in STR)
=item B<bxors>(invar PMC, invar PMC)
@@ -579,37 +559,33 @@
=cut
-inline op bxors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_xor(interp, $1, $2, &$1);
-}
-
inline op bxors(invar PMC, in STR) :base_core {
- STRING *a = VTABLE_get_string(interp, $1);
- STRING *b = Parrot_str_bitwise_xor(interp, a, $2, NULL);
+ STRING * const a = VTABLE_get_string(interp, $1);
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, $2);
VTABLE_set_string_native(interp, $1, b);
}
inline op bxors(invar PMC, invar PMC) :base_core {
- STRING *a = VTABLE_get_string(interp, $1);
- STRING *b = VTABLE_get_string(interp, $2);
- STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+ STRING * const a = VTABLE_get_string(interp, $1);
+ STRING * const b = VTABLE_get_string(interp, $2);
+ STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
VTABLE_set_string_native(interp, $1, c);
}
inline op bxors(out STR, in STR, in STR) :base_core {
- $1 = Parrot_str_bitwise_xor(interp, $2, $3, NULL);
+ $1 = Parrot_str_bitwise_xor(interp, $2, $3);
}
inline op bxors(invar PMC, invar PMC, in STR) :base_core {
- STRING *a = VTABLE_get_string(interp, $2);
- STRING *b = Parrot_str_bitwise_xor(interp, a, $3, NULL);
+ STRING * const a = VTABLE_get_string(interp, $2);
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, $3);
VTABLE_set_string_native(interp, $1, b);
}
inline op bxors(invar PMC, invar PMC, invar PMC) :base_core {
- STRING *a = VTABLE_get_string(interp, $2);
- STRING *b = VTABLE_get_string(interp, $3);
- STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+ STRING * const a = VTABLE_get_string(interp, $2);
+ STRING * const b = VTABLE_get_string(interp, $3);
+ STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
VTABLE_set_string_native(interp, $1, c);
}
@@ -621,7 +597,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/cmp.ops
==============================================================================
--- branches/ops_pct/src/ops/cmp.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/cmp.ops Wed May 5 08:45:29 2010 (r46302)
@@ -87,7 +87,7 @@
}
op eq(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (VTABLE_is_equal(interp, $1, temp)) {
@@ -193,7 +193,7 @@
}
op ne(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (!VTABLE_is_equal(interp, $1, temp)) {
@@ -289,7 +289,7 @@
}
op lt(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (VTABLE_cmp(interp, $1, temp) < 0) {
@@ -373,7 +373,7 @@
}
op le(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (VTABLE_cmp(interp, $1, temp) <= 0) {
@@ -433,7 +433,7 @@
}
op gt(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (VTABLE_cmp(interp, $1, temp) > 0) {
@@ -493,7 +493,7 @@
}
op ge(invar PMC, in INT, inconst LABEL) :base_core {
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, $2);
if (VTABLE_cmp(interp, $1, temp) >= 0) {
@@ -1004,7 +1004,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/core.ops
==============================================================================
--- branches/ops_pct/src/ops/core.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/core.ops Wed May 5 08:45:29 2010 (r46302)
@@ -93,13 +93,13 @@
}
inline op check_events() :base_core :flow {
- opcode_t *next = expr NEXT();
+ opcode_t * const next = expr NEXT();
Parrot_cx_check_tasks(interp, interp->scheduler);
goto ADDRESS(next); /* force this being a branch op */
}
inline op check_events__() :internal :flow {
- opcode_t *_this = CUR_OPCODE;
+ opcode_t * const _this = CUR_OPCODE;
/* Restore op_func_table. */
disable_event_checking(interp);
Parrot_cx_handle_tasks(interp, interp->scheduler);
@@ -165,10 +165,10 @@
inline op local_branch(invar PMC, in LABEL) :base_core :check_event :flow {
INTVAL return_addr;
- opcode_t *dest = expr NEXT();
+ opcode_t * const dest = expr NEXT();
if (PMC_IS_NULL($1) || $1->vtable->base_type != enum_class_ResizableIntegerArray) {
- opcode_t * handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Must pass a valid integer array to 'local_branch'");
goto ADDRESS(handler);
@@ -189,10 +189,10 @@
inline op local_return(invar PMC) :flow {
INTVAL return_addr;
opcode_t *next;
- opcode_t *dest = expr NEXT();
+ opcode_t * const dest = expr NEXT();
if (PMC_IS_NULL($1) || $1->vtable->base_type != enum_class_ResizableIntegerArray) {
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Must pass a valid integer array to 'local_return'");
goto ADDRESS(handler);
@@ -204,7 +204,7 @@
/* The return address must be within the current code segment. */
if (! (next >= interp->code->base.data
&& next < (interp->code->base.data + interp->code->base.size))) {
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Address for 'local_return' must be within the current code segment");
goto ADDRESS(handler);
@@ -376,8 +376,11 @@
inline op invokecc(invar PMC) :flow {
PMC * const p = $1;
opcode_t *dest = expr NEXT();
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = NULL;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, NULL);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, p, dest);
@@ -387,8 +390,11 @@
inline op invoke(invar PMC, invar PMC) :flow {
opcode_t *dest = expr NEXT();
PMC * const p = $1;
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = NULL;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, NULL);
interp->current_cont = $2;
dest = VTABLE_invoke(interp, p, dest);
@@ -483,35 +489,17 @@
goto OFFSET(argc + 2);
}
-op get_results(inconst PMC) :flow {
- opcode_t * const raw_returns = CUR_OPCODE;
- PMC * const signature = $1;
- PMC * call_sig;
- INTVAL argc;
-
- call_sig = Parrot_pcc_build_sig_object_returns_from_op(interp,
- Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp)),
- signature, raw_returns);
- Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_sig);
-
- argc = VTABLE_elements(interp, signature);
- goto OFFSET(argc + 2);
-}
-
op get_params(inconst PMC) :flow {
- opcode_t * const raw_params = CUR_OPCODE;
- PMC *caller_ctx, *ctx;
- PMC *ccont, *call_object;
- PMC * const signature = $1;
+ opcode_t * const raw_params = CUR_OPCODE;
+ PMC * const signature = $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);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, caller_ctx);
INTVAL argc;
- ctx = CURRENT_CONTEXT(interp);
- ccont = Parrot_pcc_get_continuation(interp, ctx);
-
- caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
- call_object = Parrot_pcc_get_signature(interp, caller_ctx);
-
- Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params);
+ Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params,
+ PARROT_ERRORS_PARAM_COUNT_FLAG);
/* TODO Factor out with Sub.invoke */
if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
@@ -524,20 +512,50 @@
}
op set_returns(inconst PMC) :flow {
- opcode_t * const raw_returns = CUR_OPCODE;
- PMC *signature = $1;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
- PMC *call_object = Parrot_pcc_get_signature(interp, caller_ctx);
- INTVAL argc = VTABLE_elements(interp, signature);
+ opcode_t * const raw_args = CUR_OPCODE;
+ PMC * const signature = $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))),
+ signature, raw_args);
+ INTVAL argc;
+
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_sig);
+
+ argc = VTABLE_elements(interp, signature);
+ goto OFFSET(argc + 2);
+}
+
+op get_results(inconst PMC) :flow {
+ opcode_t * const raw_params = CUR_OPCODE;
+ PMC * const signature = $1;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *ccont = Parrot_pcc_get_continuation(interp, ctx);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
- Parrot_pcc_fill_returns_from_op(interp, call_object, signature, raw_returns);
+ INTVAL argc;
- Parrot_pcc_set_signature(interp, ctx, NULL);
+ Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
+ argc = VTABLE_elements(interp, signature);
goto OFFSET(argc + 2);
}
+=item B<set_result_info>(in PMC)
+
+Set result_info. See also C<result_info>.
+
+=cut
+
+inline op set_result_info(in PMC) {
+ PMC * const ctx = CURRENT_CONTEXT(interp);
+
+ VTABLE_set_attr_str(interp, ctx,
+ Parrot_str_new_constant(interp, "return_flags"),
+ $1);
+}
+
=item B<result_info>(out PMC)
Returns the get_results signature PMC of the caller. This PMC is a
@@ -548,9 +566,8 @@
=cut
inline op result_info(out PMC) {
- PMC *caller_ctx = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
- PMC *call_object = Parrot_pcc_get_signature(interp, caller_ctx);
- PMC *sig = VTABLE_get_attr_str(interp, call_object,
+ PMC * const caller_ctx = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
+ PMC * const sig = VTABLE_get_attr_str(interp, caller_ctx,
Parrot_str_new_constant(interp, "return_flags"));
/* If no elements, hand back empty array; otherwise PMC. */
@@ -693,21 +710,6 @@
extended exit status, create an exception with severity B<EXCEPT_exit>
and throw it.
-=item B<pushmark>(in INT)
-
-Push a mark labeled $1 onto the dynamic environment.
-
-=item B<popmark>(in INT)
-
-Pop all items off the dynamic environment to the given mark.
-
-=item B<pushaction>(invar PMC)
-
-Push the given Sub PMC $1 onto the dynamic environment. If the dynamic
-environment is unwound due to a C<popmark>, subroutine return, or an exception,
-the subroutine will be invoked with an integer argument: C<0> means a normal
-return; C<1> means an exception has been raised.
-
=cut
inline op push_eh(inconst LABEL) {
@@ -728,8 +730,11 @@
inline op throw(invar PMC) :flow {
PMC * except = $1;
opcode_t *dest;
- opcode_t *const ret = expr NEXT();
- PMC *resume = new_ret_continuation_pmc(interp, ret);
+ opcode_t * const ret = expr NEXT();
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+
+ VTABLE_set_pointer(interp, resume, ret);
+
if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
EXCEPTION_UNIMPLEMENTED,
@@ -755,8 +760,8 @@
inline op rethrow(invar PMC) :flow {
opcode_t * dest;
if (PMC_IS_NULL($1) || $1->vtable->base_type != enum_class_Exception) {
- opcode_t * const ret = expr NEXT();
- PMC * except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
+ opcode_t * const ret = expr NEXT();
+ PMC * const except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
EXCEPTION_UNIMPLEMENTED,
Parrot_str_new_constant(interp, "Not a throwable object"));
dest = Parrot_ex_throw_from_op(interp, except, ret);
@@ -774,10 +779,12 @@
inline op die(in STR) :flow {
opcode_t *dest;
opcode_t * const ret = expr NEXT();
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_error,
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
CONTROL_ERROR, $1);
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -787,12 +794,13 @@
inline op die(in PMC) :flow {
opcode_t *dest;
opcode_t * const ret = expr NEXT();
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- STRING *msg = PMC_IS_NULL($1)
- ? NULL : VTABLE_get_string(interp, $1);
- PMC *exception =
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ STRING * const msg = PMC_IS_NULL($1) ? NULL : VTABLE_get_string(interp, $1);
+ PMC * const exception =
Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -804,10 +812,9 @@
_exit($2);
else {
opcode_t * const ret = expr NEXT();
- PMC *exception = Parrot_ex_build_exception(interp, $1,
- $2, NULL);
- opcode_t * const dest = Parrot_ex_throw_from_op(interp,
- exception, ret);
+ PMC * const exception = Parrot_ex_build_exception(interp, $1, $2, NULL);
+ opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);
+
goto ADDRESS(dest);
}
}
@@ -815,9 +822,11 @@
inline op exit(in INT) :flow {
opcode_t *dest;
opcode_t * const ret = expr NEXT();
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_exit,
- $1, NULL);
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, $1, NULL);
+
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
VTABLE_set_integer_keyed_str(interp, exception,
@@ -826,36 +835,6 @@
goto ADDRESS(dest);
}
-inline op pushmark(in INT) {
- PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, newint, $1);
- VTABLE_push_pmc(interp, interp->dynamic_env, newint);
-}
-
-inline op popmark(in INT) {
- opcode_t * dest;
- opcode_t * const ret = expr NEXT();
- int found = 0;
- while (VTABLE_elements(interp, interp->dynamic_env)) {
- PMC * const item = VTABLE_pop_pmc(interp, interp->dynamic_env);
- if (item->vtable->base_type == enum_class_Integer
- && VTABLE_get_integer(interp, item) == $1) {
- found = 1;
- break;
- }
-
- else if (item->vtable->base_type == enum_class_Sub
- || item->vtable->base_type == enum_class_NCI)
- Parrot_pcc_invoke_sub_from_c_args(interp, item, "I->", 0);
- }
- if (!found)
- dest = Parrot_ex_throw_from_op_args(interp, ret, 1, "Mark %d not found", $1);
-}
-
-inline op pushaction(invar PMC) {
- VTABLE_push_pmc(interp, interp->dynamic_env, $1);
-}
-
=back
=cut
@@ -981,7 +960,7 @@
}
op interpinfo(out STR, in INT) {
- STRING * s = interpinfo_s(interp, $2);
+ STRING * const s = interpinfo_s(interp, $2);
$1 = s;
}
@@ -1209,7 +1188,21 @@
=item B<loadlib>(out PMC, in STR)
-Load a dynamic link library named $2 and store it in $1.
+=item B<loadlib>(out PMC, in STR, in PMC)
+
+Load a dynamic link library named $2 and store it in $1. $3, if
+provided, controls library loading and initialization; currently,
+we expect a bitmask accessible as an integer. Bit definitions are
+accessible from PASM if F<dlopenflags.pasm> is included. The current
+bits are:
+
+=over 4
+
+=item PARROT_DLOPEN_GLOBAL
+
+Make any symbols in the library accessible to other libraries loaded.
+
+=back
=item B<dlfunc>(out PMC, invar PMC, in STR, in STR)
@@ -1250,6 +1243,10 @@
$1 = Parrot_load_lib(interp, $2, NULL);
}
+inline op loadlib(out PMC, in STR, in PMC) {
+ $1 = Parrot_load_lib(interp, $2, $3);
+}
+
op dlfunc(out PMC, invar PMC, in STR, in STR) {
char * const name = Parrot_str_to_cstring(interp, ($3));
void *dl_handle = NULL;
@@ -1284,10 +1281,9 @@
op dlvar(out PMC, invar PMC, in STR) {
char * const name = Parrot_str_to_cstring(interp, ($3));
void * p = NULL;
- void *dl_handle = NULL;
if (!PMC_IS_NULL($2) && $2->vtable->base_type == enum_class_ParrotLibrary) {
- dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data($2))->dl_handle;
+ void * const dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data($2))->dl_handle;
p = Parrot_dlsym(PMC_IS_NULL($2) ? NULL : dl_handle, name);
}
if (p == NULL) {
@@ -1346,7 +1342,7 @@
inline op annotations(out PMC) {
if (interp->code->annotations) {
- opcode_t const cur_pos = (expr NEXT()) - interp->code->base.data;
+ const opcode_t cur_pos = (expr NEXT()) - interp->code->base.data;
$1 = PackFile_Annotations_lookup(interp, interp->code->annotations,
cur_pos, NULL);
}
@@ -1364,7 +1360,7 @@
inline op annotations(out PMC, in STR) {
if (interp->code->annotations) {
- opcode_t const cur_pos = (expr NEXT()) - interp->code->base.data;
+ const opcode_t cur_pos = (expr NEXT()) - interp->code->base.data;
$1 = PackFile_Annotations_lookup(interp, interp->code->annotations,
cur_pos, $2);
}
@@ -1381,7 +1377,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/core_ops.c
==============================================================================
--- branches/ops_pct/src/ops/core_ops.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/core_ops.c Wed May 5 08:45:29 2010 (r46302)
@@ -70,7 +70,7 @@
** Op Info Table:
*/
-static op_info_t core_op_info_table[1312] = {
+static op_info_t core_op_info_table[1297] = {
{ /* 0 */
/* type PARROT_INLINE_OP, */
"end",
@@ -469,9 +469,9 @@
},
{ /* 33 */
/* type PARROT_FUNCTION_OP, */
- "get_results",
- "get_results_pc",
- "Parrot_get_results_pc",
+ "get_params",
+ "get_params_pc",
+ "Parrot_get_params_pc",
/* "", body */
PARROT_JUMP_RELATIVE,
2,
@@ -481,9 +481,9 @@
},
{ /* 34 */
/* type PARROT_FUNCTION_OP, */
- "get_params",
- "get_params_pc",
- "Parrot_get_params_pc",
+ "set_returns",
+ "set_returns_pc",
+ "Parrot_set_returns_pc",
/* "", body */
PARROT_JUMP_RELATIVE,
2,
@@ -493,9 +493,9 @@
},
{ /* 35 */
/* type PARROT_FUNCTION_OP, */
- "set_returns",
- "set_returns_pc",
- "Parrot_set_returns_pc",
+ "get_results",
+ "get_results_pc",
+ "Parrot_get_results_pc",
/* "", body */
PARROT_JUMP_RELATIVE,
2,
@@ -505,6 +505,30 @@
},
{ /* 36 */
/* type PARROT_INLINE_OP, */
+ "set_result_info",
+ "set_result_info_p",
+ "Parrot_set_result_info_p",
+ /* "", body */
+ 0,
+ 2,
+ { PARROT_ARG_P },
+ { PARROT_ARGDIR_IN },
+ { 0 }
+ },
+ { /* 37 */
+ /* type PARROT_INLINE_OP, */
+ "set_result_info",
+ "set_result_info_pc",
+ "Parrot_set_result_info_pc",
+ /* "", body */
+ 0,
+ 2,
+ { PARROT_ARG_PC },
+ { PARROT_ARGDIR_IN },
+ { 0 }
+ },
+ { /* 38 */
+ /* type PARROT_INLINE_OP, */
"result_info",
"result_info_p",
"Parrot_result_info_p",
@@ -515,7 +539,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 37 */
+ { /* 39 */
/* type PARROT_INLINE_OP, */
"set_addr",
"set_addr_i_ic",
@@ -527,7 +551,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 38 */
+ { /* 40 */
/* type PARROT_INLINE_OP, */
"set_addr",
"set_addr_p_ic",
@@ -539,7 +563,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 39 */
+ { /* 41 */
/* type PARROT_INLINE_OP, */
"set_addr",
"set_addr_p_i",
@@ -551,7 +575,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 40 */
+ { /* 42 */
/* type PARROT_INLINE_OP, */
"get_addr",
"get_addr_i_p",
@@ -563,7 +587,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 41 */
+ { /* 43 */
/* type PARROT_INLINE_OP, */
"schedule",
"schedule_p",
@@ -575,7 +599,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 42 */
+ { /* 44 */
/* type PARROT_INLINE_OP, */
"addhandler",
"addhandler_p",
@@ -587,7 +611,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 43 */
+ { /* 45 */
/* type PARROT_INLINE_OP, */
"push_eh",
"push_eh_ic",
@@ -599,7 +623,7 @@
{ PARROT_ARGDIR_IN },
{ 1 }
},
- { /* 44 */
+ { /* 46 */
/* type PARROT_INLINE_OP, */
"push_eh",
"push_eh_p",
@@ -611,7 +635,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 45 */
+ { /* 47 */
/* type PARROT_INLINE_OP, */
"pop_eh",
"pop_eh",
@@ -623,7 +647,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 46 */
+ { /* 48 */
/* type PARROT_INLINE_OP, */
"throw",
"throw_p",
@@ -635,7 +659,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 47 */
+ { /* 49 */
/* type PARROT_INLINE_OP, */
"throw",
"throw_p_p",
@@ -647,7 +671,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 48 */
+ { /* 50 */
/* type PARROT_INLINE_OP, */
"rethrow",
"rethrow_p",
@@ -659,7 +683,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 49 */
+ { /* 51 */
/* type PARROT_INLINE_OP, */
"count_eh",
"count_eh_i",
@@ -671,7 +695,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 50 */
+ { /* 52 */
/* type PARROT_INLINE_OP, */
"die",
"die_s",
@@ -683,7 +707,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 51 */
+ { /* 53 */
/* type PARROT_INLINE_OP, */
"die",
"die_sc",
@@ -695,7 +719,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 52 */
+ { /* 54 */
/* type PARROT_INLINE_OP, */
"die",
"die_p",
@@ -707,7 +731,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 53 */
+ { /* 55 */
/* type PARROT_INLINE_OP, */
"die",
"die_pc",
@@ -719,7 +743,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 54 */
+ { /* 56 */
/* type PARROT_INLINE_OP, */
"die",
"die_i_i",
@@ -731,7 +755,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 55 */
+ { /* 57 */
/* type PARROT_INLINE_OP, */
"die",
"die_ic_i",
@@ -743,7 +767,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 56 */
+ { /* 58 */
/* type PARROT_INLINE_OP, */
"die",
"die_i_ic",
@@ -755,7 +779,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 57 */
+ { /* 59 */
/* type PARROT_INLINE_OP, */
"die",
"die_ic_ic",
@@ -767,7 +791,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 58 */
+ { /* 60 */
/* type PARROT_INLINE_OP, */
"exit",
"exit_i",
@@ -779,7 +803,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 59 */
+ { /* 61 */
/* type PARROT_INLINE_OP, */
"exit",
"exit_ic",
@@ -791,68 +815,8 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 60 */
- /* type PARROT_INLINE_OP, */
- "pushmark",
- "pushmark_i",
- "Parrot_pushmark_i",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_I },
- { PARROT_ARGDIR_IN },
- { 0 }
- },
- { /* 61 */
- /* type PARROT_INLINE_OP, */
- "pushmark",
- "pushmark_ic",
- "Parrot_pushmark_ic",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_IC },
- { PARROT_ARGDIR_IN },
- { 0 }
- },
{ /* 62 */
/* type PARROT_INLINE_OP, */
- "popmark",
- "popmark_i",
- "Parrot_popmark_i",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_I },
- { PARROT_ARGDIR_IN },
- { 0 }
- },
- { /* 63 */
- /* type PARROT_INLINE_OP, */
- "popmark",
- "popmark_ic",
- "Parrot_popmark_ic",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_IC },
- { PARROT_ARGDIR_IN },
- { 0 }
- },
- { /* 64 */
- /* type PARROT_INLINE_OP, */
- "pushaction",
- "pushaction_p",
- "Parrot_pushaction_p",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_P },
- { PARROT_ARGDIR_IN },
- { 0 }
- },
- { /* 65 */
- /* type PARROT_INLINE_OP, */
"debug",
"debug_i",
"Parrot_debug_i",
@@ -863,7 +827,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 66 */
+ { /* 63 */
/* type PARROT_INLINE_OP, */
"debug",
"debug_ic",
@@ -875,7 +839,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 67 */
+ { /* 64 */
/* type PARROT_INLINE_OP, */
"bounds",
"bounds_i",
@@ -887,7 +851,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 68 */
+ { /* 65 */
/* type PARROT_INLINE_OP, */
"bounds",
"bounds_ic",
@@ -899,7 +863,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 69 */
+ { /* 66 */
/* type PARROT_INLINE_OP, */
"profile",
"profile_i",
@@ -911,7 +875,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 70 */
+ { /* 67 */
/* type PARROT_INLINE_OP, */
"profile",
"profile_ic",
@@ -923,7 +887,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 71 */
+ { /* 68 */
/* type PARROT_INLINE_OP, */
"trace",
"trace_i",
@@ -935,7 +899,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 72 */
+ { /* 69 */
/* type PARROT_INLINE_OP, */
"trace",
"trace_ic",
@@ -947,7 +911,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 73 */
+ { /* 70 */
/* type PARROT_INLINE_OP, */
"gc_debug",
"gc_debug_i",
@@ -959,7 +923,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 74 */
+ { /* 71 */
/* type PARROT_INLINE_OP, */
"gc_debug",
"gc_debug_ic",
@@ -971,7 +935,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 75 */
+ { /* 72 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_i_i",
@@ -983,7 +947,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 76 */
+ { /* 73 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_i_ic",
@@ -995,7 +959,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 77 */
+ { /* 74 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_p_i",
@@ -1007,7 +971,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 78 */
+ { /* 75 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_p_ic",
@@ -1019,7 +983,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 79 */
+ { /* 76 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_s_i",
@@ -1031,7 +995,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 80 */
+ { /* 77 */
/* type PARROT_FUNCTION_OP, */
"interpinfo",
"interpinfo_s_ic",
@@ -1043,7 +1007,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 81 */
+ { /* 78 */
/* type PARROT_INLINE_OP, */
"warningson",
"warningson_i",
@@ -1055,7 +1019,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 82 */
+ { /* 79 */
/* type PARROT_INLINE_OP, */
"warningson",
"warningson_ic",
@@ -1067,7 +1031,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 83 */
+ { /* 80 */
/* type PARROT_INLINE_OP, */
"warningsoff",
"warningsoff_i",
@@ -1079,7 +1043,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 84 */
+ { /* 81 */
/* type PARROT_INLINE_OP, */
"warningsoff",
"warningsoff_ic",
@@ -1091,7 +1055,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 85 */
+ { /* 82 */
/* type PARROT_INLINE_OP, */
"errorson",
"errorson_i",
@@ -1103,7 +1067,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 86 */
+ { /* 83 */
/* type PARROT_INLINE_OP, */
"errorson",
"errorson_ic",
@@ -1115,7 +1079,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 87 */
+ { /* 84 */
/* type PARROT_INLINE_OP, */
"errorsoff",
"errorsoff_i",
@@ -1127,7 +1091,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 88 */
+ { /* 85 */
/* type PARROT_INLINE_OP, */
"errorsoff",
"errorsoff_ic",
@@ -1139,7 +1103,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 89 */
+ { /* 86 */
/* type PARROT_FUNCTION_OP, */
"runinterp",
"runinterp_p_i",
@@ -1151,7 +1115,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 90 */
+ { /* 87 */
/* type PARROT_FUNCTION_OP, */
"runinterp",
"runinterp_p_ic",
@@ -1163,7 +1127,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 91 */
+ { /* 88 */
/* type PARROT_FUNCTION_OP, */
"getinterp",
"getinterp_p",
@@ -1175,7 +1139,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 92 */
+ { /* 89 */
/* type PARROT_FUNCTION_OP, */
"sweep",
"sweep_ic",
@@ -1187,7 +1151,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 93 */
+ { /* 90 */
/* type PARROT_FUNCTION_OP, */
"collect",
"collect",
@@ -1199,7 +1163,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 94 */
+ { /* 91 */
/* type PARROT_FUNCTION_OP, */
"sweepoff",
"sweepoff",
@@ -1211,7 +1175,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 95 */
+ { /* 92 */
/* type PARROT_FUNCTION_OP, */
"sweepon",
"sweepon",
@@ -1223,7 +1187,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 96 */
+ { /* 93 */
/* type PARROT_FUNCTION_OP, */
"collectoff",
"collectoff",
@@ -1235,7 +1199,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 97 */
+ { /* 94 */
/* type PARROT_FUNCTION_OP, */
"collecton",
"collecton",
@@ -1247,7 +1211,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 98 */
+ { /* 95 */
/* type PARROT_FUNCTION_OP, */
"needs_destroy",
"needs_destroy_p",
@@ -1259,7 +1223,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 99 */
+ { /* 96 */
/* type PARROT_INLINE_OP, */
"loadlib",
"loadlib_p_s",
@@ -1271,7 +1235,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 100 */
+ { /* 97 */
/* type PARROT_INLINE_OP, */
"loadlib",
"loadlib_p_sc",
@@ -1283,7 +1247,55 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
+ { /* 98 */
+ /* type PARROT_INLINE_OP, */
+ "loadlib",
+ "loadlib_p_s_p",
+ "Parrot_loadlib_p_s_p",
+ /* "", body */
+ 0,
+ 4,
+ { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_P },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0 }
+ },
+ { /* 99 */
+ /* type PARROT_INLINE_OP, */
+ "loadlib",
+ "loadlib_p_sc_p",
+ "Parrot_loadlib_p_sc_p",
+ /* "", body */
+ 0,
+ 4,
+ { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_P },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0 }
+ },
+ { /* 100 */
+ /* type PARROT_INLINE_OP, */
+ "loadlib",
+ "loadlib_p_s_pc",
+ "Parrot_loadlib_p_s_pc",
+ /* "", body */
+ 0,
+ 4,
+ { PARROT_ARG_P, PARROT_ARG_S, PARROT_ARG_PC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0 }
+ },
{ /* 101 */
+ /* type PARROT_INLINE_OP, */
+ "loadlib",
+ "loadlib_p_sc_pc",
+ "Parrot_loadlib_p_sc_pc",
+ /* "", body */
+ 0,
+ 4,
+ { PARROT_ARG_P, PARROT_ARG_SC, PARROT_ARG_PC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0 }
+ },
+ { /* 102 */
/* type PARROT_FUNCTION_OP, */
"dlfunc",
"dlfunc_p_p_s_s",
@@ -1295,7 +1307,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 102 */
+ { /* 103 */
/* type PARROT_FUNCTION_OP, */
"dlfunc",
"dlfunc_p_p_sc_s",
@@ -1307,7 +1319,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 103 */
+ { /* 104 */
/* type PARROT_FUNCTION_OP, */
"dlfunc",
"dlfunc_p_p_s_sc",
@@ -1319,7 +1331,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 104 */
+ { /* 105 */
/* type PARROT_FUNCTION_OP, */
"dlfunc",
"dlfunc_p_p_sc_sc",
@@ -1331,7 +1343,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 105 */
+ { /* 106 */
/* type PARROT_FUNCTION_OP, */
"dlvar",
"dlvar_p_p_s",
@@ -1343,7 +1355,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 106 */
+ { /* 107 */
/* type PARROT_FUNCTION_OP, */
"dlvar",
"dlvar_p_p_sc",
@@ -1355,7 +1367,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 107 */
+ { /* 108 */
/* type PARROT_INLINE_OP, */
"compreg",
"compreg_s_p",
@@ -1367,7 +1379,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 108 */
+ { /* 109 */
/* type PARROT_INLINE_OP, */
"compreg",
"compreg_sc_p",
@@ -1379,7 +1391,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 109 */
+ { /* 110 */
/* type PARROT_INLINE_OP, */
"compreg",
"compreg_p_s",
@@ -1391,7 +1403,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 110 */
+ { /* 111 */
/* type PARROT_INLINE_OP, */
"compreg",
"compreg_p_sc",
@@ -1403,7 +1415,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 111 */
+ { /* 112 */
/* type PARROT_FUNCTION_OP, */
"new_callback",
"new_callback_p_p_p_s",
@@ -1415,7 +1427,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 112 */
+ { /* 113 */
/* type PARROT_FUNCTION_OP, */
"new_callback",
"new_callback_p_p_p_sc",
@@ -1427,7 +1439,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 113 */
+ { /* 114 */
/* type PARROT_INLINE_OP, */
"annotations",
"annotations_p",
@@ -1439,7 +1451,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 114 */
+ { /* 115 */
/* type PARROT_INLINE_OP, */
"annotations",
"annotations_p_s",
@@ -1451,7 +1463,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 115 */
+ { /* 116 */
/* type PARROT_INLINE_OP, */
"annotations",
"annotations_p_sc",
@@ -1463,7 +1475,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 116 */
+ { /* 117 */
/* type PARROT_INLINE_OP, */
"band",
"band_i_i",
@@ -1475,7 +1487,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 117 */
+ { /* 118 */
/* type PARROT_INLINE_OP, */
"band",
"band_i_ic",
@@ -1487,7 +1499,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 118 */
+ { /* 119 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_i",
@@ -1499,7 +1511,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 119 */
+ { /* 120 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_ic",
@@ -1511,7 +1523,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 120 */
+ { /* 121 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_p",
@@ -1523,7 +1535,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 121 */
+ { /* 122 */
/* type PARROT_INLINE_OP, */
"band",
"band_i_i_i",
@@ -1535,7 +1547,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 122 */
+ { /* 123 */
/* type PARROT_INLINE_OP, */
"band",
"band_i_ic_i",
@@ -1547,7 +1559,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 123 */
+ { /* 124 */
/* type PARROT_INLINE_OP, */
"band",
"band_i_i_ic",
@@ -1559,7 +1571,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 124 */
+ { /* 125 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_p_i",
@@ -1571,7 +1583,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 125 */
+ { /* 126 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_p_ic",
@@ -1583,7 +1595,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 126 */
+ { /* 127 */
/* type PARROT_INLINE_OP, */
"band",
"band_p_p_p",
@@ -1595,33 +1607,9 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 127 */
- /* type PARROT_INLINE_OP, */
- "bands",
- "bands_s_s",
- "Parrot_bands_s_s",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
{ /* 128 */
/* type PARROT_INLINE_OP, */
"bands",
- "bands_s_sc",
- "Parrot_bands_s_sc",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 129 */
- /* type PARROT_INLINE_OP, */
- "bands",
"bands_p_s",
"Parrot_bands_p_s",
/* "", body */
@@ -1631,7 +1619,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 130 */
+ { /* 129 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_p_sc",
@@ -1643,7 +1631,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 131 */
+ { /* 130 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_p_p",
@@ -1655,7 +1643,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 132 */
+ { /* 131 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_s_s_s",
@@ -1667,7 +1655,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 133 */
+ { /* 132 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_s_sc_s",
@@ -1679,7 +1667,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 134 */
+ { /* 133 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_s_s_sc",
@@ -1691,7 +1679,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 135 */
+ { /* 134 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_p_p_s",
@@ -1703,7 +1691,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 136 */
+ { /* 135 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_p_p_sc",
@@ -1715,7 +1703,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 137 */
+ { /* 136 */
/* type PARROT_INLINE_OP, */
"bands",
"bands_p_p_p",
@@ -1727,7 +1715,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 138 */
+ { /* 137 */
/* type PARROT_INLINE_OP, */
"bnot",
"bnot_i",
@@ -1739,7 +1727,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 139 */
+ { /* 138 */
/* type PARROT_INLINE_OP, */
"bnot",
"bnot_i_i",
@@ -1751,7 +1739,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 140 */
+ { /* 139 */
/* type PARROT_INLINE_OP, */
"bnot",
"bnot_p",
@@ -1763,7 +1751,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 141 */
+ { /* 140 */
/* type PARROT_INLINE_OP, */
"bnot",
"bnot_p_p",
@@ -1775,19 +1763,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 142 */
- /* type PARROT_INLINE_OP, */
- "bnots",
- "bnots_s",
- "Parrot_bnots_s",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT },
- { 0 }
- },
- { /* 143 */
+ { /* 141 */
/* type PARROT_INLINE_OP, */
"bnots",
"bnots_s_s",
@@ -1799,7 +1775,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 144 */
+ { /* 142 */
/* type PARROT_INLINE_OP, */
"bnots",
"bnots_s_sc",
@@ -1811,7 +1787,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 145 */
+ { /* 143 */
/* type PARROT_INLINE_OP, */
"bnots",
"bnots_p",
@@ -1823,7 +1799,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 146 */
+ { /* 144 */
/* type PARROT_INLINE_OP, */
"bnots",
"bnots_p_p",
@@ -1835,7 +1811,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 147 */
+ { /* 145 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_i_i",
@@ -1847,7 +1823,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 148 */
+ { /* 146 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_i_ic",
@@ -1859,7 +1835,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 149 */
+ { /* 147 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_i",
@@ -1871,7 +1847,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 150 */
+ { /* 148 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_ic",
@@ -1883,7 +1859,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 151 */
+ { /* 149 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_p",
@@ -1895,7 +1871,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 152 */
+ { /* 150 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_i_i_i",
@@ -1907,7 +1883,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 153 */
+ { /* 151 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_i_ic_i",
@@ -1919,7 +1895,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 154 */
+ { /* 152 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_i_i_ic",
@@ -1931,7 +1907,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 155 */
+ { /* 153 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_p_i",
@@ -1943,7 +1919,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 156 */
+ { /* 154 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_p_ic",
@@ -1955,7 +1931,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 157 */
+ { /* 155 */
/* type PARROT_INLINE_OP, */
"bor",
"bor_p_p_p",
@@ -1967,31 +1943,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 158 */
- /* type PARROT_INLINE_OP, */
- "bors",
- "bors_s_s",
- "Parrot_bors_s_s",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 159 */
- /* type PARROT_INLINE_OP, */
- "bors",
- "bors_s_sc",
- "Parrot_bors_s_sc",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 160 */
+ { /* 156 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_s",
@@ -2003,7 +1955,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 161 */
+ { /* 157 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_sc",
@@ -2015,7 +1967,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 162 */
+ { /* 158 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_p",
@@ -2027,7 +1979,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 163 */
+ { /* 159 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_s_s_s",
@@ -2039,7 +1991,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 164 */
+ { /* 160 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_s_sc_s",
@@ -2051,7 +2003,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 165 */
+ { /* 161 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_s_s_sc",
@@ -2063,7 +2015,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 166 */
+ { /* 162 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_p_s",
@@ -2075,7 +2027,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 167 */
+ { /* 163 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_p_sc",
@@ -2087,7 +2039,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 168 */
+ { /* 164 */
/* type PARROT_INLINE_OP, */
"bors",
"bors_p_p_p",
@@ -2099,7 +2051,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 169 */
+ { /* 165 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_i_i",
@@ -2111,7 +2063,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 170 */
+ { /* 166 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_i_ic",
@@ -2123,7 +2075,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 171 */
+ { /* 167 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_i",
@@ -2135,7 +2087,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 172 */
+ { /* 168 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_ic",
@@ -2147,7 +2099,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 173 */
+ { /* 169 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_p",
@@ -2159,7 +2111,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 174 */
+ { /* 170 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_i_i_i",
@@ -2171,7 +2123,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 175 */
+ { /* 171 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_i_ic_i",
@@ -2183,7 +2135,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 176 */
+ { /* 172 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_i_i_ic",
@@ -2195,7 +2147,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 177 */
+ { /* 173 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_p_i",
@@ -2207,7 +2159,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 178 */
+ { /* 174 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_p_ic",
@@ -2219,7 +2171,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 179 */
+ { /* 175 */
/* type PARROT_INLINE_OP, */
"shl",
"shl_p_p_p",
@@ -2231,7 +2183,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 180 */
+ { /* 176 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_i_i",
@@ -2243,7 +2195,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 181 */
+ { /* 177 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_i_ic",
@@ -2255,7 +2207,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 182 */
+ { /* 178 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_i",
@@ -2267,7 +2219,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 183 */
+ { /* 179 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_ic",
@@ -2279,7 +2231,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 184 */
+ { /* 180 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_p",
@@ -2291,7 +2243,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 185 */
+ { /* 181 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_i_i_i",
@@ -2303,7 +2255,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 186 */
+ { /* 182 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_i_ic_i",
@@ -2315,7 +2267,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 187 */
+ { /* 183 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_i_i_ic",
@@ -2327,7 +2279,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 188 */
+ { /* 184 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_p_i",
@@ -2339,7 +2291,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 189 */
+ { /* 185 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_p_ic",
@@ -2351,7 +2303,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 190 */
+ { /* 186 */
/* type PARROT_INLINE_OP, */
"shr",
"shr_p_p_p",
@@ -2363,7 +2315,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 191 */
+ { /* 187 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_i_i",
@@ -2375,7 +2327,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 192 */
+ { /* 188 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_i_ic",
@@ -2387,7 +2339,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 193 */
+ { /* 189 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_i",
@@ -2399,7 +2351,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 194 */
+ { /* 190 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_ic",
@@ -2411,7 +2363,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 195 */
+ { /* 191 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_p",
@@ -2423,7 +2375,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 196 */
+ { /* 192 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_i_i_i",
@@ -2435,7 +2387,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 197 */
+ { /* 193 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_i_ic_i",
@@ -2447,7 +2399,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 198 */
+ { /* 194 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_i_i_ic",
@@ -2459,7 +2411,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 199 */
+ { /* 195 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_p_i",
@@ -2471,7 +2423,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 200 */
+ { /* 196 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_p_ic",
@@ -2483,7 +2435,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 201 */
+ { /* 197 */
/* type PARROT_INLINE_OP, */
"lsr",
"lsr_p_p_p",
@@ -2495,7 +2447,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 202 */
+ { /* 198 */
/* type PARROT_INLINE_OP, */
"rot",
"rot_i_i_i_ic",
@@ -2507,7 +2459,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 203 */
+ { /* 199 */
/* type PARROT_INLINE_OP, */
"rot",
"rot_i_ic_i_ic",
@@ -2519,7 +2471,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 204 */
+ { /* 200 */
/* type PARROT_INLINE_OP, */
"rot",
"rot_i_i_ic_ic",
@@ -2531,7 +2483,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 205 */
+ { /* 201 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_i_i",
@@ -2543,7 +2495,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 206 */
+ { /* 202 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_i_ic",
@@ -2555,7 +2507,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 207 */
+ { /* 203 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_i",
@@ -2567,7 +2519,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 208 */
+ { /* 204 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_ic",
@@ -2579,7 +2531,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 209 */
+ { /* 205 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_p",
@@ -2591,7 +2543,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 210 */
+ { /* 206 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_i_i_i",
@@ -2603,7 +2555,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 211 */
+ { /* 207 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_i_ic_i",
@@ -2615,7 +2567,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 212 */
+ { /* 208 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_i_i_ic",
@@ -2627,7 +2579,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 213 */
+ { /* 209 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_p_i",
@@ -2639,7 +2591,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 214 */
+ { /* 210 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_p_ic",
@@ -2651,7 +2603,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 215 */
+ { /* 211 */
/* type PARROT_INLINE_OP, */
"bxor",
"bxor_p_p_p",
@@ -2663,43 +2615,19 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 216 */
+ { /* 212 */
/* type PARROT_INLINE_OP, */
"bxors",
- "bxors_s_s",
- "Parrot_bxors_s_s",
+ "bxors_p_s",
+ "Parrot_bxors_p_s",
/* "", body */
0,
3,
- { PARROT_ARG_S, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
+ { PARROT_ARG_P, PARROT_ARG_S },
+ { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 217 */
- /* type PARROT_INLINE_OP, */
- "bxors",
- "bxors_s_sc",
- "Parrot_bxors_s_sc",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 218 */
- /* type PARROT_INLINE_OP, */
- "bxors",
- "bxors_p_s",
- "Parrot_bxors_p_s",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_P, PARROT_ARG_S },
- { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 219 */
+ { /* 213 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_p_sc",
@@ -2711,7 +2639,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 220 */
+ { /* 214 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_p_p",
@@ -2723,7 +2651,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 221 */
+ { /* 215 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_s_s_s",
@@ -2735,7 +2663,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 222 */
+ { /* 216 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_s_sc_s",
@@ -2747,7 +2675,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 223 */
+ { /* 217 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_s_s_sc",
@@ -2759,7 +2687,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 224 */
+ { /* 218 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_p_p_s",
@@ -2771,7 +2699,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 225 */
+ { /* 219 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_p_p_sc",
@@ -2783,7 +2711,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 226 */
+ { /* 220 */
/* type PARROT_INLINE_OP, */
"bxors",
"bxors_p_p_p",
@@ -2795,7 +2723,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 227 */
+ { /* 221 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_i_i_ic",
@@ -2807,7 +2735,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 228 */
+ { /* 222 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_ic_i_ic",
@@ -2819,7 +2747,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 229 */
+ { /* 223 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_i_ic_ic",
@@ -2831,7 +2759,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 230 */
+ { /* 224 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_n_n_ic",
@@ -2843,7 +2771,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 231 */
+ { /* 225 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_nc_n_ic",
@@ -2855,7 +2783,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 232 */
+ { /* 226 */
/* type PARROT_INLINE_OP, */
"eq",
"eq_n_nc_ic",
@@ -2867,7 +2795,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 233 */
+ { /* 227 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_s_s_ic",
@@ -2879,7 +2807,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 234 */
+ { /* 228 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_sc_s_ic",
@@ -2891,7 +2819,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 235 */
+ { /* 229 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_s_sc_ic",
@@ -2903,7 +2831,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 236 */
+ { /* 230 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_p_ic",
@@ -2915,7 +2843,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 237 */
+ { /* 231 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_i_ic",
@@ -2927,7 +2855,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 238 */
+ { /* 232 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_ic_ic",
@@ -2939,7 +2867,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 239 */
+ { /* 233 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_n_ic",
@@ -2951,7 +2879,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 240 */
+ { /* 234 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_nc_ic",
@@ -2963,7 +2891,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 241 */
+ { /* 235 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_s_ic",
@@ -2975,7 +2903,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 242 */
+ { /* 236 */
/* type PARROT_FUNCTION_OP, */
"eq",
"eq_p_sc_ic",
@@ -2987,7 +2915,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 243 */
+ { /* 237 */
/* type PARROT_FUNCTION_OP, */
"eq_str",
"eq_str_p_p_ic",
@@ -2999,7 +2927,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 244 */
+ { /* 238 */
/* type PARROT_FUNCTION_OP, */
"eq_num",
"eq_num_p_p_ic",
@@ -3011,7 +2939,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 245 */
+ { /* 239 */
/* type PARROT_FUNCTION_OP, */
"eq_addr",
"eq_addr_s_s_ic",
@@ -3023,7 +2951,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 246 */
+ { /* 240 */
/* type PARROT_FUNCTION_OP, */
"eq_addr",
"eq_addr_sc_s_ic",
@@ -3035,7 +2963,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 247 */
+ { /* 241 */
/* type PARROT_FUNCTION_OP, */
"eq_addr",
"eq_addr_s_sc_ic",
@@ -3047,7 +2975,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 248 */
+ { /* 242 */
/* type PARROT_FUNCTION_OP, */
"eq_addr",
"eq_addr_sc_sc_ic",
@@ -3059,7 +2987,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 249 */
+ { /* 243 */
/* type PARROT_FUNCTION_OP, */
"eq_addr",
"eq_addr_p_p_ic",
@@ -3071,7 +2999,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 250 */
+ { /* 244 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_i_i_ic",
@@ -3083,7 +3011,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 251 */
+ { /* 245 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_ic_i_ic",
@@ -3095,7 +3023,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 252 */
+ { /* 246 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_i_ic_ic",
@@ -3107,7 +3035,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 253 */
+ { /* 247 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_n_n_ic",
@@ -3119,7 +3047,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 254 */
+ { /* 248 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_nc_n_ic",
@@ -3131,7 +3059,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 255 */
+ { /* 249 */
/* type PARROT_INLINE_OP, */
"ne",
"ne_n_nc_ic",
@@ -3143,7 +3071,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 256 */
+ { /* 250 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_s_s_ic",
@@ -3155,7 +3083,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 257 */
+ { /* 251 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_sc_s_ic",
@@ -3167,7 +3095,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 258 */
+ { /* 252 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_s_sc_ic",
@@ -3179,7 +3107,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 259 */
+ { /* 253 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_p_ic",
@@ -3191,7 +3119,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 260 */
+ { /* 254 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_i_ic",
@@ -3203,7 +3131,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 261 */
+ { /* 255 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_ic_ic",
@@ -3215,7 +3143,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 262 */
+ { /* 256 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_n_ic",
@@ -3227,7 +3155,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 263 */
+ { /* 257 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_nc_ic",
@@ -3239,7 +3167,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 264 */
+ { /* 258 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_s_ic",
@@ -3251,7 +3179,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 265 */
+ { /* 259 */
/* type PARROT_FUNCTION_OP, */
"ne",
"ne_p_sc_ic",
@@ -3263,7 +3191,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 266 */
+ { /* 260 */
/* type PARROT_FUNCTION_OP, */
"ne_str",
"ne_str_p_p_ic",
@@ -3275,7 +3203,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 267 */
+ { /* 261 */
/* type PARROT_FUNCTION_OP, */
"ne_num",
"ne_num_p_p_ic",
@@ -3287,7 +3215,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 268 */
+ { /* 262 */
/* type PARROT_FUNCTION_OP, */
"ne_addr",
"ne_addr_s_s_ic",
@@ -3299,7 +3227,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 269 */
+ { /* 263 */
/* type PARROT_FUNCTION_OP, */
"ne_addr",
"ne_addr_sc_s_ic",
@@ -3311,7 +3239,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 270 */
+ { /* 264 */
/* type PARROT_FUNCTION_OP, */
"ne_addr",
"ne_addr_s_sc_ic",
@@ -3323,7 +3251,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 271 */
+ { /* 265 */
/* type PARROT_FUNCTION_OP, */
"ne_addr",
"ne_addr_sc_sc_ic",
@@ -3335,7 +3263,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 272 */
+ { /* 266 */
/* type PARROT_FUNCTION_OP, */
"ne_addr",
"ne_addr_p_p_ic",
@@ -3347,7 +3275,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 273 */
+ { /* 267 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_i_i_ic",
@@ -3359,7 +3287,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 274 */
+ { /* 268 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_ic_i_ic",
@@ -3371,7 +3299,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 275 */
+ { /* 269 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_i_ic_ic",
@@ -3383,7 +3311,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 276 */
+ { /* 270 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_n_n_ic",
@@ -3395,7 +3323,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 277 */
+ { /* 271 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_nc_n_ic",
@@ -3407,7 +3335,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 278 */
+ { /* 272 */
/* type PARROT_INLINE_OP, */
"lt",
"lt_n_nc_ic",
@@ -3419,7 +3347,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 279 */
+ { /* 273 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_s_s_ic",
@@ -3431,7 +3359,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 280 */
+ { /* 274 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_sc_s_ic",
@@ -3443,7 +3371,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 281 */
+ { /* 275 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_s_sc_ic",
@@ -3455,7 +3383,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 282 */
+ { /* 276 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_p_ic",
@@ -3467,7 +3395,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 283 */
+ { /* 277 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_i_ic",
@@ -3479,7 +3407,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 284 */
+ { /* 278 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_ic_ic",
@@ -3491,7 +3419,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 285 */
+ { /* 279 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_n_ic",
@@ -3503,7 +3431,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 286 */
+ { /* 280 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_nc_ic",
@@ -3515,7 +3443,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 287 */
+ { /* 281 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_s_ic",
@@ -3527,7 +3455,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 288 */
+ { /* 282 */
/* type PARROT_FUNCTION_OP, */
"lt",
"lt_p_sc_ic",
@@ -3539,7 +3467,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 289 */
+ { /* 283 */
/* type PARROT_FUNCTION_OP, */
"lt_str",
"lt_str_p_p_ic",
@@ -3551,7 +3479,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 290 */
+ { /* 284 */
/* type PARROT_FUNCTION_OP, */
"lt_num",
"lt_num_p_p_ic",
@@ -3563,7 +3491,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 291 */
+ { /* 285 */
/* type PARROT_INLINE_OP, */
"le",
"le_i_i_ic",
@@ -3575,7 +3503,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 292 */
+ { /* 286 */
/* type PARROT_INLINE_OP, */
"le",
"le_ic_i_ic",
@@ -3587,7 +3515,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 293 */
+ { /* 287 */
/* type PARROT_INLINE_OP, */
"le",
"le_i_ic_ic",
@@ -3599,7 +3527,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 294 */
+ { /* 288 */
/* type PARROT_INLINE_OP, */
"le",
"le_n_n_ic",
@@ -3611,7 +3539,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 295 */
+ { /* 289 */
/* type PARROT_INLINE_OP, */
"le",
"le_nc_n_ic",
@@ -3623,7 +3551,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 296 */
+ { /* 290 */
/* type PARROT_INLINE_OP, */
"le",
"le_n_nc_ic",
@@ -3635,7 +3563,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 297 */
+ { /* 291 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_s_s_ic",
@@ -3647,7 +3575,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 298 */
+ { /* 292 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_sc_s_ic",
@@ -3659,7 +3587,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 299 */
+ { /* 293 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_s_sc_ic",
@@ -3671,7 +3599,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 300 */
+ { /* 294 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_p_ic",
@@ -3683,7 +3611,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 301 */
+ { /* 295 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_i_ic",
@@ -3695,7 +3623,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 302 */
+ { /* 296 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_ic_ic",
@@ -3707,7 +3635,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 303 */
+ { /* 297 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_n_ic",
@@ -3719,7 +3647,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 304 */
+ { /* 298 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_nc_ic",
@@ -3731,7 +3659,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 305 */
+ { /* 299 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_s_ic",
@@ -3743,7 +3671,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 306 */
+ { /* 300 */
/* type PARROT_FUNCTION_OP, */
"le",
"le_p_sc_ic",
@@ -3755,7 +3683,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 307 */
+ { /* 301 */
/* type PARROT_FUNCTION_OP, */
"le_str",
"le_str_p_p_ic",
@@ -3767,7 +3695,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 308 */
+ { /* 302 */
/* type PARROT_FUNCTION_OP, */
"le_num",
"le_num_p_p_ic",
@@ -3779,7 +3707,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 309 */
+ { /* 303 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_p_ic",
@@ -3791,7 +3719,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 310 */
+ { /* 304 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_i_ic",
@@ -3803,7 +3731,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 311 */
+ { /* 305 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_ic_ic",
@@ -3815,7 +3743,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 312 */
+ { /* 306 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_n_ic",
@@ -3827,7 +3755,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 313 */
+ { /* 307 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_nc_ic",
@@ -3839,7 +3767,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 314 */
+ { /* 308 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_s_ic",
@@ -3851,7 +3779,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 315 */
+ { /* 309 */
/* type PARROT_FUNCTION_OP, */
"gt",
"gt_p_sc_ic",
@@ -3863,7 +3791,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 316 */
+ { /* 310 */
/* type PARROT_FUNCTION_OP, */
"gt_str",
"gt_str_p_p_ic",
@@ -3875,7 +3803,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 317 */
+ { /* 311 */
/* type PARROT_FUNCTION_OP, */
"gt_num",
"gt_num_p_p_ic",
@@ -3887,7 +3815,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 318 */
+ { /* 312 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_p_ic",
@@ -3899,7 +3827,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 319 */
+ { /* 313 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_i_ic",
@@ -3911,7 +3839,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 320 */
+ { /* 314 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_ic_ic",
@@ -3923,7 +3851,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 321 */
+ { /* 315 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_n_ic",
@@ -3935,7 +3863,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 322 */
+ { /* 316 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_nc_ic",
@@ -3947,7 +3875,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 323 */
+ { /* 317 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_s_ic",
@@ -3959,7 +3887,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 324 */
+ { /* 318 */
/* type PARROT_FUNCTION_OP, */
"ge",
"ge_p_sc_ic",
@@ -3971,7 +3899,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 325 */
+ { /* 319 */
/* type PARROT_FUNCTION_OP, */
"ge_str",
"ge_str_p_p_ic",
@@ -3983,7 +3911,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 326 */
+ { /* 320 */
/* type PARROT_FUNCTION_OP, */
"ge_num",
"ge_num_p_p_ic",
@@ -3995,7 +3923,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 1 }
},
- { /* 327 */
+ { /* 321 */
/* type PARROT_FUNCTION_OP, */
"if_null",
"if_null_p_ic",
@@ -4007,7 +3935,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 328 */
+ { /* 322 */
/* type PARROT_FUNCTION_OP, */
"if_null",
"if_null_s_ic",
@@ -4019,7 +3947,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 329 */
+ { /* 323 */
/* type PARROT_FUNCTION_OP, */
"unless_null",
"unless_null_p_ic",
@@ -4031,7 +3959,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 330 */
+ { /* 324 */
/* type PARROT_FUNCTION_OP, */
"unless_null",
"unless_null_s_ic",
@@ -4043,7 +3971,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 1 }
},
- { /* 331 */
+ { /* 325 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_i_i",
@@ -4055,7 +3983,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 332 */
+ { /* 326 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_ic_i",
@@ -4067,7 +3995,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 333 */
+ { /* 327 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_i_ic",
@@ -4079,7 +4007,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 334 */
+ { /* 328 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_n_n",
@@ -4091,7 +4019,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 335 */
+ { /* 329 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_nc_n",
@@ -4103,7 +4031,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 336 */
+ { /* 330 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_n_nc",
@@ -4115,7 +4043,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 337 */
+ { /* 331 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_s_s",
@@ -4127,7 +4055,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 338 */
+ { /* 332 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_sc_s",
@@ -4139,7 +4067,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 339 */
+ { /* 333 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_s_sc",
@@ -4151,7 +4079,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 340 */
+ { /* 334 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_p",
@@ -4163,7 +4091,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 341 */
+ { /* 335 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_i",
@@ -4175,7 +4103,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 342 */
+ { /* 336 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_ic",
@@ -4187,7 +4115,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 343 */
+ { /* 337 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_n",
@@ -4199,7 +4127,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 344 */
+ { /* 338 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_nc",
@@ -4211,7 +4139,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 345 */
+ { /* 339 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_s",
@@ -4223,7 +4151,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 346 */
+ { /* 340 */
/* type PARROT_INLINE_OP, */
"cmp",
"cmp_i_p_sc",
@@ -4235,7 +4163,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 347 */
+ { /* 341 */
/* type PARROT_INLINE_OP, */
"cmp_str",
"cmp_str_i_p_p",
@@ -4247,7 +4175,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 348 */
+ { /* 342 */
/* type PARROT_INLINE_OP, */
"cmp_num",
"cmp_num_i_p_p",
@@ -4259,7 +4187,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 349 */
+ { /* 343 */
/* type PARROT_INLINE_OP, */
"cmp_pmc",
"cmp_pmc_p_p_p",
@@ -4271,7 +4199,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 350 */
+ { /* 344 */
/* type PARROT_INLINE_OP, */
"issame",
"issame_i_p_p",
@@ -4283,7 +4211,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 351 */
+ { /* 345 */
/* type PARROT_INLINE_OP, */
"issame",
"issame_i_s_s",
@@ -4295,7 +4223,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 352 */
+ { /* 346 */
/* type PARROT_INLINE_OP, */
"issame",
"issame_i_sc_s",
@@ -4307,7 +4235,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 353 */
+ { /* 347 */
/* type PARROT_INLINE_OP, */
"issame",
"issame_i_s_sc",
@@ -4319,7 +4247,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 354 */
+ { /* 348 */
/* type PARROT_INLINE_OP, */
"issame",
"issame_i_sc_sc",
@@ -4331,7 +4259,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 355 */
+ { /* 349 */
/* type PARROT_INLINE_OP, */
"isntsame",
"isntsame_i_p_p",
@@ -4343,7 +4271,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 356 */
+ { /* 350 */
/* type PARROT_INLINE_OP, */
"isntsame",
"isntsame_i_s_s",
@@ -4355,7 +4283,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 357 */
+ { /* 351 */
/* type PARROT_INLINE_OP, */
"isntsame",
"isntsame_i_sc_s",
@@ -4367,7 +4295,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 358 */
+ { /* 352 */
/* type PARROT_INLINE_OP, */
"isntsame",
"isntsame_i_s_sc",
@@ -4379,7 +4307,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 359 */
+ { /* 353 */
/* type PARROT_INLINE_OP, */
"isntsame",
"isntsame_i_sc_sc",
@@ -4391,7 +4319,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 360 */
+ { /* 354 */
/* type PARROT_INLINE_OP, */
"istrue",
"istrue_i_p",
@@ -4403,7 +4331,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 361 */
+ { /* 355 */
/* type PARROT_INLINE_OP, */
"isfalse",
"isfalse_i_p",
@@ -4415,7 +4343,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 362 */
+ { /* 356 */
/* type PARROT_INLINE_OP, */
"isnull",
"isnull_i_p",
@@ -4427,7 +4355,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 363 */
+ { /* 357 */
/* type PARROT_INLINE_OP, */
"isnull",
"isnull_i_pc",
@@ -4439,7 +4367,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 364 */
+ { /* 358 */
/* type PARROT_INLINE_OP, */
"isnull",
"isnull_i_s",
@@ -4451,7 +4379,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 365 */
+ { /* 359 */
/* type PARROT_INLINE_OP, */
"isnull",
"isnull_i_sc",
@@ -4463,7 +4391,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 366 */
+ { /* 360 */
/* type PARROT_INLINE_OP, */
"isgt",
"isgt_i_p_p",
@@ -4475,7 +4403,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 367 */
+ { /* 361 */
/* type PARROT_INLINE_OP, */
"isge",
"isge_i_p_p",
@@ -4487,7 +4415,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 368 */
+ { /* 362 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_i_i",
@@ -4499,7 +4427,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 369 */
+ { /* 363 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_ic_i",
@@ -4511,7 +4439,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 370 */
+ { /* 364 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_i_ic",
@@ -4523,7 +4451,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 371 */
+ { /* 365 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_n_n",
@@ -4535,7 +4463,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 372 */
+ { /* 366 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_nc_n",
@@ -4547,7 +4475,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 373 */
+ { /* 367 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_n_nc",
@@ -4559,7 +4487,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 374 */
+ { /* 368 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_s_s",
@@ -4571,7 +4499,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 375 */
+ { /* 369 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_sc_s",
@@ -4583,7 +4511,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 376 */
+ { /* 370 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_s_sc",
@@ -4595,7 +4523,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 377 */
+ { /* 371 */
/* type PARROT_INLINE_OP, */
"isle",
"isle_i_p_p",
@@ -4607,7 +4535,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 378 */
+ { /* 372 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_i_i",
@@ -4619,7 +4547,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 379 */
+ { /* 373 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_ic_i",
@@ -4631,7 +4559,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 380 */
+ { /* 374 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_i_ic",
@@ -4643,7 +4571,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 381 */
+ { /* 375 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_n_n",
@@ -4655,7 +4583,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 382 */
+ { /* 376 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_nc_n",
@@ -4667,7 +4595,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 383 */
+ { /* 377 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_n_nc",
@@ -4679,7 +4607,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 384 */
+ { /* 378 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_s_s",
@@ -4691,7 +4619,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 385 */
+ { /* 379 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_sc_s",
@@ -4703,7 +4631,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 386 */
+ { /* 380 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_s_sc",
@@ -4715,7 +4643,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 387 */
+ { /* 381 */
/* type PARROT_INLINE_OP, */
"islt",
"islt_i_p_p",
@@ -4727,7 +4655,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 388 */
+ { /* 382 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_i_i",
@@ -4739,7 +4667,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 389 */
+ { /* 383 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_ic_i",
@@ -4751,7 +4679,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 390 */
+ { /* 384 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_i_ic",
@@ -4763,7 +4691,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 391 */
+ { /* 385 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_n_n",
@@ -4775,7 +4703,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 392 */
+ { /* 386 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_nc_n",
@@ -4787,7 +4715,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 393 */
+ { /* 387 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_n_nc",
@@ -4799,7 +4727,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 394 */
+ { /* 388 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_s_s",
@@ -4811,7 +4739,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 395 */
+ { /* 389 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_sc_s",
@@ -4823,7 +4751,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 396 */
+ { /* 390 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_s_sc",
@@ -4835,7 +4763,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 397 */
+ { /* 391 */
/* type PARROT_INLINE_OP, */
"iseq",
"iseq_i_p_p",
@@ -4847,7 +4775,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 398 */
+ { /* 392 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_i_i",
@@ -4859,7 +4787,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 399 */
+ { /* 393 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_ic_i",
@@ -4871,7 +4799,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 400 */
+ { /* 394 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_i_ic",
@@ -4883,7 +4811,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 401 */
+ { /* 395 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_n_n",
@@ -4895,7 +4823,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 402 */
+ { /* 396 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_nc_n",
@@ -4907,7 +4835,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 403 */
+ { /* 397 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_n_nc",
@@ -4919,7 +4847,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 404 */
+ { /* 398 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_s_s",
@@ -4931,7 +4859,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 405 */
+ { /* 399 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_sc_s",
@@ -4943,7 +4871,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 406 */
+ { /* 400 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_s_sc",
@@ -4955,7 +4883,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 407 */
+ { /* 401 */
/* type PARROT_INLINE_OP, */
"isne",
"isne_i_p_p",
@@ -4967,7 +4895,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 408 */
+ { /* 402 */
/* type PARROT_INLINE_OP, */
"and",
"and_i_i_i",
@@ -4979,7 +4907,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 409 */
+ { /* 403 */
/* type PARROT_INLINE_OP, */
"and",
"and_i_ic_i",
@@ -4991,7 +4919,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 410 */
+ { /* 404 */
/* type PARROT_INLINE_OP, */
"and",
"and_i_i_ic",
@@ -5003,7 +4931,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 411 */
+ { /* 405 */
/* type PARROT_INLINE_OP, */
"and",
"and_p_p_p",
@@ -5015,7 +4943,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 412 */
+ { /* 406 */
/* type PARROT_INLINE_OP, */
"not",
"not_i",
@@ -5027,7 +4955,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 413 */
+ { /* 407 */
/* type PARROT_INLINE_OP, */
"not",
"not_i_i",
@@ -5039,7 +4967,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 414 */
+ { /* 408 */
/* type PARROT_INLINE_OP, */
"not",
"not_p",
@@ -5051,7 +4979,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 415 */
+ { /* 409 */
/* type PARROT_INLINE_OP, */
"not",
"not_p_p",
@@ -5063,7 +4991,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 416 */
+ { /* 410 */
/* type PARROT_INLINE_OP, */
"or",
"or_i_i_i",
@@ -5075,7 +5003,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 417 */
+ { /* 411 */
/* type PARROT_INLINE_OP, */
"or",
"or_i_ic_i",
@@ -5087,7 +5015,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 418 */
+ { /* 412 */
/* type PARROT_INLINE_OP, */
"or",
"or_i_i_ic",
@@ -5099,7 +5027,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 419 */
+ { /* 413 */
/* type PARROT_INLINE_OP, */
"or",
"or_p_p_p",
@@ -5111,7 +5039,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 420 */
+ { /* 414 */
/* type PARROT_INLINE_OP, */
"xor",
"xor_i_i_i",
@@ -5123,7 +5051,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 421 */
+ { /* 415 */
/* type PARROT_INLINE_OP, */
"xor",
"xor_i_ic_i",
@@ -5135,7 +5063,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 422 */
+ { /* 416 */
/* type PARROT_INLINE_OP, */
"xor",
"xor_i_i_ic",
@@ -5147,7 +5075,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 423 */
+ { /* 417 */
/* type PARROT_INLINE_OP, */
"xor",
"xor_p_p_p",
@@ -5159,7 +5087,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 424 */
+ { /* 418 */
/* type PARROT_FUNCTION_OP, */
"debug_init",
"debug_init",
@@ -5171,7 +5099,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 425 */
+ { /* 419 */
/* type PARROT_FUNCTION_OP, */
"debug_load",
"debug_load_sc",
@@ -5183,7 +5111,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 426 */
+ { /* 420 */
/* type PARROT_FUNCTION_OP, */
"debug_break",
"debug_break",
@@ -5195,7 +5123,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 427 */
+ { /* 421 */
/* type PARROT_FUNCTION_OP, */
"debug_print",
"debug_print",
@@ -5207,7 +5135,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 428 */
+ { /* 422 */
/* type PARROT_FUNCTION_OP, */
"backtrace",
"backtrace",
@@ -5219,7 +5147,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 429 */
+ { /* 423 */
/* type PARROT_INLINE_OP, */
"getline",
"getline_i",
@@ -5231,7 +5159,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 430 */
+ { /* 424 */
/* type PARROT_INLINE_OP, */
"getfile",
"getfile_s",
@@ -5243,7 +5171,31 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 431 */
+ { /* 425 */
+ /* type PARROT_INLINE_OP, */
+ "set_label",
+ "set_label_p_ic",
+ "Parrot_set_label_p_ic",
+ /* "", body */
+ 0,
+ 3,
+ { PARROT_ARG_P, PARROT_ARG_IC },
+ { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 1 }
+ },
+ { /* 426 */
+ /* type PARROT_INLINE_OP, */
+ "get_label",
+ "get_label_i_p",
+ "Parrot_get_label_i_p",
+ /* "", body */
+ 0,
+ 3,
+ { PARROT_ARG_I, PARROT_ARG_P },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
+ { 0, 0 }
+ },
+ { /* 427 */
/* type PARROT_INLINE_OP, */
"close",
"close_p",
@@ -5255,7 +5207,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 432 */
+ { /* 428 */
/* type PARROT_INLINE_OP, */
"fdopen",
"fdopen_p_i_s",
@@ -5267,7 +5219,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 433 */
+ { /* 429 */
/* type PARROT_INLINE_OP, */
"fdopen",
"fdopen_p_ic_s",
@@ -5279,7 +5231,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 434 */
+ { /* 430 */
/* type PARROT_INLINE_OP, */
"fdopen",
"fdopen_p_i_sc",
@@ -5291,7 +5243,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 435 */
+ { /* 431 */
/* type PARROT_INLINE_OP, */
"fdopen",
"fdopen_p_ic_sc",
@@ -5303,7 +5255,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 436 */
+ { /* 432 */
/* type PARROT_INLINE_OP, */
"getstdin",
"getstdin_p",
@@ -5315,7 +5267,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 437 */
+ { /* 433 */
/* type PARROT_INLINE_OP, */
"getstdout",
"getstdout_p",
@@ -5327,7 +5279,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 438 */
+ { /* 434 */
/* type PARROT_INLINE_OP, */
"getstderr",
"getstderr_p",
@@ -5339,7 +5291,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 439 */
+ { /* 435 */
/* type PARROT_INLINE_OP, */
"setstdin",
"setstdin_p",
@@ -5351,7 +5303,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 440 */
+ { /* 436 */
/* type PARROT_INLINE_OP, */
"setstdout",
"setstdout_p",
@@ -5363,7 +5315,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 441 */
+ { /* 437 */
/* type PARROT_INLINE_OP, */
"setstderr",
"setstderr_p",
@@ -5375,7 +5327,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 442 */
+ { /* 438 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_s_s",
@@ -5387,7 +5339,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 443 */
+ { /* 439 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_sc_s",
@@ -5399,7 +5351,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 444 */
+ { /* 440 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_s_sc",
@@ -5411,7 +5363,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 445 */
+ { /* 441 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_sc_sc",
@@ -5423,7 +5375,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 446 */
+ { /* 442 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_s",
@@ -5435,7 +5387,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 447 */
+ { /* 443 */
/* type PARROT_INLINE_OP, */
"open",
"open_p_sc",
@@ -5447,7 +5399,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 448 */
+ { /* 444 */
/* type PARROT_INLINE_OP, */
"print",
"print_i",
@@ -5459,7 +5411,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 449 */
+ { /* 445 */
/* type PARROT_INLINE_OP, */
"print",
"print_ic",
@@ -5471,7 +5423,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 450 */
+ { /* 446 */
/* type PARROT_INLINE_OP, */
"print",
"print_n",
@@ -5483,7 +5435,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 451 */
+ { /* 447 */
/* type PARROT_INLINE_OP, */
"print",
"print_nc",
@@ -5495,7 +5447,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 452 */
+ { /* 448 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_s",
@@ -5507,7 +5459,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 453 */
+ { /* 449 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_sc",
@@ -5519,7 +5471,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 454 */
+ { /* 450 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p",
@@ -5531,7 +5483,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 455 */
+ { /* 451 */
/* type PARROT_INLINE_OP, */
"say",
"say_i",
@@ -5543,7 +5495,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 456 */
+ { /* 452 */
/* type PARROT_INLINE_OP, */
"say",
"say_ic",
@@ -5555,7 +5507,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 457 */
+ { /* 453 */
/* type PARROT_INLINE_OP, */
"say",
"say_n",
@@ -5567,7 +5519,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 458 */
+ { /* 454 */
/* type PARROT_INLINE_OP, */
"say",
"say_nc",
@@ -5579,7 +5531,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 459 */
+ { /* 455 */
/* type PARROT_FUNCTION_OP, */
"say",
"say_s",
@@ -5591,7 +5543,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 460 */
+ { /* 456 */
/* type PARROT_FUNCTION_OP, */
"say",
"say_sc",
@@ -5603,7 +5555,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 461 */
+ { /* 457 */
/* type PARROT_FUNCTION_OP, */
"say",
"say_p",
@@ -5615,7 +5567,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 462 */
+ { /* 458 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_i",
@@ -5627,7 +5579,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 463 */
+ { /* 459 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_ic",
@@ -5639,7 +5591,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 464 */
+ { /* 460 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_n",
@@ -5651,7 +5603,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 465 */
+ { /* 461 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_nc",
@@ -5663,7 +5615,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 466 */
+ { /* 462 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_s",
@@ -5675,7 +5627,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 467 */
+ { /* 463 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_sc",
@@ -5687,7 +5639,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 468 */
+ { /* 464 */
/* type PARROT_FUNCTION_OP, */
"printerr",
"printerr_p",
@@ -5699,7 +5651,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 469 */
+ { /* 465 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_i",
@@ -5711,7 +5663,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 470 */
+ { /* 466 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_ic",
@@ -5723,7 +5675,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 471 */
+ { /* 467 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_n",
@@ -5735,7 +5687,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 472 */
+ { /* 468 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_nc",
@@ -5747,7 +5699,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 473 */
+ { /* 469 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_s",
@@ -5759,7 +5711,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 474 */
+ { /* 470 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_sc",
@@ -5771,7 +5723,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 475 */
+ { /* 471 */
/* type PARROT_FUNCTION_OP, */
"print",
"print_p_p",
@@ -5783,7 +5735,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 476 */
+ { /* 472 */
/* type PARROT_FUNCTION_OP, */
"read",
"read_s_i",
@@ -5795,7 +5747,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 477 */
+ { /* 473 */
/* type PARROT_FUNCTION_OP, */
"read",
"read_s_ic",
@@ -5807,7 +5759,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 478 */
+ { /* 474 */
/* type PARROT_FUNCTION_OP, */
"read",
"read_s_p_i",
@@ -5819,7 +5771,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 479 */
+ { /* 475 */
/* type PARROT_FUNCTION_OP, */
"read",
"read_s_p_ic",
@@ -5831,7 +5783,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 480 */
+ { /* 476 */
/* type PARROT_INLINE_OP, */
"readline",
"readline_s_p",
@@ -5843,7 +5795,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 481 */
+ { /* 477 */
/* type PARROT_FUNCTION_OP, */
"peek",
"peek_s",
@@ -5855,7 +5807,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 482 */
+ { /* 478 */
/* type PARROT_FUNCTION_OP, */
"peek",
"peek_s_p",
@@ -5867,7 +5819,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 483 */
+ { /* 479 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_s_i",
@@ -5879,7 +5831,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 484 */
+ { /* 480 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_sc_i",
@@ -5891,7 +5843,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 485 */
+ { /* 481 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_s_ic",
@@ -5903,7 +5855,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 486 */
+ { /* 482 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_sc_ic",
@@ -5915,7 +5867,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 487 */
+ { /* 483 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_i_i",
@@ -5927,7 +5879,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 488 */
+ { /* 484 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_ic_i",
@@ -5939,7 +5891,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 489 */
+ { /* 485 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_i_ic",
@@ -5951,7 +5903,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 490 */
+ { /* 486 */
/* type PARROT_FUNCTION_OP, */
"stat",
"stat_i_ic_ic",
@@ -5963,7 +5915,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 491 */
+ { /* 487 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_i",
@@ -5975,7 +5927,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 492 */
+ { /* 488 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_i",
@@ -5987,7 +5939,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 493 */
+ { /* 489 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_ic",
@@ -5999,7 +5951,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 494 */
+ { /* 490 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_ic",
@@ -6011,7 +5963,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 495 */
+ { /* 491 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_i_i",
@@ -6023,7 +5975,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 496 */
+ { /* 492 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_i_i",
@@ -6035,7 +5987,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 497 */
+ { /* 493 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_ic_i",
@@ -6047,7 +5999,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 498 */
+ { /* 494 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_ic_i",
@@ -6059,7 +6011,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 499 */
+ { /* 495 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_i_ic",
@@ -6071,7 +6023,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 500 */
+ { /* 496 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_i_ic",
@@ -6083,7 +6035,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 501 */
+ { /* 497 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_i_ic_ic",
@@ -6095,7 +6047,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 502 */
+ { /* 498 */
/* type PARROT_FUNCTION_OP, */
"seek",
"seek_p_ic_ic_ic",
@@ -6107,7 +6059,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 503 */
+ { /* 499 */
/* type PARROT_FUNCTION_OP, */
"tell",
"tell_i_p",
@@ -6119,7 +6071,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 504 */
+ { /* 500 */
/* type PARROT_FUNCTION_OP, */
"tell",
"tell_i_i_p",
@@ -6131,7 +6083,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 505 */
+ { /* 501 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_i",
@@ -6143,7 +6095,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 506 */
+ { /* 502 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_n",
@@ -6155,7 +6107,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 507 */
+ { /* 503 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_i_i",
@@ -6167,7 +6119,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 508 */
+ { /* 504 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_n_n",
@@ -6179,7 +6131,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 509 */
+ { /* 505 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_p",
@@ -6191,7 +6143,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 510 */
+ { /* 506 */
/* type PARROT_INLINE_OP, */
"abs",
"abs_p_p",
@@ -6203,7 +6155,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 511 */
+ { /* 507 */
/* type PARROT_INLINE_OP, */
"add",
"add_i_i",
@@ -6215,7 +6167,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 512 */
+ { /* 508 */
/* type PARROT_INLINE_OP, */
"add",
"add_i_ic",
@@ -6227,7 +6179,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 513 */
+ { /* 509 */
/* type PARROT_INLINE_OP, */
"add",
"add_n_n",
@@ -6239,7 +6191,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 514 */
+ { /* 510 */
/* type PARROT_INLINE_OP, */
"add",
"add_n_nc",
@@ -6251,7 +6203,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 515 */
+ { /* 511 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p",
@@ -6263,7 +6215,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 516 */
+ { /* 512 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_i",
@@ -6275,7 +6227,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 517 */
+ { /* 513 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_ic",
@@ -6287,7 +6239,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 518 */
+ { /* 514 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_n",
@@ -6299,7 +6251,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 519 */
+ { /* 515 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_nc",
@@ -6311,7 +6263,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 520 */
+ { /* 516 */
/* type PARROT_INLINE_OP, */
"add",
"add_i_i_i",
@@ -6323,7 +6275,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 521 */
+ { /* 517 */
/* type PARROT_INLINE_OP, */
"add",
"add_i_ic_i",
@@ -6335,7 +6287,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 522 */
+ { /* 518 */
/* type PARROT_INLINE_OP, */
"add",
"add_i_i_ic",
@@ -6347,7 +6299,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 523 */
+ { /* 519 */
/* type PARROT_INLINE_OP, */
"add",
"add_n_n_n",
@@ -6359,7 +6311,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 524 */
+ { /* 520 */
/* type PARROT_INLINE_OP, */
"add",
"add_n_nc_n",
@@ -6371,7 +6323,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 525 */
+ { /* 521 */
/* type PARROT_INLINE_OP, */
"add",
"add_n_n_nc",
@@ -6383,7 +6335,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 526 */
+ { /* 522 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p_p",
@@ -6395,7 +6347,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 527 */
+ { /* 523 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p_i",
@@ -6407,7 +6359,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 528 */
+ { /* 524 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p_ic",
@@ -6419,7 +6371,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 529 */
+ { /* 525 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p_n",
@@ -6431,7 +6383,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 530 */
+ { /* 526 */
/* type PARROT_INLINE_OP, */
"add",
"add_p_p_nc",
@@ -6443,7 +6395,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 531 */
+ { /* 527 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_i_i_i",
@@ -6455,7 +6407,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 532 */
+ { /* 528 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_i_ic_i",
@@ -6467,7 +6419,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 533 */
+ { /* 529 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_i_i_ic",
@@ -6479,7 +6431,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 534 */
+ { /* 530 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_p_p_i",
@@ -6491,7 +6443,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 535 */
+ { /* 531 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_p_p_ic",
@@ -6503,7 +6455,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 536 */
+ { /* 532 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_p_p_p",
@@ -6515,7 +6467,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 537 */
+ { /* 533 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_n_n_n",
@@ -6527,7 +6479,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 538 */
+ { /* 534 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_n_nc_n",
@@ -6539,7 +6491,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 539 */
+ { /* 535 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_n_n_nc",
@@ -6551,7 +6503,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 540 */
+ { /* 536 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_p_p_n",
@@ -6563,7 +6515,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 541 */
+ { /* 537 */
/* type PARROT_INLINE_OP, */
"cmod",
"cmod_p_p_nc",
@@ -6575,7 +6527,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 542 */
+ { /* 538 */
/* type PARROT_INLINE_OP, */
"dec",
"dec_i",
@@ -6587,7 +6539,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 543 */
+ { /* 539 */
/* type PARROT_INLINE_OP, */
"dec",
"dec_n",
@@ -6599,7 +6551,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 544 */
+ { /* 540 */
/* type PARROT_INLINE_OP, */
"dec",
"dec_p",
@@ -6611,7 +6563,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 545 */
+ { /* 541 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_i",
@@ -6623,7 +6575,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 546 */
+ { /* 542 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_ic",
@@ -6635,7 +6587,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 547 */
+ { /* 543 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_n",
@@ -6647,7 +6599,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 548 */
+ { /* 544 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_nc",
@@ -6659,7 +6611,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 549 */
+ { /* 545 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p",
@@ -6671,7 +6623,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 550 */
+ { /* 546 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_i",
@@ -6683,7 +6635,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 551 */
+ { /* 547 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_ic",
@@ -6695,7 +6647,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 552 */
+ { /* 548 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_n",
@@ -6707,7 +6659,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 553 */
+ { /* 549 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_nc",
@@ -6719,7 +6671,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 554 */
+ { /* 550 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_i_i",
@@ -6731,7 +6683,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 555 */
+ { /* 551 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_ic_i",
@@ -6743,7 +6695,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 556 */
+ { /* 552 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_i_ic",
@@ -6755,7 +6707,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 557 */
+ { /* 553 */
/* type PARROT_INLINE_OP, */
"div",
"div_i_ic_ic",
@@ -6767,7 +6719,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 558 */
+ { /* 554 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_n_n",
@@ -6779,7 +6731,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 559 */
+ { /* 555 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_nc_n",
@@ -6791,7 +6743,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 560 */
+ { /* 556 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_n_nc",
@@ -6803,7 +6755,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 561 */
+ { /* 557 */
/* type PARROT_INLINE_OP, */
"div",
"div_n_nc_nc",
@@ -6815,7 +6767,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 562 */
+ { /* 558 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p_p",
@@ -6827,7 +6779,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 563 */
+ { /* 559 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p_i",
@@ -6839,7 +6791,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 564 */
+ { /* 560 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p_ic",
@@ -6851,7 +6803,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 565 */
+ { /* 561 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p_n",
@@ -6863,7 +6815,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 566 */
+ { /* 562 */
/* type PARROT_INLINE_OP, */
"div",
"div_p_p_nc",
@@ -6875,7 +6827,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 567 */
+ { /* 563 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_i_i",
@@ -6887,7 +6839,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 568 */
+ { /* 564 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_i_ic",
@@ -6899,7 +6851,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 569 */
+ { /* 565 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_n_n",
@@ -6911,7 +6863,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 570 */
+ { /* 566 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_n_nc",
@@ -6923,7 +6875,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 571 */
+ { /* 567 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p",
@@ -6935,7 +6887,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 572 */
+ { /* 568 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_i",
@@ -6947,7 +6899,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 573 */
+ { /* 569 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_ic",
@@ -6959,7 +6911,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 574 */
+ { /* 570 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_n",
@@ -6971,7 +6923,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 575 */
+ { /* 571 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_nc",
@@ -6983,7 +6935,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 576 */
+ { /* 572 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_i_i_i",
@@ -6995,7 +6947,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 577 */
+ { /* 573 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_i_ic_i",
@@ -7007,7 +6959,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 578 */
+ { /* 574 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_i_i_ic",
@@ -7019,7 +6971,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 579 */
+ { /* 575 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_n_n_n",
@@ -7031,7 +6983,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 580 */
+ { /* 576 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_n_nc_n",
@@ -7043,7 +6995,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 581 */
+ { /* 577 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_n_n_nc",
@@ -7055,7 +7007,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 582 */
+ { /* 578 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p_p",
@@ -7067,7 +7019,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 583 */
+ { /* 579 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p_i",
@@ -7079,7 +7031,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 584 */
+ { /* 580 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p_ic",
@@ -7091,7 +7043,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 585 */
+ { /* 581 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p_n",
@@ -7103,7 +7055,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 586 */
+ { /* 582 */
/* type PARROT_INLINE_OP, */
"fdiv",
"fdiv_p_p_nc",
@@ -7115,7 +7067,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 587 */
+ { /* 583 */
/* type PARROT_INLINE_OP, */
"ceil",
"ceil_n",
@@ -7127,7 +7079,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 588 */
+ { /* 584 */
/* type PARROT_INLINE_OP, */
"ceil",
"ceil_i_n",
@@ -7139,7 +7091,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 589 */
+ { /* 585 */
/* type PARROT_INLINE_OP, */
"ceil",
"ceil_n_n",
@@ -7151,7 +7103,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 590 */
+ { /* 586 */
/* type PARROT_INLINE_OP, */
"floor",
"floor_n",
@@ -7163,7 +7115,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 591 */
+ { /* 587 */
/* type PARROT_INLINE_OP, */
"floor",
"floor_i_n",
@@ -7175,7 +7127,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 592 */
+ { /* 588 */
/* type PARROT_INLINE_OP, */
"floor",
"floor_n_n",
@@ -7187,7 +7139,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 593 */
+ { /* 589 */
/* type PARROT_INLINE_OP, */
"inc",
"inc_i",
@@ -7199,7 +7151,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 594 */
+ { /* 590 */
/* type PARROT_INLINE_OP, */
"inc",
"inc_n",
@@ -7211,7 +7163,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 595 */
+ { /* 591 */
/* type PARROT_INLINE_OP, */
"inc",
"inc_p",
@@ -7223,7 +7175,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 596 */
+ { /* 592 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_i_i",
@@ -7235,7 +7187,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 597 */
+ { /* 593 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_i_ic",
@@ -7247,7 +7199,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 598 */
+ { /* 594 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_n_n",
@@ -7259,7 +7211,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 599 */
+ { /* 595 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_n_nc",
@@ -7271,7 +7223,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 600 */
+ { /* 596 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p",
@@ -7283,7 +7235,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 601 */
+ { /* 597 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_i",
@@ -7295,7 +7247,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 602 */
+ { /* 598 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_ic",
@@ -7307,7 +7259,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 603 */
+ { /* 599 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_n",
@@ -7319,7 +7271,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 604 */
+ { /* 600 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_nc",
@@ -7331,7 +7283,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 605 */
+ { /* 601 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_i_i_i",
@@ -7343,7 +7295,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 606 */
+ { /* 602 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_i_ic_i",
@@ -7355,7 +7307,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 607 */
+ { /* 603 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_i_i_ic",
@@ -7367,7 +7319,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 608 */
+ { /* 604 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_n_n_n",
@@ -7379,7 +7331,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 609 */
+ { /* 605 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_n_nc_n",
@@ -7391,7 +7343,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 610 */
+ { /* 606 */
/* type PARROT_FUNCTION_OP, */
"mod",
"mod_n_n_nc",
@@ -7403,7 +7355,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 611 */
+ { /* 607 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p_p",
@@ -7415,7 +7367,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 612 */
+ { /* 608 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p_i",
@@ -7427,7 +7379,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 613 */
+ { /* 609 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p_ic",
@@ -7439,7 +7391,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 614 */
+ { /* 610 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p_n",
@@ -7451,7 +7403,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 615 */
+ { /* 611 */
/* type PARROT_INLINE_OP, */
"mod",
"mod_p_p_nc",
@@ -7463,7 +7415,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 616 */
+ { /* 612 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_i_i",
@@ -7475,7 +7427,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 617 */
+ { /* 613 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_i_ic",
@@ -7487,7 +7439,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 618 */
+ { /* 614 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_n_n",
@@ -7499,7 +7451,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 619 */
+ { /* 615 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_n_nc",
@@ -7511,7 +7463,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 620 */
+ { /* 616 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p",
@@ -7523,7 +7475,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 621 */
+ { /* 617 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_i",
@@ -7535,7 +7487,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 622 */
+ { /* 618 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_ic",
@@ -7547,7 +7499,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 623 */
+ { /* 619 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_n",
@@ -7559,7 +7511,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 624 */
+ { /* 620 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_nc",
@@ -7571,7 +7523,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 625 */
+ { /* 621 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_i_i_i",
@@ -7583,7 +7535,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 626 */
+ { /* 622 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_i_ic_i",
@@ -7595,7 +7547,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 627 */
+ { /* 623 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_i_i_ic",
@@ -7607,7 +7559,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 628 */
+ { /* 624 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_n_n_n",
@@ -7619,7 +7571,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 629 */
+ { /* 625 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_n_nc_n",
@@ -7631,7 +7583,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 630 */
+ { /* 626 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_n_n_nc",
@@ -7643,7 +7595,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 631 */
+ { /* 627 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p_p",
@@ -7655,7 +7607,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 632 */
+ { /* 628 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p_i",
@@ -7667,7 +7619,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 633 */
+ { /* 629 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p_ic",
@@ -7679,7 +7631,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 634 */
+ { /* 630 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p_n",
@@ -7691,7 +7643,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 635 */
+ { /* 631 */
/* type PARROT_INLINE_OP, */
"mul",
"mul_p_p_nc",
@@ -7703,7 +7655,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 636 */
+ { /* 632 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_i",
@@ -7715,7 +7667,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 637 */
+ { /* 633 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_n",
@@ -7727,7 +7679,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 638 */
+ { /* 634 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_p",
@@ -7739,7 +7691,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 639 */
+ { /* 635 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_i_i",
@@ -7751,7 +7703,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 640 */
+ { /* 636 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_n_n",
@@ -7763,7 +7715,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 641 */
+ { /* 637 */
/* type PARROT_INLINE_OP, */
"neg",
"neg_p_p",
@@ -7775,7 +7727,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 642 */
+ { /* 638 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_n_n",
@@ -7787,7 +7739,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 643 */
+ { /* 639 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_nc_n",
@@ -7799,7 +7751,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 644 */
+ { /* 640 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_n_nc",
@@ -7811,7 +7763,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 645 */
+ { /* 641 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_p_p_p",
@@ -7823,7 +7775,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 646 */
+ { /* 642 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_p_p_i",
@@ -7835,7 +7787,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 647 */
+ { /* 643 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_p_p_ic",
@@ -7847,7 +7799,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 648 */
+ { /* 644 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_p_p_n",
@@ -7859,7 +7811,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 649 */
+ { /* 645 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_p_p_nc",
@@ -7871,7 +7823,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 650 */
+ { /* 646 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_n_i",
@@ -7883,7 +7835,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 651 */
+ { /* 647 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_nc_i",
@@ -7895,7 +7847,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 652 */
+ { /* 648 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_n_ic",
@@ -7907,7 +7859,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 653 */
+ { /* 649 */
/* type PARROT_INLINE_OP, */
"pow",
"pow_n_nc_ic",
@@ -7919,7 +7871,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 654 */
+ { /* 650 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_i_i",
@@ -7931,7 +7883,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 655 */
+ { /* 651 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_i_ic",
@@ -7943,7 +7895,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 656 */
+ { /* 652 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_n_n",
@@ -7955,7 +7907,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 657 */
+ { /* 653 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_n_nc",
@@ -7967,7 +7919,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 658 */
+ { /* 654 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p",
@@ -7979,7 +7931,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 659 */
+ { /* 655 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_i",
@@ -7991,7 +7943,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 660 */
+ { /* 656 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_ic",
@@ -8003,7 +7955,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 661 */
+ { /* 657 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_n",
@@ -8015,7 +7967,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 662 */
+ { /* 658 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_nc",
@@ -8027,7 +7979,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 663 */
+ { /* 659 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_i_i_i",
@@ -8039,7 +7991,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 664 */
+ { /* 660 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_i_ic_i",
@@ -8051,7 +8003,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 665 */
+ { /* 661 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_i_i_ic",
@@ -8063,7 +8015,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 666 */
+ { /* 662 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_n_n_n",
@@ -8075,7 +8027,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 667 */
+ { /* 663 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_n_nc_n",
@@ -8087,7 +8039,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 668 */
+ { /* 664 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_n_n_nc",
@@ -8099,7 +8051,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 669 */
+ { /* 665 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p_p",
@@ -8111,7 +8063,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 670 */
+ { /* 666 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p_i",
@@ -8123,7 +8075,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 671 */
+ { /* 667 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p_ic",
@@ -8135,7 +8087,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 672 */
+ { /* 668 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p_n",
@@ -8147,7 +8099,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 673 */
+ { /* 669 */
/* type PARROT_INLINE_OP, */
"sub",
"sub_p_p_nc",
@@ -8159,7 +8111,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 674 */
+ { /* 670 */
/* type PARROT_INLINE_OP, */
"sqrt",
"sqrt_n_n",
@@ -8171,7 +8123,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 675 */
+ { /* 671 */
/* type PARROT_INLINE_OP, */
"acos",
"acos_n_n",
@@ -8183,7 +8135,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 676 */
+ { /* 672 */
/* type PARROT_INLINE_OP, */
"asec",
"asec_n_n",
@@ -8195,7 +8147,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 677 */
+ { /* 673 */
/* type PARROT_INLINE_OP, */
"asin",
"asin_n_n",
@@ -8207,7 +8159,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 678 */
+ { /* 674 */
/* type PARROT_INLINE_OP, */
"atan",
"atan_n_n",
@@ -8219,7 +8171,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 679 */
+ { /* 675 */
/* type PARROT_INLINE_OP, */
"atan",
"atan_n_n_n",
@@ -8231,7 +8183,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 680 */
+ { /* 676 */
/* type PARROT_INLINE_OP, */
"atan",
"atan_n_nc_n",
@@ -8243,7 +8195,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 681 */
+ { /* 677 */
/* type PARROT_INLINE_OP, */
"atan",
"atan_n_n_nc",
@@ -8255,7 +8207,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 682 */
+ { /* 678 */
/* type PARROT_INLINE_OP, */
"cos",
"cos_n_n",
@@ -8267,7 +8219,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 683 */
+ { /* 679 */
/* type PARROT_INLINE_OP, */
"cosh",
"cosh_n_n",
@@ -8279,7 +8231,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 684 */
+ { /* 680 */
/* type PARROT_INLINE_OP, */
"exp",
"exp_n_n",
@@ -8291,7 +8243,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 685 */
+ { /* 681 */
/* type PARROT_INLINE_OP, */
"ln",
"ln_n_n",
@@ -8303,7 +8255,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 686 */
+ { /* 682 */
/* type PARROT_INLINE_OP, */
"log10",
"log10_n_n",
@@ -8315,7 +8267,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 687 */
+ { /* 683 */
/* type PARROT_FUNCTION_OP, */
"log2",
"log2_n_n",
@@ -8327,7 +8279,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 688 */
+ { /* 684 */
/* type PARROT_INLINE_OP, */
"sec",
"sec_n_n",
@@ -8339,7 +8291,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 689 */
+ { /* 685 */
/* type PARROT_INLINE_OP, */
"sech",
"sech_n_n",
@@ -8351,7 +8303,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 690 */
+ { /* 686 */
/* type PARROT_INLINE_OP, */
"sin",
"sin_n_n",
@@ -8363,7 +8315,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 691 */
+ { /* 687 */
/* type PARROT_INLINE_OP, */
"sinh",
"sinh_n_n",
@@ -8375,7 +8327,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 692 */
+ { /* 688 */
/* type PARROT_INLINE_OP, */
"tan",
"tan_n_n",
@@ -8387,7 +8339,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 693 */
+ { /* 689 */
/* type PARROT_INLINE_OP, */
"tanh",
"tanh_n_n",
@@ -8399,7 +8351,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 694 */
+ { /* 690 */
/* type PARROT_INLINE_OP, */
"gcd",
"gcd_i_i_i",
@@ -8411,7 +8363,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 695 */
+ { /* 691 */
/* type PARROT_INLINE_OP, */
"gcd",
"gcd_i_ic_i",
@@ -8423,7 +8375,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 696 */
+ { /* 692 */
/* type PARROT_INLINE_OP, */
"gcd",
"gcd_i_i_ic",
@@ -8435,7 +8387,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 697 */
+ { /* 693 */
/* type PARROT_INLINE_OP, */
"lcm",
"lcm_i_i_i",
@@ -8447,7 +8399,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 698 */
+ { /* 694 */
/* type PARROT_INLINE_OP, */
"lcm",
"lcm_i_ic_i",
@@ -8459,7 +8411,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 699 */
+ { /* 695 */
/* type PARROT_INLINE_OP, */
"lcm",
"lcm_i_i_ic",
@@ -8471,7 +8423,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 700 */
+ { /* 696 */
/* type PARROT_INLINE_OP, */
"fact",
"fact_i_i",
@@ -8483,7 +8435,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 701 */
+ { /* 697 */
/* type PARROT_INLINE_OP, */
"fact",
"fact_n_i",
@@ -8495,7 +8447,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 702 */
+ { /* 698 */
/* type PARROT_FUNCTION_OP, */
"callmethodcc",
"callmethodcc_p_s",
@@ -8507,7 +8459,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 703 */
+ { /* 699 */
/* type PARROT_FUNCTION_OP, */
"callmethodcc",
"callmethodcc_p_sc",
@@ -8519,7 +8471,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 704 */
+ { /* 700 */
/* type PARROT_FUNCTION_OP, */
"callmethodcc",
"callmethodcc_p_p",
@@ -8531,7 +8483,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 705 */
+ { /* 701 */
/* type PARROT_FUNCTION_OP, */
"callmethod",
"callmethod_p_s_p",
@@ -8543,7 +8495,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 706 */
+ { /* 702 */
/* type PARROT_FUNCTION_OP, */
"callmethod",
"callmethod_p_sc_p",
@@ -8555,7 +8507,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 707 */
+ { /* 703 */
/* type PARROT_FUNCTION_OP, */
"callmethod",
"callmethod_p_p_p",
@@ -8567,7 +8519,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 708 */
+ { /* 704 */
/* type PARROT_FUNCTION_OP, */
"tailcallmethod",
"tailcallmethod_p_s",
@@ -8579,7 +8531,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 709 */
+ { /* 705 */
/* type PARROT_FUNCTION_OP, */
"tailcallmethod",
"tailcallmethod_p_sc",
@@ -8591,7 +8543,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 710 */
+ { /* 706 */
/* type PARROT_FUNCTION_OP, */
"tailcallmethod",
"tailcallmethod_p_p",
@@ -8603,7 +8555,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 711 */
+ { /* 707 */
/* type PARROT_INLINE_OP, */
"addmethod",
"addmethod_p_s_p",
@@ -8615,7 +8567,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 712 */
+ { /* 708 */
/* type PARROT_INLINE_OP, */
"addmethod",
"addmethod_p_sc_p",
@@ -8627,7 +8579,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 713 */
+ { /* 709 */
/* type PARROT_INLINE_OP, */
"can",
"can_i_p_s",
@@ -8639,7 +8591,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 714 */
+ { /* 710 */
/* type PARROT_INLINE_OP, */
"can",
"can_i_p_sc",
@@ -8651,7 +8603,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 715 */
+ { /* 711 */
/* type PARROT_INLINE_OP, */
"does",
"does_i_p_s",
@@ -8663,7 +8615,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 716 */
+ { /* 712 */
/* type PARROT_INLINE_OP, */
"does",
"does_i_p_sc",
@@ -8675,7 +8627,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 717 */
+ { /* 713 */
/* type PARROT_INLINE_OP, */
"does",
"does_i_p_p",
@@ -8687,7 +8639,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 718 */
+ { /* 714 */
/* type PARROT_INLINE_OP, */
"does",
"does_i_p_pc",
@@ -8699,7 +8651,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 719 */
+ { /* 715 */
/* type PARROT_INLINE_OP, */
"isa",
"isa_i_p_s",
@@ -8711,7 +8663,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 720 */
+ { /* 716 */
/* type PARROT_INLINE_OP, */
"isa",
"isa_i_p_sc",
@@ -8723,7 +8675,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 721 */
+ { /* 717 */
/* type PARROT_INLINE_OP, */
"isa",
"isa_i_p_p",
@@ -8735,7 +8687,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 722 */
+ { /* 718 */
/* type PARROT_INLINE_OP, */
"isa",
"isa_i_p_pc",
@@ -8747,7 +8699,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 723 */
+ { /* 719 */
/* type PARROT_INLINE_OP, */
"newclass",
"newclass_p_s",
@@ -8759,7 +8711,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 724 */
+ { /* 720 */
/* type PARROT_INLINE_OP, */
"newclass",
"newclass_p_sc",
@@ -8771,7 +8723,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 725 */
+ { /* 721 */
/* type PARROT_INLINE_OP, */
"newclass",
"newclass_p_p",
@@ -8783,7 +8735,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 726 */
+ { /* 722 */
/* type PARROT_INLINE_OP, */
"newclass",
"newclass_p_pc",
@@ -8795,7 +8747,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 727 */
+ { /* 723 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_p",
@@ -8807,7 +8759,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 728 */
+ { /* 724 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_pc",
@@ -8819,7 +8771,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 729 */
+ { /* 725 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_p_s",
@@ -8831,7 +8783,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 730 */
+ { /* 726 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_pc_s",
@@ -8843,7 +8795,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 731 */
+ { /* 727 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_p_sc",
@@ -8855,7 +8807,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 732 */
+ { /* 728 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_pc_sc",
@@ -8867,7 +8819,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 733 */
+ { /* 729 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_p_p",
@@ -8879,7 +8831,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 734 */
+ { /* 730 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_pc_p",
@@ -8891,7 +8843,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 735 */
+ { /* 731 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_p_pc",
@@ -8903,7 +8855,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 736 */
+ { /* 732 */
/* type PARROT_INLINE_OP, */
"subclass",
"subclass_p_pc_pc",
@@ -8915,7 +8867,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 737 */
+ { /* 733 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_s",
@@ -8927,7 +8879,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 738 */
+ { /* 734 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_sc",
@@ -8939,7 +8891,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 739 */
+ { /* 735 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_s_s",
@@ -8951,7 +8903,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 740 */
+ { /* 736 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_sc_s",
@@ -8963,7 +8915,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 741 */
+ { /* 737 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_s_sc",
@@ -8975,7 +8927,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 742 */
+ { /* 738 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_sc_sc",
@@ -8987,7 +8939,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 743 */
+ { /* 739 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_s_p",
@@ -8999,7 +8951,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 744 */
+ { /* 740 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_sc_p",
@@ -9011,7 +8963,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 745 */
+ { /* 741 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_s_pc",
@@ -9023,7 +8975,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 746 */
+ { /* 742 */
/* type PARROT_FUNCTION_OP, */
"subclass",
"subclass_p_sc_pc",
@@ -9035,7 +8987,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 747 */
+ { /* 743 */
/* type PARROT_INLINE_OP, */
"get_class",
"get_class_p_s",
@@ -9047,7 +8999,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 748 */
+ { /* 744 */
/* type PARROT_INLINE_OP, */
"get_class",
"get_class_p_sc",
@@ -9059,7 +9011,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 749 */
+ { /* 745 */
/* type PARROT_INLINE_OP, */
"get_class",
"get_class_p_p",
@@ -9071,7 +9023,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 750 */
+ { /* 746 */
/* type PARROT_INLINE_OP, */
"get_class",
"get_class_p_pc",
@@ -9083,7 +9035,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 751 */
+ { /* 747 */
/* type PARROT_INLINE_OP, */
"class",
"class_p_p",
@@ -9095,7 +9047,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 752 */
+ { /* 748 */
/* type PARROT_INLINE_OP, */
"addparent",
"addparent_p_p",
@@ -9107,7 +9059,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 753 */
+ { /* 749 */
/* type PARROT_INLINE_OP, */
"removeparent",
"removeparent_p_p",
@@ -9119,7 +9071,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 754 */
+ { /* 750 */
/* type PARROT_INLINE_OP, */
"addrole",
"addrole_p_p",
@@ -9131,7 +9083,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 755 */
+ { /* 751 */
/* type PARROT_INLINE_OP, */
"addattribute",
"addattribute_p_s",
@@ -9143,7 +9095,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 756 */
+ { /* 752 */
/* type PARROT_INLINE_OP, */
"addattribute",
"addattribute_p_sc",
@@ -9155,7 +9107,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 757 */
+ { /* 753 */
/* type PARROT_FUNCTION_OP, */
"removeattribute",
"removeattribute_p_s",
@@ -9167,7 +9119,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 758 */
+ { /* 754 */
/* type PARROT_FUNCTION_OP, */
"removeattribute",
"removeattribute_p_sc",
@@ -9179,7 +9131,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 759 */
+ { /* 755 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_s",
@@ -9191,7 +9143,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 760 */
+ { /* 756 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_sc",
@@ -9203,7 +9155,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 761 */
+ { /* 757 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_p_s",
@@ -9215,7 +9167,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 762 */
+ { /* 758 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_pc_s",
@@ -9227,7 +9179,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 763 */
+ { /* 759 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_p_sc",
@@ -9239,7 +9191,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 764 */
+ { /* 760 */
/* type PARROT_INLINE_OP, */
"getattribute",
"getattribute_p_p_pc_sc",
@@ -9251,7 +9203,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 765 */
+ { /* 761 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_s_p",
@@ -9263,7 +9215,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 766 */
+ { /* 762 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_sc_p",
@@ -9275,7 +9227,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 767 */
+ { /* 763 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_p_s_p",
@@ -9287,7 +9239,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 768 */
+ { /* 764 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_pc_s_p",
@@ -9299,7 +9251,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 769 */
+ { /* 765 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_p_sc_p",
@@ -9311,7 +9263,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 770 */
+ { /* 766 */
/* type PARROT_INLINE_OP, */
"setattribute",
"setattribute_p_pc_sc_p",
@@ -9323,7 +9275,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 771 */
+ { /* 767 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_p",
@@ -9335,7 +9287,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 772 */
+ { /* 768 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_pc",
@@ -9347,7 +9299,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 773 */
+ { /* 769 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_p_s",
@@ -9359,7 +9311,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 774 */
+ { /* 770 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_pc_s",
@@ -9371,7 +9323,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 775 */
+ { /* 771 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_p_sc",
@@ -9383,7 +9335,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 776 */
+ { /* 772 */
/* type PARROT_INLINE_OP, */
"inspect",
"inspect_p_pc_sc",
@@ -9395,7 +9347,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 777 */
+ { /* 773 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_s",
@@ -9407,7 +9359,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 778 */
+ { /* 774 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_sc",
@@ -9419,7 +9371,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 779 */
+ { /* 775 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_s_p",
@@ -9431,7 +9383,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 780 */
+ { /* 776 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_sc_p",
@@ -9443,7 +9395,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 781 */
+ { /* 777 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_s_pc",
@@ -9455,7 +9407,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 782 */
+ { /* 778 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_sc_pc",
@@ -9467,7 +9419,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 783 */
+ { /* 779 */
/* type PARROT_INLINE_OP, */
"new",
"new_p_p",
@@ -9479,7 +9431,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 784 */
+ { /* 780 */
/* type PARROT_INLINE_OP, */
"new",
"new_p_pc",
@@ -9491,7 +9443,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 785 */
+ { /* 781 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_p_p",
@@ -9503,7 +9455,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 786 */
+ { /* 782 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_pc_p",
@@ -9515,7 +9467,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 787 */
+ { /* 783 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_p_pc",
@@ -9527,7 +9479,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 788 */
+ { /* 784 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_pc_pc",
@@ -9539,7 +9491,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 789 */
+ { /* 785 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_p",
@@ -9551,7 +9503,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 790 */
+ { /* 786 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_pc",
@@ -9563,7 +9515,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 791 */
+ { /* 787 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_p_p",
@@ -9575,7 +9527,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 792 */
+ { /* 788 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_pc_p",
@@ -9587,7 +9539,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 793 */
+ { /* 789 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_p_pc",
@@ -9599,7 +9551,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 794 */
+ { /* 790 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_pc_pc",
@@ -9611,7 +9563,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 795 */
+ { /* 791 */
/* type PARROT_INLINE_OP, */
"typeof",
"typeof_s_p",
@@ -9623,7 +9575,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 796 */
+ { /* 792 */
/* type PARROT_INLINE_OP, */
"typeof",
"typeof_p_p",
@@ -9635,7 +9587,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 797 */
+ { /* 793 */
/* type PARROT_FUNCTION_OP, */
"get_repr",
"get_repr_s_p",
@@ -9647,7 +9599,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 798 */
+ { /* 794 */
/* type PARROT_FUNCTION_OP, */
"find_method",
"find_method_p_p_s",
@@ -9659,7 +9611,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 799 */
+ { /* 795 */
/* type PARROT_FUNCTION_OP, */
"find_method",
"find_method_p_p_sc",
@@ -9671,7 +9623,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 800 */
+ { /* 796 */
/* type PARROT_INLINE_OP, */
"defined",
"defined_i_p",
@@ -9683,7 +9635,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 801 */
+ { /* 797 */
/* type PARROT_INLINE_OP, */
"defined",
"defined_i_p_ki",
@@ -9695,7 +9647,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 802 */
+ { /* 798 */
/* type PARROT_INLINE_OP, */
"defined",
"defined_i_p_kic",
@@ -9707,7 +9659,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 803 */
+ { /* 799 */
/* type PARROT_INLINE_OP, */
"defined",
"defined_i_p_k",
@@ -9719,7 +9671,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 804 */
+ { /* 800 */
/* type PARROT_INLINE_OP, */
"defined",
"defined_i_p_kc",
@@ -9731,7 +9683,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 805 */
+ { /* 801 */
/* type PARROT_INLINE_OP, */
"exists",
"exists_i_p_ki",
@@ -9743,7 +9695,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 806 */
+ { /* 802 */
/* type PARROT_INLINE_OP, */
"exists",
"exists_i_p_kic",
@@ -9755,7 +9707,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 807 */
+ { /* 803 */
/* type PARROT_INLINE_OP, */
"exists",
"exists_i_p_k",
@@ -9767,7 +9719,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 808 */
+ { /* 804 */
/* type PARROT_INLINE_OP, */
"exists",
"exists_i_p_kc",
@@ -9779,7 +9731,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 809 */
+ { /* 805 */
/* type PARROT_INLINE_OP, */
"delete",
"delete_p_k",
@@ -9791,7 +9743,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 810 */
+ { /* 806 */
/* type PARROT_INLINE_OP, */
"delete",
"delete_p_kc",
@@ -9803,7 +9755,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 811 */
+ { /* 807 */
/* type PARROT_INLINE_OP, */
"delete",
"delete_p_ki",
@@ -9815,7 +9767,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 812 */
+ { /* 808 */
/* type PARROT_INLINE_OP, */
"delete",
"delete_p_kic",
@@ -9827,7 +9779,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 813 */
+ { /* 809 */
/* type PARROT_INLINE_OP, */
"elements",
"elements_i_p",
@@ -9839,7 +9791,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 814 */
+ { /* 810 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_i",
@@ -9851,7 +9803,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 815 */
+ { /* 811 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_ic",
@@ -9863,7 +9815,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 816 */
+ { /* 812 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_n",
@@ -9875,7 +9827,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 817 */
+ { /* 813 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_nc",
@@ -9887,7 +9839,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 818 */
+ { /* 814 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_s",
@@ -9899,7 +9851,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 819 */
+ { /* 815 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_sc",
@@ -9911,7 +9863,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 820 */
+ { /* 816 */
/* type PARROT_INLINE_OP, */
"push",
"push_p_p",
@@ -9923,7 +9875,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 821 */
+ { /* 817 */
/* type PARROT_INLINE_OP, */
"pop",
"pop_i_p",
@@ -9935,7 +9887,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 822 */
+ { /* 818 */
/* type PARROT_INLINE_OP, */
"pop",
"pop_n_p",
@@ -9947,7 +9899,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 823 */
+ { /* 819 */
/* type PARROT_INLINE_OP, */
"pop",
"pop_s_p",
@@ -9959,7 +9911,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 824 */
+ { /* 820 */
/* type PARROT_INLINE_OP, */
"pop",
"pop_p_p",
@@ -9971,7 +9923,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 825 */
+ { /* 821 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_i",
@@ -9983,7 +9935,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 826 */
+ { /* 822 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_ic",
@@ -9995,7 +9947,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 827 */
+ { /* 823 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_n",
@@ -10007,7 +9959,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 828 */
+ { /* 824 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_nc",
@@ -10019,7 +9971,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 829 */
+ { /* 825 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_s",
@@ -10031,7 +9983,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 830 */
+ { /* 826 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_sc",
@@ -10043,7 +9995,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 831 */
+ { /* 827 */
/* type PARROT_INLINE_OP, */
"unshift",
"unshift_p_p",
@@ -10055,7 +10007,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 832 */
+ { /* 828 */
/* type PARROT_INLINE_OP, */
"shift",
"shift_i_p",
@@ -10067,7 +10019,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 833 */
+ { /* 829 */
/* type PARROT_INLINE_OP, */
"shift",
"shift_n_p",
@@ -10079,7 +10031,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 834 */
+ { /* 830 */
/* type PARROT_INLINE_OP, */
"shift",
"shift_s_p",
@@ -10091,7 +10043,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 835 */
+ { /* 831 */
/* type PARROT_INLINE_OP, */
"shift",
"shift_p_p",
@@ -10103,7 +10055,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 836 */
+ { /* 832 */
/* type PARROT_INLINE_OP, */
"splice",
"splice_p_p_i_i",
@@ -10115,7 +10067,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 837 */
+ { /* 833 */
/* type PARROT_INLINE_OP, */
"splice",
"splice_p_p_ic_i",
@@ -10127,7 +10079,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 838 */
+ { /* 834 */
/* type PARROT_INLINE_OP, */
"splice",
"splice_p_p_i_ic",
@@ -10139,7 +10091,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 839 */
+ { /* 835 */
/* type PARROT_INLINE_OP, */
"splice",
"splice_p_p_ic_ic",
@@ -10151,7 +10103,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 840 */
+ { /* 836 */
/* type PARROT_FUNCTION_OP, */
"setprop",
"setprop_p_s_p",
@@ -10163,7 +10115,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 841 */
+ { /* 837 */
/* type PARROT_FUNCTION_OP, */
"setprop",
"setprop_p_sc_p",
@@ -10175,7 +10127,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 842 */
+ { /* 838 */
/* type PARROT_FUNCTION_OP, */
"getprop",
"getprop_p_s_p",
@@ -10187,7 +10139,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 843 */
+ { /* 839 */
/* type PARROT_FUNCTION_OP, */
"getprop",
"getprop_p_sc_p",
@@ -10199,7 +10151,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 844 */
+ { /* 840 */
/* type PARROT_FUNCTION_OP, */
"delprop",
"delprop_p_s",
@@ -10211,7 +10163,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 845 */
+ { /* 841 */
/* type PARROT_FUNCTION_OP, */
"delprop",
"delprop_p_sc",
@@ -10223,7 +10175,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 846 */
+ { /* 842 */
/* type PARROT_FUNCTION_OP, */
"prophash",
"prophash_p_p",
@@ -10235,7 +10187,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 847 */
+ { /* 843 */
/* type PARROT_FUNCTION_OP, */
"freeze",
"freeze_s_p",
@@ -10247,7 +10199,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 848 */
+ { /* 844 */
/* type PARROT_FUNCTION_OP, */
"thaw",
"thaw_p_s",
@@ -10259,7 +10211,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 849 */
+ { /* 845 */
/* type PARROT_FUNCTION_OP, */
"thaw",
"thaw_p_sc",
@@ -10271,7 +10223,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 850 */
+ { /* 846 */
/* type PARROT_INLINE_OP, */
"add_multi",
"add_multi_s_s_p",
@@ -10283,7 +10235,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 851 */
+ { /* 847 */
/* type PARROT_INLINE_OP, */
"add_multi",
"add_multi_sc_s_p",
@@ -10295,7 +10247,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 852 */
+ { /* 848 */
/* type PARROT_INLINE_OP, */
"add_multi",
"add_multi_s_sc_p",
@@ -10307,7 +10259,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 853 */
+ { /* 849 */
/* type PARROT_INLINE_OP, */
"add_multi",
"add_multi_sc_sc_p",
@@ -10319,7 +10271,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 854 */
+ { /* 850 */
/* type PARROT_INLINE_OP, */
"find_multi",
"find_multi_p_s_s",
@@ -10331,7 +10283,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 855 */
+ { /* 851 */
/* type PARROT_INLINE_OP, */
"find_multi",
"find_multi_p_sc_s",
@@ -10343,7 +10295,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 856 */
+ { /* 852 */
/* type PARROT_INLINE_OP, */
"find_multi",
"find_multi_p_s_sc",
@@ -10355,7 +10307,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 857 */
+ { /* 853 */
/* type PARROT_INLINE_OP, */
"find_multi",
"find_multi_p_sc_sc",
@@ -10367,7 +10319,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 858 */
+ { /* 854 */
/* type PARROT_FUNCTION_OP, */
"register",
"register_p",
@@ -10379,7 +10331,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 859 */
+ { /* 855 */
/* type PARROT_FUNCTION_OP, */
"unregister",
"unregister_p",
@@ -10391,7 +10343,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 860 */
+ { /* 856 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_i",
@@ -10403,7 +10355,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 861 */
+ { /* 857 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_ic",
@@ -10415,7 +10367,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 862 */
+ { /* 858 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_n",
@@ -10427,7 +10379,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 863 */
+ { /* 859 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_nc",
@@ -10439,7 +10391,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 864 */
+ { /* 860 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_s",
@@ -10451,7 +10403,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 865 */
+ { /* 861 */
/* type PARROT_FUNCTION_OP, */
"box",
"box_p_sc",
@@ -10463,7 +10415,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 866 */
+ { /* 862 */
/* type PARROT_INLINE_OP, */
"iter",
"iter_p_p",
@@ -10475,7 +10427,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 867 */
+ { /* 863 */
/* type PARROT_INLINE_OP, */
"morph",
"morph_p_p",
@@ -10487,7 +10439,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 868 */
+ { /* 864 */
/* type PARROT_INLINE_OP, */
"morph",
"morph_p_pc",
@@ -10499,7 +10451,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 869 */
+ { /* 865 */
/* type PARROT_INLINE_OP, */
"clone",
"clone_s_s",
@@ -10511,7 +10463,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 870 */
+ { /* 866 */
/* type PARROT_INLINE_OP, */
"clone",
"clone_s_sc",
@@ -10523,7 +10475,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 871 */
+ { /* 867 */
/* type PARROT_FUNCTION_OP, */
"exchange",
"exchange_i_i",
@@ -10535,7 +10487,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
{ 0, 0 }
},
- { /* 872 */
+ { /* 868 */
/* type PARROT_FUNCTION_OP, */
"exchange",
"exchange_p_p",
@@ -10547,7 +10499,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
{ 0, 0 }
},
- { /* 873 */
+ { /* 869 */
/* type PARROT_FUNCTION_OP, */
"exchange",
"exchange_n_n",
@@ -10559,7 +10511,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
{ 0, 0 }
},
- { /* 874 */
+ { /* 870 */
/* type PARROT_FUNCTION_OP, */
"exchange",
"exchange_s_s",
@@ -10571,7 +10523,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_INOUT },
{ 0, 0 }
},
- { /* 875 */
+ { /* 871 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_i",
@@ -10583,7 +10535,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 876 */
+ { /* 872 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_ic",
@@ -10595,7 +10547,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 877 */
+ { /* 873 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_n",
@@ -10607,7 +10559,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 878 */
+ { /* 874 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_nc",
@@ -10619,7 +10571,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 879 */
+ { /* 875 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_s",
@@ -10631,7 +10583,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 880 */
+ { /* 876 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_sc",
@@ -10643,7 +10595,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 881 */
+ { /* 877 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_n",
@@ -10655,7 +10607,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 882 */
+ { /* 878 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_nc",
@@ -10667,7 +10619,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 883 */
+ { /* 879 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_i",
@@ -10679,7 +10631,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 884 */
+ { /* 880 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_ic",
@@ -10691,7 +10643,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 885 */
+ { /* 881 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_s",
@@ -10703,7 +10655,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 886 */
+ { /* 882 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_sc",
@@ -10715,7 +10667,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 887 */
+ { /* 883 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_p",
@@ -10727,7 +10679,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 888 */
+ { /* 884 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_p",
@@ -10739,7 +10691,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 889 */
+ { /* 885 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_s",
@@ -10751,7 +10703,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 890 */
+ { /* 886 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_sc",
@@ -10763,7 +10715,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 891 */
+ { /* 887 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_i",
@@ -10775,7 +10727,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 892 */
+ { /* 888 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_ic",
@@ -10787,7 +10739,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 893 */
+ { /* 889 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_n",
@@ -10799,7 +10751,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 894 */
+ { /* 890 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_nc",
@@ -10811,7 +10763,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 895 */
+ { /* 891 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_pc",
@@ -10823,7 +10775,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 896 */
+ { /* 892 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_p",
@@ -10835,7 +10787,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 897 */
+ { /* 893 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_i",
@@ -10847,7 +10799,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 898 */
+ { /* 894 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ic",
@@ -10859,7 +10811,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 899 */
+ { /* 895 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_n",
@@ -10871,7 +10823,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 900 */
+ { /* 896 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_nc",
@@ -10883,7 +10835,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 901 */
+ { /* 897 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_s",
@@ -10895,7 +10847,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 902 */
+ { /* 898 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_sc",
@@ -10907,7 +10859,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 903 */
+ { /* 899 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_p",
@@ -10919,7 +10871,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 904 */
+ { /* 900 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_p",
@@ -10931,7 +10883,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 905 */
+ { /* 901 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_i",
@@ -10943,7 +10895,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 906 */
+ { /* 902 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_ic",
@@ -10955,7 +10907,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 907 */
+ { /* 903 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_n",
@@ -10967,7 +10919,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 908 */
+ { /* 904 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_nc",
@@ -10979,7 +10931,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 909 */
+ { /* 905 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_s",
@@ -10991,7 +10943,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 910 */
+ { /* 906 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_p_sc",
@@ -11003,7 +10955,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 911 */
+ { /* 907 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_s_s",
@@ -11015,7 +10967,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 912 */
+ { /* 908 */
/* type PARROT_INLINE_OP, */
"assign",
"assign_s_sc",
@@ -11027,7 +10979,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 913 */
+ { /* 909 */
/* type PARROT_INLINE_OP, */
"setref",
"setref_p_p",
@@ -11039,7 +10991,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 914 */
+ { /* 910 */
/* type PARROT_INLINE_OP, */
"deref",
"deref_p_p",
@@ -11051,7 +11003,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 915 */
+ { /* 911 */
/* type PARROT_INLINE_OP, */
"setp_ind",
"setp_ind_i_p",
@@ -11063,7 +11015,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 916 */
+ { /* 912 */
/* type PARROT_INLINE_OP, */
"setp_ind",
"setp_ind_ic_p",
@@ -11075,7 +11027,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 917 */
+ { /* 913 */
/* type PARROT_INLINE_OP, */
"setn_ind",
"setn_ind_i_n",
@@ -11087,7 +11039,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 918 */
+ { /* 914 */
/* type PARROT_INLINE_OP, */
"setn_ind",
"setn_ind_ic_n",
@@ -11099,7 +11051,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 919 */
+ { /* 915 */
/* type PARROT_INLINE_OP, */
"setn_ind",
"setn_ind_i_nc",
@@ -11111,7 +11063,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 920 */
+ { /* 916 */
/* type PARROT_INLINE_OP, */
"setn_ind",
"setn_ind_ic_nc",
@@ -11123,7 +11075,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 921 */
+ { /* 917 */
/* type PARROT_INLINE_OP, */
"sets_ind",
"sets_ind_i_s",
@@ -11135,7 +11087,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 922 */
+ { /* 918 */
/* type PARROT_INLINE_OP, */
"sets_ind",
"sets_ind_ic_s",
@@ -11147,7 +11099,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 923 */
+ { /* 919 */
/* type PARROT_INLINE_OP, */
"sets_ind",
"sets_ind_i_sc",
@@ -11159,7 +11111,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 924 */
+ { /* 920 */
/* type PARROT_INLINE_OP, */
"sets_ind",
"sets_ind_ic_sc",
@@ -11171,7 +11123,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 925 */
+ { /* 921 */
/* type PARROT_INLINE_OP, */
"seti_ind",
"seti_ind_i_i",
@@ -11183,7 +11135,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 926 */
+ { /* 922 */
/* type PARROT_INLINE_OP, */
"seti_ind",
"seti_ind_ic_i",
@@ -11195,7 +11147,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 927 */
+ { /* 923 */
/* type PARROT_INLINE_OP, */
"seti_ind",
"seti_ind_i_ic",
@@ -11207,7 +11159,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 928 */
+ { /* 924 */
/* type PARROT_INLINE_OP, */
"seti_ind",
"seti_ind_ic_ic",
@@ -11219,7 +11171,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 929 */
+ { /* 925 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_i",
@@ -11231,7 +11183,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 930 */
+ { /* 926 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_i",
@@ -11243,7 +11195,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 931 */
+ { /* 927 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_ic",
@@ -11255,7 +11207,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 932 */
+ { /* 928 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_ic",
@@ -11267,7 +11219,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 933 */
+ { /* 929 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_n",
@@ -11279,7 +11231,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 934 */
+ { /* 930 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_n",
@@ -11291,7 +11243,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 935 */
+ { /* 931 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_nc",
@@ -11303,7 +11255,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 936 */
+ { /* 932 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_nc",
@@ -11315,7 +11267,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 937 */
+ { /* 933 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_s",
@@ -11327,7 +11279,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 938 */
+ { /* 934 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_s",
@@ -11339,7 +11291,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 939 */
+ { /* 935 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_sc",
@@ -11351,7 +11303,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 940 */
+ { /* 936 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_sc",
@@ -11363,7 +11315,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 941 */
+ { /* 937 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_ki_p",
@@ -11375,7 +11327,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 942 */
+ { /* 938 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kic_p",
@@ -11387,7 +11339,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 943 */
+ { /* 939 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_p_ki",
@@ -11399,7 +11351,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 944 */
+ { /* 940 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_p_kic",
@@ -11411,7 +11363,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 945 */
+ { /* 941 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_p_ki",
@@ -11423,7 +11375,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 946 */
+ { /* 942 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_p_kic",
@@ -11435,7 +11387,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 947 */
+ { /* 943 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_p_ki",
@@ -11447,7 +11399,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 948 */
+ { /* 944 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_p_kic",
@@ -11459,7 +11411,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 949 */
+ { /* 945 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_p_ki",
@@ -11471,7 +11423,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 950 */
+ { /* 946 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_p_kic",
@@ -11483,7 +11435,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 951 */
+ { /* 947 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_i",
@@ -11495,7 +11447,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 952 */
+ { /* 948 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_i",
@@ -11507,7 +11459,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 953 */
+ { /* 949 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_ic",
@@ -11519,7 +11471,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 954 */
+ { /* 950 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_ic",
@@ -11531,7 +11483,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 955 */
+ { /* 951 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_n",
@@ -11543,7 +11495,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 956 */
+ { /* 952 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_n",
@@ -11555,7 +11507,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 957 */
+ { /* 953 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_nc",
@@ -11567,7 +11519,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 958 */
+ { /* 954 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_nc",
@@ -11579,7 +11531,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 959 */
+ { /* 955 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_s",
@@ -11591,7 +11543,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 960 */
+ { /* 956 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_s",
@@ -11603,7 +11555,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 961 */
+ { /* 957 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_sc",
@@ -11615,7 +11567,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 962 */
+ { /* 958 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_sc",
@@ -11627,7 +11579,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 963 */
+ { /* 959 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_k_p",
@@ -11639,7 +11591,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 964 */
+ { /* 960 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_kc_p",
@@ -11651,7 +11603,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 965 */
+ { /* 961 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_p_k",
@@ -11663,7 +11615,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 966 */
+ { /* 962 */
/* type PARROT_INLINE_OP, */
"set",
"set_i_p_kc",
@@ -11675,7 +11627,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 967 */
+ { /* 963 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_p_k",
@@ -11687,7 +11639,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 968 */
+ { /* 964 */
/* type PARROT_INLINE_OP, */
"set",
"set_n_p_kc",
@@ -11699,7 +11651,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 969 */
+ { /* 965 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_p_k",
@@ -11711,7 +11663,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 970 */
+ { /* 966 */
/* type PARROT_INLINE_OP, */
"set",
"set_s_p_kc",
@@ -11723,7 +11675,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 971 */
+ { /* 967 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_p_k",
@@ -11735,7 +11687,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 972 */
+ { /* 968 */
/* type PARROT_INLINE_OP, */
"set",
"set_p_p_kc",
@@ -11747,7 +11699,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 973 */
+ { /* 969 */
/* type PARROT_INLINE_OP, */
"clone",
"clone_p_p",
@@ -11759,7 +11711,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 974 */
+ { /* 970 */
/* type PARROT_INLINE_OP, */
"clone",
"clone_p_p_p",
@@ -11771,7 +11723,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 975 */
+ { /* 971 */
/* type PARROT_INLINE_OP, */
"clone",
"clone_p_p_pc",
@@ -11783,7 +11735,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 976 */
+ { /* 972 */
/* type PARROT_INLINE_OP, */
"copy",
"copy_p_p",
@@ -11795,7 +11747,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 977 */
+ { /* 973 */
/* type PARROT_INLINE_OP, */
"null",
"null_s",
@@ -11807,7 +11759,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 978 */
+ { /* 974 */
/* type PARROT_INLINE_OP, */
"null",
"null_i",
@@ -11819,7 +11771,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 979 */
+ { /* 975 */
/* type PARROT_INLINE_OP, */
"null",
"null_p",
@@ -11831,7 +11783,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 980 */
+ { /* 976 */
/* type PARROT_INLINE_OP, */
"null",
"null_n",
@@ -11843,7 +11795,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 981 */
+ { /* 977 */
/* type PARROT_INLINE_OP, */
"cleari",
"cleari",
@@ -11855,7 +11807,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 982 */
+ { /* 978 */
/* type PARROT_INLINE_OP, */
"clearn",
"clearn",
@@ -11867,7 +11819,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 983 */
+ { /* 979 */
/* type PARROT_INLINE_OP, */
"clears",
"clears",
@@ -11879,7 +11831,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 984 */
+ { /* 980 */
/* type PARROT_INLINE_OP, */
"clearp",
"clearp",
@@ -11891,7 +11843,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 985 */
+ { /* 981 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_s",
@@ -11903,7 +11855,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 986 */
+ { /* 982 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_sc",
@@ -11915,7 +11867,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 987 */
+ { /* 983 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_s_i",
@@ -11927,7 +11879,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 988 */
+ { /* 984 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_sc_i",
@@ -11939,7 +11891,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 989 */
+ { /* 985 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_s_ic",
@@ -11951,7 +11903,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 990 */
+ { /* 986 */
/* type PARROT_INLINE_OP, */
"ord",
"ord_i_sc_ic",
@@ -11963,7 +11915,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 991 */
+ { /* 987 */
/* type PARROT_INLINE_OP, */
"chr",
"chr_s_i",
@@ -11975,7 +11927,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 992 */
+ { /* 988 */
/* type PARROT_INLINE_OP, */
"chr",
"chr_s_ic",
@@ -11987,31 +11939,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 993 */
- /* type PARROT_INLINE_OP, */
- "chopn",
- "chopn_s_i",
- "Parrot_chopn_s_i",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_I },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 994 */
- /* type PARROT_INLINE_OP, */
- "chopn",
- "chopn_s_ic",
- "Parrot_chopn_s_ic",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_IC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 995 */
+ { /* 989 */
/* type PARROT_INLINE_OP, */
"chopn",
"chopn_s_s_i",
@@ -12023,7 +11951,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 996 */
+ { /* 990 */
/* type PARROT_INLINE_OP, */
"chopn",
"chopn_s_sc_i",
@@ -12035,7 +11963,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 997 */
+ { /* 991 */
/* type PARROT_INLINE_OP, */
"chopn",
"chopn_s_s_ic",
@@ -12047,7 +11975,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 998 */
+ { /* 992 */
/* type PARROT_INLINE_OP, */
"chopn",
"chopn_s_sc_ic",
@@ -12059,7 +11987,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 999 */
+ { /* 993 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_s_s",
@@ -12071,7 +11999,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1000 */
+ { /* 994 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_s_sc",
@@ -12083,7 +12011,7 @@
{ PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1001 */
+ { /* 995 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_p",
@@ -12095,7 +12023,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1002 */
+ { /* 996 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_s",
@@ -12107,7 +12035,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1003 */
+ { /* 997 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_sc",
@@ -12119,7 +12047,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1004 */
+ { /* 998 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_s_s_s",
@@ -12131,7 +12059,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1005 */
+ { /* 999 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_s_sc_s",
@@ -12143,7 +12071,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1006 */
+ { /* 1000 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_s_s_sc",
@@ -12155,7 +12083,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1007 */
+ { /* 1001 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_p_s",
@@ -12167,7 +12095,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1008 */
+ { /* 1002 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_p_sc",
@@ -12179,7 +12107,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1009 */
+ { /* 1003 */
/* type PARROT_INLINE_OP, */
"concat",
"concat_p_p_p",
@@ -12191,7 +12119,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1010 */
+ { /* 1004 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_s_s_i",
@@ -12203,7 +12131,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1011 */
+ { /* 1005 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_s_sc_i",
@@ -12215,7 +12143,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1012 */
+ { /* 1006 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_s_s_ic",
@@ -12227,7 +12155,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1013 */
+ { /* 1007 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_s_sc_ic",
@@ -12239,7 +12167,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1014 */
+ { /* 1008 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_p_i",
@@ -12251,7 +12179,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1015 */
+ { /* 1009 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_p_ic",
@@ -12263,7 +12191,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1016 */
+ { /* 1010 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_p_p",
@@ -12275,7 +12203,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1017 */
+ { /* 1011 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_i",
@@ -12287,7 +12215,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1018 */
+ { /* 1012 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_ic",
@@ -12299,7 +12227,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1019 */
+ { /* 1013 */
/* type PARROT_INLINE_OP, */
"repeat",
"repeat_p_p",
@@ -12311,7 +12239,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1020 */
+ { /* 1014 */
/* type PARROT_INLINE_OP, */
"length",
"length_i_s",
@@ -12323,7 +12251,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1021 */
+ { /* 1015 */
/* type PARROT_INLINE_OP, */
"length",
"length_i_sc",
@@ -12335,7 +12263,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1022 */
+ { /* 1016 */
/* type PARROT_INLINE_OP, */
"bytelength",
"bytelength_i_s",
@@ -12347,7 +12275,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1023 */
+ { /* 1017 */
/* type PARROT_INLINE_OP, */
"bytelength",
"bytelength_i_sc",
@@ -12359,7 +12287,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1024 */
+ { /* 1018 */
/* type PARROT_FUNCTION_OP, */
"pin",
"pin_s",
@@ -12371,7 +12299,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 1025 */
+ { /* 1019 */
/* type PARROT_FUNCTION_OP, */
"unpin",
"unpin_s",
@@ -12383,7 +12311,7 @@
{ PARROT_ARGDIR_INOUT },
{ 0 }
},
- { /* 1026 */
+ { /* 1020 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_i",
@@ -12395,7 +12323,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1027 */
+ { /* 1021 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_i",
@@ -12407,7 +12335,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1028 */
+ { /* 1022 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_ic",
@@ -12419,7 +12347,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1029 */
+ { /* 1023 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_ic",
@@ -12431,7 +12359,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1030 */
+ { /* 1024 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_i_i",
@@ -12443,7 +12371,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1031 */
+ { /* 1025 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_i_i",
@@ -12455,7 +12383,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1032 */
+ { /* 1026 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_ic_i",
@@ -12467,7 +12395,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1033 */
+ { /* 1027 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_ic_i",
@@ -12479,7 +12407,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1034 */
+ { /* 1028 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_i_ic",
@@ -12491,7 +12419,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1035 */
+ { /* 1029 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_i_ic",
@@ -12503,7 +12431,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1036 */
+ { /* 1030 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_s_ic_ic",
@@ -12515,7 +12443,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1037 */
+ { /* 1031 */
/* type PARROT_INLINE_OP, */
"substr",
"substr_s_sc_ic_ic",
@@ -12527,247 +12455,247 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1038 */
+ { /* 1032 */
/* type PARROT_INLINE_OP, */
"substr",
- "substr_s_s_i_i_s",
- "Parrot_substr_s_s_i_i_s",
+ "substr_s_p_i_i",
+ "Parrot_substr_s_p_i_i",
/* "", body */
0,
- 6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0, 0 }
+ 5,
+ { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0 }
},
- { /* 1039 */
+ { /* 1033 */
/* type PARROT_INLINE_OP, */
"substr",
- "substr_s_s_ic_i_s",
- "Parrot_substr_s_s_ic_i_s",
+ "substr_s_p_ic_i",
+ "Parrot_substr_s_p_ic_i",
/* "", body */
0,
- 6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0, 0 }
+ 5,
+ { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0 }
},
- { /* 1040 */
+ { /* 1034 */
/* type PARROT_INLINE_OP, */
"substr",
- "substr_s_s_i_ic_s",
- "Parrot_substr_s_s_i_ic_s",
+ "substr_s_p_i_ic",
+ "Parrot_substr_s_p_i_ic",
/* "", body */
0,
- 6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0, 0 }
+ 5,
+ { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0 }
},
- { /* 1041 */
+ { /* 1035 */
/* type PARROT_INLINE_OP, */
"substr",
- "substr_s_s_ic_ic_s",
- "Parrot_substr_s_s_ic_ic_s",
+ "substr_s_p_ic_ic",
+ "Parrot_substr_s_p_ic_ic",
/* "", body */
0,
- 6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0, 0 }
+ 5,
+ { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0 }
},
- { /* 1042 */
+ { /* 1036 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_s_i_i_sc",
- "Parrot_substr_s_s_i_i_sc",
+ "replace",
+ "replace_s_s_i_i_s",
+ "Parrot_replace_s_s_i_i_s",
/* "", body */
0,
6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1043 */
+ { /* 1037 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_s_ic_i_sc",
- "Parrot_substr_s_s_ic_i_sc",
+ "replace",
+ "replace_s_sc_i_i_s",
+ "Parrot_replace_s_sc_i_i_s",
/* "", body */
0,
6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1044 */
+ { /* 1038 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_s_i_ic_sc",
- "Parrot_substr_s_s_i_ic_sc",
+ "replace",
+ "replace_s_s_ic_i_s",
+ "Parrot_replace_s_s_ic_i_s",
/* "", body */
0,
6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1045 */
+ { /* 1039 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_s_ic_ic_sc",
- "Parrot_substr_s_s_ic_ic_sc",
+ "replace",
+ "replace_s_sc_ic_i_s",
+ "Parrot_replace_s_sc_ic_i_s",
/* "", body */
0,
6,
- { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1046 */
+ { /* 1040 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_i_i_s",
- "Parrot_substr_s_i_i_s",
+ "replace",
+ "replace_s_s_i_ic_s",
+ "Parrot_replace_s_s_i_ic_s",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1047 */
+ { /* 1041 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_ic_i_s",
- "Parrot_substr_s_ic_i_s",
+ "replace",
+ "replace_s_sc_i_ic_s",
+ "Parrot_replace_s_sc_i_ic_s",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1048 */
+ { /* 1042 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_i_ic_s",
- "Parrot_substr_s_i_ic_s",
+ "replace",
+ "replace_s_s_ic_ic_s",
+ "Parrot_replace_s_s_ic_ic_s",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1049 */
+ { /* 1043 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_ic_ic_s",
- "Parrot_substr_s_ic_ic_s",
+ "replace",
+ "replace_s_sc_ic_ic_s",
+ "Parrot_replace_s_sc_ic_ic_s",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_S },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1050 */
+ { /* 1044 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_i_i_sc",
- "Parrot_substr_s_i_i_sc",
+ "replace",
+ "replace_s_s_i_i_sc",
+ "Parrot_replace_s_s_i_i_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1051 */
+ { /* 1045 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_ic_i_sc",
- "Parrot_substr_s_ic_i_sc",
+ "replace",
+ "replace_s_sc_i_i_sc",
+ "Parrot_replace_s_sc_i_i_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_I, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1052 */
+ { /* 1046 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_i_ic_sc",
- "Parrot_substr_s_i_ic_sc",
+ "replace",
+ "replace_s_s_ic_i_sc",
+ "Parrot_replace_s_s_ic_i_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1053 */
+ { /* 1047 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_ic_ic_sc",
- "Parrot_substr_s_ic_ic_sc",
+ "replace",
+ "replace_s_sc_ic_i_sc",
+ "Parrot_replace_s_sc_ic_i_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_I, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1054 */
+ { /* 1048 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_p_i_i",
- "Parrot_substr_s_p_i_i",
+ "replace",
+ "replace_s_s_i_ic_sc",
+ "Parrot_replace_s_s_i_ic_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_I },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1055 */
+ { /* 1049 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_p_ic_i",
- "Parrot_substr_s_p_ic_i",
+ "replace",
+ "replace_s_sc_i_ic_sc",
+ "Parrot_replace_s_sc_i_ic_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_I },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_I, PARROT_ARG_IC, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1056 */
+ { /* 1050 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_p_i_ic",
- "Parrot_substr_s_p_i_ic",
+ "replace",
+ "replace_s_s_ic_ic_sc",
+ "Parrot_replace_s_s_ic_ic_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_I, PARROT_ARG_IC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_S, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1057 */
+ { /* 1051 */
/* type PARROT_INLINE_OP, */
- "substr",
- "substr_s_p_ic_ic",
- "Parrot_substr_s_p_ic_ic",
+ "replace",
+ "replace_s_sc_ic_ic_sc",
+ "Parrot_replace_s_sc_ic_ic_sc",
/* "", body */
0,
- 5,
- { PARROT_ARG_S, PARROT_ARG_P, PARROT_ARG_IC, PARROT_ARG_IC },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 0, 0, 0 }
+ 6,
+ { PARROT_ARG_S, PARROT_ARG_SC, PARROT_ARG_IC, PARROT_ARG_IC, PARROT_ARG_SC },
+ { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
+ { 0, 0, 0, 0, 0 }
},
- { /* 1058 */
+ { /* 1052 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_s",
@@ -12779,7 +12707,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1059 */
+ { /* 1053 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_s",
@@ -12791,7 +12719,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1060 */
+ { /* 1054 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_sc",
@@ -12803,7 +12731,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1061 */
+ { /* 1055 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_sc",
@@ -12815,7 +12743,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1062 */
+ { /* 1056 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_s_i",
@@ -12827,7 +12755,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1063 */
+ { /* 1057 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_s_i",
@@ -12839,7 +12767,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1064 */
+ { /* 1058 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_sc_i",
@@ -12851,7 +12779,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1065 */
+ { /* 1059 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_sc_i",
@@ -12863,7 +12791,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1066 */
+ { /* 1060 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_s_ic",
@@ -12875,7 +12803,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1067 */
+ { /* 1061 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_s_ic",
@@ -12887,7 +12815,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1068 */
+ { /* 1062 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_s_sc_ic",
@@ -12899,7 +12827,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1069 */
+ { /* 1063 */
/* type PARROT_INLINE_OP, */
"index",
"index_i_sc_sc_ic",
@@ -12911,7 +12839,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1070 */
+ { /* 1064 */
/* type PARROT_INLINE_OP, */
"sprintf",
"sprintf_s_s_p",
@@ -12923,7 +12851,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1071 */
+ { /* 1065 */
/* type PARROT_INLINE_OP, */
"sprintf",
"sprintf_s_sc_p",
@@ -12935,7 +12863,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1072 */
+ { /* 1066 */
/* type PARROT_INLINE_OP, */
"sprintf",
"sprintf_p_p_p",
@@ -12947,7 +12875,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1073 */
+ { /* 1067 */
/* type PARROT_INLINE_OP, */
"new",
"new_s",
@@ -12959,7 +12887,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1074 */
+ { /* 1068 */
/* type PARROT_INLINE_OP, */
"new",
"new_s_i",
@@ -12971,7 +12899,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1075 */
+ { /* 1069 */
/* type PARROT_INLINE_OP, */
"new",
"new_s_ic",
@@ -12983,7 +12911,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1076 */
+ { /* 1070 */
/* type PARROT_INLINE_OP, */
"stringinfo",
"stringinfo_i_s_i",
@@ -12995,7 +12923,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1077 */
+ { /* 1071 */
/* type PARROT_INLINE_OP, */
"stringinfo",
"stringinfo_i_sc_i",
@@ -13007,7 +12935,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1078 */
+ { /* 1072 */
/* type PARROT_INLINE_OP, */
"stringinfo",
"stringinfo_i_s_ic",
@@ -13019,7 +12947,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1079 */
+ { /* 1073 */
/* type PARROT_INLINE_OP, */
"stringinfo",
"stringinfo_i_sc_ic",
@@ -13031,7 +12959,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1080 */
+ { /* 1074 */
/* type PARROT_INLINE_OP, */
"upcase",
"upcase_s_s",
@@ -13043,7 +12971,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1081 */
+ { /* 1075 */
/* type PARROT_INLINE_OP, */
"upcase",
"upcase_s_sc",
@@ -13055,19 +12983,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1082 */
- /* type PARROT_INLINE_OP, */
- "upcase",
- "upcase_s",
- "Parrot_upcase_s",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT },
- { 0 }
- },
- { /* 1083 */
+ { /* 1076 */
/* type PARROT_INLINE_OP, */
"downcase",
"downcase_s_s",
@@ -13079,7 +12995,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1084 */
+ { /* 1077 */
/* type PARROT_INLINE_OP, */
"downcase",
"downcase_s_sc",
@@ -13091,19 +13007,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1085 */
- /* type PARROT_INLINE_OP, */
- "downcase",
- "downcase_s",
- "Parrot_downcase_s",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT },
- { 0 }
- },
- { /* 1086 */
+ { /* 1078 */
/* type PARROT_INLINE_OP, */
"titlecase",
"titlecase_s_s",
@@ -13115,7 +13019,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1087 */
+ { /* 1079 */
/* type PARROT_INLINE_OP, */
"titlecase",
"titlecase_s_sc",
@@ -13127,19 +13031,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1088 */
- /* type PARROT_INLINE_OP, */
- "titlecase",
- "titlecase_s",
- "Parrot_titlecase_s",
- /* "", body */
- 0,
- 2,
- { PARROT_ARG_S },
- { PARROT_ARGDIR_INOUT },
- { 0 }
- },
- { /* 1089 */
+ { /* 1080 */
/* type PARROT_FUNCTION_OP, */
"join",
"join_s_s_p",
@@ -13151,7 +13043,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1090 */
+ { /* 1081 */
/* type PARROT_FUNCTION_OP, */
"join",
"join_s_sc_p",
@@ -13163,7 +13055,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1091 */
+ { /* 1082 */
/* type PARROT_FUNCTION_OP, */
"split",
"split_p_s_s",
@@ -13175,7 +13067,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1092 */
+ { /* 1083 */
/* type PARROT_FUNCTION_OP, */
"split",
"split_p_sc_s",
@@ -13187,7 +13079,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1093 */
+ { /* 1084 */
/* type PARROT_FUNCTION_OP, */
"split",
"split_p_s_sc",
@@ -13199,7 +13091,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1094 */
+ { /* 1085 */
/* type PARROT_FUNCTION_OP, */
"split",
"split_p_sc_sc",
@@ -13211,7 +13103,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1095 */
+ { /* 1086 */
/* type PARROT_FUNCTION_OP, */
"charset",
"charset_i_s",
@@ -13223,7 +13115,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1096 */
+ { /* 1087 */
/* type PARROT_FUNCTION_OP, */
"charset",
"charset_i_sc",
@@ -13235,7 +13127,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1097 */
+ { /* 1088 */
/* type PARROT_FUNCTION_OP, */
"charsetname",
"charsetname_s_i",
@@ -13247,7 +13139,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1098 */
+ { /* 1089 */
/* type PARROT_FUNCTION_OP, */
"charsetname",
"charsetname_s_ic",
@@ -13259,7 +13151,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1099 */
+ { /* 1090 */
/* type PARROT_FUNCTION_OP, */
"find_charset",
"find_charset_i_s",
@@ -13271,7 +13163,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1100 */
+ { /* 1091 */
/* type PARROT_FUNCTION_OP, */
"find_charset",
"find_charset_i_sc",
@@ -13283,31 +13175,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1101 */
- /* type PARROT_FUNCTION_OP, */
- "trans_charset",
- "trans_charset_s_i",
- "Parrot_trans_charset_s_i",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_I },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 1102 */
- /* type PARROT_FUNCTION_OP, */
- "trans_charset",
- "trans_charset_s_ic",
- "Parrot_trans_charset_s_ic",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_IC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 1103 */
+ { /* 1092 */
/* type PARROT_FUNCTION_OP, */
"trans_charset",
"trans_charset_s_s_i",
@@ -13319,7 +13187,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1104 */
+ { /* 1093 */
/* type PARROT_FUNCTION_OP, */
"trans_charset",
"trans_charset_s_sc_i",
@@ -13331,7 +13199,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1105 */
+ { /* 1094 */
/* type PARROT_FUNCTION_OP, */
"trans_charset",
"trans_charset_s_s_ic",
@@ -13343,7 +13211,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1106 */
+ { /* 1095 */
/* type PARROT_FUNCTION_OP, */
"trans_charset",
"trans_charset_s_sc_ic",
@@ -13355,7 +13223,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1107 */
+ { /* 1096 */
/* type PARROT_FUNCTION_OP, */
"encoding",
"encoding_i_s",
@@ -13367,7 +13235,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1108 */
+ { /* 1097 */
/* type PARROT_FUNCTION_OP, */
"encoding",
"encoding_i_sc",
@@ -13379,7 +13247,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1109 */
+ { /* 1098 */
/* type PARROT_FUNCTION_OP, */
"encodingname",
"encodingname_s_i",
@@ -13391,7 +13259,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1110 */
+ { /* 1099 */
/* type PARROT_FUNCTION_OP, */
"encodingname",
"encodingname_s_ic",
@@ -13403,7 +13271,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1111 */
+ { /* 1100 */
/* type PARROT_FUNCTION_OP, */
"find_encoding",
"find_encoding_i_s",
@@ -13415,7 +13283,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1112 */
+ { /* 1101 */
/* type PARROT_FUNCTION_OP, */
"find_encoding",
"find_encoding_i_sc",
@@ -13427,31 +13295,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1113 */
- /* type PARROT_FUNCTION_OP, */
- "trans_encoding",
- "trans_encoding_s_i",
- "Parrot_trans_encoding_s_i",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_I },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 1114 */
- /* type PARROT_FUNCTION_OP, */
- "trans_encoding",
- "trans_encoding_s_ic",
- "Parrot_trans_encoding_s_ic",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_S, PARROT_ARG_IC },
- { PARROT_ARGDIR_INOUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 1115 */
+ { /* 1102 */
/* type PARROT_FUNCTION_OP, */
"trans_encoding",
"trans_encoding_s_s_i",
@@ -13463,7 +13307,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1116 */
+ { /* 1103 */
/* type PARROT_FUNCTION_OP, */
"trans_encoding",
"trans_encoding_s_sc_i",
@@ -13475,7 +13319,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1117 */
+ { /* 1104 */
/* type PARROT_FUNCTION_OP, */
"trans_encoding",
"trans_encoding_s_s_ic",
@@ -13487,7 +13331,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1118 */
+ { /* 1105 */
/* type PARROT_FUNCTION_OP, */
"trans_encoding",
"trans_encoding_s_sc_ic",
@@ -13499,7 +13343,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1119 */
+ { /* 1106 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_i_s_i",
@@ -13511,7 +13355,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1120 */
+ { /* 1107 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_ic_s_i",
@@ -13523,7 +13367,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1121 */
+ { /* 1108 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_i_sc_i",
@@ -13535,7 +13379,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1122 */
+ { /* 1109 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_ic_sc_i",
@@ -13547,7 +13391,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1123 */
+ { /* 1110 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_i_s_ic",
@@ -13559,7 +13403,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1124 */
+ { /* 1111 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_ic_s_ic",
@@ -13571,7 +13415,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1125 */
+ { /* 1112 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_i_sc_ic",
@@ -13583,7 +13427,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1126 */
+ { /* 1113 */
/* type PARROT_INLINE_OP, */
"is_cclass",
"is_cclass_i_ic_sc_ic",
@@ -13595,7 +13439,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1127 */
+ { /* 1114 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_s_i_i",
@@ -13607,7 +13451,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1128 */
+ { /* 1115 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_s_i_i",
@@ -13619,7 +13463,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1129 */
+ { /* 1116 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_sc_i_i",
@@ -13631,7 +13475,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1130 */
+ { /* 1117 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_sc_i_i",
@@ -13643,7 +13487,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1131 */
+ { /* 1118 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_s_ic_i",
@@ -13655,7 +13499,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1132 */
+ { /* 1119 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_s_ic_i",
@@ -13667,7 +13511,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1133 */
+ { /* 1120 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_sc_ic_i",
@@ -13679,7 +13523,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1134 */
+ { /* 1121 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_sc_ic_i",
@@ -13691,7 +13535,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1135 */
+ { /* 1122 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_s_i_ic",
@@ -13703,7 +13547,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1136 */
+ { /* 1123 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_s_i_ic",
@@ -13715,7 +13559,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1137 */
+ { /* 1124 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_sc_i_ic",
@@ -13727,7 +13571,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1138 */
+ { /* 1125 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_sc_i_ic",
@@ -13739,7 +13583,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1139 */
+ { /* 1126 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_s_ic_ic",
@@ -13751,7 +13595,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1140 */
+ { /* 1127 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_s_ic_ic",
@@ -13763,7 +13607,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1141 */
+ { /* 1128 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_i_sc_ic_ic",
@@ -13775,7 +13619,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1142 */
+ { /* 1129 */
/* type PARROT_INLINE_OP, */
"find_cclass",
"find_cclass_i_ic_sc_ic_ic",
@@ -13787,7 +13631,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1143 */
+ { /* 1130 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_s_i_i",
@@ -13799,7 +13643,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1144 */
+ { /* 1131 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_s_i_i",
@@ -13811,7 +13655,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1145 */
+ { /* 1132 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_sc_i_i",
@@ -13823,7 +13667,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1146 */
+ { /* 1133 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_sc_i_i",
@@ -13835,7 +13679,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1147 */
+ { /* 1134 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_s_ic_i",
@@ -13847,7 +13691,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1148 */
+ { /* 1135 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_s_ic_i",
@@ -13859,7 +13703,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1149 */
+ { /* 1136 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_sc_ic_i",
@@ -13871,7 +13715,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1150 */
+ { /* 1137 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_sc_ic_i",
@@ -13883,7 +13727,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1151 */
+ { /* 1138 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_s_i_ic",
@@ -13895,7 +13739,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1152 */
+ { /* 1139 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_s_i_ic",
@@ -13907,7 +13751,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1153 */
+ { /* 1140 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_sc_i_ic",
@@ -13919,7 +13763,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1154 */
+ { /* 1141 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_sc_i_ic",
@@ -13931,7 +13775,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1155 */
+ { /* 1142 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_s_ic_ic",
@@ -13943,7 +13787,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1156 */
+ { /* 1143 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_s_ic_ic",
@@ -13955,7 +13799,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1157 */
+ { /* 1144 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_i_sc_ic_ic",
@@ -13967,7 +13811,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1158 */
+ { /* 1145 */
/* type PARROT_INLINE_OP, */
"find_not_cclass",
"find_not_cclass_i_ic_sc_ic_ic",
@@ -13979,7 +13823,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0, 0 }
},
- { /* 1159 */
+ { /* 1146 */
/* type PARROT_FUNCTION_OP, */
"escape",
"escape_s_s",
@@ -13991,7 +13835,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1160 */
+ { /* 1147 */
/* type PARROT_FUNCTION_OP, */
"compose",
"compose_s_s",
@@ -14003,7 +13847,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1161 */
+ { /* 1148 */
/* type PARROT_FUNCTION_OP, */
"compose",
"compose_s_sc",
@@ -14015,7 +13859,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1162 */
+ { /* 1149 */
/* type PARROT_INLINE_OP, */
"spawnw",
"spawnw_i_s",
@@ -14027,7 +13871,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1163 */
+ { /* 1150 */
/* type PARROT_INLINE_OP, */
"spawnw",
"spawnw_i_sc",
@@ -14039,7 +13883,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1164 */
+ { /* 1151 */
/* type PARROT_INLINE_OP, */
"spawnw",
"spawnw_i_p",
@@ -14051,7 +13895,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1165 */
+ { /* 1152 */
/* type PARROT_INLINE_OP, */
"err",
"err_i",
@@ -14063,7 +13907,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1166 */
+ { /* 1153 */
/* type PARROT_FUNCTION_OP, */
"err",
"err_s",
@@ -14075,7 +13919,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1167 */
+ { /* 1154 */
/* type PARROT_FUNCTION_OP, */
"err",
"err_s_i",
@@ -14087,7 +13931,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1168 */
+ { /* 1155 */
/* type PARROT_FUNCTION_OP, */
"err",
"err_s_ic",
@@ -14099,7 +13943,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1169 */
+ { /* 1156 */
/* type PARROT_INLINE_OP, */
"time",
"time_i",
@@ -14111,7 +13955,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1170 */
+ { /* 1157 */
/* type PARROT_INLINE_OP, */
"time",
"time_n",
@@ -14123,7 +13967,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1171 */
+ { /* 1158 */
/* type PARROT_FUNCTION_OP, */
"gmtime",
"gmtime_s_i",
@@ -14135,7 +13979,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1172 */
+ { /* 1159 */
/* type PARROT_FUNCTION_OP, */
"gmtime",
"gmtime_s_ic",
@@ -14147,7 +13991,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1173 */
+ { /* 1160 */
/* type PARROT_FUNCTION_OP, */
"localtime",
"localtime_s_i",
@@ -14159,7 +14003,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1174 */
+ { /* 1161 */
/* type PARROT_FUNCTION_OP, */
"localtime",
"localtime_s_ic",
@@ -14171,7 +14015,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1175 */
+ { /* 1162 */
/* type PARROT_FUNCTION_OP, */
"decodetime",
"decodetime_p_i",
@@ -14183,7 +14027,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1176 */
+ { /* 1163 */
/* type PARROT_FUNCTION_OP, */
"decodetime",
"decodetime_p_ic",
@@ -14195,7 +14039,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1177 */
+ { /* 1164 */
/* type PARROT_FUNCTION_OP, */
"decodelocaltime",
"decodelocaltime_p_i",
@@ -14207,7 +14051,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1178 */
+ { /* 1165 */
/* type PARROT_FUNCTION_OP, */
"decodelocaltime",
"decodelocaltime_p_ic",
@@ -14219,7 +14063,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1179 */
+ { /* 1166 */
/* type PARROT_INLINE_OP, */
"sysinfo",
"sysinfo_s_i",
@@ -14231,7 +14075,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1180 */
+ { /* 1167 */
/* type PARROT_INLINE_OP, */
"sysinfo",
"sysinfo_s_ic",
@@ -14243,7 +14087,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1181 */
+ { /* 1168 */
/* type PARROT_INLINE_OP, */
"sysinfo",
"sysinfo_i_i",
@@ -14255,7 +14099,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1182 */
+ { /* 1169 */
/* type PARROT_INLINE_OP, */
"sysinfo",
"sysinfo_i_ic",
@@ -14267,7 +14111,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1183 */
+ { /* 1170 */
/* type PARROT_INLINE_OP, */
"sleep",
"sleep_i",
@@ -14279,7 +14123,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 1184 */
+ { /* 1171 */
/* type PARROT_INLINE_OP, */
"sleep",
"sleep_ic",
@@ -14291,7 +14135,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 1185 */
+ { /* 1172 */
/* type PARROT_INLINE_OP, */
"sleep",
"sleep_n",
@@ -14303,7 +14147,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 1186 */
+ { /* 1173 */
/* type PARROT_INLINE_OP, */
"sleep",
"sleep_nc",
@@ -14315,7 +14159,7 @@
{ PARROT_ARGDIR_IN },
{ 0 }
},
- { /* 1187 */
+ { /* 1174 */
/* type PARROT_INLINE_OP, */
"sizeof",
"sizeof_i_i",
@@ -14327,7 +14171,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1188 */
+ { /* 1175 */
/* type PARROT_INLINE_OP, */
"sizeof",
"sizeof_i_ic",
@@ -14339,7 +14183,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1189 */
+ { /* 1176 */
/* type PARROT_FUNCTION_OP, */
"store_lex",
"store_lex_s_p",
@@ -14351,7 +14195,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1190 */
+ { /* 1177 */
/* type PARROT_FUNCTION_OP, */
"store_lex",
"store_lex_sc_p",
@@ -14363,7 +14207,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1191 */
+ { /* 1178 */
/* type PARROT_FUNCTION_OP, */
"store_dynamic_lex",
"store_dynamic_lex_s_p",
@@ -14375,7 +14219,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1192 */
+ { /* 1179 */
/* type PARROT_FUNCTION_OP, */
"store_dynamic_lex",
"store_dynamic_lex_sc_p",
@@ -14387,7 +14231,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1193 */
+ { /* 1180 */
/* type PARROT_FUNCTION_OP, */
"find_lex",
"find_lex_p_s",
@@ -14399,7 +14243,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1194 */
+ { /* 1181 */
/* type PARROT_FUNCTION_OP, */
"find_lex",
"find_lex_p_sc",
@@ -14411,7 +14255,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1195 */
+ { /* 1182 */
/* type PARROT_FUNCTION_OP, */
"find_dynamic_lex",
"find_dynamic_lex_p_s",
@@ -14423,7 +14267,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1196 */
+ { /* 1183 */
/* type PARROT_FUNCTION_OP, */
"find_dynamic_lex",
"find_dynamic_lex_p_sc",
@@ -14435,7 +14279,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1197 */
+ { /* 1184 */
/* type PARROT_FUNCTION_OP, */
"find_caller_lex",
"find_caller_lex_p_s",
@@ -14447,7 +14291,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1198 */
+ { /* 1185 */
/* type PARROT_FUNCTION_OP, */
"find_caller_lex",
"find_caller_lex_p_sc",
@@ -14459,7 +14303,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1199 */
+ { /* 1186 */
/* type PARROT_FUNCTION_OP, */
"get_namespace",
"get_namespace_p",
@@ -14471,7 +14315,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1200 */
+ { /* 1187 */
/* type PARROT_FUNCTION_OP, */
"get_namespace",
"get_namespace_p_p",
@@ -14483,7 +14327,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1201 */
+ { /* 1188 */
/* type PARROT_FUNCTION_OP, */
"get_namespace",
"get_namespace_p_pc",
@@ -14495,7 +14339,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1202 */
+ { /* 1189 */
/* type PARROT_FUNCTION_OP, */
"get_hll_namespace",
"get_hll_namespace_p",
@@ -14507,7 +14351,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1203 */
+ { /* 1190 */
/* type PARROT_FUNCTION_OP, */
"get_hll_namespace",
"get_hll_namespace_p_p",
@@ -14519,7 +14363,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1204 */
+ { /* 1191 */
/* type PARROT_FUNCTION_OP, */
"get_hll_namespace",
"get_hll_namespace_p_pc",
@@ -14531,7 +14375,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1205 */
+ { /* 1192 */
/* type PARROT_FUNCTION_OP, */
"get_root_namespace",
"get_root_namespace_p",
@@ -14543,7 +14387,7 @@
{ PARROT_ARGDIR_OUT },
{ 0 }
},
- { /* 1206 */
+ { /* 1193 */
/* type PARROT_FUNCTION_OP, */
"get_root_namespace",
"get_root_namespace_p_p",
@@ -14555,7 +14399,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1207 */
+ { /* 1194 */
/* type PARROT_FUNCTION_OP, */
"get_root_namespace",
"get_root_namespace_p_pc",
@@ -14567,7 +14411,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1208 */
+ { /* 1195 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_s",
@@ -14579,7 +14423,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1209 */
+ { /* 1196 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_sc",
@@ -14591,7 +14435,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1210 */
+ { /* 1197 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_p_s",
@@ -14603,7 +14447,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1211 */
+ { /* 1198 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_pc_s",
@@ -14615,7 +14459,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1212 */
+ { /* 1199 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_p_sc",
@@ -14627,7 +14471,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1213 */
+ { /* 1200 */
/* type PARROT_FUNCTION_OP, */
"get_global",
"get_global_p_pc_sc",
@@ -14639,7 +14483,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1214 */
+ { /* 1201 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_s",
@@ -14651,7 +14495,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1215 */
+ { /* 1202 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_sc",
@@ -14663,7 +14507,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1216 */
+ { /* 1203 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_p_s",
@@ -14675,7 +14519,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1217 */
+ { /* 1204 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_pc_s",
@@ -14687,7 +14531,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1218 */
+ { /* 1205 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_p_sc",
@@ -14699,7 +14543,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1219 */
+ { /* 1206 */
/* type PARROT_FUNCTION_OP, */
"get_hll_global",
"get_hll_global_p_pc_sc",
@@ -14711,7 +14555,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1220 */
+ { /* 1207 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_s",
@@ -14723,7 +14567,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1221 */
+ { /* 1208 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_sc",
@@ -14735,7 +14579,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1222 */
+ { /* 1209 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_p_s",
@@ -14747,7 +14591,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1223 */
+ { /* 1210 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_pc_s",
@@ -14759,7 +14603,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1224 */
+ { /* 1211 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_p_sc",
@@ -14771,7 +14615,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1225 */
+ { /* 1212 */
/* type PARROT_FUNCTION_OP, */
"get_root_global",
"get_root_global_p_pc_sc",
@@ -14783,7 +14627,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1226 */
+ { /* 1213 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_s_p",
@@ -14795,7 +14639,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1227 */
+ { /* 1214 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_sc_p",
@@ -14807,7 +14651,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1228 */
+ { /* 1215 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_p_s_p",
@@ -14819,7 +14663,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1229 */
+ { /* 1216 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_pc_s_p",
@@ -14831,7 +14675,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1230 */
+ { /* 1217 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_p_sc_p",
@@ -14843,7 +14687,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1231 */
+ { /* 1218 */
/* type PARROT_FUNCTION_OP, */
"set_global",
"set_global_pc_sc_p",
@@ -14855,7 +14699,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1232 */
+ { /* 1219 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_s_p",
@@ -14867,7 +14711,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1233 */
+ { /* 1220 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_sc_p",
@@ -14879,7 +14723,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1234 */
+ { /* 1221 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_p_s_p",
@@ -14891,7 +14735,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1235 */
+ { /* 1222 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_pc_s_p",
@@ -14903,7 +14747,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1236 */
+ { /* 1223 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_p_sc_p",
@@ -14915,7 +14759,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1237 */
+ { /* 1224 */
/* type PARROT_FUNCTION_OP, */
"set_hll_global",
"set_hll_global_pc_sc_p",
@@ -14927,7 +14771,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1238 */
+ { /* 1225 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_s_p",
@@ -14939,7 +14783,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1239 */
+ { /* 1226 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_sc_p",
@@ -14951,7 +14795,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1240 */
+ { /* 1227 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_p_s_p",
@@ -14963,7 +14807,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1241 */
+ { /* 1228 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_pc_s_p",
@@ -14975,7 +14819,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1242 */
+ { /* 1229 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_p_sc_p",
@@ -14987,7 +14831,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1243 */
+ { /* 1230 */
/* type PARROT_FUNCTION_OP, */
"set_root_global",
"set_root_global_pc_sc_p",
@@ -14999,7 +14843,7 @@
{ PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1244 */
+ { /* 1231 */
/* type PARROT_FUNCTION_OP, */
"find_name",
"find_name_p_s",
@@ -15011,7 +14855,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1245 */
+ { /* 1232 */
/* type PARROT_FUNCTION_OP, */
"find_name",
"find_name_p_sc",
@@ -15023,7 +14867,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1246 */
+ { /* 1233 */
/* type PARROT_INLINE_OP, */
"find_sub_not_null",
"find_sub_not_null_p_s",
@@ -15035,7 +14879,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1247 */
+ { /* 1234 */
/* type PARROT_INLINE_OP, */
"find_sub_not_null",
"find_sub_not_null_p_sc",
@@ -15047,7 +14891,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
{ 0, 0 }
},
- { /* 1248 */
+ { /* 1235 */
/* type PARROT_FUNCTION_OP, */
"trap",
"trap",
@@ -15059,31 +14903,7 @@
{ (arg_dir_t) 0 },
{ 0 }
},
- { /* 1249 */
- /* type PARROT_INLINE_OP, */
- "set_label",
- "set_label_p_ic",
- "Parrot_set_label_p_ic",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_P, PARROT_ARG_IC },
- { PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
- { 0, 1 }
- },
- { /* 1250 */
- /* type PARROT_INLINE_OP, */
- "get_label",
- "get_label_i_p",
- "Parrot_get_label_i_p",
- /* "", body */
- 0,
- 3,
- { PARROT_ARG_I, PARROT_ARG_P },
- { PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN },
- { 0, 0 }
- },
- { /* 1251 */
+ { /* 1236 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_p_p",
@@ -15095,7 +14915,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1252 */
+ { /* 1237 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_p_p",
@@ -15107,7 +14927,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1253 */
+ { /* 1238 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_pc_p",
@@ -15119,7 +14939,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1254 */
+ { /* 1239 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_pc_p",
@@ -15131,7 +14951,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1255 */
+ { /* 1240 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_p_pc",
@@ -15143,7 +14963,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1256 */
+ { /* 1241 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_p_pc",
@@ -15155,7 +14975,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1257 */
+ { /* 1242 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_pc_pc",
@@ -15167,7 +14987,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1258 */
+ { /* 1243 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_pc_pc",
@@ -15179,7 +14999,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1259 */
+ { /* 1244 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_i_p",
@@ -15191,7 +15011,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1260 */
+ { /* 1245 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_i_p",
@@ -15203,7 +15023,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1261 */
+ { /* 1246 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_ic_p",
@@ -15215,7 +15035,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1262 */
+ { /* 1247 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_ic_p",
@@ -15227,7 +15047,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1263 */
+ { /* 1248 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_i_pc",
@@ -15239,7 +15059,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1264 */
+ { /* 1249 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_i_pc",
@@ -15251,7 +15071,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1265 */
+ { /* 1250 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_ic_pc",
@@ -15263,7 +15083,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1266 */
+ { /* 1251 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_ic_pc",
@@ -15275,7 +15095,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1267 */
+ { /* 1252 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_s_p",
@@ -15287,7 +15107,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1268 */
+ { /* 1253 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_s_p",
@@ -15299,7 +15119,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1269 */
+ { /* 1254 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_sc_p",
@@ -15311,7 +15131,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1270 */
+ { /* 1255 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_sc_p",
@@ -15323,7 +15143,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1271 */
+ { /* 1256 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_s_pc",
@@ -15335,7 +15155,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1272 */
+ { /* 1257 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_s_pc",
@@ -15347,7 +15167,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1273 */
+ { /* 1258 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_p_sc_pc",
@@ -15359,7 +15179,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1274 */
+ { /* 1259 */
/* type PARROT_INLINE_OP, */
"fetch",
"fetch_p_pc_sc_pc",
@@ -15371,7 +15191,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1275 */
+ { /* 1260 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_p_p",
@@ -15383,7 +15203,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1276 */
+ { /* 1261 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_p_p",
@@ -15395,7 +15215,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1277 */
+ { /* 1262 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_pc_p",
@@ -15407,7 +15227,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1278 */
+ { /* 1263 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_pc_p",
@@ -15419,7 +15239,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1279 */
+ { /* 1264 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_p_pc",
@@ -15431,7 +15251,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1280 */
+ { /* 1265 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_p_pc",
@@ -15443,7 +15263,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1281 */
+ { /* 1266 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_pc_pc",
@@ -15455,7 +15275,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1282 */
+ { /* 1267 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_pc_pc",
@@ -15467,7 +15287,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1283 */
+ { /* 1268 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_i_p",
@@ -15479,7 +15299,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1284 */
+ { /* 1269 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_i_p",
@@ -15491,7 +15311,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1285 */
+ { /* 1270 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_ic_p",
@@ -15503,7 +15323,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1286 */
+ { /* 1271 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_ic_p",
@@ -15515,7 +15335,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1287 */
+ { /* 1272 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_i_pc",
@@ -15527,7 +15347,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1288 */
+ { /* 1273 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_i_pc",
@@ -15539,7 +15359,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1289 */
+ { /* 1274 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_ic_pc",
@@ -15551,7 +15371,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1290 */
+ { /* 1275 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_ic_pc",
@@ -15563,7 +15383,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1291 */
+ { /* 1276 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_s_p",
@@ -15575,7 +15395,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1292 */
+ { /* 1277 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_s_p",
@@ -15587,7 +15407,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1293 */
+ { /* 1278 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_sc_p",
@@ -15599,7 +15419,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1294 */
+ { /* 1279 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_sc_p",
@@ -15611,7 +15431,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1295 */
+ { /* 1280 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_s_pc",
@@ -15623,7 +15443,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1296 */
+ { /* 1281 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_s_pc",
@@ -15635,7 +15455,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1297 */
+ { /* 1282 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_p_sc_pc",
@@ -15647,7 +15467,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1298 */
+ { /* 1283 */
/* type PARROT_INLINE_OP, */
"vivify",
"vivify_p_pc_sc_pc",
@@ -15659,7 +15479,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0, 0 }
},
- { /* 1299 */
+ { /* 1284 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_s_i",
@@ -15671,7 +15491,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1300 */
+ { /* 1285 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_sc_i",
@@ -15683,7 +15503,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1301 */
+ { /* 1286 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_s_ic",
@@ -15695,7 +15515,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1302 */
+ { /* 1287 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_sc_ic",
@@ -15707,7 +15527,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1303 */
+ { /* 1288 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_p_i",
@@ -15719,7 +15539,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1304 */
+ { /* 1289 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_pc_i",
@@ -15731,7 +15551,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1305 */
+ { /* 1290 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_p_ic",
@@ -15743,7 +15563,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1306 */
+ { /* 1291 */
/* type PARROT_FUNCTION_OP, */
"new",
"new_p_pc_ic",
@@ -15755,7 +15575,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1307 */
+ { /* 1292 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_p_i",
@@ -15767,7 +15587,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1308 */
+ { /* 1293 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_pc_i",
@@ -15779,7 +15599,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1309 */
+ { /* 1294 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_p_ic",
@@ -15791,7 +15611,7 @@
{ PARROT_ARGDIR_OUT, PARROT_ARGDIR_IN, PARROT_ARGDIR_IN },
{ 0, 0, 0 }
},
- { /* 1310 */
+ { /* 1295 */
/* type PARROT_FUNCTION_OP, */
"root_new",
"root_new_p_pc_ic",
@@ -15806,13 +15626,13 @@
};
-INTVAL core_numops = 1311;
+INTVAL core_numops = 1296;
/*
** Op Function Table:
*/
-static op_func_t core_op_func_table[1312] = {
+static op_func_t core_op_func_table[1297] = {
Parrot_end, /* 0 */
Parrot_noop, /* 1 */
Parrot_check_events, /* 2 */
@@ -15846,1284 +15666,1269 @@
Parrot_capture_lex_p, /* 30 */
Parrot_newclosure_p_p, /* 31 */
Parrot_set_args_pc, /* 32 */
- Parrot_get_results_pc, /* 33 */
- Parrot_get_params_pc, /* 34 */
- Parrot_set_returns_pc, /* 35 */
- Parrot_result_info_p, /* 36 */
- Parrot_set_addr_i_ic, /* 37 */
- Parrot_set_addr_p_ic, /* 38 */
- Parrot_set_addr_p_i, /* 39 */
- Parrot_get_addr_i_p, /* 40 */
- Parrot_schedule_p, /* 41 */
- Parrot_addhandler_p, /* 42 */
- Parrot_push_eh_ic, /* 43 */
- Parrot_push_eh_p, /* 44 */
- Parrot_pop_eh, /* 45 */
- Parrot_throw_p, /* 46 */
- Parrot_throw_p_p, /* 47 */
- Parrot_rethrow_p, /* 48 */
- Parrot_count_eh_i, /* 49 */
- Parrot_die_s, /* 50 */
- Parrot_die_sc, /* 51 */
- Parrot_die_p, /* 52 */
- Parrot_die_pc, /* 53 */
- Parrot_die_i_i, /* 54 */
- Parrot_die_ic_i, /* 55 */
- Parrot_die_i_ic, /* 56 */
- Parrot_die_ic_ic, /* 57 */
- Parrot_exit_i, /* 58 */
- Parrot_exit_ic, /* 59 */
- Parrot_pushmark_i, /* 60 */
- Parrot_pushmark_ic, /* 61 */
- Parrot_popmark_i, /* 62 */
- Parrot_popmark_ic, /* 63 */
- Parrot_pushaction_p, /* 64 */
- Parrot_debug_i, /* 65 */
- Parrot_debug_ic, /* 66 */
- Parrot_bounds_i, /* 67 */
- Parrot_bounds_ic, /* 68 */
- Parrot_profile_i, /* 69 */
- Parrot_profile_ic, /* 70 */
- Parrot_trace_i, /* 71 */
- Parrot_trace_ic, /* 72 */
- Parrot_gc_debug_i, /* 73 */
- Parrot_gc_debug_ic, /* 74 */
- Parrot_interpinfo_i_i, /* 75 */
- Parrot_interpinfo_i_ic, /* 76 */
- Parrot_interpinfo_p_i, /* 77 */
- Parrot_interpinfo_p_ic, /* 78 */
- Parrot_interpinfo_s_i, /* 79 */
- Parrot_interpinfo_s_ic, /* 80 */
- Parrot_warningson_i, /* 81 */
- Parrot_warningson_ic, /* 82 */
- Parrot_warningsoff_i, /* 83 */
- Parrot_warningsoff_ic, /* 84 */
- Parrot_errorson_i, /* 85 */
- Parrot_errorson_ic, /* 86 */
- Parrot_errorsoff_i, /* 87 */
- Parrot_errorsoff_ic, /* 88 */
- Parrot_runinterp_p_i, /* 89 */
- Parrot_runinterp_p_ic, /* 90 */
- Parrot_getinterp_p, /* 91 */
- Parrot_sweep_ic, /* 92 */
- Parrot_collect, /* 93 */
- Parrot_sweepoff, /* 94 */
- Parrot_sweepon, /* 95 */
- Parrot_collectoff, /* 96 */
- Parrot_collecton, /* 97 */
- Parrot_needs_destroy_p, /* 98 */
- Parrot_loadlib_p_s, /* 99 */
- Parrot_loadlib_p_sc, /* 100 */
- Parrot_dlfunc_p_p_s_s, /* 101 */
- Parrot_dlfunc_p_p_sc_s, /* 102 */
- Parrot_dlfunc_p_p_s_sc, /* 103 */
- Parrot_dlfunc_p_p_sc_sc, /* 104 */
- Parrot_dlvar_p_p_s, /* 105 */
- Parrot_dlvar_p_p_sc, /* 106 */
- Parrot_compreg_s_p, /* 107 */
- Parrot_compreg_sc_p, /* 108 */
- Parrot_compreg_p_s, /* 109 */
- Parrot_compreg_p_sc, /* 110 */
- Parrot_new_callback_p_p_p_s, /* 111 */
- Parrot_new_callback_p_p_p_sc, /* 112 */
- Parrot_annotations_p, /* 113 */
- Parrot_annotations_p_s, /* 114 */
- Parrot_annotations_p_sc, /* 115 */
- Parrot_band_i_i, /* 116 */
- Parrot_band_i_ic, /* 117 */
- Parrot_band_p_i, /* 118 */
- Parrot_band_p_ic, /* 119 */
- Parrot_band_p_p, /* 120 */
- Parrot_band_i_i_i, /* 121 */
- Parrot_band_i_ic_i, /* 122 */
- Parrot_band_i_i_ic, /* 123 */
- Parrot_band_p_p_i, /* 124 */
- Parrot_band_p_p_ic, /* 125 */
- Parrot_band_p_p_p, /* 126 */
- Parrot_bands_s_s, /* 127 */
- Parrot_bands_s_sc, /* 128 */
- Parrot_bands_p_s, /* 129 */
- Parrot_bands_p_sc, /* 130 */
- Parrot_bands_p_p, /* 131 */
- Parrot_bands_s_s_s, /* 132 */
- Parrot_bands_s_sc_s, /* 133 */
- Parrot_bands_s_s_sc, /* 134 */
- Parrot_bands_p_p_s, /* 135 */
- Parrot_bands_p_p_sc, /* 136 */
- Parrot_bands_p_p_p, /* 137 */
- Parrot_bnot_i, /* 138 */
- Parrot_bnot_i_i, /* 139 */
- Parrot_bnot_p, /* 140 */
- Parrot_bnot_p_p, /* 141 */
- Parrot_bnots_s, /* 142 */
- Parrot_bnots_s_s, /* 143 */
- Parrot_bnots_s_sc, /* 144 */
- Parrot_bnots_p, /* 145 */
- Parrot_bnots_p_p, /* 146 */
- Parrot_bor_i_i, /* 147 */
- Parrot_bor_i_ic, /* 148 */
- Parrot_bor_p_i, /* 149 */
- Parrot_bor_p_ic, /* 150 */
- Parrot_bor_p_p, /* 151 */
- Parrot_bor_i_i_i, /* 152 */
- Parrot_bor_i_ic_i, /* 153 */
- Parrot_bor_i_i_ic, /* 154 */
- Parrot_bor_p_p_i, /* 155 */
- Parrot_bor_p_p_ic, /* 156 */
- Parrot_bor_p_p_p, /* 157 */
- Parrot_bors_s_s, /* 158 */
- Parrot_bors_s_sc, /* 159 */
- Parrot_bors_p_s, /* 160 */
- Parrot_bors_p_sc, /* 161 */
- Parrot_bors_p_p, /* 162 */
- Parrot_bors_s_s_s, /* 163 */
- Parrot_bors_s_sc_s, /* 164 */
- Parrot_bors_s_s_sc, /* 165 */
- Parrot_bors_p_p_s, /* 166 */
- Parrot_bors_p_p_sc, /* 167 */
- Parrot_bors_p_p_p, /* 168 */
- Parrot_shl_i_i, /* 169 */
- Parrot_shl_i_ic, /* 170 */
- Parrot_shl_p_i, /* 171 */
- Parrot_shl_p_ic, /* 172 */
- Parrot_shl_p_p, /* 173 */
- Parrot_shl_i_i_i, /* 174 */
- Parrot_shl_i_ic_i, /* 175 */
- Parrot_shl_i_i_ic, /* 176 */
- Parrot_shl_p_p_i, /* 177 */
- Parrot_shl_p_p_ic, /* 178 */
- Parrot_shl_p_p_p, /* 179 */
- Parrot_shr_i_i, /* 180 */
- Parrot_shr_i_ic, /* 181 */
- Parrot_shr_p_i, /* 182 */
- Parrot_shr_p_ic, /* 183 */
- Parrot_shr_p_p, /* 184 */
- Parrot_shr_i_i_i, /* 185 */
- Parrot_shr_i_ic_i, /* 186 */
- Parrot_shr_i_i_ic, /* 187 */
- Parrot_shr_p_p_i, /* 188 */
- Parrot_shr_p_p_ic, /* 189 */
- Parrot_shr_p_p_p, /* 190 */
- Parrot_lsr_i_i, /* 191 */
- Parrot_lsr_i_ic, /* 192 */
- Parrot_lsr_p_i, /* 193 */
- Parrot_lsr_p_ic, /* 194 */
- Parrot_lsr_p_p, /* 195 */
- Parrot_lsr_i_i_i, /* 196 */
- Parrot_lsr_i_ic_i, /* 197 */
- Parrot_lsr_i_i_ic, /* 198 */
- Parrot_lsr_p_p_i, /* 199 */
- Parrot_lsr_p_p_ic, /* 200 */
- Parrot_lsr_p_p_p, /* 201 */
- Parrot_rot_i_i_i_ic, /* 202 */
- Parrot_rot_i_ic_i_ic, /* 203 */
- Parrot_rot_i_i_ic_ic, /* 204 */
- Parrot_bxor_i_i, /* 205 */
- Parrot_bxor_i_ic, /* 206 */
- Parrot_bxor_p_i, /* 207 */
- Parrot_bxor_p_ic, /* 208 */
- Parrot_bxor_p_p, /* 209 */
- Parrot_bxor_i_i_i, /* 210 */
- Parrot_bxor_i_ic_i, /* 211 */
- Parrot_bxor_i_i_ic, /* 212 */
- Parrot_bxor_p_p_i, /* 213 */
- Parrot_bxor_p_p_ic, /* 214 */
- Parrot_bxor_p_p_p, /* 215 */
- Parrot_bxors_s_s, /* 216 */
- Parrot_bxors_s_sc, /* 217 */
- Parrot_bxors_p_s, /* 218 */
- Parrot_bxors_p_sc, /* 219 */
- Parrot_bxors_p_p, /* 220 */
- Parrot_bxors_s_s_s, /* 221 */
- Parrot_bxors_s_sc_s, /* 222 */
- Parrot_bxors_s_s_sc, /* 223 */
- Parrot_bxors_p_p_s, /* 224 */
- Parrot_bxors_p_p_sc, /* 225 */
- Parrot_bxors_p_p_p, /* 226 */
- Parrot_eq_i_i_ic, /* 227 */
- Parrot_eq_ic_i_ic, /* 228 */
- Parrot_eq_i_ic_ic, /* 229 */
- Parrot_eq_n_n_ic, /* 230 */
- Parrot_eq_nc_n_ic, /* 231 */
- Parrot_eq_n_nc_ic, /* 232 */
- Parrot_eq_s_s_ic, /* 233 */
- Parrot_eq_sc_s_ic, /* 234 */
- Parrot_eq_s_sc_ic, /* 235 */
- Parrot_eq_p_p_ic, /* 236 */
- Parrot_eq_p_i_ic, /* 237 */
- Parrot_eq_p_ic_ic, /* 238 */
- Parrot_eq_p_n_ic, /* 239 */
- Parrot_eq_p_nc_ic, /* 240 */
- Parrot_eq_p_s_ic, /* 241 */
- Parrot_eq_p_sc_ic, /* 242 */
- Parrot_eq_str_p_p_ic, /* 243 */
- Parrot_eq_num_p_p_ic, /* 244 */
- Parrot_eq_addr_s_s_ic, /* 245 */
- Parrot_eq_addr_sc_s_ic, /* 246 */
- Parrot_eq_addr_s_sc_ic, /* 247 */
- Parrot_eq_addr_sc_sc_ic, /* 248 */
- Parrot_eq_addr_p_p_ic, /* 249 */
- Parrot_ne_i_i_ic, /* 250 */
- Parrot_ne_ic_i_ic, /* 251 */
- Parrot_ne_i_ic_ic, /* 252 */
- Parrot_ne_n_n_ic, /* 253 */
- Parrot_ne_nc_n_ic, /* 254 */
- Parrot_ne_n_nc_ic, /* 255 */
- Parrot_ne_s_s_ic, /* 256 */
- Parrot_ne_sc_s_ic, /* 257 */
- Parrot_ne_s_sc_ic, /* 258 */
- Parrot_ne_p_p_ic, /* 259 */
- Parrot_ne_p_i_ic, /* 260 */
- Parrot_ne_p_ic_ic, /* 261 */
- Parrot_ne_p_n_ic, /* 262 */
- Parrot_ne_p_nc_ic, /* 263 */
- Parrot_ne_p_s_ic, /* 264 */
- Parrot_ne_p_sc_ic, /* 265 */
- Parrot_ne_str_p_p_ic, /* 266 */
- Parrot_ne_num_p_p_ic, /* 267 */
- Parrot_ne_addr_s_s_ic, /* 268 */
- Parrot_ne_addr_sc_s_ic, /* 269 */
- Parrot_ne_addr_s_sc_ic, /* 270 */
- Parrot_ne_addr_sc_sc_ic, /* 271 */
- Parrot_ne_addr_p_p_ic, /* 272 */
- Parrot_lt_i_i_ic, /* 273 */
- Parrot_lt_ic_i_ic, /* 274 */
- Parrot_lt_i_ic_ic, /* 275 */
- Parrot_lt_n_n_ic, /* 276 */
- Parrot_lt_nc_n_ic, /* 277 */
- Parrot_lt_n_nc_ic, /* 278 */
- Parrot_lt_s_s_ic, /* 279 */
- Parrot_lt_sc_s_ic, /* 280 */
- Parrot_lt_s_sc_ic, /* 281 */
- Parrot_lt_p_p_ic, /* 282 */
- Parrot_lt_p_i_ic, /* 283 */
- Parrot_lt_p_ic_ic, /* 284 */
- Parrot_lt_p_n_ic, /* 285 */
- Parrot_lt_p_nc_ic, /* 286 */
- Parrot_lt_p_s_ic, /* 287 */
- Parrot_lt_p_sc_ic, /* 288 */
- Parrot_lt_str_p_p_ic, /* 289 */
- Parrot_lt_num_p_p_ic, /* 290 */
- Parrot_le_i_i_ic, /* 291 */
- Parrot_le_ic_i_ic, /* 292 */
- Parrot_le_i_ic_ic, /* 293 */
- Parrot_le_n_n_ic, /* 294 */
- Parrot_le_nc_n_ic, /* 295 */
- Parrot_le_n_nc_ic, /* 296 */
- Parrot_le_s_s_ic, /* 297 */
- Parrot_le_sc_s_ic, /* 298 */
- Parrot_le_s_sc_ic, /* 299 */
- Parrot_le_p_p_ic, /* 300 */
- Parrot_le_p_i_ic, /* 301 */
- Parrot_le_p_ic_ic, /* 302 */
- Parrot_le_p_n_ic, /* 303 */
- Parrot_le_p_nc_ic, /* 304 */
- Parrot_le_p_s_ic, /* 305 */
- Parrot_le_p_sc_ic, /* 306 */
- Parrot_le_str_p_p_ic, /* 307 */
- Parrot_le_num_p_p_ic, /* 308 */
- Parrot_gt_p_p_ic, /* 309 */
- Parrot_gt_p_i_ic, /* 310 */
- Parrot_gt_p_ic_ic, /* 311 */
- Parrot_gt_p_n_ic, /* 312 */
- Parrot_gt_p_nc_ic, /* 313 */
- Parrot_gt_p_s_ic, /* 314 */
- Parrot_gt_p_sc_ic, /* 315 */
- Parrot_gt_str_p_p_ic, /* 316 */
- Parrot_gt_num_p_p_ic, /* 317 */
- Parrot_ge_p_p_ic, /* 318 */
- Parrot_ge_p_i_ic, /* 319 */
- Parrot_ge_p_ic_ic, /* 320 */
- Parrot_ge_p_n_ic, /* 321 */
- Parrot_ge_p_nc_ic, /* 322 */
- Parrot_ge_p_s_ic, /* 323 */
- Parrot_ge_p_sc_ic, /* 324 */
- Parrot_ge_str_p_p_ic, /* 325 */
- Parrot_ge_num_p_p_ic, /* 326 */
- Parrot_if_null_p_ic, /* 327 */
- Parrot_if_null_s_ic, /* 328 */
- Parrot_unless_null_p_ic, /* 329 */
- Parrot_unless_null_s_ic, /* 330 */
- Parrot_cmp_i_i_i, /* 331 */
- Parrot_cmp_i_ic_i, /* 332 */
- Parrot_cmp_i_i_ic, /* 333 */
- Parrot_cmp_i_n_n, /* 334 */
- Parrot_cmp_i_nc_n, /* 335 */
- Parrot_cmp_i_n_nc, /* 336 */
- Parrot_cmp_i_s_s, /* 337 */
- Parrot_cmp_i_sc_s, /* 338 */
- Parrot_cmp_i_s_sc, /* 339 */
- Parrot_cmp_i_p_p, /* 340 */
- Parrot_cmp_i_p_i, /* 341 */
- Parrot_cmp_i_p_ic, /* 342 */
- Parrot_cmp_i_p_n, /* 343 */
- Parrot_cmp_i_p_nc, /* 344 */
- Parrot_cmp_i_p_s, /* 345 */
- Parrot_cmp_i_p_sc, /* 346 */
- Parrot_cmp_str_i_p_p, /* 347 */
- Parrot_cmp_num_i_p_p, /* 348 */
- Parrot_cmp_pmc_p_p_p, /* 349 */
- Parrot_issame_i_p_p, /* 350 */
- Parrot_issame_i_s_s, /* 351 */
- Parrot_issame_i_sc_s, /* 352 */
- Parrot_issame_i_s_sc, /* 353 */
- Parrot_issame_i_sc_sc, /* 354 */
- Parrot_isntsame_i_p_p, /* 355 */
- Parrot_isntsame_i_s_s, /* 356 */
- Parrot_isntsame_i_sc_s, /* 357 */
- Parrot_isntsame_i_s_sc, /* 358 */
- Parrot_isntsame_i_sc_sc, /* 359 */
- Parrot_istrue_i_p, /* 360 */
- Parrot_isfalse_i_p, /* 361 */
- Parrot_isnull_i_p, /* 362 */
- Parrot_isnull_i_pc, /* 363 */
- Parrot_isnull_i_s, /* 364 */
- Parrot_isnull_i_sc, /* 365 */
- Parrot_isgt_i_p_p, /* 366 */
- Parrot_isge_i_p_p, /* 367 */
- Parrot_isle_i_i_i, /* 368 */
- Parrot_isle_i_ic_i, /* 369 */
- Parrot_isle_i_i_ic, /* 370 */
- Parrot_isle_i_n_n, /* 371 */
- Parrot_isle_i_nc_n, /* 372 */
- Parrot_isle_i_n_nc, /* 373 */
- Parrot_isle_i_s_s, /* 374 */
- Parrot_isle_i_sc_s, /* 375 */
- Parrot_isle_i_s_sc, /* 376 */
- Parrot_isle_i_p_p, /* 377 */
- Parrot_islt_i_i_i, /* 378 */
- Parrot_islt_i_ic_i, /* 379 */
- Parrot_islt_i_i_ic, /* 380 */
- Parrot_islt_i_n_n, /* 381 */
- Parrot_islt_i_nc_n, /* 382 */
- Parrot_islt_i_n_nc, /* 383 */
- Parrot_islt_i_s_s, /* 384 */
- Parrot_islt_i_sc_s, /* 385 */
- Parrot_islt_i_s_sc, /* 386 */
- Parrot_islt_i_p_p, /* 387 */
- Parrot_iseq_i_i_i, /* 388 */
- Parrot_iseq_i_ic_i, /* 389 */
- Parrot_iseq_i_i_ic, /* 390 */
- Parrot_iseq_i_n_n, /* 391 */
- Parrot_iseq_i_nc_n, /* 392 */
- Parrot_iseq_i_n_nc, /* 393 */
- Parrot_iseq_i_s_s, /* 394 */
- Parrot_iseq_i_sc_s, /* 395 */
- Parrot_iseq_i_s_sc, /* 396 */
- Parrot_iseq_i_p_p, /* 397 */
- Parrot_isne_i_i_i, /* 398 */
- Parrot_isne_i_ic_i, /* 399 */
- Parrot_isne_i_i_ic, /* 400 */
- Parrot_isne_i_n_n, /* 401 */
- Parrot_isne_i_nc_n, /* 402 */
- Parrot_isne_i_n_nc, /* 403 */
- Parrot_isne_i_s_s, /* 404 */
- Parrot_isne_i_sc_s, /* 405 */
- Parrot_isne_i_s_sc, /* 406 */
- Parrot_isne_i_p_p, /* 407 */
- Parrot_and_i_i_i, /* 408 */
- Parrot_and_i_ic_i, /* 409 */
- Parrot_and_i_i_ic, /* 410 */
- Parrot_and_p_p_p, /* 411 */
- Parrot_not_i, /* 412 */
- Parrot_not_i_i, /* 413 */
- Parrot_not_p, /* 414 */
- Parrot_not_p_p, /* 415 */
- Parrot_or_i_i_i, /* 416 */
- Parrot_or_i_ic_i, /* 417 */
- Parrot_or_i_i_ic, /* 418 */
- Parrot_or_p_p_p, /* 419 */
- Parrot_xor_i_i_i, /* 420 */
- Parrot_xor_i_ic_i, /* 421 */
- Parrot_xor_i_i_ic, /* 422 */
- Parrot_xor_p_p_p, /* 423 */
- Parrot_debug_init, /* 424 */
- Parrot_debug_load_sc, /* 425 */
- Parrot_debug_break, /* 426 */
- Parrot_debug_print, /* 427 */
- Parrot_backtrace, /* 428 */
- Parrot_getline_i, /* 429 */
- Parrot_getfile_s, /* 430 */
- Parrot_close_p, /* 431 */
- Parrot_fdopen_p_i_s, /* 432 */
- Parrot_fdopen_p_ic_s, /* 433 */
- Parrot_fdopen_p_i_sc, /* 434 */
- Parrot_fdopen_p_ic_sc, /* 435 */
- Parrot_getstdin_p, /* 436 */
- Parrot_getstdout_p, /* 437 */
- Parrot_getstderr_p, /* 438 */
- Parrot_setstdin_p, /* 439 */
- Parrot_setstdout_p, /* 440 */
- Parrot_setstderr_p, /* 441 */
- Parrot_open_p_s_s, /* 442 */
- Parrot_open_p_sc_s, /* 443 */
- Parrot_open_p_s_sc, /* 444 */
- Parrot_open_p_sc_sc, /* 445 */
- Parrot_open_p_s, /* 446 */
- Parrot_open_p_sc, /* 447 */
- Parrot_print_i, /* 448 */
- Parrot_print_ic, /* 449 */
- Parrot_print_n, /* 450 */
- Parrot_print_nc, /* 451 */
- Parrot_print_s, /* 452 */
- Parrot_print_sc, /* 453 */
- Parrot_print_p, /* 454 */
- Parrot_say_i, /* 455 */
- Parrot_say_ic, /* 456 */
- Parrot_say_n, /* 457 */
- Parrot_say_nc, /* 458 */
- Parrot_say_s, /* 459 */
- Parrot_say_sc, /* 460 */
- Parrot_say_p, /* 461 */
- Parrot_printerr_i, /* 462 */
- Parrot_printerr_ic, /* 463 */
- Parrot_printerr_n, /* 464 */
- Parrot_printerr_nc, /* 465 */
- Parrot_printerr_s, /* 466 */
- Parrot_printerr_sc, /* 467 */
- Parrot_printerr_p, /* 468 */
- Parrot_print_p_i, /* 469 */
- Parrot_print_p_ic, /* 470 */
- Parrot_print_p_n, /* 471 */
- Parrot_print_p_nc, /* 472 */
- Parrot_print_p_s, /* 473 */
- Parrot_print_p_sc, /* 474 */
- Parrot_print_p_p, /* 475 */
- Parrot_read_s_i, /* 476 */
- Parrot_read_s_ic, /* 477 */
- Parrot_read_s_p_i, /* 478 */
- Parrot_read_s_p_ic, /* 479 */
- Parrot_readline_s_p, /* 480 */
- Parrot_peek_s, /* 481 */
- Parrot_peek_s_p, /* 482 */
- Parrot_stat_i_s_i, /* 483 */
- Parrot_stat_i_sc_i, /* 484 */
- Parrot_stat_i_s_ic, /* 485 */
- Parrot_stat_i_sc_ic, /* 486 */
- Parrot_stat_i_i_i, /* 487 */
- Parrot_stat_i_ic_i, /* 488 */
- Parrot_stat_i_i_ic, /* 489 */
- Parrot_stat_i_ic_ic, /* 490 */
- Parrot_seek_p_i_i, /* 491 */
- Parrot_seek_p_ic_i, /* 492 */
- Parrot_seek_p_i_ic, /* 493 */
- Parrot_seek_p_ic_ic, /* 494 */
- Parrot_seek_p_i_i_i, /* 495 */
- Parrot_seek_p_ic_i_i, /* 496 */
- Parrot_seek_p_i_ic_i, /* 497 */
- Parrot_seek_p_ic_ic_i, /* 498 */
- Parrot_seek_p_i_i_ic, /* 499 */
- Parrot_seek_p_ic_i_ic, /* 500 */
- Parrot_seek_p_i_ic_ic, /* 501 */
- Parrot_seek_p_ic_ic_ic, /* 502 */
- Parrot_tell_i_p, /* 503 */
- Parrot_tell_i_i_p, /* 504 */
- Parrot_abs_i, /* 505 */
- Parrot_abs_n, /* 506 */
- Parrot_abs_i_i, /* 507 */
- Parrot_abs_n_n, /* 508 */
- Parrot_abs_p, /* 509 */
- Parrot_abs_p_p, /* 510 */
- Parrot_add_i_i, /* 511 */
- Parrot_add_i_ic, /* 512 */
- Parrot_add_n_n, /* 513 */
- Parrot_add_n_nc, /* 514 */
- Parrot_add_p_p, /* 515 */
- Parrot_add_p_i, /* 516 */
- Parrot_add_p_ic, /* 517 */
- Parrot_add_p_n, /* 518 */
- Parrot_add_p_nc, /* 519 */
- Parrot_add_i_i_i, /* 520 */
- Parrot_add_i_ic_i, /* 521 */
- Parrot_add_i_i_ic, /* 522 */
- Parrot_add_n_n_n, /* 523 */
- Parrot_add_n_nc_n, /* 524 */
- Parrot_add_n_n_nc, /* 525 */
- Parrot_add_p_p_p, /* 526 */
- Parrot_add_p_p_i, /* 527 */
- Parrot_add_p_p_ic, /* 528 */
- Parrot_add_p_p_n, /* 529 */
- Parrot_add_p_p_nc, /* 530 */
- Parrot_cmod_i_i_i, /* 531 */
- Parrot_cmod_i_ic_i, /* 532 */
- Parrot_cmod_i_i_ic, /* 533 */
- Parrot_cmod_p_p_i, /* 534 */
- Parrot_cmod_p_p_ic, /* 535 */
- Parrot_cmod_p_p_p, /* 536 */
- Parrot_cmod_n_n_n, /* 537 */
- Parrot_cmod_n_nc_n, /* 538 */
- Parrot_cmod_n_n_nc, /* 539 */
- Parrot_cmod_p_p_n, /* 540 */
- Parrot_cmod_p_p_nc, /* 541 */
- Parrot_dec_i, /* 542 */
- Parrot_dec_n, /* 543 */
- Parrot_dec_p, /* 544 */
- Parrot_div_i_i, /* 545 */
- Parrot_div_i_ic, /* 546 */
- Parrot_div_n_n, /* 547 */
- Parrot_div_n_nc, /* 548 */
- Parrot_div_p_p, /* 549 */
- Parrot_div_p_i, /* 550 */
- Parrot_div_p_ic, /* 551 */
- Parrot_div_p_n, /* 552 */
- Parrot_div_p_nc, /* 553 */
- Parrot_div_i_i_i, /* 554 */
- Parrot_div_i_ic_i, /* 555 */
- Parrot_div_i_i_ic, /* 556 */
- Parrot_div_i_ic_ic, /* 557 */
- Parrot_div_n_n_n, /* 558 */
- Parrot_div_n_nc_n, /* 559 */
- Parrot_div_n_n_nc, /* 560 */
- Parrot_div_n_nc_nc, /* 561 */
- Parrot_div_p_p_p, /* 562 */
- Parrot_div_p_p_i, /* 563 */
- Parrot_div_p_p_ic, /* 564 */
- Parrot_div_p_p_n, /* 565 */
- Parrot_div_p_p_nc, /* 566 */
- Parrot_fdiv_i_i, /* 567 */
- Parrot_fdiv_i_ic, /* 568 */
- Parrot_fdiv_n_n, /* 569 */
- Parrot_fdiv_n_nc, /* 570 */
- Parrot_fdiv_p_p, /* 571 */
- Parrot_fdiv_p_i, /* 572 */
- Parrot_fdiv_p_ic, /* 573 */
- Parrot_fdiv_p_n, /* 574 */
- Parrot_fdiv_p_nc, /* 575 */
- Parrot_fdiv_i_i_i, /* 576 */
- Parrot_fdiv_i_ic_i, /* 577 */
- Parrot_fdiv_i_i_ic, /* 578 */
- Parrot_fdiv_n_n_n, /* 579 */
- Parrot_fdiv_n_nc_n, /* 580 */
- Parrot_fdiv_n_n_nc, /* 581 */
- Parrot_fdiv_p_p_p, /* 582 */
- Parrot_fdiv_p_p_i, /* 583 */
- Parrot_fdiv_p_p_ic, /* 584 */
- Parrot_fdiv_p_p_n, /* 585 */
- Parrot_fdiv_p_p_nc, /* 586 */
- Parrot_ceil_n, /* 587 */
- Parrot_ceil_i_n, /* 588 */
- Parrot_ceil_n_n, /* 589 */
- Parrot_floor_n, /* 590 */
- Parrot_floor_i_n, /* 591 */
- Parrot_floor_n_n, /* 592 */
- Parrot_inc_i, /* 593 */
- Parrot_inc_n, /* 594 */
- Parrot_inc_p, /* 595 */
- Parrot_mod_i_i, /* 596 */
- Parrot_mod_i_ic, /* 597 */
- Parrot_mod_n_n, /* 598 */
- Parrot_mod_n_nc, /* 599 */
- Parrot_mod_p_p, /* 600 */
- Parrot_mod_p_i, /* 601 */
- Parrot_mod_p_ic, /* 602 */
- Parrot_mod_p_n, /* 603 */
- Parrot_mod_p_nc, /* 604 */
- Parrot_mod_i_i_i, /* 605 */
- Parrot_mod_i_ic_i, /* 606 */
- Parrot_mod_i_i_ic, /* 607 */
- Parrot_mod_n_n_n, /* 608 */
- Parrot_mod_n_nc_n, /* 609 */
- Parrot_mod_n_n_nc, /* 610 */
- Parrot_mod_p_p_p, /* 611 */
- Parrot_mod_p_p_i, /* 612 */
- Parrot_mod_p_p_ic, /* 613 */
- Parrot_mod_p_p_n, /* 614 */
- Parrot_mod_p_p_nc, /* 615 */
- Parrot_mul_i_i, /* 616 */
- Parrot_mul_i_ic, /* 617 */
- Parrot_mul_n_n, /* 618 */
- Parrot_mul_n_nc, /* 619 */
- Parrot_mul_p_p, /* 620 */
- Parrot_mul_p_i, /* 621 */
- Parrot_mul_p_ic, /* 622 */
- Parrot_mul_p_n, /* 623 */
- Parrot_mul_p_nc, /* 624 */
- Parrot_mul_i_i_i, /* 625 */
- Parrot_mul_i_ic_i, /* 626 */
- Parrot_mul_i_i_ic, /* 627 */
- Parrot_mul_n_n_n, /* 628 */
- Parrot_mul_n_nc_n, /* 629 */
- Parrot_mul_n_n_nc, /* 630 */
- Parrot_mul_p_p_p, /* 631 */
- Parrot_mul_p_p_i, /* 632 */
- Parrot_mul_p_p_ic, /* 633 */
- Parrot_mul_p_p_n, /* 634 */
- Parrot_mul_p_p_nc, /* 635 */
- Parrot_neg_i, /* 636 */
- Parrot_neg_n, /* 637 */
- Parrot_neg_p, /* 638 */
- Parrot_neg_i_i, /* 639 */
- Parrot_neg_n_n, /* 640 */
- Parrot_neg_p_p, /* 641 */
- Parrot_pow_n_n_n, /* 642 */
- Parrot_pow_n_nc_n, /* 643 */
- Parrot_pow_n_n_nc, /* 644 */
- Parrot_pow_p_p_p, /* 645 */
- Parrot_pow_p_p_i, /* 646 */
- Parrot_pow_p_p_ic, /* 647 */
- Parrot_pow_p_p_n, /* 648 */
- Parrot_pow_p_p_nc, /* 649 */
- Parrot_pow_n_n_i, /* 650 */
- Parrot_pow_n_nc_i, /* 651 */
- Parrot_pow_n_n_ic, /* 652 */
- Parrot_pow_n_nc_ic, /* 653 */
- Parrot_sub_i_i, /* 654 */
- Parrot_sub_i_ic, /* 655 */
- Parrot_sub_n_n, /* 656 */
- Parrot_sub_n_nc, /* 657 */
- Parrot_sub_p_p, /* 658 */
- Parrot_sub_p_i, /* 659 */
- Parrot_sub_p_ic, /* 660 */
- Parrot_sub_p_n, /* 661 */
- Parrot_sub_p_nc, /* 662 */
- Parrot_sub_i_i_i, /* 663 */
- Parrot_sub_i_ic_i, /* 664 */
- Parrot_sub_i_i_ic, /* 665 */
- Parrot_sub_n_n_n, /* 666 */
- Parrot_sub_n_nc_n, /* 667 */
- Parrot_sub_n_n_nc, /* 668 */
- Parrot_sub_p_p_p, /* 669 */
- Parrot_sub_p_p_i, /* 670 */
- Parrot_sub_p_p_ic, /* 671 */
- Parrot_sub_p_p_n, /* 672 */
- Parrot_sub_p_p_nc, /* 673 */
- Parrot_sqrt_n_n, /* 674 */
- Parrot_acos_n_n, /* 675 */
- Parrot_asec_n_n, /* 676 */
- Parrot_asin_n_n, /* 677 */
- Parrot_atan_n_n, /* 678 */
- Parrot_atan_n_n_n, /* 679 */
- Parrot_atan_n_nc_n, /* 680 */
- Parrot_atan_n_n_nc, /* 681 */
- Parrot_cos_n_n, /* 682 */
- Parrot_cosh_n_n, /* 683 */
- Parrot_exp_n_n, /* 684 */
- Parrot_ln_n_n, /* 685 */
- Parrot_log10_n_n, /* 686 */
- Parrot_log2_n_n, /* 687 */
- Parrot_sec_n_n, /* 688 */
- Parrot_sech_n_n, /* 689 */
- Parrot_sin_n_n, /* 690 */
- Parrot_sinh_n_n, /* 691 */
- Parrot_tan_n_n, /* 692 */
- Parrot_tanh_n_n, /* 693 */
- Parrot_gcd_i_i_i, /* 694 */
- Parrot_gcd_i_ic_i, /* 695 */
- Parrot_gcd_i_i_ic, /* 696 */
- Parrot_lcm_i_i_i, /* 697 */
- Parrot_lcm_i_ic_i, /* 698 */
- Parrot_lcm_i_i_ic, /* 699 */
- Parrot_fact_i_i, /* 700 */
- Parrot_fact_n_i, /* 701 */
- Parrot_callmethodcc_p_s, /* 702 */
- Parrot_callmethodcc_p_sc, /* 703 */
- Parrot_callmethodcc_p_p, /* 704 */
- Parrot_callmethod_p_s_p, /* 705 */
- Parrot_callmethod_p_sc_p, /* 706 */
- Parrot_callmethod_p_p_p, /* 707 */
- Parrot_tailcallmethod_p_s, /* 708 */
- Parrot_tailcallmethod_p_sc, /* 709 */
- Parrot_tailcallmethod_p_p, /* 710 */
- Parrot_addmethod_p_s_p, /* 711 */
- Parrot_addmethod_p_sc_p, /* 712 */
- Parrot_can_i_p_s, /* 713 */
- Parrot_can_i_p_sc, /* 714 */
- Parrot_does_i_p_s, /* 715 */
- Parrot_does_i_p_sc, /* 716 */
- Parrot_does_i_p_p, /* 717 */
- Parrot_does_i_p_pc, /* 718 */
- Parrot_isa_i_p_s, /* 719 */
- Parrot_isa_i_p_sc, /* 720 */
- Parrot_isa_i_p_p, /* 721 */
- Parrot_isa_i_p_pc, /* 722 */
- Parrot_newclass_p_s, /* 723 */
- Parrot_newclass_p_sc, /* 724 */
- Parrot_newclass_p_p, /* 725 */
- Parrot_newclass_p_pc, /* 726 */
- Parrot_subclass_p_p, /* 727 */
- Parrot_subclass_p_pc, /* 728 */
- Parrot_subclass_p_p_s, /* 729 */
- Parrot_subclass_p_pc_s, /* 730 */
- Parrot_subclass_p_p_sc, /* 731 */
- Parrot_subclass_p_pc_sc, /* 732 */
- Parrot_subclass_p_p_p, /* 733 */
- Parrot_subclass_p_pc_p, /* 734 */
- Parrot_subclass_p_p_pc, /* 735 */
- Parrot_subclass_p_pc_pc, /* 736 */
- Parrot_subclass_p_s, /* 737 */
- Parrot_subclass_p_sc, /* 738 */
- Parrot_subclass_p_s_s, /* 739 */
- Parrot_subclass_p_sc_s, /* 740 */
- Parrot_subclass_p_s_sc, /* 741 */
- Parrot_subclass_p_sc_sc, /* 742 */
- Parrot_subclass_p_s_p, /* 743 */
- Parrot_subclass_p_sc_p, /* 744 */
- Parrot_subclass_p_s_pc, /* 745 */
- Parrot_subclass_p_sc_pc, /* 746 */
- Parrot_get_class_p_s, /* 747 */
- Parrot_get_class_p_sc, /* 748 */
- Parrot_get_class_p_p, /* 749 */
- Parrot_get_class_p_pc, /* 750 */
- Parrot_class_p_p, /* 751 */
- Parrot_addparent_p_p, /* 752 */
- Parrot_removeparent_p_p, /* 753 */
- Parrot_addrole_p_p, /* 754 */
- Parrot_addattribute_p_s, /* 755 */
- Parrot_addattribute_p_sc, /* 756 */
- Parrot_removeattribute_p_s, /* 757 */
- Parrot_removeattribute_p_sc, /* 758 */
- Parrot_getattribute_p_p_s, /* 759 */
- Parrot_getattribute_p_p_sc, /* 760 */
- Parrot_getattribute_p_p_p_s, /* 761 */
- Parrot_getattribute_p_p_pc_s, /* 762 */
- Parrot_getattribute_p_p_p_sc, /* 763 */
- Parrot_getattribute_p_p_pc_sc, /* 764 */
- Parrot_setattribute_p_s_p, /* 765 */
- Parrot_setattribute_p_sc_p, /* 766 */
- Parrot_setattribute_p_p_s_p, /* 767 */
- Parrot_setattribute_p_pc_s_p, /* 768 */
- Parrot_setattribute_p_p_sc_p, /* 769 */
- Parrot_setattribute_p_pc_sc_p, /* 770 */
- Parrot_inspect_p_p, /* 771 */
- Parrot_inspect_p_pc, /* 772 */
- Parrot_inspect_p_p_s, /* 773 */
- Parrot_inspect_p_pc_s, /* 774 */
- Parrot_inspect_p_p_sc, /* 775 */
- Parrot_inspect_p_pc_sc, /* 776 */
- Parrot_new_p_s, /* 777 */
- Parrot_new_p_sc, /* 778 */
- Parrot_new_p_s_p, /* 779 */
- Parrot_new_p_sc_p, /* 780 */
- Parrot_new_p_s_pc, /* 781 */
- Parrot_new_p_sc_pc, /* 782 */
- Parrot_new_p_p, /* 783 */
- Parrot_new_p_pc, /* 784 */
- Parrot_new_p_p_p, /* 785 */
- Parrot_new_p_pc_p, /* 786 */
- Parrot_new_p_p_pc, /* 787 */
- Parrot_new_p_pc_pc, /* 788 */
- Parrot_root_new_p_p, /* 789 */
- Parrot_root_new_p_pc, /* 790 */
- Parrot_root_new_p_p_p, /* 791 */
- Parrot_root_new_p_pc_p, /* 792 */
- Parrot_root_new_p_p_pc, /* 793 */
- Parrot_root_new_p_pc_pc, /* 794 */
- Parrot_typeof_s_p, /* 795 */
- Parrot_typeof_p_p, /* 796 */
- Parrot_get_repr_s_p, /* 797 */
- Parrot_find_method_p_p_s, /* 798 */
- Parrot_find_method_p_p_sc, /* 799 */
- Parrot_defined_i_p, /* 800 */
- Parrot_defined_i_p_ki, /* 801 */
- Parrot_defined_i_p_kic, /* 802 */
- Parrot_defined_i_p_k, /* 803 */
- Parrot_defined_i_p_kc, /* 804 */
- Parrot_exists_i_p_ki, /* 805 */
- Parrot_exists_i_p_kic, /* 806 */
- Parrot_exists_i_p_k, /* 807 */
- Parrot_exists_i_p_kc, /* 808 */
- Parrot_delete_p_k, /* 809 */
- Parrot_delete_p_kc, /* 810 */
- Parrot_delete_p_ki, /* 811 */
- Parrot_delete_p_kic, /* 812 */
- Parrot_elements_i_p, /* 813 */
- Parrot_push_p_i, /* 814 */
- Parrot_push_p_ic, /* 815 */
- Parrot_push_p_n, /* 816 */
- Parrot_push_p_nc, /* 817 */
- Parrot_push_p_s, /* 818 */
- Parrot_push_p_sc, /* 819 */
- Parrot_push_p_p, /* 820 */
- Parrot_pop_i_p, /* 821 */
- Parrot_pop_n_p, /* 822 */
- Parrot_pop_s_p, /* 823 */
- Parrot_pop_p_p, /* 824 */
- Parrot_unshift_p_i, /* 825 */
- Parrot_unshift_p_ic, /* 826 */
- Parrot_unshift_p_n, /* 827 */
- Parrot_unshift_p_nc, /* 828 */
- Parrot_unshift_p_s, /* 829 */
- Parrot_unshift_p_sc, /* 830 */
- Parrot_unshift_p_p, /* 831 */
- Parrot_shift_i_p, /* 832 */
- Parrot_shift_n_p, /* 833 */
- Parrot_shift_s_p, /* 834 */
- Parrot_shift_p_p, /* 835 */
- Parrot_splice_p_p_i_i, /* 836 */
- Parrot_splice_p_p_ic_i, /* 837 */
- Parrot_splice_p_p_i_ic, /* 838 */
- Parrot_splice_p_p_ic_ic, /* 839 */
- Parrot_setprop_p_s_p, /* 840 */
- Parrot_setprop_p_sc_p, /* 841 */
- Parrot_getprop_p_s_p, /* 842 */
- Parrot_getprop_p_sc_p, /* 843 */
- Parrot_delprop_p_s, /* 844 */
- Parrot_delprop_p_sc, /* 845 */
- Parrot_prophash_p_p, /* 846 */
- Parrot_freeze_s_p, /* 847 */
- Parrot_thaw_p_s, /* 848 */
- Parrot_thaw_p_sc, /* 849 */
- Parrot_add_multi_s_s_p, /* 850 */
- Parrot_add_multi_sc_s_p, /* 851 */
- Parrot_add_multi_s_sc_p, /* 852 */
- Parrot_add_multi_sc_sc_p, /* 853 */
- Parrot_find_multi_p_s_s, /* 854 */
- Parrot_find_multi_p_sc_s, /* 855 */
- Parrot_find_multi_p_s_sc, /* 856 */
- Parrot_find_multi_p_sc_sc, /* 857 */
- Parrot_register_p, /* 858 */
- Parrot_unregister_p, /* 859 */
- Parrot_box_p_i, /* 860 */
- Parrot_box_p_ic, /* 861 */
- Parrot_box_p_n, /* 862 */
- Parrot_box_p_nc, /* 863 */
- Parrot_box_p_s, /* 864 */
- Parrot_box_p_sc, /* 865 */
- Parrot_iter_p_p, /* 866 */
- Parrot_morph_p_p, /* 867 */
- Parrot_morph_p_pc, /* 868 */
- Parrot_clone_s_s, /* 869 */
- Parrot_clone_s_sc, /* 870 */
- Parrot_exchange_i_i, /* 871 */
- Parrot_exchange_p_p, /* 872 */
- Parrot_exchange_n_n, /* 873 */
- Parrot_exchange_s_s, /* 874 */
- Parrot_set_i_i, /* 875 */
- Parrot_set_i_ic, /* 876 */
- Parrot_set_i_n, /* 877 */
- Parrot_set_i_nc, /* 878 */
- Parrot_set_i_s, /* 879 */
- Parrot_set_i_sc, /* 880 */
- Parrot_set_n_n, /* 881 */
- Parrot_set_n_nc, /* 882 */
- Parrot_set_n_i, /* 883 */
- Parrot_set_n_ic, /* 884 */
- Parrot_set_n_s, /* 885 */
- Parrot_set_n_sc, /* 886 */
- Parrot_set_n_p, /* 887 */
- Parrot_set_s_p, /* 888 */
- Parrot_set_s_s, /* 889 */
- Parrot_set_s_sc, /* 890 */
- Parrot_set_s_i, /* 891 */
- Parrot_set_s_ic, /* 892 */
- Parrot_set_s_n, /* 893 */
- Parrot_set_s_nc, /* 894 */
- Parrot_set_p_pc, /* 895 */
- Parrot_set_p_p, /* 896 */
- Parrot_set_p_i, /* 897 */
- Parrot_set_p_ic, /* 898 */
- Parrot_set_p_n, /* 899 */
- Parrot_set_p_nc, /* 900 */
- Parrot_set_p_s, /* 901 */
- Parrot_set_p_sc, /* 902 */
- Parrot_set_i_p, /* 903 */
- Parrot_assign_p_p, /* 904 */
- Parrot_assign_p_i, /* 905 */
- Parrot_assign_p_ic, /* 906 */
- Parrot_assign_p_n, /* 907 */
- Parrot_assign_p_nc, /* 908 */
- Parrot_assign_p_s, /* 909 */
- Parrot_assign_p_sc, /* 910 */
- Parrot_assign_s_s, /* 911 */
- Parrot_assign_s_sc, /* 912 */
- Parrot_setref_p_p, /* 913 */
- Parrot_deref_p_p, /* 914 */
- Parrot_setp_ind_i_p, /* 915 */
- Parrot_setp_ind_ic_p, /* 916 */
- Parrot_setn_ind_i_n, /* 917 */
- Parrot_setn_ind_ic_n, /* 918 */
- Parrot_setn_ind_i_nc, /* 919 */
- Parrot_setn_ind_ic_nc, /* 920 */
- Parrot_sets_ind_i_s, /* 921 */
- Parrot_sets_ind_ic_s, /* 922 */
- Parrot_sets_ind_i_sc, /* 923 */
- Parrot_sets_ind_ic_sc, /* 924 */
- Parrot_seti_ind_i_i, /* 925 */
- Parrot_seti_ind_ic_i, /* 926 */
- Parrot_seti_ind_i_ic, /* 927 */
- Parrot_seti_ind_ic_ic, /* 928 */
- Parrot_set_p_ki_i, /* 929 */
- Parrot_set_p_kic_i, /* 930 */
- Parrot_set_p_ki_ic, /* 931 */
- Parrot_set_p_kic_ic, /* 932 */
- Parrot_set_p_ki_n, /* 933 */
- Parrot_set_p_kic_n, /* 934 */
- Parrot_set_p_ki_nc, /* 935 */
- Parrot_set_p_kic_nc, /* 936 */
- Parrot_set_p_ki_s, /* 937 */
- Parrot_set_p_kic_s, /* 938 */
- Parrot_set_p_ki_sc, /* 939 */
- Parrot_set_p_kic_sc, /* 940 */
- Parrot_set_p_ki_p, /* 941 */
- Parrot_set_p_kic_p, /* 942 */
- Parrot_set_i_p_ki, /* 943 */
- Parrot_set_i_p_kic, /* 944 */
- Parrot_set_n_p_ki, /* 945 */
- Parrot_set_n_p_kic, /* 946 */
- Parrot_set_s_p_ki, /* 947 */
- Parrot_set_s_p_kic, /* 948 */
- Parrot_set_p_p_ki, /* 949 */
- Parrot_set_p_p_kic, /* 950 */
- Parrot_set_p_k_i, /* 951 */
- Parrot_set_p_kc_i, /* 952 */
- Parrot_set_p_k_ic, /* 953 */
- Parrot_set_p_kc_ic, /* 954 */
- Parrot_set_p_k_n, /* 955 */
- Parrot_set_p_kc_n, /* 956 */
- Parrot_set_p_k_nc, /* 957 */
- Parrot_set_p_kc_nc, /* 958 */
- Parrot_set_p_k_s, /* 959 */
- Parrot_set_p_kc_s, /* 960 */
- Parrot_set_p_k_sc, /* 961 */
- Parrot_set_p_kc_sc, /* 962 */
- Parrot_set_p_k_p, /* 963 */
- Parrot_set_p_kc_p, /* 964 */
- Parrot_set_i_p_k, /* 965 */
- Parrot_set_i_p_kc, /* 966 */
- Parrot_set_n_p_k, /* 967 */
- Parrot_set_n_p_kc, /* 968 */
- Parrot_set_s_p_k, /* 969 */
- Parrot_set_s_p_kc, /* 970 */
- Parrot_set_p_p_k, /* 971 */
- Parrot_set_p_p_kc, /* 972 */
- Parrot_clone_p_p, /* 973 */
- Parrot_clone_p_p_p, /* 974 */
- Parrot_clone_p_p_pc, /* 975 */
- Parrot_copy_p_p, /* 976 */
- Parrot_null_s, /* 977 */
- Parrot_null_i, /* 978 */
- Parrot_null_p, /* 979 */
- Parrot_null_n, /* 980 */
- Parrot_cleari, /* 981 */
- Parrot_clearn, /* 982 */
- Parrot_clears, /* 983 */
- Parrot_clearp, /* 984 */
- Parrot_ord_i_s, /* 985 */
- Parrot_ord_i_sc, /* 986 */
- Parrot_ord_i_s_i, /* 987 */
- Parrot_ord_i_sc_i, /* 988 */
- Parrot_ord_i_s_ic, /* 989 */
- Parrot_ord_i_sc_ic, /* 990 */
- Parrot_chr_s_i, /* 991 */
- Parrot_chr_s_ic, /* 992 */
- Parrot_chopn_s_i, /* 993 */
- Parrot_chopn_s_ic, /* 994 */
- Parrot_chopn_s_s_i, /* 995 */
- Parrot_chopn_s_sc_i, /* 996 */
- Parrot_chopn_s_s_ic, /* 997 */
- Parrot_chopn_s_sc_ic, /* 998 */
- Parrot_concat_s_s, /* 999 */
- Parrot_concat_s_sc, /* 1000 */
- Parrot_concat_p_p, /* 1001 */
- Parrot_concat_p_s, /* 1002 */
- Parrot_concat_p_sc, /* 1003 */
- Parrot_concat_s_s_s, /* 1004 */
- Parrot_concat_s_sc_s, /* 1005 */
- Parrot_concat_s_s_sc, /* 1006 */
- Parrot_concat_p_p_s, /* 1007 */
- Parrot_concat_p_p_sc, /* 1008 */
- Parrot_concat_p_p_p, /* 1009 */
- Parrot_repeat_s_s_i, /* 1010 */
- Parrot_repeat_s_sc_i, /* 1011 */
- Parrot_repeat_s_s_ic, /* 1012 */
- Parrot_repeat_s_sc_ic, /* 1013 */
- Parrot_repeat_p_p_i, /* 1014 */
- Parrot_repeat_p_p_ic, /* 1015 */
- Parrot_repeat_p_p_p, /* 1016 */
- Parrot_repeat_p_i, /* 1017 */
- Parrot_repeat_p_ic, /* 1018 */
- Parrot_repeat_p_p, /* 1019 */
- Parrot_length_i_s, /* 1020 */
- Parrot_length_i_sc, /* 1021 */
- Parrot_bytelength_i_s, /* 1022 */
- Parrot_bytelength_i_sc, /* 1023 */
- Parrot_pin_s, /* 1024 */
- Parrot_unpin_s, /* 1025 */
- Parrot_substr_s_s_i, /* 1026 */
- Parrot_substr_s_sc_i, /* 1027 */
- Parrot_substr_s_s_ic, /* 1028 */
- Parrot_substr_s_sc_ic, /* 1029 */
- Parrot_substr_s_s_i_i, /* 1030 */
- Parrot_substr_s_sc_i_i, /* 1031 */
- Parrot_substr_s_s_ic_i, /* 1032 */
- Parrot_substr_s_sc_ic_i, /* 1033 */
- Parrot_substr_s_s_i_ic, /* 1034 */
- Parrot_substr_s_sc_i_ic, /* 1035 */
- Parrot_substr_s_s_ic_ic, /* 1036 */
- Parrot_substr_s_sc_ic_ic, /* 1037 */
- Parrot_substr_s_s_i_i_s, /* 1038 */
- Parrot_substr_s_s_ic_i_s, /* 1039 */
- Parrot_substr_s_s_i_ic_s, /* 1040 */
- Parrot_substr_s_s_ic_ic_s, /* 1041 */
- Parrot_substr_s_s_i_i_sc, /* 1042 */
- Parrot_substr_s_s_ic_i_sc, /* 1043 */
- Parrot_substr_s_s_i_ic_sc, /* 1044 */
- Parrot_substr_s_s_ic_ic_sc, /* 1045 */
- Parrot_substr_s_i_i_s, /* 1046 */
- Parrot_substr_s_ic_i_s, /* 1047 */
- Parrot_substr_s_i_ic_s, /* 1048 */
- Parrot_substr_s_ic_ic_s, /* 1049 */
- Parrot_substr_s_i_i_sc, /* 1050 */
- Parrot_substr_s_ic_i_sc, /* 1051 */
- Parrot_substr_s_i_ic_sc, /* 1052 */
- Parrot_substr_s_ic_ic_sc, /* 1053 */
- Parrot_substr_s_p_i_i, /* 1054 */
- Parrot_substr_s_p_ic_i, /* 1055 */
- Parrot_substr_s_p_i_ic, /* 1056 */
- Parrot_substr_s_p_ic_ic, /* 1057 */
- Parrot_index_i_s_s, /* 1058 */
- Parrot_index_i_sc_s, /* 1059 */
- Parrot_index_i_s_sc, /* 1060 */
- Parrot_index_i_sc_sc, /* 1061 */
- Parrot_index_i_s_s_i, /* 1062 */
- Parrot_index_i_sc_s_i, /* 1063 */
- Parrot_index_i_s_sc_i, /* 1064 */
- Parrot_index_i_sc_sc_i, /* 1065 */
- Parrot_index_i_s_s_ic, /* 1066 */
- Parrot_index_i_sc_s_ic, /* 1067 */
- Parrot_index_i_s_sc_ic, /* 1068 */
- Parrot_index_i_sc_sc_ic, /* 1069 */
- Parrot_sprintf_s_s_p, /* 1070 */
- Parrot_sprintf_s_sc_p, /* 1071 */
- Parrot_sprintf_p_p_p, /* 1072 */
- Parrot_new_s, /* 1073 */
- Parrot_new_s_i, /* 1074 */
- Parrot_new_s_ic, /* 1075 */
- Parrot_stringinfo_i_s_i, /* 1076 */
- Parrot_stringinfo_i_sc_i, /* 1077 */
- Parrot_stringinfo_i_s_ic, /* 1078 */
- Parrot_stringinfo_i_sc_ic, /* 1079 */
- Parrot_upcase_s_s, /* 1080 */
- Parrot_upcase_s_sc, /* 1081 */
- Parrot_upcase_s, /* 1082 */
- Parrot_downcase_s_s, /* 1083 */
- Parrot_downcase_s_sc, /* 1084 */
- Parrot_downcase_s, /* 1085 */
- Parrot_titlecase_s_s, /* 1086 */
- Parrot_titlecase_s_sc, /* 1087 */
- Parrot_titlecase_s, /* 1088 */
- Parrot_join_s_s_p, /* 1089 */
- Parrot_join_s_sc_p, /* 1090 */
- Parrot_split_p_s_s, /* 1091 */
- Parrot_split_p_sc_s, /* 1092 */
- Parrot_split_p_s_sc, /* 1093 */
- Parrot_split_p_sc_sc, /* 1094 */
- Parrot_charset_i_s, /* 1095 */
- Parrot_charset_i_sc, /* 1096 */
- Parrot_charsetname_s_i, /* 1097 */
- Parrot_charsetname_s_ic, /* 1098 */
- Parrot_find_charset_i_s, /* 1099 */
- Parrot_find_charset_i_sc, /* 1100 */
- Parrot_trans_charset_s_i, /* 1101 */
- Parrot_trans_charset_s_ic, /* 1102 */
- Parrot_trans_charset_s_s_i, /* 1103 */
- Parrot_trans_charset_s_sc_i, /* 1104 */
- Parrot_trans_charset_s_s_ic, /* 1105 */
- Parrot_trans_charset_s_sc_ic, /* 1106 */
- Parrot_encoding_i_s, /* 1107 */
- Parrot_encoding_i_sc, /* 1108 */
- Parrot_encodingname_s_i, /* 1109 */
- Parrot_encodingname_s_ic, /* 1110 */
- Parrot_find_encoding_i_s, /* 1111 */
- Parrot_find_encoding_i_sc, /* 1112 */
- Parrot_trans_encoding_s_i, /* 1113 */
- Parrot_trans_encoding_s_ic, /* 1114 */
- Parrot_trans_encoding_s_s_i, /* 1115 */
- Parrot_trans_encoding_s_sc_i, /* 1116 */
- Parrot_trans_encoding_s_s_ic, /* 1117 */
- Parrot_trans_encoding_s_sc_ic, /* 1118 */
- Parrot_is_cclass_i_i_s_i, /* 1119 */
- Parrot_is_cclass_i_ic_s_i, /* 1120 */
- Parrot_is_cclass_i_i_sc_i, /* 1121 */
- Parrot_is_cclass_i_ic_sc_i, /* 1122 */
- Parrot_is_cclass_i_i_s_ic, /* 1123 */
- Parrot_is_cclass_i_ic_s_ic, /* 1124 */
- Parrot_is_cclass_i_i_sc_ic, /* 1125 */
- Parrot_is_cclass_i_ic_sc_ic, /* 1126 */
- Parrot_find_cclass_i_i_s_i_i, /* 1127 */
- Parrot_find_cclass_i_ic_s_i_i, /* 1128 */
- Parrot_find_cclass_i_i_sc_i_i, /* 1129 */
- Parrot_find_cclass_i_ic_sc_i_i, /* 1130 */
- Parrot_find_cclass_i_i_s_ic_i, /* 1131 */
- Parrot_find_cclass_i_ic_s_ic_i, /* 1132 */
- Parrot_find_cclass_i_i_sc_ic_i, /* 1133 */
- Parrot_find_cclass_i_ic_sc_ic_i, /* 1134 */
- Parrot_find_cclass_i_i_s_i_ic, /* 1135 */
- Parrot_find_cclass_i_ic_s_i_ic, /* 1136 */
- Parrot_find_cclass_i_i_sc_i_ic, /* 1137 */
- Parrot_find_cclass_i_ic_sc_i_ic, /* 1138 */
- Parrot_find_cclass_i_i_s_ic_ic, /* 1139 */
- Parrot_find_cclass_i_ic_s_ic_ic, /* 1140 */
- Parrot_find_cclass_i_i_sc_ic_ic, /* 1141 */
- Parrot_find_cclass_i_ic_sc_ic_ic, /* 1142 */
- Parrot_find_not_cclass_i_i_s_i_i, /* 1143 */
- Parrot_find_not_cclass_i_ic_s_i_i, /* 1144 */
- Parrot_find_not_cclass_i_i_sc_i_i, /* 1145 */
- Parrot_find_not_cclass_i_ic_sc_i_i, /* 1146 */
- Parrot_find_not_cclass_i_i_s_ic_i, /* 1147 */
- Parrot_find_not_cclass_i_ic_s_ic_i, /* 1148 */
- Parrot_find_not_cclass_i_i_sc_ic_i, /* 1149 */
- Parrot_find_not_cclass_i_ic_sc_ic_i, /* 1150 */
- Parrot_find_not_cclass_i_i_s_i_ic, /* 1151 */
- Parrot_find_not_cclass_i_ic_s_i_ic, /* 1152 */
- Parrot_find_not_cclass_i_i_sc_i_ic, /* 1153 */
- Parrot_find_not_cclass_i_ic_sc_i_ic, /* 1154 */
- Parrot_find_not_cclass_i_i_s_ic_ic, /* 1155 */
- Parrot_find_not_cclass_i_ic_s_ic_ic, /* 1156 */
- Parrot_find_not_cclass_i_i_sc_ic_ic, /* 1157 */
- Parrot_find_not_cclass_i_ic_sc_ic_ic, /* 1158 */
- Parrot_escape_s_s, /* 1159 */
- Parrot_compose_s_s, /* 1160 */
- Parrot_compose_s_sc, /* 1161 */
- Parrot_spawnw_i_s, /* 1162 */
- Parrot_spawnw_i_sc, /* 1163 */
- Parrot_spawnw_i_p, /* 1164 */
- Parrot_err_i, /* 1165 */
- Parrot_err_s, /* 1166 */
- Parrot_err_s_i, /* 1167 */
- Parrot_err_s_ic, /* 1168 */
- Parrot_time_i, /* 1169 */
- Parrot_time_n, /* 1170 */
- Parrot_gmtime_s_i, /* 1171 */
- Parrot_gmtime_s_ic, /* 1172 */
- Parrot_localtime_s_i, /* 1173 */
- Parrot_localtime_s_ic, /* 1174 */
- Parrot_decodetime_p_i, /* 1175 */
- Parrot_decodetime_p_ic, /* 1176 */
- Parrot_decodelocaltime_p_i, /* 1177 */
- Parrot_decodelocaltime_p_ic, /* 1178 */
- Parrot_sysinfo_s_i, /* 1179 */
- Parrot_sysinfo_s_ic, /* 1180 */
- Parrot_sysinfo_i_i, /* 1181 */
- Parrot_sysinfo_i_ic, /* 1182 */
- Parrot_sleep_i, /* 1183 */
- Parrot_sleep_ic, /* 1184 */
- Parrot_sleep_n, /* 1185 */
- Parrot_sleep_nc, /* 1186 */
- Parrot_sizeof_i_i, /* 1187 */
- Parrot_sizeof_i_ic, /* 1188 */
- Parrot_store_lex_s_p, /* 1189 */
- Parrot_store_lex_sc_p, /* 1190 */
- Parrot_store_dynamic_lex_s_p, /* 1191 */
- Parrot_store_dynamic_lex_sc_p, /* 1192 */
- Parrot_find_lex_p_s, /* 1193 */
- Parrot_find_lex_p_sc, /* 1194 */
- Parrot_find_dynamic_lex_p_s, /* 1195 */
- Parrot_find_dynamic_lex_p_sc, /* 1196 */
- Parrot_find_caller_lex_p_s, /* 1197 */
- Parrot_find_caller_lex_p_sc, /* 1198 */
- Parrot_get_namespace_p, /* 1199 */
- Parrot_get_namespace_p_p, /* 1200 */
- Parrot_get_namespace_p_pc, /* 1201 */
- Parrot_get_hll_namespace_p, /* 1202 */
- Parrot_get_hll_namespace_p_p, /* 1203 */
- Parrot_get_hll_namespace_p_pc, /* 1204 */
- Parrot_get_root_namespace_p, /* 1205 */
- Parrot_get_root_namespace_p_p, /* 1206 */
- Parrot_get_root_namespace_p_pc, /* 1207 */
- Parrot_get_global_p_s, /* 1208 */
- Parrot_get_global_p_sc, /* 1209 */
- Parrot_get_global_p_p_s, /* 1210 */
- Parrot_get_global_p_pc_s, /* 1211 */
- Parrot_get_global_p_p_sc, /* 1212 */
- Parrot_get_global_p_pc_sc, /* 1213 */
- Parrot_get_hll_global_p_s, /* 1214 */
- Parrot_get_hll_global_p_sc, /* 1215 */
- Parrot_get_hll_global_p_p_s, /* 1216 */
- Parrot_get_hll_global_p_pc_s, /* 1217 */
- Parrot_get_hll_global_p_p_sc, /* 1218 */
- Parrot_get_hll_global_p_pc_sc, /* 1219 */
- Parrot_get_root_global_p_s, /* 1220 */
- Parrot_get_root_global_p_sc, /* 1221 */
- Parrot_get_root_global_p_p_s, /* 1222 */
- Parrot_get_root_global_p_pc_s, /* 1223 */
- Parrot_get_root_global_p_p_sc, /* 1224 */
- Parrot_get_root_global_p_pc_sc, /* 1225 */
- Parrot_set_global_s_p, /* 1226 */
- Parrot_set_global_sc_p, /* 1227 */
- Parrot_set_global_p_s_p, /* 1228 */
- Parrot_set_global_pc_s_p, /* 1229 */
- Parrot_set_global_p_sc_p, /* 1230 */
- Parrot_set_global_pc_sc_p, /* 1231 */
- Parrot_set_hll_global_s_p, /* 1232 */
- Parrot_set_hll_global_sc_p, /* 1233 */
- Parrot_set_hll_global_p_s_p, /* 1234 */
- Parrot_set_hll_global_pc_s_p, /* 1235 */
- Parrot_set_hll_global_p_sc_p, /* 1236 */
- Parrot_set_hll_global_pc_sc_p, /* 1237 */
- Parrot_set_root_global_s_p, /* 1238 */
- Parrot_set_root_global_sc_p, /* 1239 */
- Parrot_set_root_global_p_s_p, /* 1240 */
- Parrot_set_root_global_pc_s_p, /* 1241 */
- Parrot_set_root_global_p_sc_p, /* 1242 */
- Parrot_set_root_global_pc_sc_p, /* 1243 */
- Parrot_find_name_p_s, /* 1244 */
- Parrot_find_name_p_sc, /* 1245 */
- Parrot_find_sub_not_null_p_s, /* 1246 */
- Parrot_find_sub_not_null_p_sc, /* 1247 */
- Parrot_trap, /* 1248 */
- Parrot_set_label_p_ic, /* 1249 */
- Parrot_get_label_i_p, /* 1250 */
- Parrot_fetch_p_p_p_p, /* 1251 */
- Parrot_fetch_p_pc_p_p, /* 1252 */
- Parrot_fetch_p_p_pc_p, /* 1253 */
- Parrot_fetch_p_pc_pc_p, /* 1254 */
- Parrot_fetch_p_p_p_pc, /* 1255 */
- Parrot_fetch_p_pc_p_pc, /* 1256 */
- Parrot_fetch_p_p_pc_pc, /* 1257 */
- Parrot_fetch_p_pc_pc_pc, /* 1258 */
- Parrot_fetch_p_p_i_p, /* 1259 */
- Parrot_fetch_p_pc_i_p, /* 1260 */
- Parrot_fetch_p_p_ic_p, /* 1261 */
- Parrot_fetch_p_pc_ic_p, /* 1262 */
- Parrot_fetch_p_p_i_pc, /* 1263 */
- Parrot_fetch_p_pc_i_pc, /* 1264 */
- Parrot_fetch_p_p_ic_pc, /* 1265 */
- Parrot_fetch_p_pc_ic_pc, /* 1266 */
- Parrot_fetch_p_p_s_p, /* 1267 */
- Parrot_fetch_p_pc_s_p, /* 1268 */
- Parrot_fetch_p_p_sc_p, /* 1269 */
- Parrot_fetch_p_pc_sc_p, /* 1270 */
- Parrot_fetch_p_p_s_pc, /* 1271 */
- Parrot_fetch_p_pc_s_pc, /* 1272 */
- Parrot_fetch_p_p_sc_pc, /* 1273 */
- Parrot_fetch_p_pc_sc_pc, /* 1274 */
- Parrot_vivify_p_p_p_p, /* 1275 */
- Parrot_vivify_p_pc_p_p, /* 1276 */
- Parrot_vivify_p_p_pc_p, /* 1277 */
- Parrot_vivify_p_pc_pc_p, /* 1278 */
- Parrot_vivify_p_p_p_pc, /* 1279 */
- Parrot_vivify_p_pc_p_pc, /* 1280 */
- Parrot_vivify_p_p_pc_pc, /* 1281 */
- Parrot_vivify_p_pc_pc_pc, /* 1282 */
- Parrot_vivify_p_p_i_p, /* 1283 */
- Parrot_vivify_p_pc_i_p, /* 1284 */
- Parrot_vivify_p_p_ic_p, /* 1285 */
- Parrot_vivify_p_pc_ic_p, /* 1286 */
- Parrot_vivify_p_p_i_pc, /* 1287 */
- Parrot_vivify_p_pc_i_pc, /* 1288 */
- Parrot_vivify_p_p_ic_pc, /* 1289 */
- Parrot_vivify_p_pc_ic_pc, /* 1290 */
- Parrot_vivify_p_p_s_p, /* 1291 */
- Parrot_vivify_p_pc_s_p, /* 1292 */
- Parrot_vivify_p_p_sc_p, /* 1293 */
- Parrot_vivify_p_pc_sc_p, /* 1294 */
- Parrot_vivify_p_p_s_pc, /* 1295 */
- Parrot_vivify_p_pc_s_pc, /* 1296 */
- Parrot_vivify_p_p_sc_pc, /* 1297 */
- Parrot_vivify_p_pc_sc_pc, /* 1298 */
- Parrot_new_p_s_i, /* 1299 */
- Parrot_new_p_sc_i, /* 1300 */
- Parrot_new_p_s_ic, /* 1301 */
- Parrot_new_p_sc_ic, /* 1302 */
- Parrot_new_p_p_i, /* 1303 */
- Parrot_new_p_pc_i, /* 1304 */
- Parrot_new_p_p_ic, /* 1305 */
- Parrot_new_p_pc_ic, /* 1306 */
- Parrot_root_new_p_p_i, /* 1307 */
- Parrot_root_new_p_pc_i, /* 1308 */
- Parrot_root_new_p_p_ic, /* 1309 */
- Parrot_root_new_p_pc_ic, /* 1310 */
+ Parrot_get_params_pc, /* 33 */
+ Parrot_set_returns_pc, /* 34 */
+ Parrot_get_results_pc, /* 35 */
+ Parrot_set_result_info_p, /* 36 */
+ Parrot_set_result_info_pc, /* 37 */
+ Parrot_result_info_p, /* 38 */
+ Parrot_set_addr_i_ic, /* 39 */
+ Parrot_set_addr_p_ic, /* 40 */
+ Parrot_set_addr_p_i, /* 41 */
+ Parrot_get_addr_i_p, /* 42 */
+ Parrot_schedule_p, /* 43 */
+ Parrot_addhandler_p, /* 44 */
+ Parrot_push_eh_ic, /* 45 */
+ Parrot_push_eh_p, /* 46 */
+ Parrot_pop_eh, /* 47 */
+ Parrot_throw_p, /* 48 */
+ Parrot_throw_p_p, /* 49 */
+ Parrot_rethrow_p, /* 50 */
+ Parrot_count_eh_i, /* 51 */
+ Parrot_die_s, /* 52 */
+ Parrot_die_sc, /* 53 */
+ Parrot_die_p, /* 54 */
+ Parrot_die_pc, /* 55 */
+ Parrot_die_i_i, /* 56 */
+ Parrot_die_ic_i, /* 57 */
+ Parrot_die_i_ic, /* 58 */
+ Parrot_die_ic_ic, /* 59 */
+ Parrot_exit_i, /* 60 */
+ Parrot_exit_ic, /* 61 */
+ Parrot_debug_i, /* 62 */
+ Parrot_debug_ic, /* 63 */
+ Parrot_bounds_i, /* 64 */
+ Parrot_bounds_ic, /* 65 */
+ Parrot_profile_i, /* 66 */
+ Parrot_profile_ic, /* 67 */
+ Parrot_trace_i, /* 68 */
+ Parrot_trace_ic, /* 69 */
+ Parrot_gc_debug_i, /* 70 */
+ Parrot_gc_debug_ic, /* 71 */
+ Parrot_interpinfo_i_i, /* 72 */
+ Parrot_interpinfo_i_ic, /* 73 */
+ Parrot_interpinfo_p_i, /* 74 */
+ Parrot_interpinfo_p_ic, /* 75 */
+ Parrot_interpinfo_s_i, /* 76 */
+ Parrot_interpinfo_s_ic, /* 77 */
+ Parrot_warningson_i, /* 78 */
+ Parrot_warningson_ic, /* 79 */
+ Parrot_warningsoff_i, /* 80 */
+ Parrot_warningsoff_ic, /* 81 */
+ Parrot_errorson_i, /* 82 */
+ Parrot_errorson_ic, /* 83 */
+ Parrot_errorsoff_i, /* 84 */
+ Parrot_errorsoff_ic, /* 85 */
+ Parrot_runinterp_p_i, /* 86 */
+ Parrot_runinterp_p_ic, /* 87 */
+ Parrot_getinterp_p, /* 88 */
+ Parrot_sweep_ic, /* 89 */
+ Parrot_collect, /* 90 */
+ Parrot_sweepoff, /* 91 */
+ Parrot_sweepon, /* 92 */
+ Parrot_collectoff, /* 93 */
+ Parrot_collecton, /* 94 */
+ Parrot_needs_destroy_p, /* 95 */
+ Parrot_loadlib_p_s, /* 96 */
+ Parrot_loadlib_p_sc, /* 97 */
+ Parrot_loadlib_p_s_p, /* 98 */
+ Parrot_loadlib_p_sc_p, /* 99 */
+ Parrot_loadlib_p_s_pc, /* 100 */
+ Parrot_loadlib_p_sc_pc, /* 101 */
+ Parrot_dlfunc_p_p_s_s, /* 102 */
+ Parrot_dlfunc_p_p_sc_s, /* 103 */
+ Parrot_dlfunc_p_p_s_sc, /* 104 */
+ Parrot_dlfunc_p_p_sc_sc, /* 105 */
+ Parrot_dlvar_p_p_s, /* 106 */
+ Parrot_dlvar_p_p_sc, /* 107 */
+ Parrot_compreg_s_p, /* 108 */
+ Parrot_compreg_sc_p, /* 109 */
+ Parrot_compreg_p_s, /* 110 */
+ Parrot_compreg_p_sc, /* 111 */
+ Parrot_new_callback_p_p_p_s, /* 112 */
+ Parrot_new_callback_p_p_p_sc, /* 113 */
+ Parrot_annotations_p, /* 114 */
+ Parrot_annotations_p_s, /* 115 */
+ Parrot_annotations_p_sc, /* 116 */
+ Parrot_band_i_i, /* 117 */
+ Parrot_band_i_ic, /* 118 */
+ Parrot_band_p_i, /* 119 */
+ Parrot_band_p_ic, /* 120 */
+ Parrot_band_p_p, /* 121 */
+ Parrot_band_i_i_i, /* 122 */
+ Parrot_band_i_ic_i, /* 123 */
+ Parrot_band_i_i_ic, /* 124 */
+ Parrot_band_p_p_i, /* 125 */
+ Parrot_band_p_p_ic, /* 126 */
+ Parrot_band_p_p_p, /* 127 */
+ Parrot_bands_p_s, /* 128 */
+ Parrot_bands_p_sc, /* 129 */
+ Parrot_bands_p_p, /* 130 */
+ Parrot_bands_s_s_s, /* 131 */
+ Parrot_bands_s_sc_s, /* 132 */
+ Parrot_bands_s_s_sc, /* 133 */
+ Parrot_bands_p_p_s, /* 134 */
+ Parrot_bands_p_p_sc, /* 135 */
+ Parrot_bands_p_p_p, /* 136 */
+ Parrot_bnot_i, /* 137 */
+ Parrot_bnot_i_i, /* 138 */
+ Parrot_bnot_p, /* 139 */
+ Parrot_bnot_p_p, /* 140 */
+ Parrot_bnots_s_s, /* 141 */
+ Parrot_bnots_s_sc, /* 142 */
+ Parrot_bnots_p, /* 143 */
+ Parrot_bnots_p_p, /* 144 */
+ Parrot_bor_i_i, /* 145 */
+ Parrot_bor_i_ic, /* 146 */
+ Parrot_bor_p_i, /* 147 */
+ Parrot_bor_p_ic, /* 148 */
+ Parrot_bor_p_p, /* 149 */
+ Parrot_bor_i_i_i, /* 150 */
+ Parrot_bor_i_ic_i, /* 151 */
+ Parrot_bor_i_i_ic, /* 152 */
+ Parrot_bor_p_p_i, /* 153 */
+ Parrot_bor_p_p_ic, /* 154 */
+ Parrot_bor_p_p_p, /* 155 */
+ Parrot_bors_p_s, /* 156 */
+ Parrot_bors_p_sc, /* 157 */
+ Parrot_bors_p_p, /* 158 */
+ Parrot_bors_s_s_s, /* 159 */
+ Parrot_bors_s_sc_s, /* 160 */
+ Parrot_bors_s_s_sc, /* 161 */
+ Parrot_bors_p_p_s, /* 162 */
+ Parrot_bors_p_p_sc, /* 163 */
+ Parrot_bors_p_p_p, /* 164 */
+ Parrot_shl_i_i, /* 165 */
+ Parrot_shl_i_ic, /* 166 */
+ Parrot_shl_p_i, /* 167 */
+ Parrot_shl_p_ic, /* 168 */
+ Parrot_shl_p_p, /* 169 */
+ Parrot_shl_i_i_i, /* 170 */
+ Parrot_shl_i_ic_i, /* 171 */
+ Parrot_shl_i_i_ic, /* 172 */
+ Parrot_shl_p_p_i, /* 173 */
+ Parrot_shl_p_p_ic, /* 174 */
+ Parrot_shl_p_p_p, /* 175 */
+ Parrot_shr_i_i, /* 176 */
+ Parrot_shr_i_ic, /* 177 */
+ Parrot_shr_p_i, /* 178 */
+ Parrot_shr_p_ic, /* 179 */
+ Parrot_shr_p_p, /* 180 */
+ Parrot_shr_i_i_i, /* 181 */
+ Parrot_shr_i_ic_i, /* 182 */
+ Parrot_shr_i_i_ic, /* 183 */
+ Parrot_shr_p_p_i, /* 184 */
+ Parrot_shr_p_p_ic, /* 185 */
+ Parrot_shr_p_p_p, /* 186 */
+ Parrot_lsr_i_i, /* 187 */
+ Parrot_lsr_i_ic, /* 188 */
+ Parrot_lsr_p_i, /* 189 */
+ Parrot_lsr_p_ic, /* 190 */
+ Parrot_lsr_p_p, /* 191 */
+ Parrot_lsr_i_i_i, /* 192 */
+ Parrot_lsr_i_ic_i, /* 193 */
+ Parrot_lsr_i_i_ic, /* 194 */
+ Parrot_lsr_p_p_i, /* 195 */
+ Parrot_lsr_p_p_ic, /* 196 */
+ Parrot_lsr_p_p_p, /* 197 */
+ Parrot_rot_i_i_i_ic, /* 198 */
+ Parrot_rot_i_ic_i_ic, /* 199 */
+ Parrot_rot_i_i_ic_ic, /* 200 */
+ Parrot_bxor_i_i, /* 201 */
+ Parrot_bxor_i_ic, /* 202 */
+ Parrot_bxor_p_i, /* 203 */
+ Parrot_bxor_p_ic, /* 204 */
+ Parrot_bxor_p_p, /* 205 */
+ Parrot_bxor_i_i_i, /* 206 */
+ Parrot_bxor_i_ic_i, /* 207 */
+ Parrot_bxor_i_i_ic, /* 208 */
+ Parrot_bxor_p_p_i, /* 209 */
+ Parrot_bxor_p_p_ic, /* 210 */
+ Parrot_bxor_p_p_p, /* 211 */
+ Parrot_bxors_p_s, /* 212 */
+ Parrot_bxors_p_sc, /* 213 */
+ Parrot_bxors_p_p, /* 214 */
+ Parrot_bxors_s_s_s, /* 215 */
+ Parrot_bxors_s_sc_s, /* 216 */
+ Parrot_bxors_s_s_sc, /* 217 */
+ Parrot_bxors_p_p_s, /* 218 */
+ Parrot_bxors_p_p_sc, /* 219 */
+ Parrot_bxors_p_p_p, /* 220 */
+ Parrot_eq_i_i_ic, /* 221 */
+ Parrot_eq_ic_i_ic, /* 222 */
+ Parrot_eq_i_ic_ic, /* 223 */
+ Parrot_eq_n_n_ic, /* 224 */
+ Parrot_eq_nc_n_ic, /* 225 */
+ Parrot_eq_n_nc_ic, /* 226 */
+ Parrot_eq_s_s_ic, /* 227 */
+ Parrot_eq_sc_s_ic, /* 228 */
+ Parrot_eq_s_sc_ic, /* 229 */
+ Parrot_eq_p_p_ic, /* 230 */
+ Parrot_eq_p_i_ic, /* 231 */
+ Parrot_eq_p_ic_ic, /* 232 */
+ Parrot_eq_p_n_ic, /* 233 */
+ Parrot_eq_p_nc_ic, /* 234 */
+ Parrot_eq_p_s_ic, /* 235 */
+ Parrot_eq_p_sc_ic, /* 236 */
+ Parrot_eq_str_p_p_ic, /* 237 */
+ Parrot_eq_num_p_p_ic, /* 238 */
+ Parrot_eq_addr_s_s_ic, /* 239 */
+ Parrot_eq_addr_sc_s_ic, /* 240 */
+ Parrot_eq_addr_s_sc_ic, /* 241 */
+ Parrot_eq_addr_sc_sc_ic, /* 242 */
+ Parrot_eq_addr_p_p_ic, /* 243 */
+ Parrot_ne_i_i_ic, /* 244 */
+ Parrot_ne_ic_i_ic, /* 245 */
+ Parrot_ne_i_ic_ic, /* 246 */
+ Parrot_ne_n_n_ic, /* 247 */
+ Parrot_ne_nc_n_ic, /* 248 */
+ Parrot_ne_n_nc_ic, /* 249 */
+ Parrot_ne_s_s_ic, /* 250 */
+ Parrot_ne_sc_s_ic, /* 251 */
+ Parrot_ne_s_sc_ic, /* 252 */
+ Parrot_ne_p_p_ic, /* 253 */
+ Parrot_ne_p_i_ic, /* 254 */
+ Parrot_ne_p_ic_ic, /* 255 */
+ Parrot_ne_p_n_ic, /* 256 */
+ Parrot_ne_p_nc_ic, /* 257 */
+ Parrot_ne_p_s_ic, /* 258 */
+ Parrot_ne_p_sc_ic, /* 259 */
+ Parrot_ne_str_p_p_ic, /* 260 */
+ Parrot_ne_num_p_p_ic, /* 261 */
+ Parrot_ne_addr_s_s_ic, /* 262 */
+ Parrot_ne_addr_sc_s_ic, /* 263 */
+ Parrot_ne_addr_s_sc_ic, /* 264 */
+ Parrot_ne_addr_sc_sc_ic, /* 265 */
+ Parrot_ne_addr_p_p_ic, /* 266 */
+ Parrot_lt_i_i_ic, /* 267 */
+ Parrot_lt_ic_i_ic, /* 268 */
+ Parrot_lt_i_ic_ic, /* 269 */
+ Parrot_lt_n_n_ic, /* 270 */
+ Parrot_lt_nc_n_ic, /* 271 */
+ Parrot_lt_n_nc_ic, /* 272 */
+ Parrot_lt_s_s_ic, /* 273 */
+ Parrot_lt_sc_s_ic, /* 274 */
+ Parrot_lt_s_sc_ic, /* 275 */
+ Parrot_lt_p_p_ic, /* 276 */
+ Parrot_lt_p_i_ic, /* 277 */
+ Parrot_lt_p_ic_ic, /* 278 */
+ Parrot_lt_p_n_ic, /* 279 */
+ Parrot_lt_p_nc_ic, /* 280 */
+ Parrot_lt_p_s_ic, /* 281 */
+ Parrot_lt_p_sc_ic, /* 282 */
+ Parrot_lt_str_p_p_ic, /* 283 */
+ Parrot_lt_num_p_p_ic, /* 284 */
+ Parrot_le_i_i_ic, /* 285 */
+ Parrot_le_ic_i_ic, /* 286 */
+ Parrot_le_i_ic_ic, /* 287 */
+ Parrot_le_n_n_ic, /* 288 */
+ Parrot_le_nc_n_ic, /* 289 */
+ Parrot_le_n_nc_ic, /* 290 */
+ Parrot_le_s_s_ic, /* 291 */
+ Parrot_le_sc_s_ic, /* 292 */
+ Parrot_le_s_sc_ic, /* 293 */
+ Parrot_le_p_p_ic, /* 294 */
+ Parrot_le_p_i_ic, /* 295 */
+ Parrot_le_p_ic_ic, /* 296 */
+ Parrot_le_p_n_ic, /* 297 */
+ Parrot_le_p_nc_ic, /* 298 */
+ Parrot_le_p_s_ic, /* 299 */
+ Parrot_le_p_sc_ic, /* 300 */
+ Parrot_le_str_p_p_ic, /* 301 */
+ Parrot_le_num_p_p_ic, /* 302 */
+ Parrot_gt_p_p_ic, /* 303 */
+ Parrot_gt_p_i_ic, /* 304 */
+ Parrot_gt_p_ic_ic, /* 305 */
+ Parrot_gt_p_n_ic, /* 306 */
+ Parrot_gt_p_nc_ic, /* 307 */
+ Parrot_gt_p_s_ic, /* 308 */
+ Parrot_gt_p_sc_ic, /* 309 */
+ Parrot_gt_str_p_p_ic, /* 310 */
+ Parrot_gt_num_p_p_ic, /* 311 */
+ Parrot_ge_p_p_ic, /* 312 */
+ Parrot_ge_p_i_ic, /* 313 */
+ Parrot_ge_p_ic_ic, /* 314 */
+ Parrot_ge_p_n_ic, /* 315 */
+ Parrot_ge_p_nc_ic, /* 316 */
+ Parrot_ge_p_s_ic, /* 317 */
+ Parrot_ge_p_sc_ic, /* 318 */
+ Parrot_ge_str_p_p_ic, /* 319 */
+ Parrot_ge_num_p_p_ic, /* 320 */
+ Parrot_if_null_p_ic, /* 321 */
+ Parrot_if_null_s_ic, /* 322 */
+ Parrot_unless_null_p_ic, /* 323 */
+ Parrot_unless_null_s_ic, /* 324 */
+ Parrot_cmp_i_i_i, /* 325 */
+ Parrot_cmp_i_ic_i, /* 326 */
+ Parrot_cmp_i_i_ic, /* 327 */
+ Parrot_cmp_i_n_n, /* 328 */
+ Parrot_cmp_i_nc_n, /* 329 */
+ Parrot_cmp_i_n_nc, /* 330 */
+ Parrot_cmp_i_s_s, /* 331 */
+ Parrot_cmp_i_sc_s, /* 332 */
+ Parrot_cmp_i_s_sc, /* 333 */
+ Parrot_cmp_i_p_p, /* 334 */
+ Parrot_cmp_i_p_i, /* 335 */
+ Parrot_cmp_i_p_ic, /* 336 */
+ Parrot_cmp_i_p_n, /* 337 */
+ Parrot_cmp_i_p_nc, /* 338 */
+ Parrot_cmp_i_p_s, /* 339 */
+ Parrot_cmp_i_p_sc, /* 340 */
+ Parrot_cmp_str_i_p_p, /* 341 */
+ Parrot_cmp_num_i_p_p, /* 342 */
+ Parrot_cmp_pmc_p_p_p, /* 343 */
+ Parrot_issame_i_p_p, /* 344 */
+ Parrot_issame_i_s_s, /* 345 */
+ Parrot_issame_i_sc_s, /* 346 */
+ Parrot_issame_i_s_sc, /* 347 */
+ Parrot_issame_i_sc_sc, /* 348 */
+ Parrot_isntsame_i_p_p, /* 349 */
+ Parrot_isntsame_i_s_s, /* 350 */
+ Parrot_isntsame_i_sc_s, /* 351 */
+ Parrot_isntsame_i_s_sc, /* 352 */
+ Parrot_isntsame_i_sc_sc, /* 353 */
+ Parrot_istrue_i_p, /* 354 */
+ Parrot_isfalse_i_p, /* 355 */
+ Parrot_isnull_i_p, /* 356 */
+ Parrot_isnull_i_pc, /* 357 */
+ Parrot_isnull_i_s, /* 358 */
+ Parrot_isnull_i_sc, /* 359 */
+ Parrot_isgt_i_p_p, /* 360 */
+ Parrot_isge_i_p_p, /* 361 */
+ Parrot_isle_i_i_i, /* 362 */
+ Parrot_isle_i_ic_i, /* 363 */
+ Parrot_isle_i_i_ic, /* 364 */
+ Parrot_isle_i_n_n, /* 365 */
+ Parrot_isle_i_nc_n, /* 366 */
+ Parrot_isle_i_n_nc, /* 367 */
+ Parrot_isle_i_s_s, /* 368 */
+ Parrot_isle_i_sc_s, /* 369 */
+ Parrot_isle_i_s_sc, /* 370 */
+ Parrot_isle_i_p_p, /* 371 */
+ Parrot_islt_i_i_i, /* 372 */
+ Parrot_islt_i_ic_i, /* 373 */
+ Parrot_islt_i_i_ic, /* 374 */
+ Parrot_islt_i_n_n, /* 375 */
+ Parrot_islt_i_nc_n, /* 376 */
+ Parrot_islt_i_n_nc, /* 377 */
+ Parrot_islt_i_s_s, /* 378 */
+ Parrot_islt_i_sc_s, /* 379 */
+ Parrot_islt_i_s_sc, /* 380 */
+ Parrot_islt_i_p_p, /* 381 */
+ Parrot_iseq_i_i_i, /* 382 */
+ Parrot_iseq_i_ic_i, /* 383 */
+ Parrot_iseq_i_i_ic, /* 384 */
+ Parrot_iseq_i_n_n, /* 385 */
+ Parrot_iseq_i_nc_n, /* 386 */
+ Parrot_iseq_i_n_nc, /* 387 */
+ Parrot_iseq_i_s_s, /* 388 */
+ Parrot_iseq_i_sc_s, /* 389 */
+ Parrot_iseq_i_s_sc, /* 390 */
+ Parrot_iseq_i_p_p, /* 391 */
+ Parrot_isne_i_i_i, /* 392 */
+ Parrot_isne_i_ic_i, /* 393 */
+ Parrot_isne_i_i_ic, /* 394 */
+ Parrot_isne_i_n_n, /* 395 */
+ Parrot_isne_i_nc_n, /* 396 */
+ Parrot_isne_i_n_nc, /* 397 */
+ Parrot_isne_i_s_s, /* 398 */
+ Parrot_isne_i_sc_s, /* 399 */
+ Parrot_isne_i_s_sc, /* 400 */
+ Parrot_isne_i_p_p, /* 401 */
+ Parrot_and_i_i_i, /* 402 */
+ Parrot_and_i_ic_i, /* 403 */
+ Parrot_and_i_i_ic, /* 404 */
+ Parrot_and_p_p_p, /* 405 */
+ Parrot_not_i, /* 406 */
+ Parrot_not_i_i, /* 407 */
+ Parrot_not_p, /* 408 */
+ Parrot_not_p_p, /* 409 */
+ Parrot_or_i_i_i, /* 410 */
+ Parrot_or_i_ic_i, /* 411 */
+ Parrot_or_i_i_ic, /* 412 */
+ Parrot_or_p_p_p, /* 413 */
+ Parrot_xor_i_i_i, /* 414 */
+ Parrot_xor_i_ic_i, /* 415 */
+ Parrot_xor_i_i_ic, /* 416 */
+ Parrot_xor_p_p_p, /* 417 */
+ Parrot_debug_init, /* 418 */
+ Parrot_debug_load_sc, /* 419 */
+ Parrot_debug_break, /* 420 */
+ Parrot_debug_print, /* 421 */
+ Parrot_backtrace, /* 422 */
+ Parrot_getline_i, /* 423 */
+ Parrot_getfile_s, /* 424 */
+ Parrot_set_label_p_ic, /* 425 */
+ Parrot_get_label_i_p, /* 426 */
+ Parrot_close_p, /* 427 */
+ Parrot_fdopen_p_i_s, /* 428 */
+ Parrot_fdopen_p_ic_s, /* 429 */
+ Parrot_fdopen_p_i_sc, /* 430 */
+ Parrot_fdopen_p_ic_sc, /* 431 */
+ Parrot_getstdin_p, /* 432 */
+ Parrot_getstdout_p, /* 433 */
+ Parrot_getstderr_p, /* 434 */
+ Parrot_setstdin_p, /* 435 */
+ Parrot_setstdout_p, /* 436 */
+ Parrot_setstderr_p, /* 437 */
+ Parrot_open_p_s_s, /* 438 */
+ Parrot_open_p_sc_s, /* 439 */
+ Parrot_open_p_s_sc, /* 440 */
+ Parrot_open_p_sc_sc, /* 441 */
+ Parrot_open_p_s, /* 442 */
+ Parrot_open_p_sc, /* 443 */
+ Parrot_print_i, /* 444 */
+ Parrot_print_ic, /* 445 */
+ Parrot_print_n, /* 446 */
+ Parrot_print_nc, /* 447 */
+ Parrot_print_s, /* 448 */
+ Parrot_print_sc, /* 449 */
+ Parrot_print_p, /* 450 */
+ Parrot_say_i, /* 451 */
+ Parrot_say_ic, /* 452 */
+ Parrot_say_n, /* 453 */
+ Parrot_say_nc, /* 454 */
+ Parrot_say_s, /* 455 */
+ Parrot_say_sc, /* 456 */
+ Parrot_say_p, /* 457 */
+ Parrot_printerr_i, /* 458 */
+ Parrot_printerr_ic, /* 459 */
+ Parrot_printerr_n, /* 460 */
+ Parrot_printerr_nc, /* 461 */
+ Parrot_printerr_s, /* 462 */
+ Parrot_printerr_sc, /* 463 */
+ Parrot_printerr_p, /* 464 */
+ Parrot_print_p_i, /* 465 */
+ Parrot_print_p_ic, /* 466 */
+ Parrot_print_p_n, /* 467 */
+ Parrot_print_p_nc, /* 468 */
+ Parrot_print_p_s, /* 469 */
+ Parrot_print_p_sc, /* 470 */
+ Parrot_print_p_p, /* 471 */
+ Parrot_read_s_i, /* 472 */
+ Parrot_read_s_ic, /* 473 */
+ Parrot_read_s_p_i, /* 474 */
+ Parrot_read_s_p_ic, /* 475 */
+ Parrot_readline_s_p, /* 476 */
+ Parrot_peek_s, /* 477 */
+ Parrot_peek_s_p, /* 478 */
+ Parrot_stat_i_s_i, /* 479 */
+ Parrot_stat_i_sc_i, /* 480 */
+ Parrot_stat_i_s_ic, /* 481 */
+ Parrot_stat_i_sc_ic, /* 482 */
+ Parrot_stat_i_i_i, /* 483 */
+ Parrot_stat_i_ic_i, /* 484 */
+ Parrot_stat_i_i_ic, /* 485 */
+ Parrot_stat_i_ic_ic, /* 486 */
+ Parrot_seek_p_i_i, /* 487 */
+ Parrot_seek_p_ic_i, /* 488 */
+ Parrot_seek_p_i_ic, /* 489 */
+ Parrot_seek_p_ic_ic, /* 490 */
+ Parrot_seek_p_i_i_i, /* 491 */
+ Parrot_seek_p_ic_i_i, /* 492 */
+ Parrot_seek_p_i_ic_i, /* 493 */
+ Parrot_seek_p_ic_ic_i, /* 494 */
+ Parrot_seek_p_i_i_ic, /* 495 */
+ Parrot_seek_p_ic_i_ic, /* 496 */
+ Parrot_seek_p_i_ic_ic, /* 497 */
+ Parrot_seek_p_ic_ic_ic, /* 498 */
+ Parrot_tell_i_p, /* 499 */
+ Parrot_tell_i_i_p, /* 500 */
+ Parrot_abs_i, /* 501 */
+ Parrot_abs_n, /* 502 */
+ Parrot_abs_i_i, /* 503 */
+ Parrot_abs_n_n, /* 504 */
+ Parrot_abs_p, /* 505 */
+ Parrot_abs_p_p, /* 506 */
+ Parrot_add_i_i, /* 507 */
+ Parrot_add_i_ic, /* 508 */
+ Parrot_add_n_n, /* 509 */
+ Parrot_add_n_nc, /* 510 */
+ Parrot_add_p_p, /* 511 */
+ Parrot_add_p_i, /* 512 */
+ Parrot_add_p_ic, /* 513 */
+ Parrot_add_p_n, /* 514 */
+ Parrot_add_p_nc, /* 515 */
+ Parrot_add_i_i_i, /* 516 */
+ Parrot_add_i_ic_i, /* 517 */
+ Parrot_add_i_i_ic, /* 518 */
+ Parrot_add_n_n_n, /* 519 */
+ Parrot_add_n_nc_n, /* 520 */
+ Parrot_add_n_n_nc, /* 521 */
+ Parrot_add_p_p_p, /* 522 */
+ Parrot_add_p_p_i, /* 523 */
+ Parrot_add_p_p_ic, /* 524 */
+ Parrot_add_p_p_n, /* 525 */
+ Parrot_add_p_p_nc, /* 526 */
+ Parrot_cmod_i_i_i, /* 527 */
+ Parrot_cmod_i_ic_i, /* 528 */
+ Parrot_cmod_i_i_ic, /* 529 */
+ Parrot_cmod_p_p_i, /* 530 */
+ Parrot_cmod_p_p_ic, /* 531 */
+ Parrot_cmod_p_p_p, /* 532 */
+ Parrot_cmod_n_n_n, /* 533 */
+ Parrot_cmod_n_nc_n, /* 534 */
+ Parrot_cmod_n_n_nc, /* 535 */
+ Parrot_cmod_p_p_n, /* 536 */
+ Parrot_cmod_p_p_nc, /* 537 */
+ Parrot_dec_i, /* 538 */
+ Parrot_dec_n, /* 539 */
+ Parrot_dec_p, /* 540 */
+ Parrot_div_i_i, /* 541 */
+ Parrot_div_i_ic, /* 542 */
+ Parrot_div_n_n, /* 543 */
+ Parrot_div_n_nc, /* 544 */
+ Parrot_div_p_p, /* 545 */
+ Parrot_div_p_i, /* 546 */
+ Parrot_div_p_ic, /* 547 */
+ Parrot_div_p_n, /* 548 */
+ Parrot_div_p_nc, /* 549 */
+ Parrot_div_i_i_i, /* 550 */
+ Parrot_div_i_ic_i, /* 551 */
+ Parrot_div_i_i_ic, /* 552 */
+ Parrot_div_i_ic_ic, /* 553 */
+ Parrot_div_n_n_n, /* 554 */
+ Parrot_div_n_nc_n, /* 555 */
+ Parrot_div_n_n_nc, /* 556 */
+ Parrot_div_n_nc_nc, /* 557 */
+ Parrot_div_p_p_p, /* 558 */
+ Parrot_div_p_p_i, /* 559 */
+ Parrot_div_p_p_ic, /* 560 */
+ Parrot_div_p_p_n, /* 561 */
+ Parrot_div_p_p_nc, /* 562 */
+ Parrot_fdiv_i_i, /* 563 */
+ Parrot_fdiv_i_ic, /* 564 */
+ Parrot_fdiv_n_n, /* 565 */
+ Parrot_fdiv_n_nc, /* 566 */
+ Parrot_fdiv_p_p, /* 567 */
+ Parrot_fdiv_p_i, /* 568 */
+ Parrot_fdiv_p_ic, /* 569 */
+ Parrot_fdiv_p_n, /* 570 */
+ Parrot_fdiv_p_nc, /* 571 */
+ Parrot_fdiv_i_i_i, /* 572 */
+ Parrot_fdiv_i_ic_i, /* 573 */
+ Parrot_fdiv_i_i_ic, /* 574 */
+ Parrot_fdiv_n_n_n, /* 575 */
+ Parrot_fdiv_n_nc_n, /* 576 */
+ Parrot_fdiv_n_n_nc, /* 577 */
+ Parrot_fdiv_p_p_p, /* 578 */
+ Parrot_fdiv_p_p_i, /* 579 */
+ Parrot_fdiv_p_p_ic, /* 580 */
+ Parrot_fdiv_p_p_n, /* 581 */
+ Parrot_fdiv_p_p_nc, /* 582 */
+ Parrot_ceil_n, /* 583 */
+ Parrot_ceil_i_n, /* 584 */
+ Parrot_ceil_n_n, /* 585 */
+ Parrot_floor_n, /* 586 */
+ Parrot_floor_i_n, /* 587 */
+ Parrot_floor_n_n, /* 588 */
+ Parrot_inc_i, /* 589 */
+ Parrot_inc_n, /* 590 */
+ Parrot_inc_p, /* 591 */
+ Parrot_mod_i_i, /* 592 */
+ Parrot_mod_i_ic, /* 593 */
+ Parrot_mod_n_n, /* 594 */
+ Parrot_mod_n_nc, /* 595 */
+ Parrot_mod_p_p, /* 596 */
+ Parrot_mod_p_i, /* 597 */
+ Parrot_mod_p_ic, /* 598 */
+ Parrot_mod_p_n, /* 599 */
+ Parrot_mod_p_nc, /* 600 */
+ Parrot_mod_i_i_i, /* 601 */
+ Parrot_mod_i_ic_i, /* 602 */
+ Parrot_mod_i_i_ic, /* 603 */
+ Parrot_mod_n_n_n, /* 604 */
+ Parrot_mod_n_nc_n, /* 605 */
+ Parrot_mod_n_n_nc, /* 606 */
+ Parrot_mod_p_p_p, /* 607 */
+ Parrot_mod_p_p_i, /* 608 */
+ Parrot_mod_p_p_ic, /* 609 */
+ Parrot_mod_p_p_n, /* 610 */
+ Parrot_mod_p_p_nc, /* 611 */
+ Parrot_mul_i_i, /* 612 */
+ Parrot_mul_i_ic, /* 613 */
+ Parrot_mul_n_n, /* 614 */
+ Parrot_mul_n_nc, /* 615 */
+ Parrot_mul_p_p, /* 616 */
+ Parrot_mul_p_i, /* 617 */
+ Parrot_mul_p_ic, /* 618 */
+ Parrot_mul_p_n, /* 619 */
+ Parrot_mul_p_nc, /* 620 */
+ Parrot_mul_i_i_i, /* 621 */
+ Parrot_mul_i_ic_i, /* 622 */
+ Parrot_mul_i_i_ic, /* 623 */
+ Parrot_mul_n_n_n, /* 624 */
+ Parrot_mul_n_nc_n, /* 625 */
+ Parrot_mul_n_n_nc, /* 626 */
+ Parrot_mul_p_p_p, /* 627 */
+ Parrot_mul_p_p_i, /* 628 */
+ Parrot_mul_p_p_ic, /* 629 */
+ Parrot_mul_p_p_n, /* 630 */
+ Parrot_mul_p_p_nc, /* 631 */
+ Parrot_neg_i, /* 632 */
+ Parrot_neg_n, /* 633 */
+ Parrot_neg_p, /* 634 */
+ Parrot_neg_i_i, /* 635 */
+ Parrot_neg_n_n, /* 636 */
+ Parrot_neg_p_p, /* 637 */
+ Parrot_pow_n_n_n, /* 638 */
+ Parrot_pow_n_nc_n, /* 639 */
+ Parrot_pow_n_n_nc, /* 640 */
+ Parrot_pow_p_p_p, /* 641 */
+ Parrot_pow_p_p_i, /* 642 */
+ Parrot_pow_p_p_ic, /* 643 */
+ Parrot_pow_p_p_n, /* 644 */
+ Parrot_pow_p_p_nc, /* 645 */
+ Parrot_pow_n_n_i, /* 646 */
+ Parrot_pow_n_nc_i, /* 647 */
+ Parrot_pow_n_n_ic, /* 648 */
+ Parrot_pow_n_nc_ic, /* 649 */
+ Parrot_sub_i_i, /* 650 */
+ Parrot_sub_i_ic, /* 651 */
+ Parrot_sub_n_n, /* 652 */
+ Parrot_sub_n_nc, /* 653 */
+ Parrot_sub_p_p, /* 654 */
+ Parrot_sub_p_i, /* 655 */
+ Parrot_sub_p_ic, /* 656 */
+ Parrot_sub_p_n, /* 657 */
+ Parrot_sub_p_nc, /* 658 */
+ Parrot_sub_i_i_i, /* 659 */
+ Parrot_sub_i_ic_i, /* 660 */
+ Parrot_sub_i_i_ic, /* 661 */
+ Parrot_sub_n_n_n, /* 662 */
+ Parrot_sub_n_nc_n, /* 663 */
+ Parrot_sub_n_n_nc, /* 664 */
+ Parrot_sub_p_p_p, /* 665 */
+ Parrot_sub_p_p_i, /* 666 */
+ Parrot_sub_p_p_ic, /* 667 */
+ Parrot_sub_p_p_n, /* 668 */
+ Parrot_sub_p_p_nc, /* 669 */
+ Parrot_sqrt_n_n, /* 670 */
+ Parrot_acos_n_n, /* 671 */
+ Parrot_asec_n_n, /* 672 */
+ Parrot_asin_n_n, /* 673 */
+ Parrot_atan_n_n, /* 674 */
+ Parrot_atan_n_n_n, /* 675 */
+ Parrot_atan_n_nc_n, /* 676 */
+ Parrot_atan_n_n_nc, /* 677 */
+ Parrot_cos_n_n, /* 678 */
+ Parrot_cosh_n_n, /* 679 */
+ Parrot_exp_n_n, /* 680 */
+ Parrot_ln_n_n, /* 681 */
+ Parrot_log10_n_n, /* 682 */
+ Parrot_log2_n_n, /* 683 */
+ Parrot_sec_n_n, /* 684 */
+ Parrot_sech_n_n, /* 685 */
+ Parrot_sin_n_n, /* 686 */
+ Parrot_sinh_n_n, /* 687 */
+ Parrot_tan_n_n, /* 688 */
+ Parrot_tanh_n_n, /* 689 */
+ Parrot_gcd_i_i_i, /* 690 */
+ Parrot_gcd_i_ic_i, /* 691 */
+ Parrot_gcd_i_i_ic, /* 692 */
+ Parrot_lcm_i_i_i, /* 693 */
+ Parrot_lcm_i_ic_i, /* 694 */
+ Parrot_lcm_i_i_ic, /* 695 */
+ Parrot_fact_i_i, /* 696 */
+ Parrot_fact_n_i, /* 697 */
+ Parrot_callmethodcc_p_s, /* 698 */
+ Parrot_callmethodcc_p_sc, /* 699 */
+ Parrot_callmethodcc_p_p, /* 700 */
+ Parrot_callmethod_p_s_p, /* 701 */
+ Parrot_callmethod_p_sc_p, /* 702 */
+ Parrot_callmethod_p_p_p, /* 703 */
+ Parrot_tailcallmethod_p_s, /* 704 */
+ Parrot_tailcallmethod_p_sc, /* 705 */
+ Parrot_tailcallmethod_p_p, /* 706 */
+ Parrot_addmethod_p_s_p, /* 707 */
+ Parrot_addmethod_p_sc_p, /* 708 */
+ Parrot_can_i_p_s, /* 709 */
+ Parrot_can_i_p_sc, /* 710 */
+ Parrot_does_i_p_s, /* 711 */
+ Parrot_does_i_p_sc, /* 712 */
+ Parrot_does_i_p_p, /* 713 */
+ Parrot_does_i_p_pc, /* 714 */
+ Parrot_isa_i_p_s, /* 715 */
+ Parrot_isa_i_p_sc, /* 716 */
+ Parrot_isa_i_p_p, /* 717 */
+ Parrot_isa_i_p_pc, /* 718 */
+ Parrot_newclass_p_s, /* 719 */
+ Parrot_newclass_p_sc, /* 720 */
+ Parrot_newclass_p_p, /* 721 */
+ Parrot_newclass_p_pc, /* 722 */
+ Parrot_subclass_p_p, /* 723 */
+ Parrot_subclass_p_pc, /* 724 */
+ Parrot_subclass_p_p_s, /* 725 */
+ Parrot_subclass_p_pc_s, /* 726 */
+ Parrot_subclass_p_p_sc, /* 727 */
+ Parrot_subclass_p_pc_sc, /* 728 */
+ Parrot_subclass_p_p_p, /* 729 */
+ Parrot_subclass_p_pc_p, /* 730 */
+ Parrot_subclass_p_p_pc, /* 731 */
+ Parrot_subclass_p_pc_pc, /* 732 */
+ Parrot_subclass_p_s, /* 733 */
+ Parrot_subclass_p_sc, /* 734 */
+ Parrot_subclass_p_s_s, /* 735 */
+ Parrot_subclass_p_sc_s, /* 736 */
+ Parrot_subclass_p_s_sc, /* 737 */
+ Parrot_subclass_p_sc_sc, /* 738 */
+ Parrot_subclass_p_s_p, /* 739 */
+ Parrot_subclass_p_sc_p, /* 740 */
+ Parrot_subclass_p_s_pc, /* 741 */
+ Parrot_subclass_p_sc_pc, /* 742 */
+ Parrot_get_class_p_s, /* 743 */
+ Parrot_get_class_p_sc, /* 744 */
+ Parrot_get_class_p_p, /* 745 */
+ Parrot_get_class_p_pc, /* 746 */
+ Parrot_class_p_p, /* 747 */
+ Parrot_addparent_p_p, /* 748 */
+ Parrot_removeparent_p_p, /* 749 */
+ Parrot_addrole_p_p, /* 750 */
+ Parrot_addattribute_p_s, /* 751 */
+ Parrot_addattribute_p_sc, /* 752 */
+ Parrot_removeattribute_p_s, /* 753 */
+ Parrot_removeattribute_p_sc, /* 754 */
+ Parrot_getattribute_p_p_s, /* 755 */
+ Parrot_getattribute_p_p_sc, /* 756 */
+ Parrot_getattribute_p_p_p_s, /* 757 */
+ Parrot_getattribute_p_p_pc_s, /* 758 */
+ Parrot_getattribute_p_p_p_sc, /* 759 */
+ Parrot_getattribute_p_p_pc_sc, /* 760 */
+ Parrot_setattribute_p_s_p, /* 761 */
+ Parrot_setattribute_p_sc_p, /* 762 */
+ Parrot_setattribute_p_p_s_p, /* 763 */
+ Parrot_setattribute_p_pc_s_p, /* 764 */
+ Parrot_setattribute_p_p_sc_p, /* 765 */
+ Parrot_setattribute_p_pc_sc_p, /* 766 */
+ Parrot_inspect_p_p, /* 767 */
+ Parrot_inspect_p_pc, /* 768 */
+ Parrot_inspect_p_p_s, /* 769 */
+ Parrot_inspect_p_pc_s, /* 770 */
+ Parrot_inspect_p_p_sc, /* 771 */
+ Parrot_inspect_p_pc_sc, /* 772 */
+ Parrot_new_p_s, /* 773 */
+ Parrot_new_p_sc, /* 774 */
+ Parrot_new_p_s_p, /* 775 */
+ Parrot_new_p_sc_p, /* 776 */
+ Parrot_new_p_s_pc, /* 777 */
+ Parrot_new_p_sc_pc, /* 778 */
+ Parrot_new_p_p, /* 779 */
+ Parrot_new_p_pc, /* 780 */
+ Parrot_new_p_p_p, /* 781 */
+ Parrot_new_p_pc_p, /* 782 */
+ Parrot_new_p_p_pc, /* 783 */
+ Parrot_new_p_pc_pc, /* 784 */
+ Parrot_root_new_p_p, /* 785 */
+ Parrot_root_new_p_pc, /* 786 */
+ Parrot_root_new_p_p_p, /* 787 */
+ Parrot_root_new_p_pc_p, /* 788 */
+ Parrot_root_new_p_p_pc, /* 789 */
+ Parrot_root_new_p_pc_pc, /* 790 */
+ Parrot_typeof_s_p, /* 791 */
+ Parrot_typeof_p_p, /* 792 */
+ Parrot_get_repr_s_p, /* 793 */
+ Parrot_find_method_p_p_s, /* 794 */
+ Parrot_find_method_p_p_sc, /* 795 */
+ Parrot_defined_i_p, /* 796 */
+ Parrot_defined_i_p_ki, /* 797 */
+ Parrot_defined_i_p_kic, /* 798 */
+ Parrot_defined_i_p_k, /* 799 */
+ Parrot_defined_i_p_kc, /* 800 */
+ Parrot_exists_i_p_ki, /* 801 */
+ Parrot_exists_i_p_kic, /* 802 */
+ Parrot_exists_i_p_k, /* 803 */
+ Parrot_exists_i_p_kc, /* 804 */
+ Parrot_delete_p_k, /* 805 */
+ Parrot_delete_p_kc, /* 806 */
+ Parrot_delete_p_ki, /* 807 */
+ Parrot_delete_p_kic, /* 808 */
+ Parrot_elements_i_p, /* 809 */
+ Parrot_push_p_i, /* 810 */
+ Parrot_push_p_ic, /* 811 */
+ Parrot_push_p_n, /* 812 */
+ Parrot_push_p_nc, /* 813 */
+ Parrot_push_p_s, /* 814 */
+ Parrot_push_p_sc, /* 815 */
+ Parrot_push_p_p, /* 816 */
+ Parrot_pop_i_p, /* 817 */
+ Parrot_pop_n_p, /* 818 */
+ Parrot_pop_s_p, /* 819 */
+ Parrot_pop_p_p, /* 820 */
+ Parrot_unshift_p_i, /* 821 */
+ Parrot_unshift_p_ic, /* 822 */
+ Parrot_unshift_p_n, /* 823 */
+ Parrot_unshift_p_nc, /* 824 */
+ Parrot_unshift_p_s, /* 825 */
+ Parrot_unshift_p_sc, /* 826 */
+ Parrot_unshift_p_p, /* 827 */
+ Parrot_shift_i_p, /* 828 */
+ Parrot_shift_n_p, /* 829 */
+ Parrot_shift_s_p, /* 830 */
+ Parrot_shift_p_p, /* 831 */
+ Parrot_splice_p_p_i_i, /* 832 */
+ Parrot_splice_p_p_ic_i, /* 833 */
+ Parrot_splice_p_p_i_ic, /* 834 */
+ Parrot_splice_p_p_ic_ic, /* 835 */
+ Parrot_setprop_p_s_p, /* 836 */
+ Parrot_setprop_p_sc_p, /* 837 */
+ Parrot_getprop_p_s_p, /* 838 */
+ Parrot_getprop_p_sc_p, /* 839 */
+ Parrot_delprop_p_s, /* 840 */
+ Parrot_delprop_p_sc, /* 841 */
+ Parrot_prophash_p_p, /* 842 */
+ Parrot_freeze_s_p, /* 843 */
+ Parrot_thaw_p_s, /* 844 */
+ Parrot_thaw_p_sc, /* 845 */
+ Parrot_add_multi_s_s_p, /* 846 */
+ Parrot_add_multi_sc_s_p, /* 847 */
+ Parrot_add_multi_s_sc_p, /* 848 */
+ Parrot_add_multi_sc_sc_p, /* 849 */
+ Parrot_find_multi_p_s_s, /* 850 */
+ Parrot_find_multi_p_sc_s, /* 851 */
+ Parrot_find_multi_p_s_sc, /* 852 */
+ Parrot_find_multi_p_sc_sc, /* 853 */
+ Parrot_register_p, /* 854 */
+ Parrot_unregister_p, /* 855 */
+ Parrot_box_p_i, /* 856 */
+ Parrot_box_p_ic, /* 857 */
+ Parrot_box_p_n, /* 858 */
+ Parrot_box_p_nc, /* 859 */
+ Parrot_box_p_s, /* 860 */
+ Parrot_box_p_sc, /* 861 */
+ Parrot_iter_p_p, /* 862 */
+ Parrot_morph_p_p, /* 863 */
+ Parrot_morph_p_pc, /* 864 */
+ Parrot_clone_s_s, /* 865 */
+ Parrot_clone_s_sc, /* 866 */
+ Parrot_exchange_i_i, /* 867 */
+ Parrot_exchange_p_p, /* 868 */
+ Parrot_exchange_n_n, /* 869 */
+ Parrot_exchange_s_s, /* 870 */
+ Parrot_set_i_i, /* 871 */
+ Parrot_set_i_ic, /* 872 */
+ Parrot_set_i_n, /* 873 */
+ Parrot_set_i_nc, /* 874 */
+ Parrot_set_i_s, /* 875 */
+ Parrot_set_i_sc, /* 876 */
+ Parrot_set_n_n, /* 877 */
+ Parrot_set_n_nc, /* 878 */
+ Parrot_set_n_i, /* 879 */
+ Parrot_set_n_ic, /* 880 */
+ Parrot_set_n_s, /* 881 */
+ Parrot_set_n_sc, /* 882 */
+ Parrot_set_n_p, /* 883 */
+ Parrot_set_s_p, /* 884 */
+ Parrot_set_s_s, /* 885 */
+ Parrot_set_s_sc, /* 886 */
+ Parrot_set_s_i, /* 887 */
+ Parrot_set_s_ic, /* 888 */
+ Parrot_set_s_n, /* 889 */
+ Parrot_set_s_nc, /* 890 */
+ Parrot_set_p_pc, /* 891 */
+ Parrot_set_p_p, /* 892 */
+ Parrot_set_p_i, /* 893 */
+ Parrot_set_p_ic, /* 894 */
+ Parrot_set_p_n, /* 895 */
+ Parrot_set_p_nc, /* 896 */
+ Parrot_set_p_s, /* 897 */
+ Parrot_set_p_sc, /* 898 */
+ Parrot_set_i_p, /* 899 */
+ Parrot_assign_p_p, /* 900 */
+ Parrot_assign_p_i, /* 901 */
+ Parrot_assign_p_ic, /* 902 */
+ Parrot_assign_p_n, /* 903 */
+ Parrot_assign_p_nc, /* 904 */
+ Parrot_assign_p_s, /* 905 */
+ Parrot_assign_p_sc, /* 906 */
+ Parrot_assign_s_s, /* 907 */
+ Parrot_assign_s_sc, /* 908 */
+ Parrot_setref_p_p, /* 909 */
+ Parrot_deref_p_p, /* 910 */
+ Parrot_setp_ind_i_p, /* 911 */
+ Parrot_setp_ind_ic_p, /* 912 */
+ Parrot_setn_ind_i_n, /* 913 */
+ Parrot_setn_ind_ic_n, /* 914 */
+ Parrot_setn_ind_i_nc, /* 915 */
+ Parrot_setn_ind_ic_nc, /* 916 */
+ Parrot_sets_ind_i_s, /* 917 */
+ Parrot_sets_ind_ic_s, /* 918 */
+ Parrot_sets_ind_i_sc, /* 919 */
+ Parrot_sets_ind_ic_sc, /* 920 */
+ Parrot_seti_ind_i_i, /* 921 */
+ Parrot_seti_ind_ic_i, /* 922 */
+ Parrot_seti_ind_i_ic, /* 923 */
+ Parrot_seti_ind_ic_ic, /* 924 */
+ Parrot_set_p_ki_i, /* 925 */
+ Parrot_set_p_kic_i, /* 926 */
+ Parrot_set_p_ki_ic, /* 927 */
+ Parrot_set_p_kic_ic, /* 928 */
+ Parrot_set_p_ki_n, /* 929 */
+ Parrot_set_p_kic_n, /* 930 */
+ Parrot_set_p_ki_nc, /* 931 */
+ Parrot_set_p_kic_nc, /* 932 */
+ Parrot_set_p_ki_s, /* 933 */
+ Parrot_set_p_kic_s, /* 934 */
+ Parrot_set_p_ki_sc, /* 935 */
+ Parrot_set_p_kic_sc, /* 936 */
+ Parrot_set_p_ki_p, /* 937 */
+ Parrot_set_p_kic_p, /* 938 */
+ Parrot_set_i_p_ki, /* 939 */
+ Parrot_set_i_p_kic, /* 940 */
+ Parrot_set_n_p_ki, /* 941 */
+ Parrot_set_n_p_kic, /* 942 */
+ Parrot_set_s_p_ki, /* 943 */
+ Parrot_set_s_p_kic, /* 944 */
+ Parrot_set_p_p_ki, /* 945 */
+ Parrot_set_p_p_kic, /* 946 */
+ Parrot_set_p_k_i, /* 947 */
+ Parrot_set_p_kc_i, /* 948 */
+ Parrot_set_p_k_ic, /* 949 */
+ Parrot_set_p_kc_ic, /* 950 */
+ Parrot_set_p_k_n, /* 951 */
+ Parrot_set_p_kc_n, /* 952 */
+ Parrot_set_p_k_nc, /* 953 */
+ Parrot_set_p_kc_nc, /* 954 */
+ Parrot_set_p_k_s, /* 955 */
+ Parrot_set_p_kc_s, /* 956 */
+ Parrot_set_p_k_sc, /* 957 */
+ Parrot_set_p_kc_sc, /* 958 */
+ Parrot_set_p_k_p, /* 959 */
+ Parrot_set_p_kc_p, /* 960 */
+ Parrot_set_i_p_k, /* 961 */
+ Parrot_set_i_p_kc, /* 962 */
+ Parrot_set_n_p_k, /* 963 */
+ Parrot_set_n_p_kc, /* 964 */
+ Parrot_set_s_p_k, /* 965 */
+ Parrot_set_s_p_kc, /* 966 */
+ Parrot_set_p_p_k, /* 967 */
+ Parrot_set_p_p_kc, /* 968 */
+ Parrot_clone_p_p, /* 969 */
+ Parrot_clone_p_p_p, /* 970 */
+ Parrot_clone_p_p_pc, /* 971 */
+ Parrot_copy_p_p, /* 972 */
+ Parrot_null_s, /* 973 */
+ Parrot_null_i, /* 974 */
+ Parrot_null_p, /* 975 */
+ Parrot_null_n, /* 976 */
+ Parrot_cleari, /* 977 */
+ Parrot_clearn, /* 978 */
+ Parrot_clears, /* 979 */
+ Parrot_clearp, /* 980 */
+ Parrot_ord_i_s, /* 981 */
+ Parrot_ord_i_sc, /* 982 */
+ Parrot_ord_i_s_i, /* 983 */
+ Parrot_ord_i_sc_i, /* 984 */
+ Parrot_ord_i_s_ic, /* 985 */
+ Parrot_ord_i_sc_ic, /* 986 */
+ Parrot_chr_s_i, /* 987 */
+ Parrot_chr_s_ic, /* 988 */
+ Parrot_chopn_s_s_i, /* 989 */
+ Parrot_chopn_s_sc_i, /* 990 */
+ Parrot_chopn_s_s_ic, /* 991 */
+ Parrot_chopn_s_sc_ic, /* 992 */
+ Parrot_concat_s_s, /* 993 */
+ Parrot_concat_s_sc, /* 994 */
+ Parrot_concat_p_p, /* 995 */
+ Parrot_concat_p_s, /* 996 */
+ Parrot_concat_p_sc, /* 997 */
+ Parrot_concat_s_s_s, /* 998 */
+ Parrot_concat_s_sc_s, /* 999 */
+ Parrot_concat_s_s_sc, /* 1000 */
+ Parrot_concat_p_p_s, /* 1001 */
+ Parrot_concat_p_p_sc, /* 1002 */
+ Parrot_concat_p_p_p, /* 1003 */
+ Parrot_repeat_s_s_i, /* 1004 */
+ Parrot_repeat_s_sc_i, /* 1005 */
+ Parrot_repeat_s_s_ic, /* 1006 */
+ Parrot_repeat_s_sc_ic, /* 1007 */
+ Parrot_repeat_p_p_i, /* 1008 */
+ Parrot_repeat_p_p_ic, /* 1009 */
+ Parrot_repeat_p_p_p, /* 1010 */
+ Parrot_repeat_p_i, /* 1011 */
+ Parrot_repeat_p_ic, /* 1012 */
+ Parrot_repeat_p_p, /* 1013 */
+ Parrot_length_i_s, /* 1014 */
+ Parrot_length_i_sc, /* 1015 */
+ Parrot_bytelength_i_s, /* 1016 */
+ Parrot_bytelength_i_sc, /* 1017 */
+ Parrot_pin_s, /* 1018 */
+ Parrot_unpin_s, /* 1019 */
+ Parrot_substr_s_s_i, /* 1020 */
+ Parrot_substr_s_sc_i, /* 1021 */
+ Parrot_substr_s_s_ic, /* 1022 */
+ Parrot_substr_s_sc_ic, /* 1023 */
+ Parrot_substr_s_s_i_i, /* 1024 */
+ Parrot_substr_s_sc_i_i, /* 1025 */
+ Parrot_substr_s_s_ic_i, /* 1026 */
+ Parrot_substr_s_sc_ic_i, /* 1027 */
+ Parrot_substr_s_s_i_ic, /* 1028 */
+ Parrot_substr_s_sc_i_ic, /* 1029 */
+ Parrot_substr_s_s_ic_ic, /* 1030 */
+ Parrot_substr_s_sc_ic_ic, /* 1031 */
+ Parrot_substr_s_p_i_i, /* 1032 */
+ Parrot_substr_s_p_ic_i, /* 1033 */
+ Parrot_substr_s_p_i_ic, /* 1034 */
+ Parrot_substr_s_p_ic_ic, /* 1035 */
+ Parrot_replace_s_s_i_i_s, /* 1036 */
+ Parrot_replace_s_sc_i_i_s, /* 1037 */
+ Parrot_replace_s_s_ic_i_s, /* 1038 */
+ Parrot_replace_s_sc_ic_i_s, /* 1039 */
+ Parrot_replace_s_s_i_ic_s, /* 1040 */
+ Parrot_replace_s_sc_i_ic_s, /* 1041 */
+ Parrot_replace_s_s_ic_ic_s, /* 1042 */
+ Parrot_replace_s_sc_ic_ic_s, /* 1043 */
+ Parrot_replace_s_s_i_i_sc, /* 1044 */
+ Parrot_replace_s_sc_i_i_sc, /* 1045 */
+ Parrot_replace_s_s_ic_i_sc, /* 1046 */
+ Parrot_replace_s_sc_ic_i_sc, /* 1047 */
+ Parrot_replace_s_s_i_ic_sc, /* 1048 */
+ Parrot_replace_s_sc_i_ic_sc, /* 1049 */
+ Parrot_replace_s_s_ic_ic_sc, /* 1050 */
+ Parrot_replace_s_sc_ic_ic_sc, /* 1051 */
+ Parrot_index_i_s_s, /* 1052 */
+ Parrot_index_i_sc_s, /* 1053 */
+ Parrot_index_i_s_sc, /* 1054 */
+ Parrot_index_i_sc_sc, /* 1055 */
+ Parrot_index_i_s_s_i, /* 1056 */
+ Parrot_index_i_sc_s_i, /* 1057 */
+ Parrot_index_i_s_sc_i, /* 1058 */
+ Parrot_index_i_sc_sc_i, /* 1059 */
+ Parrot_index_i_s_s_ic, /* 1060 */
+ Parrot_index_i_sc_s_ic, /* 1061 */
+ Parrot_index_i_s_sc_ic, /* 1062 */
+ Parrot_index_i_sc_sc_ic, /* 1063 */
+ Parrot_sprintf_s_s_p, /* 1064 */
+ Parrot_sprintf_s_sc_p, /* 1065 */
+ Parrot_sprintf_p_p_p, /* 1066 */
+ Parrot_new_s, /* 1067 */
+ Parrot_new_s_i, /* 1068 */
+ Parrot_new_s_ic, /* 1069 */
+ Parrot_stringinfo_i_s_i, /* 1070 */
+ Parrot_stringinfo_i_sc_i, /* 1071 */
+ Parrot_stringinfo_i_s_ic, /* 1072 */
+ Parrot_stringinfo_i_sc_ic, /* 1073 */
+ Parrot_upcase_s_s, /* 1074 */
+ Parrot_upcase_s_sc, /* 1075 */
+ Parrot_downcase_s_s, /* 1076 */
+ Parrot_downcase_s_sc, /* 1077 */
+ Parrot_titlecase_s_s, /* 1078 */
+ Parrot_titlecase_s_sc, /* 1079 */
+ Parrot_join_s_s_p, /* 1080 */
+ Parrot_join_s_sc_p, /* 1081 */
+ Parrot_split_p_s_s, /* 1082 */
+ Parrot_split_p_sc_s, /* 1083 */
+ Parrot_split_p_s_sc, /* 1084 */
+ Parrot_split_p_sc_sc, /* 1085 */
+ Parrot_charset_i_s, /* 1086 */
+ Parrot_charset_i_sc, /* 1087 */
+ Parrot_charsetname_s_i, /* 1088 */
+ Parrot_charsetname_s_ic, /* 1089 */
+ Parrot_find_charset_i_s, /* 1090 */
+ Parrot_find_charset_i_sc, /* 1091 */
+ Parrot_trans_charset_s_s_i, /* 1092 */
+ Parrot_trans_charset_s_sc_i, /* 1093 */
+ Parrot_trans_charset_s_s_ic, /* 1094 */
+ Parrot_trans_charset_s_sc_ic, /* 1095 */
+ Parrot_encoding_i_s, /* 1096 */
+ Parrot_encoding_i_sc, /* 1097 */
+ Parrot_encodingname_s_i, /* 1098 */
+ Parrot_encodingname_s_ic, /* 1099 */
+ Parrot_find_encoding_i_s, /* 1100 */
+ Parrot_find_encoding_i_sc, /* 1101 */
+ Parrot_trans_encoding_s_s_i, /* 1102 */
+ Parrot_trans_encoding_s_sc_i, /* 1103 */
+ Parrot_trans_encoding_s_s_ic, /* 1104 */
+ Parrot_trans_encoding_s_sc_ic, /* 1105 */
+ Parrot_is_cclass_i_i_s_i, /* 1106 */
+ Parrot_is_cclass_i_ic_s_i, /* 1107 */
+ Parrot_is_cclass_i_i_sc_i, /* 1108 */
+ Parrot_is_cclass_i_ic_sc_i, /* 1109 */
+ Parrot_is_cclass_i_i_s_ic, /* 1110 */
+ Parrot_is_cclass_i_ic_s_ic, /* 1111 */
+ Parrot_is_cclass_i_i_sc_ic, /* 1112 */
+ Parrot_is_cclass_i_ic_sc_ic, /* 1113 */
+ Parrot_find_cclass_i_i_s_i_i, /* 1114 */
+ Parrot_find_cclass_i_ic_s_i_i, /* 1115 */
+ Parrot_find_cclass_i_i_sc_i_i, /* 1116 */
+ Parrot_find_cclass_i_ic_sc_i_i, /* 1117 */
+ Parrot_find_cclass_i_i_s_ic_i, /* 1118 */
+ Parrot_find_cclass_i_ic_s_ic_i, /* 1119 */
+ Parrot_find_cclass_i_i_sc_ic_i, /* 1120 */
+ Parrot_find_cclass_i_ic_sc_ic_i, /* 1121 */
+ Parrot_find_cclass_i_i_s_i_ic, /* 1122 */
+ Parrot_find_cclass_i_ic_s_i_ic, /* 1123 */
+ Parrot_find_cclass_i_i_sc_i_ic, /* 1124 */
+ Parrot_find_cclass_i_ic_sc_i_ic, /* 1125 */
+ Parrot_find_cclass_i_i_s_ic_ic, /* 1126 */
+ Parrot_find_cclass_i_ic_s_ic_ic, /* 1127 */
+ Parrot_find_cclass_i_i_sc_ic_ic, /* 1128 */
+ Parrot_find_cclass_i_ic_sc_ic_ic, /* 1129 */
+ Parrot_find_not_cclass_i_i_s_i_i, /* 1130 */
+ Parrot_find_not_cclass_i_ic_s_i_i, /* 1131 */
+ Parrot_find_not_cclass_i_i_sc_i_i, /* 1132 */
+ Parrot_find_not_cclass_i_ic_sc_i_i, /* 1133 */
+ Parrot_find_not_cclass_i_i_s_ic_i, /* 1134 */
+ Parrot_find_not_cclass_i_ic_s_ic_i, /* 1135 */
+ Parrot_find_not_cclass_i_i_sc_ic_i, /* 1136 */
+ Parrot_find_not_cclass_i_ic_sc_ic_i, /* 1137 */
+ Parrot_find_not_cclass_i_i_s_i_ic, /* 1138 */
+ Parrot_find_not_cclass_i_ic_s_i_ic, /* 1139 */
+ Parrot_find_not_cclass_i_i_sc_i_ic, /* 1140 */
+ Parrot_find_not_cclass_i_ic_sc_i_ic, /* 1141 */
+ Parrot_find_not_cclass_i_i_s_ic_ic, /* 1142 */
+ Parrot_find_not_cclass_i_ic_s_ic_ic, /* 1143 */
+ Parrot_find_not_cclass_i_i_sc_ic_ic, /* 1144 */
+ Parrot_find_not_cclass_i_ic_sc_ic_ic, /* 1145 */
+ Parrot_escape_s_s, /* 1146 */
+ Parrot_compose_s_s, /* 1147 */
+ Parrot_compose_s_sc, /* 1148 */
+ Parrot_spawnw_i_s, /* 1149 */
+ Parrot_spawnw_i_sc, /* 1150 */
+ Parrot_spawnw_i_p, /* 1151 */
+ Parrot_err_i, /* 1152 */
+ Parrot_err_s, /* 1153 */
+ Parrot_err_s_i, /* 1154 */
+ Parrot_err_s_ic, /* 1155 */
+ Parrot_time_i, /* 1156 */
+ Parrot_time_n, /* 1157 */
+ Parrot_gmtime_s_i, /* 1158 */
+ Parrot_gmtime_s_ic, /* 1159 */
+ Parrot_localtime_s_i, /* 1160 */
+ Parrot_localtime_s_ic, /* 1161 */
+ Parrot_decodetime_p_i, /* 1162 */
+ Parrot_decodetime_p_ic, /* 1163 */
+ Parrot_decodelocaltime_p_i, /* 1164 */
+ Parrot_decodelocaltime_p_ic, /* 1165 */
+ Parrot_sysinfo_s_i, /* 1166 */
+ Parrot_sysinfo_s_ic, /* 1167 */
+ Parrot_sysinfo_i_i, /* 1168 */
+ Parrot_sysinfo_i_ic, /* 1169 */
+ Parrot_sleep_i, /* 1170 */
+ Parrot_sleep_ic, /* 1171 */
+ Parrot_sleep_n, /* 1172 */
+ Parrot_sleep_nc, /* 1173 */
+ Parrot_sizeof_i_i, /* 1174 */
+ Parrot_sizeof_i_ic, /* 1175 */
+ Parrot_store_lex_s_p, /* 1176 */
+ Parrot_store_lex_sc_p, /* 1177 */
+ Parrot_store_dynamic_lex_s_p, /* 1178 */
+ Parrot_store_dynamic_lex_sc_p, /* 1179 */
+ Parrot_find_lex_p_s, /* 1180 */
+ Parrot_find_lex_p_sc, /* 1181 */
+ Parrot_find_dynamic_lex_p_s, /* 1182 */
+ Parrot_find_dynamic_lex_p_sc, /* 1183 */
+ Parrot_find_caller_lex_p_s, /* 1184 */
+ Parrot_find_caller_lex_p_sc, /* 1185 */
+ Parrot_get_namespace_p, /* 1186 */
+ Parrot_get_namespace_p_p, /* 1187 */
+ Parrot_get_namespace_p_pc, /* 1188 */
+ Parrot_get_hll_namespace_p, /* 1189 */
+ Parrot_get_hll_namespace_p_p, /* 1190 */
+ Parrot_get_hll_namespace_p_pc, /* 1191 */
+ Parrot_get_root_namespace_p, /* 1192 */
+ Parrot_get_root_namespace_p_p, /* 1193 */
+ Parrot_get_root_namespace_p_pc, /* 1194 */
+ Parrot_get_global_p_s, /* 1195 */
+ Parrot_get_global_p_sc, /* 1196 */
+ Parrot_get_global_p_p_s, /* 1197 */
+ Parrot_get_global_p_pc_s, /* 1198 */
+ Parrot_get_global_p_p_sc, /* 1199 */
+ Parrot_get_global_p_pc_sc, /* 1200 */
+ Parrot_get_hll_global_p_s, /* 1201 */
+ Parrot_get_hll_global_p_sc, /* 1202 */
+ Parrot_get_hll_global_p_p_s, /* 1203 */
+ Parrot_get_hll_global_p_pc_s, /* 1204 */
+ Parrot_get_hll_global_p_p_sc, /* 1205 */
+ Parrot_get_hll_global_p_pc_sc, /* 1206 */
+ Parrot_get_root_global_p_s, /* 1207 */
+ Parrot_get_root_global_p_sc, /* 1208 */
+ Parrot_get_root_global_p_p_s, /* 1209 */
+ Parrot_get_root_global_p_pc_s, /* 1210 */
+ Parrot_get_root_global_p_p_sc, /* 1211 */
+ Parrot_get_root_global_p_pc_sc, /* 1212 */
+ Parrot_set_global_s_p, /* 1213 */
+ Parrot_set_global_sc_p, /* 1214 */
+ Parrot_set_global_p_s_p, /* 1215 */
+ Parrot_set_global_pc_s_p, /* 1216 */
+ Parrot_set_global_p_sc_p, /* 1217 */
+ Parrot_set_global_pc_sc_p, /* 1218 */
+ Parrot_set_hll_global_s_p, /* 1219 */
+ Parrot_set_hll_global_sc_p, /* 1220 */
+ Parrot_set_hll_global_p_s_p, /* 1221 */
+ Parrot_set_hll_global_pc_s_p, /* 1222 */
+ Parrot_set_hll_global_p_sc_p, /* 1223 */
+ Parrot_set_hll_global_pc_sc_p, /* 1224 */
+ Parrot_set_root_global_s_p, /* 1225 */
+ Parrot_set_root_global_sc_p, /* 1226 */
+ Parrot_set_root_global_p_s_p, /* 1227 */
+ Parrot_set_root_global_pc_s_p, /* 1228 */
+ Parrot_set_root_global_p_sc_p, /* 1229 */
+ Parrot_set_root_global_pc_sc_p, /* 1230 */
+ Parrot_find_name_p_s, /* 1231 */
+ Parrot_find_name_p_sc, /* 1232 */
+ Parrot_find_sub_not_null_p_s, /* 1233 */
+ Parrot_find_sub_not_null_p_sc, /* 1234 */
+ Parrot_trap, /* 1235 */
+ Parrot_fetch_p_p_p_p, /* 1236 */
+ Parrot_fetch_p_pc_p_p, /* 1237 */
+ Parrot_fetch_p_p_pc_p, /* 1238 */
+ Parrot_fetch_p_pc_pc_p, /* 1239 */
+ Parrot_fetch_p_p_p_pc, /* 1240 */
+ Parrot_fetch_p_pc_p_pc, /* 1241 */
+ Parrot_fetch_p_p_pc_pc, /* 1242 */
+ Parrot_fetch_p_pc_pc_pc, /* 1243 */
+ Parrot_fetch_p_p_i_p, /* 1244 */
+ Parrot_fetch_p_pc_i_p, /* 1245 */
+ Parrot_fetch_p_p_ic_p, /* 1246 */
+ Parrot_fetch_p_pc_ic_p, /* 1247 */
+ Parrot_fetch_p_p_i_pc, /* 1248 */
+ Parrot_fetch_p_pc_i_pc, /* 1249 */
+ Parrot_fetch_p_p_ic_pc, /* 1250 */
+ Parrot_fetch_p_pc_ic_pc, /* 1251 */
+ Parrot_fetch_p_p_s_p, /* 1252 */
+ Parrot_fetch_p_pc_s_p, /* 1253 */
+ Parrot_fetch_p_p_sc_p, /* 1254 */
+ Parrot_fetch_p_pc_sc_p, /* 1255 */
+ Parrot_fetch_p_p_s_pc, /* 1256 */
+ Parrot_fetch_p_pc_s_pc, /* 1257 */
+ Parrot_fetch_p_p_sc_pc, /* 1258 */
+ Parrot_fetch_p_pc_sc_pc, /* 1259 */
+ Parrot_vivify_p_p_p_p, /* 1260 */
+ Parrot_vivify_p_pc_p_p, /* 1261 */
+ Parrot_vivify_p_p_pc_p, /* 1262 */
+ Parrot_vivify_p_pc_pc_p, /* 1263 */
+ Parrot_vivify_p_p_p_pc, /* 1264 */
+ Parrot_vivify_p_pc_p_pc, /* 1265 */
+ Parrot_vivify_p_p_pc_pc, /* 1266 */
+ Parrot_vivify_p_pc_pc_pc, /* 1267 */
+ Parrot_vivify_p_p_i_p, /* 1268 */
+ Parrot_vivify_p_pc_i_p, /* 1269 */
+ Parrot_vivify_p_p_ic_p, /* 1270 */
+ Parrot_vivify_p_pc_ic_p, /* 1271 */
+ Parrot_vivify_p_p_i_pc, /* 1272 */
+ Parrot_vivify_p_pc_i_pc, /* 1273 */
+ Parrot_vivify_p_p_ic_pc, /* 1274 */
+ Parrot_vivify_p_pc_ic_pc, /* 1275 */
+ Parrot_vivify_p_p_s_p, /* 1276 */
+ Parrot_vivify_p_pc_s_p, /* 1277 */
+ Parrot_vivify_p_p_sc_p, /* 1278 */
+ Parrot_vivify_p_pc_sc_p, /* 1279 */
+ Parrot_vivify_p_p_s_pc, /* 1280 */
+ Parrot_vivify_p_pc_s_pc, /* 1281 */
+ Parrot_vivify_p_p_sc_pc, /* 1282 */
+ Parrot_vivify_p_pc_sc_pc, /* 1283 */
+ Parrot_new_p_s_i, /* 1284 */
+ Parrot_new_p_sc_i, /* 1285 */
+ Parrot_new_p_s_ic, /* 1286 */
+ Parrot_new_p_sc_ic, /* 1287 */
+ Parrot_new_p_p_i, /* 1288 */
+ Parrot_new_p_pc_i, /* 1289 */
+ Parrot_new_p_p_ic, /* 1290 */
+ Parrot_new_p_pc_ic, /* 1291 */
+ Parrot_root_new_p_p_i, /* 1292 */
+ Parrot_root_new_p_pc_i, /* 1293 */
+ Parrot_root_new_p_p_ic, /* 1294 */
+ Parrot_root_new_p_pc_ic, /* 1295 */
NULL /* NULL function pointer */
};
@@ -17139,9 +16944,9 @@
PARROT_FUNCTION_CORE, /* core_type = PARROT_XX_CORE */
0, /* flags */
2, /* major_version */
- 1, /* minor_version */
+ 3, /* minor_version */
0, /* patch_version */
- 1311, /* op_count */
+ 1296, /* op_count */
core_op_info_table, /* op_info_table */
core_op_func_table, /* op_func_table */
get_op /* op_code() */
@@ -17153,28 +16958,32 @@
opcode_t *
Parrot_end(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/core.ops"
return (opcode_t *)0;
}
opcode_t *
Parrot_noop(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/core.ops"
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_check_events(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t *next = cur_opcode + 1;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 96 "src/ops/core.ops"
+ opcode_t * const next = cur_opcode + 1;
Parrot_cx_check_tasks(interp, interp->scheduler);
return (opcode_t *)next; /* force this being a branch op */
}
opcode_t *
Parrot_check_events__(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t *_this = CUR_OPCODE;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/core.ops"
+ opcode_t * const _this = CUR_OPCODE;
/* Restore op_func_table. */
disable_event_checking(interp);
Parrot_cx_handle_tasks(interp, interp->scheduler);
@@ -17183,7 +16992,8 @@
opcode_t *
Parrot_wrapper__(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 110 "src/ops/core.ops"
opcode_t *pc = CUR_OPCODE;
DO_OP(pc, interp);
return (opcode_t *)pc;
@@ -17191,52 +17001,59 @@
opcode_t *
Parrot_load_bytecode_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 116 "src/ops/core.ops"
Parrot_load_bytecode(interp, SREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_load_bytecode_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 116 "src/ops/core.ops"
Parrot_load_bytecode(interp, CONST(1)->u.string);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_load_language_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/core.ops"
Parrot_load_language(interp, SREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_load_language_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/core.ops"
Parrot_load_language(interp, CONST(1)->u.string);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_branch_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "src/ops/core.ops"
return (opcode_t *)cur_opcode + IREG(1);
}
opcode_t *
Parrot_branch_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "src/ops/core.ops"
return (opcode_t *)cur_opcode + cur_opcode[1];
}
opcode_t *
Parrot_local_branch_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 167 "src/ops/core.ops"
INTVAL return_addr;
- opcode_t *dest = cur_opcode + 3;
+ opcode_t * const dest = cur_opcode + 3;
if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
- opcode_t * handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Must pass a valid integer array to 'local_branch'");
return (opcode_t *)handler;
@@ -17250,12 +17067,13 @@
opcode_t *
Parrot_local_branch_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 167 "src/ops/core.ops"
INTVAL return_addr;
- opcode_t *dest = cur_opcode + 3;
+ opcode_t * const dest = cur_opcode + 3;
if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
- opcode_t * handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Must pass a valid integer array to 'local_branch'");
return (opcode_t *)handler;
@@ -17269,13 +17087,14 @@
opcode_t *
Parrot_local_return_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 190 "src/ops/core.ops"
INTVAL return_addr;
opcode_t *next;
- opcode_t *dest = cur_opcode + 2;
+ opcode_t * const dest = cur_opcode + 2;
if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Must pass a valid integer array to 'local_return'");
return (opcode_t *)handler;
@@ -17287,7 +17106,7 @@
/* The return address must be within the current code segment. */
if (! (next >= interp->code->base.data
&& next < (interp->code->base.data + interp->code->base.size))) {
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_INVALID_OPERATION,
"Address for 'local_return' must be within the current code segment");
return (opcode_t *)handler;
@@ -17298,21 +17117,24 @@
opcode_t *
Parrot_jump_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/core.ops"
opcode_t * const loc = INTVAL2PTR(opcode_t *, IREG(1));
return (opcode_t *)loc;
}
opcode_t *
Parrot_jump_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/core.ops"
opcode_t * const loc = INTVAL2PTR(opcode_t *, cur_opcode[1]);
return (opcode_t *)loc;
}
opcode_t *
Parrot_enternative(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 238 "src/ops/core.ops"
opcode_t * const addr = run_native(interp, CUR_OPCODE,
interp->code->base.data);
return (opcode_t *)addr;
@@ -17320,7 +17142,8 @@
opcode_t *
Parrot_if_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 273 "src/ops/core.ops"
if (IREG(1) != 0)
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17328,7 +17151,8 @@
opcode_t *
Parrot_if_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/core.ops"
if (!FLOAT_IS_ZERO(NREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17336,7 +17160,8 @@
opcode_t *
Parrot_if_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 283 "src/ops/core.ops"
if (Parrot_str_boolean(interp, SREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17344,7 +17169,8 @@
opcode_t *
Parrot_if_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 288 "src/ops/core.ops"
if (VTABLE_get_bool(interp, PREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17352,7 +17178,8 @@
opcode_t *
Parrot_unless_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 307 "src/ops/core.ops"
if (IREG(1) == 0)
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17360,7 +17187,8 @@
opcode_t *
Parrot_unless_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/core.ops"
if (FLOAT_IS_ZERO(NREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17368,7 +17196,8 @@
opcode_t *
Parrot_unless_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/core.ops"
if (!Parrot_str_boolean(interp, SREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17376,7 +17205,8 @@
opcode_t *
Parrot_unless_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 322 "src/ops/core.ops"
if (!VTABLE_get_bool(interp, PREG(1)))
return (opcode_t *)cur_opcode + cur_opcode[2];
@@ -17384,11 +17214,15 @@
opcode_t *
Parrot_invokecc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 377 "src/ops/core.ops"
PMC * const p = PREG(1);
opcode_t *dest = cur_opcode + 2;
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = NULL;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, NULL);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, p, dest);
@@ -17397,11 +17231,15 @@
opcode_t *
Parrot_invoke_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/core.ops"
opcode_t *dest = cur_opcode + 3;
PMC * const p = PREG(1);
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = NULL;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, NULL);
interp->current_cont = PREG(2);
dest = VTABLE_invoke(interp, p, dest);
@@ -17410,7 +17248,8 @@
opcode_t *
Parrot_yield(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 405 "src/ops/core.ops"
opcode_t *dest = cur_opcode + 1;
PMC * const p = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
@@ -17422,7 +17261,8 @@
opcode_t *
Parrot_tailcall_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/core.ops"
PMC * const p = PREG(1);
opcode_t *dest = cur_opcode + 2;
PMC * const ctx = CURRENT_CONTEXT(interp);
@@ -17440,7 +17280,8 @@
opcode_t *
Parrot_returncc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/core.ops"
PMC * const p = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
opcode_t * const dest = VTABLE_invoke(interp, p, cur_opcode + 1);
return (opcode_t *)dest;
@@ -17448,21 +17289,24 @@
opcode_t *
Parrot_capture_lex_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 437 "src/ops/core.ops"
Parrot_capture_lex(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_newclosure_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/core.ops"
PREG(1) = parrot_new_closure(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_args_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/core.ops"
opcode_t * const raw_args = CUR_OPCODE;
PMC * const signature = CONST(1)->u.key;
PMC * call_sig;
@@ -17477,72 +17321,97 @@
}
opcode_t *
-Parrot_get_results_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * const raw_returns = CUR_OPCODE;
- PMC * const signature = CONST(1)->u.key;
- PMC * call_sig;
+Parrot_get_params_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/core.ops"
+ opcode_t * const raw_params = CUR_OPCODE;
+ PMC * const signature = CONST(1)->u.key;
+ PMC * const ctx = CURRENT_CONTEXT(interp);
+ PMC * const ccont = Parrot_pcc_get_continuation(interp, ctx);
+ PMC * const caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, caller_ctx);
INTVAL argc;
- call_sig = Parrot_pcc_build_sig_object_returns_from_op(interp,
- Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp)),
- signature, raw_returns);
- Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_sig);
+ Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params,
+ PARROT_ERRORS_PARAM_COUNT_FLAG);
+ /* TODO Factor out with Sub.invoke */
+ if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
+ PObj_get_FLAGS(ccont) &= ~SUB_FLAG_TAILCALL;
+ Parrot_pcc_dec_recursion_depth(interp, ctx);
+ Parrot_pcc_set_caller_ctx(interp, ctx, Parrot_pcc_get_caller_ctx(interp, caller_ctx));
+ }
argc = VTABLE_elements(interp, signature);
return (opcode_t *)cur_opcode + argc + 2;
}
opcode_t *
-Parrot_get_params_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * const raw_params = CUR_OPCODE;
- PMC *caller_ctx, *ctx;
- PMC *ccont, *call_object;
- PMC * const signature = CONST(1)->u.key;
+Parrot_set_returns_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/core.ops"
+ opcode_t * const raw_args = CUR_OPCODE;
+ PMC * const signature = CONST(1)->u.key;
+ PMC * const call_sig = Parrot_pcc_build_sig_object_from_op(interp,
+ Parrot_pcc_get_signature(interp,
+ Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp))),
+ signature, raw_args);
INTVAL argc;
- ctx = CURRENT_CONTEXT(interp);
- ccont = Parrot_pcc_get_continuation(interp, ctx);
-
- caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
- call_object = Parrot_pcc_get_signature(interp, caller_ctx);
+ Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_sig);
- Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params);
+ argc = VTABLE_elements(interp, signature);
+ return (opcode_t *)cur_opcode + argc + 2;
+}
+
+opcode_t *
+Parrot_get_results_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 530 "src/ops/core.ops"
+ opcode_t * const raw_params = CUR_OPCODE;
+ PMC * const signature = CONST(1)->u.key;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *ccont = Parrot_pcc_get_continuation(interp, ctx);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+
+ INTVAL argc;
+
+ Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params,
+ PARROT_ERRORS_RESULT_COUNT_FLAG);
- /* TODO Factor out with Sub.invoke */
- if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
- PObj_get_FLAGS(ccont) &= ~SUB_FLAG_TAILCALL;
- Parrot_pcc_dec_recursion_depth(interp, ctx);
- Parrot_pcc_set_caller_ctx(interp, ctx, Parrot_pcc_get_caller_ctx(interp, caller_ctx));
- }
argc = VTABLE_elements(interp, signature);
return (opcode_t *)cur_opcode + argc + 2;
}
opcode_t *
-Parrot_set_returns_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * const raw_returns = CUR_OPCODE;
- PMC *signature = CONST(1)->u.key;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *caller_ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
- PMC *call_object = Parrot_pcc_get_signature(interp, caller_ctx);
- INTVAL argc = VTABLE_elements(interp, signature);
+Parrot_set_result_info_p(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/core.ops"
+ PMC * const ctx = CURRENT_CONTEXT(interp);
- Parrot_pcc_fill_returns_from_op(interp, call_object, signature, raw_returns);
+ VTABLE_set_attr_str(interp, ctx,
+ Parrot_str_new_constant(interp, "return_flags"),
+ PREG(1));
- Parrot_pcc_set_signature(interp, ctx, NULL);
+return (opcode_t *)cur_opcode + 2;}
- return (opcode_t *)cur_opcode + argc + 2;
-}
+opcode_t *
+Parrot_set_result_info_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/core.ops"
+ PMC * const ctx = CURRENT_CONTEXT(interp);
+
+ VTABLE_set_attr_str(interp, ctx,
+ Parrot_str_new_constant(interp, "return_flags"),
+ CONST(1)->u.key);
+
+return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_result_info_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC *caller_ctx = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
- PMC *call_object = Parrot_pcc_get_signature(interp, caller_ctx);
- PMC *sig = VTABLE_get_attr_str(interp, call_object,
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "src/ops/core.ops"
+ PMC * const caller_ctx = Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
+ PMC * const sig = VTABLE_get_attr_str(interp, caller_ctx,
Parrot_str_new_constant(interp, "return_flags"));
/* If no elements, hand back empty array; otherwise PMC. */
@@ -17555,28 +17424,32 @@
opcode_t *
Parrot_set_addr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 609 "src/ops/core.ops"
IREG(1) = PTR2INTVAL(CUR_OPCODE + cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_addr_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 613 "src/ops/core.ops"
VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_addr_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 617 "src/ops/core.ops"
VTABLE_set_pointer(interp, PREG(1), (void*)IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_get_addr_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/core.ops"
void *ptr = VTABLE_get_pointer(interp, PREG(2));
IREG(1) = (INTVAL)ptr;
@@ -17584,21 +17457,24 @@
opcode_t *
Parrot_schedule_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/core.ops"
Parrot_cx_schedule_task(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_addhandler_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 654 "src/ops/core.ops"
Parrot_cx_add_handler(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_push_eh_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 716 "src/ops/core.ops"
PMC * const eh = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
VTABLE_set_pointer(interp, eh, CUR_OPCODE + cur_opcode[1]);
Parrot_cx_add_handler_local(interp, eh);
@@ -17607,14 +17483,16 @@
opcode_t *
Parrot_push_eh_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 722 "src/ops/core.ops"
Parrot_cx_add_handler_local(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_pop_eh(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 726 "src/ops/core.ops"
Parrot_cx_delete_handler_local(interp,
Parrot_str_new_constant(interp, "exception"));
@@ -17622,11 +17500,15 @@
opcode_t *
Parrot_throw_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/core.ops"
PMC * except = PREG(1);
opcode_t *dest;
- opcode_t *const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
+ opcode_t * const ret = cur_opcode + 2;
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+
+ VTABLE_set_pointer(interp, resume, ret);
+
if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
EXCEPTION_UNIMPLEMENTED,
@@ -17639,7 +17521,8 @@
opcode_t *
Parrot_throw_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 749 "src/ops/core.ops"
opcode_t * dest;
PMC * except = PREG(1);
if (PMC_IS_NULL(except) || except->vtable->base_type != enum_class_Exception)
@@ -17653,11 +17536,12 @@
opcode_t *
Parrot_rethrow_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 761 "src/ops/core.ops"
opcode_t * dest;
if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_Exception) {
- opcode_t * const ret = cur_opcode + 2;
- PMC * except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
+ opcode_t * const ret = cur_opcode + 2;
+ PMC * const except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
EXCEPTION_UNIMPLEMENTED,
Parrot_str_new_constant(interp, "Not a throwable object"));
dest = Parrot_ex_throw_from_op(interp, except, ret);
@@ -17669,7 +17553,8 @@
opcode_t *
Parrot_count_eh_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 775 "src/ops/core.ops"
IREG(1) = Parrot_cx_count_handlers_local(interp,
Parrot_str_new_constant(interp, "exception"));
@@ -17677,13 +17562,16 @@
opcode_t *
Parrot_die_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 780 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_error,
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
CONTROL_ERROR, SREG(1));
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -17692,13 +17580,16 @@
opcode_t *
Parrot_die_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 780 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_error,
+ 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);
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -17707,15 +17598,17 @@
opcode_t *
Parrot_die_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 795 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- STRING *msg = PMC_IS_NULL(PREG(1))
- ? NULL : VTABLE_get_string(interp, PREG(1));
- PMC *exception =
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ STRING * const msg = PMC_IS_NULL(PREG(1)) ? NULL : VTABLE_get_string(interp, PREG(1));
+ PMC * const exception =
Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -17724,15 +17617,17 @@
opcode_t *
Parrot_die_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 795 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- STRING *msg = PMC_IS_NULL(CONST(1)->u.key)
- ? NULL : VTABLE_get_string(interp, CONST(1)->u.key);
- PMC *exception =
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ STRING * const msg = PMC_IS_NULL(CONST(1)->u.key) ? NULL : VTABLE_get_string(interp, CONST(1)->u.key);
+ PMC * const exception =
Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
dest = Parrot_ex_throw_from_op(interp, exception, ret);
@@ -17741,72 +17636,75 @@
opcode_t *
Parrot_die_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
if (IREG(1) == EXCEPT_doomed)
_exit(IREG(2));
else {
opcode_t * const ret = cur_opcode + 3;
- PMC *exception = Parrot_ex_build_exception(interp, IREG(1),
- IREG(2), NULL);
- opcode_t * const dest = Parrot_ex_throw_from_op(interp,
- exception, ret);
+ PMC * const exception = Parrot_ex_build_exception(interp, IREG(1), IREG(2), NULL);
+ opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);
+
return (opcode_t *)dest;
}
}
opcode_t *
Parrot_die_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
if (cur_opcode[1] == EXCEPT_doomed)
_exit(IREG(2));
else {
opcode_t * const ret = cur_opcode + 3;
- PMC *exception = Parrot_ex_build_exception(interp, cur_opcode[1],
- IREG(2), NULL);
- opcode_t * const dest = Parrot_ex_throw_from_op(interp,
- exception, ret);
+ PMC * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], IREG(2), NULL);
+ opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);
+
return (opcode_t *)dest;
}
}
opcode_t *
Parrot_die_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
if (IREG(1) == EXCEPT_doomed)
_exit(cur_opcode[2]);
else {
opcode_t * const ret = cur_opcode + 3;
- PMC *exception = Parrot_ex_build_exception(interp, IREG(1),
- cur_opcode[2], NULL);
- opcode_t * const dest = Parrot_ex_throw_from_op(interp,
- exception, ret);
+ PMC * const exception = Parrot_ex_build_exception(interp, IREG(1), cur_opcode[2], NULL);
+ opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);
+
return (opcode_t *)dest;
}
}
opcode_t *
Parrot_die_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/core.ops"
if (cur_opcode[1] == EXCEPT_doomed)
_exit(cur_opcode[2]);
else {
opcode_t * const ret = cur_opcode + 3;
- PMC *exception = Parrot_ex_build_exception(interp, cur_opcode[1],
- cur_opcode[2], NULL);
- opcode_t * const dest = Parrot_ex_throw_from_op(interp,
- exception, ret);
+ PMC * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], cur_opcode[2], NULL);
+ opcode_t * const dest = Parrot_ex_throw_from_op(interp, exception, ret);
+
return (opcode_t *)dest;
}
}
opcode_t *
Parrot_exit_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 823 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_exit,
- IREG(1), NULL);
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, IREG(1), NULL);
+
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
VTABLE_set_integer_keyed_str(interp, exception,
@@ -17817,12 +17715,15 @@
opcode_t *
Parrot_exit_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 823 "src/ops/core.ops"
opcode_t *dest;
opcode_t * const ret = cur_opcode + 2;
- PMC *resume = new_ret_continuation_pmc(interp, ret);
- PMC *exception = Parrot_ex_build_exception(interp, EXCEPT_exit,
- cur_opcode[1], NULL);
+ PMC * const resume = pmc_new(interp, enum_class_Continuation);
+ PMC * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, cur_opcode[1], NULL);
+
+ VTABLE_set_pointer(interp, resume, ret);
+
VTABLE_set_attr_str(interp, exception,
Parrot_str_new_constant(interp, "resume"), resume);
VTABLE_set_integer_keyed_str(interp, exception,
@@ -17832,79 +17733,9 @@
}
opcode_t *
-Parrot_pushmark_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, newint, IREG(1));
- VTABLE_push_pmc(interp, interp->dynamic_env, newint);
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
-Parrot_pushmark_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, newint, cur_opcode[1]);
- VTABLE_push_pmc(interp, interp->dynamic_env, newint);
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
-Parrot_popmark_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * dest;
- opcode_t * const ret = cur_opcode + 2;
- int found = 0;
- while (VTABLE_elements(interp, interp->dynamic_env)) {
- PMC * const item = VTABLE_pop_pmc(interp, interp->dynamic_env);
- if (item->vtable->base_type == enum_class_Integer
- && VTABLE_get_integer(interp, item) == IREG(1)) {
- found = 1;
- break;
- }
-
- else if (item->vtable->base_type == enum_class_Sub
- || item->vtable->base_type == enum_class_NCI)
- Parrot_pcc_invoke_sub_from_c_args(interp, item, "I->", 0);
- }
- if (!found)
- dest = Parrot_ex_throw_from_op_args(interp, ret, 1, "Mark %d not found", IREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
-Parrot_popmark_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- opcode_t * dest;
- opcode_t * const ret = cur_opcode + 2;
- int found = 0;
- while (VTABLE_elements(interp, interp->dynamic_env)) {
- PMC * const item = VTABLE_pop_pmc(interp, interp->dynamic_env);
- if (item->vtable->base_type == enum_class_Integer
- && VTABLE_get_integer(interp, item) == cur_opcode[1]) {
- found = 1;
- break;
- }
-
- else if (item->vtable->base_type == enum_class_Sub
- || item->vtable->base_type == enum_class_NCI)
- Parrot_pcc_invoke_sub_from_c_args(interp, item, "I->", 0);
- }
- if (!found)
- dest = Parrot_ex_throw_from_op_args(interp, ret, 1, "Mark %d not found", cur_opcode[1]);
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
-Parrot_pushaction_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_push_pmc(interp, interp->dynamic_env, PREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
Parrot_debug_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 862 "src/ops/core.ops"
if (IREG(1) != 0) { Interp_debug_SET(interp, IREG(1)); }
else { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17912,7 +17743,8 @@
opcode_t *
Parrot_debug_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 862 "src/ops/core.ops"
if (cur_opcode[1] != 0) { Interp_debug_SET(interp, cur_opcode[1]); }
else { Interp_debug_CLEAR(interp, PARROT_ALL_DEBUG_FLAGS); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17920,7 +17752,8 @@
opcode_t *
Parrot_bounds_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 877 "src/ops/core.ops"
if (IREG(1) != 0) { Parrot_set_flag(interp, PARROT_BOUNDS_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17928,7 +17761,8 @@
opcode_t *
Parrot_bounds_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 877 "src/ops/core.ops"
if (cur_opcode[1] != 0) { Parrot_set_flag(interp, PARROT_BOUNDS_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_BOUNDS_FLAG); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17936,7 +17770,8 @@
opcode_t *
Parrot_profile_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "src/ops/core.ops"
if (IREG(1) != 0) { Parrot_set_flag(interp, PARROT_PROFILE_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17944,7 +17779,8 @@
opcode_t *
Parrot_profile_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "src/ops/core.ops"
if (cur_opcode[1] != 0) { Parrot_set_flag(interp, PARROT_PROFILE_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_PROFILE_FLAG); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17952,7 +17788,8 @@
opcode_t *
Parrot_trace_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "src/ops/core.ops"
if (IREG(1) != 0) { Parrot_set_trace(interp, IREG(1)); }
else { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17960,7 +17797,8 @@
opcode_t *
Parrot_trace_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "src/ops/core.ops"
if (cur_opcode[1] != 0) { Parrot_set_trace(interp, cur_opcode[1]); }
else { Parrot_clear_trace(interp, PARROT_ALL_TRACE_FLAGS); }
interp->resume_offset = REL_PC + 2; interp->resume_flag = 1; return (opcode_t *)0;
@@ -17968,7 +17806,8 @@
opcode_t *
Parrot_gc_debug_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 921 "src/ops/core.ops"
if (IREG(1) != 0) { Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
@@ -17976,7 +17815,8 @@
opcode_t *
Parrot_gc_debug_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 921 "src/ops/core.ops"
if (cur_opcode[1] != 0) { Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG); }
else { Interp_flags_CLEAR(interp, PARROT_GC_DEBUG_FLAG); }
@@ -17984,107 +17824,122 @@
opcode_t *
Parrot_interpinfo_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 955 "src/ops/core.ops"
IREG(1) = interpinfo(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_interpinfo_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 955 "src/ops/core.ops"
IREG(1) = interpinfo(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_interpinfo_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 959 "src/ops/core.ops"
PREG(1) = interpinfo_p(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_interpinfo_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 959 "src/ops/core.ops"
PREG(1) = interpinfo_p(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_interpinfo_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * s = interpinfo_s(interp, IREG(2));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 963 "src/ops/core.ops"
+ STRING * const s = interpinfo_s(interp, IREG(2));
SREG(1) = s;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_interpinfo_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * s = interpinfo_s(interp, cur_opcode[2]);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 963 "src/ops/core.ops"
+ STRING * const s = interpinfo_s(interp, cur_opcode[2]);
SREG(1) = s;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_warningson_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 983 "src/ops/core.ops"
PARROT_WARNINGS_on(interp, IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_warningson_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 983 "src/ops/core.ops"
PARROT_WARNINGS_on(interp, cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_warningsoff_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/core.ops"
PARROT_WARNINGS_off(interp, IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_warningsoff_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/core.ops"
PARROT_WARNINGS_off(interp, cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_errorson_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1030 "src/ops/core.ops"
PARROT_ERRORS_on(interp, IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_errorson_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1030 "src/ops/core.ops"
PARROT_ERRORS_on(interp, cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_errorsoff_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1042 "src/ops/core.ops"
PARROT_ERRORS_off(interp, IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_errorsoff_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1042 "src/ops/core.ops"
PARROT_ERRORS_off(interp, cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_runinterp_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1058 "src/ops/core.ops"
Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, PREG(1));
Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
Parrot_switch_to_cs(new_interp, interp->code, 1);
@@ -18094,7 +17949,8 @@
opcode_t *
Parrot_runinterp_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1058 "src/ops/core.ops"
Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, PREG(1));
Interp_flags_SET(new_interp, PARROT_EXTERN_CODE_FLAG);
Parrot_switch_to_cs(new_interp, interp->code, 1);
@@ -18104,7 +17960,8 @@
opcode_t *
Parrot_getinterp_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1065 "src/ops/core.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
IGLOBALS_INTERPRETER);
@@ -18112,7 +17969,8 @@
opcode_t *
Parrot_sweep_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1109 "src/ops/core.ops"
if (cur_opcode[1])
Parrot_gc_mark_and_sweep(interp, 0);
else
@@ -18123,63 +17981,104 @@
opcode_t *
Parrot_collect(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1123 "src/ops/core.ops"
Parrot_gc_compact_memory_pool(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_sweepoff(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1133 "src/ops/core.ops"
Parrot_block_GC_mark(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_sweepon(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1143 "src/ops/core.ops"
Parrot_unblock_GC_mark(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_collectoff(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1153 "src/ops/core.ops"
Parrot_block_GC_sweep(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_collecton(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1163 "src/ops/core.ops"
Parrot_unblock_GC_sweep(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_needs_destroy_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1174 "src/ops/core.ops"
Parrot_gc_pmc_needs_early_collection(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_loadlib_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1243 "src/ops/core.ops"
PREG(1) = Parrot_load_lib(interp, SREG(2), NULL);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_loadlib_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1243 "src/ops/core.ops"
PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, NULL);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
+Parrot_loadlib_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
+ PREG(1) = Parrot_load_lib(interp, SREG(2), PREG(3));
+
+return (opcode_t *)cur_opcode + 4;}
+
+opcode_t *
+Parrot_loadlib_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
+ PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, PREG(3));
+
+return (opcode_t *)cur_opcode + 4;}
+
+opcode_t *
+Parrot_loadlib_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
+ PREG(1) = Parrot_load_lib(interp, SREG(2), CONST(3)->u.key);
+
+return (opcode_t *)cur_opcode + 4;}
+
+opcode_t *
+Parrot_loadlib_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1247 "src/ops/core.ops"
+ PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, CONST(3)->u.key);
+
+return (opcode_t *)cur_opcode + 4;}
+
+opcode_t *
Parrot_dlfunc_p_p_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (SREG(3)));
void *dl_handle = NULL;
void *ptr = NULL;
@@ -18213,7 +18112,8 @@
opcode_t *
Parrot_dlfunc_p_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
void *dl_handle = NULL;
void *ptr = NULL;
@@ -18247,7 +18147,8 @@
opcode_t *
Parrot_dlfunc_p_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (SREG(3)));
void *dl_handle = NULL;
void *ptr = NULL;
@@ -18281,7 +18182,8 @@
opcode_t *
Parrot_dlfunc_p_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1251 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
void *dl_handle = NULL;
void *ptr = NULL;
@@ -18315,13 +18217,13 @@
opcode_t *
Parrot_dlvar_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1282 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (SREG(3)));
void * p = NULL;
- void *dl_handle = NULL;
if (!PMC_IS_NULL(PREG(2)) && PREG(2)->vtable->base_type == enum_class_ParrotLibrary) {
- dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
+ void * const dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
p = Parrot_dlsym(PMC_IS_NULL(PREG(2)) ? NULL : dl_handle, name);
}
if (p == NULL) {
@@ -18342,13 +18244,13 @@
opcode_t *
Parrot_dlvar_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1282 "src/ops/core.ops"
char * const name = Parrot_str_to_cstring(interp, (CONST(3)->u.string));
void * p = NULL;
- void *dl_handle = NULL;
if (!PMC_IS_NULL(PREG(2)) && PREG(2)->vtable->base_type == enum_class_ParrotLibrary) {
- dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
+ void * const dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
p = Parrot_dlsym(PMC_IS_NULL(PREG(2)) ? NULL : dl_handle, name);
}
if (p == NULL) {
@@ -18369,7 +18271,8 @@
opcode_t *
Parrot_compreg_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1305 "src/ops/core.ops"
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
VTABLE_set_pmc_keyed_str(interp, compreg_hash, SREG(1), PREG(2));
@@ -18378,7 +18281,8 @@
opcode_t *
Parrot_compreg_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1305 "src/ops/core.ops"
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
VTABLE_set_pmc_keyed_str(interp, compreg_hash, CONST(1)->u.string, PREG(2));
@@ -18387,7 +18291,8 @@
opcode_t *
Parrot_compreg_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1311 "src/ops/core.ops"
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, SREG(2));
@@ -18396,7 +18301,8 @@
opcode_t *
Parrot_compreg_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1311 "src/ops/core.ops"
PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
interp->iglobals, IGLOBALS_COMPREG_HASH);
PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, CONST(2)->u.string);
@@ -18405,23 +18311,26 @@
opcode_t *
Parrot_new_callback_p_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1317 "src/ops/core.ops"
PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), SREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_new_callback_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1317 "src/ops/core.ops"
PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4)->u.string);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_annotations_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1344 "src/ops/core.ops"
if (interp->code->annotations) {
- opcode_t const cur_pos = (cur_opcode + 2) - interp->code->base.data;
+ const opcode_t cur_pos = (cur_opcode + 2) - interp->code->base.data;
PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
cur_pos, NULL);
}
@@ -18433,9 +18342,10 @@
opcode_t *
Parrot_annotations_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1362 "src/ops/core.ops"
if (interp->code->annotations) {
- opcode_t const cur_pos = (cur_opcode + 3) - interp->code->base.data;
+ const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
cur_pos, SREG(2));
}
@@ -18447,9 +18357,10 @@
opcode_t *
Parrot_annotations_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1362 "src/ops/core.ops"
if (interp->code->annotations) {
- opcode_t const cur_pos = (cur_opcode + 3) - interp->code->base.data;
+ const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
cur_pos, CONST(2)->u.string);
}
@@ -18461,21 +18372,24 @@
opcode_t *
Parrot_band_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/bit.ops"
IREG(1) &= IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_band_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/bit.ops"
IREG(1) &= cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_band_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = a & IREG(2);
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18484,7 +18398,8 @@
opcode_t *
Parrot_band_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = a & cur_opcode[2];
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18493,7 +18408,8 @@
opcode_t *
Parrot_band_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a & b);
@@ -18502,28 +18418,32 @@
opcode_t *
Parrot_band_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
IREG(1) = IREG(2) & IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_band_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
IREG(1) = cur_opcode[2] & IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_band_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/bit.ops"
IREG(1) = IREG(2) & cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_band_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 82 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a & IREG(3));
@@ -18531,7 +18451,8 @@
opcode_t *
Parrot_band_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 82 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a & cur_opcode[3]);
@@ -18539,7 +18460,8 @@
opcode_t *
Parrot_band_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 87 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = VTABLE_get_integer(interp, PREG(3));
VTABLE_set_integer_native(interp, PREG(1), a & b);
@@ -18547,113 +18469,111 @@
return (opcode_t *)cur_opcode + 4;}
opcode_t *
-Parrot_bands_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_and(interp, SREG(1), SREG(2), &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_bands_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_and(interp, SREG(1), CONST(2)->u.string, &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_bands_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(1));
- STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(2), NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(2));
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bands_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(1));
- STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(2)->u.string, NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(2)->u.string);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bands_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/bit.ops"
STRING * a = VTABLE_get_string(interp, PREG(1));
- STRING * b = VTABLE_get_string(interp, PREG(2));
- a = Parrot_str_bitwise_and(interp, a, b, NULL);
+ STRING * const b = VTABLE_get_string(interp, PREG(2));
+ a = Parrot_str_bitwise_and(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), a);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bands_s_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bands_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_and(interp, CONST(2)->u.string, SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_and(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bands_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), CONST(3)->u.string, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 124 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_and(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bands_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 128 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(2));
- STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(3), NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, SREG(3));
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bands_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 128 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(2));
- STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(3)->u.string, NULL);
+ STRING * const b = Parrot_str_bitwise_and(interp, a, CONST(3)->u.string);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bands_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 134 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(2));
STRING * const b = VTABLE_get_string(interp, PREG(3));
- STRING * const c = Parrot_str_bitwise_and(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_and(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bnot_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 155 "src/ops/bit.ops"
IREG(1) = ~ IREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_bnot_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 159 "src/ops/bit.ops"
IREG(1) = ~ IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bnot_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 163 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
VTABLE_set_integer_native(interp, PREG(1), ~a);
@@ -18661,7 +18581,8 @@
opcode_t *
Parrot_bnot_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 168 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
PMC * const b = Parrot_pmc_new(interp, VTABLE_type(interp, PREG(2)));
VTABLE_set_integer_native(interp, b, ~a);
@@ -18670,61 +18591,61 @@
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_bnots_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_not(interp, SREG(1), &SREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
Parrot_bnots_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_not(interp, SREG(2), &SREG(1));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 183 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_not(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bnots_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_not(interp, CONST(2)->u.string, &SREG(1));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 183 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_not(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bnots_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * a = VTABLE_get_string(interp, PREG(1));
- STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(1));
+ STRING * const b = Parrot_str_bitwise_not(interp, a);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_bnots_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * a = VTABLE_get_string(interp, PREG(2));
- STRING * b = Parrot_str_bitwise_not(interp, a, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(2));
+ STRING * const b = Parrot_str_bitwise_not(interp, a);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bor_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 221 "src/ops/bit.ops"
IREG(1) |= IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bor_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 221 "src/ops/bit.ops"
IREG(1) |= cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bor_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
VTABLE_set_integer_native(interp, PREG(1), a | IREG(2));
@@ -18732,7 +18653,8 @@
opcode_t *
Parrot_bor_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 225 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[2]);
@@ -18740,7 +18662,8 @@
opcode_t *
Parrot_bor_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 230 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a | b);
@@ -18749,28 +18672,32 @@
opcode_t *
Parrot_bor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
IREG(1) = IREG(2) | IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
IREG(1) = cur_opcode[2] | IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/bit.ops"
IREG(1) = IREG(2) | cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bor_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 240 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a | IREG(3));
@@ -18778,7 +18705,8 @@
opcode_t *
Parrot_bor_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 240 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
VTABLE_set_integer_native(interp, PREG(1), a | cur_opcode[3]);
@@ -18786,7 +18714,8 @@
opcode_t *
Parrot_bor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = VTABLE_get_integer(interp, PREG(3));
VTABLE_set_integer_native(interp, PREG(1), a | b);
@@ -18794,113 +18723,111 @@
return (opcode_t *)cur_opcode + 4;}
opcode_t *
-Parrot_bors_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_or(interp, SREG(1), SREG(2), &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_bors_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_or(interp, SREG(1), CONST(2)->u.string, &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_bors_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 269 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(1));
- STRING * const b = Parrot_str_bitwise_or(interp, a, SREG(2), NULL);
+ STRING * const b = Parrot_str_bitwise_or(interp, a, SREG(2));
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bors_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 269 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(1));
- STRING * const b = Parrot_str_bitwise_or(interp, a, CONST(2)->u.string, NULL);
+ STRING * const b = Parrot_str_bitwise_or(interp, a, CONST(2)->u.string);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bors_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(1));
STRING * const b = VTABLE_get_string(interp, PREG(2));
- STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bors_s_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bors_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_or(interp, CONST(2)->u.string, SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_or(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bors_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), CONST(3)->u.string, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_or(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bors_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/bit.ops"
STRING * const b = VTABLE_get_string(interp, PREG(2));
- STRING * const c = Parrot_str_bitwise_or(interp, b, SREG(3), NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, b, SREG(3));
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bors_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/bit.ops"
STRING * const b = VTABLE_get_string(interp, PREG(2));
- STRING * const c = Parrot_str_bitwise_or(interp, b, CONST(3)->u.string, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, b, CONST(3)->u.string);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bors_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/bit.ops"
STRING * const a = VTABLE_get_string(interp, PREG(2));
STRING * const b = VTABLE_get_string(interp, PREG(3));
- STRING * const c = Parrot_str_bitwise_or(interp, a, b, NULL);
+ STRING * const c = Parrot_str_bitwise_or(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shl_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 319 "src/ops/bit.ops"
IREG(1) = bit_shift_left(IREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shl_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 319 "src/ops/bit.ops"
IREG(1) = bit_shift_left(IREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shl_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 323 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = bit_shift_left(a, IREG(2));
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18909,7 +18836,8 @@
opcode_t *
Parrot_shl_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 323 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = bit_shift_left(a, cur_opcode[2]);
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18918,7 +18846,8 @@
opcode_t *
Parrot_shl_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 329 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = VTABLE_get_integer(interp, PREG(2));
const INTVAL c = bit_shift_left(a, b);
@@ -18928,28 +18857,32 @@
opcode_t *
Parrot_shl_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
IREG(1) = bit_shift_left(IREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shl_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
IREG(1) = bit_shift_left(cur_opcode[2], IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shl_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 336 "src/ops/bit.ops"
IREG(1) = bit_shift_left(IREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_shl_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 340 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = bit_shift_left(a, IREG(3));
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18958,7 +18891,8 @@
opcode_t *
Parrot_shl_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 340 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = bit_shift_left(a, cur_opcode[3]);
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -18967,7 +18901,8 @@
opcode_t *
Parrot_shl_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 346 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = VTABLE_get_integer(interp, PREG(3));
const INTVAL c = bit_shift_left(a, b);
@@ -18977,7 +18912,8 @@
opcode_t *
Parrot_shr_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 373 "src/ops/bit.ops"
const INTVAL signed_shift = -IREG(2);
IREG(1) = bit_shift_left(IREG(1), signed_shift);
@@ -18985,7 +18921,8 @@
opcode_t *
Parrot_shr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 373 "src/ops/bit.ops"
const INTVAL signed_shift = -cur_opcode[2];
IREG(1) = bit_shift_left(IREG(1), signed_shift);
@@ -18993,7 +18930,8 @@
opcode_t *
Parrot_shr_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = bit_shift_left(a, -IREG(2));
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -19002,7 +18940,8 @@
opcode_t *
Parrot_shr_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = bit_shift_left(a, -cur_opcode[2]);
VTABLE_set_integer_native(interp, PREG(1), b);
@@ -19011,7 +18950,8 @@
opcode_t *
Parrot_shr_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 384 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(1));
const INTVAL b = VTABLE_get_integer(interp, PREG(2));
const INTVAL c = bit_shift_left(a, -b);
@@ -19021,7 +18961,8 @@
opcode_t *
Parrot_shr_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
const INTVAL signed_shift = -IREG(3);
IREG(1) = bit_shift_left(IREG(2), signed_shift);
@@ -19029,7 +18970,8 @@
opcode_t *
Parrot_shr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
const INTVAL signed_shift = -IREG(3);
IREG(1) = bit_shift_left(cur_opcode[2], signed_shift);
@@ -19037,7 +18979,8 @@
opcode_t *
Parrot_shr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/bit.ops"
const INTVAL signed_shift = -cur_opcode[3];
IREG(1) = bit_shift_left(IREG(2), signed_shift);
@@ -19045,7 +18988,8 @@
opcode_t *
Parrot_shr_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 396 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL c = bit_shift_left(a, -IREG(3));
VTABLE_set_integer_native(interp, PREG(1), c);
@@ -19054,7 +18998,8 @@
opcode_t *
Parrot_shr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 396 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL c = bit_shift_left(a, -cur_opcode[3]);
VTABLE_set_integer_native(interp, PREG(1), c);
@@ -19063,7 +19008,8 @@
opcode_t *
Parrot_shr_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "src/ops/bit.ops"
const INTVAL a = VTABLE_get_integer(interp, PREG(2));
const INTVAL b = VTABLE_get_integer(interp, PREG(3));
const INTVAL c = bit_shift_left(a, -b);
@@ -19073,7 +19019,8 @@
opcode_t *
Parrot_lsr_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)IREG(1);
const UINTVAL b = a >> IREG(2);
IREG(1) = (INTVAL)b;
@@ -19082,7 +19029,8 @@
opcode_t *
Parrot_lsr_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)IREG(1);
const UINTVAL b = a >> cur_opcode[2];
IREG(1) = (INTVAL)b;
@@ -19091,7 +19039,8 @@
opcode_t *
Parrot_lsr_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = a >> IREG(2);
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19100,7 +19049,8 @@
opcode_t *
Parrot_lsr_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = a >> cur_opcode[2];
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19109,7 +19059,8 @@
opcode_t *
Parrot_lsr_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL c = a >> b;
@@ -19119,28 +19070,32 @@
opcode_t *
Parrot_lsr_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_lsr_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
IREG(1) = (INTVAL)((UINTVAL)cur_opcode[2] >> IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_lsr_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/bit.ops"
IREG(1) = (INTVAL)((UINTVAL)IREG(2) >> cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_lsr_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 452 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = (UINTVAL)IREG(3);
const UINTVAL c = a >> b;
@@ -19150,7 +19105,8 @@
opcode_t *
Parrot_lsr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 452 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = (UINTVAL)cur_opcode[3];
const UINTVAL c = a >> b;
@@ -19160,7 +19116,8 @@
opcode_t *
Parrot_lsr_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(3));
const UINTVAL c = a >> b;
@@ -19170,7 +19127,8 @@
opcode_t *
Parrot_rot_i_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
const INTVAL r = IREG(2);
INTVAL s = IREG(3);
const INTVAL w = cur_opcode[4];
@@ -19187,7 +19145,8 @@
opcode_t *
Parrot_rot_i_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
const INTVAL r = cur_opcode[2];
INTVAL s = IREG(3);
const INTVAL w = cur_opcode[4];
@@ -19204,7 +19163,8 @@
opcode_t *
Parrot_rot_i_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/bit.ops"
const INTVAL r = IREG(2);
INTVAL s = cur_opcode[3];
const INTVAL w = cur_opcode[4];
@@ -19221,21 +19181,24 @@
opcode_t *
Parrot_bxor_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/bit.ops"
IREG(1) ^= IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bxor_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/bit.ops"
IREG(1) ^= cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bxor_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = a ^ IREG(2);
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19244,7 +19207,8 @@
opcode_t *
Parrot_bxor_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = a ^ cur_opcode[2];
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19253,7 +19217,8 @@
opcode_t *
Parrot_bxor_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 521 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(1));
const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL c = a ^ b;
@@ -19263,28 +19228,32 @@
opcode_t *
Parrot_bxor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
IREG(1) = IREG(2) ^ IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
IREG(1) = cur_opcode[2] ^ IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/bit.ops"
IREG(1) = IREG(2) ^ cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxor_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = a ^ IREG(3);
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19293,7 +19262,8 @@
opcode_t *
Parrot_bxor_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = a ^ cur_opcode[3];
VTABLE_set_integer_native(interp, PREG(1), (INTVAL)b);
@@ -19302,7 +19272,8 @@
opcode_t *
Parrot_bxor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 538 "src/ops/bit.ops"
const UINTVAL a = (UINTVAL)VTABLE_get_integer(interp, PREG(2));
const UINTVAL b = (UINTVAL)VTABLE_get_integer(interp, PREG(3));
const UINTVAL c = a ^ b;
@@ -19311,99 +19282,95 @@
return (opcode_t *)cur_opcode + 4;}
opcode_t *
-Parrot_bxors_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_xor(interp, SREG(1), SREG(2), &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_bxors_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_bitwise_xor(interp, SREG(1), CONST(2)->u.string, &SREG(1));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_bxors_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(1));
- STRING *b = Parrot_str_bitwise_xor(interp, a, SREG(2), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 563 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(1));
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, SREG(2));
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bxors_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(1));
- STRING *b = Parrot_str_bitwise_xor(interp, a, CONST(2)->u.string, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 563 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(1));
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, CONST(2)->u.string);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bxors_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(1));
- STRING *b = VTABLE_get_string(interp, PREG(2));
- STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(1));
+ STRING * const b = VTABLE_get_string(interp, PREG(2));
+ STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bxors_s_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxors_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_xor(interp, CONST(2)->u.string, SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_xor(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxors_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), CONST(3)->u.string, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 576 "src/ops/bit.ops"
+ SREG(1) = Parrot_str_bitwise_xor(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxors_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(2));
- STRING *b = Parrot_str_bitwise_xor(interp, a, SREG(3), NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 580 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(2));
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, SREG(3));
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxors_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(2));
- STRING *b = Parrot_str_bitwise_xor(interp, a, CONST(3)->u.string, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 580 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(2));
+ STRING * const b = Parrot_str_bitwise_xor(interp, a, CONST(3)->u.string);
VTABLE_set_string_native(interp, PREG(1), b);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_bxors_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *a = VTABLE_get_string(interp, PREG(2));
- STRING *b = VTABLE_get_string(interp, PREG(3));
- STRING *c = Parrot_str_bitwise_xor(interp, a, b, NULL);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 586 "src/ops/bit.ops"
+ STRING * const a = VTABLE_get_string(interp, PREG(2));
+ STRING * const b = VTABLE_get_string(interp, PREG(3));
+ STRING * const c = Parrot_str_bitwise_xor(interp, a, b);
VTABLE_set_string_native(interp, PREG(1), c);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_eq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
if (IREG(1) == IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19412,7 +19379,8 @@
opcode_t *
Parrot_eq_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
if (cur_opcode[1] == IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19421,7 +19389,8 @@
opcode_t *
Parrot_eq_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 66 "src/ops/cmp.ops"
if (IREG(1) == cur_opcode[2]) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19430,7 +19399,8 @@
opcode_t *
Parrot_eq_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
if (NREG(1) == NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19439,7 +19409,8 @@
opcode_t *
Parrot_eq_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
if (CONST(1)->u.number == NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19448,7 +19419,8 @@
opcode_t *
Parrot_eq_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 72 "src/ops/cmp.ops"
if (NREG(1) == CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19457,7 +19429,8 @@
opcode_t *
Parrot_eq_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
if (Parrot_str_equal(interp, SREG(1), SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19466,7 +19439,8 @@
opcode_t *
Parrot_eq_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
if (Parrot_str_equal(interp, CONST(1)->u.string, SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19475,7 +19449,8 @@
opcode_t *
Parrot_eq_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/cmp.ops"
if (Parrot_str_equal(interp, SREG(1), CONST(2)->u.string)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19484,7 +19459,8 @@
opcode_t *
Parrot_eq_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 84 "src/ops/cmp.ops"
if (VTABLE_is_equal(interp, PREG(1), PREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19493,8 +19469,9 @@
opcode_t *
Parrot_eq_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 90 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_is_equal(interp, PREG(1), temp)) {
@@ -19508,8 +19485,9 @@
opcode_t *
Parrot_eq_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 90 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (VTABLE_is_equal(interp, PREG(1), temp)) {
@@ -19523,7 +19501,8 @@
opcode_t *
Parrot_eq_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/cmp.ops"
/*
* the get_number and get_string should probably
* be also replaced with code like above, as
@@ -19538,7 +19517,8 @@
opcode_t *
Parrot_eq_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 102 "src/ops/cmp.ops"
/*
* the get_number and get_string should probably
* be also replaced with code like above, as
@@ -19553,7 +19533,8 @@
opcode_t *
Parrot_eq_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 114 "src/ops/cmp.ops"
if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19562,7 +19543,8 @@
opcode_t *
Parrot_eq_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 114 "src/ops/cmp.ops"
if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19571,7 +19553,8 @@
opcode_t *
Parrot_eq_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 120 "src/ops/cmp.ops"
if (VTABLE_is_equal_string(interp, PREG(1), PREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19580,7 +19563,8 @@
opcode_t *
Parrot_eq_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 126 "src/ops/cmp.ops"
if (VTABLE_is_equal_num(interp, PREG(1), PREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19589,7 +19573,8 @@
opcode_t *
Parrot_eq_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
if (SREG(1) == SREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19598,7 +19583,8 @@
opcode_t *
Parrot_eq_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
if (CONST(1)->u.string == SREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19607,7 +19593,8 @@
opcode_t *
Parrot_eq_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
if (SREG(1) == CONST(2)->u.string) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19616,7 +19603,8 @@
opcode_t *
Parrot_eq_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/cmp.ops"
if (CONST(1)->u.string == CONST(2)->u.string) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19625,7 +19613,8 @@
opcode_t *
Parrot_eq_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/cmp.ops"
if (PREG(1) == PREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19634,7 +19623,8 @@
opcode_t *
Parrot_ne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
if (IREG(1) != IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19643,7 +19633,8 @@
opcode_t *
Parrot_ne_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
if (cur_opcode[1] != IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19652,7 +19643,8 @@
opcode_t *
Parrot_ne_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 172 "src/ops/cmp.ops"
if (IREG(1) != cur_opcode[2]) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19661,7 +19653,8 @@
opcode_t *
Parrot_ne_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
if (NREG(1) != NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19670,7 +19663,8 @@
opcode_t *
Parrot_ne_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
if (CONST(1)->u.number != NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19679,7 +19673,8 @@
opcode_t *
Parrot_ne_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/cmp.ops"
if (NREG(1) != CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19688,7 +19683,8 @@
opcode_t *
Parrot_ne_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
if (Parrot_str_not_equal(interp, SREG(1), SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19697,7 +19693,8 @@
opcode_t *
Parrot_ne_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
if (Parrot_str_not_equal(interp, CONST(1)->u.string, SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19706,7 +19703,8 @@
opcode_t *
Parrot_ne_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/cmp.ops"
if (Parrot_str_not_equal(interp, SREG(1), CONST(2)->u.string)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19715,7 +19713,8 @@
opcode_t *
Parrot_ne_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 190 "src/ops/cmp.ops"
if (!VTABLE_is_equal(interp, PREG(1), PREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19724,8 +19723,9 @@
opcode_t *
Parrot_ne_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (!VTABLE_is_equal(interp, PREG(1), temp)) {
@@ -19739,8 +19739,9 @@
opcode_t *
Parrot_ne_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (!VTABLE_is_equal(interp, PREG(1), temp)) {
@@ -19754,7 +19755,8 @@
opcode_t *
Parrot_ne_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 208 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) != NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19763,7 +19765,8 @@
opcode_t *
Parrot_ne_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 208 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) != CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19772,7 +19775,8 @@
opcode_t *
Parrot_ne_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 214 "src/ops/cmp.ops"
if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), SREG(2))) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19781,7 +19785,8 @@
opcode_t *
Parrot_ne_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 214 "src/ops/cmp.ops"
if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19790,7 +19795,8 @@
opcode_t *
Parrot_ne_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 220 "src/ops/cmp.ops"
if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) != 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19799,7 +19805,8 @@
opcode_t *
Parrot_ne_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 226 "src/ops/cmp.ops"
if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) != 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19808,7 +19815,8 @@
opcode_t *
Parrot_ne_addr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
if (SREG(1) != SREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19817,7 +19825,8 @@
opcode_t *
Parrot_ne_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
if (CONST(1)->u.string != SREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19826,7 +19835,8 @@
opcode_t *
Parrot_ne_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
if (SREG(1) != CONST(2)->u.string) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19835,7 +19845,8 @@
opcode_t *
Parrot_ne_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 232 "src/ops/cmp.ops"
if (CONST(1)->u.string != CONST(2)->u.string) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19844,7 +19855,8 @@
opcode_t *
Parrot_ne_addr_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 238 "src/ops/cmp.ops"
if (PREG(1) != PREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19853,7 +19865,8 @@
opcode_t *
Parrot_lt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
if (IREG(1) < IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19862,7 +19875,8 @@
opcode_t *
Parrot_lt_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
if (cur_opcode[1] < IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19871,7 +19885,8 @@
opcode_t *
Parrot_lt_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/cmp.ops"
if (IREG(1) < cur_opcode[2]) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19880,7 +19895,8 @@
opcode_t *
Parrot_lt_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
if (NREG(1) < NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19889,7 +19905,8 @@
opcode_t *
Parrot_lt_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
if (CONST(1)->u.number < NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19898,7 +19915,8 @@
opcode_t *
Parrot_lt_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/cmp.ops"
if (NREG(1) < CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19907,7 +19925,8 @@
opcode_t *
Parrot_lt_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, SREG(1), SREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19916,7 +19935,8 @@
opcode_t *
Parrot_lt_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19925,7 +19945,8 @@
opcode_t *
Parrot_lt_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 280 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19934,7 +19955,8 @@
opcode_t *
Parrot_lt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/cmp.ops"
if (VTABLE_cmp(interp, PREG(1), PREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19943,8 +19965,9 @@
opcode_t *
Parrot_lt_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
@@ -19958,8 +19981,9 @@
opcode_t *
Parrot_lt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (VTABLE_cmp(interp, PREG(1), temp) < 0) {
@@ -19973,7 +19997,8 @@
opcode_t *
Parrot_lt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 304 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) < NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19982,7 +20007,8 @@
opcode_t *
Parrot_lt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 304 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) < CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -19991,7 +20017,8 @@
opcode_t *
Parrot_lt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 310 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20000,7 +20027,8 @@
opcode_t *
Parrot_lt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 310 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20009,7 +20037,8 @@
opcode_t *
Parrot_lt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 316 "src/ops/cmp.ops"
if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20018,7 +20047,8 @@
opcode_t *
Parrot_lt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 322 "src/ops/cmp.ops"
if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) < 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20027,7 +20057,8 @@
opcode_t *
Parrot_le_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
if (IREG(1) <= IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20036,7 +20067,8 @@
opcode_t *
Parrot_le_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
if (cur_opcode[1] <= IREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20045,7 +20077,8 @@
opcode_t *
Parrot_le_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/cmp.ops"
if (IREG(1) <= cur_opcode[2]) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20054,7 +20087,8 @@
opcode_t *
Parrot_le_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
if (NREG(1) <= NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20063,7 +20097,8 @@
opcode_t *
Parrot_le_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
if (CONST(1)->u.number <= NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20072,7 +20107,8 @@
opcode_t *
Parrot_le_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 358 "src/ops/cmp.ops"
if (NREG(1) <= CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20081,7 +20117,8 @@
opcode_t *
Parrot_le_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, SREG(1), SREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20090,7 +20127,8 @@
opcode_t *
Parrot_le_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20099,7 +20137,8 @@
opcode_t *
Parrot_le_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 364 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20108,7 +20147,8 @@
opcode_t *
Parrot_le_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 370 "src/ops/cmp.ops"
if (VTABLE_cmp(interp, PREG(1), PREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20117,8 +20157,9 @@
opcode_t *
Parrot_le_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 376 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
@@ -20132,8 +20173,9 @@
opcode_t *
Parrot_le_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 376 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (VTABLE_cmp(interp, PREG(1), temp) <= 0) {
@@ -20147,7 +20189,8 @@
opcode_t *
Parrot_le_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 388 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) <= NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20156,7 +20199,8 @@
opcode_t *
Parrot_le_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 388 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) <= CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20165,7 +20209,8 @@
opcode_t *
Parrot_le_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 394 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20174,7 +20219,8 @@
opcode_t *
Parrot_le_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 394 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20183,7 +20229,8 @@
opcode_t *
Parrot_le_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 400 "src/ops/cmp.ops"
if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20192,7 +20239,8 @@
opcode_t *
Parrot_le_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 406 "src/ops/cmp.ops"
if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) <= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20201,7 +20249,8 @@
opcode_t *
Parrot_gt_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 430 "src/ops/cmp.ops"
if (VTABLE_cmp(interp, PREG(1), PREG(2)) > 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20210,8 +20259,9 @@
opcode_t *
Parrot_gt_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 436 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
@@ -20225,8 +20275,9 @@
opcode_t *
Parrot_gt_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 436 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (VTABLE_cmp(interp, PREG(1), temp) > 0) {
@@ -20240,7 +20291,8 @@
opcode_t *
Parrot_gt_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) > NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20249,7 +20301,8 @@
opcode_t *
Parrot_gt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 448 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) > CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20258,7 +20311,8 @@
opcode_t *
Parrot_gt_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) > 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20267,7 +20321,8 @@
opcode_t *
Parrot_gt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) > 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20276,7 +20331,8 @@
opcode_t *
Parrot_gt_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 460 "src/ops/cmp.ops"
if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) > 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20285,7 +20341,8 @@
opcode_t *
Parrot_gt_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 466 "src/ops/cmp.ops"
if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) > 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20294,7 +20351,8 @@
opcode_t *
Parrot_ge_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 490 "src/ops/cmp.ops"
if (VTABLE_cmp(interp, PREG(1), PREG(2)) >= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20303,8 +20361,9 @@
opcode_t *
Parrot_ge_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 496 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, IREG(2));
if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
@@ -20318,8 +20377,9 @@
opcode_t *
Parrot_ge_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 496 "src/ops/cmp.ops"
+ PMC * const temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
VTABLE_set_integer_native(interp, temp, cur_opcode[2]);
if (VTABLE_cmp(interp, PREG(1), temp) >= 0) {
@@ -20333,7 +20393,8 @@
opcode_t *
Parrot_ge_p_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 508 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) >= NREG(2)) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20342,7 +20403,8 @@
opcode_t *
Parrot_ge_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 508 "src/ops/cmp.ops"
if (VTABLE_get_number(interp, PREG(1)) >= CONST(2)->u.number) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20351,7 +20413,8 @@
opcode_t *
Parrot_ge_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 514 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), SREG(2)) >= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20360,7 +20423,8 @@
opcode_t *
Parrot_ge_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 514 "src/ops/cmp.ops"
if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) >= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20369,7 +20433,8 @@
opcode_t *
Parrot_ge_str_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 520 "src/ops/cmp.ops"
if (VTABLE_cmp_string(interp, PREG(1), PREG(2)) >= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20378,7 +20443,8 @@
opcode_t *
Parrot_ge_num_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 526 "src/ops/cmp.ops"
if (VTABLE_cmp_num(interp, PREG(1), PREG(2)) >= 0) {
return (opcode_t *)cur_opcode + cur_opcode[3];
}
@@ -20387,7 +20453,8 @@
opcode_t *
Parrot_if_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 544 "src/ops/cmp.ops"
if (PMC_IS_NULL(PREG(1))) {
return (opcode_t *)cur_opcode + cur_opcode[2];
}
@@ -20396,7 +20463,8 @@
opcode_t *
Parrot_if_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 550 "src/ops/cmp.ops"
if (STRING_IS_NULL(SREG(1))) {
return (opcode_t *)cur_opcode + cur_opcode[2];
}
@@ -20405,7 +20473,8 @@
opcode_t *
Parrot_unless_null_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 568 "src/ops/cmp.ops"
if (!PMC_IS_NULL(PREG(1))) {
return (opcode_t *)cur_opcode + cur_opcode[2];
}
@@ -20414,7 +20483,8 @@
opcode_t *
Parrot_unless_null_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 574 "src/ops/cmp.ops"
if (!STRING_IS_NULL(SREG(1))) {
return (opcode_t *)cur_opcode + cur_opcode[2];
}
@@ -20423,7 +20493,8 @@
opcode_t *
Parrot_cmp_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
IREG(1) = IREG(2) < IREG(3) ? -1 :
IREG(2) > IREG(3) ? +1 :
0;
@@ -20432,7 +20503,8 @@
opcode_t *
Parrot_cmp_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
IREG(1) = cur_opcode[2] < IREG(3) ? -1 :
cur_opcode[2] > IREG(3) ? +1 :
0;
@@ -20441,7 +20513,8 @@
opcode_t *
Parrot_cmp_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 615 "src/ops/cmp.ops"
IREG(1) = IREG(2) < cur_opcode[3] ? -1 :
IREG(2) > cur_opcode[3] ? +1 :
0;
@@ -20450,7 +20523,8 @@
opcode_t *
Parrot_cmp_i_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
IREG(1) = NREG(2) < NREG(3) ? -1 :
NREG(2) > NREG(3) ? +1 :
0;
@@ -20459,7 +20533,8 @@
opcode_t *
Parrot_cmp_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.number < NREG(3) ? -1 :
CONST(2)->u.number > NREG(3) ? +1 :
0;
@@ -20468,7 +20543,8 @@
opcode_t *
Parrot_cmp_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 621 "src/ops/cmp.ops"
IREG(1) = NREG(2) < CONST(3)->u.number ? -1 :
NREG(2) > CONST(3)->u.number ? +1 :
0;
@@ -20477,35 +20553,40 @@
opcode_t *
Parrot_cmp_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 627 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 631 "src/ops/cmp.ops"
IREG(1) = VTABLE_cmp(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_i_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 635 "src/ops/cmp.ops"
const INTVAL l = VTABLE_get_integer(interp, PREG(2));
IREG(1) = l < IREG(3) ? -1 :
l > IREG(3) ? +1 :
@@ -20515,7 +20596,8 @@
opcode_t *
Parrot_cmp_i_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 635 "src/ops/cmp.ops"
const INTVAL l = VTABLE_get_integer(interp, PREG(2));
IREG(1) = l < cur_opcode[3] ? -1 :
l > cur_opcode[3] ? +1 :
@@ -20525,7 +20607,8 @@
opcode_t *
Parrot_cmp_i_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 642 "src/ops/cmp.ops"
const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
IREG(1) = l < NREG(3) ? -1 :
l > NREG(3) ? +1 :
@@ -20535,7 +20618,8 @@
opcode_t *
Parrot_cmp_i_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 642 "src/ops/cmp.ops"
const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
IREG(1) = l < CONST(3)->u.number ? -1 :
l > CONST(3)->u.number ? +1 :
@@ -20545,7 +20629,8 @@
opcode_t *
Parrot_cmp_i_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 649 "src/ops/cmp.ops"
STRING* const l = VTABLE_get_string(interp, PREG(2));
IREG(1) = Parrot_str_compare(interp, l, SREG(3));
@@ -20553,7 +20638,8 @@
opcode_t *
Parrot_cmp_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 649 "src/ops/cmp.ops"
STRING* const l = VTABLE_get_string(interp, PREG(2));
IREG(1) = Parrot_str_compare(interp, l, CONST(3)->u.string);
@@ -20561,28 +20647,32 @@
opcode_t *
Parrot_cmp_str_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 654 "src/ops/cmp.ops"
IREG(1) = VTABLE_cmp_string(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_num_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 658 "src/ops/cmp.ops"
IREG(1) = VTABLE_cmp_num(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmp_pmc_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 670 "src/ops/cmp.ops"
PREG(1) = VTABLE_cmp_pmc(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 707 "src/ops/cmp.ops"
if (PREG(2) == PREG(3))
IREG(1) = 1;
else
@@ -20592,35 +20682,40 @@
opcode_t *
Parrot_issame_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
IREG(1) = SREG(2) == SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.string == SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
IREG(1) = SREG(2) == CONST(3)->u.string;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_issame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 714 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.string == CONST(3)->u.string;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 718 "src/ops/cmp.ops"
if (PREG(2) == PREG(3))
IREG(1) = 0;
else
@@ -20630,294 +20725,336 @@
opcode_t *
Parrot_isntsame_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
IREG(1) = SREG(2) != SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.string != SREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
IREG(1) = SREG(2) != CONST(3)->u.string;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isntsame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 725 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.string != CONST(3)->u.string;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_istrue_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 729 "src/ops/cmp.ops"
IREG(1) = VTABLE_get_bool(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isfalse_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 733 "src/ops/cmp.ops"
IREG(1) = !VTABLE_get_bool(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isnull_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 737 "src/ops/cmp.ops"
IREG(1) = PMC_IS_NULL(PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isnull_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 737 "src/ops/cmp.ops"
IREG(1) = PMC_IS_NULL(CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isnull_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 741 "src/ops/cmp.ops"
IREG(1) = STRING_IS_NULL(SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isnull_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 741 "src/ops/cmp.ops"
IREG(1) = STRING_IS_NULL(CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_isgt_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 759 "src/ops/cmp.ops"
IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) > 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isge_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 777 "src/ops/cmp.ops"
IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) >= 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
IREG(1) = IREG(2) <= IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
IREG(1) = cur_opcode[2] <= IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 793 "src/ops/cmp.ops"
IREG(1) = IREG(2) <= cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
IREG(1) = NREG(2) <= NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.number <= NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 797 "src/ops/cmp.ops"
IREG(1) = NREG(2) <= CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3)) <= 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) <= 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 801 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) <= 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isle_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 805 "src/ops/cmp.ops"
IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) <= 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
IREG(1) = (IREG(2) < IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
IREG(1) = (cur_opcode[2] < IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 821 "src/ops/cmp.ops"
IREG(1) = (IREG(2) < cur_opcode[3]) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
IREG(1) = NREG(2) < NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.number < NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 825 "src/ops/cmp.ops"
IREG(1) = NREG(2) < CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), SREG(3)) < 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) < 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 829 "src/ops/cmp.ops"
IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) < 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_islt_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 833 "src/ops/cmp.ops"
IREG(1) = (VTABLE_cmp(interp, PREG(2), PREG(3)) < 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
IREG(1) = (IREG(2) == IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
IREG(1) = (cur_opcode[2] == IREG(3)) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 849 "src/ops/cmp.ops"
IREG(1) = (IREG(2) == cur_opcode[3]) ? 1 : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
IREG(1) = NREG(2) == NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.number == NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 853 "src/ops/cmp.ops"
IREG(1) = NREG(2) == CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_equal(interp, SREG(2), SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 857 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_iseq_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 861 "src/ops/cmp.ops"
if (&PREG(2) == &PREG(3))
IREG(1) = 1;
else
@@ -20927,70 +21064,80 @@
opcode_t *
Parrot_isne_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
IREG(1) = (IREG(2) == IREG(3)) ? 0 : 1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
IREG(1) = (cur_opcode[2] == IREG(3)) ? 0 : 1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 880 "src/ops/cmp.ops"
IREG(1) = (IREG(2) == cur_opcode[3]) ? 0 : 1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
IREG(1) = NREG(2) != NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
IREG(1) = CONST(2)->u.number != NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 884 "src/ops/cmp.ops"
IREG(1) = NREG(2) != CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_not_equal(interp, SREG(2), SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_not_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 888 "src/ops/cmp.ops"
IREG(1) = (Parrot_str_not_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isne_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 892 "src/ops/cmp.ops"
if (&PREG(2) == &PREG(3))
IREG(1) = 0;
else
@@ -21000,140 +21147,160 @@
opcode_t *
Parrot_and_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
IREG(1) = IREG(2) ? IREG(3) : IREG(2);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_and_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
IREG(1) = cur_opcode[2] ? IREG(3) : cur_opcode[2];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_and_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 924 "src/ops/cmp.ops"
IREG(1) = IREG(2) ? cur_opcode[3] : IREG(2);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_and_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 928 "src/ops/cmp.ops"
PREG(1) = VTABLE_logical_and(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_not_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 946 "src/ops/cmp.ops"
IREG(1) = ! IREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_not_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 950 "src/ops/cmp.ops"
IREG(1) = ! IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_not_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 954 "src/ops/cmp.ops"
VTABLE_i_logical_not(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_not_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 958 "src/ops/cmp.ops"
PREG(1) = VTABLE_logical_not(interp, PREG(2), PREG(1));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_or_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
IREG(1) = IREG(2) ? IREG(2) : IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_or_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
IREG(1) = cur_opcode[2] ? cur_opcode[2] : IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_or_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 972 "src/ops/cmp.ops"
IREG(1) = IREG(2) ? IREG(2) : cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_or_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 976 "src/ops/cmp.ops"
PREG(1) = VTABLE_logical_or(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_xor_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
IREG(1) = (IREG(2) && ! IREG(3)) ? IREG(2) : (IREG(3) && ! IREG(2)) ? IREG(3) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_xor_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
IREG(1) = (cur_opcode[2] && ! IREG(3)) ? cur_opcode[2] : (IREG(3) && ! cur_opcode[2]) ? IREG(3) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_xor_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 991 "src/ops/cmp.ops"
IREG(1) = (IREG(2) && ! cur_opcode[3]) ? IREG(2) : (cur_opcode[3] && ! IREG(2)) ? cur_opcode[3] : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_xor_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 995 "src/ops/cmp.ops"
PREG(1) = VTABLE_logical_xor(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_debug_init(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 45 "src/ops/debug.ops"
Parrot_debugger_init(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_debug_load_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 57 "src/ops/debug.ops"
Parrot_debugger_load(interp, CONST(1)->u.string);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_debug_break(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 74 "src/ops/debug.ops"
Parrot_debugger_break(interp, cur_opcode);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_debug_print(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 86 "src/ops/debug.ops"
if (!interp->pdb) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 1,
EXCEPTION_INVALID_OPERATION,
@@ -21152,14 +21319,16 @@
opcode_t *
Parrot_backtrace(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/debug.ops"
PDB_backtrace(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_getline_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 120 "src/ops/debug.ops"
Parrot_Context_info info;
Parrot_Context_get_info(interp, CURRENT_CONTEXT(interp), &info);
IREG(1) = info.line;
@@ -21168,7 +21337,8 @@
opcode_t *
Parrot_getfile_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 132 "src/ops/debug.ops"
Parrot_Context_info info;
Parrot_Context_get_info(interp, CURRENT_CONTEXT(interp), &info);
SREG(1) = info.file;
@@ -21176,15 +21346,34 @@
return (opcode_t *)cur_opcode + 2;}
opcode_t *
+Parrot_set_label_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 71 "src/ops/experimental.ops"
+ VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
+
+return (opcode_t *)cur_opcode + 3;}
+
+opcode_t *
+Parrot_get_label_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 75 "src/ops/experimental.ops"
+ void * const ptr = VTABLE_get_pointer(interp, PREG(2));
+ IREG(1) = PTR2INTVAL(ptr);
+
+return (opcode_t *)cur_opcode + 3;}
+
+opcode_t *
Parrot_close_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 43 "src/ops/io.ops"
Parrot_io_close(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_fdopen_p_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)IREG(2), SREG(3));
if (!PREG(1))
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -21193,7 +21382,8 @@
opcode_t *
Parrot_fdopen_p_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)cur_opcode[2], SREG(3));
if (!PREG(1))
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -21202,7 +21392,8 @@
opcode_t *
Parrot_fdopen_p_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)IREG(2), CONST(3)->u.string);
if (!PREG(1))
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -21211,7 +21402,8 @@
opcode_t *
Parrot_fdopen_p_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/io.ops"
PREG(1) = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)cur_opcode[2], CONST(3)->u.string);
if (!PREG(1))
PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
@@ -21220,49 +21412,56 @@
opcode_t *
Parrot_getstdin_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 78 "src/ops/io.ops"
PREG(1) = _PIO_STDIN(interp);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_getstdout_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 82 "src/ops/io.ops"
PREG(1) = _PIO_STDOUT(interp);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_getstderr_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 86 "src/ops/io.ops"
PREG(1) = _PIO_STDERR(interp);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_setstdin_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/io.ops"
_PIO_STDIN(interp) = PREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_setstdout_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 113 "src/ops/io.ops"
_PIO_STDOUT(interp) = PREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_setstderr_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/io.ops"
_PIO_STDERR(interp) = PREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_open_p_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
if (STRING_IS_NULL(SREG(2)) || STRING_IS_NULL(SREG(3))) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21277,7 +21476,8 @@
opcode_t *
Parrot_open_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
if (STRING_IS_NULL(CONST(2)->u.string) || STRING_IS_NULL(SREG(3))) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21292,7 +21492,8 @@
opcode_t *
Parrot_open_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
if (STRING_IS_NULL(SREG(2)) || STRING_IS_NULL(CONST(3)->u.string)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21307,7 +21508,8 @@
opcode_t *
Parrot_open_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 142 "src/ops/io.ops"
if (STRING_IS_NULL(CONST(2)->u.string) || STRING_IS_NULL(CONST(3)->u.string)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21322,7 +21524,8 @@
opcode_t *
Parrot_open_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 154 "src/ops/io.ops"
if (STRING_IS_NULL(SREG(2))) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21337,7 +21540,8 @@
opcode_t *
Parrot_open_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 154 "src/ops/io.ops"
if (STRING_IS_NULL(CONST(2)->u.string)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_UNEXPECTED_NULL, "Invalid open");
@@ -21352,21 +21556,24 @@
opcode_t *
Parrot_print_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 180 "src/ops/io.ops"
Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_print_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 180 "src/ops/io.ops"
Parrot_io_printf(interp, INTVAL_FMT, (INTVAL)cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_print_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/io.ops"
#ifdef PARROT_HAS_NEGATIVE_ZERO
Parrot_io_printf(interp, FLOATVAL_FMT, NREG(1));
#else
@@ -21383,7 +21590,8 @@
opcode_t *
Parrot_print_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 184 "src/ops/io.ops"
#ifdef PARROT_HAS_NEGATIVE_ZERO
Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1)->u.number);
#else
@@ -21400,7 +21608,8 @@
opcode_t *
Parrot_print_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 198 "src/ops/io.ops"
STRING * const s = SREG(1);
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21409,7 +21618,8 @@
opcode_t *
Parrot_print_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 198 "src/ops/io.ops"
STRING * const s = CONST(1)->u.string;
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21418,7 +21628,8 @@
opcode_t *
Parrot_print_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 204 "src/ops/io.ops"
PMC * const p = PREG(1);
STRING * const s = (VTABLE_get_string(interp, p));
if (s)
@@ -21428,21 +21639,24 @@
opcode_t *
Parrot_say_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 223 "src/ops/io.ops"
Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_say_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 223 "src/ops/io.ops"
Parrot_io_printf(interp, INTVAL_FMT "\n", (INTVAL)cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_say_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 227 "src/ops/io.ops"
#ifdef PARROT_HAS_NEGATIVE_ZERO
Parrot_io_printf(interp, FLOATVAL_FMT "\n", NREG(1));
#else
@@ -21459,7 +21673,8 @@
opcode_t *
Parrot_say_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 227 "src/ops/io.ops"
#ifdef PARROT_HAS_NEGATIVE_ZERO
Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1)->u.number);
#else
@@ -21476,7 +21691,8 @@
opcode_t *
Parrot_say_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/io.ops"
STRING * const s = SREG(1);
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21486,7 +21702,8 @@
opcode_t *
Parrot_say_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/io.ops"
STRING * const s = CONST(1)->u.string;
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
@@ -21496,7 +21713,8 @@
opcode_t *
Parrot_say_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 248 "src/ops/io.ops"
PMC * const p = PREG(1);
if (PMC_IS_NULL(p)) {
@@ -21516,35 +21734,40 @@
opcode_t *
Parrot_printerr_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/io.ops"
Parrot_io_eprintf(interp, INTVAL_FMT, IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_printerr_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/io.ops"
Parrot_io_eprintf(interp, INTVAL_FMT, cur_opcode[1]);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_printerr_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/io.ops"
Parrot_io_eprintf(interp, FLOATVAL_FMT, NREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_printerr_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 286 "src/ops/io.ops"
Parrot_io_eprintf(interp, FLOATVAL_FMT, CONST(1)->u.number);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_printerr_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 290 "src/ops/io.ops"
STRING * const s = SREG(1);
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDERR(interp), s);
@@ -21553,7 +21776,8 @@
opcode_t *
Parrot_printerr_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 290 "src/ops/io.ops"
STRING * const s = CONST(1)->u.string;
if (s && Parrot_str_byte_length(interp, s))
Parrot_io_putps(interp, _PIO_STDERR(interp), s);
@@ -21562,7 +21786,8 @@
opcode_t *
Parrot_printerr_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/io.ops"
PMC * const p = PREG(1);
STRING * const s = (VTABLE_get_string(interp, p));
if (s)
@@ -21572,7 +21797,8 @@
opcode_t *
Parrot_print_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/io.ops"
if (PREG(1)) {
STRING * const s = Parrot_str_from_int(interp, IREG(2));
Parrot_io_putps(interp, PREG(1), s);
@@ -21582,7 +21808,8 @@
opcode_t *
Parrot_print_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/io.ops"
if (PREG(1)) {
STRING * const s = Parrot_str_from_int(interp, cur_opcode[2]);
Parrot_io_putps(interp, PREG(1), s);
@@ -21592,7 +21819,8 @@
opcode_t *
Parrot_print_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 324 "src/ops/io.ops"
if (PREG(1)) {
STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, NREG(2));
Parrot_io_putps(interp, PREG(1), s);
@@ -21602,7 +21830,8 @@
opcode_t *
Parrot_print_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 324 "src/ops/io.ops"
if (PREG(1)) {
STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, CONST(2)->u.number);
Parrot_io_putps(interp, PREG(1), s);
@@ -21612,7 +21841,8 @@
opcode_t *
Parrot_print_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 331 "src/ops/io.ops"
if (SREG(2) && PREG(1)) {
Parrot_io_putps(interp, PREG(1), SREG(2));
}
@@ -21621,7 +21851,8 @@
opcode_t *
Parrot_print_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 331 "src/ops/io.ops"
if (CONST(2)->u.string && PREG(1)) {
Parrot_io_putps(interp, PREG(1), CONST(2)->u.string);
}
@@ -21630,7 +21861,8 @@
opcode_t *
Parrot_print_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "src/ops/io.ops"
if (PREG(2) && PREG(1)) {
STRING * const s = VTABLE_get_string(interp, PREG(2));
Parrot_io_putps(interp, PREG(1), s);
@@ -21640,42 +21872,48 @@
opcode_t *
Parrot_read_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/io.ops"
SREG(1) = Parrot_io_reads(interp, _PIO_STDIN(interp), (size_t)IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_read_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/io.ops"
SREG(1) = Parrot_io_reads(interp, _PIO_STDIN(interp), (size_t)cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_read_s_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/io.ops"
SREG(1) = Parrot_io_reads(interp, PREG(2), (size_t)IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_read_s_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 360 "src/ops/io.ops"
SREG(1) = Parrot_io_reads(interp, PREG(2), (size_t)cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_readline_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/io.ops"
SREG(1) = Parrot_io_readline(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_peek_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/io.ops"
STRING ** const s = &SREG(1);
*s = NULL;
@@ -21687,7 +21925,8 @@
opcode_t *
Parrot_peek_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 398 "src/ops/io.ops"
STRING ** const s = &SREG(1);
*s = NULL;
@@ -21699,63 +21938,72 @@
opcode_t *
Parrot_stat_i_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
IREG(1) = Parrot_stat_info_intval(interp, SREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
IREG(1) = Parrot_stat_info_intval(interp, CONST(2)->u.string, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
IREG(1) = Parrot_stat_info_intval(interp, SREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/io.ops"
IREG(1) = Parrot_stat_info_intval(interp, CONST(2)->u.string, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
IREG(1) = Parrot_fstat_info_intval(interp, IREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
IREG(1) = Parrot_fstat_info_intval(interp, cur_opcode[2], IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
IREG(1) = Parrot_fstat_info_intval(interp, IREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_stat_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 435 "src/ops/io.ops"
IREG(1) = Parrot_fstat_info_intval(interp, cur_opcode[2], cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_seek_p_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(IREG(2)), IREG(3)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21769,7 +22017,8 @@
opcode_t *
Parrot_seek_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(cur_opcode[2]), IREG(3)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21783,7 +22032,8 @@
opcode_t *
Parrot_seek_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(IREG(2)), cur_opcode[3]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21797,7 +22047,8 @@
opcode_t *
Parrot_seek_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 465 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset(cur_opcode[2]), cur_opcode[3]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -21811,7 +22062,8 @@
opcode_t *
Parrot_seek_p_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), IREG(3)), IREG(4)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21825,7 +22077,8 @@
opcode_t *
Parrot_seek_p_ic_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], IREG(3)), IREG(4)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21839,7 +22092,8 @@
opcode_t *
Parrot_seek_p_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), cur_opcode[3]), IREG(4)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21853,7 +22107,8 @@
opcode_t *
Parrot_seek_p_ic_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], cur_opcode[3]), IREG(4)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21867,7 +22122,8 @@
opcode_t *
Parrot_seek_p_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), IREG(3)), cur_opcode[4]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21881,7 +22137,8 @@
opcode_t *
Parrot_seek_p_ic_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], IREG(3)), cur_opcode[4]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21895,7 +22152,8 @@
opcode_t *
Parrot_seek_p_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(IREG(2), cur_opcode[3]), cur_opcode[4]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21909,7 +22167,8 @@
opcode_t *
Parrot_seek_p_ic_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 476 "src/ops/io.ops"
if (PREG(1)) {
if (Parrot_io_seek(interp, PREG(1), Parrot_io_make_offset32(cur_opcode[2], cur_opcode[3]), cur_opcode[4]) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 5,
@@ -21923,7 +22182,8 @@
opcode_t *
Parrot_tell_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 502 "src/ops/io.ops"
if (PREG(2))
IREG(1) = (INTVAL)Parrot_io_tell(interp, PREG(2));
@@ -21931,7 +22191,8 @@
opcode_t *
Parrot_tell_i_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 507 "src/ops/io.ops"
if (PREG(3)) {
PIOOFF_T pos;
pos = Parrot_io_tell(interp, PREG(3));
@@ -21943,21 +22204,24 @@
opcode_t *
Parrot_abs_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 47 "src/ops/math.ops"
IREG(1) = abs(IREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_abs_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 51 "src/ops/math.ops"
NREG(1) = fabs(NREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_abs_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/math.ops"
if (IREG(2) < 0)
IREG(1) = - (INTVAL)IREG(2);
else
@@ -21967,7 +22231,8 @@
opcode_t *
Parrot_abs_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 62 "src/ops/math.ops"
if (NREG(2) < 0)
NREG(1) = - (FLOATVAL)NREG(2);
else
@@ -21977,161 +22242,184 @@
opcode_t *
Parrot_abs_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/math.ops"
VTABLE_i_absolute(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_abs_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/math.ops"
PREG(1) = VTABLE_absolute(interp, PREG(2), PREG(1));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/math.ops"
IREG(1) += IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/math.ops"
IREG(1) += cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/math.ops"
NREG(1) += NREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 109 "src/ops/math.ops"
NREG(1) += CONST(2)->u.number;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 113 "src/ops/math.ops"
VTABLE_i_add(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/math.ops"
VTABLE_i_add_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 117 "src/ops/math.ops"
VTABLE_i_add_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/math.ops"
VTABLE_i_add_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/math.ops"
VTABLE_i_add_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
IREG(1) = IREG(2) + IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
IREG(1) = cur_opcode[2] + IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/math.ops"
IREG(1) = IREG(2) + cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
NREG(1) = NREG(2) + NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
NREG(1) = CONST(2)->u.number + NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/math.ops"
NREG(1) = NREG(2) + CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/math.ops"
PREG(1) = VTABLE_add(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/math.ops"
PREG(1) = VTABLE_add_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/math.ops"
PREG(1) = VTABLE_add_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/math.ops"
PREG(1) = VTABLE_add_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/math.ops"
PREG(1) = VTABLE_add_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cmod_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
INTVAL den = IREG(3);
if (IREG(3) == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22145,7 +22433,8 @@
opcode_t *
Parrot_cmod_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
INTVAL den = IREG(3);
if (IREG(3) == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22159,7 +22448,8 @@
opcode_t *
Parrot_cmod_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/math.ops"
INTVAL den = cur_opcode[3];
if (cur_opcode[3] == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22173,7 +22463,8 @@
opcode_t *
Parrot_cmod_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 197 "src/ops/math.ops"
INTVAL result;
if (IREG(3) == 0) {
@@ -22192,7 +22483,8 @@
opcode_t *
Parrot_cmod_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 197 "src/ops/math.ops"
INTVAL result;
if (cur_opcode[3] == 0) {
@@ -22211,7 +22503,8 @@
opcode_t *
Parrot_cmod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 213 "src/ops/math.ops"
INTVAL result;
INTVAL value = VTABLE_get_integer(interp, PREG(3));
@@ -22231,7 +22524,8 @@
opcode_t *
Parrot_cmod_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(NREG(3))) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22245,7 +22539,8 @@
opcode_t *
Parrot_cmod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(NREG(3))) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22259,7 +22554,8 @@
opcode_t *
Parrot_cmod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/math.ops"
FLOATVAL den = CONST(3)->u.number;
if (FLOAT_IS_ZERO(CONST(3)->u.number)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22273,7 +22569,8 @@
opcode_t *
Parrot_cmod_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/math.ops"
FLOATVAL result;
FLOATVAL value = NREG(3);
@@ -22293,7 +22590,8 @@
opcode_t *
Parrot_cmod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/math.ops"
FLOATVAL result;
FLOATVAL value = CONST(3)->u.number;
@@ -22313,28 +22611,32 @@
opcode_t *
Parrot_dec_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/math.ops"
IREG(1)--;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_dec_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 307 "src/ops/math.ops"
NREG(1)--;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_dec_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/math.ops"
VTABLE_decrement(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_div_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 345 "src/ops/math.ops"
INTVAL den = IREG(2);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22348,7 +22650,8 @@
opcode_t *
Parrot_div_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 345 "src/ops/math.ops"
INTVAL den = cur_opcode[2];
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22362,7 +22665,8 @@
opcode_t *
Parrot_div_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/math.ops"
FLOATVAL den = NREG(2);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22376,7 +22680,8 @@
opcode_t *
Parrot_div_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/math.ops"
FLOATVAL den = CONST(2)->u.number;
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22390,42 +22695,48 @@
opcode_t *
Parrot_div_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 367 "src/ops/math.ops"
VTABLE_i_divide(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_div_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/math.ops"
VTABLE_i_divide_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_div_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 371 "src/ops/math.ops"
VTABLE_i_divide_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_div_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 375 "src/ops/math.ops"
VTABLE_i_divide_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_div_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 375 "src/ops/math.ops"
VTABLE_i_divide_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_div_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
INTVAL den = IREG(3);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22439,7 +22750,8 @@
opcode_t *
Parrot_div_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
INTVAL den = IREG(3);
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22453,7 +22765,8 @@
opcode_t *
Parrot_div_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
INTVAL den = cur_opcode[3];
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22467,7 +22780,8 @@
opcode_t *
Parrot_div_i_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/math.ops"
INTVAL den = cur_opcode[3];
if (den == 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22481,7 +22795,8 @@
opcode_t *
Parrot_div_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22495,7 +22810,8 @@
opcode_t *
Parrot_div_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22509,7 +22825,8 @@
opcode_t *
Parrot_div_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
FLOATVAL den = CONST(3)->u.number;
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22523,7 +22840,8 @@
opcode_t *
Parrot_div_n_nc_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 389 "src/ops/math.ops"
FLOATVAL den = CONST(3)->u.number;
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22537,42 +22855,48 @@
opcode_t *
Parrot_div_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 400 "src/ops/math.ops"
PREG(1) = VTABLE_divide(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/math.ops"
PREG(1) = VTABLE_divide_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/math.ops"
PREG(1) = VTABLE_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/math.ops"
PREG(1) = VTABLE_divide_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_div_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/math.ops"
PREG(1) = VTABLE_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/math.ops"
INTVAL den = IREG(2);
FLOATVAL f;
@@ -22590,7 +22914,8 @@
opcode_t *
Parrot_fdiv_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 441 "src/ops/math.ops"
INTVAL den = cur_opcode[2];
FLOATVAL f;
@@ -22608,7 +22933,8 @@
opcode_t *
Parrot_fdiv_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 456 "src/ops/math.ops"
FLOATVAL den = NREG(2);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22622,7 +22948,8 @@
opcode_t *
Parrot_fdiv_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 456 "src/ops/math.ops"
FLOATVAL den = CONST(2)->u.number;
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
@@ -22636,42 +22963,48 @@
opcode_t *
Parrot_fdiv_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 467 "src/ops/math.ops"
VTABLE_i_floor_divide(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_fdiv_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 471 "src/ops/math.ops"
VTABLE_i_floor_divide_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_fdiv_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 471 "src/ops/math.ops"
VTABLE_i_floor_divide_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_fdiv_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/math.ops"
VTABLE_i_floor_divide_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_fdiv_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 475 "src/ops/math.ops"
VTABLE_i_floor_divide_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_fdiv_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
INTVAL den = IREG(3);
FLOATVAL f;
@@ -22689,7 +23022,8 @@
opcode_t *
Parrot_fdiv_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
INTVAL den = IREG(3);
FLOATVAL f;
@@ -22707,7 +23041,8 @@
opcode_t *
Parrot_fdiv_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 479 "src/ops/math.ops"
INTVAL den = cur_opcode[3];
FLOATVAL f;
@@ -22725,7 +23060,8 @@
opcode_t *
Parrot_fdiv_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22739,7 +23075,8 @@
opcode_t *
Parrot_fdiv_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
FLOATVAL den = NREG(3);
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22753,7 +23090,8 @@
opcode_t *
Parrot_fdiv_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 494 "src/ops/math.ops"
FLOATVAL den = CONST(3)->u.number;
if (FLOAT_IS_ZERO(den)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
@@ -22767,49 +23105,56 @@
opcode_t *
Parrot_fdiv_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 505 "src/ops/math.ops"
PREG(1) = VTABLE_floor_divide(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/math.ops"
PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/math.ops"
PREG(1) = VTABLE_floor_divide_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 513 "src/ops/math.ops"
PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_fdiv_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 513 "src/ops/math.ops"
PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ceil_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 531 "src/ops/math.ops"
NREG(1) = ceil(NREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_ceil_i_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 535 "src/ops/math.ops"
FLOATVAL f = ceil(NREG(2));
IREG(1) = (INTVAL)f;
@@ -22817,21 +23162,24 @@
opcode_t *
Parrot_ceil_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 540 "src/ops/math.ops"
NREG(1) = ceil(NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_floor_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 558 "src/ops/math.ops"
NREG(1) = floor(NREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_floor_i_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 562 "src/ops/math.ops"
FLOATVAL f = floor(NREG(2));
IREG(1) = (INTVAL)f;
@@ -22839,378 +23187,432 @@
opcode_t *
Parrot_floor_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 567 "src/ops/math.ops"
NREG(1) = floor(NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_inc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 583 "src/ops/math.ops"
IREG(1)++;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_inc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/math.ops"
NREG(1)++;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_inc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 591 "src/ops/math.ops"
VTABLE_increment(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_mod_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/math.ops"
IREG(1) = intval_mod(IREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 643 "src/ops/math.ops"
IREG(1) = intval_mod(IREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 647 "src/ops/math.ops"
NREG(1) = floatval_mod(NREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 647 "src/ops/math.ops"
NREG(1) = floatval_mod(NREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/math.ops"
VTABLE_i_modulus(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 655 "src/ops/math.ops"
VTABLE_i_modulus_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 655 "src/ops/math.ops"
VTABLE_i_modulus_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 659 "src/ops/math.ops"
VTABLE_i_modulus_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 659 "src/ops/math.ops"
VTABLE_i_modulus_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mod_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
IREG(1) = intval_mod(IREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
IREG(1) = intval_mod(cur_opcode[2], IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 663 "src/ops/math.ops"
IREG(1) = intval_mod(IREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
NREG(1) = floatval_mod(NREG(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
NREG(1) = floatval_mod(CONST(2)->u.number, NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 667 "src/ops/math.ops"
NREG(1) = floatval_mod(NREG(2), CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 671 "src/ops/math.ops"
PREG(1) = VTABLE_modulus(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 675 "src/ops/math.ops"
PREG(1) = VTABLE_modulus_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 675 "src/ops/math.ops"
PREG(1) = VTABLE_modulus_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 679 "src/ops/math.ops"
PREG(1) = VTABLE_modulus_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 679 "src/ops/math.ops"
PREG(1) = VTABLE_modulus_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 711 "src/ops/math.ops"
IREG(1) *= IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 711 "src/ops/math.ops"
IREG(1) *= cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 715 "src/ops/math.ops"
NREG(1) *= NREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 715 "src/ops/math.ops"
NREG(1) *= CONST(2)->u.number;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 719 "src/ops/math.ops"
VTABLE_i_multiply(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 723 "src/ops/math.ops"
VTABLE_i_multiply_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 723 "src/ops/math.ops"
VTABLE_i_multiply_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 727 "src/ops/math.ops"
VTABLE_i_multiply_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 727 "src/ops/math.ops"
VTABLE_i_multiply_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_mul_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
IREG(1) = IREG(2) * IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
IREG(1) = cur_opcode[2] * IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 731 "src/ops/math.ops"
IREG(1) = IREG(2) * cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
NREG(1) = NREG(2) * NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
NREG(1) = CONST(2)->u.number * NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 735 "src/ops/math.ops"
NREG(1) = NREG(2) * CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 739 "src/ops/math.ops"
PREG(1) = VTABLE_multiply(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 743 "src/ops/math.ops"
PREG(1) = VTABLE_multiply_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 743 "src/ops/math.ops"
PREG(1) = VTABLE_multiply_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 747 "src/ops/math.ops"
PREG(1) = VTABLE_multiply_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_mul_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 747 "src/ops/math.ops"
PREG(1) = VTABLE_multiply_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_neg_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 771 "src/ops/math.ops"
IREG(1) = - IREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_neg_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 775 "src/ops/math.ops"
NREG(1) = - NREG(1);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_neg_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 779 "src/ops/math.ops"
VTABLE_i_neg(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_neg_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 783 "src/ops/math.ops"
IREG(1) = - IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_neg_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 787 "src/ops/math.ops"
NREG(1) = - NREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_neg_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 791 "src/ops/math.ops"
PREG(1) = VTABLE_neg(interp, PREG(2), PREG(1));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_pow_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
NREG(1) = pow((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_pow_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
NREG(1) = pow((FLOATVAL)CONST(2)->u.number, (FLOATVAL)NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_pow_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 811 "src/ops/math.ops"
NREG(1) = pow((FLOATVAL)NREG(2), (FLOATVAL)CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_pow_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 815 "src/ops/math.ops"
const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
const FLOATVAL b = VTABLE_get_number(interp, PREG(3));
const FLOATVAL c = pow(a, b);
@@ -23224,7 +23626,8 @@
opcode_t *
Parrot_pow_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 826 "src/ops/math.ops"
const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
const FLOATVAL b = (FLOATVAL)IREG(3);
const FLOATVAL c = pow(a, b);
@@ -23238,7 +23641,8 @@
opcode_t *
Parrot_pow_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 826 "src/ops/math.ops"
const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
const FLOATVAL b = (FLOATVAL)cur_opcode[3];
const FLOATVAL c = pow(a, b);
@@ -23252,7 +23656,8 @@
opcode_t *
Parrot_pow_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 837 "src/ops/math.ops"
const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
const FLOATVAL c = pow(a, NREG(3));
if (PMC_IS_NULL(PREG(1)))
@@ -23265,7 +23670,8 @@
opcode_t *
Parrot_pow_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 837 "src/ops/math.ops"
const FLOATVAL a = VTABLE_get_number(interp, PREG(2));
const FLOATVAL c = pow(a, CONST(3)->u.number);
if (PMC_IS_NULL(PREG(1)))
@@ -23278,7 +23684,8 @@
opcode_t *
Parrot_pow_n_n_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
FLOATVAL n2 = NREG(2);
FLOATVAL res = 1.0;
INTVAL e = IREG(3);
@@ -23305,7 +23712,8 @@
opcode_t *
Parrot_pow_n_nc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
FLOATVAL n2 = CONST(2)->u.number;
FLOATVAL res = 1.0;
INTVAL e = IREG(3);
@@ -23332,7 +23740,8 @@
opcode_t *
Parrot_pow_n_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
FLOATVAL n2 = NREG(2);
FLOATVAL res = 1.0;
INTVAL e = cur_opcode[3];
@@ -23359,7 +23768,8 @@
opcode_t *
Parrot_pow_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 847 "src/ops/math.ops"
FLOATVAL n2 = CONST(2)->u.number;
FLOATVAL res = 1.0;
INTVAL e = cur_opcode[3];
@@ -23386,238 +23796,272 @@
opcode_t *
Parrot_sub_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 899 "src/ops/math.ops"
IREG(1) -= IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 899 "src/ops/math.ops"
IREG(1) -= cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 903 "src/ops/math.ops"
NREG(1) -= NREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 903 "src/ops/math.ops"
NREG(1) -= CONST(2)->u.number;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 907 "src/ops/math.ops"
VTABLE_i_subtract(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 911 "src/ops/math.ops"
VTABLE_i_subtract_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 911 "src/ops/math.ops"
VTABLE_i_subtract_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 915 "src/ops/math.ops"
VTABLE_i_subtract_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 915 "src/ops/math.ops"
VTABLE_i_subtract_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sub_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
IREG(1) = IREG(2) - IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
IREG(1) = cur_opcode[2] - IREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 919 "src/ops/math.ops"
IREG(1) = IREG(2) - cur_opcode[3];
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
NREG(1) = NREG(2) - NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
NREG(1) = CONST(2)->u.number - NREG(3);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 923 "src/ops/math.ops"
NREG(1) = NREG(2) - CONST(3)->u.number;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 927 "src/ops/math.ops"
PREG(1) = VTABLE_subtract(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 931 "src/ops/math.ops"
PREG(1) = VTABLE_subtract_int(interp, PREG(2), IREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 931 "src/ops/math.ops"
PREG(1) = VTABLE_subtract_int(interp, PREG(2), cur_opcode[3], PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_p_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 935 "src/ops/math.ops"
PREG(1) = VTABLE_subtract_float(interp, PREG(2), NREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sub_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 935 "src/ops/math.ops"
PREG(1) = VTABLE_subtract_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sqrt_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 947 "src/ops/math.ops"
NREG(1) = sqrt((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_acos_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 976 "src/ops/math.ops"
NREG(1) = acos((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_asec_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 988 "src/ops/math.ops"
NREG(1) = acos(((FLOATVAL)1) / ((FLOATVAL)NREG(2)));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_asin_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1001 "src/ops/math.ops"
NREG(1) = asin((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_atan_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1019 "src/ops/math.ops"
NREG(1) = atan((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_atan_n_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_atan_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
NREG(1) = atan2((FLOATVAL)CONST(2)->u.number, (FLOATVAL)NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_atan_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1023 "src/ops/math.ops"
NREG(1) = atan2((FLOATVAL)NREG(2), (FLOATVAL)CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_cos_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1035 "src/ops/math.ops"
NREG(1) = cos((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_cosh_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1047 "src/ops/math.ops"
NREG(1) = cosh((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_exp_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1060 "src/ops/math.ops"
NREG(1) = exp((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_ln_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1072 "src/ops/math.ops"
NREG(1) = log((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_log10_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1084 "src/ops/math.ops"
NREG(1) = log10((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_log2_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1096 "src/ops/math.ops"
FLOATVAL temp = log((FLOATVAL)2.0);
NREG(1) = log((FLOATVAL)NREG(2)) / temp;
@@ -23625,49 +24069,56 @@
opcode_t *
Parrot_sec_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1109 "src/ops/math.ops"
NREG(1) = ((FLOATVAL)1) / cos((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sech_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1121 "src/ops/math.ops"
NREG(1) = ((FLOATVAL)1) / cosh((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sin_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1133 "src/ops/math.ops"
NREG(1) = sin((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sinh_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1145 "src/ops/math.ops"
NREG(1) = sinh((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_tan_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1157 "src/ops/math.ops"
NREG(1) = tan((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_tanh_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1169 "src/ops/math.ops"
NREG(1) = tanh((FLOATVAL)NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_gcd_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1195 "src/ops/math.ops"
INTVAL p = 0;
INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
INTVAL b = IREG(3) < 0 ? -IREG(3) : IREG(3);
@@ -23694,7 +24145,8 @@
opcode_t *
Parrot_gcd_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1195 "src/ops/math.ops"
INTVAL p = 0;
INTVAL a = cur_opcode[2] < 0 ? -cur_opcode[2] : cur_opcode[2];
INTVAL b = IREG(3) < 0 ? -IREG(3) : IREG(3);
@@ -23721,7 +24173,8 @@
opcode_t *
Parrot_gcd_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1195 "src/ops/math.ops"
INTVAL p = 0;
INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
INTVAL b = cur_opcode[3] < 0 ? -cur_opcode[3] : cur_opcode[3];
@@ -23748,7 +24201,8 @@
opcode_t *
Parrot_lcm_i_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
INTVAL gcd = 0;
INTVAL p = 0;
INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -23778,7 +24232,8 @@
opcode_t *
Parrot_lcm_i_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
INTVAL gcd = 0;
INTVAL p = 0;
INTVAL a = cur_opcode[2] < 0 ? -cur_opcode[2] : cur_opcode[2];
@@ -23808,7 +24263,8 @@
opcode_t *
Parrot_lcm_i_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1228 "src/ops/math.ops"
INTVAL gcd = 0;
INTVAL p = 0;
INTVAL a = IREG(2) < 0 ? -IREG(2) : IREG(2);
@@ -23838,7 +24294,8 @@
opcode_t *
Parrot_fact_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1265 "src/ops/math.ops"
/* Coercing a negative to a UINT can get pretty ugly
* in this situation. */
INTVAL i = IREG(2);
@@ -23853,7 +24310,8 @@
opcode_t *
Parrot_fact_n_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 1277 "src/ops/math.ops"
/* Coercing a negative to a UINT can get pretty ugly
* in this situation. */
INTVAL i = IREG(2);
@@ -23868,13 +24326,16 @@
opcode_t *
Parrot_callmethodcc_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 50 "src/ops/object.ops"
PMC * const object = PREG(1);
STRING * const meth = SREG(2);
opcode_t * const next = cur_opcode + 3;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
PMC * const _class = VTABLE_get_class(interp, object);
@@ -23891,7 +24352,8 @@
}
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, method_pmc, next);
}
@@ -23900,13 +24362,16 @@
opcode_t *
Parrot_callmethodcc_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 50 "src/ops/object.ops"
PMC * const object = PREG(1);
STRING * const meth = CONST(2)->u.string;
opcode_t * const next = cur_opcode + 3;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
PMC * const _class = VTABLE_get_class(interp, object);
@@ -23923,7 +24388,8 @@
}
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, method_pmc, next);
}
@@ -23932,11 +24398,15 @@
opcode_t *
Parrot_callmethodcc_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 83 "src/ops/object.ops"
opcode_t *dest;
opcode_t * const next = cur_opcode + 3;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = PREG(1);
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, PREG(1));
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, PREG(2), next);
@@ -23945,13 +24415,16 @@
opcode_t *
Parrot_callmethod_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 97 "src/ops/object.ops"
PMC * const object = PREG(1);
STRING * const meth = SREG(2);
opcode_t * const next = cur_opcode + 4;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
@@ -23960,7 +24433,8 @@
VTABLE_get_string(interp, VTABLE_get_class(interp, object)));
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = PREG(3);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
@@ -23969,13 +24443,16 @@
opcode_t *
Parrot_callmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 97 "src/ops/object.ops"
PMC * const object = PREG(1);
STRING * const meth = CONST(2)->u.string;
opcode_t * const next = cur_opcode + 4;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
@@ -23984,7 +24461,8 @@
VTABLE_get_string(interp, VTABLE_get_class(interp, object)));
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = PREG(3);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
@@ -23993,14 +24471,18 @@
opcode_t *
Parrot_callmethod_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 122 "src/ops/object.ops"
PMC * const object = PREG(1);
PMC * const method_pmc = PREG(2);
opcode_t * const next = cur_opcode + 4;
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = PREG(3);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
return (opcode_t *)dest;
@@ -24008,13 +24490,16 @@
opcode_t *
Parrot_tailcallmethod_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/object.ops"
opcode_t * const next = cur_opcode + 3;
PMC * const object = PREG(1);
STRING * const meth = SREG(2);
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
dest = Parrot_ex_throw_from_op_args(interp, next, EXCEPTION_METHOD_NOT_FOUND,
@@ -24024,7 +24509,8 @@
else {
interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
return (opcode_t *)dest;
@@ -24032,13 +24518,16 @@
opcode_t *
Parrot_tailcallmethod_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 138 "src/ops/object.ops"
opcode_t * const next = cur_opcode + 3;
PMC * const object = PREG(1);
STRING * const meth = CONST(2)->u.string;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
dest = Parrot_ex_throw_from_op_args(interp, next, EXCEPTION_METHOD_NOT_FOUND,
@@ -24048,7 +24537,8 @@
else {
interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
return (opcode_t *)dest;
@@ -24056,108 +24546,125 @@
opcode_t *
Parrot_tailcallmethod_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 163 "src/ops/object.ops"
opcode_t * const next = cur_opcode + 3;
PMC * const object = PREG(1);
PMC * const method_pmc = PREG(2);
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
return (opcode_t *)dest;
}
opcode_t *
Parrot_addmethod_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/object.ops"
VTABLE_add_method(interp, PREG(1), SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_addmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/object.ops"
VTABLE_add_method(interp, PREG(1), CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_can_i_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 199 "src/ops/object.ops"
IREG(1) = VTABLE_can(interp, PREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_can_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 199 "src/ops/object.ops"
IREG(1) = VTABLE_can(interp, PREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_does_i_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 211 "src/ops/object.ops"
IREG(1) = SREG(3) ? VTABLE_does(interp, PREG(2), SREG(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_does_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 211 "src/ops/object.ops"
IREG(1) = CONST(3)->u.string ? VTABLE_does(interp, PREG(2), CONST(3)->u.string) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_does_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 222 "src/ops/object.ops"
IREG(1) = PREG(3) ? VTABLE_does_pmc(interp, PREG(2), PREG(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_does_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 222 "src/ops/object.ops"
IREG(1) = CONST(3)->u.key ? VTABLE_does_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isa_i_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 235 "src/ops/object.ops"
IREG(1) = SREG(3) ? VTABLE_isa(interp, PREG(2), SREG(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isa_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 235 "src/ops/object.ops"
IREG(1) = CONST(3)->u.string ? VTABLE_isa(interp, PREG(2), CONST(3)->u.string) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isa_i_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 239 "src/ops/object.ops"
IREG(1) = PREG(3) ? VTABLE_isa_pmc(interp, PREG(2), PREG(3)) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_isa_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 239 "src/ops/object.ops"
IREG(1) = CONST(3)->u.key ? VTABLE_isa_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_newclass_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "src/ops/object.ops"
PMC * const name = Parrot_pmc_new(interp, enum_class_String);
VTABLE_set_string_native(interp, name, SREG(2));
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
@@ -24166,7 +24673,8 @@
opcode_t *
Parrot_newclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "src/ops/object.ops"
PMC * const name = Parrot_pmc_new(interp, enum_class_String);
VTABLE_set_string_native(interp, name, CONST(2)->u.string);
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
@@ -24175,21 +24683,24 @@
opcode_t *
Parrot_newclass_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/object.ops"
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_newclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 263 "src/ops/object.ops"
PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_subclass_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, PREG(2));
opcode_t * const next = cur_opcode + 3;
@@ -24206,7 +24717,8 @@
opcode_t *
Parrot_subclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
opcode_t * const next = cur_opcode + 3;
@@ -24223,7 +24735,8 @@
opcode_t *
Parrot_subclass_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, PREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24240,7 +24753,8 @@
opcode_t *
Parrot_subclass_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
opcode_t * const next = cur_opcode + 4;
@@ -24257,7 +24771,8 @@
opcode_t *
Parrot_subclass_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, PREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24274,7 +24789,8 @@
opcode_t *
Parrot_subclass_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 294 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
opcode_t * const next = cur_opcode + 4;
@@ -24291,7 +24807,8 @@
opcode_t *
Parrot_subclass_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, PREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24308,7 +24825,8 @@
opcode_t *
Parrot_subclass_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
opcode_t * const next = cur_opcode + 4;
@@ -24325,7 +24843,8 @@
opcode_t *
Parrot_subclass_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, PREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24342,7 +24861,8 @@
opcode_t *
Parrot_subclass_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 309 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
opcode_t * const next = cur_opcode + 4;
@@ -24359,7 +24879,8 @@
opcode_t *
Parrot_subclass_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
opcode_t * const next = cur_opcode + 3;
@@ -24377,7 +24898,8 @@
opcode_t *
Parrot_subclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 337 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
opcode_t * const next = cur_opcode + 3;
@@ -24395,7 +24917,8 @@
opcode_t *
Parrot_subclass_p_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24413,7 +24936,8 @@
opcode_t *
Parrot_subclass_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
opcode_t * const next = cur_opcode + 4;
@@ -24431,7 +24955,8 @@
opcode_t *
Parrot_subclass_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24449,7 +24974,8 @@
opcode_t *
Parrot_subclass_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 353 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
opcode_t * const next = cur_opcode + 4;
@@ -24467,7 +24993,8 @@
opcode_t *
Parrot_subclass_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24485,7 +25012,8 @@
opcode_t *
Parrot_subclass_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
opcode_t * const next = cur_opcode + 4;
@@ -24503,7 +25031,8 @@
opcode_t *
Parrot_subclass_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
opcode_t * const next = cur_opcode + 4;
@@ -24521,7 +25050,8 @@
opcode_t *
Parrot_subclass_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 369 "src/ops/object.ops"
PMC * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
opcode_t * const next = cur_opcode + 4;
@@ -24539,63 +25069,72 @@
opcode_t *
Parrot_get_class_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 395 "src/ops/object.ops"
PREG(1) = Parrot_oo_get_class_str(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_get_class_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 395 "src/ops/object.ops"
PREG(1) = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_get_class_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 399 "src/ops/object.ops"
PREG(1) = Parrot_oo_get_class(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_get_class_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 399 "src/ops/object.ops"
PREG(1) = Parrot_oo_get_class(interp, CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_class_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 411 "src/ops/object.ops"
PREG(1) = VTABLE_get_class(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_addparent_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 424 "src/ops/object.ops"
VTABLE_add_parent(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_removeparent_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 434 "src/ops/object.ops"
VTABLE_remove_parent(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_addrole_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 444 "src/ops/object.ops"
VTABLE_add_role(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_addattribute_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/object.ops"
STRING * const class_name = string_from_literal(interp, "Class");
STRING * const role_name = string_from_literal(interp, "Role");
@@ -24612,7 +25151,8 @@
opcode_t *
Parrot_addattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 454 "src/ops/object.ops"
STRING * const class_name = string_from_literal(interp, "Class");
STRING * const role_name = string_from_literal(interp, "Role");
@@ -24629,147 +25169,168 @@
opcode_t *
Parrot_removeattribute_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/object.ops"
VTABLE_remove_attribute(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_removeattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 474 "src/ops/object.ops"
VTABLE_remove_attribute(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_getattribute_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 491 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_str(interp, PREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_getattribute_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 491 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_getattribute_p_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), SREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_getattribute_p_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, SREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_getattribute_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), CONST(4)->u.string);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_getattribute_p_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 495 "src/ops/object.ops"
PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, CONST(4)->u.string);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/object.ops"
VTABLE_set_attr_str(interp, PREG(1), SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_setattribute_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 511 "src/ops/object.ops"
VTABLE_set_attr_str(interp, PREG(1), CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_setattribute_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/object.ops"
VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), SREG(3), PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/object.ops"
VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3), PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/object.ops"
VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string, PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setattribute_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 515 "src/ops/object.ops"
VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string, PREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_inspect_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 533 "src/ops/object.ops"
PREG(1) = VTABLE_inspect(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_inspect_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 533 "src/ops/object.ops"
PREG(1) = VTABLE_inspect(interp, CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_inspect_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
PREG(1) = VTABLE_inspect_str(interp, PREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_inspect_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_inspect_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_inspect_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 537 "src/ops/object.ops"
PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_new_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 53 "src/ops/pmc.ops"
STRING * const name = SREG(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24780,7 +25341,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24792,7 +25353,8 @@
opcode_t *
Parrot_new_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 53 "src/ops/pmc.ops"
STRING * const name = CONST(2)->u.string;
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24803,7 +25365,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24815,7 +25377,8 @@
opcode_t *
Parrot_new_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
STRING * const name = SREG(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24826,7 +25389,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24838,7 +25401,8 @@
opcode_t *
Parrot_new_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
STRING * const name = CONST(2)->u.string;
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24849,7 +25413,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24861,7 +25425,8 @@
opcode_t *
Parrot_new_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
STRING * const name = SREG(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24872,7 +25437,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24884,7 +25449,8 @@
opcode_t *
Parrot_new_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 73 "src/ops/pmc.ops"
STRING * const name = CONST(2)->u.string;
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -24895,7 +25461,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
return (opcode_t *)dest;
@@ -24907,7 +25473,8 @@
opcode_t *
Parrot_new_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/pmc.ops"
PMC * const name_key = PREG(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -24916,7 +25483,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -24928,7 +25495,8 @@
opcode_t *
Parrot_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 93 "src/ops/pmc.ops"
PMC * const name_key = CONST(2)->u.key;
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -24937,7 +25505,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -24949,7 +25517,8 @@
opcode_t *
Parrot_new_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
PMC * const name_key = PREG(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -24958,7 +25527,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -24970,7 +25539,8 @@
opcode_t *
Parrot_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
PMC * const name_key = CONST(2)->u.key;
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -24979,7 +25549,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -24991,7 +25561,8 @@
opcode_t *
Parrot_new_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
PMC * const name_key = PREG(2);
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -25000,7 +25571,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -25012,7 +25583,8 @@
opcode_t *
Parrot_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 111 "src/ops/pmc.ops"
PMC * const name_key = CONST(2)->u.key;
PMC * const _class = Parrot_oo_get_class(interp, name_key);
@@ -25021,7 +25593,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
return (opcode_t *)dest;
@@ -25033,7 +25605,8 @@
opcode_t *
Parrot_root_new_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 144 "src/ops/pmc.ops"
PMC * const key = PREG(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25044,7 +25617,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25054,7 +25627,8 @@
opcode_t *
Parrot_root_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 144 "src/ops/pmc.ops"
PMC * const key = CONST(2)->u.key;
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25065,7 +25639,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25075,7 +25649,8 @@
opcode_t *
Parrot_root_new_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
PMC * const key = PREG(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25086,7 +25661,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PREG(3));
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25096,7 +25671,8 @@
opcode_t *
Parrot_root_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
PMC * const key = CONST(2)->u.key;
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25107,7 +25683,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, PREG(3));
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25117,7 +25693,8 @@
opcode_t *
Parrot_root_new_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
PMC * const key = PREG(2);
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25128,7 +25705,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25138,7 +25715,8 @@
opcode_t *
Parrot_root_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 162 "src/ops/pmc.ops"
PMC * const key = CONST(2)->u.key;
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, key);
@@ -25149,7 +25727,7 @@
if (!PMC_IS_NULL(classobj))
PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
return (opcode_t *)dest;
@@ -25159,32 +25737,36 @@
opcode_t *
Parrot_typeof_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/pmc.ops"
SREG(1) = VTABLE_name(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_typeof_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 195 "src/ops/pmc.ops"
PREG(1) = VTABLE_get_class(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_get_repr_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 207 "src/ops/pmc.ops"
SREG(1) = VTABLE_get_repr(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_find_method_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 234 "src/ops/pmc.ops"
opcode_t * const resume = cur_opcode + 4;
PREG(1) = VTABLE_find_method(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, resume,
+ 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'", SREG(3),
VTABLE_get_string(interp, VTABLE_get_class(interp, PREG(2))));
@@ -25195,11 +25777,12 @@
opcode_t *
Parrot_find_method_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 234 "src/ops/pmc.ops"
opcode_t * const resume = cur_opcode + 4;
PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, resume,
+ 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,
VTABLE_get_string(interp, VTABLE_get_class(interp, PREG(2))));
@@ -25210,427 +25793,488 @@
opcode_t *
Parrot_defined_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 266 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_defined_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 270 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_defined_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 270 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_defined_i_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_defined_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_exists_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_exists_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 278 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_exists_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_exists_i_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_exists_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 282 "src/ops/pmc.ops"
IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_delete_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/pmc.ops"
VTABLE_delete_keyed(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_delete_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/pmc.ops"
VTABLE_delete_keyed(interp, PREG(1), CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_delete_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 300 "src/ops/pmc.ops"
VTABLE_delete_keyed_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_delete_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 300 "src/ops/pmc.ops"
VTABLE_delete_keyed_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_elements_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/pmc.ops"
IREG(1) = VTABLE_elements(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 344 "src/ops/pmc.ops"
VTABLE_push_integer(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 344 "src/ops/pmc.ops"
VTABLE_push_integer(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 348 "src/ops/pmc.ops"
VTABLE_push_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 348 "src/ops/pmc.ops"
VTABLE_push_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/pmc.ops"
VTABLE_push_string(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 352 "src/ops/pmc.ops"
VTABLE_push_string(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_push_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 356 "src/ops/pmc.ops"
VTABLE_push_pmc(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_pop_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 374 "src/ops/pmc.ops"
IREG(1) = VTABLE_pop_integer(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_pop_n_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/pmc.ops"
NREG(1) = VTABLE_pop_float(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_pop_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 382 "src/ops/pmc.ops"
SREG(1) = VTABLE_pop_string(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_pop_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 386 "src/ops/pmc.ops"
PREG(1) = VTABLE_pop_pmc(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/pmc.ops"
VTABLE_unshift_integer(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 404 "src/ops/pmc.ops"
VTABLE_unshift_integer(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/pmc.ops"
VTABLE_unshift_float(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 408 "src/ops/pmc.ops"
VTABLE_unshift_float(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 412 "src/ops/pmc.ops"
VTABLE_unshift_string(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 412 "src/ops/pmc.ops"
VTABLE_unshift_string(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_unshift_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 416 "src/ops/pmc.ops"
VTABLE_unshift_pmc(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shift_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 434 "src/ops/pmc.ops"
IREG(1) = VTABLE_shift_integer(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shift_n_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 438 "src/ops/pmc.ops"
NREG(1) = VTABLE_shift_float(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shift_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 442 "src/ops/pmc.ops"
SREG(1) = VTABLE_shift_string(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_shift_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 446 "src/ops/pmc.ops"
PREG(1) = VTABLE_shift_pmc(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_splice_p_p_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_splice_p_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_splice_p_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
VTABLE_splice(interp, PREG(1), PREG(2), IREG(3), cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_splice_p_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 458 "src/ops/pmc.ops"
VTABLE_splice(interp, PREG(1), PREG(2), cur_opcode[3], cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_setprop_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 485 "src/ops/pmc.ops"
VTABLE_setprop(interp, PREG(1), SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_setprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 485 "src/ops/pmc.ops"
VTABLE_setprop(interp, PREG(1), CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_getprop_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 497 "src/ops/pmc.ops"
PREG(1) = VTABLE_getprop(interp, PREG(3), SREG(2));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_getprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 497 "src/ops/pmc.ops"
PREG(1) = VTABLE_getprop(interp, PREG(3), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_delprop_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/pmc.ops"
VTABLE_delprop(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_delprop_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 509 "src/ops/pmc.ops"
VTABLE_delprop(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_prophash_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 522 "src/ops/pmc.ops"
PREG(1) = VTABLE_getprops(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_freeze_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 552 "src/ops/pmc.ops"
SREG(1) = Parrot_freeze(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_thaw_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 556 "src/ops/pmc.ops"
PREG(1) = Parrot_thaw(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_thaw_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 556 "src/ops/pmc.ops"
PREG(1) = Parrot_thaw(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_add_multi_s_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_multi_sc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_multi_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_add_multi_sc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/pmc.ops"
Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_find_multi_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 597 "src/ops/pmc.ops"
PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_register_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 630 "src/ops/pmc.ops"
Parrot_pmc_gc_register(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_unregister_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 634 "src/ops/pmc.ops"
Parrot_pmc_gc_unregister(interp, PREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_box_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
VTABLE_set_integer_native(interp, PREG(1), IREG(2));
@@ -25638,7 +26282,8 @@
opcode_t *
Parrot_box_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 651 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
@@ -25646,7 +26291,8 @@
opcode_t *
Parrot_box_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 656 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
VTABLE_set_number_native(interp, PREG(1), NREG(2));
@@ -25654,7 +26300,8 @@
opcode_t *
Parrot_box_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 656 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
@@ -25662,7 +26309,8 @@
opcode_t *
Parrot_box_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 661 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
VTABLE_set_string_native(interp, PREG(1), SREG(2));
@@ -25670,7 +26318,8 @@
opcode_t *
Parrot_box_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 661 "src/ops/pmc.ops"
PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
@@ -25678,48 +26327,54 @@
opcode_t *
Parrot_iter_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 674 "src/ops/pmc.ops"
PREG(1) = VTABLE_get_iter(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_morph_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 686 "src/ops/pmc.ops"
VTABLE_morph(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_morph_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 686 "src/ops/pmc.ops"
VTABLE_morph(interp, PREG(1), CONST(2)->u.key);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_clone_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 28 "src/ops/set.ops"
/* cloning a NULL STRING produces an empty STRING; TT #964 */
SREG(1) = SREG(2)
- ? Parrot_str_copy(interp, SREG(2))
+ ? SREG(2)
: Parrot_str_new(interp, NULL, 0);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_clone_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 28 "src/ops/set.ops"
/* cloning a NULL STRING produces an empty STRING; TT #964 */
SREG(1) = CONST(2)->u.string
- ? Parrot_str_copy(interp, CONST(2)->u.string)
+ ? CONST(2)->u.string
: Parrot_str_new(interp, NULL, 0);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_exchange_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 51 "src/ops/set.ops"
const INTVAL temp = IREG(1);
IREG(1) = IREG(2);
IREG(2) = temp;
@@ -25728,7 +26383,8 @@
opcode_t *
Parrot_exchange_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 57 "src/ops/set.ops"
PMC * const temp = PREG(1);
PREG(1) = PREG(2);
PREG(2) = temp;
@@ -25737,7 +26393,8 @@
opcode_t *
Parrot_exchange_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 63 "src/ops/set.ops"
FLOATVAL temp = NREG(1);
NREG(1) = NREG(2);
NREG(2) = temp;
@@ -25746,7 +26403,8 @@
opcode_t *
Parrot_exchange_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/set.ops"
STRING * const temp = SREG(1);
SREG(1) = SREG(2);
SREG(2) = temp;
@@ -25755,288 +26413,328 @@
opcode_t *
Parrot_set_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/set.ops"
IREG(1) = IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 121 "src/ops/set.ops"
IREG(1) = cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/set.ops"
IREG(1) = (INTVAL)(NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 125 "src/ops/set.ops"
IREG(1) = (INTVAL)(CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/set.ops"
IREG(1) = Parrot_str_to_int(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 129 "src/ops/set.ops"
IREG(1) = Parrot_str_to_int(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/set.ops"
NREG(1) = NREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 133 "src/ops/set.ops"
NREG(1) = CONST(2)->u.number;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/set.ops"
NREG(1) = (FLOATVAL)IREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/set.ops"
NREG(1) = (FLOATVAL)cur_opcode[2];
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/set.ops"
NREG(1) = Parrot_str_to_num(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 141 "src/ops/set.ops"
NREG(1) = Parrot_str_to_num(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_n_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 145 "src/ops/set.ops"
NREG(1) = VTABLE_get_number(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 149 "src/ops/set.ops"
SREG(1) = VTABLE_get_string(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 153 "src/ops/set.ops"
SREG(1) = SREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_copy(interp, CONST(2)->u.string);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 157 "src/ops/set.ops"
+ SREG(1) = CONST(2)->u.string;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 161 "src/ops/set.ops"
SREG(1) = Parrot_str_from_int(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 161 "src/ops/set.ops"
SREG(1) = Parrot_str_from_int(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 165 "src/ops/set.ops"
SREG(1) = Parrot_str_from_num(interp, NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_s_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 165 "src/ops/set.ops"
SREG(1) = Parrot_str_from_num(interp, CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 169 "src/ops/set.ops"
PREG(1) = CONST(2)->u.key;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 173 "src/ops/set.ops"
PREG(1) = PREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 177 "src/ops/set.ops"
VTABLE_set_integer_native(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 177 "src/ops/set.ops"
VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 181 "src/ops/set.ops"
VTABLE_set_number_native(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 181 "src/ops/set.ops"
VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 185 "src/ops/set.ops"
VTABLE_set_string_native(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_string_native(interp, PREG(1),
- Parrot_str_copy(interp, CONST(2)->u.string));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 189 "src/ops/set.ops"
+ VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_set_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 192 "src/ops/set.ops"
IREG(1) = VTABLE_get_integer(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 233 "src/ops/set.ops"
VTABLE_assign_pmc(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 237 "src/ops/set.ops"
VTABLE_set_integer_native(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 237 "src/ops/set.ops"
VTABLE_set_integer_native(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/set.ops"
VTABLE_set_number_native(interp, PREG(1), NREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/set.ops"
VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "src/ops/set.ops"
VTABLE_assign_string_native(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 245 "src/ops/set.ops"
VTABLE_assign_string_native(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_set(interp, SREG(1), SREG(2));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 249 "src/ops/set.ops"
+ SREG(1) = SREG(2);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_assign_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_set(interp, SREG(1), CONST(2)->u.string);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 249 "src/ops/set.ops"
+ SREG(1) = CONST(2)->u.string;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_setref_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 253 "src/ops/set.ops"
VTABLE_set_pmc(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_deref_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 257 "src/ops/set.ops"
PREG(1) = VTABLE_get_pmc(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_setp_ind_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_PMC(interp, IREG(1)) = PREG(2);
@@ -26045,7 +26743,8 @@
opcode_t *
Parrot_setp_ind_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 275 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_PMC(interp, cur_opcode[1]) = PREG(2);
@@ -26054,7 +26753,8 @@
opcode_t *
Parrot_setn_ind_i_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_NUM(interp, IREG(1)) = NREG(2);
@@ -26063,7 +26763,8 @@
opcode_t *
Parrot_setn_ind_ic_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_NUM(interp, cur_opcode[1]) = NREG(2);
@@ -26072,7 +26773,8 @@
opcode_t *
Parrot_setn_ind_i_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_NUM(interp, IREG(1)) = CONST(2)->u.number;
@@ -26081,7 +26783,8 @@
opcode_t *
Parrot_setn_ind_ic_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 289 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_NUM(interp, cur_opcode[1]) = CONST(2)->u.number;
@@ -26090,7 +26793,8 @@
opcode_t *
Parrot_sets_ind_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_STR(interp, IREG(1)) = SREG(2);
@@ -26099,7 +26803,8 @@
opcode_t *
Parrot_sets_ind_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_STR(interp, cur_opcode[1]) = SREG(2);
@@ -26108,7 +26813,8 @@
opcode_t *
Parrot_sets_ind_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_STR(interp, IREG(1)) = CONST(2)->u.string;
@@ -26117,7 +26823,8 @@
opcode_t *
Parrot_sets_ind_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 303 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_STR(interp, cur_opcode[1]) = CONST(2)->u.string;
@@ -26126,7 +26833,8 @@
opcode_t *
Parrot_seti_ind_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_INT(interp, IREG(1)) = IREG(2);
@@ -26135,7 +26843,8 @@
opcode_t *
Parrot_seti_ind_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_INT(interp, cur_opcode[1]) = IREG(2);
@@ -26144,7 +26853,8 @@
opcode_t *
Parrot_seti_ind_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
if (IREG(1) < 0 || IREG(1) >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_INT(interp, IREG(1)) = cur_opcode[2];
@@ -26153,7 +26863,8 @@
opcode_t *
Parrot_seti_ind_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/set.ops"
if (cur_opcode[1] < 0 || cur_opcode[1] >= NUM_REGISTERS)
PANIC(interp, "Out of bound register access");
REG_INT(interp, cur_opcode[1]) = cur_opcode[2];
@@ -26162,339 +26873,387 @@
opcode_t *
Parrot_set_p_ki_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
VTABLE_set_integer_keyed_int(interp, PREG(1), IREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/set.ops"
VTABLE_set_integer_keyed_int(interp, PREG(1), cur_opcode[2], cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 347 "src/ops/set.ops"
VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 351 "src/ops/set.ops"
VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_ki_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 355 "src/ops/set.ops"
VTABLE_set_pmc_keyed_int(interp, PREG(1), IREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 355 "src/ops/set.ops"
VTABLE_set_pmc_keyed_int(interp, PREG(1), cur_opcode[2], PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_i_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 379 "src/ops/set.ops"
IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_i_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 379 "src/ops/set.ops"
IREG(1) = VTABLE_get_integer_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_n_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/set.ops"
NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_n_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/set.ops"
NREG(1) = VTABLE_get_number_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_s_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 387 "src/ops/set.ops"
SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_s_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 387 "src/ops/set.ops"
SREG(1) = VTABLE_get_string_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_p_ki(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/set.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_p_kic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 391 "src/ops/set.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
VTABLE_set_integer_keyed(interp, PREG(1), PREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 415 "src/ops/set.ops"
VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
VTABLE_set_number_keyed(interp, PREG(1), PREG(2), NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, NREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
VTABLE_set_number_keyed(interp, PREG(1), PREG(2), CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/set.ops"
VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.number);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
VTABLE_set_string_keyed(interp, PREG(1), PREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
VTABLE_set_string_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 423 "src/ops/set.ops"
VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_k_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 427 "src/ops/set.ops"
VTABLE_set_pmc_keyed(interp, PREG(1), PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_kc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 427 "src/ops/set.ops"
VTABLE_set_pmc_keyed(interp, PREG(1), CONST(2)->u.key, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_i_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/set.ops"
IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/set.ops"
IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_n_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/set.ops"
NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_n_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/set.ops"
NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_s_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "src/ops/set.ops"
SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_s_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 459 "src/ops/set.ops"
SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_p_k(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/set.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_set_p_p_kc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/set.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_clone_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 473 "src/ops/set.ops"
PREG(1) = VTABLE_clone(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_clone_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 483 "src/ops/set.ops"
PREG(1) = VTABLE_clone_pmc(interp, PREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_clone_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 483 "src/ops/set.ops"
PREG(1) = VTABLE_clone_pmc(interp, PREG(2), CONST(3)->u.key);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_copy_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 493 "src/ops/set.ops"
if (PMC_IS_NULL(PREG(1))) {
- opcode_t *dest = cur_opcode + 3;
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const dest = cur_opcode + 3;
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_NULL_REG_ACCESS, "Null PMC in copy");
return (opcode_t *)handler;
}
@@ -26513,7 +27272,6 @@
/* don't let the clone's destruction destroy the destination's data */
PObj_custom_destroy_CLEAR(clone);
PMC_data(clone) = NULL;
- PMC_sync(clone) = NULL;
PMC_metadata(clone) = NULL;
/* Restore metadata. */
@@ -26531,105 +27289,120 @@
opcode_t *
Parrot_null_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = NULL;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 561 "src/ops/set.ops"
+ SREG(1) = STRINGNULL;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_null_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 565 "src/ops/set.ops"
IREG(1) = 0;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_null_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 569 "src/ops/set.ops"
PREG(1) = PMCNULL;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_null_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/set.ops"
NREG(1) = 0;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_cleari(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 595 "src/ops/set.ops"
Parrot_clear_i(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_clearn(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 599 "src/ops/set.ops"
Parrot_clear_n(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_clears(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 603 "src/ops/set.ops"
Parrot_clear_s(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_clearp(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 607 "src/ops/set.ops"
Parrot_clear_p(interp);
return (opcode_t *)cur_opcode + 1;}
opcode_t *
Parrot_ord_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/string.ops"
IREG(1) = string_ord(interp, SREG(2), 0);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_ord_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/string.ops"
IREG(1) = string_ord(interp, CONST(2)->u.string, 0);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_ord_i_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
IREG(1) = string_ord(interp, SREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ord_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
IREG(1) = string_ord(interp, CONST(2)->u.string, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ord_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
IREG(1) = string_ord(interp, SREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_ord_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 44 "src/ops/string.ops"
IREG(1) = string_ord(interp, CONST(2)->u.string, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chr_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/string.ops"
STRING * const s = string_chr(interp, (UINTVAL)IREG(2));
SREG(1) = s;
@@ -26637,134 +27410,141 @@
opcode_t *
Parrot_chr_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 55 "src/ops/string.ops"
STRING * const s = string_chr(interp, (UINTVAL)cur_opcode[2]);
SREG(1) = s;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_chopn_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_chopn_inplace(interp, SREG(1), IREG(2));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_chopn_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_chopn_inplace(interp, SREG(1), cur_opcode[2]);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_chopn_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
SREG(1) = Parrot_str_chopn(interp, SREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chopn_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chopn_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
SREG(1) = Parrot_str_chopn(interp, SREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_chopn_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 69 "src/ops/string.ops"
SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_append(interp, SREG(1), SREG(2));
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 92 "src/ops/string.ops"
+INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
+ fprintf(stderr,"Warning: instruction 'concat' is deprecated\n");
+ SREG(1) = Parrot_str_concat(interp, SREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_concat_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_append(interp, SREG(1), CONST(2)->u.string);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 92 "src/ops/string.ops"
+INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
+ fprintf(stderr,"Warning: instruction 'concat' is deprecated\n");
+ SREG(1) = Parrot_str_concat(interp, SREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_concat_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 96 "src/ops/string.ops"
VTABLE_i_concatenate(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_concat_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 100 "src/ops/string.ops"
VTABLE_i_concatenate_str(interp, PREG(1), SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_concat_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 100 "src/ops/string.ops"
VTABLE_i_concatenate_str(interp, PREG(1), CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_concat_s_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, SREG(2), SREG(3), 1);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
+ SREG(1) = Parrot_str_concat(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, CONST(2)->u.string, SREG(3), 1);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
+ SREG(1) = Parrot_str_concat(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3)->u.string, 1);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 104 "src/ops/string.ops"
+ SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/string.ops"
PREG(1) = VTABLE_concatenate_str(interp, PREG(2), SREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 108 "src/ops/string.ops"
PREG(1) = VTABLE_concatenate_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_concat_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 112 "src/ops/string.ops"
PREG(1) = VTABLE_concatenate(interp, PREG(2), PREG(3), PREG(1));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_repeat_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
if (IREG(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26777,7 +27557,8 @@
opcode_t *
Parrot_repeat_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
if (IREG(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26790,7 +27571,8 @@
opcode_t *
Parrot_repeat_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
if (cur_opcode[3] < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26803,7 +27585,8 @@
opcode_t *
Parrot_repeat_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 127 "src/ops/string.ops"
if (cur_opcode[3] < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26816,7 +27599,8 @@
opcode_t *
Parrot_repeat_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/string.ops"
if (IREG(3) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26829,7 +27613,8 @@
opcode_t *
Parrot_repeat_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 137 "src/ops/string.ops"
if (cur_opcode[3] < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26842,7 +27627,8 @@
opcode_t *
Parrot_repeat_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/string.ops"
if (VTABLE_get_integer(interp, PREG(3)) < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_NEG_REPEAT,
@@ -26855,45 +27641,51 @@
opcode_t *
Parrot_repeat_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 166 "src/ops/string.ops"
VTABLE_i_repeat_int(interp, PREG(1), IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_repeat_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 166 "src/ops/string.ops"
VTABLE_i_repeat_int(interp, PREG(1), cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_repeat_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/string.ops"
VTABLE_i_repeat(interp, PREG(1), PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_length_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/string.ops"
IREG(1) = SREG(2) ? Parrot_str_byte_length(interp, SREG(2)) : 0;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_length_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/string.ops"
IREG(1) = CONST(2)->u.string ? Parrot_str_byte_length(interp, CONST(2)->u.string) : 0;
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_bytelength_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/string.ops"
UINTVAL n;
- STRING * const s = SREG(2);
- if (!s)
+ const STRING * const s = SREG(2);
+ if (STRING_IS_NULL(s))
n = 0;
else {
n = s->bufused;
@@ -26905,10 +27697,11 @@
opcode_t *
Parrot_bytelength_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/string.ops"
UINTVAL n;
- STRING * const s = CONST(2)->u.string;
- if (!s)
+ const STRING * const s = CONST(2)->u.string;
+ if (STRING_IS_NULL(s))
n = 0;
else {
n = s->bufused;
@@ -26920,347 +27713,396 @@
opcode_t *
Parrot_pin_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 214 "src/ops/string.ops"
Parrot_str_pin(interp, SREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_unpin_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 226 "src/ops/string.ops"
Parrot_str_unpin(interp, SREG(1));
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_substr_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 259 "src/ops/string.ops"
const INTVAL len = Parrot_str_byte_length(interp, SREG(2));
- SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), len, &SREG(1), 0);
+ SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), len);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_substr_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 259 "src/ops/string.ops"
const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
- SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), len, &SREG(1), 0);
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), len);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_substr_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 259 "src/ops/string.ops"
const INTVAL len = Parrot_str_byte_length(interp, SREG(2));
- SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], len, &SREG(1), 0);
+ SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], len);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_substr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 259 "src/ops/string.ops"
const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
- SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], len, &SREG(1), 0);
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], len);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_substr_s_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), IREG(4), &SREG(1), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, SREG(2), IREG(3), cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, SREG(2), cur_opcode[3], cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_substr_s_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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), 0);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 264 "src/ops/string.ops"
+ SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
-Parrot_substr_s_s_i_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), SREG(5), &SREG(1));
+Parrot_substr_s_p_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/string.ops"
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), IREG(4));
-return (opcode_t *)cur_opcode + 6;}
+return (opcode_t *)cur_opcode + 5;}
opcode_t *
-Parrot_substr_s_s_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_substr_s_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/string.ops"
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], IREG(4));
-return (opcode_t *)cur_opcode + 6;}
+return (opcode_t *)cur_opcode + 5;}
opcode_t *
-Parrot_substr_s_s_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_substr_s_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/string.ops"
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), cur_opcode[4]);
-return (opcode_t *)cur_opcode + 6;}
+return (opcode_t *)cur_opcode + 5;}
opcode_t *
-Parrot_substr_s_s_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_substr_s_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 268 "src/ops/string.ops"
+ SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], cur_opcode[4]);
-return (opcode_t *)cur_opcode + 6;}
+return (opcode_t *)cur_opcode + 5;}
opcode_t *
-Parrot_substr_s_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_replace_s_s_i_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_replace_s_sc_i_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_replace_s_s_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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_replace_s_sc_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), SREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_i_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), IREG(2), IREG(3), SREG(4), NULL);
+Parrot_replace_s_s_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], SREG(5));
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), cur_opcode[2], IREG(3), SREG(4), NULL);
+Parrot_replace_s_sc_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], SREG(5));
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), IREG(2), cur_opcode[3], SREG(4), NULL);
+Parrot_replace_s_s_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], SREG(5));
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), cur_opcode[2], cur_opcode[3], SREG(4), NULL);
+Parrot_replace_s_sc_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], SREG(5));
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), IREG(2), IREG(3), CONST(4)->u.string, NULL);
+Parrot_replace_s_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), cur_opcode[2], IREG(3), CONST(4)->u.string, NULL);
+Parrot_replace_s_sc_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), IREG(2), cur_opcode[3], CONST(4)->u.string, NULL);
+Parrot_replace_s_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- (void)Parrot_str_replace(interp, SREG(1), cur_opcode[2], cur_opcode[3], CONST(4)->u.string, NULL);
+Parrot_replace_s_sc_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_p_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), IREG(4));
+Parrot_replace_s_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_p_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), cur_opcode[3], IREG(4));
+Parrot_replace_s_sc_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_p_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = VTABLE_substr_str(interp, PREG(2), IREG(3), cur_opcode[4]);
+Parrot_replace_s_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
-Parrot_substr_s_p_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * 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]);
+Parrot_replace_s_sc_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP) {
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 272 "src/ops/string.ops"
+ SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
-return (opcode_t *)cur_opcode + 5;}
+return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_index_i_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/string.ops"
IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/string.ops"
IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 292 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, 0) : -1;
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_index_i_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, IREG(4)) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (SREG(2) && SREG(3)) ? Parrot_str_find_index(interp, SREG(2), SREG(3), cur_opcode[4]) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), cur_opcode[4]) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, cur_opcode[4]) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_index_i_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 296 "src/ops/string.ops"
IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, cur_opcode[4]) : -1;
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_sprintf_s_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 316 "src/ops/string.ops"
SREG(1)=Parrot_psprintf(interp, SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sprintf_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 316 "src/ops/string.ops"
SREG(1)=Parrot_psprintf(interp, CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_sprintf_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 320 "src/ops/string.ops"
VTABLE_set_string_native(interp, PREG(1),
Parrot_psprintf(interp, VTABLE_get_string(interp, PREG(2)), PREG(3)));
@@ -27268,28 +28110,32 @@
opcode_t *
Parrot_new_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 334 "src/ops/string.ops"
SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_new_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/string.ops"
SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_new_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/string.ops"
SREG(1) = Parrot_str_new_noinit(interp, enum_stringrep_one, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_stringinfo_i_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 368 "src/ops/string.ops"
if (SREG(2) == NULL)
IREG(1) = 0;
else {
@@ -27326,7 +28172,8 @@
opcode_t *
Parrot_stringinfo_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 368 "src/ops/string.ops"
if (CONST(2)->u.string == NULL)
IREG(1) = 0;
else {
@@ -27363,7 +28210,8 @@
opcode_t *
Parrot_stringinfo_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 368 "src/ops/string.ops"
if (SREG(2) == NULL)
IREG(1) = 0;
else {
@@ -27400,7 +28248,8 @@
opcode_t *
Parrot_stringinfo_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 368 "src/ops/string.ops"
if (CONST(2)->u.string == NULL)
IREG(1) = 0;
else {
@@ -27437,142 +28286,136 @@
opcode_t *
Parrot_upcase_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 409 "src/ops/string.ops"
SREG(1) = Parrot_str_upcase(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_upcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 409 "src/ops/string.ops"
SREG(1) = Parrot_str_upcase(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_upcase_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_upcase_inplace(interp, SREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
Parrot_downcase_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/string.ops"
SREG(1) = Parrot_str_downcase(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_downcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 419 "src/ops/string.ops"
SREG(1) = Parrot_str_downcase(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_downcase_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_downcase_inplace(interp, SREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
Parrot_titlecase_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/string.ops"
SREG(1) = Parrot_str_titlecase(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_titlecase_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 429 "src/ops/string.ops"
SREG(1) = Parrot_str_titlecase(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_titlecase_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- Parrot_str_titlecase_inplace(interp, SREG(1));
-
-return (opcode_t *)cur_opcode + 2;}
-
-opcode_t *
Parrot_join_s_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/string.ops"
SREG(1) = Parrot_str_join(interp, SREG(2), PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_join_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 451 "src/ops/string.ops"
SREG(1) = Parrot_str_join(interp, CONST(2)->u.string, PREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/string.ops"
PREG(1) = Parrot_str_split(interp, SREG(2), SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/string.ops"
PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, SREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/string.ops"
PREG(1) = Parrot_str_split(interp, SREG(2), CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_split_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 455 "src/ops/string.ops"
PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, CONST(3)->u.string);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_charset_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 482 "src/ops/string.ops"
IREG(1) = Parrot_charset_number_of_str(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 482 "src/ops/string.ops"
IREG(1) = Parrot_charset_number_of_str(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_charsetname_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = Parrot_charset_name(interp, IREG(2));
- SREG(1) = name ? Parrot_str_copy(interp, name) : NULL;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 486 "src/ops/string.ops"
+ SREG(1) = Parrot_charset_name(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_charsetname_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = Parrot_charset_name(interp, cur_opcode[2]);
- SREG(1) = name ? Parrot_str_copy(interp, name) : NULL;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 486 "src/ops/string.ops"
+ SREG(1) = Parrot_charset_name(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_find_charset_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 490 "src/ops/string.ops"
const INTVAL n = Parrot_charset_number(interp, SREG(2));
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27586,7 +28429,8 @@
opcode_t *
Parrot_find_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 490 "src/ops/string.ops"
const INTVAL n = Parrot_charset_number(interp, CONST(2)->u.string);
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27599,84 +28443,73 @@
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_trans_charset_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_charset(interp, SREG(1), IREG(2), NULL);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_trans_charset_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_charset(interp, SREG(1), cur_opcode[2], NULL);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_trans_charset_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_charset(interp, SREG(2), IREG(3), dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 501 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_charset(interp, SREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_charset_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, IREG(3), dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 501 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_charset_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_charset(interp, SREG(2), cur_opcode[3], dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 501 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_charset(interp, SREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_charset_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING *dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, cur_opcode[3], dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 501 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_encoding_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/string.ops"
IREG(1) = Parrot_encoding_number_of_str(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 528 "src/ops/string.ops"
IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_encodingname_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = Parrot_encoding_name(interp, IREG(2));
- SREG(1) = name ? Parrot_str_copy(interp, name) : NULL;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "src/ops/string.ops"
+ SREG(1) = Parrot_encoding_name(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_encodingname_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const name = Parrot_encoding_name(interp, cur_opcode[2]);
- SREG(1) = name ? Parrot_str_copy(interp, name) : NULL;
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 532 "src/ops/string.ops"
+ SREG(1) = Parrot_encoding_name(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_find_encoding_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 536 "src/ops/string.ops"
const INTVAL n = Parrot_encoding_number(interp, SREG(2));
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27690,7 +28523,8 @@
opcode_t *
Parrot_find_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 536 "src/ops/string.ops"
const INTVAL n = Parrot_encoding_number(interp, CONST(2)->u.string);
if (n < 0) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
@@ -27703,383 +28537,417 @@
return (opcode_t *)cur_opcode + 3;}
opcode_t *
-Parrot_trans_encoding_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_encoding(interp, SREG(1), IREG(2), NULL);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_trans_encoding_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- SREG(1) = Parrot_str_change_encoding(interp, SREG(1), cur_opcode[2], NULL);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_trans_encoding_s_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_encoding(interp, SREG(2), IREG(3), dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 547 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_encoding(interp, SREG(2), IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_encoding_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, IREG(3), dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 547 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, IREG(3));
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_encoding_s_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_encoding(interp, SREG(2), cur_opcode[3], dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 547 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_encoding(interp, SREG(2), cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_trans_encoding_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- STRING * const dest = Parrot_gc_new_string_header(interp, 0);
- SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, cur_opcode[3], dest);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 547 "src/ops/string.ops"
+ SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, cur_opcode[3]);
return (opcode_t *)cur_opcode + 4;}
opcode_t *
Parrot_is_cclass_i_i_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[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) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4));
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_i_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, IREG(2), SREG(3), cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_is_cclass_i_ic_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 559 "src/ops/string.ops"
IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4]);
return (opcode_t *)cur_opcode + 5;}
opcode_t *
Parrot_find_cclass_i_i_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 573 "src/ops/string.ops"
IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), SREG(3), cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_s_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], SREG(3), cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_find_not_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 587 "src/ops/string.ops"
IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
return (opcode_t *)cur_opcode + 6;}
opcode_t *
Parrot_escape_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 603 "src/ops/string.ops"
SREG(1) = Parrot_str_escape(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_compose_s_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 607 "src/ops/string.ops"
SREG(1) = Parrot_str_compose(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_compose_s_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 607 "src/ops/string.ops"
SREG(1) = Parrot_str_compose(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_spawnw_i_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 42 "src/ops/sys.ops"
IREG(1) = Parrot_Run_OS_Command(interp, SREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_spawnw_i_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 42 "src/ops/sys.ops"
IREG(1) = Parrot_Run_OS_Command(interp, CONST(2)->u.string);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_spawnw_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 46 "src/ops/sys.ops"
IREG(1) = Parrot_Run_OS_Command_Argv(interp, PREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_err_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 67 "src/ops/sys.ops"
IREG(1) = errno;
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_err_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 71 "src/ops/sys.ops"
const char * const tmp = strerror(errno);
SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
@@ -28087,7 +28955,8 @@
opcode_t *
Parrot_err_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 76 "src/ops/sys.ops"
const char * const tmp = strerror(IREG(2));
SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
@@ -28095,7 +28964,8 @@
opcode_t *
Parrot_err_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 76 "src/ops/sys.ops"
const char * const tmp = strerror(cur_opcode[2]);
SREG(1) = string_make(interp, tmp, strlen(tmp), "ascii", 0);
@@ -28103,21 +28973,24 @@
opcode_t *
Parrot_time_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 91 "src/ops/sys.ops"
IREG(1) = Parrot_intval_time();
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_time_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 105 "src/ops/sys.ops"
NREG(1) = Parrot_floatval_time();
return (opcode_t *)cur_opcode + 2;}
opcode_t *
Parrot_gmtime_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) IREG(2);
char resultbuffer[26];
@@ -28129,7 +29002,8 @@
opcode_t *
Parrot_gmtime_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 178 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) cur_opcode[2];
char resultbuffer[26];
@@ -28141,7 +29015,8 @@
opcode_t *
Parrot_localtime_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) IREG(2);
char resultbuffer[26];
@@ -28153,7 +29028,8 @@
opcode_t *
Parrot_localtime_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 187 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) cur_opcode[2];
char resultbuffer[26];
@@ -28165,7 +29041,8 @@
opcode_t *
Parrot_decodetime_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) IREG(2);
Parrot_gmtime_r(&t, &tm);
@@ -28175,7 +29052,8 @@
opcode_t *
Parrot_decodetime_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 196 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) cur_opcode[2];
Parrot_gmtime_r(&t, &tm);
@@ -28185,7 +29063,8 @@
opcode_t *
Parrot_decodelocaltime_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 203 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) IREG(2);
Parrot_localtime_r(&t, &tm);
@@ -28195,7 +29074,8 @@
opcode_t *
Parrot_decodelocaltime_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 203 "src/ops/sys.ops"
struct tm tm;
const time_t t = (time_t) cur_opcode[2];
Parrot_localtime_r(&t, &tm);
@@ -28205,35 +29085,40 @@
opcode_t *
Parrot_sysinfo_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 267 "src/ops/sys.ops"
SREG(1) = sysinfo_s(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sysinfo_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 267 "src/ops/sys.ops"
SREG(1) = sysinfo_s(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sysinfo_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 271 "src/ops/sys.ops"
IREG(1) = sysinfo_i(interp, IREG(2));
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sysinfo_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 271 "src/ops/sys.ops"
IREG(1) = sysinfo_i(interp, cur_opcode[2]);
return (opcode_t *)cur_opcode + 3;}
opcode_t *
Parrot_sleep_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 285 "src/ops/sys.ops"
opcode_t *next = cur_opcode + 2;
if (IREG(1) < 0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -28247,7 +29132,8 @@
opcode_t *
Parrot_sleep_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 285 "src/ops/sys.ops"
opcode_t *next = cur_opcode + 2;
if (cur_opcode[1] < 0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -28261,7 +29147,8 @@
opcode_t *
Parrot_sleep_n(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 297 "src/ops/sys.ops"
opcode_t *next = cur_opcode + 2;
if (NREG(1) < 0.0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -28275,7 +29162,8 @@
opcode_t *
Parrot_sleep_nc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 297 "src/ops/sys.ops"
opcode_t *next = cur_opcode + 2;
if (CONST(1)->u.number < 0.0) {
opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -28289,7 +29177,8 @@
opcode_t *
Parrot_sizeof_i_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/sys.ops"
INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
fprintf(stderr,"Warning: instruction 'sizeof' is deprecated\n");
if (IREG(2) < enum_first_type || IREG(2) >= enum_last_type)
@@ -28301,7 +29190,8 @@
opcode_t *
Parrot_sizeof_i_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 317 "src/ops/sys.ops"
INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
fprintf(stderr,"Warning: instruction 'sizeof' is deprecated\n");
if (cur_opcode[2] < enum_first_type || cur_opcode[2] >= enum_last_type)
@@ -28313,7 +29203,8 @@
opcode_t *
Parrot_store_lex_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/var.ops"
PMC * const ctx = CURRENT_CONTEXT(interp);
STRING * const lex_name = SREG(1);
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
@@ -28330,7 +29221,8 @@
opcode_t *
Parrot_store_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 40 "src/ops/var.ops"
PMC * const ctx = CURRENT_CONTEXT(interp);
STRING * const lex_name = CONST(1)->u.string;
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
@@ -28347,7 +29239,8 @@
opcode_t *
Parrot_store_dynamic_lex_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 65 "src/ops/var.ops"
STRING * const lex_name = SREG(1);
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28368,7 +29261,8 @@
opcode_t *
Parrot_store_dynamic_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 65 "src/ops/var.ops"
STRING * const lex_name = CONST(1)->u.string;
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28389,7 +29283,8 @@
opcode_t *
Parrot_find_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 94 "src/ops/var.ops"
PMC * const ctx = CURRENT_CONTEXT(interp);
STRING * const lex_name = SREG(2);
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
@@ -28410,7 +29305,8 @@
opcode_t *
Parrot_find_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 94 "src/ops/var.ops"
PMC * const ctx = CURRENT_CONTEXT(interp);
STRING * const lex_name = CONST(2)->u.string;
PMC * const lex_pad = Parrot_find_pad(interp, lex_name, ctx);
@@ -28431,7 +29327,8 @@
opcode_t *
Parrot_find_dynamic_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 123 "src/ops/var.ops"
STRING * const lex_name = SREG(2);
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28449,7 +29346,8 @@
opcode_t *
Parrot_find_dynamic_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 123 "src/ops/var.ops"
STRING * const lex_name = CONST(2)->u.string;
PMC * const ctx =
Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
@@ -28467,7 +29365,8 @@
opcode_t *
Parrot_find_caller_lex_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/var.ops"
STRING * const lex_name = SREG(2);
PMC * ctx = CURRENT_CONTEXT(interp);
PMC * result = PMCNULL;
@@ -28488,7 +29387,8 @@
opcode_t *
Parrot_find_caller_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 147 "src/ops/var.ops"
STRING * const lex_name = CONST(2)->u.string;
PMC * ctx = CURRENT_CONTEXT(interp);
PMC * result = PMCNULL;
@@ -28509,7 +29409,8 @@
opcode_t *
Parrot_get_namespace_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 186 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PREG(1) = cur_ns;
@@ -28517,7 +29418,8 @@
opcode_t *
Parrot_get_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, PREG(2));
@@ -28527,7 +29429,8 @@
opcode_t *
Parrot_get_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 191 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
@@ -28537,7 +29440,8 @@
opcode_t *
Parrot_get_hll_namespace_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 210 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PREG(1) = hll_ns;
@@ -28545,7 +29449,8 @@
opcode_t *
Parrot_get_hll_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 215 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns))
PREG(1) = PMCNULL;
@@ -28558,7 +29463,8 @@
opcode_t *
Parrot_get_hll_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 215 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns))
PREG(1) = PMCNULL;
@@ -28571,7 +29477,8 @@
opcode_t *
Parrot_get_root_namespace_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 236 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PREG(1) = root_ns;
@@ -28579,7 +29486,8 @@
opcode_t *
Parrot_get_root_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28592,7 +29500,8 @@
opcode_t *
Parrot_get_root_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 241 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28605,7 +29514,8 @@
opcode_t *
Parrot_get_global_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PREG(1) = Parrot_find_global_op(interp, cur_ns, SREG(2), cur_opcode + 3);
@@ -28613,7 +29523,8 @@
opcode_t *
Parrot_get_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PREG(1) = Parrot_find_global_op(interp, cur_ns, CONST(2)->u.string, cur_opcode + 3);
@@ -28621,7 +29532,8 @@
opcode_t *
Parrot_get_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(cur_ns)) {
PREG(1) = PMCNULL;
@@ -28638,7 +29550,8 @@
opcode_t *
Parrot_get_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(cur_ns)) {
PREG(1) = PMCNULL;
@@ -28655,7 +29568,8 @@
opcode_t *
Parrot_get_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(cur_ns)) {
PREG(1) = PMCNULL;
@@ -28672,7 +29586,8 @@
opcode_t *
Parrot_get_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 279 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(cur_ns)) {
PREG(1) = PMCNULL;
@@ -28689,7 +29604,8 @@
opcode_t *
Parrot_get_hll_global_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 306 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PREG(1) = Parrot_find_global_op(interp, hll_ns, SREG(2), cur_opcode + 3);
@@ -28697,7 +29613,8 @@
opcode_t *
Parrot_get_hll_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 306 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PREG(1) = Parrot_find_global_op(interp, hll_ns, CONST(2)->u.string, cur_opcode + 3);
@@ -28705,7 +29622,8 @@
opcode_t *
Parrot_get_hll_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns)) {
PREG(1) = hll_ns;
@@ -28722,7 +29640,8 @@
opcode_t *
Parrot_get_hll_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns)) {
PREG(1) = hll_ns;
@@ -28739,7 +29658,8 @@
opcode_t *
Parrot_get_hll_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns)) {
PREG(1) = hll_ns;
@@ -28756,7 +29676,8 @@
opcode_t *
Parrot_get_hll_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 311 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
if (PMC_IS_NULL(hll_ns)) {
PREG(1) = hll_ns;
@@ -28773,7 +29694,8 @@
opcode_t *
Parrot_get_root_global_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PREG(1) = Parrot_find_global_op(interp, root_ns, SREG(2), cur_opcode + 3);
@@ -28781,7 +29703,8 @@
opcode_t *
Parrot_get_root_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 338 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PREG(1) = Parrot_find_global_op(interp, root_ns, CONST(2)->u.string, cur_opcode + 3);
@@ -28789,7 +29712,8 @@
opcode_t *
Parrot_get_root_global_p_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28805,7 +29729,8 @@
opcode_t *
Parrot_get_root_global_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28821,7 +29746,8 @@
opcode_t *
Parrot_get_root_global_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28837,7 +29763,8 @@
opcode_t *
Parrot_get_root_global_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 343 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
if (PMC_IS_NULL(root_ns))
PREG(1) = PMCNULL;
@@ -28853,7 +29780,8 @@
opcode_t *
Parrot_set_global_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
Parrot_set_global(interp, cur_ns, SREG(1), PREG(2));
@@ -28861,7 +29789,8 @@
opcode_t *
Parrot_set_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 378 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
Parrot_set_global(interp, cur_ns, CONST(1)->u.string, PREG(2));
@@ -28869,7 +29798,8 @@
opcode_t *
Parrot_set_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
@@ -28879,7 +29809,8 @@
opcode_t *
Parrot_set_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
@@ -28889,7 +29820,8 @@
opcode_t *
Parrot_set_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
@@ -28899,7 +29831,8 @@
opcode_t *
Parrot_set_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 383 "src/ops/var.ops"
PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
PMC * const ns = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
@@ -28909,7 +29842,8 @@
opcode_t *
Parrot_set_hll_global_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
Parrot_set_global(interp, hll_ns, SREG(1), PREG(2));
@@ -28917,7 +29851,8 @@
opcode_t *
Parrot_set_hll_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 402 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
Parrot_set_global(interp, hll_ns, CONST(1)->u.string, PREG(2));
@@ -28925,7 +29860,8 @@
opcode_t *
Parrot_set_hll_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PMC * const ns = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
@@ -28935,7 +29871,8 @@
opcode_t *
Parrot_set_hll_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PMC * const ns = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
@@ -28945,7 +29882,8 @@
opcode_t *
Parrot_set_hll_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PMC * const ns = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
@@ -28955,7 +29893,8 @@
opcode_t *
Parrot_set_hll_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 407 "src/ops/var.ops"
PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
PMC * const ns = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
@@ -28965,7 +29904,8 @@
opcode_t *
Parrot_set_root_global_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 426 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
Parrot_set_global(interp, root_ns, SREG(1), PREG(2));
@@ -28973,7 +29913,8 @@
opcode_t *
Parrot_set_root_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 426 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
Parrot_set_global(interp, root_ns, CONST(1)->u.string, PREG(2));
@@ -28981,7 +29922,8 @@
opcode_t *
Parrot_set_root_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
@@ -28991,7 +29933,8 @@
opcode_t *
Parrot_set_root_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
@@ -29001,7 +29944,8 @@
opcode_t *
Parrot_set_root_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
@@ -29011,7 +29955,8 @@
opcode_t *
Parrot_set_root_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 431 "src/ops/var.ops"
PMC * const root_ns = interp->root_namespace;
PMC * const ns = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
@@ -29021,7 +29966,8 @@
opcode_t *
Parrot_find_name_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/var.ops"
if (!SREG(2)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
@@ -29035,7 +29981,8 @@
opcode_t *
Parrot_find_name_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 463 "src/ops/var.ops"
if (!CONST(2)->u.string) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
@@ -29049,14 +29996,15 @@
opcode_t *
Parrot_find_sub_not_null_p_s(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 481 "src/ops/var.ops"
opcode_t *dest = cur_opcode + 3;
PMC *sub = Parrot_find_name_op(interp, SREG(2), dest);
if (PMC_IS_NULL(sub)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_GLOBAL_NOT_FOUND,
- "Could not find non-existent sub %Ss", SREG(2));
+ "Could not find sub %Ss", SREG(2));
return (opcode_t *)handler;
}
@@ -29066,14 +30014,15 @@
opcode_t *
Parrot_find_sub_not_null_p_sc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 481 "src/ops/var.ops"
opcode_t *dest = cur_opcode + 3;
PMC *sub = Parrot_find_name_op(interp, CONST(2)->u.string, dest);
if (PMC_IS_NULL(sub)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_GLOBAL_NOT_FOUND,
- "Could not find non-existent sub %Ss", CONST(2)->u.string);
+ "Could not find sub %Ss", CONST(2)->u.string);
return (opcode_t *)handler;
}
@@ -29083,7 +30032,8 @@
opcode_t *
Parrot_trap(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 46 "src/ops/experimental.ops"
INTVAL unused = PARROT_WARNINGS_test(interp,PARROT_WARNINGS_DEPRECATED_FLAG) &&
fprintf(stderr,"Warning: instruction 'trap' is deprecated\n");
#if defined(__GNUC__) && defined(i386)
@@ -29096,23 +30046,9 @@
return (opcode_t *)cur_opcode + 1;}
opcode_t *
-Parrot_set_label_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- VTABLE_set_pointer(interp, PREG(1), (CUR_OPCODE + cur_opcode[2]));
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
-Parrot_get_label_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
- void * const ptr = VTABLE_get_pointer(interp, PREG(2));
- IREG(1) = PTR2INTVAL(ptr);
-
-return (opcode_t *)cur_opcode + 3;}
-
-opcode_t *
Parrot_fetch_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29135,7 +30071,8 @@
opcode_t *
Parrot_fetch_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29158,7 +30095,8 @@
opcode_t *
Parrot_fetch_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29181,7 +30119,8 @@
opcode_t *
Parrot_fetch_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29204,7 +30143,8 @@
opcode_t *
Parrot_fetch_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29227,7 +30167,8 @@
opcode_t *
Parrot_fetch_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29250,7 +30191,8 @@
opcode_t *
Parrot_fetch_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29273,7 +30215,8 @@
opcode_t *
Parrot_fetch_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 95 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29296,7 +30239,8 @@
opcode_t *
Parrot_fetch_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29319,7 +30263,8 @@
opcode_t *
Parrot_fetch_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29342,7 +30287,8 @@
opcode_t *
Parrot_fetch_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29365,7 +30311,8 @@
opcode_t *
Parrot_fetch_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29388,7 +30335,8 @@
opcode_t *
Parrot_fetch_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29411,7 +30359,8 @@
opcode_t *
Parrot_fetch_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29434,7 +30383,8 @@
opcode_t *
Parrot_fetch_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29457,7 +30407,8 @@
opcode_t *
Parrot_fetch_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 115 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29480,7 +30431,8 @@
opcode_t *
Parrot_fetch_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29503,7 +30455,8 @@
opcode_t *
Parrot_fetch_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29526,7 +30479,8 @@
opcode_t *
Parrot_fetch_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29549,7 +30503,8 @@
opcode_t *
Parrot_fetch_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -29572,7 +30527,8 @@
opcode_t *
Parrot_fetch_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29595,7 +30551,8 @@
opcode_t *
Parrot_fetch_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29618,7 +30575,8 @@
opcode_t *
Parrot_fetch_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29641,7 +30599,8 @@
opcode_t *
Parrot_fetch_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 135 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
@@ -29664,7 +30623,8 @@
opcode_t *
Parrot_vivify_p_p_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29690,7 +30650,8 @@
opcode_t *
Parrot_vivify_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29716,7 +30677,8 @@
opcode_t *
Parrot_vivify_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
@@ -29742,7 +30704,8 @@
opcode_t *
Parrot_vivify_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
@@ -29768,7 +30731,8 @@
opcode_t *
Parrot_vivify_p_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29794,7 +30758,8 @@
opcode_t *
Parrot_vivify_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29820,7 +30785,8 @@
opcode_t *
Parrot_vivify_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
@@ -29846,7 +30812,8 @@
opcode_t *
Parrot_vivify_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 170 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
if (PMC_IS_NULL(PREG(1))) {
@@ -29872,7 +30839,8 @@
opcode_t *
Parrot_vivify_p_p_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29898,7 +30866,8 @@
opcode_t *
Parrot_vivify_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -29924,7 +30893,8 @@
opcode_t *
Parrot_vivify_p_p_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
@@ -29950,7 +30920,8 @@
opcode_t *
Parrot_vivify_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
@@ -29976,7 +30947,8 @@
opcode_t *
Parrot_vivify_p_p_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30002,7 +30974,8 @@
opcode_t *
Parrot_vivify_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30028,7 +31001,8 @@
opcode_t *
Parrot_vivify_p_p_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
@@ -30054,7 +31028,8 @@
opcode_t *
Parrot_vivify_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 193 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
if (PMC_IS_NULL(PREG(1))) {
@@ -30080,7 +31055,8 @@
opcode_t *
Parrot_vivify_p_p_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30106,7 +31082,8 @@
opcode_t *
Parrot_vivify_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30132,7 +31109,8 @@
opcode_t *
Parrot_vivify_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
@@ -30158,7 +31136,8 @@
opcode_t *
Parrot_vivify_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
@@ -30184,7 +31163,8 @@
opcode_t *
Parrot_vivify_p_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30210,7 +31190,8 @@
opcode_t *
Parrot_vivify_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
if (PMC_IS_NULL(PREG(1))) {
@@ -30236,7 +31217,8 @@
opcode_t *
Parrot_vivify_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
@@ -30262,7 +31244,8 @@
opcode_t *
Parrot_vivify_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 216 "src/ops/experimental.ops"
PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
if (PMC_IS_NULL(PREG(1))) {
@@ -30288,7 +31271,8 @@
opcode_t *
Parrot_new_p_s_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
STRING * const name = SREG(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -30314,7 +31298,8 @@
opcode_t *
Parrot_new_p_sc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
STRING * const name = CONST(2)->u.string;
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -30340,7 +31325,8 @@
opcode_t *
Parrot_new_p_s_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
STRING * const name = SREG(2);
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -30366,7 +31352,8 @@
opcode_t *
Parrot_new_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 250 "src/ops/experimental.ops"
STRING * const name = CONST(2)->u.string;
PMC * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
? Parrot_oo_get_class_str(interp, name)
@@ -30392,7 +31379,8 @@
opcode_t *
Parrot_new_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
PMC * const name_key = PREG(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30425,7 +31413,8 @@
opcode_t *
Parrot_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
PMC * const name_key = CONST(2)->u.key;
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30458,7 +31447,8 @@
opcode_t *
Parrot_new_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
PMC * const name_key = PREG(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30491,7 +31481,8 @@
opcode_t *
Parrot_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 274 "src/ops/experimental.ops"
PMC * const name_key = CONST(2)->u.key;
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30524,7 +31515,8 @@
opcode_t *
Parrot_root_new_p_p_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
PMC * const name_key = PREG(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30559,7 +31551,8 @@
opcode_t *
Parrot_root_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
PMC * const name_key = CONST(2)->u.key;
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30594,7 +31587,8 @@
opcode_t *
Parrot_root_new_p_p_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
PMC * const name_key = PREG(2);
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30629,7 +31623,8 @@
opcode_t *
Parrot_root_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP) {
- Parrot_Context const * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+ const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
+#line 312 "src/ops/experimental.ops"
PMC * const name_key = CONST(2)->u.key;
/* get_class() returns a PMCProxy for core types, so check for core PMCs */
@@ -30662,12 +31657,13 @@
return (opcode_t *)cur_opcode + 4;}
+#line 31564 "src/ops/core_ops.c"
/*
** Op lookup function:
*/
-#define NUM_OPS 1311
+#define NUM_OPS 1296
#define OP_HASH_SIZE 3041
@@ -30688,8 +31684,8 @@
static HOP **hop;
static void hop_init(PARROT_INTERP);
-static size_t hash_str(const char *str);
-static void store_op(PARROT_INTERP, op_info_t *info, int full);
+static size_t hash_str(ARGIN_NULLOK(const char *str));
+static void store_op(PARROT_INTERP, ARGIN(op_info_t *info), int full);
/* XXX on changing interpreters, this should be called,
through a hook */
@@ -30706,7 +31702,8 @@
* returns >= 0 (found idx into info_table), -1 if not
*/
-static size_t hash_str(const char *str) {
+static size_t hash_str(ARGIN_NULLOK(const char *str))
+{
size_t key = 0;
const char *s = str;
@@ -30718,8 +31715,9 @@
return key;
}
-static void store_op(PARROT_INTERP, op_info_t *info, int full) {
- HOP * const p = mem_gc_allocate_zeroed_typed(interp, HOP);
+static void store_op(PARROT_INTERP, ARGIN(op_info_t *info), int full)
+{
+ HOP * const p = mem_gc_allocate_typed(interp, HOP);
const size_t hidx =
hash_str(full ? info->full_name : info->name) % OP_HASH_SIZE;
@@ -30727,30 +31725,40 @@
p->next = hop[hidx];
hop[hidx] = p;
}
+
static int get_op(PARROT_INTERP, const char * name, int full) {
- const HOP * p;
+ const HOP *p;
+
const size_t hidx = hash_str(name) % OP_HASH_SIZE;
+
if (!hop) {
- hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE,HOP *);
+ hop = mem_gc_allocate_n_zeroed_typed(interp, OP_HASH_SIZE, HOP *);
hop_init(interp);
}
+
for (p = hop[hidx]; p; p = p->next) {
if (STREQ(name, full ? p->info->full_name : p->info->name))
return p->info - core_op_lib.op_info_table;
}
+
return -1;
}
-static void hop_init(PARROT_INTERP) {
+
+static void hop_init(PARROT_INTERP)
+{
size_t i;
op_info_t * const info = core_op_lib.op_info_table;
+
/* store full names */
for (i = 0; i < core_op_lib.op_count; i++)
store_op(interp, info + i, 1);
+
/* plus one short name */
for (i = 0; i < core_op_lib.op_count; i++)
if (get_op(interp, info[i].name, 0) == -1)
store_op(interp, info + i, 0);
}
+
static void hop_deinit(PARROT_INTERP)
{
if (hop) {
@@ -30769,7 +31777,7 @@
}
op_lib_t *
-Parrot_DynOp_core_2_1_0(PARROT_INTERP, long init) {
+Parrot_DynOp_core_2_3_0(PARROT_INTERP, long init) {
/* initialize and return op_lib ptr */
if (init == 1) {
Modified: branches/ops_pct/src/ops/object.ops
==============================================================================
--- branches/ops_pct/src/ops/object.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/object.ops Wed May 5 08:45:29 2010 (r46302)
@@ -53,6 +53,8 @@
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * const signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
PMC * const _class = VTABLE_get_class(interp, object);
@@ -69,7 +71,8 @@
}
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, method_pmc, next);
}
@@ -79,8 +82,11 @@
op callmethodcc(invar PMC, invar PMC) :object_base :flow {
opcode_t *dest;
opcode_t * const next = expr NEXT();
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = $1;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, $1);
interp->current_cont = NEED_CONTINUATION;
dest = VTABLE_invoke(interp, $2, next);
@@ -94,6 +100,8 @@
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
@@ -102,7 +110,8 @@
VTABLE_get_string(interp, VTABLE_get_class(interp, object)));
}
else {
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = $3;
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
@@ -115,8 +124,11 @@
opcode_t * const next = expr NEXT();
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
interp->current_cont = $3;
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
goto ADDRESS(dest);
@@ -129,6 +141,8 @@
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
if (PMC_IS_NULL(method_pmc)) {
dest = Parrot_ex_throw_from_op_args(interp, next, EXCEPTION_METHOD_NOT_FOUND,
@@ -138,7 +152,8 @@
else {
interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
goto ADDRESS(dest);
@@ -150,11 +165,14 @@
PMC * const method_pmc = $2;
opcode_t *dest;
+ PMC * signature = Parrot_pcc_get_signature(interp,
+ CURRENT_CONTEXT(interp));
interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
- interp->current_object = object;
+ if (!PMC_IS_NULL(signature))
+ Parrot_pcc_set_object(interp, signature, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
goto ADDRESS(dest);
}
Modified: branches/ops_pct/src/ops/ops.num
==============================================================================
--- branches/ops_pct/src/ops/ops.num Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/ops.num Wed May 5 08:45:29 2010 (r46302)
@@ -54,1218 +54,1205 @@
capture_lex_p 30
newclosure_p_p 31
set_args_pc 32
-get_results_pc 33
-get_params_pc 34
-set_returns_pc 35
-result_info_p 36
-set_addr_i_ic 37
-set_addr_p_ic 38
-set_addr_p_i 39
-get_addr_i_p 40
-schedule_p 41
-addhandler_p 42
-push_eh_ic 43
-push_eh_p 44
-pop_eh 45
-throw_p 46
-throw_p_p 47
-rethrow_p 48
-count_eh_i 49
-die_s 50
-die_sc 51
-die_p 52
-die_pc 53
-die_i_i 54
-die_ic_i 55
-die_i_ic 56
-die_ic_ic 57
-exit_i 58
-exit_ic 59
-pushmark_i 60
-pushmark_ic 61
-popmark_i 62
-popmark_ic 63
-pushaction_p 64
-debug_i 65
-debug_ic 66
-bounds_i 67
-bounds_ic 68
-profile_i 69
-profile_ic 70
-trace_i 71
-trace_ic 72
-gc_debug_i 73
-gc_debug_ic 74
-interpinfo_i_i 75
-interpinfo_i_ic 76
-interpinfo_p_i 77
-interpinfo_p_ic 78
-interpinfo_s_i 79
-interpinfo_s_ic 80
-warningson_i 81
-warningson_ic 82
-warningsoff_i 83
-warningsoff_ic 84
-errorson_i 85
-errorson_ic 86
-errorsoff_i 87
-errorsoff_ic 88
-runinterp_p_i 89
-runinterp_p_ic 90
-getinterp_p 91
-sweep_ic 92
-collect 93
-sweepoff 94
-sweepon 95
-collectoff 96
-collecton 97
-needs_destroy_p 98
-loadlib_p_s 99
-loadlib_p_sc 100
-dlfunc_p_p_s_s 101
-dlfunc_p_p_sc_s 102
-dlfunc_p_p_s_sc 103
-dlfunc_p_p_sc_sc 104
-dlvar_p_p_s 105
-dlvar_p_p_sc 106
-compreg_s_p 107
-compreg_sc_p 108
-compreg_p_s 109
-compreg_p_sc 110
-new_callback_p_p_p_s 111
-new_callback_p_p_p_sc 112
-annotations_p 113
-annotations_p_s 114
-annotations_p_sc 115
-band_i_i 116
-band_i_ic 117
-band_p_i 118
-band_p_ic 119
-band_p_p 120
-band_i_i_i 121
-band_i_ic_i 122
-band_i_i_ic 123
-band_p_p_i 124
-band_p_p_ic 125
-band_p_p_p 126
-bands_s_s 127
-bands_s_sc 128
-bands_p_s 129
-bands_p_sc 130
-bands_p_p 131
-bands_s_s_s 132
-bands_s_sc_s 133
-bands_s_s_sc 134
-bands_p_p_s 135
-bands_p_p_sc 136
-bands_p_p_p 137
-bnot_i 138
-bnot_i_i 139
-bnot_p 140
-bnot_p_p 141
-bnots_s 142
-bnots_s_s 143
-bnots_s_sc 144
-bnots_p 145
-bnots_p_p 146
-bor_i_i 147
-bor_i_ic 148
-bor_p_i 149
-bor_p_ic 150
-bor_p_p 151
-bor_i_i_i 152
-bor_i_ic_i 153
-bor_i_i_ic 154
-bor_p_p_i 155
-bor_p_p_ic 156
-bor_p_p_p 157
-bors_s_s 158
-bors_s_sc 159
-bors_p_s 160
-bors_p_sc 161
-bors_p_p 162
-bors_s_s_s 163
-bors_s_sc_s 164
-bors_s_s_sc 165
-bors_p_p_s 166
-bors_p_p_sc 167
-bors_p_p_p 168
-shl_i_i 169
-shl_i_ic 170
-shl_p_i 171
-shl_p_ic 172
-shl_p_p 173
-shl_i_i_i 174
-shl_i_ic_i 175
-shl_i_i_ic 176
-shl_p_p_i 177
-shl_p_p_ic 178
-shl_p_p_p 179
-shr_i_i 180
-shr_i_ic 181
-shr_p_i 182
-shr_p_ic 183
-shr_p_p 184
-shr_i_i_i 185
-shr_i_ic_i 186
-shr_i_i_ic 187
-shr_p_p_i 188
-shr_p_p_ic 189
-shr_p_p_p 190
-lsr_i_i 191
-lsr_i_ic 192
-lsr_p_i 193
-lsr_p_ic 194
-lsr_p_p 195
-lsr_i_i_i 196
-lsr_i_ic_i 197
-lsr_i_i_ic 198
-lsr_p_p_i 199
-lsr_p_p_ic 200
-lsr_p_p_p 201
-rot_i_i_i_ic 202
-rot_i_ic_i_ic 203
-rot_i_i_ic_ic 204
-bxor_i_i 205
-bxor_i_ic 206
-bxor_p_i 207
-bxor_p_ic 208
-bxor_p_p 209
-bxor_i_i_i 210
-bxor_i_ic_i 211
-bxor_i_i_ic 212
-bxor_p_p_i 213
-bxor_p_p_ic 214
-bxor_p_p_p 215
-bxors_s_s 216
-bxors_s_sc 217
-bxors_p_s 218
-bxors_p_sc 219
-bxors_p_p 220
-bxors_s_s_s 221
-bxors_s_sc_s 222
-bxors_s_s_sc 223
-bxors_p_p_s 224
-bxors_p_p_sc 225
-bxors_p_p_p 226
-eq_i_i_ic 227
-eq_ic_i_ic 228
-eq_i_ic_ic 229
-eq_n_n_ic 230
-eq_nc_n_ic 231
-eq_n_nc_ic 232
-eq_s_s_ic 233
-eq_sc_s_ic 234
-eq_s_sc_ic 235
-eq_p_p_ic 236
-eq_p_i_ic 237
-eq_p_ic_ic 238
-eq_p_n_ic 239
-eq_p_nc_ic 240
-eq_p_s_ic 241
-eq_p_sc_ic 242
-eq_str_p_p_ic 243
-eq_num_p_p_ic 244
-eq_addr_s_s_ic 245
-eq_addr_sc_s_ic 246
-eq_addr_s_sc_ic 247
-eq_addr_sc_sc_ic 248
-eq_addr_p_p_ic 249
-ne_i_i_ic 250
-ne_ic_i_ic 251
-ne_i_ic_ic 252
-ne_n_n_ic 253
-ne_nc_n_ic 254
-ne_n_nc_ic 255
-ne_s_s_ic 256
-ne_sc_s_ic 257
-ne_s_sc_ic 258
-ne_p_p_ic 259
-ne_p_i_ic 260
-ne_p_ic_ic 261
-ne_p_n_ic 262
-ne_p_nc_ic 263
-ne_p_s_ic 264
-ne_p_sc_ic 265
-ne_str_p_p_ic 266
-ne_num_p_p_ic 267
-ne_addr_s_s_ic 268
-ne_addr_sc_s_ic 269
-ne_addr_s_sc_ic 270
-ne_addr_sc_sc_ic 271
-ne_addr_p_p_ic 272
-lt_i_i_ic 273
-lt_ic_i_ic 274
-lt_i_ic_ic 275
-lt_n_n_ic 276
-lt_nc_n_ic 277
-lt_n_nc_ic 278
-lt_s_s_ic 279
-lt_sc_s_ic 280
-lt_s_sc_ic 281
-lt_p_p_ic 282
-lt_p_i_ic 283
-lt_p_ic_ic 284
-lt_p_n_ic 285
-lt_p_nc_ic 286
-lt_p_s_ic 287
-lt_p_sc_ic 288
-lt_str_p_p_ic 289
-lt_num_p_p_ic 290
-le_i_i_ic 291
-le_ic_i_ic 292
-le_i_ic_ic 293
-le_n_n_ic 294
-le_nc_n_ic 295
-le_n_nc_ic 296
-le_s_s_ic 297
-le_sc_s_ic 298
-le_s_sc_ic 299
-le_p_p_ic 300
-le_p_i_ic 301
-le_p_ic_ic 302
-le_p_n_ic 303
-le_p_nc_ic 304
-le_p_s_ic 305
-le_p_sc_ic 306
-le_str_p_p_ic 307
-le_num_p_p_ic 308
-gt_p_p_ic 309
-gt_p_i_ic 310
-gt_p_ic_ic 311
-gt_p_n_ic 312
-gt_p_nc_ic 313
-gt_p_s_ic 314
-gt_p_sc_ic 315
-gt_str_p_p_ic 316
-gt_num_p_p_ic 317
-ge_p_p_ic 318
-ge_p_i_ic 319
-ge_p_ic_ic 320
-ge_p_n_ic 321
-ge_p_nc_ic 322
-ge_p_s_ic 323
-ge_p_sc_ic 324
-ge_str_p_p_ic 325
-ge_num_p_p_ic 326
-if_null_p_ic 327
-if_null_s_ic 328
-unless_null_p_ic 329
-unless_null_s_ic 330
-cmp_i_i_i 331
-cmp_i_ic_i 332
-cmp_i_i_ic 333
-cmp_i_n_n 334
-cmp_i_nc_n 335
-cmp_i_n_nc 336
-cmp_i_s_s 337
-cmp_i_sc_s 338
-cmp_i_s_sc 339
-cmp_i_p_p 340
-cmp_i_p_i 341
-cmp_i_p_ic 342
-cmp_i_p_n 343
-cmp_i_p_nc 344
-cmp_i_p_s 345
-cmp_i_p_sc 346
-cmp_str_i_p_p 347
-cmp_num_i_p_p 348
-cmp_pmc_p_p_p 349
-issame_i_p_p 350
-issame_i_s_s 351
-issame_i_sc_s 352
-issame_i_s_sc 353
-issame_i_sc_sc 354
-isntsame_i_p_p 355
-isntsame_i_s_s 356
-isntsame_i_sc_s 357
-isntsame_i_s_sc 358
-isntsame_i_sc_sc 359
-istrue_i_p 360
-isfalse_i_p 361
-isnull_i_p 362
-isnull_i_pc 363
-isnull_i_s 364
-isnull_i_sc 365
-isgt_i_p_p 366
-isge_i_p_p 367
-isle_i_i_i 368
-isle_i_ic_i 369
-isle_i_i_ic 370
-isle_i_n_n 371
-isle_i_nc_n 372
-isle_i_n_nc 373
-isle_i_s_s 374
-isle_i_sc_s 375
-isle_i_s_sc 376
-isle_i_p_p 377
-islt_i_i_i 378
-islt_i_ic_i 379
-islt_i_i_ic 380
-islt_i_n_n 381
-islt_i_nc_n 382
-islt_i_n_nc 383
-islt_i_s_s 384
-islt_i_sc_s 385
-islt_i_s_sc 386
-islt_i_p_p 387
-iseq_i_i_i 388
-iseq_i_ic_i 389
-iseq_i_i_ic 390
-iseq_i_n_n 391
-iseq_i_nc_n 392
-iseq_i_n_nc 393
-iseq_i_s_s 394
-iseq_i_sc_s 395
-iseq_i_s_sc 396
-iseq_i_p_p 397
-isne_i_i_i 398
-isne_i_ic_i 399
-isne_i_i_ic 400
-isne_i_n_n 401
-isne_i_nc_n 402
-isne_i_n_nc 403
-isne_i_s_s 404
-isne_i_sc_s 405
-isne_i_s_sc 406
-isne_i_p_p 407
-and_i_i_i 408
-and_i_ic_i 409
-and_i_i_ic 410
-and_p_p_p 411
-not_i 412
-not_i_i 413
-not_p 414
-not_p_p 415
-or_i_i_i 416
-or_i_ic_i 417
-or_i_i_ic 418
-or_p_p_p 419
-xor_i_i_i 420
-xor_i_ic_i 421
-xor_i_i_ic 422
-xor_p_p_p 423
-debug_init 424
-debug_load_sc 425
-debug_break 426
-debug_print 427
-backtrace 428
-getline_i 429
-getfile_s 430
-close_p 431
-fdopen_p_i_s 432
-fdopen_p_ic_s 433
-fdopen_p_i_sc 434
-fdopen_p_ic_sc 435
-getstdin_p 436
-getstdout_p 437
-getstderr_p 438
-setstdin_p 439
-setstdout_p 440
-setstderr_p 441
-open_p_s_s 442
-open_p_sc_s 443
-open_p_s_sc 444
-open_p_sc_sc 445
-open_p_s 446
-open_p_sc 447
-print_i 448
-print_ic 449
-print_n 450
-print_nc 451
-print_s 452
-print_sc 453
-print_p 454
-say_i 455
-say_ic 456
-say_n 457
-say_nc 458
-say_s 459
-say_sc 460
-say_p 461
-printerr_i 462
-printerr_ic 463
-printerr_n 464
-printerr_nc 465
-printerr_s 466
-printerr_sc 467
-printerr_p 468
-print_p_i 469
-print_p_ic 470
-print_p_n 471
-print_p_nc 472
-print_p_s 473
-print_p_sc 474
-print_p_p 475
-read_s_i 476
-read_s_ic 477
-read_s_p_i 478
-read_s_p_ic 479
-readline_s_p 480
-peek_s 481
-peek_s_p 482
-stat_i_s_i 483
-stat_i_sc_i 484
-stat_i_s_ic 485
-stat_i_sc_ic 486
-stat_i_i_i 487
-stat_i_ic_i 488
-stat_i_i_ic 489
-stat_i_ic_ic 490
-seek_p_i_i 491
-seek_p_ic_i 492
-seek_p_i_ic 493
-seek_p_ic_ic 494
-seek_p_i_i_i 495
-seek_p_ic_i_i 496
-seek_p_i_ic_i 497
-seek_p_ic_ic_i 498
-seek_p_i_i_ic 499
-seek_p_ic_i_ic 500
-seek_p_i_ic_ic 501
-seek_p_ic_ic_ic 502
-tell_i_p 503
-tell_i_i_p 504
-abs_i 505
-abs_n 506
-abs_i_i 507
-abs_n_n 508
-abs_p 509
-abs_p_p 510
-add_i_i 511
-add_i_ic 512
-add_n_n 513
-add_n_nc 514
-add_p_p 515
-add_p_i 516
-add_p_ic 517
-add_p_n 518
-add_p_nc 519
-add_i_i_i 520
-add_i_ic_i 521
-add_i_i_ic 522
-add_n_n_n 523
-add_n_nc_n 524
-add_n_n_nc 525
-add_p_p_p 526
-add_p_p_i 527
-add_p_p_ic 528
-add_p_p_n 529
-add_p_p_nc 530
-cmod_i_i_i 531
-cmod_i_ic_i 532
-cmod_i_i_ic 533
-cmod_p_p_i 534
-cmod_p_p_ic 535
-cmod_p_p_p 536
-cmod_n_n_n 537
-cmod_n_nc_n 538
-cmod_n_n_nc 539
-cmod_p_p_n 540
-cmod_p_p_nc 541
-dec_i 542
-dec_n 543
-dec_p 544
-div_i_i 545
-div_i_ic 546
-div_n_n 547
-div_n_nc 548
-div_p_p 549
-div_p_i 550
-div_p_ic 551
-div_p_n 552
-div_p_nc 553
-div_i_i_i 554
-div_i_ic_i 555
-div_i_i_ic 556
-div_i_ic_ic 557
-div_n_n_n 558
-div_n_nc_n 559
-div_n_n_nc 560
-div_n_nc_nc 561
-div_p_p_p 562
-div_p_p_i 563
-div_p_p_ic 564
-div_p_p_n 565
-div_p_p_nc 566
-fdiv_i_i 567
-fdiv_i_ic 568
-fdiv_n_n 569
-fdiv_n_nc 570
-fdiv_p_p 571
-fdiv_p_i 572
-fdiv_p_ic 573
-fdiv_p_n 574
-fdiv_p_nc 575
-fdiv_i_i_i 576
-fdiv_i_ic_i 577
-fdiv_i_i_ic 578
-fdiv_n_n_n 579
-fdiv_n_nc_n 580
-fdiv_n_n_nc 581
-fdiv_p_p_p 582
-fdiv_p_p_i 583
-fdiv_p_p_ic 584
-fdiv_p_p_n 585
-fdiv_p_p_nc 586
-ceil_n 587
-ceil_i_n 588
-ceil_n_n 589
-floor_n 590
-floor_i_n 591
-floor_n_n 592
-inc_i 593
-inc_n 594
-inc_p 595
-mod_i_i 596
-mod_i_ic 597
-mod_n_n 598
-mod_n_nc 599
-mod_p_p 600
-mod_p_i 601
-mod_p_ic 602
-mod_p_n 603
-mod_p_nc 604
-mod_i_i_i 605
-mod_i_ic_i 606
-mod_i_i_ic 607
-mod_n_n_n 608
-mod_n_nc_n 609
-mod_n_n_nc 610
-mod_p_p_p 611
-mod_p_p_i 612
-mod_p_p_ic 613
-mod_p_p_n 614
-mod_p_p_nc 615
-mul_i_i 616
-mul_i_ic 617
-mul_n_n 618
-mul_n_nc 619
-mul_p_p 620
-mul_p_i 621
-mul_p_ic 622
-mul_p_n 623
-mul_p_nc 624
-mul_i_i_i 625
-mul_i_ic_i 626
-mul_i_i_ic 627
-mul_n_n_n 628
-mul_n_nc_n 629
-mul_n_n_nc 630
-mul_p_p_p 631
-mul_p_p_i 632
-mul_p_p_ic 633
-mul_p_p_n 634
-mul_p_p_nc 635
-neg_i 636
-neg_n 637
-neg_p 638
-neg_i_i 639
-neg_n_n 640
-neg_p_p 641
-pow_n_n_n 642
-pow_n_nc_n 643
-pow_n_n_nc 644
-pow_p_p_p 645
-pow_p_p_i 646
-pow_p_p_ic 647
-pow_p_p_n 648
-pow_p_p_nc 649
-pow_n_n_i 650
-pow_n_nc_i 651
-pow_n_n_ic 652
-pow_n_nc_ic 653
-sub_i_i 654
-sub_i_ic 655
-sub_n_n 656
-sub_n_nc 657
-sub_p_p 658
-sub_p_i 659
-sub_p_ic 660
-sub_p_n 661
-sub_p_nc 662
-sub_i_i_i 663
-sub_i_ic_i 664
-sub_i_i_ic 665
-sub_n_n_n 666
-sub_n_nc_n 667
-sub_n_n_nc 668
-sub_p_p_p 669
-sub_p_p_i 670
-sub_p_p_ic 671
-sub_p_p_n 672
-sub_p_p_nc 673
-sqrt_n_n 674
-acos_n_n 675
-asec_n_n 676
-asin_n_n 677
-atan_n_n 678
-atan_n_n_n 679
-atan_n_nc_n 680
-atan_n_n_nc 681
-cos_n_n 682
-cosh_n_n 683
-exp_n_n 684
-ln_n_n 685
-log10_n_n 686
-log2_n_n 687
-sec_n_n 688
-sech_n_n 689
-sin_n_n 690
-sinh_n_n 691
-tan_n_n 692
-tanh_n_n 693
-gcd_i_i_i 694
-gcd_i_ic_i 695
-gcd_i_i_ic 696
-lcm_i_i_i 697
-lcm_i_ic_i 698
-lcm_i_i_ic 699
-fact_i_i 700
-fact_n_i 701
-callmethodcc_p_s 702
-callmethodcc_p_sc 703
-callmethodcc_p_p 704
-callmethod_p_s_p 705
-callmethod_p_sc_p 706
-callmethod_p_p_p 707
-tailcallmethod_p_s 708
-tailcallmethod_p_sc 709
-tailcallmethod_p_p 710
-addmethod_p_s_p 711
-addmethod_p_sc_p 712
-can_i_p_s 713
-can_i_p_sc 714
-does_i_p_s 715
-does_i_p_sc 716
-does_i_p_p 717
-does_i_p_pc 718
-isa_i_p_s 719
-isa_i_p_sc 720
-isa_i_p_p 721
-isa_i_p_pc 722
-newclass_p_s 723
-newclass_p_sc 724
-newclass_p_p 725
-newclass_p_pc 726
-subclass_p_p 727
-subclass_p_pc 728
-subclass_p_p_s 729
-subclass_p_pc_s 730
-subclass_p_p_sc 731
-subclass_p_pc_sc 732
-subclass_p_p_p 733
-subclass_p_pc_p 734
-subclass_p_p_pc 735
-subclass_p_pc_pc 736
-subclass_p_s 737
-subclass_p_sc 738
-subclass_p_s_s 739
-subclass_p_sc_s 740
-subclass_p_s_sc 741
-subclass_p_sc_sc 742
-subclass_p_s_p 743
-subclass_p_sc_p 744
-subclass_p_s_pc 745
-subclass_p_sc_pc 746
-get_class_p_s 747
-get_class_p_sc 748
-get_class_p_p 749
-get_class_p_pc 750
-class_p_p 751
-addparent_p_p 752
-removeparent_p_p 753
-addrole_p_p 754
-addattribute_p_s 755
-addattribute_p_sc 756
-removeattribute_p_s 757
-removeattribute_p_sc 758
-getattribute_p_p_s 759
-getattribute_p_p_sc 760
-getattribute_p_p_p_s 761
-getattribute_p_p_pc_s 762
-getattribute_p_p_p_sc 763
-getattribute_p_p_pc_sc 764
-setattribute_p_s_p 765
-setattribute_p_sc_p 766
-setattribute_p_p_s_p 767
-setattribute_p_pc_s_p 768
-setattribute_p_p_sc_p 769
-setattribute_p_pc_sc_p 770
-inspect_p_p 771
-inspect_p_pc 772
-inspect_p_p_s 773
-inspect_p_pc_s 774
-inspect_p_p_sc 775
-inspect_p_pc_sc 776
-new_p_s 777
-new_p_sc 778
-new_p_s_p 779
-new_p_sc_p 780
-new_p_s_pc 781
-new_p_sc_pc 782
-new_p_p 783
-new_p_pc 784
-new_p_p_p 785
-new_p_pc_p 786
-new_p_p_pc 787
-new_p_pc_pc 788
-root_new_p_p 789
-root_new_p_pc 790
-root_new_p_p_p 791
-root_new_p_pc_p 792
-root_new_p_p_pc 793
-root_new_p_pc_pc 794
-typeof_s_p 795
-typeof_p_p 796
-get_repr_s_p 797
-find_method_p_p_s 798
-find_method_p_p_sc 799
-defined_i_p 800
-defined_i_p_ki 801
-defined_i_p_kic 802
-defined_i_p_k 803
-defined_i_p_kc 804
-exists_i_p_ki 805
-exists_i_p_kic 806
-exists_i_p_k 807
-exists_i_p_kc 808
-delete_p_k 809
-delete_p_kc 810
-delete_p_ki 811
-delete_p_kic 812
-elements_i_p 813
-push_p_i 814
-push_p_ic 815
-push_p_n 816
-push_p_nc 817
-push_p_s 818
-push_p_sc 819
-push_p_p 820
-pop_i_p 821
-pop_n_p 822
-pop_s_p 823
-pop_p_p 824
-unshift_p_i 825
-unshift_p_ic 826
-unshift_p_n 827
-unshift_p_nc 828
-unshift_p_s 829
-unshift_p_sc 830
-unshift_p_p 831
-shift_i_p 832
-shift_n_p 833
-shift_s_p 834
-shift_p_p 835
-splice_p_p_i_i 836
-splice_p_p_ic_i 837
-splice_p_p_i_ic 838
-splice_p_p_ic_ic 839
-setprop_p_s_p 840
-setprop_p_sc_p 841
-getprop_p_s_p 842
-getprop_p_sc_p 843
-delprop_p_s 844
-delprop_p_sc 845
-prophash_p_p 846
-freeze_s_p 847
-thaw_p_s 848
-thaw_p_sc 849
-add_multi_s_s_p 850
-add_multi_sc_s_p 851
-add_multi_s_sc_p 852
-add_multi_sc_sc_p 853
-find_multi_p_s_s 854
-find_multi_p_sc_s 855
-find_multi_p_s_sc 856
-find_multi_p_sc_sc 857
-register_p 858
-unregister_p 859
-box_p_i 860
-box_p_ic 861
-box_p_n 862
-box_p_nc 863
-box_p_s 864
-box_p_sc 865
-iter_p_p 866
-morph_p_p 867
-morph_p_pc 868
-clone_s_s 869
-clone_s_sc 870
-exchange_i_i 871
-exchange_p_p 872
-exchange_n_n 873
-exchange_s_s 874
-set_i_i 875
-set_i_ic 876
-set_i_n 877
-set_i_nc 878
-set_i_s 879
-set_i_sc 880
-set_n_n 881
-set_n_nc 882
-set_n_i 883
-set_n_ic 884
-set_n_s 885
-set_n_sc 886
-set_n_p 887
-set_s_p 888
-set_s_s 889
-set_s_sc 890
-set_s_i 891
-set_s_ic 892
-set_s_n 893
-set_s_nc 894
-set_p_pc 895
-set_p_p 896
-set_p_i 897
-set_p_ic 898
-set_p_n 899
-set_p_nc 900
-set_p_s 901
-set_p_sc 902
-set_i_p 903
-assign_p_p 904
-assign_p_i 905
-assign_p_ic 906
-assign_p_n 907
-assign_p_nc 908
-assign_p_s 909
-assign_p_sc 910
-assign_s_s 911
-assign_s_sc 912
-setref_p_p 913
-deref_p_p 914
-setp_ind_i_p 915
-setp_ind_ic_p 916
-setn_ind_i_n 917
-setn_ind_ic_n 918
-setn_ind_i_nc 919
-setn_ind_ic_nc 920
-sets_ind_i_s 921
-sets_ind_ic_s 922
-sets_ind_i_sc 923
-sets_ind_ic_sc 924
-seti_ind_i_i 925
-seti_ind_ic_i 926
-seti_ind_i_ic 927
-seti_ind_ic_ic 928
-set_p_ki_i 929
-set_p_kic_i 930
-set_p_ki_ic 931
-set_p_kic_ic 932
-set_p_ki_n 933
-set_p_kic_n 934
-set_p_ki_nc 935
-set_p_kic_nc 936
-set_p_ki_s 937
-set_p_kic_s 938
-set_p_ki_sc 939
-set_p_kic_sc 940
-set_p_ki_p 941
-set_p_kic_p 942
-set_i_p_ki 943
-set_i_p_kic 944
-set_n_p_ki 945
-set_n_p_kic 946
-set_s_p_ki 947
-set_s_p_kic 948
-set_p_p_ki 949
-set_p_p_kic 950
-set_p_k_i 951
-set_p_kc_i 952
-set_p_k_ic 953
-set_p_kc_ic 954
-set_p_k_n 955
-set_p_kc_n 956
-set_p_k_nc 957
-set_p_kc_nc 958
-set_p_k_s 959
-set_p_kc_s 960
-set_p_k_sc 961
-set_p_kc_sc 962
-set_p_k_p 963
-set_p_kc_p 964
-set_i_p_k 965
-set_i_p_kc 966
-set_n_p_k 967
-set_n_p_kc 968
-set_s_p_k 969
-set_s_p_kc 970
-set_p_p_k 971
-set_p_p_kc 972
-clone_p_p 973
-clone_p_p_p 974
-clone_p_p_pc 975
-copy_p_p 976
-null_s 977
-null_i 978
-null_p 979
-null_n 980
-cleari 981
-clearn 982
-clears 983
-clearp 984
-ord_i_s 985
-ord_i_sc 986
-ord_i_s_i 987
-ord_i_sc_i 988
-ord_i_s_ic 989
-ord_i_sc_ic 990
-chr_s_i 991
-chr_s_ic 992
-chopn_s_i 993
-chopn_s_ic 994
-chopn_s_s_i 995
-chopn_s_sc_i 996
-chopn_s_s_ic 997
-chopn_s_sc_ic 998
-concat_s_s 999
-concat_s_sc 1000
-concat_p_p 1001
-concat_p_s 1002
-concat_p_sc 1003
-concat_s_s_s 1004
-concat_s_sc_s 1005
-concat_s_s_sc 1006
-concat_p_p_s 1007
-concat_p_p_sc 1008
-concat_p_p_p 1009
-repeat_s_s_i 1010
-repeat_s_sc_i 1011
-repeat_s_s_ic 1012
-repeat_s_sc_ic 1013
-repeat_p_p_i 1014
-repeat_p_p_ic 1015
-repeat_p_p_p 1016
-repeat_p_i 1017
-repeat_p_ic 1018
-repeat_p_p 1019
-length_i_s 1020
-length_i_sc 1021
-bytelength_i_s 1022
-bytelength_i_sc 1023
-pin_s 1024
-unpin_s 1025
-substr_s_s_i 1026
-substr_s_sc_i 1027
-substr_s_s_ic 1028
-substr_s_sc_ic 1029
-substr_s_s_i_i 1030
-substr_s_sc_i_i 1031
-substr_s_s_ic_i 1032
-substr_s_sc_ic_i 1033
-substr_s_s_i_ic 1034
-substr_s_sc_i_ic 1035
-substr_s_s_ic_ic 1036
-substr_s_sc_ic_ic 1037
-substr_s_s_i_i_s 1038
-substr_s_s_ic_i_s 1039
-substr_s_s_i_ic_s 1040
-substr_s_s_ic_ic_s 1041
-substr_s_s_i_i_sc 1042
-substr_s_s_ic_i_sc 1043
-substr_s_s_i_ic_sc 1044
-substr_s_s_ic_ic_sc 1045
-substr_s_i_i_s 1046
-substr_s_ic_i_s 1047
-substr_s_i_ic_s 1048
-substr_s_ic_ic_s 1049
-substr_s_i_i_sc 1050
-substr_s_ic_i_sc 1051
-substr_s_i_ic_sc 1052
-substr_s_ic_ic_sc 1053
-substr_s_p_i_i 1054
-substr_s_p_ic_i 1055
-substr_s_p_i_ic 1056
-substr_s_p_ic_ic 1057
-index_i_s_s 1058
-index_i_sc_s 1059
-index_i_s_sc 1060
-index_i_sc_sc 1061
-index_i_s_s_i 1062
-index_i_sc_s_i 1063
-index_i_s_sc_i 1064
-index_i_sc_sc_i 1065
-index_i_s_s_ic 1066
-index_i_sc_s_ic 1067
-index_i_s_sc_ic 1068
-index_i_sc_sc_ic 1069
-sprintf_s_s_p 1070
-sprintf_s_sc_p 1071
-sprintf_p_p_p 1072
-new_s 1073
-new_s_i 1074
-new_s_ic 1075
-stringinfo_i_s_i 1076
-stringinfo_i_sc_i 1077
-stringinfo_i_s_ic 1078
-stringinfo_i_sc_ic 1079
-upcase_s_s 1080
-upcase_s_sc 1081
-upcase_s 1082
-downcase_s_s 1083
-downcase_s_sc 1084
-downcase_s 1085
-titlecase_s_s 1086
-titlecase_s_sc 1087
-titlecase_s 1088
-join_s_s_p 1089
-join_s_sc_p 1090
-split_p_s_s 1091
-split_p_sc_s 1092
-split_p_s_sc 1093
-split_p_sc_sc 1094
-charset_i_s 1095
-charset_i_sc 1096
-charsetname_s_i 1097
-charsetname_s_ic 1098
-find_charset_i_s 1099
-find_charset_i_sc 1100
-trans_charset_s_i 1101
-trans_charset_s_ic 1102
-trans_charset_s_s_i 1103
-trans_charset_s_sc_i 1104
-trans_charset_s_s_ic 1105
-trans_charset_s_sc_ic 1106
-encoding_i_s 1107
-encoding_i_sc 1108
-encodingname_s_i 1109
-encodingname_s_ic 1110
-find_encoding_i_s 1111
-find_encoding_i_sc 1112
-trans_encoding_s_i 1113
-trans_encoding_s_ic 1114
-trans_encoding_s_s_i 1115
-trans_encoding_s_sc_i 1116
-trans_encoding_s_s_ic 1117
-trans_encoding_s_sc_ic 1118
-is_cclass_i_i_s_i 1119
-is_cclass_i_ic_s_i 1120
-is_cclass_i_i_sc_i 1121
-is_cclass_i_ic_sc_i 1122
-is_cclass_i_i_s_ic 1123
-is_cclass_i_ic_s_ic 1124
-is_cclass_i_i_sc_ic 1125
-is_cclass_i_ic_sc_ic 1126
-find_cclass_i_i_s_i_i 1127
-find_cclass_i_ic_s_i_i 1128
-find_cclass_i_i_sc_i_i 1129
-find_cclass_i_ic_sc_i_i 1130
-find_cclass_i_i_s_ic_i 1131
-find_cclass_i_ic_s_ic_i 1132
-find_cclass_i_i_sc_ic_i 1133
-find_cclass_i_ic_sc_ic_i 1134
-find_cclass_i_i_s_i_ic 1135
-find_cclass_i_ic_s_i_ic 1136
-find_cclass_i_i_sc_i_ic 1137
-find_cclass_i_ic_sc_i_ic 1138
-find_cclass_i_i_s_ic_ic 1139
-find_cclass_i_ic_s_ic_ic 1140
-find_cclass_i_i_sc_ic_ic 1141
-find_cclass_i_ic_sc_ic_ic 1142
-find_not_cclass_i_i_s_i_i 1143
-find_not_cclass_i_ic_s_i_i 1144
-find_not_cclass_i_i_sc_i_i 1145
-find_not_cclass_i_ic_sc_i_i 1146
-find_not_cclass_i_i_s_ic_i 1147
-find_not_cclass_i_ic_s_ic_i 1148
-find_not_cclass_i_i_sc_ic_i 1149
-find_not_cclass_i_ic_sc_ic_i 1150
-find_not_cclass_i_i_s_i_ic 1151
-find_not_cclass_i_ic_s_i_ic 1152
-find_not_cclass_i_i_sc_i_ic 1153
-find_not_cclass_i_ic_sc_i_ic 1154
-find_not_cclass_i_i_s_ic_ic 1155
-find_not_cclass_i_ic_s_ic_ic 1156
-find_not_cclass_i_i_sc_ic_ic 1157
-find_not_cclass_i_ic_sc_ic_ic 1158
-escape_s_s 1159
-compose_s_s 1160
-compose_s_sc 1161
-spawnw_i_s 1162
-spawnw_i_sc 1163
-spawnw_i_p 1164
-err_i 1165
-err_s 1166
-err_s_i 1167
-err_s_ic 1168
-time_i 1169
-time_n 1170
-gmtime_s_i 1171
-gmtime_s_ic 1172
-localtime_s_i 1173
-localtime_s_ic 1174
-decodetime_p_i 1175
-decodetime_p_ic 1176
-decodelocaltime_p_i 1177
-decodelocaltime_p_ic 1178
-sysinfo_s_i 1179
-sysinfo_s_ic 1180
-sysinfo_i_i 1181
-sysinfo_i_ic 1182
-sleep_i 1183
-sleep_ic 1184
-sleep_n 1185
-sleep_nc 1186
-sizeof_i_i 1187
-sizeof_i_ic 1188
-store_lex_s_p 1189
-store_lex_sc_p 1190
-store_dynamic_lex_s_p 1191
-store_dynamic_lex_sc_p 1192
-find_lex_p_s 1193
-find_lex_p_sc 1194
-find_dynamic_lex_p_s 1195
-find_dynamic_lex_p_sc 1196
-find_caller_lex_p_s 1197
-find_caller_lex_p_sc 1198
-get_namespace_p 1199
-get_namespace_p_p 1200
-get_namespace_p_pc 1201
-get_hll_namespace_p 1202
-get_hll_namespace_p_p 1203
-get_hll_namespace_p_pc 1204
-get_root_namespace_p 1205
-get_root_namespace_p_p 1206
-get_root_namespace_p_pc 1207
-get_global_p_s 1208
-get_global_p_sc 1209
-get_global_p_p_s 1210
-get_global_p_pc_s 1211
-get_global_p_p_sc 1212
-get_global_p_pc_sc 1213
-get_hll_global_p_s 1214
-get_hll_global_p_sc 1215
-get_hll_global_p_p_s 1216
-get_hll_global_p_pc_s 1217
-get_hll_global_p_p_sc 1218
-get_hll_global_p_pc_sc 1219
-get_root_global_p_s 1220
-get_root_global_p_sc 1221
-get_root_global_p_p_s 1222
-get_root_global_p_pc_s 1223
-get_root_global_p_p_sc 1224
-get_root_global_p_pc_sc 1225
-set_global_s_p 1226
-set_global_sc_p 1227
-set_global_p_s_p 1228
-set_global_pc_s_p 1229
-set_global_p_sc_p 1230
-set_global_pc_sc_p 1231
-set_hll_global_s_p 1232
-set_hll_global_sc_p 1233
-set_hll_global_p_s_p 1234
-set_hll_global_pc_s_p 1235
-set_hll_global_p_sc_p 1236
-set_hll_global_pc_sc_p 1237
-set_root_global_s_p 1238
-set_root_global_sc_p 1239
-set_root_global_p_s_p 1240
-set_root_global_pc_s_p 1241
-set_root_global_p_sc_p 1242
-set_root_global_pc_sc_p 1243
-find_name_p_s 1244
-find_name_p_sc 1245
-find_sub_not_null_p_s 1246
-find_sub_not_null_p_sc 1247
+get_params_pc 33
+set_returns_pc 34
+get_results_pc 35
+set_result_info_p 36
+set_result_info_pc 37
+result_info_p 38
+set_addr_i_ic 39
+set_addr_p_ic 40
+set_addr_p_i 41
+get_addr_i_p 42
+schedule_p 43
+addhandler_p 44
+push_eh_ic 45
+push_eh_p 46
+pop_eh 47
+throw_p 48
+throw_p_p 49
+rethrow_p 50
+count_eh_i 51
+die_s 52
+die_sc 53
+die_p 54
+die_pc 55
+die_i_i 56
+die_ic_i 57
+die_i_ic 58
+die_ic_ic 59
+exit_i 60
+exit_ic 61
+debug_i 62
+debug_ic 63
+bounds_i 64
+bounds_ic 65
+profile_i 66
+profile_ic 67
+trace_i 68
+trace_ic 69
+gc_debug_i 70
+gc_debug_ic 71
+interpinfo_i_i 72
+interpinfo_i_ic 73
+interpinfo_p_i 74
+interpinfo_p_ic 75
+interpinfo_s_i 76
+interpinfo_s_ic 77
+warningson_i 78
+warningson_ic 79
+warningsoff_i 80
+warningsoff_ic 81
+errorson_i 82
+errorson_ic 83
+errorsoff_i 84
+errorsoff_ic 85
+runinterp_p_i 86
+runinterp_p_ic 87
+getinterp_p 88
+sweep_ic 89
+collect 90
+sweepoff 91
+sweepon 92
+collectoff 93
+collecton 94
+needs_destroy_p 95
+loadlib_p_s 96
+loadlib_p_sc 97
+loadlib_p_s_p 98
+loadlib_p_sc_p 99
+loadlib_p_s_pc 100
+loadlib_p_sc_pc 101
+dlfunc_p_p_s_s 102
+dlfunc_p_p_sc_s 103
+dlfunc_p_p_s_sc 104
+dlfunc_p_p_sc_sc 105
+dlvar_p_p_s 106
+dlvar_p_p_sc 107
+compreg_s_p 108
+compreg_sc_p 109
+compreg_p_s 110
+compreg_p_sc 111
+new_callback_p_p_p_s 112
+new_callback_p_p_p_sc 113
+annotations_p 114
+annotations_p_s 115
+annotations_p_sc 116
+band_i_i 117
+band_i_ic 118
+band_p_i 119
+band_p_ic 120
+band_p_p 121
+band_i_i_i 122
+band_i_ic_i 123
+band_i_i_ic 124
+band_p_p_i 125
+band_p_p_ic 126
+band_p_p_p 127
+bands_p_s 128
+bands_p_sc 129
+bands_p_p 130
+bands_s_s_s 131
+bands_s_sc_s 132
+bands_s_s_sc 133
+bands_p_p_s 134
+bands_p_p_sc 135
+bands_p_p_p 136
+bnot_i 137
+bnot_i_i 138
+bnot_p 139
+bnot_p_p 140
+bnots_s_s 141
+bnots_s_sc 142
+bnots_p 143
+bnots_p_p 144
+bor_i_i 145
+bor_i_ic 146
+bor_p_i 147
+bor_p_ic 148
+bor_p_p 149
+bor_i_i_i 150
+bor_i_ic_i 151
+bor_i_i_ic 152
+bor_p_p_i 153
+bor_p_p_ic 154
+bor_p_p_p 155
+bors_p_s 156
+bors_p_sc 157
+bors_p_p 158
+bors_s_s_s 159
+bors_s_sc_s 160
+bors_s_s_sc 161
+bors_p_p_s 162
+bors_p_p_sc 163
+bors_p_p_p 164
+shl_i_i 165
+shl_i_ic 166
+shl_p_i 167
+shl_p_ic 168
+shl_p_p 169
+shl_i_i_i 170
+shl_i_ic_i 171
+shl_i_i_ic 172
+shl_p_p_i 173
+shl_p_p_ic 174
+shl_p_p_p 175
+shr_i_i 176
+shr_i_ic 177
+shr_p_i 178
+shr_p_ic 179
+shr_p_p 180
+shr_i_i_i 181
+shr_i_ic_i 182
+shr_i_i_ic 183
+shr_p_p_i 184
+shr_p_p_ic 185
+shr_p_p_p 186
+lsr_i_i 187
+lsr_i_ic 188
+lsr_p_i 189
+lsr_p_ic 190
+lsr_p_p 191
+lsr_i_i_i 192
+lsr_i_ic_i 193
+lsr_i_i_ic 194
+lsr_p_p_i 195
+lsr_p_p_ic 196
+lsr_p_p_p 197
+rot_i_i_i_ic 198
+rot_i_ic_i_ic 199
+rot_i_i_ic_ic 200
+bxor_i_i 201
+bxor_i_ic 202
+bxor_p_i 203
+bxor_p_ic 204
+bxor_p_p 205
+bxor_i_i_i 206
+bxor_i_ic_i 207
+bxor_i_i_ic 208
+bxor_p_p_i 209
+bxor_p_p_ic 210
+bxor_p_p_p 211
+bxors_p_s 212
+bxors_p_sc 213
+bxors_p_p 214
+bxors_s_s_s 215
+bxors_s_sc_s 216
+bxors_s_s_sc 217
+bxors_p_p_s 218
+bxors_p_p_sc 219
+bxors_p_p_p 220
+eq_i_i_ic 221
+eq_ic_i_ic 222
+eq_i_ic_ic 223
+eq_n_n_ic 224
+eq_nc_n_ic 225
+eq_n_nc_ic 226
+eq_s_s_ic 227
+eq_sc_s_ic 228
+eq_s_sc_ic 229
+eq_p_p_ic 230
+eq_p_i_ic 231
+eq_p_ic_ic 232
+eq_p_n_ic 233
+eq_p_nc_ic 234
+eq_p_s_ic 235
+eq_p_sc_ic 236
+eq_str_p_p_ic 237
+eq_num_p_p_ic 238
+eq_addr_s_s_ic 239
+eq_addr_sc_s_ic 240
+eq_addr_s_sc_ic 241
+eq_addr_sc_sc_ic 242
+eq_addr_p_p_ic 243
+ne_i_i_ic 244
+ne_ic_i_ic 245
+ne_i_ic_ic 246
+ne_n_n_ic 247
+ne_nc_n_ic 248
+ne_n_nc_ic 249
+ne_s_s_ic 250
+ne_sc_s_ic 251
+ne_s_sc_ic 252
+ne_p_p_ic 253
+ne_p_i_ic 254
+ne_p_ic_ic 255
+ne_p_n_ic 256
+ne_p_nc_ic 257
+ne_p_s_ic 258
+ne_p_sc_ic 259
+ne_str_p_p_ic 260
+ne_num_p_p_ic 261
+ne_addr_s_s_ic 262
+ne_addr_sc_s_ic 263
+ne_addr_s_sc_ic 264
+ne_addr_sc_sc_ic 265
+ne_addr_p_p_ic 266
+lt_i_i_ic 267
+lt_ic_i_ic 268
+lt_i_ic_ic 269
+lt_n_n_ic 270
+lt_nc_n_ic 271
+lt_n_nc_ic 272
+lt_s_s_ic 273
+lt_sc_s_ic 274
+lt_s_sc_ic 275
+lt_p_p_ic 276
+lt_p_i_ic 277
+lt_p_ic_ic 278
+lt_p_n_ic 279
+lt_p_nc_ic 280
+lt_p_s_ic 281
+lt_p_sc_ic 282
+lt_str_p_p_ic 283
+lt_num_p_p_ic 284
+le_i_i_ic 285
+le_ic_i_ic 286
+le_i_ic_ic 287
+le_n_n_ic 288
+le_nc_n_ic 289
+le_n_nc_ic 290
+le_s_s_ic 291
+le_sc_s_ic 292
+le_s_sc_ic 293
+le_p_p_ic 294
+le_p_i_ic 295
+le_p_ic_ic 296
+le_p_n_ic 297
+le_p_nc_ic 298
+le_p_s_ic 299
+le_p_sc_ic 300
+le_str_p_p_ic 301
+le_num_p_p_ic 302
+gt_p_p_ic 303
+gt_p_i_ic 304
+gt_p_ic_ic 305
+gt_p_n_ic 306
+gt_p_nc_ic 307
+gt_p_s_ic 308
+gt_p_sc_ic 309
+gt_str_p_p_ic 310
+gt_num_p_p_ic 311
+ge_p_p_ic 312
+ge_p_i_ic 313
+ge_p_ic_ic 314
+ge_p_n_ic 315
+ge_p_nc_ic 316
+ge_p_s_ic 317
+ge_p_sc_ic 318
+ge_str_p_p_ic 319
+ge_num_p_p_ic 320
+if_null_p_ic 321
+if_null_s_ic 322
+unless_null_p_ic 323
+unless_null_s_ic 324
+cmp_i_i_i 325
+cmp_i_ic_i 326
+cmp_i_i_ic 327
+cmp_i_n_n 328
+cmp_i_nc_n 329
+cmp_i_n_nc 330
+cmp_i_s_s 331
+cmp_i_sc_s 332
+cmp_i_s_sc 333
+cmp_i_p_p 334
+cmp_i_p_i 335
+cmp_i_p_ic 336
+cmp_i_p_n 337
+cmp_i_p_nc 338
+cmp_i_p_s 339
+cmp_i_p_sc 340
+cmp_str_i_p_p 341
+cmp_num_i_p_p 342
+cmp_pmc_p_p_p 343
+issame_i_p_p 344
+issame_i_s_s 345
+issame_i_sc_s 346
+issame_i_s_sc 347
+issame_i_sc_sc 348
+isntsame_i_p_p 349
+isntsame_i_s_s 350
+isntsame_i_sc_s 351
+isntsame_i_s_sc 352
+isntsame_i_sc_sc 353
+istrue_i_p 354
+isfalse_i_p 355
+isnull_i_p 356
+isnull_i_pc 357
+isnull_i_s 358
+isnull_i_sc 359
+isgt_i_p_p 360
+isge_i_p_p 361
+isle_i_i_i 362
+isle_i_ic_i 363
+isle_i_i_ic 364
+isle_i_n_n 365
+isle_i_nc_n 366
+isle_i_n_nc 367
+isle_i_s_s 368
+isle_i_sc_s 369
+isle_i_s_sc 370
+isle_i_p_p 371
+islt_i_i_i 372
+islt_i_ic_i 373
+islt_i_i_ic 374
+islt_i_n_n 375
+islt_i_nc_n 376
+islt_i_n_nc 377
+islt_i_s_s 378
+islt_i_sc_s 379
+islt_i_s_sc 380
+islt_i_p_p 381
+iseq_i_i_i 382
+iseq_i_ic_i 383
+iseq_i_i_ic 384
+iseq_i_n_n 385
+iseq_i_nc_n 386
+iseq_i_n_nc 387
+iseq_i_s_s 388
+iseq_i_sc_s 389
+iseq_i_s_sc 390
+iseq_i_p_p 391
+isne_i_i_i 392
+isne_i_ic_i 393
+isne_i_i_ic 394
+isne_i_n_n 395
+isne_i_nc_n 396
+isne_i_n_nc 397
+isne_i_s_s 398
+isne_i_sc_s 399
+isne_i_s_sc 400
+isne_i_p_p 401
+and_i_i_i 402
+and_i_ic_i 403
+and_i_i_ic 404
+and_p_p_p 405
+not_i 406
+not_i_i 407
+not_p 408
+not_p_p 409
+or_i_i_i 410
+or_i_ic_i 411
+or_i_i_ic 412
+or_p_p_p 413
+xor_i_i_i 414
+xor_i_ic_i 415
+xor_i_i_ic 416
+xor_p_p_p 417
+debug_init 418
+debug_load_sc 419
+debug_break 420
+debug_print 421
+backtrace 422
+getline_i 423
+getfile_s 424
+set_label_p_ic 425
+get_label_i_p 426
+close_p 427
+fdopen_p_i_s 428
+fdopen_p_ic_s 429
+fdopen_p_i_sc 430
+fdopen_p_ic_sc 431
+getstdin_p 432
+getstdout_p 433
+getstderr_p 434
+setstdin_p 435
+setstdout_p 436
+setstderr_p 437
+open_p_s_s 438
+open_p_sc_s 439
+open_p_s_sc 440
+open_p_sc_sc 441
+open_p_s 442
+open_p_sc 443
+print_i 444
+print_ic 445
+print_n 446
+print_nc 447
+print_s 448
+print_sc 449
+print_p 450
+say_i 451
+say_ic 452
+say_n 453
+say_nc 454
+say_s 455
+say_sc 456
+say_p 457
+printerr_i 458
+printerr_ic 459
+printerr_n 460
+printerr_nc 461
+printerr_s 462
+printerr_sc 463
+printerr_p 464
+print_p_i 465
+print_p_ic 466
+print_p_n 467
+print_p_nc 468
+print_p_s 469
+print_p_sc 470
+print_p_p 471
+read_s_i 472
+read_s_ic 473
+read_s_p_i 474
+read_s_p_ic 475
+readline_s_p 476
+peek_s 477
+peek_s_p 478
+stat_i_s_i 479
+stat_i_sc_i 480
+stat_i_s_ic 481
+stat_i_sc_ic 482
+stat_i_i_i 483
+stat_i_ic_i 484
+stat_i_i_ic 485
+stat_i_ic_ic 486
+seek_p_i_i 487
+seek_p_ic_i 488
+seek_p_i_ic 489
+seek_p_ic_ic 490
+seek_p_i_i_i 491
+seek_p_ic_i_i 492
+seek_p_i_ic_i 493
+seek_p_ic_ic_i 494
+seek_p_i_i_ic 495
+seek_p_ic_i_ic 496
+seek_p_i_ic_ic 497
+seek_p_ic_ic_ic 498
+tell_i_p 499
+tell_i_i_p 500
+abs_i 501
+abs_n 502
+abs_i_i 503
+abs_n_n 504
+abs_p 505
+abs_p_p 506
+add_i_i 507
+add_i_ic 508
+add_n_n 509
+add_n_nc 510
+add_p_p 511
+add_p_i 512
+add_p_ic 513
+add_p_n 514
+add_p_nc 515
+add_i_i_i 516
+add_i_ic_i 517
+add_i_i_ic 518
+add_n_n_n 519
+add_n_nc_n 520
+add_n_n_nc 521
+add_p_p_p 522
+add_p_p_i 523
+add_p_p_ic 524
+add_p_p_n 525
+add_p_p_nc 526
+cmod_i_i_i 527
+cmod_i_ic_i 528
+cmod_i_i_ic 529
+cmod_p_p_i 530
+cmod_p_p_ic 531
+cmod_p_p_p 532
+cmod_n_n_n 533
+cmod_n_nc_n 534
+cmod_n_n_nc 535
+cmod_p_p_n 536
+cmod_p_p_nc 537
+dec_i 538
+dec_n 539
+dec_p 540
+div_i_i 541
+div_i_ic 542
+div_n_n 543
+div_n_nc 544
+div_p_p 545
+div_p_i 546
+div_p_ic 547
+div_p_n 548
+div_p_nc 549
+div_i_i_i 550
+div_i_ic_i 551
+div_i_i_ic 552
+div_i_ic_ic 553
+div_n_n_n 554
+div_n_nc_n 555
+div_n_n_nc 556
+div_n_nc_nc 557
+div_p_p_p 558
+div_p_p_i 559
+div_p_p_ic 560
+div_p_p_n 561
+div_p_p_nc 562
+fdiv_i_i 563
+fdiv_i_ic 564
+fdiv_n_n 565
+fdiv_n_nc 566
+fdiv_p_p 567
+fdiv_p_i 568
+fdiv_p_ic 569
+fdiv_p_n 570
+fdiv_p_nc 571
+fdiv_i_i_i 572
+fdiv_i_ic_i 573
+fdiv_i_i_ic 574
+fdiv_n_n_n 575
+fdiv_n_nc_n 576
+fdiv_n_n_nc 577
+fdiv_p_p_p 578
+fdiv_p_p_i 579
+fdiv_p_p_ic 580
+fdiv_p_p_n 581
+fdiv_p_p_nc 582
+ceil_n 583
+ceil_i_n 584
+ceil_n_n 585
+floor_n 586
+floor_i_n 587
+floor_n_n 588
+inc_i 589
+inc_n 590
+inc_p 591
+mod_i_i 592
+mod_i_ic 593
+mod_n_n 594
+mod_n_nc 595
+mod_p_p 596
+mod_p_i 597
+mod_p_ic 598
+mod_p_n 599
+mod_p_nc 600
+mod_i_i_i 601
+mod_i_ic_i 602
+mod_i_i_ic 603
+mod_n_n_n 604
+mod_n_nc_n 605
+mod_n_n_nc 606
+mod_p_p_p 607
+mod_p_p_i 608
+mod_p_p_ic 609
+mod_p_p_n 610
+mod_p_p_nc 611
+mul_i_i 612
+mul_i_ic 613
+mul_n_n 614
+mul_n_nc 615
+mul_p_p 616
+mul_p_i 617
+mul_p_ic 618
+mul_p_n 619
+mul_p_nc 620
+mul_i_i_i 621
+mul_i_ic_i 622
+mul_i_i_ic 623
+mul_n_n_n 624
+mul_n_nc_n 625
+mul_n_n_nc 626
+mul_p_p_p 627
+mul_p_p_i 628
+mul_p_p_ic 629
+mul_p_p_n 630
+mul_p_p_nc 631
+neg_i 632
+neg_n 633
+neg_p 634
+neg_i_i 635
+neg_n_n 636
+neg_p_p 637
+pow_n_n_n 638
+pow_n_nc_n 639
+pow_n_n_nc 640
+pow_p_p_p 641
+pow_p_p_i 642
+pow_p_p_ic 643
+pow_p_p_n 644
+pow_p_p_nc 645
+pow_n_n_i 646
+pow_n_nc_i 647
+pow_n_n_ic 648
+pow_n_nc_ic 649
+sub_i_i 650
+sub_i_ic 651
+sub_n_n 652
+sub_n_nc 653
+sub_p_p 654
+sub_p_i 655
+sub_p_ic 656
+sub_p_n 657
+sub_p_nc 658
+sub_i_i_i 659
+sub_i_ic_i 660
+sub_i_i_ic 661
+sub_n_n_n 662
+sub_n_nc_n 663
+sub_n_n_nc 664
+sub_p_p_p 665
+sub_p_p_i 666
+sub_p_p_ic 667
+sub_p_p_n 668
+sub_p_p_nc 669
+sqrt_n_n 670
+acos_n_n 671
+asec_n_n 672
+asin_n_n 673
+atan_n_n 674
+atan_n_n_n 675
+atan_n_nc_n 676
+atan_n_n_nc 677
+cos_n_n 678
+cosh_n_n 679
+exp_n_n 680
+ln_n_n 681
+log10_n_n 682
+log2_n_n 683
+sec_n_n 684
+sech_n_n 685
+sin_n_n 686
+sinh_n_n 687
+tan_n_n 688
+tanh_n_n 689
+gcd_i_i_i 690
+gcd_i_ic_i 691
+gcd_i_i_ic 692
+lcm_i_i_i 693
+lcm_i_ic_i 694
+lcm_i_i_ic 695
+fact_i_i 696
+fact_n_i 697
+callmethodcc_p_s 698
+callmethodcc_p_sc 699
+callmethodcc_p_p 700
+callmethod_p_s_p 701
+callmethod_p_sc_p 702
+callmethod_p_p_p 703
+tailcallmethod_p_s 704
+tailcallmethod_p_sc 705
+tailcallmethod_p_p 706
+addmethod_p_s_p 707
+addmethod_p_sc_p 708
+can_i_p_s 709
+can_i_p_sc 710
+does_i_p_s 711
+does_i_p_sc 712
+does_i_p_p 713
+does_i_p_pc 714
+isa_i_p_s 715
+isa_i_p_sc 716
+isa_i_p_p 717
+isa_i_p_pc 718
+newclass_p_s 719
+newclass_p_sc 720
+newclass_p_p 721
+newclass_p_pc 722
+subclass_p_p 723
+subclass_p_pc 724
+subclass_p_p_s 725
+subclass_p_pc_s 726
+subclass_p_p_sc 727
+subclass_p_pc_sc 728
+subclass_p_p_p 729
+subclass_p_pc_p 730
+subclass_p_p_pc 731
+subclass_p_pc_pc 732
+subclass_p_s 733
+subclass_p_sc 734
+subclass_p_s_s 735
+subclass_p_sc_s 736
+subclass_p_s_sc 737
+subclass_p_sc_sc 738
+subclass_p_s_p 739
+subclass_p_sc_p 740
+subclass_p_s_pc 741
+subclass_p_sc_pc 742
+get_class_p_s 743
+get_class_p_sc 744
+get_class_p_p 745
+get_class_p_pc 746
+class_p_p 747
+addparent_p_p 748
+removeparent_p_p 749
+addrole_p_p 750
+addattribute_p_s 751
+addattribute_p_sc 752
+removeattribute_p_s 753
+removeattribute_p_sc 754
+getattribute_p_p_s 755
+getattribute_p_p_sc 756
+getattribute_p_p_p_s 757
+getattribute_p_p_pc_s 758
+getattribute_p_p_p_sc 759
+getattribute_p_p_pc_sc 760
+setattribute_p_s_p 761
+setattribute_p_sc_p 762
+setattribute_p_p_s_p 763
+setattribute_p_pc_s_p 764
+setattribute_p_p_sc_p 765
+setattribute_p_pc_sc_p 766
+inspect_p_p 767
+inspect_p_pc 768
+inspect_p_p_s 769
+inspect_p_pc_s 770
+inspect_p_p_sc 771
+inspect_p_pc_sc 772
+new_p_s 773
+new_p_sc 774
+new_p_s_p 775
+new_p_sc_p 776
+new_p_s_pc 777
+new_p_sc_pc 778
+new_p_p 779
+new_p_pc 780
+new_p_p_p 781
+new_p_pc_p 782
+new_p_p_pc 783
+new_p_pc_pc 784
+root_new_p_p 785
+root_new_p_pc 786
+root_new_p_p_p 787
+root_new_p_pc_p 788
+root_new_p_p_pc 789
+root_new_p_pc_pc 790
+typeof_s_p 791
+typeof_p_p 792
+get_repr_s_p 793
+find_method_p_p_s 794
+find_method_p_p_sc 795
+defined_i_p 796
+defined_i_p_ki 797
+defined_i_p_kic 798
+defined_i_p_k 799
+defined_i_p_kc 800
+exists_i_p_ki 801
+exists_i_p_kic 802
+exists_i_p_k 803
+exists_i_p_kc 804
+delete_p_k 805
+delete_p_kc 806
+delete_p_ki 807
+delete_p_kic 808
+elements_i_p 809
+push_p_i 810
+push_p_ic 811
+push_p_n 812
+push_p_nc 813
+push_p_s 814
+push_p_sc 815
+push_p_p 816
+pop_i_p 817
+pop_n_p 818
+pop_s_p 819
+pop_p_p 820
+unshift_p_i 821
+unshift_p_ic 822
+unshift_p_n 823
+unshift_p_nc 824
+unshift_p_s 825
+unshift_p_sc 826
+unshift_p_p 827
+shift_i_p 828
+shift_n_p 829
+shift_s_p 830
+shift_p_p 831
+splice_p_p_i_i 832
+splice_p_p_ic_i 833
+splice_p_p_i_ic 834
+splice_p_p_ic_ic 835
+setprop_p_s_p 836
+setprop_p_sc_p 837
+getprop_p_s_p 838
+getprop_p_sc_p 839
+delprop_p_s 840
+delprop_p_sc 841
+prophash_p_p 842
+freeze_s_p 843
+thaw_p_s 844
+thaw_p_sc 845
+add_multi_s_s_p 846
+add_multi_sc_s_p 847
+add_multi_s_sc_p 848
+add_multi_sc_sc_p 849
+find_multi_p_s_s 850
+find_multi_p_sc_s 851
+find_multi_p_s_sc 852
+find_multi_p_sc_sc 853
+register_p 854
+unregister_p 855
+box_p_i 856
+box_p_ic 857
+box_p_n 858
+box_p_nc 859
+box_p_s 860
+box_p_sc 861
+iter_p_p 862
+morph_p_p 863
+morph_p_pc 864
+clone_s_s 865
+clone_s_sc 866
+exchange_i_i 867
+exchange_p_p 868
+exchange_n_n 869
+exchange_s_s 870
+set_i_i 871
+set_i_ic 872
+set_i_n 873
+set_i_nc 874
+set_i_s 875
+set_i_sc 876
+set_n_n 877
+set_n_nc 878
+set_n_i 879
+set_n_ic 880
+set_n_s 881
+set_n_sc 882
+set_n_p 883
+set_s_p 884
+set_s_s 885
+set_s_sc 886
+set_s_i 887
+set_s_ic 888
+set_s_n 889
+set_s_nc 890
+set_p_pc 891
+set_p_p 892
+set_p_i 893
+set_p_ic 894
+set_p_n 895
+set_p_nc 896
+set_p_s 897
+set_p_sc 898
+set_i_p 899
+assign_p_p 900
+assign_p_i 901
+assign_p_ic 902
+assign_p_n 903
+assign_p_nc 904
+assign_p_s 905
+assign_p_sc 906
+assign_s_s 907
+assign_s_sc 908
+setref_p_p 909
+deref_p_p 910
+setp_ind_i_p 911
+setp_ind_ic_p 912
+setn_ind_i_n 913
+setn_ind_ic_n 914
+setn_ind_i_nc 915
+setn_ind_ic_nc 916
+sets_ind_i_s 917
+sets_ind_ic_s 918
+sets_ind_i_sc 919
+sets_ind_ic_sc 920
+seti_ind_i_i 921
+seti_ind_ic_i 922
+seti_ind_i_ic 923
+seti_ind_ic_ic 924
+set_p_ki_i 925
+set_p_kic_i 926
+set_p_ki_ic 927
+set_p_kic_ic 928
+set_p_ki_n 929
+set_p_kic_n 930
+set_p_ki_nc 931
+set_p_kic_nc 932
+set_p_ki_s 933
+set_p_kic_s 934
+set_p_ki_sc 935
+set_p_kic_sc 936
+set_p_ki_p 937
+set_p_kic_p 938
+set_i_p_ki 939
+set_i_p_kic 940
+set_n_p_ki 941
+set_n_p_kic 942
+set_s_p_ki 943
+set_s_p_kic 944
+set_p_p_ki 945
+set_p_p_kic 946
+set_p_k_i 947
+set_p_kc_i 948
+set_p_k_ic 949
+set_p_kc_ic 950
+set_p_k_n 951
+set_p_kc_n 952
+set_p_k_nc 953
+set_p_kc_nc 954
+set_p_k_s 955
+set_p_kc_s 956
+set_p_k_sc 957
+set_p_kc_sc 958
+set_p_k_p 959
+set_p_kc_p 960
+set_i_p_k 961
+set_i_p_kc 962
+set_n_p_k 963
+set_n_p_kc 964
+set_s_p_k 965
+set_s_p_kc 966
+set_p_p_k 967
+set_p_p_kc 968
+clone_p_p 969
+clone_p_p_p 970
+clone_p_p_pc 971
+copy_p_p 972
+null_s 973
+null_i 974
+null_p 975
+null_n 976
+cleari 977
+clearn 978
+clears 979
+clearp 980
+ord_i_s 981
+ord_i_sc 982
+ord_i_s_i 983
+ord_i_sc_i 984
+ord_i_s_ic 985
+ord_i_sc_ic 986
+chr_s_i 987
+chr_s_ic 988
+chopn_s_s_i 989
+chopn_s_sc_i 990
+chopn_s_s_ic 991
+chopn_s_sc_ic 992
+concat_s_s 993
+concat_s_sc 994
+concat_p_p 995
+concat_p_s 996
+concat_p_sc 997
+concat_s_s_s 998
+concat_s_sc_s 999
+concat_s_s_sc 1000
+concat_p_p_s 1001
+concat_p_p_sc 1002
+concat_p_p_p 1003
+repeat_s_s_i 1004
+repeat_s_sc_i 1005
+repeat_s_s_ic 1006
+repeat_s_sc_ic 1007
+repeat_p_p_i 1008
+repeat_p_p_ic 1009
+repeat_p_p_p 1010
+repeat_p_i 1011
+repeat_p_ic 1012
+repeat_p_p 1013
+length_i_s 1014
+length_i_sc 1015
+bytelength_i_s 1016
+bytelength_i_sc 1017
+pin_s 1018
+unpin_s 1019
+substr_s_s_i 1020
+substr_s_sc_i 1021
+substr_s_s_ic 1022
+substr_s_sc_ic 1023
+substr_s_s_i_i 1024
+substr_s_sc_i_i 1025
+substr_s_s_ic_i 1026
+substr_s_sc_ic_i 1027
+substr_s_s_i_ic 1028
+substr_s_sc_i_ic 1029
+substr_s_s_ic_ic 1030
+substr_s_sc_ic_ic 1031
+substr_s_p_i_i 1032
+substr_s_p_ic_i 1033
+substr_s_p_i_ic 1034
+substr_s_p_ic_ic 1035
+replace_s_s_i_i_s 1036
+replace_s_sc_i_i_s 1037
+replace_s_s_ic_i_s 1038
+replace_s_sc_ic_i_s 1039
+replace_s_s_i_ic_s 1040
+replace_s_sc_i_ic_s 1041
+replace_s_s_ic_ic_s 1042
+replace_s_sc_ic_ic_s 1043
+replace_s_s_i_i_sc 1044
+replace_s_sc_i_i_sc 1045
+replace_s_s_ic_i_sc 1046
+replace_s_sc_ic_i_sc 1047
+replace_s_s_i_ic_sc 1048
+replace_s_sc_i_ic_sc 1049
+replace_s_s_ic_ic_sc 1050
+replace_s_sc_ic_ic_sc 1051
+index_i_s_s 1052
+index_i_sc_s 1053
+index_i_s_sc 1054
+index_i_sc_sc 1055
+index_i_s_s_i 1056
+index_i_sc_s_i 1057
+index_i_s_sc_i 1058
+index_i_sc_sc_i 1059
+index_i_s_s_ic 1060
+index_i_sc_s_ic 1061
+index_i_s_sc_ic 1062
+index_i_sc_sc_ic 1063
+sprintf_s_s_p 1064
+sprintf_s_sc_p 1065
+sprintf_p_p_p 1066
+new_s 1067
+new_s_i 1068
+new_s_ic 1069
+stringinfo_i_s_i 1070
+stringinfo_i_sc_i 1071
+stringinfo_i_s_ic 1072
+stringinfo_i_sc_ic 1073
+upcase_s_s 1074
+upcase_s_sc 1075
+downcase_s_s 1076
+downcase_s_sc 1077
+titlecase_s_s 1078
+titlecase_s_sc 1079
+join_s_s_p 1080
+join_s_sc_p 1081
+split_p_s_s 1082
+split_p_sc_s 1083
+split_p_s_sc 1084
+split_p_sc_sc 1085
+charset_i_s 1086
+charset_i_sc 1087
+charsetname_s_i 1088
+charsetname_s_ic 1089
+find_charset_i_s 1090
+find_charset_i_sc 1091
+trans_charset_s_s_i 1092
+trans_charset_s_sc_i 1093
+trans_charset_s_s_ic 1094
+trans_charset_s_sc_ic 1095
+encoding_i_s 1096
+encoding_i_sc 1097
+encodingname_s_i 1098
+encodingname_s_ic 1099
+find_encoding_i_s 1100
+find_encoding_i_sc 1101
+trans_encoding_s_s_i 1102
+trans_encoding_s_sc_i 1103
+trans_encoding_s_s_ic 1104
+trans_encoding_s_sc_ic 1105
+is_cclass_i_i_s_i 1106
+is_cclass_i_ic_s_i 1107
+is_cclass_i_i_sc_i 1108
+is_cclass_i_ic_sc_i 1109
+is_cclass_i_i_s_ic 1110
+is_cclass_i_ic_s_ic 1111
+is_cclass_i_i_sc_ic 1112
+is_cclass_i_ic_sc_ic 1113
+find_cclass_i_i_s_i_i 1114
+find_cclass_i_ic_s_i_i 1115
+find_cclass_i_i_sc_i_i 1116
+find_cclass_i_ic_sc_i_i 1117
+find_cclass_i_i_s_ic_i 1118
+find_cclass_i_ic_s_ic_i 1119
+find_cclass_i_i_sc_ic_i 1120
+find_cclass_i_ic_sc_ic_i 1121
+find_cclass_i_i_s_i_ic 1122
+find_cclass_i_ic_s_i_ic 1123
+find_cclass_i_i_sc_i_ic 1124
+find_cclass_i_ic_sc_i_ic 1125
+find_cclass_i_i_s_ic_ic 1126
+find_cclass_i_ic_s_ic_ic 1127
+find_cclass_i_i_sc_ic_ic 1128
+find_cclass_i_ic_sc_ic_ic 1129
+find_not_cclass_i_i_s_i_i 1130
+find_not_cclass_i_ic_s_i_i 1131
+find_not_cclass_i_i_sc_i_i 1132
+find_not_cclass_i_ic_sc_i_i 1133
+find_not_cclass_i_i_s_ic_i 1134
+find_not_cclass_i_ic_s_ic_i 1135
+find_not_cclass_i_i_sc_ic_i 1136
+find_not_cclass_i_ic_sc_ic_i 1137
+find_not_cclass_i_i_s_i_ic 1138
+find_not_cclass_i_ic_s_i_ic 1139
+find_not_cclass_i_i_sc_i_ic 1140
+find_not_cclass_i_ic_sc_i_ic 1141
+find_not_cclass_i_i_s_ic_ic 1142
+find_not_cclass_i_ic_s_ic_ic 1143
+find_not_cclass_i_i_sc_ic_ic 1144
+find_not_cclass_i_ic_sc_ic_ic 1145
+escape_s_s 1146
+compose_s_s 1147
+compose_s_sc 1148
+spawnw_i_s 1149
+spawnw_i_sc 1150
+spawnw_i_p 1151
+err_i 1152
+err_s 1153
+err_s_i 1154
+err_s_ic 1155
+time_i 1156
+time_n 1157
+gmtime_s_i 1158
+gmtime_s_ic 1159
+localtime_s_i 1160
+localtime_s_ic 1161
+decodetime_p_i 1162
+decodetime_p_ic 1163
+decodelocaltime_p_i 1164
+decodelocaltime_p_ic 1165
+sysinfo_s_i 1166
+sysinfo_s_ic 1167
+sysinfo_i_i 1168
+sysinfo_i_ic 1169
+sleep_i 1170
+sleep_ic 1171
+sleep_n 1172
+sleep_nc 1173
+sizeof_i_i 1174
+sizeof_i_ic 1175
+store_lex_s_p 1176
+store_lex_sc_p 1177
+store_dynamic_lex_s_p 1178
+store_dynamic_lex_sc_p 1179
+find_lex_p_s 1180
+find_lex_p_sc 1181
+find_dynamic_lex_p_s 1182
+find_dynamic_lex_p_sc 1183
+find_caller_lex_p_s 1184
+find_caller_lex_p_sc 1185
+get_namespace_p 1186
+get_namespace_p_p 1187
+get_namespace_p_pc 1188
+get_hll_namespace_p 1189
+get_hll_namespace_p_p 1190
+get_hll_namespace_p_pc 1191
+get_root_namespace_p 1192
+get_root_namespace_p_p 1193
+get_root_namespace_p_pc 1194
+get_global_p_s 1195
+get_global_p_sc 1196
+get_global_p_p_s 1197
+get_global_p_pc_s 1198
+get_global_p_p_sc 1199
+get_global_p_pc_sc 1200
+get_hll_global_p_s 1201
+get_hll_global_p_sc 1202
+get_hll_global_p_p_s 1203
+get_hll_global_p_pc_s 1204
+get_hll_global_p_p_sc 1205
+get_hll_global_p_pc_sc 1206
+get_root_global_p_s 1207
+get_root_global_p_sc 1208
+get_root_global_p_p_s 1209
+get_root_global_p_pc_s 1210
+get_root_global_p_p_sc 1211
+get_root_global_p_pc_sc 1212
+set_global_s_p 1213
+set_global_sc_p 1214
+set_global_p_s_p 1215
+set_global_pc_s_p 1216
+set_global_p_sc_p 1217
+set_global_pc_sc_p 1218
+set_hll_global_s_p 1219
+set_hll_global_sc_p 1220
+set_hll_global_p_s_p 1221
+set_hll_global_pc_s_p 1222
+set_hll_global_p_sc_p 1223
+set_hll_global_pc_sc_p 1224
+set_root_global_s_p 1225
+set_root_global_sc_p 1226
+set_root_global_p_s_p 1227
+set_root_global_pc_s_p 1228
+set_root_global_p_sc_p 1229
+set_root_global_pc_sc_p 1230
+find_name_p_s 1231
+find_name_p_sc 1232
+find_sub_not_null_p_s 1233
+find_sub_not_null_p_sc 1234
Modified: branches/ops_pct/src/ops/pmc.ops
==============================================================================
--- branches/ops_pct/src/ops/pmc.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/pmc.ops Wed May 5 08:45:29 2010 (r46302)
@@ -60,7 +60,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
goto ADDRESS(dest);
@@ -80,7 +80,7 @@
else {
const INTVAL type = Parrot_pmc_get_type_str(interp, name);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", name);
goto ADDRESS(dest);
@@ -98,7 +98,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
goto ADDRESS(dest);
@@ -116,7 +116,7 @@
else {
const INTVAL type = Parrot_pmc_get_type(interp, name_key);
if (type <= 0) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
goto ADDRESS(dest);
@@ -151,7 +151,7 @@
if (!PMC_IS_NULL(classobj))
$1 = VTABLE_instantiate(interp, classobj, PMCNULL);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
goto ADDRESS(dest);
@@ -169,7 +169,7 @@
if (!PMC_IS_NULL(classobj))
$1 = VTABLE_instantiate(interp, classobj, $3);
else {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
+ opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
EXCEPTION_NO_CLASS,
"Class '%Ss' not found", VTABLE_get_repr(interp, key));
goto ADDRESS(dest);
@@ -234,7 +234,7 @@
opcode_t * const resume = expr NEXT();
$1 = VTABLE_find_method(interp, $2, $3);
if (PMC_IS_NULL($1) || !VTABLE_defined(interp, $1)) {
- opcode_t *dest = Parrot_ex_throw_from_op_args(interp, resume,
+ 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'", $3,
VTABLE_get_string(interp, VTABLE_get_class(interp, $2)));
@@ -690,7 +690,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/set.ops
==============================================================================
--- branches/ops_pct/src/ops/set.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/set.ops Wed May 5 08:45:29 2010 (r46302)
@@ -19,15 +19,15 @@
=item B<clone>(out STR, in STR)
-Make a clone of $2, and put it in $1. Doesn't affect what was in
-$1. Removes the constant flag on the copy, if there was one.
+Effectively the same as set $1, $2, except that if $2 is a null STRING, $1 gets
+a new empty string instead.
=cut
inline op clone(out STR, in STR) :base_mem {
/* cloning a NULL STRING produces an empty STRING; TT #964 */
$1 = $2
- ? Parrot_str_copy(interp, $2)
+ ? $2
: Parrot_str_new(interp, NULL, 0);
}
@@ -154,7 +154,7 @@
}
inline op set(out STR, inconst STR) :base_core {
- $1 = Parrot_str_copy(interp, $2);
+ $1 = $2;
}
inline op set(out STR, in INT) :base_core {
@@ -186,8 +186,7 @@
}
inline op set(invar PMC, inconst STR) :base_core {
- VTABLE_set_string_native(interp, $1,
- Parrot_str_copy(interp, $2));
+ VTABLE_set_string_native(interp, $1, $2);
}
inline op set(out INT, invar PMC) :base_core {
$1 = VTABLE_get_integer(interp, $2);
@@ -247,7 +246,7 @@
}
inline op assign(out STR, in STR) :base_core {
- $1 = Parrot_str_set(interp, $1, $2);
+ $1 = $2;
}
inline op setref(invar PMC, invar PMC) :base_core {
@@ -492,8 +491,8 @@
inline op copy(inout PMC, invar PMC) :base_mem {
if (PMC_IS_NULL($1)) {
- opcode_t *dest = expr NEXT();
- opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
+ opcode_t * const dest = expr NEXT();
+ opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_NULL_REG_ACCESS, "Null PMC in copy");
goto ADDRESS(handler);
}
@@ -512,7 +511,6 @@
/* don't let the clone's destruction destroy the destination's data */
PObj_custom_destroy_CLEAR(clone);
PMC_data(clone) = NULL;
- PMC_sync(clone) = NULL;
PMC_metadata(clone) = NULL;
/* Restore metadata. */
@@ -560,7 +558,7 @@
=cut
inline op null(out STR) :base_core {
- $1 = NULL;
+ $1 = STRINGNULL;
}
inline op null(out INT) :base_core {
@@ -617,7 +615,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/string.ops
==============================================================================
--- branches/ops_pct/src/ops/string.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/string.ops Wed May 5 08:45:29 2010 (r46302)
@@ -57,11 +57,6 @@
}
-=item B<chopn>(inout STR, in INT)
-
-Remove n characters specified by integer $2 from the tail of string $1.
-If $2 is negative, cut the string after -$2 characters.
-
=item B<chopn>(out STR, in STR, in INT)
Remove n characters specified by integer $3 from the tail of string $2,
@@ -70,10 +65,6 @@
=cut
-inline op chopn(inout STR, in INT) :base_core {
- Parrot_str_chopn_inplace(interp, $1, $2);
-}
-
inline op chopn(out STR, in STR, in INT) :base_core {
$1 = Parrot_str_chopn(interp, $2, $3);
}
@@ -97,8 +88,8 @@
=cut
-inline op concat(inout STR, in STR) :base_mem {
- $1 = Parrot_str_append(interp, $1, $2);
+inline op concat(inout STR, in STR) :base_mem :deprecated {
+ $1 = Parrot_str_concat(interp, $1, $2);
}
inline op concat(invar PMC, invar PMC) :base_core {
@@ -110,7 +101,7 @@
}
inline op concat(out STR, in STR, in STR) :base_mem {
- $1 = Parrot_str_concat(interp, $2, $3, 1);
+ $1 = Parrot_str_concat(interp, $2, $3);
}
inline op concat(invar PMC, invar PMC, in STR) :base_core {
@@ -198,8 +189,8 @@
inline op bytelength(out INT, in STR) :base_mem {
UINTVAL n;
- STRING * const s = $2;
- if (!s)
+ const STRING * const s = $2;
+ if (STRING_IS_NULL(s))
n = 0;
else {
n = s->bufused;
@@ -240,17 +231,15 @@
=item B<substr>(out STR, in STR, in INT, in INT)
-=item B<substr>(out STR, inout STR, in INT, in INT, in STR)
-
-=item B<substr>(inout STR, in INT, in INT, in STR)
-
=item B<substr>(out STR, invar PMC, in INT, in INT)
Set $1 to the portion of $2 starting at (zero-based) character position
$3 and having length $4. If no length ($4) is provided, it is equivalent to
-passing in the length of $2. This creates a COW copy of $2.
+passing in the length of $2.
+
+=item B<replace>(out STR, in STR, in INT, in INT, in STR)
-Optionally pass in string $5 for replacement. If the length of $5 is
+Replace part of $2 starting from $3 of length $4 with $5. If the length of $5 is
different from the length specified in $4, then $2 will grow or shrink
accordingly. If $3 is one character position larger than the length of
$2, then $5 is appended to $2 (and the empty string is returned);
@@ -262,32 +251,27 @@
the end of the string (ie an offset of -1 corresponds to the last
character).
-The third form is optimized for replace only, ignoring the replaced
-substring and does not waste a register to do the string replace.
+New $1 string returned.
=cut
inline op substr(out STR, in STR, in INT) :base_core {
const INTVAL len = Parrot_str_byte_length(interp, $2);
- $1 = Parrot_str_substr(interp, $2, $3, len, &$1, 0);
+ $1 = Parrot_str_substr(interp, $2, $3, len);
}
inline op substr(out STR, in STR, in INT, in INT) :base_core {
- $1 = Parrot_str_substr(interp, $2, $3, $4, &$1, 0);
-}
-
-inline op substr(out STR, inout STR, in INT, in INT, in STR) :base_core {
- $1 = Parrot_str_replace(interp, $2, $3, $4, $5, &$1);
-}
-
-inline op substr(inout STR, in INT, in INT, in STR) :base_core {
- (void)Parrot_str_replace(interp, $1, $2, $3, $4, NULL);
+ $1 = Parrot_str_substr(interp, $2, $3, $4);
}
inline op substr(out STR, invar PMC, in INT, in INT) :base_core {
$1 = VTABLE_substr_str(interp, $2, $3, $4);
}
+inline op replace(out STR, in STR, in INT, in INT, in STR) :base_core {
+ $1 = Parrot_str_replace(interp, $2, $3, $4, $5);
+}
+
=item B<index>(out INT, in STR, in STR)
@@ -419,58 +403,32 @@
Uppercase $2 and put the result in $1
-=item B<upcase>(inout STR)
-
-Uppercase $1 in place
-
=cut
inline op upcase(out STR, in STR) :base_core {
$1 = Parrot_str_upcase(interp, $2);
}
-inline op upcase(inout STR) :base_core {
- Parrot_str_upcase_inplace(interp, $1);
-}
-
-
=item B<downcase>(out STR, in STR)
Downcase $2 and put the result in $1
-=item B<downcase>(inout STR)
-
-Downcase $1 in place
-
=cut
inline op downcase(out STR, in STR) :base_core {
$1 = Parrot_str_downcase(interp, $2);
}
-inline op downcase(inout STR) :base_core {
- Parrot_str_downcase_inplace(interp, $1);
-}
-
-
=item B<titlecase>(out STR, in STR)
Titlecase $2 and put the result in $1
-=item B<titlecase>(inout STR)
-
-Titlecase $1 in place
-
=cut
inline op titlecase(out STR, in STR) :base_core {
$1 = Parrot_str_titlecase(interp, $2);
}
-inline op titlecase(inout STR) :base_core {
- Parrot_str_titlecase_inplace(interp, $1);
-}
-
=item B<join>(out STR, in STR, invar PMC)
@@ -512,10 +470,6 @@
Return the charset number of the charset named $2. If the charset doesn't
exist, throw an exception.
-=item B<trans_charset>(inout STR, in INT)
-
-Change the string to have the specified charset.
-
=item B<trans_charset>(out STR, in STR, in INT)
Create a string $1 from $2 with the specified charset.
@@ -529,8 +483,7 @@
}
op charsetname(out STR, in INT) :base_core {
- STRING * const name = Parrot_charset_name(interp, $2);
- $1 = name ? Parrot_str_copy(interp, name) : NULL;
+ $1 = Parrot_charset_name(interp, $2);
}
op find_charset(out INT, in STR) :base_core {
@@ -544,13 +497,8 @@
$1 = n;
}
-op trans_charset(inout STR, in INT) {
- $1 = Parrot_str_change_charset(interp, $1, $2, NULL);
-}
-
op trans_charset(out STR, in STR, in INT) {
- STRING *dest = Parrot_gc_new_string_header(interp, 0);
- $1 = Parrot_str_change_charset(interp, $2, $3, dest);
+ $1 = Parrot_str_change_charset(interp, $2, $3);
}
@@ -568,10 +516,6 @@
Return the encoding number of the encoding named $2. If the encoding doesn't
exist, throw an exception.
-=item B<trans_encoding>(inout STR, in INT)
-
-Change the string to have the specified encoding.
-
=item B<trans_encoding>(out STR, in STR, in INT)
Create a string $1 from $2 with the specified encoding.
@@ -585,8 +529,7 @@
}
op encodingname(out STR, in INT) :base_core {
- STRING * const name = Parrot_encoding_name(interp, $2);
- $1 = name ? Parrot_str_copy(interp, name) : NULL;
+ $1 = Parrot_encoding_name(interp, $2);
}
op find_encoding(out INT, in STR) :base_core {
@@ -600,13 +543,8 @@
$1 = n;
}
-op trans_encoding(inout STR, in INT) {
- $1 = Parrot_str_change_encoding(interp, $1, $2, NULL);
-}
-
op trans_encoding(out STR, in STR, in INT) {
- STRING * const dest = Parrot_gc_new_string_header(interp, 0);
- $1 = Parrot_str_change_encoding(interp, $2, $3, dest);
+ $1 = Parrot_str_change_encoding(interp, $2, $3);
}
@@ -674,7 +612,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/ops_pct/src/ops/var.ops
==============================================================================
--- branches/ops_pct/src/ops/var.ops Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/ops/var.ops Wed May 5 08:45:29 2010 (r46302)
@@ -484,7 +484,7 @@
if (PMC_IS_NULL(sub)) {
opcode_t *handler = Parrot_ex_throw_from_op_args(interp, dest,
EXCEPTION_GLOBAL_NOT_FOUND,
- "Could not find non-existent sub %Ss", $2);
+ "Could not find sub %Ss", $2);
goto ADDRESS(handler);
}
Modified: branches/ops_pct/src/packdump.c
==============================================================================
--- branches/ops_pct/src/packdump.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/packdump.c Wed May 5 08:45:29 2010 (r46302)
@@ -67,7 +67,7 @@
ASSERT_ARGS(PackFile_ConstTable_dump)
opcode_t i;
- for (i = 0; i < self->const_count; i++) {
+ for (i = 0; i < self->const_count; ++i) {
Parrot_io_printf(interp, " # %ld:\n", (long)i);
PackFile_Constant_dump(interp, self, self->constants[i]);
}
@@ -144,9 +144,9 @@
if (printed_flag_p)
Parrot_io_printf(interp, ",");
Parrot_io_printf(interp, "%s", flag_bit_names[idx]);
- printed_flag_p++;
+ ++printed_flag_p;
}
- idx++;
+ ++idx;
flags >>= 1;
}
Parrot_io_printf(interp, ")\n");
@@ -181,7 +181,7 @@
break;
case PFC_KEY:
- for (i = 0, key = self->u.key; key; i++) {
+ for (i = 0, key = self->u.key; key; ++i) {
GETATTR_Key_next_key(interp, key, key);
}
/* number of key components */
@@ -299,10 +299,10 @@
switch (sub->namespace_name->vtable->base_type) {
case enum_class_String:
namespace_description = Parrot_str_new(interp, "'", 1);
- namespace_description = Parrot_str_append(interp,
+ namespace_description = Parrot_str_concat(interp,
namespace_description,
VTABLE_get_string(interp, sub->namespace_name));
- namespace_description = Parrot_str_append(interp,
+ namespace_description = Parrot_str_concat(interp,
namespace_description,
Parrot_str_new(interp, "'", 1));
break;
@@ -376,20 +376,20 @@
ASSERT_ARGS(PackFile_Fixup_dump)
opcode_t i;
- for (i = 0; i < ft->fixup_count; i++) {
+ for (i = 0; i < ft->fixup_count; ++i) {
Parrot_io_printf(interp, "\t#%d\n", (int) i);
- switch (ft->fixups[i]->type) {
+ switch (ft->fixups[i].type) {
case enum_fixup_label:
case enum_fixup_sub:
Parrot_io_printf(interp,
"\ttype => %d offs => %8d name => '%s',\n",
- (int)ft->fixups[i]->type,
- (int)ft->fixups[i]->offset,
- ft->fixups[i]->name);
+ (int)ft->fixups[i].type,
+ (int)ft->fixups[i].offset,
+ ft->fixups[i].name);
break;
default:
Parrot_io_printf(interp, "\ttype => %d ???,\n",
- (int) ft->fixups[i]->type);
+ (int) ft->fixups[i].type);
break;
}
}
Modified: branches/ops_pct/src/packfile.c
==============================================================================
--- branches/ops_pct/src/packfile.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/packfile.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
This program is free software. It is subject to the same license as
Parrot itself.
$Id$
@@ -93,10 +93,10 @@
__attribute__nonnull__(5)
FUNC_MODIFIES(*dir);
-static void default_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
+static void default_destroy(PARROT_INTERP,
+ ARGFREE_NOTNULL(PackFile_Segment *self))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*self);
+ __attribute__nonnull__(2);
static void default_dump(PARROT_INTERP, ARGIN(const PackFile_Segment *self))
__attribute__nonnull__(1)
@@ -293,9 +293,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static opcode_t * pf_debug_pack(SHIM_INTERP,
+static opcode_t * pf_debug_pack(PARROT_INTERP,
ARGMOD(PackFile_Segment *self),
ARGOUT(opcode_t *cursor))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3)
FUNC_MODIFIES(*self)
@@ -454,7 +455,8 @@
#define ASSERT_ARGS_pf_debug_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_pf_debug_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(self) \
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
, PARROT_ASSERT_ARG(cursor))
#define ASSERT_ARGS_pf_debug_packed_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(self))
@@ -481,6 +483,15 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
+/* Segment header:
+ 1 op - Segment size
+ 1 op - Internal type
+ 1 op - Internal id
+ 1 op - Size of theop array
+ See pdd13_bytecode: Packfile Segment Header
+*/
+#define SEGMENT_HEADER_SIZE 4
+
/* offset not in ptr diff, but in byte */
#define OFFS(pf, cursor) ((pf) ? ((const char *)(cursor) - (const char *)((pf)->src)) : 0)
/**
@@ -534,13 +545,9 @@
PARROT_EXPORT
void
-PackFile_destroy(PARROT_INTERP, ARGMOD_NULLOK(PackFile *pf))
+PackFile_destroy(PARROT_INTERP, ARGMOD(PackFile *pf))
{
ASSERT_ARGS(PackFile_destroy)
- if (!pf) {
- Parrot_io_eprintf(NULL, "PackFile_destroy: pf == NULL!\n");
- return;
- }
#ifdef PARROT_HAS_HEADER_SYSMMAN
if (pf->is_mmap_ped) {
@@ -688,12 +695,6 @@
Parrot_runcore_t *old_core = interp->run_core;
PMC *retval = PMCNULL;
- /* turn off JIT and prederef - both would act on the whole
- * PackFile which probably isn't worth the effort */
- if (PARROT_RUNCORE_JIT_OPS_TEST(interp->run_core)
- || PARROT_RUNCORE_PREDEREF_OPS_TEST(interp->run_core))
- Parrot_runcore_switch(interp, CONST_STRING(interp, "fast"));
-
Parrot_pcc_set_constants(interp, CURRENT_CONTEXT(interp),
interp->code->const_table->constants);
@@ -817,7 +818,7 @@
PackFile_Constant ** const constants = find_constants(interp, ct);
opcode_t i;
- for (i = 0; i < ct->const_count; i++) {
+ for (i = 0; i < ct->const_count; ++i) {
PMC * pmc;
STRING * string;
switch (constants[i]->type) {
@@ -928,14 +929,14 @@
TRACE_PRINTF(("PackFile: do_sub_pragmas (action=%d)\n", action));
- for (i = 0; i < ft->fixup_count; i++) {
- switch (ft->fixups[i]->type) {
+ for (i = 0; i < ft->fixup_count; ++i) {
+ switch (ft->fixups[i].type) {
case enum_fixup_sub:
{
/* offset is an index into const_table holding the Sub PMC */
PMC *sub_pmc;
Parrot_Sub_attributes *sub;
- const opcode_t ci = ft->fixups[i]->offset;
+ const opcode_t ci = ft->fixups[i].offset;
if (ci < 0 || ci >= ct->const_count)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
@@ -953,7 +954,7 @@
/* replace Sub PMC with computation results */
if (action == PBC_IMMEDIATE && !PMC_IS_NULL(result)) {
- ft->fixups[i]->type = enum_fixup_none;
+ ft->fixups[i].type = enum_fixup_none;
ct->constants[ci]->u.key = result;
}
}
@@ -1175,7 +1176,7 @@
ASSERT_ARGS(PackFile_map_segments)
size_t i;
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
const INTVAL ret = callback(interp, dir->segments[i], user_data);
if (ret)
return ret;
@@ -1200,13 +1201,13 @@
PARROT_EXPORT
void
PackFile_add_segment(PARROT_INTERP, ARGMOD(PackFile_Directory *dir),
- ARGIN(PackFile_Segment *seg))
+ ARGMOD(PackFile_Segment *seg))
{
ASSERT_ARGS(PackFile_add_segment)
dir->segments = mem_gc_realloc_n_typed_zeroed(interp, dir->segments,
- dir->num_segments+1, dir->num_segments, PackFile_Segment *);
+ dir->num_segments + 1, dir->num_segments, PackFile_Segment *);
dir->segments[dir->num_segments] = seg;
- dir->num_segments++;
+ ++dir->num_segments;
seg->dir = dir;
return;
@@ -1216,7 +1217,7 @@
/*
=item C<PackFile_Segment * PackFile_find_segment(PARROT_INTERP,
-PackFile_Directory *dir, STRING *name, int sub_dir)>
+PackFile_Directory *dir, const STRING *name, int sub_dir)>
Finds the segment with the name C<name> in the C<PackFile_Directory> if
C<sub_dir> is true, searches directories recursively. The returned segment is
@@ -1231,13 +1232,13 @@
PARROT_CAN_RETURN_NULL
PackFile_Segment *
PackFile_find_segment(PARROT_INTERP, ARGIN_NULLOK(PackFile_Directory *dir),
- ARGIN(STRING *name), int sub_dir)
+ ARGIN(const STRING *name), int sub_dir)
{
ASSERT_ARGS(PackFile_find_segment)
if (dir) {
size_t i;
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
PackFile_Segment *seg = dir->segments[i];
if (seg) {
@@ -1281,7 +1282,7 @@
ASSERT_ARGS(PackFile_remove_segment_by_name)
size_t i;
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
PackFile_Segment * const seg = dir->segments[i];
if (Parrot_str_equal(interp, seg->name, name)) {
dir->num_segments--;
@@ -1536,7 +1537,7 @@
int i;
TRACE_PRINTF(("default_unpack: pre-fetch %d ops into data\n",
self->size));
- for (i = 0; i < (int)self->size; i++) {
+ for (i = 0; i < (int)self->size; ++i) {
self->data[i] = PF_fetch_opcode(self->pf, &cursor);
TRACE_PRINTF(("default_unpack: transformed op[#%d]/%d %u\n",
i, self->size, self->data[i]));
@@ -1583,7 +1584,7 @@
default_dump(PARROT_INTERP, ARGIN(const PackFile_Segment *self))
{
ASSERT_ARGS(default_dump)
- size_t i = self->data ? 0: self->file_offset + 4;
+ size_t i = self->data ? 0: self->file_offset + SEGMENT_HEADER_SIZE;
default_dump_header(interp, self);
@@ -1591,7 +1592,7 @@
Parrot_io_printf(interp, "\n %04x: ", (int) i);
for (; i < (self->data ? self->size :
- self->file_offset + self->op_count); i++) {
+ self->file_offset + self->op_count); ++i) {
if (i % 8 == 0)
Parrot_io_printf(interp, "\n %04x: ", (int) i);
@@ -2026,7 +2027,7 @@
Parrot_io_printf(interp, "\n\t# %d segments\n", dir->num_segments);
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
const PackFile_Segment * const seg = dir->segments[i];
Parrot_io_printf(interp,
@@ -2041,7 +2042,7 @@
Parrot_io_printf(interp, "]\n");
- for (i = 0; i < dir->num_segments; i++)
+ for (i = 0; i < dir->num_segments; ++i)
PackFile_Segment_dump(interp, dir->segments[i]);
}
@@ -2063,7 +2064,7 @@
directory_unpack(PARROT_INTERP, ARGMOD(PackFile_Segment *segp), ARGIN(const opcode_t *cursor))
{
ASSERT_ARGS(directory_unpack)
- PackFile_Directory * const dir = (PackFile_Directory *) segp;
+ PackFile_Directory * const dir = (PackFile_Directory *)segp;
PackFile * const pf = dir->base.pf;
const opcode_t *pos;
size_t i;
@@ -2075,7 +2076,7 @@
dir->segments = mem_gc_allocate_n_zeroed_typed(interp,
dir->num_segments, PackFile_Segment *);
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
PackFile_Segment *seg;
char *buf;
STRING *name;
@@ -2094,7 +2095,7 @@
/* create it */
name = Parrot_str_new(interp, buf, strlen(buf));
- seg = PackFile_Segment_new_seg(interp, dir, type, name, 0);
+ seg = PackFile_Segment_new_seg(interp, dir, type, name, 0);
mem_gc_free(interp, buf);
seg->file_offset = PF_fetch_opcode(pf, &cursor);
@@ -2133,7 +2134,7 @@
}
if (i) {
- PackFile_Segment *last = dir->segments[i-1];
+ PackFile_Segment *last = dir->segments[i - 1];
if (last->file_offset + last->op_count != seg->file_offset)
fprintf(stderr, "section: sections are not back to back\n");
}
@@ -2154,7 +2155,7 @@
offs, pf->src, cursor));
/* and now unpack contents of dir */
- for (i = 0; cursor && i < dir->num_segments; i++) {
+ for (i = 0; cursor && i < dir->num_segments; ++i) {
const opcode_t * const csave = cursor;
/* check len again */
@@ -2222,23 +2223,18 @@
PackFile_Directory * const dir = (PackFile_Directory *)self;
size_t i;
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
PackFile_Segment *segment = dir->segments[i];
/* Prevent repeated destruction */
dir->segments[i] = NULL;
- /* XXX Black magic here.
- * There are some failures that looks like a segment directory
- * inserted into another. Until that problems gets fixed,
- * these checks are a workaround.
- */
- if (segment && segment != self && segment->type != PF_DIR_SEG)
+ if (segment && segment != self)
PackFile_Segment_destroy(interp, segment);
}
if (dir->segments) {
mem_gc_free(interp, dir->segments);
- dir->segments = NULL;
+ dir->segments = NULL;
dir->num_segments = 0;
}
}
@@ -2264,7 +2260,7 @@
if (seg->type != PF_BYTEC_SEG) {
size_t i;
- for (i = 1; i < num_segs; i++) {
+ for (i = 1; i < num_segs; ++i) {
PackFile_Segment * const s2 = dir->segments[i];
if (s2->type == PF_BYTEC_SEG) {
dir->segments[0] = s2;
@@ -2279,7 +2275,7 @@
if (seg->type != PF_FIXUP_SEG) {
size_t i;
- for (i = 2; i < num_segs; i++) {
+ for (i = 2; i < num_segs; ++i) {
PackFile_Segment * const s2 = dir->segments[i];
if (s2->type == PF_FIXUP_SEG) {
dir->segments[1] = s2;
@@ -2299,7 +2295,7 @@
if (seg->type != PF_CONST_SEG) {
size_t i;
- for (i = 3; i < num_segs; i++) {
+ for (i = 3; i < num_segs; ++i) {
PackFile_Segment * const s2 = dir->segments[i];
if (s2->type == PF_CONST_SEG) {
dir->segments[2] = s2;
@@ -2338,8 +2334,8 @@
/* number of segments + default, we need it for the offsets */
size = 1 + default_packed_size(self);
- for (i = 0; i < dir->num_segments; i++) {
- char *name = Parrot_str_to_cstring(interp, dir->segments[i]->name);
+ for (i = 0; i < dir->num_segments; ++i) {
+ char * const name = Parrot_str_to_cstring(interp, dir->segments[i]->name);
/* type, offset, size */
size += 3;
size += PF_size_cstring(name);
@@ -2350,7 +2346,7 @@
if (align && size % align)
size += (align - size % align);
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
size_t seg_size;
dir->segments[i]->file_offset = size + self->file_offset;
@@ -2395,7 +2391,8 @@
for (i = 0; i < num_segs; i++) {
const PackFile_Segment * const seg = dir->segments[i];
- char *name = Parrot_str_to_cstring(interp, seg->name);
+ char * const name = Parrot_str_to_cstring(interp, seg->name);
+
*cursor++ = seg->type;
cursor = PF_store_cstring(cursor, name);
*cursor++ = seg->file_offset;
@@ -2416,9 +2413,8 @@
cursor += align - (cursor - self->pf->src) % align;*/
/* now pack all segments into new format */
- for (i = 0; i < dir->num_segments; i++) {
+ for (i = 0; i < dir->num_segments; ++i) {
PackFile_Segment * const seg = dir->segments[i];
-
cursor = PackFile_Segment_pack(interp, seg, cursor);
}
@@ -2457,7 +2453,7 @@
self->size = 0;
self->data = NULL;
self->id = 0;
- self->name = Parrot_str_copy(interp, name);
+ self->name = name;
}
@@ -2505,7 +2501,7 @@
*/
static void
-default_destroy(PARROT_INTERP, ARGMOD(PackFile_Segment *self))
+default_destroy(PARROT_INTERP, ARGFREE_NOTNULL(PackFile_Segment *self))
{
ASSERT_ARGS(default_destroy)
if (!self->pf->is_mmap_ped && self->data) {
@@ -2531,10 +2527,7 @@
default_packed_size(ARGIN(const PackFile_Segment *self))
{
ASSERT_ARGS(default_packed_size)
- /* op_count, itype, id, size */
- /* XXX There should be a constant defining this 4, and why */
- /* This is the 2nd place in the file that has this */
- return 4 + self->size;
+ return SEGMENT_HEADER_SIZE + self->size;
}
@@ -2589,16 +2582,6 @@
ASSERT_ARGS(byte_code_destroy)
PackFile_ByteCode * const byte_code = (PackFile_ByteCode *)self;
- if (byte_code->prederef.code) {
- Parrot_free_memalign(byte_code->prederef.code);
- byte_code->prederef.code = NULL;
-
- if (byte_code->prederef.branches) {
- mem_gc_free(interp, byte_code->prederef.branches);
- byte_code->prederef.branches = NULL;
- }
- }
-
byte_code->fixups = NULL;
byte_code->const_table = NULL;
byte_code->debugs = NULL;
@@ -2649,11 +2632,6 @@
{
ASSERT_ARGS(pf_debug_destroy)
PackFile_Debug * const debug = (PackFile_Debug *) self;
- int i;
-
- /* Free each mapping. */
- for (i = 0; i < debug->num_mappings; i++)
- mem_gc_free(interp, debug->mappings[i]);
/* Free mappings pointer array. */
mem_gc_free(interp, debug->mappings);
@@ -2682,9 +2660,7 @@
ASSERT_ARGS(pf_debug_new)
PackFile_Debug * const debug = mem_gc_allocate_zeroed_typed(interp, PackFile_Debug);
- debug->mappings = mem_gc_allocate_zeroed_typed(interp,
- PackFile_DebugFilenameMapping *);
- debug->mappings[0] = NULL;
+ /* don't create initial mappings here; they'll get overwritten later */
return (PackFile_Segment *)debug;
}
@@ -2726,21 +2702,25 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static opcode_t *
-pf_debug_pack(SHIM_INTERP, ARGMOD(PackFile_Segment *self), ARGOUT(opcode_t *cursor))
+pf_debug_pack(PARROT_INTERP, ARGMOD(PackFile_Segment *self), ARGOUT(opcode_t *cursor))
{
ASSERT_ARGS(pf_debug_pack)
PackFile_Debug * const debug = (PackFile_Debug *)self;
const int n = debug->num_mappings;
int i;
+ if (n > 0 && debug->mappings == NULL)
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+ "No mappings but non zero num mappings(%I)", n);
+
/* Store number of mappings. */
*cursor++ = n;
/* Now store each mapping. */
- for (i = 0; i < n; i++) {
+ for (i = 0; i < n; ++i) {
/* Bytecode offset and filename. */
- *cursor++ = debug->mappings[i]->offset;
- *cursor++ = debug->mappings[i]->filename;
+ *cursor++ = debug->mappings[i].offset;
+ *cursor++ = debug->mappings[i].filename;
}
return cursor;
@@ -2780,20 +2760,18 @@
/* Allocate space for mappings vector. */
debug->mappings = mem_gc_allocate_n_zeroed_typed(interp,
- debug->num_mappings + 1, PackFile_DebugFilenameMapping *);
+ debug->num_mappings, PackFile_DebugFilenameMapping);
/* Read in each mapping. */
- for (i = 0; i < debug->num_mappings; i++) {
- /* Allocate struct and get offset and filename type. */
- debug->mappings[i] =
- mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
- debug->mappings[i]->offset = PF_fetch_opcode(self->pf, &cursor);
- debug->mappings[i]->filename = PF_fetch_opcode(self->pf, &cursor);
+ for (i = 0; i < debug->num_mappings; ++i) {
+ /* Get offset and filename type. */
+ debug->mappings[i].offset = PF_fetch_opcode(self->pf, &cursor);
+ debug->mappings[i].filename = PF_fetch_opcode(self->pf, &cursor);
}
/* find seg e.g. CODE_DB => CODE and attach it */
str_len = Parrot_str_length(interp, debug->base.name);
- code_name = Parrot_str_substr(interp, debug->base.name, 0, str_len - 3, NULL, 1);
+ code_name = Parrot_str_substr(interp, debug->base.name, 0, str_len - 3);
code = (PackFile_ByteCode *)PackFile_find_segment(interp, self->dir, code_name, 0);
if (!code || code->base.type != PF_BYTEC_SEG) {
@@ -2830,12 +2808,12 @@
default_dump_header(interp, self);
Parrot_io_printf(interp, "\n mappings => [\n");
- for (i = 0; i < debug->num_mappings; i++) {
+ for (i = 0; i < debug->num_mappings; ++i) {
Parrot_io_printf(interp, " #%d\n [\n", i);
Parrot_io_printf(interp, " OFFSET => %d,\n",
- debug->mappings[i]->offset);
+ debug->mappings[i].offset);
Parrot_io_printf(interp, " FILENAME => %Ss\n",
- PF_CONST(debug->code, debug->mappings[i]->filename)->u.string);
+ PF_CONST(debug->code, debug->mappings[i].filename)->u.string);
Parrot_io_printf(interp, " ],\n");
}
@@ -2918,7 +2896,7 @@
/* If the previous mapping has the same filename, don't record it. */
if (debug->num_mappings) {
- prev_filename_n = debug->mappings[debug->num_mappings-1]->filename;
+ 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 &&
Parrot_str_equal(interp, filename_pstr,
@@ -2930,18 +2908,18 @@
/* Allocate space for the extra entry. */
debug->mappings = mem_gc_realloc_n_typed(interp,
debug->mappings, debug->num_mappings + 1,
- PackFile_DebugFilenameMapping *);
+ PackFile_DebugFilenameMapping);
/* Can it just go on the end? */
if (debug->num_mappings == 0
- || offset >= debug->mappings[debug->num_mappings - 1]->offset)
+ || offset >= debug->mappings[debug->num_mappings - 1].offset)
insert_pos = debug->num_mappings;
else {
/* Find the right place and shift stuff that's after it. */
int i;
- for (i = 0; i < debug->num_mappings; i++) {
- if (debug->mappings[i]->offset > offset) {
+ for (i = 0; i < debug->num_mappings; ++i) {
+ if (debug->mappings[i].offset > offset) {
insert_pos = i;
memmove(debug->mappings + i + 1, debug->mappings + i,
debug->num_mappings - i);
@@ -2953,14 +2931,13 @@
/* Need to put filename in constants table. */
{
/* Set up new entry and insert it. */
- PackFile_DebugFilenameMapping *mapping =
- mem_gc_allocate_zeroed_typed(interp, PackFile_DebugFilenameMapping);
+ PackFile_DebugFilenameMapping *mapping = debug->mappings + insert_pos;
STRING *namestr = Parrot_str_new_init(interp, filename, strlen(filename),
PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
size_t count = ct->const_count;
size_t i;
- mapping->offset = offset;
+ mapping->offset = offset;
/* Check if there is already a constant with this filename */
for (i= 0; i < count; ++i) {
@@ -2988,8 +2965,7 @@
}
/* Set the mapped value */
- mapping->filename = count;
- debug->mappings[insert_pos] = mapping;
+ mapping->filename = count;
debug->num_mappings = debug->num_mappings + 1;
}
}
@@ -3018,18 +2994,18 @@
bytecode offset. */
int i;
- for (i = 0; i < debug->num_mappings; i++) {
+ for (i = 0; i < debug->num_mappings; ++i) {
/* If this is the last mapping or the current position is
between this mapping and the next one, return a filename. */
if (i + 1 == debug->num_mappings
- || (debug->mappings[i]->offset <= pc
- && debug->mappings[i + 1]->offset > pc))
+ || (debug->mappings[i].offset <= pc
+ && debug->mappings[i + 1].offset > pc))
return PF_CONST(debug->code,
- debug->mappings[i]->filename)->u.string;
+ debug->mappings[i].filename)->u.string;
}
/* Otherwise, no mappings == no filename. */
- return string_from_literal(interp, "(unknown file)");
+ return CONST_STRING(interp, "(unknown file)");
}
@@ -3055,14 +3031,14 @@
opcode_t n;
/* TODO make an index of code segments for faster look up */
- for (i = n = 0; i < num_segs; i++) {
+ for (i = n = 0; i < num_segs; ++i) {
if (dir->segments[i]->type == PF_BYTEC_SEG) {
if (n == seg) {
Parrot_switch_to_cs(interp, (PackFile_ByteCode *)
dir->segments[i], 1);
return;
}
- n++;
+ ++n;
}
}
@@ -3109,10 +3085,6 @@
? find_constants(interp, new_cs->const_table)
: new_cs->const_table->constants);
- /* new_cs->const_table->constants; */
- Parrot_pcc_set_pred_offset(interp, CURRENT_CONTEXT(interp),
- new_cs->base.data - (opcode_t*) new_cs->prederef.code);
-
if (really)
prepare_for_run(interp);
@@ -3297,26 +3269,20 @@
PackFile_FixupTable_clear(PARROT_INTERP, ARGMOD(PackFile_FixupTable *self))
{
ASSERT_ARGS(PackFile_FixupTable_clear)
- opcode_t i;
if (!self) {
Parrot_io_eprintf(interp, "PackFile_FixupTable_clear: self == NULL!\n");
return;
}
- for (i = 0; i < self->fixup_count; i++) {
- mem_gc_free(interp, self->fixups[i]->name);
- self->fixups[i]->name = NULL;
-
- mem_gc_free(interp, self->fixups[i]);
- self->fixups[i] = NULL;
- }
-
if (self->fixup_count) {
+ opcode_t i;
+ for (i = 0; i < self->fixup_count; ++i) {
+ mem_gc_free(interp, self->fixups[i].name);
+ self->fixups[i].name = NULL;
+ }
mem_gc_free(interp, self->fixups);
- self->fixups = NULL;
}
-
self->fixups = NULL;
self->fixup_count = 0;
@@ -3361,14 +3327,14 @@
size_t size = 1;
opcode_t i;
- for (i = 0; i < ft->fixup_count; i++) {
+ for (i = 0; i < ft->fixup_count; ++i) {
/* fixup_entry type */
- size++;
- switch (ft->fixups[i]->type) {
+ ++size;
+ switch (ft->fixups[i].type) {
case enum_fixup_label:
case enum_fixup_sub:
- size += PF_size_cstring(ft->fixups[i]->name);
- size ++; /* offset */
+ size += PF_size_cstring(ft->fixups[i].name);
+ ++size; /* offset */
break;
case enum_fixup_none:
break;
@@ -3404,13 +3370,13 @@
*cursor++ = ft->fixup_count;
- for (i = 0; i < ft->fixup_count; i++) {
- *cursor++ = (opcode_t) ft->fixups[i]->type;
- switch (ft->fixups[i]->type) {
+ for (i = 0; i < ft->fixup_count; ++i) {
+ *cursor++ = (opcode_t) ft->fixups[i].type;
+ switch (ft->fixups[i].type) {
case enum_fixup_label:
case enum_fixup_sub:
- cursor = PF_store_cstring(cursor, ft->fixups[i]->name);
- *cursor++ = ft->fixups[i]->offset;
+ cursor = PF_store_cstring(cursor, ft->fixups[i].name);
+ *cursor++ = ft->fixups[i].offset;
break;
case enum_fixup_none:
break;
@@ -3487,7 +3453,7 @@
if (self->fixup_count) {
self->fixups = mem_gc_allocate_n_zeroed_typed(interp,
- self->fixup_count, PackFile_FixupEntry *);
+ self->fixup_count, PackFile_FixupEntry);
if (!self->fixups) {
Parrot_io_eprintf(interp,
@@ -3498,10 +3464,8 @@
}
}
- for (i = 0; i < self->fixup_count; i++) {
- PackFile_FixupEntry * const entry =
- self->fixups[i] =
- mem_gc_allocate_zeroed_typed(interp, PackFile_FixupEntry);
+ for (i = 0; i < self->fixup_count; ++i) {
+ PackFile_FixupEntry * const entry = self->fixups + i;
entry->type = PF_fetch_opcode(pf, &cursor);
@@ -3560,12 +3524,11 @@
i = self->fixup_count++;
self->fixups = mem_gc_realloc_n_typed_zeroed(interp,
- self->fixups, self->fixup_count, i, PackFile_FixupEntry *);
+ self->fixups, self->fixup_count, i, PackFile_FixupEntry);
- self->fixups[i] = mem_gc_allocate_zeroed_typed(interp, PackFile_FixupEntry);
- self->fixups[i]->type = type;
- self->fixups[i]->name = mem_sys_strdup(label);
- self->fixups[i]->offset = offs;
+ self->fixups[i].type = type;
+ self->fixups[i].name = mem_sys_strdup(label);
+ self->fixups[i].offset = offs;
}
@@ -3591,10 +3554,10 @@
{
ASSERT_ARGS(find_fixup)
opcode_t i;
- for (i = 0; i < ft->fixup_count; i++) {
- if ((INTVAL)((enum_fixup_t)ft->fixups[i]->type) == type
- && STREQ(ft->fixups[i]->name, name)) {
- return ft->fixups[i];
+ for (i = 0; i < ft->fixup_count; ++i) {
+ if ((INTVAL)((enum_fixup_t)ft->fixups[i].type) == type
+ && STREQ(ft->fixups[i].name, name)) {
+ return ft->fixups + i;
}
}
@@ -3698,7 +3661,7 @@
ASSERT_ARGS(PackFile_ConstTable_clear)
opcode_t i;
- for (i = 0; i < self->const_count; i++) {
+ for (i = 0; i < self->const_count; ++i) {
PackFile_Constant_destroy(interp, self->constants[i]);
self->constants[i] = NULL;
}
@@ -3762,7 +3725,7 @@
return NULL;
}
- for (i = 0; i < self->const_count; i++) {
+ for (i = 0; i < self->const_count; ++i) {
TRACE_PRINTF(("PackFile_ConstTable_unpack(): Unpacking constant %ld/%ld\n",
i, self->const_count));
self->constants[i] = PackFile_Constant_new(interp);
@@ -3843,7 +3806,7 @@
PackFile_Constant_new(PARROT_INTERP)
{
ASSERT_ARGS(PackFile_Constant_new)
- PackFile_Constant * const self = mem_gc_allocate_zeroed_typed(interp,
+ PackFile_Constant * const self = mem_gc_allocate_typed(interp,
PackFile_Constant);
self->type = PFC_NONE;
@@ -3876,7 +3839,7 @@
/*
=item C<size_t PackFile_Constant_pack_size(PARROT_INTERP, const
-PackFile_Constant *self)>
+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.
@@ -3888,7 +3851,8 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
size_t
-PackFile_Constant_pack_size(PARROT_INTERP, ARGIN(const PackFile_Constant *self))
+PackFile_Constant_pack_size(PARROT_INTERP, ARGIN(const PackFile_Constant *self), ARGIN(const
+ PackFile_ConstTable *ct))
{
ASSERT_ARGS(PackFile_Constant_pack_size)
PMC *component;
@@ -3914,7 +3878,7 @@
case PFC_PMC:
component = self->u.key; /* the pmc (Sub, ...) */
- packed_size = PF_size_strlen(Parrot_freeze_size(interp, component));
+ packed_size = PF_size_strlen(Parrot_freeze_pbc_size(interp, component, ct));
break;
default:
@@ -4017,7 +3981,7 @@
interp->code = pf->cur_cs;
image = PF_fetch_string(interp, pf, &cursor);
- pmc = Parrot_thaw_constants(interp, image);
+ pmc = Parrot_thaw_pbc(interp, image, constt);
/* place item in const_table */
self->type = PFC_PMC;
@@ -4159,7 +4123,7 @@
/* Free any keys. */
if (self->keys) {
- for (i = 0; i < self->num_keys; i++)
+ for (i = 0; i < self->num_keys; ++i)
mem_gc_free(interp, self->keys[i]);
mem_gc_free(interp, self->keys);
@@ -4167,14 +4131,14 @@
/* Free any groups. */
if (self->groups) {
- for (i = 0; i < self->num_groups; i++)
+ for (i = 0; i < self->num_groups; ++i)
mem_gc_free(interp, self->groups[i]);
mem_gc_free(interp, self->groups);
}
/* Free any entries. */
if (self->entries) {
- for (i = 0; i < self->num_entries; i++)
+ for (i = 0; i < self->num_entries; ++i)
mem_gc_free(interp, self->entries[i]);
mem_gc_free(interp, self->entries);
}
@@ -4220,7 +4184,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
opcode_t *
-PackFile_Annotations_pack(PARROT_INTERP, ARGIN(PackFile_Segment *seg),
+PackFile_Annotations_pack(SHIM_INTERP, ARGIN(PackFile_Segment *seg),
ARGMOD(opcode_t *cursor))
{
ASSERT_ARGS(PackFile_Annotations_pack)
@@ -4230,7 +4194,7 @@
/* Write key count and any keys. */
*cursor++ = self->num_keys;
- for (i = 0; i < self->num_keys; i++) {
+ for (i = 0; i < self->num_keys; ++i) {
const PackFile_Annotations_Key * const key = self->keys[i];
*cursor++ = key->name;
*cursor++ = key->type;
@@ -4239,7 +4203,7 @@
/* Write group count and any groups. */
*cursor++ = self->num_groups;
- for (i = 0; i < self->num_groups; i++) {
+ for (i = 0; i < self->num_groups; ++i) {
const PackFile_Annotations_Group * const group = self->groups[i];
*cursor++ = group->bytecode_offset;
*cursor++ = group->entries_offset;
@@ -4248,7 +4212,7 @@
/* Write entry count and any entries. */
*cursor++ = self->num_entries;
- for (i = 0; i < self->num_entries; i++) {
+ for (i = 0; i < self->num_entries; ++i) {
const PackFile_Annotations_Entry * const entry = self->entries[i];
*cursor++ = entry->bytecode_offset;
*cursor++ = entry->key;
@@ -4276,7 +4240,7 @@
ARGIN(const opcode_t *cursor))
{
ASSERT_ARGS(PackFile_Annotations_unpack)
- PackFile_Annotations *self = (PackFile_Annotations *)seg;
+ PackFile_Annotations * const self = (PackFile_Annotations *)seg;
PackFile_ByteCode *code;
STRING *code_name;
#if TRACE_PACKFILE
@@ -4293,7 +4257,7 @@
self->keys = mem_gc_allocate_n_zeroed_typed(interp,
self->num_keys, PackFile_Annotations_Key *);
- for (i = 0; i < self->num_keys; i++) {
+ for (i = 0; i < self->num_keys; ++i) {
PackFile_Annotations_Key * const key = self->keys[i] =
mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Key);
key->name = PF_fetch_opcode(seg->pf, &cursor);
@@ -4307,7 +4271,7 @@
self->groups = mem_gc_allocate_n_zeroed_typed(interp,
self->num_groups, PackFile_Annotations_Group *);
- for (i = 0; i < self->num_groups; i++) {
+ for (i = 0; i < self->num_groups; ++i) {
PackFile_Annotations_Group * const group =
self->groups[i] = mem_gc_allocate_zeroed_typed(interp,
PackFile_Annotations_Group);
@@ -4323,7 +4287,7 @@
self->num_entries = PF_fetch_opcode(seg->pf, &cursor);
self->entries = mem_gc_allocate_n_zeroed_typed(interp,
self->num_entries, PackFile_Annotations_Entry *);
- for (i = 0; i < self->num_entries; i++) {
+ for (i = 0; i < self->num_entries; ++i) {
PackFile_Annotations_Entry * const entry =
self->entries[i] = mem_gc_allocate_zeroed_typed(interp,
PackFile_Annotations_Entry);
@@ -4334,7 +4298,7 @@
/* Need to associate this segment with the applicable code segment. */
str_len = Parrot_str_length(interp, self->base.name);
- code_name = Parrot_str_substr(interp, self->base.name, 0, str_len - 4, NULL, 1);
+ code_name = Parrot_str_substr(interp, self->base.name, 0, str_len - 4);
code = (PackFile_ByteCode *)PackFile_find_segment(interp,
self->base.dir, code_name, 0);
@@ -4366,14 +4330,14 @@
PackFile_Annotations_dump(PARROT_INTERP, ARGIN(const PackFile_Segment *seg))
{
ASSERT_ARGS(PackFile_Annotations_dump)
- const PackFile_Annotations *self = (const PackFile_Annotations *)seg;
+ const PackFile_Annotations * const self = (const PackFile_Annotations *)seg;
INTVAL i;
default_dump_header(interp, (const PackFile_Segment *)self);
/* Dump keys. */
Parrot_io_printf(interp, "\n keys => [\n");
- for (i = 0; i < self->num_keys; i++) {
+ for (i = 0; i < self->num_keys; ++i) {
const PackFile_Annotations_Key * const key = self->keys[i];
Parrot_io_printf(interp, " #%d\n [\n", i);
Parrot_io_printf(interp, " NAME => %Ss\n",
@@ -4390,7 +4354,7 @@
/* Dump groups. */
Parrot_io_printf(interp, "\n groups => [\n");
- for (i = 0; i < self->num_groups; i++) {
+ for (i = 0; i < self->num_groups; ++i) {
const PackFile_Annotations_Group * const group = self->groups[i];
Parrot_io_printf(interp, " #%d\n [\n", i);
Parrot_io_printf(interp, " BYTECODE_OFFSET => %d\n",
@@ -4405,7 +4369,7 @@
/* Dump entries. */
Parrot_io_printf(interp, "\n entries => [\n");
- for (i = 0; i < self->num_entries; i++) {
+ for (i = 0; i < self->num_entries; ++i) {
const PackFile_Annotations_Entry * const entry = self->entries[i];
Parrot_io_printf(interp, " #%d\n [\n", i);
Parrot_io_printf(interp, " BYTECODE_OFFSET => %d\n",
@@ -4439,25 +4403,24 @@
opcode_t offset)
{
ASSERT_ARGS(PackFile_Annotations_add_group)
+ PackFile_Annotations_Group *group;
/* Allocate extra space for the group in the groups array. */
if (self->groups)
- self->groups =
- self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
- 1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
+ self->groups = mem_gc_realloc_n_typed_zeroed(interp, self->groups,
+ 1 + self->num_groups, self->num_groups, PackFile_Annotations_Group *);
else
self->groups = mem_gc_allocate_n_typed(interp,
1 + self->num_groups, PackFile_Annotations_Group *);
/* Store details. */
- self->groups[self->num_groups] =
- mem_gc_allocate_zeroed_typed(interp,
- PackFile_Annotations_Group);
- self->groups[self->num_groups]->bytecode_offset = offset;
- self->groups[self->num_groups]->entries_offset = self->num_entries;
+ group = self->groups[self->num_groups] =
+ mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Group);
+ group->bytecode_offset = offset;
+ group->entries_offset = self->num_entries;
/* Increment group count. */
- self->num_groups++;
+ ++self->num_groups;
}
@@ -4484,12 +4447,12 @@
{
ASSERT_ARGS(PackFile_Annotations_add_entry)
/* See if we already have this key. */
- STRING *key_name = PF_CONST(self->code, key)->u.string;
+ STRING * const key_name = PF_CONST(self->code, key)->u.string;
opcode_t key_id = -1;
INTVAL i;
- for (i = 0; i < self->num_keys; i++) {
- STRING *test_key = PF_CONST(self->code, self->keys[i]->name)->u.string;
+ for (i = 0; i < self->num_keys; ++i) {
+ STRING * const test_key = PF_CONST(self->code, self->keys[i]->name)->u.string;
if (Parrot_str_equal(interp, test_key, key_name)) {
key_id = i;
break;
@@ -4507,7 +4470,7 @@
key_id = self->num_keys;
self->keys[key_id] = mem_gc_allocate_typed(interp, PackFile_Annotations_Key);
- self->num_keys++;
+ ++self->num_keys;
/* Populate it. */
self->keys[key_id]->name = key;
@@ -4536,7 +4499,7 @@
self->entries[self->num_entries]->key = key_id;
self->entries[self->num_entries]->value = value;
- self->num_entries++;
+ ++self->num_entries;
}
@@ -4562,8 +4525,7 @@
switch (type) {
case PF_ANNOTATION_KEY_TYPE_INT:
- result = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, result, value);
+ result = Parrot_pmc_new_init_int(interp, enum_class_Integer, value);
break;
case PF_ANNOTATION_KEY_TYPE_NUM:
result = Parrot_pmc_new(interp, enum_class_Float);
@@ -4608,8 +4570,8 @@
/* If we have a key, look up its ID; if we don't find one. */
opcode_t key_id = -1;
- if (key) {
- for (i = 0; i < self->num_keys; i++) {
+ 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;
if (Parrot_str_equal(interp, test_key, key)) {
key_id = i;
@@ -4622,7 +4584,7 @@
}
/* Use groups to find search start point. */
- for (i = 0; i < self->num_groups; i++)
+ for (i = 0; i < self->num_groups; ++i)
if (offset < self->groups[i]->bytecode_offset)
break;
else
@@ -4636,7 +4598,7 @@
opcode_t *have_values = mem_gc_allocate_n_zeroed_typed(interp,
self->num_keys, opcode_t);
- for (i = start_entry; i < self->num_entries; i++) {
+ for (i = start_entry; i < self->num_entries; ++i) {
if (self->entries[i]->bytecode_offset >= offset)
break;
@@ -4647,7 +4609,7 @@
/* Create hash of values we have. */
result = Parrot_pmc_new(interp, enum_class_Hash);
- for (i = 0; i < self->num_keys; i++) {
+ 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;
VTABLE_set_pmc_keyed_str(interp, result, key_name,
@@ -4664,7 +4626,7 @@
opcode_t latest_value = 0;
opcode_t found_value = 0;
- for (i = start_entry; i < self->num_entries; i++) {
+ for (i = start_entry; i < self->num_entries; ++i) {
if (self->entries[i]->bytecode_offset >= offset)
break;
@@ -4723,7 +4685,7 @@
pf->header = NULL;
mem_gc_free(interp, pf->dirp);
pf->dirp = NULL;
-
+ /* no need to free pf here, as directory_destroy will get it */
}
else {
STRING *err;
@@ -4770,10 +4732,10 @@
/* Full path to language library is "abc/abc.pbc". */
pbc = CONST_STRING(interp, "pbc");
- wo_ext = Parrot_str_concat(interp, lang_name, CONST_STRING(interp, "/"), 0);
- wo_ext = Parrot_str_append(interp, wo_ext, lang_name);
- file_str = Parrot_str_concat(interp, wo_ext, CONST_STRING(interp, "."), 0);
- file_str = Parrot_str_append(interp, file_str, pbc);
+ wo_ext = Parrot_str_concat(interp, lang_name, CONST_STRING(interp, "/"));
+ wo_ext = Parrot_str_concat(interp, wo_ext, lang_name);
+ file_str = Parrot_str_concat(interp, wo_ext, CONST_STRING(interp, "."));
+ file_str = Parrot_str_concat(interp, file_str, pbc);
/* Check if the language is already loaded */
is_loaded_hash = VTABLE_get_pmc_keyed_int(interp,
@@ -4798,13 +4760,13 @@
parrot_split_path_ext(interp, path, &found_path, &found_ext);
name_length = Parrot_str_length(interp, lang_name);
found_path = Parrot_str_substr(interp, found_path, 0,
- Parrot_str_length(interp, found_path)-name_length, NULL, 0);
+ Parrot_str_length(interp, found_path)-name_length);
- Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "include/")),
+ Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "include/")),
PARROT_LIB_PATH_INCLUDE);
- Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "dynext/")),
+ Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "dynext/")),
PARROT_LIB_PATH_DYNEXT);
- Parrot_lib_add_path(interp, Parrot_str_append(interp, found_path, CONST_STRING(interp, "library/")),
+ Parrot_lib_add_path(interp, Parrot_str_concat(interp, found_path, CONST_STRING(interp, "library/")),
PARROT_LIB_PATH_LIBRARY);
@@ -4840,6 +4802,12 @@
PackFile * const pf = Parrot_pbc_read(interp, filename, 0);
if (pf) {
+ /* An embedder can try to load_bytecode without having an initial_pf */
+ if (!interp->initial_pf) {
+ interp->initial_pf = PackFile_new_dummy(interp, CONST_STRING(interp, "dummy"));
+ /* PackFile_new_dummy must never fail */
+ PARROT_ASSERT(interp->initial_pf);
+ }
PackFile_add_segment(interp, &interp->initial_pf->directory,
&pf->directory.base);
Modified: branches/ops_pct/src/packfile/pf_items.c
==============================================================================
--- branches/ops_pct/src/packfile/pf_items.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/packfile/pf_items.c Wed May 5 08:45:29 2010 (r46302)
@@ -153,14 +153,6 @@
static opcode_t fetch_op_le_8(ARGIN(const unsigned char *b))
__attribute__nonnull__(1);
-PARROT_WARN_UNUSED_RESULT
-static opcode_t fetch_op_mixed_be(ARGIN(const unsigned char *b))
- __attribute__nonnull__(1);
-
-PARROT_WARN_UNUSED_RESULT
-static opcode_t fetch_op_mixed_le(ARGIN(const unsigned char *b))
- __attribute__nonnull__(1);
-
#define ASSERT_ARGS_cvt_num12_num16 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(dest) \
, PARROT_ASSERT_ARG(src))
@@ -211,10 +203,6 @@
PARROT_ASSERT_ARG(b))
#define ASSERT_ARGS_fetch_op_le_8 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(b))
-#define ASSERT_ARGS_fetch_op_mixed_be __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(b))
-#define ASSERT_ARGS_fetch_op_mixed_le __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(b))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -323,7 +311,7 @@
dest[7] |= 0x80;
/* long double frac 63 bits => 52 bits
src[7] &= 0x7f; reset integer bit */
- for (i = 0; i < 6; i++) {
+ for (i = 0; i < 6; ++i) {
dest[i+1] |= (i==5 ? src[7]&0x7f : src[i+2]) >> 3;
dest[i] |= (src[i+2] & 0x1f) << 5;
}
@@ -552,7 +540,7 @@
dest[7] |= 0x80;
/* long double frac 112 bits => 52 bits
src[13] &= 0x7f; reset integer bit */
- for (i = 0; i < 6; i++) {
+ for (i = 0; i < 6; ++i) {
dest[i+1] |= (i==5 ? src[13]&0x7f : src[i+7]) >> 3;
dest[i] |= (src[i+7] & 0x1f) << 5;
}
@@ -819,86 +807,6 @@
}
#endif
-#if 0
-
-/*
-
-=item C<static opcode_t fetch_op_mixed_le(const unsigned char *b)>
-
-opcode fetch helper function
-
-This is mostly wrong or at least untested
-
-Fetch an opcode and convert to LE
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-static opcode_t
-fetch_op_mixed_le(ARGIN(const unsigned char *b))
-{
- ASSERT_ARGS(fetch_op_mixed_le)
-# if OPCODE_T_SIZE == 4
- union {
- unsigned char buf[8];
- opcode_t o[2];
- } u;
- /* wordsize = 8 then */
- fetch_buf_le_8(u.buf, b);
- return u.o[0]; /* or u.o[1] */
-# else
- union {
- unsigned char buf[4];
- opcode_t o;
- } u;
-
- /* wordsize = 4 */
- u.o = 0;
- fetch_buf_le_4(u.buf, b);
- return u.o;
-# endif
-}
-
-/*
-
-=item C<static opcode_t fetch_op_mixed_be(const unsigned char *b)>
-
-Fetch an opcode and convert to BE. Determines size of opcode from
-C<OPCODE_T_SIZE> macro, and proceeds accordingly.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-static opcode_t
-fetch_op_mixed_be(ARGIN(const unsigned char *b))
-{
- ASSERT_ARGS(fetch_op_mixed_be)
-# if OPCODE_T_SIZE == 4
- union {
- unsigned char buf[8];
- opcode_t o[2];
- } u;
- /* wordsize = 8 then */
- fetch_buf_be_8(u.buf, b);
- return u.o[1]; /* or u.o[0] */
-# else
- union {
- unsigned char buf[4];
- opcode_t o;
- } u;
- /* wordsize = 4 */
- u.o = 0;
- fetch_buf_be_4(u.buf, b);
- return u.o;
-# endif
-}
-
-#endif
-
/*
=item C<static opcode_t fetch_op_be_4(const unsigned char *b)>
@@ -984,14 +892,16 @@
unsigned char buf[4];
opcode_t o;
} u;
- fetch_buf_le_4(u.buf, b);
#if PARROT_BIGENDIAN
+ fetch_buf_le_4(u.buf, b);
# if OPCODE_T_SIZE == 8
return (Parrot_Int4)(u.o >> 32);
# else
return (opcode_t) fetch_iv_be((INTVAL)u.o);
# endif
#else
+ /* inlining the effects of the fetch_buf_le_4() call is worth it */
+ memcpy(u.buf, b, 4);
# if OPCODE_T_SIZE == 8
/* without the cast we would not get a negative int, the vtable indices */
return (Parrot_Int4)(u.o & 0xffffffff);
@@ -1288,9 +1198,7 @@
Opcode format is:
- opcode_t flags
- opcode_t encoding
- opcode_t type
+ opcode_t flags8 | encoding
opcode_t size
* data
@@ -1307,23 +1215,28 @@
{
ASSERT_ARGS(PF_fetch_string)
STRING *s;
- UINTVAL flags = PF_fetch_opcode(pf, cursor);
- const int wordsize = pf ? pf->header->wordsize : sizeof (opcode_t);
+ UINTVAL flags;
+ UINTVAL charset_nr;
size_t size;
- opcode_t charset_nr;
+ const int wordsize = pf ? pf->header->wordsize : sizeof (opcode_t);
+ opcode_t flag_charset_word = PF_fetch_opcode(pf, cursor);
+
+ if (flag_charset_word == -1)
+ return STRINGNULL;
- /* don't let PBC mess our internals - only constant or not */
- flags &= (PObj_constant_FLAG | PObj_private7_FLAG);
- charset_nr = PF_fetch_opcode(pf, cursor);
+ /* decode flags and charset */
+ flags = (flag_charset_word & 0x1 ? PObj_constant_FLAG : 0) |
+ (flag_charset_word & 0x2 ? PObj_private7_FLAG : 0) ;
+ charset_nr = flag_charset_word >> 8;
- /* These may need to be separate */
- size = (size_t)PF_fetch_opcode(pf, cursor);
+
+ size = (size_t)PF_fetch_opcode(pf, cursor);
TRACE_PRINTF(("PF_fetch_string(): flags=0x%04x, ", flags));
TRACE_PRINTF(("charset_nr=%ld, ", charset_nr));
TRACE_PRINTF(("size=%ld.\n", size));
- s = string_make_from_charset(interp, (const char *)*cursor,
+ s = string_make_from_charset(interp, (const char *)*cursor,
size, charset_nr, flags);
/* print only printable characters */
@@ -1370,7 +1283,12 @@
padded_size += sizeof (opcode_t) - (padded_size % sizeof (opcode_t));
}
- *cursor++ = PObj_get_FLAGS(s); /* only constant_FLAG and private7 */
+ if (STRING_IS_NULL(s)) {
+ /* preserve NULL-ness of strings */
+ *cursor++ = -1;
+ return cursor;
+ }
+
/*
* TODO as soon as we have dynamically loadable charsets
* we have to store the charset name, not the number
@@ -1379,7 +1297,11 @@
*
* see also PF_fetch_string
*/
- *cursor++ = Parrot_charset_number_of_str(NULL, s);
+
+ /* encode charset_nr and flags into the same word for a 33% savings on constant overhead */
+ *cursor++ = (Parrot_charset_number_of_str(NULL, s) << 8) |
+ (PObj_get_FLAGS(s) & PObj_constant_FLAG ? 0x1 : 0x0) |
+ (PObj_get_FLAGS(s) & PObj_private7_FLAG ? 0x2 : 0x0) ;
*cursor++ = s->bufused;
/* Switch to char * since rest of string is addressed by
@@ -1417,7 +1339,10 @@
ASSERT_ARGS(PF_size_string)
/* TODO: don't break encapsulation on strings */
const UINTVAL len = s->bufused;
- return PF_size_strlen(len);
+ if (STRING_IS_NULL(s))
+ return 1;
+ else
+ return PF_size_strlen(len);
}
/*
@@ -1442,7 +1367,7 @@
}
/* Include space for flags, representation, and size fields. */
- return 3 + (size_t)padded_size / sizeof (opcode_t);
+ return 2 + (size_t)padded_size / sizeof (opcode_t);
}
/*
Modified: branches/ops_pct/src/packout.c
==============================================================================
--- branches/ops_pct/src/packout.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/packout.c Wed May 5 08:45:29 2010 (r46302)
@@ -112,7 +112,7 @@
padding_size = 16 - (PACKFILE_HEADER_BYTES + self->header->uuid_size) % 16;
if (padding_size < 16) {
int i;
- for (i = 0; i < padding_size; i++)
+ for (i = 0; i < padding_size; ++i)
*byte_cursor++ = 0;
}
else {
@@ -162,8 +162,8 @@
const PackFile_ConstTable* const self = (const PackFile_ConstTable *) seg;
size_t size = 1; /* const_count */
- for (i = 0; i < self->const_count; i++)
- size += PackFile_Constant_pack_size(interp, self->constants[i]);
+ for (i = 0; i < self->const_count; ++i)
+ size += PackFile_Constant_pack_size(interp, self->constants[i], self);
return size;
}
@@ -197,7 +197,7 @@
*cursor++ = self->const_count;
- for (i = 0; i < self->const_count; i++)
+ for (i = 0; i < self->const_count; ++i)
cursor = PackFile_Constant_pack(interp, self, self->constants[i], cursor);
return cursor;
@@ -228,7 +228,7 @@
GETATTR_Key_str_key(interp, key, key_str);
GETATTR_Key_num_key(interp, key, key_num);
- for (i = 0; i < ct->const_count; i++) {
+ for (i = 0; i < ct->const_count; ++i) {
if (type == PFC_STRING && ct->constants[i]->u.string == key_str)
return i;
if (type == PFC_NUMBER && ct->constants[i]->u.number == key_num)
@@ -286,12 +286,12 @@
case PFC_PMC:
key = self->u.key; /* the (Sub) PMC */
- image = Parrot_freeze(interp, key);
+ image = Parrot_freeze_pbc(interp, key, const_table);
cursor = PF_store_string(cursor, image);
break;
case PFC_KEY:
- for (i = 0, key = self->u.key; key; i++){
+ for (i = 0, key = self->u.key; key; ++i){
GETATTR_Key_next_key(interp, key, key);
}
Modified: branches/ops_pct/src/parrot_debugger.c
==============================================================================
--- branches/ops_pct/src/parrot_debugger.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/parrot_debugger.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -147,11 +147,11 @@
#include "parrot/runcore_api.h"
static void PDB_printwelcome(void);
-static void PDB_run_code(PARROT_INTERP, int argc, char *argv[]);
+static void PDB_run_code(PARROT_INTERP, int argc, const char *argv[]);
/*
-=item C<int main(int argc, char *argv[])>
+=item C<int main(int argc, const char *argv[])>
Reads the PIR, PASM or PBC file from argv[1], loads it, and then calls
Parrot_debug().
@@ -161,7 +161,7 @@
*/
int
-main(int argc, char *argv[])
+main(int argc, const char *argv[])
{
int nextarg;
Parrot_Interp interp;
@@ -271,7 +271,7 @@
/*
-=item C<static void PDB_run_code(PARROT_INTERP, int argc, char *argv[])>
+=item C<static void PDB_run_code(PARROT_INTERP, int argc, const char *argv[])>
Run the code, catching exceptions if they are left unhandled.
@@ -280,7 +280,7 @@
*/
static void
-PDB_run_code(PARROT_INTERP, int argc, char *argv[])
+PDB_run_code(PARROT_INTERP, int argc, const char *argv[])
{
new_runloop_jump_point(interp);
if (setjmp(interp->current_runloop->resume)) {
Modified: branches/ops_pct/src/pbc_dump.c
==============================================================================
--- branches/ops_pct/src/pbc_dump.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pbc_dump.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -78,6 +78,7 @@
Parrot_io_printf(interp, "],\n");
}
+
/*
=item C<static void fixup_dump(PARROT_INTERP, const PackFile_Segment *segp)>
@@ -96,6 +97,7 @@
Parrot_io_printf(interp, "],\n");
}
+
/*
=item C<static void disas_dump(PARROT_INTERP, const PackFile_Segment *self)>
@@ -109,28 +111,110 @@
static void
disas_dump(PARROT_INTERP, const PackFile_Segment *self)
{
- opcode_t *pc;
- size_t i, n;
+ const opcode_t *pc = self->data;
+
Parrot_io_printf(interp, "%Ss => [ # %d ops at offs 0x%x\n",
self->name, (int)self->size, (int)self->file_offset + 4);
- pc = self->data;
+
while (pc < self->data + self->size) {
+ /* n can't be const; the ADD_OP_VAR_PART macro increments it */
+ size_t n = (size_t)interp->op_info_table[*pc].op_count;
+ size_t i;
+
/* trace_op_dump(interp, self->pf->src, pc); */
- Parrot_io_printf(interp, " %04x: ", (int) (pc - self->data));
- n = (size_t)interp->op_info_table[*pc].op_count;
- for (i = 0; i < 6; i++)
+ Parrot_io_printf(interp, " %04x: ", (int)(pc - self->data));
+
+ for (i = 0; i < 6; ++i)
if (i < n)
- Parrot_io_printf(interp, "%08lx ", (unsigned long) pc[i]);
+ Parrot_io_printf(interp, "%08lx ", (unsigned long)pc[i]);
else
Parrot_io_printf(interp, " ");
+
Parrot_io_printf(interp, "%s\n",
interp->op_info_table[*pc].full_name);
+
ADD_OP_VAR_PART(interp, interp->code, pc, n);
pc += n;
}
+
Parrot_io_printf(interp, "]\n");
}
+
+/*
+
+=item C<static void nums_dump(PARROT_INTERP, const PackFile_Segment *self)>
+
+Disassembles and dumps op names and line numbers only.
+
+=cut
+
+*/
+
+static void
+nums_dump(PARROT_INTERP, const PackFile_Segment *self)
+{
+ const STRING *debug_name = Parrot_str_concat(interp, self->name,
+ Parrot_str_new_constant(interp, "_DB"));
+ const PackFile_Segment *debug = PackFile_find_segment(interp,
+ self->dir, debug_name, 1);
+
+ const opcode_t * pc = self->data;
+ const opcode_t * debug_ops = debug->data;
+ const op_info_t * const op_info = interp->op_info_table;
+
+ while (pc < self->data + self->size) {
+ /* n can't be const; the ADD_OP_VAR_PART macro increments it */
+ size_t n = (size_t)op_info[*pc].op_count;
+
+ Parrot_io_printf(interp, " %04x: %s\n",
+ *(debug_ops++), op_info[*pc].full_name);
+
+ ADD_OP_VAR_PART(interp, interp->code, pc, n);
+ pc += n;
+ }
+}
+
+
+/*
+
+=item C<static void null_dump(PARROT_INTERP, const PackFile_Segment *self)>
+
+Produces no output for the given segment type.
+
+=cut
+
+*/
+
+static void
+null_dump(SHIM_INTERP, const PackFile_Segment *self)
+{
+ UNUSED(self);
+}
+
+
+/*
+
+=item C<static void null_dir_dump(PARROT_INTERP, const PackFile_Segment *self)>
+
+Dumps all of the segments of the given PackFile_Directory, but produces no
+output for the directory itself.
+
+=cut
+
+*/
+
+static void
+null_dir_dump(PARROT_INTERP, const PackFile_Segment *self)
+{
+ const PackFile_Directory * const dir = (const PackFile_Directory *)self;
+ size_t i;
+
+ for (i = 0; i < dir->num_segments; ++i)
+ self->pf->PackFuncs[dir->segments[i]->type].dump(interp, dir->segments[i]);
+}
+
+
/*
=item C<static void PackFile_header_dump(PARROT_INTERP, PackFile *pf)>
@@ -152,24 +236,30 @@
Parrot_io_printf(interp, "\t(interpreter's byteorder = %d)\n",
PARROT_BIGENDIAN);
Parrot_io_printf(interp, "\tfloattype = %d", pf->header->floattype);
- Parrot_io_printf(interp, "\t(interpreter's NUMVAL_SIZE = %d)\n", NUMVAL_SIZE);
- Parrot_io_printf(interp, "\tparrot-version %d.%d.%d, bytecode-version %d.%d\n",
- pf->header->major, pf->header->minor, pf->header->patch,
- pf->header->bc_major, pf->header->bc_minor);
+ Parrot_io_printf(interp, "\t(interpreter's NUMVAL_SIZE = %d)\n",
+ NUMVAL_SIZE);
+ Parrot_io_printf(interp, "\tparrot-version %d.%d.%d, "
+ "bytecode-version %d.%d\n",
+ pf->header->major, pf->header->minor, pf->header->patch,
+ pf->header->bc_major, pf->header->bc_minor);
Parrot_io_printf(interp, "\tUUID: type = %d, size = %d",
- pf->header->uuid_type, pf->header->uuid_size);
+ pf->header->uuid_type, pf->header->uuid_size);
+
if (pf->header->uuid_size)
Parrot_io_printf(interp, ", '%s'\n", pf->header->uuid_data);
else
Parrot_io_printf(interp, "\n");
+
Parrot_io_printf(interp, "\t%s endianize, %s opcode, %s numval transform\n",
pf->need_endianize ? "**need**" : "no",
- pf->need_wordsize ? "**need**" : "no",
- pf->fetch_nv ? "**need**" : "no");
+ pf->need_wordsize ? "**need**" : "no",
+ pf->fetch_nv ? "**need**" : "no");
+
Parrot_io_printf(interp, "\tdirformat = %d\n", pf->header->dir_format);
Parrot_io_printf(interp, "]\n");
}
+
/*
=item C<static void help(void)>
@@ -184,17 +274,21 @@
{
printf("pbc_dump - dump or convert parrot bytecode (PBC) files\n");
printf("usage:\n");
- printf("pbc_dump [-tdh] [--terse|--disassemble|--header-only] file.pbc\n");
+ printf("pbc_dump [-tdh] [--terse|--disassemble|--header-only|--line-nums]"
+ " file.pbc\n");
printf("pbc_dump -o converted.pbc file.pbc\n\n");
printf("\t-d ... disassemble bytecode segments\n");
printf("\t-h ... dump header only\n");
printf("\t-t ... terse output\n");
+ printf("\t-n ... show ops and line numbers only\n");
+
#if TRACE_PACKFILE
printf("\t-D<1-7> --debug debug output\n");
printf("\t 1 general info\n");
printf("\t 2 alignment\n");
printf("\t 4 values\n");
#endif
+
printf("\t-o converted.pbc ... repacks a PBC file into "
"the platform's native\n");
printf("\t binary format for better efficiency on reading "
@@ -202,17 +296,21 @@
exit(EXIT_SUCCESS);
}
+
static struct longopt_opt_decl opt_options[] = {
{ 'h', 'h', OPTION_optional_FLAG, { "--header-only" } },
- { '?', '?', OPTION_optional_FLAG, { "--help" } },
- { 't', 't', OPTION_optional_FLAG, { "--terse" } },
+ { '?', '?', OPTION_optional_FLAG, { "--help" } },
+ { 't', 't', OPTION_optional_FLAG, { "--terse" } },
+ { 'n', 'n', OPTION_optional_FLAG, { "--line-nums" } },
{ 'd', 'd', OPTION_optional_FLAG, { "--disassemble" } },
+ { 'o', 'o', OPTION_required_FLAG, { "--output" } }
+
#if TRACE_PACKFILE
- { 'D', 'D', OPTION_required_FLAG, { "--debug" } },
+ { 'D', 'D', OPTION_required_FLAG, { "--debug" } },
#endif
- { 'o', 'o', OPTION_required_FLAG, { "--output" } }
};
+
/*
=item C<int main(int argc, const char **argv)>
@@ -226,25 +324,35 @@
int
main(int argc, const char **argv)
{
- PackFile *pf;
- Interp *interp;
- int terse = 0;
- int disas = 0;
- int convert = 0;
- int options = PFOPT_UTILS;
- const char *file = NULL;
+ PackFile *pf;
+ Interp *interp;
+
+ const char *file = NULL;
+ int terse = 0;
+ int disas = 0;
+ int convert = 0;
+ int nums_only = 0;
+ int options = PFOPT_UTILS;
+
struct longopt_opt_info opt = LONGOPT_OPT_INFO_INIT;
- int status;
- if (argc < 2) {
+ int status;
+
+ if (argc < 2)
help();
- }
+
interp = Parrot_new(NULL);
+
/* init and set top of stack */
Parrot_init_stacktop(interp, &status);
- while ((status = longopt_get(interp,
- argc, argv, opt_options, &opt)) > 0) {
+
+ while ((status = longopt_get(interp, argc, argv, opt_options, &opt)) > 0) {
switch (opt.opt_id) {
+#if TRACE_PACKFILE
+ case 'D':
+ options += atoi(opt.opt_arg) << 2;
+ break;
+#endif
case 'h':
options += PFOPT_HEADERONLY;
break;
@@ -254,48 +362,49 @@
case 'd':
disas = 1;
break;
-#if TRACE_PACKFILE
- case 'D':
- options += atoi(opt.opt_arg) << 2;
- break;
-#endif
case 'o':
- file = opt.opt_arg;
+ file = opt.opt_arg;
convert = 1;
break;
+ case 'n':
+ nums_only = 1;
+ break;
case '?':
default:
help();
break;
}
}
- if (status == -1) {
+
+ if (status == -1)
help();
- }
+
argc -= opt.opt_index;
argv += opt.opt_index;
-
pf = Parrot_pbc_read(interp, *argv, options);
if (!pf) {
printf("Can't read PBC\n");
return 1;
}
+
Parrot_pbc_load(interp, pf);
+
if (convert) {
- size_t size;
- opcode_t *pack;
+ size_t size = PackFile_pack_size(interp,
+ interp->code->base.pf) * sizeof (opcode_t);
+ opcode_t *pack = (opcode_t *)Parrot_gc_allocate_memory_chunk(interp,
+ size);
FILE *fp;
- size = PackFile_pack_size(interp,
- interp->code->base.pf) * sizeof (opcode_t);
- pack = (opcode_t*) Parrot_gc_allocate_memory_chunk(interp, size);
if (!pack) {
printf("out of mem\n");
exit(EXIT_FAILURE);
}
+
PackFile_pack(interp, interp->code->base.pf, pack);
+
if (STREQ(file, "-"))
fp = stdout;
else if ((fp = fopen(file, "wb")) == 0) {
@@ -307,28 +416,44 @@
printf("Couldn't write %s\n", file);
exit(EXIT_FAILURE);
}
+
fclose(fp);
Parrot_gc_free_memory_chunk(interp, pack);
Parrot_exit(interp, 0);
}
- PackFile_header_dump(interp, pf);
- if (options & PFOPT_HEADERONLY) {
+ if (!nums_only)
+ PackFile_header_dump(interp, pf);
+
+ if (options & PFOPT_HEADERONLY)
Parrot_exit(interp, 0);
- }
+
/* install a dumper function */
if (!terse) {
pf->PackFuncs[PF_CONST_SEG].dump = const_dump;
pf->PackFuncs[PF_FIXUP_SEG].dump = fixup_dump;
}
+
if (disas)
pf->PackFuncs[PF_BYTEC_SEG].dump = disas_dump;
+
+ if (nums_only) {
+ int i;
+
+ for (i = PF_DIR_SEG + 1; i < PF_MAX_SEG; ++i)
+ pf->PackFuncs[i].dump = null_dump;
+
+ pf->PackFuncs[PF_DIR_SEG].dump = null_dir_dump;
+ pf->PackFuncs[PF_BYTEC_SEG].dump = nums_dump;
+ }
+
/* do a directory dump, which dumps segs then */
PackFile_Segment_dump(interp, &pf->directory.base);
Parrot_exit(interp, 0);
}
+
/*
=back
Modified: branches/ops_pct/src/pbc_merge.c
==============================================================================
--- branches/ops_pct/src/pbc_merge.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pbc_merge.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2005-2009, Parrot Foundation.
+Copyright (C) 2005-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -126,14 +126,11 @@
static void pbc_merge_fixups(PARROT_INTERP,
ARGIN(pbc_merge_input **inputs),
int num_inputs,
- ARGMOD(PackFile *pf),
- ARGMOD(PackFile_ByteCode *bc))
+ ARGMOD(PackFile *pf))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(4)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*pf)
- FUNC_MODIFIES(*bc);
+ FUNC_MODIFIES(*pf);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
@@ -176,8 +173,7 @@
#define ASSERT_ARGS_pbc_merge_fixups __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(inputs) \
- , PARROT_ASSERT_ARG(pf) \
- , PARROT_ASSERT_ARG(bc))
+ , PARROT_ASSERT_ARG(pf))
#define ASSERT_ARGS_pbc_merge_loadpbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(fullname))
@@ -329,7 +325,7 @@
}
/* Loop over input files. */
- for (i = 0; i < num_inputs; i++) {
+ for (i = 0; i < num_inputs; ++i) {
/* Get the bytecode segment from the input file. */
PackFile_ByteCode * const in_seg = inputs[i]->pf->cur_cs;
if (in_seg == NULL) {
@@ -397,7 +393,7 @@
}
/* Loop over input files. */
- for (i = 0; i < num_inputs; i++) {
+ for (i = 0; i < num_inputs; ++i) {
/* Get the constant table segment from the input file. */
PackFile_ConstTable * const in_seg = inputs[i]->pf->cur_cs->const_table;
@@ -418,7 +414,7 @@
cursor + in_seg->const_count, PackFile_Constant*);
/* Loop over the constants and copy them to the output PBC. */
- for (j = 0; j < in_seg->const_count; j++) {
+ for (j = 0; j < in_seg->const_count; ++j) {
/* Get the entry and allocate space for copy. */
PackFile_Constant *cur_entry = in_seg->constants[j];
PackFile_Constant *copy = mem_gc_allocate_typed(interp,
@@ -428,27 +424,27 @@
/* 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;
+ 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;
}
}
inputs[i]->const_map[input_const_num] = output_const_num;
- input_const_num++;
- output_const_num++;
+ ++input_const_num;
+ ++output_const_num;
/* Slot it into the list. */
constants[cursor] = copy;
- cursor++;
+ ++cursor;
}
}
@@ -464,7 +460,7 @@
/*
=item C<static void pbc_merge_fixups(PARROT_INTERP, pbc_merge_input **inputs,
-int num_inputs, PackFile *pf, PackFile_ByteCode *bc)>
+int num_inputs, PackFile *pf)>
This function merges the fixups tables from the input PBC files.
@@ -474,14 +470,13 @@
static void
pbc_merge_fixups(PARROT_INTERP, ARGIN(pbc_merge_input **inputs),
- int num_inputs, ARGMOD(PackFile *pf), ARGMOD(PackFile_ByteCode *bc))
+ int num_inputs, ARGMOD(PackFile *pf))
{
ASSERT_ARGS(pbc_merge_fixups)
PackFile_FixupTable *fixup_seg;
- PackFile_FixupEntry **fixups = mem_gc_allocate_typed(interp,
- PackFile_FixupEntry *);
+ PackFile_FixupEntry *fixups = NULL;
opcode_t cursor = 0;
- int i, j;
+ int i;
/* Add a fixup table segment. */
fixup_seg = (PackFile_FixupTable*)PackFile_Segment_new_seg(
@@ -493,9 +488,11 @@
}
/* Loop over input files. */
- for (i = 0; i < num_inputs; i++) {
+ for (i = 0; i < num_inputs; ++i) {
/* Get the fixup segment from the input file. */
PackFile_FixupTable * const in_seg = inputs[i]->pf->cur_cs->fixups;
+ int j;
+
if (in_seg == NULL) {
Parrot_io_eprintf(interp,
"PBC Merge: Cannot locate fixup segment in %s",
@@ -506,17 +503,17 @@
/* Allocate space for these fixups, provided we have some. */
if (in_seg->fixup_count > 0) {
fixups = mem_gc_realloc_n_typed(interp, fixups,
- cursor + in_seg->fixup_count, PackFile_FixupEntry*);
+ cursor + in_seg->fixup_count, PackFile_FixupEntry);
}
/* Loop over the fixups and copy them to the output PBC, correcting
the offsets into the bytecode. */
- for (j = 0; j < in_seg->fixup_count; j++) {
+ for (j = 0; j < in_seg->fixup_count; ++j) {
/* Get the entry and allocate space for copies. */
- PackFile_FixupEntry *cur_entry = in_seg->fixups[j];
- PackFile_FixupEntry *copy = mem_gc_allocate_typed(interp,
- PackFile_FixupEntry);
- char *name_copy = mem_gc_allocate_n_typed(interp,
+ const PackFile_FixupEntry * const cur_entry = in_seg->fixups + j;
+ PackFile_FixupEntry * const copy =
+ mem_gc_allocate_typed(interp, PackFile_FixupEntry);
+ char * const name_copy = mem_gc_allocate_n_typed(interp,
strlen(cur_entry->name) + 1, char);
/* Copy type and name. */
@@ -526,20 +523,20 @@
/* Set new offset and bytecode pointer. */
switch (copy->type) {
- case enum_fixup_label:
- copy->offset = cur_entry->offset + inputs[i]->code_start;
- break;
- case enum_fixup_sub:
- copy->offset = cur_entry->offset + inputs[i]->const_start;
- break;
- default:
- Parrot_io_eprintf(interp, "PBC Merge: Unknown fixup type");
- Parrot_exit(interp, 1);
+ case enum_fixup_label:
+ copy->offset = cur_entry->offset + inputs[i]->code_start;
+ break;
+ case enum_fixup_sub:
+ copy->offset = cur_entry->offset + inputs[i]->const_start;
+ break;
+ default:
+ Parrot_io_eprintf(interp, "PBC Merge: Unknown fixup type");
+ Parrot_exit(interp, 1);
}
/* Slot it into the list. */
- fixups[cursor] = copy;
- cursor++;
+ fixups[cursor] = *copy;
+ ++cursor;
}
}
@@ -568,19 +565,20 @@
PackFile_Debug *debug_seg;
opcode_t *lines = mem_gc_allocate_typed(interp,
opcode_t);
- PackFile_DebugFilenameMapping **mappings =
- mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping *);
+ PackFile_DebugFilenameMapping *mappings =
+ mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping);
opcode_t num_mappings = 0;
opcode_t num_lines = 0;
- int i, j;
+ int i;
/* We need to merge both the mappings and the list of line numbers.
The line numbers can just be concatenated. The mappings must have
their offsets fixed up. */
- for (i = 0; i < num_inputs; i++) {
- PackFile_Debug *in_seg = inputs[i]->pf->cur_cs->debugs;
+ for (i = 0; i < num_inputs; ++i) {
+ const PackFile_Debug * const in_seg = inputs[i]->pf->cur_cs->debugs;
+ int j;
/* Concatenate line numbers. */
lines = mem_gc_realloc_n_typed(interp, lines,
@@ -592,15 +590,14 @@
/* Concatenate mappings. */
mappings = mem_gc_realloc_n_typed(interp, mappings,
num_mappings + in_seg->num_mappings,
- PackFile_DebugFilenameMapping*);
+ PackFile_DebugFilenameMapping);
- for (j = 0; j < in_seg->num_mappings; j++) {
- PackFile_DebugFilenameMapping *mapping = mem_gc_allocate_typed(
- interp, PackFile_DebugFilenameMapping);
- STRUCT_COPY(mapping, in_seg->mappings[j]);
+ for (j = 0; j < in_seg->num_mappings; ++j) {
+ PackFile_DebugFilenameMapping *mapping = mappings + num_mappings + j;
+
+ STRUCT_COPY_FROM_STRUCT(mapping, in_seg->mappings[j]);
mapping->offset += num_lines;
mapping->filename += inputs[i]->const_start;
- mappings[num_mappings + j] = mapping;
}
num_lines += in_seg->base.size - 1;
@@ -650,31 +647,31 @@
/* Keep track of the current input file. */
if (cur_input + 1 < num_inputs &&
cur_op >= inputs[cur_input + 1]->code_start)
- cur_input++;
+ ++cur_input;
/* Get info about this op and jump over it. */
op_num = ops[cur_op];
op = &interp->op_info_table[op_num];
op_ptr = ops + cur_op;
- cur_op++;
+ ++cur_op;
/* Loop over the arguments. */
- for (cur_arg = 1; cur_arg < op->op_count; cur_arg++) {
+ for (cur_arg = 1; cur_arg < op->op_count; ++cur_arg) {
/* 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:
- case PARROT_ARG_SC:
- case PARROT_ARG_NAME_SC:
- case PARROT_ARG_KC:
- ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
- break;
- default:
- break;
+ case PARROT_ARG_NC:
+ case PARROT_ARG_PC:
+ case PARROT_ARG_SC:
+ case PARROT_ARG_NAME_SC:
+ case PARROT_ARG_KC:
+ ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
+ break;
+ default:
+ break;
}
/* Move along the bytecode array. */
- cur_op++;
+ ++cur_op;
}
/* Handle special case variable argument opcodes. */
@@ -687,19 +684,19 @@
/* 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++) {
+ 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:
- case PARROT_ARG_SC:
- case PARROT_ARG_NAME_SC:
- case PARROT_ARG_KC:
- ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
- break;
- default:
- break;
+ case PARROT_ARG_NC:
+ case PARROT_ARG_PC:
+ case PARROT_ARG_SC:
+ case PARROT_ARG_NAME_SC:
+ case PARROT_ARG_KC:
+ ops[cur_op] = inputs[cur_input]->const_map[ ops[cur_op] ];
+ break;
+ default:
+ break;
}
- cur_op++;
+ ++cur_op;
}
}
}
@@ -734,10 +731,10 @@
}
/* calculate how many constants are stored in the packfiles to be merged */
- for (i = 0; i < num_inputs; i++) {
+ for (i = 0; i < num_inputs; ++i) {
PackFile_Directory *pf_dir = &inputs[i]->pf->directory;
unsigned int j = 0;
- for (j = 0; j < pf_dir->num_segments; j++) {
+ 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;
@@ -752,13 +749,13 @@
ct = pbc_merge_constants(interp, inputs, num_inputs, merged, bc);
UNUSED(ct);
- pbc_merge_fixups(interp, inputs, num_inputs, merged, bc);
+ pbc_merge_fixups(interp, inputs, num_inputs, merged);
pbc_merge_debugs(interp, inputs, num_inputs, merged, bc);
/* Walk bytecode and fix ops that reference the constants table. */
pbc_merge_ctpointers(interp, inputs, num_inputs, bc);
- for (i = 0; i < num_inputs; i++) {
+ for (i = 0; i < num_inputs; ++i) {
mem_gc_free(interp, inputs[i]->const_map);
}
@@ -841,17 +838,17 @@
}
while ((status = longopt_get(interp, argc, argv, options, &opt)) > 0) {
switch (opt.opt_id) {
- case 'o':
- if (output_file == NULL)
- output_file = opt.opt_arg;
- else
+ case 'o':
+ if (output_file == NULL)
+ output_file = opt.opt_arg;
+ else
+ help(interp);
+ break;
+ case '?':
help(interp);
- break;
- case '?':
- help(interp);
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
}
if (status == -1 || !output_file) {
@@ -864,7 +861,7 @@
structure for each of them. */
input_files = mem_gc_allocate_n_typed(interp, argc, pbc_merge_input*);
- for (i = 0; i < argc; i++) {
+ for (i = 0; i < argc; ++i) {
/* Allocate a struct. */
input_files[i] = mem_gc_allocate_typed(interp, pbc_merge_input);
@@ -882,7 +879,7 @@
}
/* Next file. */
- argv++;
+ ++argv;
}
/* Merge. */
Modified: branches/ops_pct/src/pmc.c
==============================================================================
--- branches/ops_pct/src/pmc.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc.c Wed May 5 08:45:29 2010 (r46302)
@@ -48,8 +48,7 @@
PARROT_CANNOT_RETURN_NULL
static PMC* Parrot_pmc_reuse_noinit(PARROT_INTERP,
ARGIN(PMC *pmc),
- INTVAL new_type,
- SHIM(UINTVAL flags))
+ INTVAL new_type)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -81,10 +80,13 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_HOT
INTVAL
Parrot_pmc_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc))
{
ASSERT_ARGS(Parrot_pmc_is_null)
+ /* We can't use PMC_IS_NULL() because that calls us here in some cases */
#if PARROT_CATCH_NULL
return pmc == PMCNULL || pmc == NULL;
#else
@@ -117,9 +119,6 @@
PObj_gc_CLEAR(pmc);
- if (PObj_is_PMC_shared_TEST(pmc) && PMC_sync(pmc))
- Parrot_gc_free_pmc_sync(interp, pmc);
-
if (pmc->vtable->attr_size)
Parrot_gc_free_pmc_attributes(interp, pmc);
else
@@ -189,10 +188,10 @@
PARROT_IGNORABLE_RESULT
PMC *
Parrot_pmc_reuse(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
- UINTVAL flags)
+ SHIM(UINTVAL flags))
{
ASSERT_ARGS(Parrot_pmc_reuse)
- pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type, flags);
+ pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type);
/* Call the base init for the redone pmc. Warning, this should not
be called on Object PMCs. */
@@ -223,10 +222,10 @@
PARROT_IGNORABLE_RESULT
PMC *
Parrot_pmc_reuse_init(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type, ARGIN(PMC *init),
- UINTVAL flags)
+ SHIM(UINTVAL flags))
{
ASSERT_ARGS(Parrot_pmc_reuse_init)
- pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type, flags);
+ pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type);
/* Call the base init for the redone pmc. Warning, this should not
be called on Object PMCs. */
@@ -238,43 +237,39 @@
/*
=item C<static PMC* Parrot_pmc_reuse_noinit(PARROT_INTERP, PMC *pmc, INTVAL
-new_type, UINTVAL flags)>
+new_type)>
Prepare pmc for reuse. Do all scuffolding except initing.
=cut
*/
+
PARROT_CANNOT_RETURN_NULL
static PMC*
-Parrot_pmc_reuse_noinit(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
- SHIM(UINTVAL flags)) {
-
+Parrot_pmc_reuse_noinit(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type)
+{
ASSERT_ARGS(Parrot_pmc_reuse_noinit)
- VTABLE *new_vtable;
- INTVAL new_flags = 0;
- if (pmc->vtable->base_type == new_type)
- return pmc;
+ if (pmc->vtable->base_type != new_type) {
+ VTABLE * const new_vtable = interp->vtables[new_type];
- new_vtable = interp->vtables[new_type];
+ /* Singleton/const PMCs/types are not eligible */
+ check_pmc_reuse_flags(interp, pmc->vtable->flags, new_vtable->flags);
- /* Singleton/const PMCs/types are not eligible */
- check_pmc_reuse_flags(interp, pmc->vtable->flags, new_vtable->flags);
+ /* Free the old PMC resources. */
+ Parrot_pmc_destroy(interp, pmc);
- /* Free the old PMC resources. */
- Parrot_pmc_destroy(interp, pmc);
+ PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG);
- PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG | new_flags);
+ /* Set the right vtable */
+ pmc->vtable = new_vtable;
- /* Set the right vtable */
- pmc->vtable = new_vtable;
-
- if (new_vtable->attr_size)
- Parrot_gc_allocate_pmc_attributes(interp, pmc);
-
- else
- PMC_data(pmc) = NULL;
+ if (new_vtable->attr_size)
+ Parrot_gc_allocate_pmc_attributes(interp, pmc);
+ else
+ PMC_data(pmc) = NULL;
+ }
return pmc;
}
@@ -302,26 +297,25 @@
{
ASSERT_ARGS(Parrot_pmc_reuse_by_class)
const INTVAL new_type = PARROT_CLASS(class_)->id;
- VTABLE * const new_vtable = interp->vtables[new_type];
- INTVAL new_flags = flags;
- if (pmc->vtable->base_type == new_type)
- return pmc;
+ if (pmc->vtable->base_type != new_type) {
+ VTABLE * const new_vtable = interp->vtables[new_type];
- /* Singleton/const PMCs/types are not eligible */
- check_pmc_reuse_flags(interp, pmc->vtable->flags, new_vtable->flags);
+ /* Singleton/const PMCs/types are not eligible */
+ check_pmc_reuse_flags(interp, pmc->vtable->flags, new_vtable->flags);
- Parrot_pmc_destroy(interp, pmc);
+ Parrot_pmc_destroy(interp, pmc);
- PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG | new_flags);
+ PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG | flags);
- /* Set the right vtable */
- pmc->vtable = new_vtable;
+ /* Set the right vtable */
+ pmc->vtable = new_vtable;
- if (new_vtable->attr_size)
- Parrot_gc_allocate_pmc_attributes(interp, pmc);
- else
- PMC_data(pmc) = NULL;
+ if (new_vtable->attr_size)
+ Parrot_gc_allocate_pmc_attributes(interp, pmc);
+ else
+ PMC_data(pmc) = NULL;
+ }
return pmc;
}
@@ -392,7 +386,7 @@
get_new_pmc_header(PARROT_INTERP, INTVAL base_type, UINTVAL flags)
{
ASSERT_ARGS(get_new_pmc_header)
- PMC *pmc;
+ PMC *newpmc;
VTABLE *vtable = interp->vtables[base_type];
UINTVAL vtable_flags;
@@ -444,9 +438,6 @@
* const PMC is const too
* see e.g. t/pmc/sarray_13.pir
*/
-#if 0
- flags |= PObj_constant_FLAG;
-#endif
--base_type;
vtable = interp->vtables[base_type];
}
@@ -454,13 +445,13 @@
if (vtable_flags & VTABLE_IS_SHARED_FLAG)
flags |= PObj_is_PMC_shared_FLAG;
- pmc = Parrot_gc_new_pmc_header(interp, flags);
- pmc->vtable = vtable;
+ newpmc = Parrot_gc_new_pmc_header(interp, flags);
+ newpmc->vtable = vtable;
if (vtable->attr_size)
- Parrot_gc_allocate_pmc_attributes(interp, pmc);
+ Parrot_gc_allocate_pmc_attributes(interp, newpmc);
- return pmc;
+ return newpmc;
}
@@ -582,9 +573,10 @@
PMC *const classobj = interp->vtables[base_type]->pmc_class;
if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj)) {
- PMC *initial = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+ PMC * const initial =
+ Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
VTABLE_set_integer_native(interp, initial, init);
- VTABLE_instantiate(interp, classobj, initial);
+ return VTABLE_instantiate(interp, classobj, initial);
}
else {
PMC * const pmc = get_new_pmc_header(interp, base_type, 0);
@@ -621,13 +613,37 @@
/*
+=item C<PMC * Parrot_pmc_new_constant_init_int(PARROT_INTERP, INTVAL base_type,
+INTVAL init)>
+
+As C<Parrot_pmc_new_constant>, but passes C<init> to the PMC's C<init_int> vtable
+entry.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PMC *
+Parrot_pmc_new_constant_init_int(PARROT_INTERP, INTVAL base_type, INTVAL init)
+{
+ ASSERT_ARGS(Parrot_pmc_new_constant_init_int)
+ PMC * const pmc = get_new_pmc_header(interp, base_type, PObj_constant_FLAG);
+ VTABLE_init_int(interp, pmc, init);
+ return pmc;
+}
+
+
+/*
+
=item C<PMC * Parrot_pmc_new_temporary(PARROT_INTERP, INTVAL base_type)>
Creates a new temporary PMC of type C<base_type>, then call C<init>. Cannot
be used to create PMC Objects which have been defined from PIR.
B<You> are responsible for freeing this PMC when it goes out of scope with
-C<free_temporary_pmc()>. B<Do not> store this PMC in any other PMCs, or
+C<Parrot_pmc_free_temporary()>. B<Do not> store this PMC in any other PMCs, or
allow it to be stored. B<Do not> store any regular PMC in this PMC, or
allow the storage of any regular PMC in this PMC. Temporary PMCs do not
participate in garbage collection, and mixing them with PMCs that are
@@ -791,9 +807,7 @@
{
ASSERT_ARGS(Parrot_pmc_get_type)
PMC * const classname_hash = interp->class_hash;
- PMC * item;
-
- item = (PMC *)VTABLE_get_pointer_keyed(interp, classname_hash, name);
+ PMC * const item = (PMC *)VTABLE_get_pointer_keyed(interp, classname_hash, name);
if (!PMC_IS_NULL(item))
return VTABLE_get_integer(interp, item);
@@ -835,7 +849,6 @@
&& (_class == _class->vtable->pmc_class))
interp->vtables[type]->pmc_class = _class;
else {
- Parrot_gc_free_pmc_sync(interp, _class);
gc_flag_CLEAR(is_special_PMC, _class);
PObj_is_PMC_shared_CLEAR(_class);
interp->vtables[type]->pmc_class = _class;
@@ -860,9 +873,9 @@
Parrot_pmc_create_mro(PARROT_INTERP, INTVAL type)
{
ASSERT_ARGS(Parrot_pmc_create_mro)
- PMC *_class, *mro;
+ PMC *mro;
VTABLE *vtable = interp->vtables[type];
- PMC *mro_list = vtable->mro;
+ PMC * const mro_list = vtable->mro;
INTVAL i, count;
/* this should never be PMCNULL */
@@ -881,8 +894,9 @@
count = VTABLE_elements(interp, mro_list);
for (i = 0; i < count; ++i) {
- STRING *class_name = VTABLE_get_string_keyed_int(interp, mro_list, i);
- INTVAL parent_type = Parrot_pmc_get_type_str(interp, class_name);
+ STRING * const class_name = VTABLE_get_string_keyed_int(interp, mro_list, i);
+ const INTVAL parent_type = Parrot_pmc_get_type_str(interp, class_name);
+ PMC *_class;
/* abstract classes don't have a vtable */
if (!parent_type)
@@ -962,6 +976,52 @@
/*
+=item C<INTVAL Parrot_pmc_type_does(PARROT_INTERP, STRING *role, INTVAL type)>
+
+Checks to see if PMCs of the given type does the given role. Checks
+C<<vtable->provides_str>> to find a match.
+Returns true (1) if B<role> is found, false (0) otherwise.
+
+=cut
+
+*/
+
+INTVAL
+Parrot_pmc_type_does(PARROT_INTERP, ARGIN(STRING *role), INTVAL type)
+{
+ ASSERT_ARGS(Parrot_pmc_type_does)
+
+ INTVAL pos = 0;
+ STRING * const what = interp->vtables[type]->provides_str;
+ INTVAL length = Parrot_str_byte_length(interp, what);
+
+ do {
+ INTVAL len;
+ const INTVAL idx = Parrot_str_find_index(interp, what, role, (INTVAL)pos);
+
+ if ((idx < 0) || (idx >= length))
+ return 0;
+
+ pos = idx;
+ len = Parrot_str_byte_length(interp, role);
+
+ if (pos && (Parrot_str_indexed(interp, what, pos - 1) != 32)) {
+ pos += len;
+ continue;
+ }
+
+ if (pos + len < length) {
+ pos += len;
+ if (Parrot_str_indexed(interp, what, pos) != 32)
+ continue;
+ }
+
+ return 1;
+ } while (1);
+}
+
+/*
+
=back
=head1 SEE ALSO
@@ -971,10 +1031,6 @@
C<5.1.0.14.2.20011008152120.02158148 at pop.sidhe.org>
(http://www.nntp.perl.org/group/perl.perl6.internals/5516).
-=head1 HISTORY
-
-Initial version by Simon on 2001.10.20.
-
=cut
*/
Modified: branches/ops_pct/src/pmc/addrregistry.pmc
==============================================================================
--- branches/ops_pct/src/pmc/addrregistry.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/addrregistry.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -28,6 +28,10 @@
#include "parrot/hash.h"
#include "pmc/pmc_hash.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass AddrRegistry extends Hash provides hash auto_attrs {
/*
@@ -73,7 +77,7 @@
Hash *hash;
const void *value;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
value = parrot_hash_get(INTERP, hash, key);
if (value)
@@ -85,7 +89,7 @@
VTABLE INTVAL elements() {
const Hash *hash;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
return parrot_hash_size(INTERP, hash);
}
@@ -93,7 +97,7 @@
VTABLE INTVAL get_bool() {
const Hash *hash;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
return parrot_hash_size(INTERP, hash) != 0;
}
@@ -124,7 +128,7 @@
Hash *hash;
UNUSED(value);
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
oldval = parrot_hash_get(INTERP, hash, key);
@@ -136,7 +140,7 @@
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
Hash *hash;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
parrot_hash_put(INTERP, hash, key, (void *)value);
}
@@ -144,7 +148,7 @@
Hash *hash;
void *value;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
value = parrot_hash_get(INTERP, hash, key);
/* these casts look bad, but they avoid type punning warnings with -O */
Modified: branches/ops_pct/src/pmc/arrayiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/arrayiterator.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/arrayiterator.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -40,7 +40,7 @@
NB: for different direction you have to use different ops!
-TODO: Discuss idea of having separate get_iter/get_reverse_iter VTABLE methods
+TODO: Discuss idea of having separate get_iter/get_reverse_iter VTABLEs
to avoid this caveat.
=head1 Methods
@@ -51,6 +51,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ArrayIterator extends Iterator no_ro auto_attrs {
ATTR PMC *array; /* the array which this Iterator iterates */
ATTR INTVAL pos; /* Current position of iterator for forward iterator */
@@ -86,7 +90,7 @@
VTABLE void init_pmc(PMC *array) {
- SET_ATTR_array(interp, SELF, array);
+ SET_ATTR_array(INTERP, SELF, array);
PObj_custom_mark_SET(SELF);
@@ -124,14 +128,14 @@
PMC *array;
PMC *clone;
- GET_ATTR_array(interp, SELF, array);
- GET_ATTR_pos(interp, SELF, pos);
- GET_ATTR_reverse(interp, SELF, reverse);
+ GET_ATTR_array(INTERP, SELF, array);
+ GET_ATTR_pos(INTERP, SELF, pos);
+ GET_ATTR_reverse(INTERP, SELF, reverse);
clone = Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, array);
- SET_ATTR_pos(interp, clone, pos);
- SET_ATTR_reverse(interp, clone, reverse);
+ SET_ATTR_pos(INTERP, clone, pos);
+ SET_ATTR_reverse(INTERP, clone, reverse);
return clone;
}
@@ -163,15 +167,15 @@
VTABLE INTVAL elements() {
INTVAL reverse, pos, length;
- GET_ATTR_reverse(interp, SELF, reverse);
+ GET_ATTR_reverse(INTERP, SELF, reverse);
if (reverse) {
- GET_ATTR_pos(interp, SELF, pos);
+ GET_ATTR_pos(INTERP, SELF, pos);
return pos;
}
else {
- GET_ATTR_length(interp, SELF, length);
- GET_ATTR_pos(interp, SELF, pos);
+ GET_ATTR_length(INTERP, SELF, length);
+ GET_ATTR_pos(INTERP, SELF, pos);
return length - pos;
}
}
@@ -197,18 +201,18 @@
PMC *array;
if (value == ITERATE_FROM_START) {
- GET_ATTR_array(interp, SELF, array);
- SET_ATTR_reverse(interp, SELF, 0);
- SET_ATTR_pos(interp, SELF, 0);
- SET_ATTR_length(interp, SELF, VTABLE_elements(INTERP, array));
+ GET_ATTR_array(INTERP, SELF, array);
+ SET_ATTR_reverse(INTERP, SELF, 0);
+ SET_ATTR_pos(INTERP, SELF, 0);
+ SET_ATTR_length(INTERP, SELF, VTABLE_elements(INTERP, array));
}
else if (value == ITERATE_FROM_END) {
INTVAL element;
- GET_ATTR_array(interp, SELF, array);
+ GET_ATTR_array(INTERP, SELF, array);
element = VTABLE_elements(INTERP, array);
- SET_ATTR_reverse(interp, SELF, 1);
- SET_ATTR_length(interp, SELF, element);
- SET_ATTR_pos(interp, SELF, element);
+ SET_ATTR_reverse(INTERP, SELF, 1);
+ SET_ATTR_length(INTERP, SELF, element);
+ SET_ATTR_pos(INTERP, SELF, element);
}
else
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
Modified: branches/ops_pct/src/pmc/bigint.pmc
==============================================================================
--- branches/ops_pct/src/pmc/bigint.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/bigint.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -14,9 +14,9 @@
=over 4
-=item C<static void bigint_set_long(Interp*, PMC *, long value)>
+=item C<static void bigint_set_long(PARROT_INTERP, PMC *self, long value)>
-=item C<static void bigint_set_double(Interp*, PMC *, double value)>
+=item C<static void bigint_set_double(PARROT_INTERP, PMC *self, double value)>
=cut
@@ -35,15 +35,370 @@
} BIGINT;
-static void
-bigint_init(PARROT_INTERP, PMC *self) {
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void bigint_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_add_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_add_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bigint_clear(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL bigint_cmp(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL bigint_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bigint_div_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_div_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_fdiv_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGMOD(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*value)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_fdiv_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+PARROT_WARN_UNUSED_RESULT
+static int bigint_get_bool(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static double bigint_get_double(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static long bigint_get_long(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static BIGINT* bigint_get_self(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * bigint_get_string(PARROT_INTERP, ARGIN(PMC *self), int base)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bigint_init(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bigint_mod_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGMOD(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*value)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_mod_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_mul_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_mul_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_pow_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_set(PARROT_INTERP, ARGMOD(PMC *dest), ARGIN(PMC *src))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_set_double(PARROT_INTERP,
+ ARGMOD(PMC *self),
+ double value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+static void bigint_set_long(PARROT_INTERP, ARGMOD(PMC *self), long value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+static void bigint_set_self(PARROT_INTERP,
+ ARGMOD(PMC *self),
+ ARGIN(BIGINT *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*self);
+
+static void bigint_set_str(PARROT_INTERP,
+ ARGMOD(PMC *self),
+ ARGIN(const char *value),
+ int base)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*self);
+
+static void bigint_sub_bigint(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bigint_sub_bigint_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void int_check_divide_zero(PARROT_INTERP, INTVAL value)
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_bigint_abs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_add_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_add_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_check_divide_zero __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bigint_clear __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_cmp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bigint_cmp_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_div_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_div_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_fdiv_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_fdiv_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_get_bool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_get_double __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_get_long __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_get_self __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_get_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_mod_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_mod_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_mul_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_mul_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_neg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_pow_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(dest) \
+ , PARROT_ASSERT_ARG(src))
+#define ASSERT_ARGS_bigint_set_double __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_set_long __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bigint_set_self __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bigint_set_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bigint_sub_bigint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bigint_sub_bigint_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_int_check_divide_zero __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+/* HEADERIZER HFILE: none */
+
+static void
+bigint_init(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_init)
+
BIGINT * const bi = mem_gc_allocate_zeroed_typed(interp, BIGINT);
SETATTR_BigInt_bi(interp, self, bi);
mpz_init(bi->b);
}
static void
-bigint_clear(PARROT_INTERP, PMC *self) {
+bigint_clear(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_clear)
+
BIGINT * bi;
GETATTR_BigInt_bi(interp, self, bi);
mpz_clear(bi->b);
@@ -51,7 +406,10 @@
}
static void
-bigint_set(PARROT_INTERP, PMC *dest, PMC *src) {
+bigint_set(PARROT_INTERP, ARGMOD(PMC *dest), ARGIN(PMC *src))
+{
+ ASSERT_ARGS(bigint_set)
+
BIGINT *bi_dest, *bi_src;
GETATTR_BigInt_bi(interp, dest, bi_dest);
GETATTR_BigInt_bi(interp, src, bi_src);
@@ -61,42 +419,63 @@
}
static void
-bigint_set_long(PARROT_INTERP, PMC *self, long value) {
+bigint_set_long(PARROT_INTERP, ARGMOD(PMC *self), long value)
+{
+ ASSERT_ARGS(bigint_set_long)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
mpz_set_si(bi->b, value);
}
static void
-bigint_set_double(PARROT_INTERP, PMC *self, double value) {
+bigint_set_double(PARROT_INTERP, ARGMOD(PMC *self), double value)
+{
+ ASSERT_ARGS(bigint_set_double)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
mpz_set_d(bi->b, value);
}
static void
-bigint_set_str(PARROT_INTERP, PMC *self, char *value, int base) {
+bigint_set_str(PARROT_INTERP, ARGMOD(PMC *self), ARGIN(const char *value), int base)
+{
+ ASSERT_ARGS(bigint_set_str)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
mpz_set_str(bi->b, value, base);
}
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static BIGINT*
-bigint_get_self(PARROT_INTERP, PMC *self) {
+bigint_get_self(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_get_self)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
return bi;
}
static void
-bigint_set_self(PARROT_INTERP, PMC *self, BIGINT *value) {
+bigint_set_self(PARROT_INTERP, ARGMOD(PMC *self), ARGIN(BIGINT *value))
+{
+ ASSERT_ARGS(bigint_set_self)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
mpz_set(bi->b, (mpz_srcptr)((BIGINT*)value)->b);
}
+PARROT_WARN_UNUSED_RESULT
static long
-bigint_get_long(PARROT_INTERP, PMC *self) {
+bigint_get_long(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_get_long)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
if (mpz_fits_slong_p(bi->b))
@@ -105,8 +484,12 @@
Parrot_ex_throw_from_c_args(interp, NULL, 1, "bigint_get_long: number too big");
}
+PARROT_WARN_UNUSED_RESULT
static int
-bigint_get_bool(PARROT_INTERP, PMC *self) {
+bigint_get_bool(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_get_bool)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
if (mpz_sgn(bi->b) != 0)
@@ -115,8 +498,13 @@
return 0;
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
static char *
-bigint_get_string(PARROT_INTERP, PMC *self, int base) {
+bigint_get_string(PARROT_INTERP, ARGIN(PMC *self), int base)
+{
+ ASSERT_ARGS(bigint_get_string)
+
BIGINT *bi;
size_t n;
char *s;
@@ -127,15 +515,22 @@
return mpz_get_str(s, base, bi->b);
}
+PARROT_WARN_UNUSED_RESULT
static double
-bigint_get_double(PARROT_INTERP, PMC *self) {
+bigint_get_double(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(bigint_get_double)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
return mpz_get_d(bi->b);
}
static void
-bigint_add_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_add_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_add_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
@@ -144,7 +539,10 @@
}
static void
-bigint_add_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_add_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_add_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -155,7 +553,10 @@
}
static void
-bigint_sub_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_sub_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_sub_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
@@ -164,7 +565,10 @@
}
static void
-bigint_sub_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_sub_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_sub_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -175,7 +579,10 @@
}
static void
-bigint_mul_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_mul_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_mul_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
@@ -184,7 +591,10 @@
}
static void
-bigint_mul_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_mul_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_mul_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -192,7 +602,10 @@
}
static void
-bigint_pow_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_pow_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_pow_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -200,14 +613,18 @@
}
static void
-int_check_divide_zero(PARROT_INTERP, INTVAL value) {
+int_check_divide_zero(PARROT_INTERP, INTVAL value)
+{
if (value == 0)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_DIV_BY_ZERO,
"Divide by zero");
}
static void
-bigint_check_divide_zero(PARROT_INTERP, PMC *value) {
+bigint_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
+{
+ ASSERT_ARGS(bigint_check_divide_zero)
+
/* Throw an exception if we are dividing by zero. */
BIGINT *bi;
GETATTR_BigInt_bi(interp, value, bi);
@@ -217,7 +634,10 @@
}
static void
-bigint_div_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_div_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_div_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
bigint_check_divide_zero(interp, value);
GETATTR_BigInt_bi(interp, self, bi_self);
@@ -228,7 +648,10 @@
}
static void
-bigint_div_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_div_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_div_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -244,7 +667,10 @@
}
static void
-bigint_fdiv_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_fdiv_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_fdiv_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
@@ -254,7 +680,10 @@
}
static void
-bigint_fdiv_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_fdiv_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_fdiv_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -269,7 +698,10 @@
}
static void
-bigint_mod_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_mod_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *value), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_mod_bigint)
+
BIGINT *bi_self, *bi_value, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
@@ -279,7 +711,10 @@
}
static void
-bigint_mod_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_mod_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_mod_bigint_int)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -292,23 +727,34 @@
mpz_mod_ui(bi_dest->b, bi_self->b, (unsigned long int)value);
}
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-bigint_cmp(PARROT_INTERP, PMC *self, PMC *value) {
+bigint_cmp(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value))
+{
+ ASSERT_ARGS(bigint_cmp)
+
BIGINT *bi_self, *bi_value;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, value, bi_value);
return mpz_cmp(bi_self->b, bi_value->b);
}
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-bigint_cmp_int(PARROT_INTERP, PMC *self, INTVAL value) {
+bigint_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value)
+{
+ ASSERT_ARGS(bigint_cmp_int)
+
BIGINT *bi;
GETATTR_BigInt_bi(interp, self, bi);
return mpz_cmp_si(bi->b, value);
}
static void
-bigint_abs(PARROT_INTERP, PMC *self, PMC *dest) {
+bigint_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_abs)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
@@ -316,13 +762,18 @@
}
static void
-bigint_neg(PARROT_INTERP, PMC *self, PMC *dest) {
+bigint_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+{
+ ASSERT_ARGS(bigint_neg)
+
BIGINT *bi_self, *bi_dest;
GETATTR_BigInt_bi(interp, self, bi_self);
GETATTR_BigInt_bi(interp, dest, bi_dest);
mpz_neg(bi_dest->b, bi_self->b);
}
+/* HEADERIZER STOP */
+
#else /* ifdef PARROT_HAS_GMP */
typedef struct BIGINT {
@@ -330,19 +781,19 @@
} BIGINT;
static void
-bigint_init(PARROT_INTERP, PMC *self) {
+bigint_init(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_clear(PARROT_INTERP, PMC *self) {
+bigint_clear(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_set_long(PARROT_INTERP, PMC *self, long value) {
+bigint_set_long(PARROT_INTERP, ARGIN(PMC *self), long value) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
@@ -354,151 +805,151 @@
}
static void
-bigint_set_double(PARROT_INTERP, PMC *self, double value) {
+bigint_set_double(PARROT_INTERP, ARGIN(PMC *self), double value) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_set_str(PARROT_INTERP, PMC *self, char *value, int base) {
+bigint_set_str(PARROT_INTERP, ARGIN(PMC *self), char *value, int base) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_set_self(PARROT_INTERP, PMC *self, BIGINT *value) {
+bigint_set_self(PARROT_INTERP, ARGIN(PMC *self), BIGINT *value) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static BIGINT*
-bigint_get_self(PARROT_INTERP, PMC *self) {
+bigint_get_self(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static char *
-bigint_get_string(PARROT_INTERP, PMC *self, int base) {
+bigint_get_string(PARROT_INTERP, ARGIN(PMC *self), int base) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static long
-bigint_get_long(PARROT_INTERP, PMC *self) {
+bigint_get_long(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
-static long
-bigint_get_bool(PARROT_INTERP, PMC *self) {
+static int
+bigint_get_bool(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static double
-bigint_get_double(PARROT_INTERP, PMC *self) {
+bigint_get_double(PARROT_INTERP, ARGIN(PMC *self)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_add_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_add_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_add_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_add_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_sub_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_sub_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_sub_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_sub_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_mul_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_mul_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_mul_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_mul_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_pow_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_pow_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_div_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_div_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_div_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_div_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_fdiv_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_fdiv_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_fdiv_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_fdiv_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_mod_bigint(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bigint_mod_bigint(PARROT_INTERP, ARGIN(PMC *self), PMC *value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_mod_bigint_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bigint_mod_bigint_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static INTVAL
-bigint_cmp(PARROT_INTERP, PMC *self, PMC *value) {
+bigint_cmp(PARROT_INTERP, ARGIN(PMC *self), PMC *value) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static INTVAL
-bigint_cmp_int(PARROT_INTERP, PMC *self, INTVAL value) {
+bigint_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_abs(PARROT_INTERP, PMC *self, PMC *dest) {
+bigint_abs(PARROT_INTERP, ARGIN(PMC *self), PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
static void
-bigint_neg(PARROT_INTERP, PMC *self, PMC *dest) {
+bigint_neg(PARROT_INTERP, ARGIN(PMC *self), PMC *dest) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no bigint lib loaded");
}
@@ -692,7 +1143,7 @@
VTABLE STRING *get_repr() {
STRING * const s = SELF.get_string();
- return Parrot_str_append(INTERP, s, CONST_STRING(INTERP, "L"));
+ return Parrot_str_concat(INTERP, s, CONST_STRING(INTERP, "L"));
}
/*
@@ -732,7 +1183,7 @@
MULTI PMC *add(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -741,7 +1192,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'add' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *add_int(INTVAL value, PMC *dest) {
@@ -756,14 +1207,14 @@
}
MULTI void i_add(Integer value) {
- bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_add(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_add' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_add_int(INTVAL value) {
@@ -788,7 +1239,7 @@
MULTI PMC *subtract(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -797,7 +1248,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'subtract' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
@@ -812,14 +1263,14 @@
}
MULTI void i_subtract(Integer value) {
- bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_subtract(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_subtract' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_subtract_int(INTVAL value) {
@@ -844,7 +1295,7 @@
MULTI PMC *multiply(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -853,7 +1304,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'multiply' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
@@ -867,13 +1318,13 @@
bigint_mul_bigint(INTERP, SELF, value, SELF);
}
MULTI void i_multiply(Integer value) {
- bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_multiply(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_multiply' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_multiply_int(INTVAL value) {
@@ -901,22 +1352,13 @@
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
bigint_div_bigint(INTERP, SELF, value, dest);
-#if 0
- /* to downgrade or not that's the question */
- GETATTR_BigInt_bi(interp, dest, bi);
- if (mpz_fits_slong_p(bi->b)) {
- long iresult = mpz_get_si(bi->b);
- VTABLE_morph(interp, dest, enum_class_Integer);
- VTABLE_set_integer_native(interp, dest, iresult);
- }
-#endif
return dest;
}
MULTI PMC *divide(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -925,7 +1367,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
@@ -939,13 +1381,13 @@
bigint_div_bigint(INTERP, SELF, value, SELF);
}
MULTI void i_divide(Integer value) {
- bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_divide(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_divide_int(INTVAL value) {
@@ -962,7 +1404,7 @@
MULTI PMC *floor_divide(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -971,7 +1413,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'floor_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
@@ -986,14 +1428,14 @@
}
MULTI void i_floor_divide(Integer value) {
- bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_floor_divide(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_floor_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_floor_divide_int(INTVAL value) {
@@ -1010,7 +1452,7 @@
MULTI PMC *modulus(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1019,20 +1461,20 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'modulus' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
MULTI void i_modulus(BigInt value) {
bigint_mod_bigint(INTERP, SELF, value, SELF);
}
MULTI void i_modulus(Integer value) {
- bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_modulus(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'i_modulus' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
MULTI INTVAL cmp(BigInt value) {
@@ -1040,14 +1482,14 @@
}
MULTI INTVAL cmp(Integer value) {
- return bigint_cmp_int(INTERP, SELF, VTABLE_get_integer(interp, value));
+ return bigint_cmp_int(INTERP, SELF, VTABLE_get_integer(INTERP, value));
}
MULTI INTVAL cmp(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'cmp' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
MULTI INTVAL is_equal(BigInt value) {
@@ -1055,14 +1497,14 @@
}
MULTI INTVAL is_equal(Integer value) {
- return bigint_cmp_int(INTERP, SELF, VTABLE_get_integer(interp, value)) == 0;
+ return bigint_cmp_int(INTERP, SELF, VTABLE_get_integer(INTERP, value)) == 0;
}
MULTI INTVAL is_equal(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigInt: no multiple dispatch variant 'is_equal' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
/*
Modified: branches/ops_pct/src/pmc/bignum.pmc
==============================================================================
--- branches/ops_pct/src/pmc/bignum.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/bignum.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -41,91 +41,112 @@
=over 4
-=item C<static void bignum_init(Interp*, PMC *self)>
+=item C<static void bignum_init(PARROT_INTERP, PMC *self)>
-=item C<static void bignum_clear(Interp*, PMC *self)>
+=item C<static void bignum_clear(PARROT_INTERP, PMC *self)>
-=item C<static void bignum_set(Interp*, PMC *dest, PMC *src)>
+=item C<static void bignum_set(PARROT_INTERP, PMC *dest, PMC *src)>
-=item C<static void bignum_set_si(Interp*, PMC *self, long value)>
+=item C<static void bignum_set_si(PARROT_INTERP, PMC *self, long value)>
-=item C<static void bignum_set_ui(Interp*, PMC *self, unsigned long value)>
+=item C<static void bignum_set_ui(PARROT_INTERP, PMC *self, unsigned long
+value)>
-=item C<static void bignum_set_float(Interp*, PMC *self, FLOATVAL value)>
+=item C<static void bignum_set_float(PARROT_INTERP, PMC *self, FLOATVAL value)>
-=item C<static void bignum_set_double(Interp*, PMC *self, double value)>
+=item C<static void bignum_set_double(PARROT_INTERP, PMC *self, double value)>
-=item C<static void bignum_set_str(Interp*, PMC *self, char *value, int base)>
+=item C<static void bignum_set_str(PARROT_INTERP, PMC *self, const char *value,
+int base)>
-=item C<static void bignum_set_bigint(Interp*, PMC *self, struct BIGINT *value)>
+=item C<static void bignum_set_bigint(PARROT_INTERP, PMC *self, struct BIGINT
+*value)>
-=item C<static BIGNUM* bignum_get_self(Interp*, PMC *self)>
+=item C<static BIGNUM* bignum_get_self(PARROT_INTERP, PMC *self)>
-=item C<static void bignum_set_self(Interp*, PMC *self, BIGNUM *value)>
+=item C<static void bignum_set_self(PARROT_INTERP, PMC *self, BIGNUM *value)>
-=item C<static long bignum_get_si(Interp*, PMC *self)>
+=item C<static long bignum_get_si(PARROT_INTERP, PMC *self)>
-=item C<static unsigned long bignum_get_ui(Interp*, PMC *self)>
+=item C<static unsigned long bignum_get_ui(PARROT_INTERP, PMC *self)>
-=item C<static int bignum_get_bool(Interp*, PMC *self)>
+=item C<static INTVAL bignum_get_bool(PARROT_INTERP, ARGIN(PMC *self))>
-=item C<static char* bignum_get_string(Interp*, PMC *self, int base)>
+=item C<static char * bignum_get_string(PARROT_INTERP, PMC *self, int base)>
-=item C<static char* bignum_get_string_size(Interp*, PMC *self, int base, int digits)>
+=item C<static char * bignum_get_string_size(PARROT_INTERP, PMC *self, int base,
+int digits)>
-=item C<static double bignum_get_double(Interp*, PMC *self)>
+=item C<static double bignum_get_double(PARROT_INTERP, PMC *self)>
-=item C<static FLOATVAL bignum_get_float(Interp*, PMC *self)>
+=item C<static FLOATVAL bignum_get_float(PARROT_INTERP, PMC *self)>
-=item C<static BIGINT bignum_get_bigint(Interp*, PMC *self)>
+=item C<static BIGINT bignum_get_bigint(Interp*, ARGIN(PMC *self))>
-=item C<static void bignum_add_bignum(Interp*, PMC *self, PMC *value, PMC *dest)>
+=item C<static void bignum_add_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
-=item C<static void bignum_add_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_add_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
-=item C<static void bignum_add_bignum_float(Interp*, PMC *self, FLOATVAL value, PMC *dest)>
+=item C<static void bignum_add_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL
+value, PMC *dest)>
-=item C<static void bignum_sub_bignum(Interp*, PMC *self, PMC *value, PMC *dest)>
+=item C<static void bignum_sub_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
-=item C<static void bignum_sub_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_sub_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
-=item C<static void bignum_sub_bignum_float(Interp*, PMC *self, FLOATVAL value, PMC *dest)>
+=item C<static void bignum_sub_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL
+value, PMC *dest)>
-=item C<static void bignum_mul_bignum(Interp*, PMC *self, PMC *value, PMC *dest)>
+=item C<static void bignum_mul_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
-=item C<static void bignum_mul_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_mul_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
-=item C<static void bignum_mul_bignum_float(Interp*, PMC *self, FLOATVAL value, PMC *dest)>
+=item C<static void bignum_mul_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL
+value, PMC *dest)>
-=item C<static void bignum_pow_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_pow_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
=item C<static void bignum_check_divide_zero(Interp*, PMC *value)>
-=item C<static void bignum_div_bignum(Interp*, PMC *self, PMC *value, PMC *dest)>
+=item C<static void bignum_div_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
-=item C<static void bignum_div_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_div_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
-=item C<static void bignum_div_bignum_float(Interp*, PMC *self, FLOATVAL value, PMC *dest)>
+=item C<static void bignum_div_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL
+value, PMC *dest)>
-=item C<static void bignum_fdiv_bignum(Interp*, PMC *self, PMC *value, PMC *dest)>
+=item C<static void bignum_fdiv_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC
+*dest)>
-=item C<static void bignum_fdiv_bignum_int(Interp*, PMC *self, INTVAL value, PMC *dest)>
+=item C<static void bignum_fdiv_bignum_int(PARROT_INTERP, PMC *self, INTVAL
+value, PMC *dest)>
-=item C<static INTVAL bignum_cmp(Interp*, PMC *self, PMC *value)>
+=item C<static INTVAL bignum_cmp(PARROT_INTERP, PMC *self, PMC *value)>
-=item C<static INTVAL bignum_cmp_double(Interp*, PMC *self, double value)>
+=item C<static INTVAL bignum_cmp_double(PARROT_INTERP, PMC *self, double value)>
-=item C<static INTVAL bignum_cmp_int(Interp*, PMC *self, INTVAL value)>
+=item C<static INTVAL bignum_cmp_int(PARROT_INTERP, PMC *self, INTVAL value)>
-=item C<static INTVAL bignum_cmp_ulong(Interp*, PMC *self, unsigned long value)>
+=item C<static INTVAL bignum_cmp_ulong(PARROT_INTERP, PMC *self, unsigned long
+value)>
-=item C<static void bignum_abs(Interp*, PMC *self, PMC *dest)>
+=item C<static void bignum_abs(PARROT_INTERP, PMC *self, PMC *dest)>
-=item C<static void bignum_neg(Interp*, PMC *self, PMC *dest)>
+=item C<static void bignum_neg(PARROT_INTERP, PMC *self, PMC *dest)>
-=item C<static INTVAL bignum_get_default_prec(Interp*, PMC *self)>
+=item C<static INTVAL bignum_get_default_prec(PARROT_INTERP, PMC *self)>
-=item C<static void bignum_set_default_prec(Interp*, PMC *self, INTVAL prec)>
+=item C<static void bignum_set_default_prec(PARROT_INTERP, PMC *self, INTVAL
+prec)>
=cut
@@ -135,13 +156,6 @@
# undef PARROT_HAS_GMP /* splint barfs on the gmp.h header */
#endif /* S_SPLINT_S */
-/* Uncomment to easily disable it */
-/*
-#ifdef PARROT_HAS_GMP
-# undef PARROT_HAS_GMP
-#endif
-*/
-#undef PARROT_BIGNUM_CAN_BIGINT
#ifdef PARROT_HAS_GMP
# include "pmc_bigint.h"
@@ -151,8 +165,421 @@
} BIGNUM;
#endif
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void bignum_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_add_bignum(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_add_bignum_float(PARROT_INTERP,
+ ARGIN(PMC *self),
+ FLOATVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_add_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_clear(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static INTVAL bignum_cmp(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static INTVAL bignum_cmp_double(PARROT_INTERP,
+ ARGIN(PMC *self),
+ double value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static INTVAL bignum_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static INTVAL bignum_cmp_ulong(PARROT_INTERP,
+ ARGIN(PMC *self),
+ unsigned long value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_div_bignum(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_div_bignum_float(PARROT_INTERP,
+ ARGIN(PMC *self),
+ FLOATVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_div_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_fdiv_bignum(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_fdiv_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static INTVAL bignum_get_default_prec(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static double bignum_get_double(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static FLOATVAL bignum_get_float(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static long bignum_get_si(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * bignum_get_string(PARROT_INTERP, ARGIN(PMC *self), int base)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * bignum_get_string_size(PARROT_INTERP,
+ ARGIN(PMC *self),
+ int base,
+ int digits)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static unsigned long bignum_get_ui(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_init(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_mul_bignum(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_mul_bignum_float(PARROT_INTERP,
+ ARGIN(PMC *self),
+ FLOATVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_mul_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_pow_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_set(PARROT_INTERP, ARGMOD(PMC *dest), ARGIN(PMC *src))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_set_default_prec(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL prec)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_set_double(PARROT_INTERP, ARGIN(PMC *self), double value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_set_float(PARROT_INTERP,
+ ARGIN(PMC *self),
+ FLOATVAL value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_set_si(PARROT_INTERP, ARGIN(PMC *self), long value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_set_str(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(const char *value),
+ int base)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static void bignum_set_ui(PARROT_INTERP,
+ ARGIN(PMC *self),
+ unsigned long value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void bignum_sub_bignum(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *value),
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_sub_bignum_float(PARROT_INTERP,
+ ARGIN(PMC *self),
+ FLOATVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+static void bignum_sub_bignum_int(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL value,
+ ARGMOD(PMC *dest))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+#define ASSERT_ARGS_bignum_abs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_add_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_add_bignum_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_add_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_clear __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_cmp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bignum_cmp_double __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_cmp_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_cmp_ulong __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_div_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_div_bignum_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_div_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_fdiv_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_fdiv_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_get_default_prec __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_double __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_si __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_get_ui __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_mul_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_mul_bignum_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_mul_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_neg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_pow_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(dest) \
+ , PARROT_ASSERT_ARG(src))
+#define ASSERT_ARGS_bignum_set_default_prec __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_set_double __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_set_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_set_si __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_set_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_bignum_set_ui __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_bignum_sub_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(value) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_sub_bignum_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+#define ASSERT_ARGS_bignum_sub_bignum_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(dest))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+/* Uncomment to easily disable it */
+/*
+#ifdef PARROT_HAS_GMP
+# undef PARROT_HAS_GMP
+#endif
+*/
+#undef PARROT_BIGNUM_CAN_BIGINT
+
static void
-bignum_init(PARROT_INTERP, PMC *self) {
+bignum_init(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_init)
+
#ifdef PARROT_HAS_GMP
BIGNUM * const bn = mem_gc_allocate_zeroed_typed(interp, BIGNUM);
SETATTR_BigNum_bn(interp, self, bn);
@@ -165,7 +592,9 @@
static void
-bignum_clear(PARROT_INTERP, PMC *self) {
+bignum_clear(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_clear)
+
#ifdef PARROT_HAS_GMP
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
@@ -178,7 +607,9 @@
#ifdef PARROT_HAS_GMP
static void
-bignum_set(PARROT_INTERP, PMC *dest, PMC *src) {
+bignum_set(PARROT_INTERP, ARGMOD(PMC *dest), ARGIN(PMC *src)) {
+ ASSERT_ARGS(bignum_set)
+
BIGNUM *bn_dest, *bn_src;
GETATTR_BigNum_bn(interp, dest, bn_dest);
GETATTR_BigNum_bn(interp, src, bn_src);
@@ -186,65 +617,56 @@
}
static void
-bignum_set_si(PARROT_INTERP, PMC *self, long value) {
+bignum_set_si(PARROT_INTERP, ARGIN(PMC *self), long value) {
+ ASSERT_ARGS(bignum_set_si)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
mpf_set_si(bn->b, value);
}
static void
-bignum_set_ui(PARROT_INTERP, PMC *self, unsigned long value) {
+bignum_set_ui(PARROT_INTERP, ARGIN(PMC *self), unsigned long value) {
+ ASSERT_ARGS(bignum_set_ui)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
mpf_set_ui(bn->b, value);
}
static void
-bignum_set_float(PARROT_INTERP, PMC *self, FLOATVAL value) {
+bignum_set_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value) {
+ ASSERT_ARGS(bignum_set_float)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
mpf_set_d(bn->b, (double)value);
}
static void
-bignum_set_double(PARROT_INTERP, PMC *self, double value) {
- BIGNUM *bn;
- GETATTR_BigNum_bn(interp, self, bn);
- mpf_set_d(bn->b, value);
-}
+bignum_set_double(PARROT_INTERP, ARGIN(PMC *self), double value) {
+ ASSERT_ARGS(bignum_set_double)
-static void
-bignum_set_str(PARROT_INTERP, PMC *self, char *value, int base) {
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
- mpf_set_str(bn->b, value, base);
+ mpf_set_d(bn->b, value);
}
-# ifdef PARROT_BIGNUM_CAN_BIGINT
static void
-bignum_set_bigint(PARROT_INTERP, PMC *self, struct BIGINT *value) {
- BIGNUM *bn;
- GETATTR_BigNum_bn(interp, self, bn);
- mpf_set(bn->b, (mpf_srcptr)value->b);
-}
-# endif
+bignum_set_str(PARROT_INTERP, ARGIN(PMC *self), ARGIN(const char *value), int base) {
+ ASSERT_ARGS(bignum_set_str)
-static BIGNUM*
-bignum_get_self(PARROT_INTERP, PMC *self) {
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
- return bn;
+ mpf_set_str(bn->b, value, base);
}
-static void
-bignum_set_self(PARROT_INTERP, PMC *self, BIGNUM *value) {
- BIGNUM *bn;
- GETATTR_BigNum_bn(interp, self, bn);
- mpf_set(bn->b, (mpf_srcptr)(value)->b);
-}
+PARROT_WARN_UNUSED_RESULT
static long
-bignum_get_si(PARROT_INTERP, PMC *self) {
+bignum_get_si(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_get_si)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
if (mpf_fits_slong_p(bn->b))
@@ -253,8 +675,11 @@
Parrot_ex_throw_from_c_args(interp, NULL, 1, "bignum_get_si: number too big");
}
+PARROT_WARN_UNUSED_RESULT
static unsigned long
-bignum_get_ui(PARROT_INTERP, PMC *self) {
+bignum_get_ui(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_get_ui)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
if (mpf_fits_slong_p(bn->b))
@@ -263,8 +688,9 @@
Parrot_ex_throw_from_c_args(interp, NULL, 1, "bignum_get_ui: number too big");
}
-static int
-bignum_get_bool(PARROT_INTERP, PMC *self) {
+PARROT_WARN_UNUSED_RESULT
+static INTVAL
+bignum_get_bool(PARROT_INTERP, ARGIN(PMC *self)) {
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
if (mpf_sgn(bn->b) != 0)
@@ -273,8 +699,12 @@
return 0;
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
static char *
-bignum_get_string(PARROT_INTERP, PMC *self, int base) {
+bignum_get_string(PARROT_INTERP, ARGIN(PMC *self), int base) {
+ ASSERT_ARGS(bignum_get_string)
+
BIGNUM *bn;
size_t n;
char *s;
@@ -286,10 +716,13 @@
return mpf_get_str(s, &exponent, base, 0, bn->b);
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
static char *
-bignum_get_string_size(PARROT_INTERP, PMC *self, int base, int digits) {
+bignum_get_string_size(PARROT_INTERP, ARGIN(PMC *self), int base, int digits) {
+ ASSERT_ARGS(bignum_get_string_size)
+
BIGNUM *bn;
- size_t n;
char *s;
mp_exp_t exponent;
@@ -298,41 +731,30 @@
return mpf_get_str(s, &exponent, base, digits, bn->b);
}
+PARROT_WARN_UNUSED_RESULT
static double
-bignum_get_double(PARROT_INTERP, PMC *self) {
+bignum_get_double(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_get_double)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
return mpf_get_d(bn->b);
}
+PARROT_WARN_UNUSED_RESULT
static FLOATVAL
-bignum_get_float(PARROT_INTERP, PMC *self) {
- BIGNUM *bn;
- GETATTR_BigNum_bn(interp, self, bn);
- return mpf_get_d(bn->b);
-}
+bignum_get_float(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_get_float)
-# ifdef PARROT_BIGNUM_CAN_BIGINT
-static struct BIGINT
-bignum_get_bigint(PARROT_INTERP, PMC *self) {
BIGNUM *bn;
- struct BIGINT *bi_dest;
GETATTR_BigNum_bn(interp, self, bn);
- mpz_clear(bi_dest->b);
- mpz_init(bi_dest->b);
- if (mpf_fits_slong_p(bn->b)) {
- bi_dest->b = mpf_get_ui(bn->b);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
- "bignum_get_bigint: Precision loss");
- }
- return bi_dest;
+ return mpf_get_d(bn->b);
}
-# endif
static void
-bignum_add_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_add_bignum(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_add_bignum)
+
BIGNUM *bn_self, *bn_value, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, value, bn_value);
@@ -341,7 +763,9 @@
}
static void
-bignum_add_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_add_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_add_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -352,7 +776,9 @@
}
static void
-bignum_add_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_add_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_add_bignum_float)
+
BIGNUM *bn_value, *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_value);
GETATTR_BigNum_bn(interp, self, bn_self);
@@ -362,7 +788,9 @@
}
static void
-bignum_sub_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_sub_bignum(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_sub_bignum)
+
BIGNUM *bn_self, *bn_value, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, value, bn_value);
@@ -371,7 +799,9 @@
}
static void
-bignum_sub_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_sub_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_sub_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -382,7 +812,9 @@
}
static void
-bignum_sub_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_sub_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_sub_bignum_float)
+
BIGNUM *bn_tmp, *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_tmp);
GETATTR_BigNum_bn(interp, self, bn_self);
@@ -392,7 +824,9 @@
}
static void
-bignum_mul_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_mul_bignum(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_mul_bignum)
+
BIGNUM *bn_self, *bn_value, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, value, bn_value);
@@ -401,7 +835,9 @@
}
static void
-bignum_mul_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_mul_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_mul_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -409,7 +845,9 @@
}
static void
-bignum_mul_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_mul_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_mul_bignum_float)
+
BIGNUM *bn_tmp, *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_tmp);
GETATTR_BigNum_bn(interp, self, bn_self);
@@ -419,7 +857,9 @@
}
static void
-bignum_pow_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_pow_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_pow_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -434,7 +874,7 @@
}
static void
-bignum_check_divide_zero(PARROT_INTERP, PMC *value) {
+bignum_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value)) {
/* Throw an exception if we are dividing by zero. */
BIGNUM *bn;
GETATTR_BigNum_bn(interp, value, bn);
@@ -444,7 +884,9 @@
}
static void
-bignum_div_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_div_bignum(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_div_bignum)
+
BIGNUM *bn_self, *bn_value, *bn_dest;
bignum_check_divide_zero(interp, value);
GETATTR_BigNum_bn(interp, self, bn_self);
@@ -454,7 +896,9 @@
}
static void
-bignum_div_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_div_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_div_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -470,7 +914,9 @@
}
static void
-bignum_div_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_div_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_div_bignum_float)
+
BIGNUM bn, *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -491,7 +937,9 @@
/* There's no such mpf_fdiv, only mpz_fdiv and mpf_div */
static void
-bignum_fdiv_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_fdiv_bignum(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_fdiv_bignum)
+
BIGNUM *bn_self, *bn_value, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, value, bn_value);
@@ -501,7 +949,9 @@
}
static void
-bignum_fdiv_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_fdiv_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_fdiv_bignum_int)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -516,7 +966,9 @@
}
static INTVAL
-bignum_cmp(PARROT_INTERP, PMC *self, PMC *value) {
+bignum_cmp(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *value)) {
+ ASSERT_ARGS(bignum_cmp)
+
BIGNUM *bn_self, *bn_value;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, value, bn_value);
@@ -524,28 +976,36 @@
}
static INTVAL
-bignum_cmp_double(PARROT_INTERP, PMC *self, double value) {
+bignum_cmp_double(PARROT_INTERP, ARGIN(PMC *self), double value) {
+ ASSERT_ARGS(bignum_cmp_double)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
return mpf_cmp_d(bn->b, value);
}
static INTVAL
-bignum_cmp_int(PARROT_INTERP, PMC *self, INTVAL value) {
+bignum_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value) {
+ ASSERT_ARGS(bignum_cmp_int)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
return mpf_cmp_si(bn->b, value);
}
static INTVAL
-bignum_cmp_ulong(PARROT_INTERP, PMC *self, unsigned long value) {
+bignum_cmp_ulong(PARROT_INTERP, ARGIN(PMC *self), unsigned long value) {
+ ASSERT_ARGS(bignum_cmp_ulong)
+
BIGNUM *bn;
GETATTR_BigNum_bn(interp, self, bn);
return mpf_cmp_ui(bn->b, value);
}
static void
-bignum_abs(PARROT_INTERP, PMC *self, PMC *dest) {
+bignum_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_abs)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -553,7 +1013,9 @@
}
static void
-bignum_neg(PARROT_INTERP, PMC *self, PMC *dest) {
+bignum_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest)) {
+ ASSERT_ARGS(bignum_neg)
+
BIGNUM *bn_self, *bn_dest;
GETATTR_BigNum_bn(interp, self, bn_self);
GETATTR_BigNum_bn(interp, dest, bn_dest);
@@ -561,213 +1023,252 @@
}
static INTVAL
-bignum_get_default_prec(PARROT_INTERP, PMC *self) {
+bignum_get_default_prec(PARROT_INTERP, ARGIN(PMC *self)) {
+ ASSERT_ARGS(bignum_get_default_prec)
+
return mpf_get_default_prec();
}
static void
-bignum_set_default_prec(PARROT_INTERP, PMC *self, INTVAL prec) {
+bignum_set_default_prec(PARROT_INTERP, ARGIN(PMC *self), INTVAL prec) {
+ ASSERT_ARGS(bignum_set_default_prec)
+
mpf_set_default_prec(prec);
}
-#else /* ifdef PARROT_HAS_GMP */
+/* HEADERIZER STOP */
+/* Don't headerize these BIGINT and BIGNUM funcs */
-typedef struct BIGNUM {
- FLOATVAL b; /* bogus definition for users without libgmp*/
-} BIGNUM;
-
-# define THROW_NYI Parrot_ex_throw_from_c_args(interp, NULL, \
- EXCEPTION_LIBRARY_ERROR, "no bignum lib loaded")
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static BIGNUM*
+bignum_get_self(PARROT_INTERP, ARGIN(PMC *self)) {
+ BIGNUM *bn;
+ GETATTR_BigNum_bn(interp, self, bn);
+ return bn;
+}
-# if 0
static void
-bignum_init(PARROT_INTERP, PMC *self) {
- THROW_NYI;
+bignum_set_self(PARROT_INTERP, ARGIN(PMC *self), ARGIN(BIGNUM *value)) {
+ BIGNUM *bn;
+ GETATTR_BigNum_bn(interp, self, bn);
+ mpf_set(bn->b, (mpf_srcptr)(value)->b);
+}
+
+
+# ifdef PARROT_BIGNUM_CAN_BIGINT
+PARROT_WARN_UNUSED_RESULT
+static struct BIGINT
+bignum_get_bigint(PARROT_INTERP, ARGIN(PMC *self)) {
+ BIGNUM *bn;
+ struct BIGINT *bi_dest;
+ GETATTR_BigNum_bn(interp, self, bn);
+ mpz_clear(bi_dest->b);
+ mpz_init(bi_dest->b);
+ if (mpf_fits_slong_p(bn->b)) {
+ bi_dest->b = mpf_get_ui(bn->b);
+ }
+ else {
+ Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ "bignum_get_bigint: Precision loss");
+ }
+ return bi_dest;
}
static void
-bignum_clear(PARROT_INTERP, PMC *self) {
- THROW_NYI;
+bignum_set_bigint(PARROT_INTERP, ARGIN(PMC *self), ARGIN(struct BIGINT *value)) {
+ BIGNUM *bn;
+ GETATTR_BigNum_bn(interp, self, bn);
+ mpf_set(bn->b, (mpf_srcptr)value->b);
}
# endif
+#else /* ifdef PARROT_HAS_GMP */
+
+typedef struct BIGNUM {
+ FLOATVAL b; /* bogus definition for users without libgmp*/
+} BIGNUM;
+
+# define THROW_NYI Parrot_ex_throw_from_c_args(interp, NULL, \
+ EXCEPTION_LIBRARY_ERROR, "no bignum lib loaded")
+
static void
-bignum_set(PARROT_INTERP, PMC *dest, PMC *src) {
+bignum_set(PARROT_INTERP, ARGMOD(PMC *dest), PMC *src) {
THROW_NYI;
}
static void
-bignum_set_si(PARROT_INTERP, PMC *self, long value) {
+bignum_set_si(PARROT_INTERP, ARGIN(PMC *self), long value) {
THROW_NYI;
}
static void
-bignum_set_double(PARROT_INTERP, PMC *self, double value) {
+bignum_set_double(PARROT_INTERP, ARGIN(PMC *self), double value) {
THROW_NYI;
}
static void
-bignum_set_str(PARROT_INTERP, PMC *self, char *value, int base) {
+bignum_set_str(PARROT_INTERP, ARGIN(PMC *self), const char *value, int base) {
THROW_NYI;
}
static void
-bignum_set_self(PARROT_INTERP, PMC *self, BIGNUM *value) {
+bignum_set_self(PARROT_INTERP, ARGIN(PMC *self), BIGNUM *value) {
THROW_NYI;
}
static BIGNUM*
-bignum_get_self(PARROT_INTERP, PMC *self) {
+bignum_get_self(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
static char *
-bignum_get_string(PARROT_INTERP, PMC *self, int base) {
+bignum_get_string(PARROT_INTERP, ARGIN(PMC *self), int base) {
THROW_NYI;
}
static char *
-bignum_get_string_size(PARROT_INTERP, PMC *self, int base, int digits) {
+bignum_get_string_size(PARROT_INTERP, ARGIN(PMC *self), int base, int digits) {
THROW_NYI;
}
static unsigned long
-bignum_get_ui(PARROT_INTERP, PMC *self) {
+bignum_get_ui(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
static long
-bignum_get_si(PARROT_INTERP, PMC *self) {
+bignum_get_si(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
-static long
-bignum_get_bool(PARROT_INTERP, PMC *self) {
+static INTVAL
+bignum_get_bool(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
static double
-bignum_get_double(PARROT_INTERP, PMC *self) {
+bignum_get_double(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
static void
-bignum_add_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_add_bignum(PARROT_INTERP, ARGIN(PMC *self), PMC *value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_add_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_add_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_add_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_add_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_sub_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_sub_bignum(PARROT_INTERP, ARGIN(PMC *self), PMC *value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_sub_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_sub_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_sub_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_sub_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_mul_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_mul_bignum(PARROT_INTERP, ARGIN(PMC *self), PMC *value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_mul_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_mul_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_mul_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_mul_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_pow_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_pow_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_pow_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_pow_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_div_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_div_bignum(PARROT_INTERP, ARGIN(PMC *self), PMC *value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_div_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_div_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_div_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_div_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_fdiv_bignum(PARROT_INTERP, PMC *self, PMC *value, PMC *dest) {
+bignum_fdiv_bignum(PARROT_INTERP, ARGIN(PMC *self), PMC *value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_fdiv_bignum_int(PARROT_INTERP, PMC *self, INTVAL value, PMC *dest) {
+bignum_fdiv_bignum_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_fdiv_bignum_float(PARROT_INTERP, PMC *self, FLOATVAL value, PMC *dest) {
+bignum_fdiv_bignum_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value, ARGMOD(PMC *dest)) {
THROW_NYI;
}
static INTVAL
-bignum_cmp(PARROT_INTERP, PMC *self, PMC *value) {
+bignum_cmp(PARROT_INTERP, ARGIN(PMC *self), PMC *value) {
THROW_NYI;
}
static INTVAL
-bignum_cmp_int(PARROT_INTERP, PMC *self, INTVAL value) {
+bignum_cmp_int(PARROT_INTERP, ARGIN(PMC *self), INTVAL value) {
THROW_NYI;
}
static INTVAL
-bignum_cmp_float(PARROT_INTERP, PMC *self, FLOATVAL value) {
+bignum_cmp_float(PARROT_INTERP, ARGIN(PMC *self), FLOATVAL value) {
THROW_NYI;
}
static void
-bignum_abs(PARROT_INTERP, PMC *self, PMC *dest) {
+bignum_abs(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest)) {
THROW_NYI;
}
static void
-bignum_neg(PARROT_INTERP, PMC *self, PMC *dest) {
+bignum_neg(PARROT_INTERP, ARGIN(PMC *self), ARGMOD(PMC *dest)) {
THROW_NYI;
}
static INTVAL
-bignum_get_default_prec(PARROT_INTERP, PMC *self) {
+bignum_get_default_prec(PARROT_INTERP, ARGIN(PMC *self)) {
THROW_NYI;
}
static void
-bignum_set_default_prec(PARROT_INTERP, PMC *self, INTVAL prec) {
+bignum_set_default_prec(PARROT_INTERP, ARGIN(PMC *self), INTVAL prec) {
THROW_NYI;
}
@@ -810,7 +1311,7 @@
}
VTABLE PMC *clone() {
- PMC *res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+ PMC * const res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
bignum_set(INTERP, res, SELF);
return res;
}
@@ -941,8 +1442,8 @@
#if PARROT_BIGNUM_CAN_BIGINT
return bignum_get_bigint(INTERP, SELF);
#else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
- "no bigint support in bigint");
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_LIBRARY_ERROR,
+ "no bigint support in bignum");
#endif
}
@@ -987,27 +1488,27 @@
VTABLE STRING *get_string() {
char *s = bignum_get_string(INTERP, SELF, 10);
STRING *ps = Parrot_str_new(INTERP, s, 0);
- mem_gc_free(interp, s);
+ mem_gc_free(INTERP, s);
return ps;
}
VTABLE STRING *get_string_keyed_int(INTVAL base) {
char *s = bignum_get_string(INTERP, SELF, base);
STRING *ps = Parrot_str_new(INTERP, s, 0);
- mem_gc_free(interp, s);
+ mem_gc_free(INTERP, s);
return ps;
}
VTABLE STRING *get_string_keyed_int_int(INTVAL base, INTVAL digits) {
char *s = bignum_get_string_size(INTERP, SELF, base, digits);
STRING *ps = Parrot_str_new(INTERP, s, 0);
- mem_gc_free(interp, s);
+ mem_gc_free(INTERP, s);
return ps;
}
VTABLE STRING *get_repr() {
STRING *s = SELF.get_string();
- return Parrot_str_append(INTERP, s, Parrot_str_new(interp, "N", 1));
+ return Parrot_str_concat(INTERP, s, Parrot_str_new(INTERP, "N", 1));
}
/*
@@ -1055,7 +1556,7 @@
MULTI PMC *add(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
- bignum_add_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bignum_add_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1063,7 +1564,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'add' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *add_int(INTVAL value, PMC *dest) {
@@ -1089,7 +1590,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'i_add' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_add_int(INTVAL value) {
@@ -1118,7 +1619,7 @@
MULTI PMC *subtract(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bignum_sub_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bignum_sub_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1126,7 +1627,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'subtract' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
@@ -1152,7 +1653,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'i_subtract' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_subtract_int(INTVAL value) {
@@ -1181,7 +1682,7 @@
MULTI PMC *multiply(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
- bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1189,7 +1690,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'multiply' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
@@ -1208,14 +1709,14 @@
}
MULTI void i_multiply(Integer value) {
- bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_multiply(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'i_multiply' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_multiply_int(INTVAL value) {
@@ -1258,26 +1759,16 @@
*/
MULTI PMC *divide(BigNum value, PMC *dest) {
- BIGNUM *bn;
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
bignum_div_bignum(INTERP, SELF, value, dest);
-#if 0
- /* to downgrade or not that's the question */
- GETATTR_BigNum_bn(interp, dest, bn);
- if (mpf_fits_slong_p(bn->b)) {
- long iresult = mpf_get_si(bn->b);
- VTABLE_morph(interp, dest, enum_class_Integer);
- VTABLE_set_integer_native(interp, dest, iresult);
- }
-#endif
return dest;
}
MULTI PMC *divide(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1285,7 +1776,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
@@ -1306,16 +1797,16 @@
bignum_div_bignum(INTERP, SELF, value, SELF);
}
MULTI void i_divide(Integer value) {
- bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_divide(Float value) {
- bignum_div_bignum_float(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bignum_div_bignum_float(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_divide(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'i_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_divide_int(INTVAL value) {
@@ -1340,7 +1831,7 @@
MULTI PMC *floor_divide(Integer value, PMC *dest) {
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
+ bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), dest);
return dest;
}
@@ -1348,7 +1839,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'floor_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
@@ -1363,14 +1854,14 @@
}
MULTI void i_floor_divide(Integer value) {
- bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), SELF);
+ bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
}
MULTI void i_floor_divide(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'i_floor_divide' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
VTABLE void i_floor_divide_int(INTVAL value) {
@@ -1390,14 +1881,14 @@
}
MULTI INTVAL cmp(Integer value) {
- return bignum_cmp_int(INTERP, SELF, VTABLE_get_integer(interp, value));
+ return bignum_cmp_int(INTERP, SELF, VTABLE_get_integer(INTERP, value));
}
MULTI INTVAL cmp(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'cmp' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
/*
@@ -1413,14 +1904,14 @@
}
MULTI INTVAL is_equal(Integer value) {
- return bignum_cmp_int(INTERP, SELF, VTABLE_get_integer(interp, value)) == 0;
+ return bignum_cmp_int(INTERP, SELF, VTABLE_get_integer(INTERP, value)) == 0;
}
MULTI INTVAL is_equal(DEFAULT value) {
Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
"BigNum: no multiple dispatch variant 'is_equal' for %Ss",
- VTABLE_name(interp, value));
+ VTABLE_name(INTERP, value));
}
/*
Modified: branches/ops_pct/src/pmc/boolean.pmc
==============================================================================
--- branches/ops_pct/src/pmc/boolean.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/boolean.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -21,6 +21,8 @@
*/
+/* HEADERIZER HFILE: none */
+
pmclass Boolean extends Integer provides boolean provides scalar auto_attrs {
/*
Modified: branches/ops_pct/src/pmc/callcontext.pmc
==============================================================================
--- branches/ops_pct/src/pmc/callcontext.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/callcontext.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2008-2009, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -27,166 +27,175 @@
INTVAL i;
FLOATVAL n;
} u;
- struct Pcc_cell *next;
+ INTVAL type;
} Pcc_cell;
-/* mask off lower two bits (1 + 2 = 3) for pointer tags */
-#define TAG_BITS 3
-#define UNTAG_CELL(c) INTVAL2PTR(Pcc_cell *, (PTR2INTVAL(c)) & ~TAG_BITS)
-
-#define CELL_INT(c) UNTAG_CELL(c)->u.i
-#define CELL_FLOAT(c) UNTAG_CELL(c)->u.n
-#define CELL_STRING(c) UNTAG_CELL(c)->u.s
-#define CELL_PMC(c) UNTAG_CELL(c)->u.p
-
-#define NEXT_CELL(c) UNTAG_CELL(c)->next
-#define FREE_CELL(i, c) \
- Parrot_gc_free_fixed_size_storage((i), sizeof (Pcc_cell), (UNTAG_CELL(c)))
-
-#define CELL_TYPE_MASK(c) (PTR2INTVAL(c)) & 3
-#define INTCELL 0
-#define FLOATCELL 1
-#define STRINGCELL 2
-#define PMCCELL 3
+#define NOCELL 0
+#define INTCELL 1
+#define FLOATCELL 2
+#define STRINGCELL 3
+#define PMCCELL 4
#define ALLOC_CELL(i) \
(Pcc_cell *)Parrot_gc_allocate_fixed_size_storage((i), sizeof (Pcc_cell))
-#define INIT_CELL_INT(c) INTVAL2PTR(Pcc_cell *, PTR2INTVAL(c) | INTCELL)
-#define INIT_CELL_FLOAT(c) INTVAL2PTR(Pcc_cell *, PTR2INTVAL(c) | FLOATCELL)
-#define INIT_CELL_STRING(c) INTVAL2PTR(Pcc_cell *, PTR2INTVAL(c) | STRINGCELL)
-#define INIT_CELL_PMC(c) INTVAL2PTR(Pcc_cell *, PTR2INTVAL(c) | PMCCELL)
-
-#define CREATE_INTVAL_CELL(i) INIT_CELL_INT(ALLOC_CELL(i))
-
-#define CREATE_FLOATVAL_CELL(i) INIT_CELL_FLOAT(ALLOC_CELL(i))
-
-#define CREATE_STRING_CELL(i) INIT_CELL_STRING(ALLOC_CELL(i))
-
-#define CREATE_PMC_CELL(i) INIT_CELL_PMC(ALLOC_CELL(i))
-
-#define APPEND_CELL(i, obj, cell) \
- do { \
- INTVAL num_positionals; \
- Pcc_cell *positionals; \
- GETATTR_CallContext_num_positionals((i), (obj), num_positionals); \
- GETATTR_CallContext_positionals((i), (obj), positionals); \
- SETATTR_CallContext_num_positionals((i), (obj), num_positionals+1); \
- NEXT_CELL(cell) = NULL; \
- if (positionals) { \
- while (NEXT_CELL(positionals)) { \
- positionals = NEXT_CELL(positionals); \
- } \
- NEXT_CELL(positionals) = (cell); \
- } \
- else \
- SETATTR_CallContext_positionals((i), (obj), (cell)); \
- } while (0)
-
-#define PREPEND_CELL(i, obj, cell) \
- do { \
- INTVAL num_positionals; \
- Pcc_cell *positionals; \
- GETATTR_CallContext_num_positionals((i), (obj), num_positionals); \
- GETATTR_CallContext_positionals((i), (obj), positionals); \
- SETATTR_CallContext_num_positionals((i), (obj), num_positionals+1); \
- NEXT_CELL(cell) = positionals; \
- SETATTR_CallContext_positionals((i), (obj), (cell)); \
- } while (0)
-
-#define HLL_TYPE(i) Parrot_get_ctx_HLL_type(interp, (i))
-
-/* TODO: could use get_cell_at */
-static Pcc_cell *
-pop_cell(PARROT_INTERP, ARGIN(PMC *SELF))
-{
- INTVAL num_positionals;
- Pcc_cell *cell;
- Pcc_cell *prev = NULL;
-
- GETATTR_CallContext_positionals(interp, SELF, cell);
-
- /* no cells */
- if (!cell)
- return NULL;
+#define FREE_CELL(i, c) \
+ Parrot_gc_free_fixed_size_storage((i), sizeof (Pcc_cell), (c))
- GETATTR_CallContext_num_positionals(interp, SELF, num_positionals);
- SETATTR_CallContext_num_positionals(interp, SELF, num_positionals-1);
+#define CELL_TYPE_MASK(c) (c)->type
- /* one cell */
- if (!NEXT_CELL(cell)) {
- SETATTR_CallContext_positionals(interp, SELF, NULL);
- return cell;
- }
+#define CELL_INT(c) (c)->u.i
+#define CELL_FLOAT(c) (c)->u.n
+#define CELL_STRING(c) (c)->u.s
+#define CELL_PMC(c) (c)->u.p
- while (cell) {
- if (!NEXT_CELL(cell)) {
- NEXT_CELL(prev) = NULL;
- return cell;
- }
-
- prev = cell;
- cell = NEXT_CELL(cell);
- }
+#define HLL_TYPE(i) Parrot_get_ctx_HLL_type(interp, (i))
- /* should abort here */
- SETATTR_CallContext_num_positionals(interp, SELF, num_positionals+1);
- return NULL;
-}
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static FLOATVAL autobox_floatval(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static INTVAL autobox_intval(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+static PMC * autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+static STRING * autobox_string(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void ensure_positionals_storage(PARROT_INTERP,
+ ARGIN(PMC *self),
+ INTVAL size)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+static Pcc_cell* get_cell_at(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+static Hash * get_hash(PARROT_INTERP, ARGIN(PMC *SELF))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_CAN_RETURN_NULL
+static PMC * get_named_names(PARROT_INTERP, ARGIN(PMC *SELF))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void mark_cell(PARROT_INTERP, ARGIN(Pcc_cell *c))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void mark_hash(PARROT_INTERP, ARGIN(Hash *h))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void mark_positionals(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_autobox_floatval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(cell))
+#define ASSERT_ARGS_autobox_intval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(cell))
+#define ASSERT_ARGS_autobox_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(cell))
+#define ASSERT_ARGS_autobox_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(cell))
+#define ASSERT_ARGS_ensure_positionals_storage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_get_cell_at __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_get_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF))
+#define ASSERT_ARGS_get_named_names __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF))
+#define ASSERT_ARGS_mark_cell __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_mark_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(h))
+#define ASSERT_ARGS_mark_positionals __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
-static Pcc_cell *
-shift_cell(PARROT_INTERP, ARGIN(PMC *SELF))
+static void
+ensure_positionals_storage(PARROT_INTERP, ARGIN(PMC *self), INTVAL size)
{
- INTVAL num_positionals;
- Pcc_cell *cell;
-
- GETATTR_CallContext_positionals(interp, SELF, cell);
-
- /* no cells */
- if (!cell)
- return NULL;
-
- GETATTR_CallContext_num_positionals(interp, SELF, num_positionals);
- SETATTR_CallContext_num_positionals(interp, SELF, num_positionals-1);
-
- /* one cell */
- if (!NEXT_CELL(cell))
- SETATTR_CallContext_positionals(interp, SELF, NULL);
- else
- SETATTR_CallContext_positionals(interp, SELF, NEXT_CELL(cell));
+ ASSERT_ARGS(ensure_positionals_storage)
+ INTVAL num_positionals, allocated_positionals;
+ Pcc_cell *array, *new_array;
- return cell;
-}
-
-static Pcc_cell *
-get_cell_at(PARROT_INTERP, ARGIN(PMC *SELF), INTVAL key)
-{
- INTVAL i, num_positionals;
- Pcc_cell *cell;
+ GETATTR_CallContext_allocated_positionals(interp, self, allocated_positionals);
- GETATTR_CallContext_num_positionals(interp, SELF, num_positionals);
+ if (size <= allocated_positionals)
+ return;
- if (key > num_positionals)
- return NULL;
+ if (size < 8)
+ size = 8;
- GETATTR_CallContext_positionals(interp, SELF, cell);
+ GETATTR_CallContext_positionals(interp, self, array);
- while (key) {
- /* XXX: shouldn't happen */
- if (!NEXT_CELL(cell))
- return NULL;
+ if (size > 8)
+ new_array = (Pcc_cell *)Parrot_gc_allocate_memory_chunk(interp,
+ size * sizeof (Pcc_cell));
+ else
+ new_array = (Pcc_cell *)Parrot_gc_allocate_fixed_size_storage(interp,
+ size * sizeof (Pcc_cell));
- cell = NEXT_CELL(cell);
- key--;
+ if (array) {
+ GETATTR_CallContext_num_positionals(interp, self, num_positionals);
+ memcpy(new_array, array, num_positionals * sizeof (Pcc_cell));
+
+ if (num_positionals > 8)
+ Parrot_gc_free_memory_chunk(interp, array);
+ else
+ Parrot_gc_free_fixed_size_storage(interp,
+ allocated_positionals * sizeof (Pcc_cell), array);
}
- return cell;
+ SETATTR_CallContext_allocated_positionals(interp, self, size);
+ SETATTR_CallContext_positionals(interp, self, new_array);
+}
+PARROT_CANNOT_RETURN_NULL
+static Pcc_cell*
+get_cell_at(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
+{
+ ASSERT_ARGS(get_cell_at)
+ Pcc_cell *cells;
+ ensure_positionals_storage(interp, self, key + 1);
+ GETATTR_CallContext_positionals(interp, self, cells);
+ return &cells[key];
}
static INTVAL
-autobox_intval(PARROT_INTERP, Pcc_cell *cell)
+autobox_intval(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
{
+ ASSERT_ARGS(autobox_intval)
switch (CELL_TYPE_MASK(cell)) {
case INTCELL:
return CELL_INT(cell);
@@ -207,8 +216,9 @@
}
static FLOATVAL
-autobox_floatval(PARROT_INTERP, Pcc_cell *cell)
+autobox_floatval(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
{
+ ASSERT_ARGS(autobox_floatval)
switch (CELL_TYPE_MASK(cell)) {
case INTCELL:
return (FLOATVAL)CELL_INT(cell);
@@ -228,9 +238,11 @@
return 0.0;
}
+PARROT_CANNOT_RETURN_NULL
static STRING *
-autobox_string(PARROT_INTERP, Pcc_cell *cell)
+autobox_string(PARROT_INTERP, ARGIN(const Pcc_cell *cell))
{
+ ASSERT_ARGS(autobox_string)
switch (CELL_TYPE_MASK(cell)) {
case INTCELL:
return Parrot_str_from_int(interp, CELL_INT(cell));
@@ -250,9 +262,11 @@
return NULL;
}
+PARROT_CANNOT_RETURN_NULL
static PMC *
-autobox_pmc(PARROT_INTERP, Pcc_cell *cell)
+autobox_pmc(PARROT_INTERP, ARGIN(Pcc_cell *cell))
{
+ ASSERT_ARGS(autobox_pmc)
PMC *result = PMCNULL;
switch (CELL_TYPE_MASK(cell)) {
@@ -269,7 +283,7 @@
VTABLE_set_string_native(interp, result, CELL_STRING(cell));
break;
case PMCCELL:
- return CELL_PMC(cell);
+ result = CELL_PMC(cell);
default:
/* exception */
break;
@@ -278,9 +292,11 @@
return result;
}
+PARROT_CANNOT_RETURN_NULL
static Hash *
get_hash(PARROT_INTERP, ARGIN(PMC *SELF))
{
+ ASSERT_ARGS(get_hash)
Hash *hash;
GETATTR_CallContext_hash(interp, SELF, hash);
@@ -299,33 +315,45 @@
}
static void
-mark_positionals(PARROT_INTERP, ARGIN(Pcc_cell *c))
+mark_cell(PARROT_INTERP, ARGIN(Pcc_cell *c))
{
- while (c) {
- switch (CELL_TYPE_MASK(c)) {
- case STRINGCELL:
+ ASSERT_ARGS(mark_cell)
+ switch (CELL_TYPE_MASK(c)) {
+ case STRINGCELL:
if (CELL_STRING(c))
Parrot_gc_mark_STRING_alive(interp, CELL_STRING(c));
break;
- case PMCCELL:
+ case PMCCELL:
if (!PMC_IS_NULL(CELL_PMC(c)))
Parrot_gc_mark_PMC_alive(interp, CELL_PMC(c));
break;
- case INTCELL:
- case FLOATCELL:
- default:
+ case INTCELL:
+ case FLOATCELL:
+ default:
break;
- }
-
- c = NEXT_CELL(c);
}
+
+}
+
+static void
+mark_positionals(PARROT_INTERP, ARGIN(PMC *self))
+{
+ ASSERT_ARGS(mark_positionals)
+ INTVAL size, i;
+ Pcc_cell *cells;
+
+ GETATTR_CallContext_num_positionals(interp, self, size);
+ GETATTR_CallContext_positionals(interp, self, cells);
+
+ for (i = 0; i < size; ++i)
+ mark_cell(interp, &cells[i]);
}
/* don't look now, but here goes encapsulation.... */
static void
mark_hash(PARROT_INTERP, ARGIN(Hash *h))
{
- UINTVAL entries = h->entries;
+ ASSERT_ARGS(mark_hash)
INTVAL i;
for (i = h->mask; i >= 0; --i) {
@@ -333,16 +361,17 @@
while (b) {
Parrot_gc_mark_STRING_alive(interp, (STRING *)b->key);
- mark_positionals(interp, (Pcc_cell *)b->value);
+ mark_cell(interp, (Pcc_cell *)b->value);
b = b->next;
}
-
}
}
+PARROT_CAN_RETURN_NULL
static PMC *
get_named_names(PARROT_INTERP, ARGIN(PMC *SELF))
{
+ ASSERT_ARGS(get_named_names)
Hash *hash;
PMC *result = PMCNULL;
@@ -351,10 +380,9 @@
/* yes, this *looks* risky, but it's a Parrot STRING hash internally */
if (hash && hash->entries) {
UINTVAL i, j = 0;
- result = Parrot_pmc_new(interp, enum_class_FixedStringArray);
- VTABLE_set_integer_native(interp, result, hash->entries);
+ result = Parrot_pmc_new_init_int(interp, enum_class_FixedStringArray, hash->entries);
- for (i = 0; i <= hash->mask; i++) {
+ for (i = 0; i <= hash->mask; ++i) {
HashBucket *b = hash->bi[i];
while (b) {
@@ -391,7 +419,6 @@
ATTR PMC *current_cont; /* the return continuation PMC */
ATTR PMC *current_object; /* current object if a method call */
ATTR PMC *current_namespace; /* The namespace we're currently in */
- ATTR PMC *results_signature; /* non-const results signature PMC */
ATTR opcode_t *current_pc; /* program counter of Sub invocation */
ATTR PMC *current_sig; /* temporary CallContext PMC for active call */
@@ -406,23 +433,17 @@
ATTR UINTVAL trace_flags;
ATTR UINTVAL recursion_depth; /* Sub call recursion depth */
- /* code->prederefed.code - code->base.data in opcodes
- * to simplify conversion between code ptrs in e.g. invoke */
- ATTR size_t pred_offset;
-
/* Storage for arguments */
- ATTR struct Pcc_cell *positionals; /* linked list of positionals */
+ ATTR struct Pcc_cell *positionals; /* array of positionals */
+ ATTR INTVAL num_positionals; /* count of used positionals */
+ ATTR INTVAL allocated_positionals;/* count of allocated positionals */
+
ATTR PMC *type_tuple; /* Cached argument types for MDD */
ATTR STRING *short_sig; /* Simple string sig args & returns */
ATTR PMC *arg_flags; /* Integer array of argument flags */
ATTR PMC *return_flags; /* Integer array of return flags */
ATTR Hash *hash; /* Hash of named arguments */
- ATTR INTVAL num_positionals; /* count of positionals */
- /* Storage for returns */
- ATTR void **returns_values; /* stored pointers */
- ATTR INTVAL returns_size; /* number of stored elements */
- ATTR INTVAL returns_resize_threshold; /* max size before resizing array */
/*
=item C<void init()>
@@ -437,11 +458,7 @@
SET_ATTR_type_tuple(INTERP, SELF, PMCNULL);
SET_ATTR_positionals(INTERP, SELF, NULL);
- SET_ATTR_returns_values(INTERP, SELF, NULL);
-
- SET_ATTR_returns_size(INTERP, SELF, 0);
SET_ATTR_num_positionals(INTERP, SELF, 0);
- SET_ATTR_returns_resize_threshold(INTERP, SELF, 0);
PObj_custom_mark_destroy_SETALL(SELF);
}
@@ -481,8 +498,7 @@
Parrot_gc_mark_PMC_alive(INTERP, arg_flags);
Parrot_gc_mark_PMC_alive(INTERP, return_flags);
- if (num_positionals)
- mark_positionals(INTERP, positionals);
+ mark_positionals(INTERP, SELF);
if (hash)
mark_hash(INTERP, hash);
@@ -511,9 +527,6 @@
GET_ATTR_current_namespace(INTERP, SELF, tmp);
Parrot_gc_mark_PMC_alive(INTERP, tmp);
- GET_ATTR_results_signature(INTERP, SELF, tmp);
- Parrot_gc_mark_PMC_alive(INTERP, tmp);
-
GET_ATTR_current_sig(INTERP, SELF, tmp);
Parrot_gc_mark_PMC_alive(INTERP, tmp);
@@ -523,49 +536,88 @@
GET_ATTR_bp_ps(INTERP, SELF, bp_ps);
for (i = 0; i < n_regs_used[REGNO_PMC]; ++i) {
- PMC *p = bp_ps.regs_p[-1L-(i)];
+ PMC * const p = bp_ps.regs_p[-1L-(i)];
/* Original code from CTX_REG_PMC */
if (p)
- Parrot_gc_mark_PMC_alive(interp, p);
+ Parrot_gc_mark_PMC_alive(INTERP, p);
}
for (i = 0; i < n_regs_used[REGNO_STR]; ++i) {
- STRING *s = bp_ps.regs_s[i];
+ STRING * const s = bp_ps.regs_s[i];
if (s)
- Parrot_gc_mark_STRING_alive(interp, s);
+ Parrot_gc_mark_STRING_alive(INTERP, s);
}
+ }
+/*
+
+=item C<void morph(PMC *type)>
+
+Morph the call signature into a return signature. (Currenly ignores
+the type passed in, and resets the named and positional arguments
+stored.)
+
+=cut
+
+*/
+ VTABLE void morph(PMC *type) {
+ Hash *hash;
+
+ if (!PMC_data(SELF))
+ return;
+
+ SET_ATTR_short_sig(INTERP, SELF, NULL);
+ SET_ATTR_arg_flags(INTERP, SELF, PMCNULL);
+ SET_ATTR_return_flags(INTERP, SELF, PMCNULL);
+ SET_ATTR_type_tuple(INTERP, SELF, PMCNULL);
+
+ /* Don't free positionals. Just reuse them */
+ SET_ATTR_num_positionals(INTERP, SELF, 0);
+
+ GET_ATTR_hash(INTERP, SELF, hash);
+
+ if (hash) {
+ UINTVAL i;
+
+ for (i = 0; i <= hash->mask; ++i) {
+ HashBucket *b = hash->bi[i];
+
+ while (b) {
+ FREE_CELL(INTERP, (Pcc_cell *)b->value);
+ b = b->next;
+ }
+ }
+
+ parrot_hash_destroy(INTERP, hash);
+ SET_ATTR_hash(INTERP, SELF, NULL);
+ }
}
VTABLE void destroy() {
- INTVAL num_positionals, returns_resize_threshold;
+ INTVAL allocated_positionals;
Hash *hash;
- void **returns_values;
if (!PMC_data(SELF))
return;
GET_ATTR_hash(INTERP, SELF, hash);
- GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
- GET_ATTR_returns_values(INTERP, SELF, returns_values);
- GET_ATTR_returns_resize_threshold(INTERP, SELF, returns_resize_threshold);
+ GET_ATTR_allocated_positionals(INTERP, SELF, allocated_positionals);
- if (num_positionals) {
+ if (allocated_positionals) {
Pcc_cell *c;
GET_ATTR_positionals(INTERP, SELF, c);
-
- while (c) {
- Pcc_cell *to_free = c;
- c = NEXT_CELL(c);
- FREE_CELL(INTERP, to_free);
- }
+ if (allocated_positionals > 8)
+ Parrot_gc_free_memory_chunk(INTERP, c);
+ else
+ Parrot_gc_free_fixed_size_storage(INTERP,
+ allocated_positionals * sizeof (Pcc_cell), c);
}
if (hash) {
UINTVAL i;
- for (i = 0; i <= hash->mask; i++) {
+ for (i = 0; i <= hash->mask; ++i) {
HashBucket *b = hash->bi[i];
while (b) {
@@ -577,15 +629,6 @@
parrot_hash_destroy(INTERP, hash);
}
- /* Destroy returns storage */
- if (returns_values) {
- if (returns_resize_threshold == 8)
- Parrot_gc_free_fixed_size_storage(INTERP,
- 8 * sizeof (void *), returns_values);
- else
- mem_gc_free(INTERP, returns_values);
- }
-
Parrot_pcc_free_registers(INTERP, SELF);
}
@@ -614,9 +657,9 @@
*/
VTABLE STRING *get_string() {
- INTVAL num_positionals;
STRING *res;
Pcc_cell *c;
+ INTVAL num_positionals, i;
GET_ATTR_short_sig(INTERP, SELF, res);
@@ -628,25 +671,24 @@
res = Parrot_str_new(INTERP, NULL, num_positionals);
- while (c) {
- switch (CELL_TYPE_MASK(c)) {
+ for (i = 0; i < num_positionals; ++i) {
+ switch (c[i].type) {
case INTCELL:
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "I"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "I"));
break;
case FLOATCELL:
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "N"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "N"));
break;
case STRINGCELL:
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "S"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "S"));
break;
case PMCCELL:
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "P"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "P"));
break;
default:
PARROT_FAILURE("Impossible flag");
break;
}
- c = NEXT_CELL(c);
}
/* TODO Add named args to signature */
/* After fixind build_MMD_type_tuple to use raw arguments instead of signature */
@@ -694,30 +736,28 @@
GET_ATTR_positionals(INTERP, SELF, c);
GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
- type_tuple = Parrot_pmc_new_init_int(interp,
+ type_tuple = Parrot_pmc_new_init_int(INTERP,
enum_class_FixedIntegerArray, num_positionals);
- while (c) {
+ for (i = 0; i < num_positionals; ++i) {
INTVAL type;
- switch (CELL_TYPE_MASK(c)) {
+ switch (c[i].type) {
case INTCELL: type = enum_type_INTVAL; break;
case FLOATCELL: type = enum_type_FLOATVAL; break;
case STRINGCELL: type = enum_type_STRING; break;
case PMCCELL:
- type = PMC_IS_NULL(CELL_PMC(c))
- ? enum_type_PMC
- : VTABLE_type(interp, CELL_PMC(c));
+ type = PMC_IS_NULL(c[i].u.p)
+ ? (INTVAL) enum_type_PMC
+ : VTABLE_type(INTERP, c[i].u.p);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Multiple Dispatch: invalid argument type!");
}
- VTABLE_set_integer_keyed_int(interp, type_tuple, i, type);
- i++;
- c = NEXT_CELL(c);
+ VTABLE_set_integer_keyed_int(INTERP, type_tuple, i, type);
}
SET_ATTR_type_tuple(INTERP, SELF, type_tuple);
@@ -763,11 +803,9 @@
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "return_flags"))) {
SET_ATTR_return_flags(INTERP, SELF, value);
}
- else {
- /* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
- "No such attribute '%S'", key);
- }
+ else
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_ATTRIB_NOT_FOUND, "No such attribute '%S'", key);
}
/*
@@ -860,8 +898,6 @@
GET_ATTR_current_namespace(INTERP, SELF, value);
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "handlers")))
GET_ATTR_handlers(INTERP, SELF, value);
- else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "results_signature")))
- GET_ATTR_results_signature(INTERP, SELF, value);
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "current_HLL"))) {
/* This function from src/hash.c. */
/* We probably have to move it to more suitable place */
@@ -872,11 +908,9 @@
GET_ATTR_current_HLL(INTERP, SELF, hll);
value = get_string_pmc(INTERP, Parrot_get_HLL_name(INTERP, hll));
}
- else {
- /* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
- "No such attribute '%S'", key);
- }
+ else
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_ATTRIB_NOT_FOUND, "No such attribute '%S'", key);
return value;
}
@@ -893,371 +927,336 @@
}
VTABLE void push_integer(INTVAL value) {
- Pcc_cell *cell = CREATE_INTVAL_CELL(INTERP);
- APPEND_CELL(INTERP, SELF, cell);
- CELL_INT(cell) = value;
+ Pcc_cell *cells;
+ INTVAL num_pos, allocated_positionals;
+
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ GET_ATTR_allocated_positionals(INTERP, SELF, allocated_positionals);
+
+ if (num_pos + 1 > allocated_positionals)
+ ensure_positionals_storage(INTERP, SELF, num_pos + 1);
+
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ cells[num_pos].u.i = value;
+ cells[num_pos].type = INTCELL;
+ SET_ATTR_num_positionals(INTERP, SELF, num_pos + 1);
}
VTABLE void push_float(FLOATVAL value) {
- Pcc_cell *cell = CREATE_FLOATVAL_CELL(INTERP);
- APPEND_CELL(INTERP, SELF, cell);
- CELL_FLOAT(cell) = value;
+ Pcc_cell *cells;
+ INTVAL num_pos;
+
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ ensure_positionals_storage(INTERP, SELF, num_pos + 1);
+
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ cells[num_pos].u.n = value;
+ cells[num_pos].type = FLOATCELL;
+ SET_ATTR_num_positionals(INTERP, SELF, num_pos + 1);
}
VTABLE void push_string(STRING *value) {
- Pcc_cell *cell = CREATE_STRING_CELL(INTERP);
- APPEND_CELL(INTERP, SELF, cell);
- CELL_STRING(cell) = value;
+ Pcc_cell *cells;
+ INTVAL num_pos;
+
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ ensure_positionals_storage(INTERP, SELF, num_pos + 1);
+
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ cells[num_pos].u.s = value;
+ cells[num_pos].type = STRINGCELL;
+ SET_ATTR_num_positionals(INTERP, SELF, num_pos + 1);
}
VTABLE void push_pmc(PMC *value) {
- Pcc_cell *cell = CREATE_PMC_CELL(INTERP);
- APPEND_CELL(INTERP, SELF, cell);
- CELL_PMC(cell) = value;
- }
+ Pcc_cell *cells;
+ INTVAL num_pos, allocated_positionals;
- VTABLE INTVAL pop_integer() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
-
- if (cell) {
- INTVAL result = autobox_intval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ GET_ATTR_allocated_positionals(INTERP, SELF, allocated_positionals);
- return 0;
- }
+ if (num_pos + 1 > allocated_positionals)
+ ensure_positionals_storage(INTERP, SELF, num_pos + 1);
- VTABLE FLOATVAL pop_float() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ cells[num_pos].u.p = value;
+ cells[num_pos].type = PMCCELL;
+ SET_ATTR_num_positionals(INTERP, SELF, num_pos + 1);
+ }
- if (cell) {
- FLOATVAL result = autobox_floatval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ /*
+ TODO It's very naive implementation. But we do unshift _once_ only.
+ So, for speed sake, allocate _one_ Cell upfront. Or store it independent.
+ */
- return 0.0;
+ VTABLE void unshift_pmc(PMC *value) {
+ Pcc_cell *cells;
+ const INTVAL size = STATICSELF.elements();
+ INTVAL i;
+
+ ensure_positionals_storage(INTERP, SELF, size + 1);
+ GET_ATTR_positionals(INTERP, SELF, cells);
+
+ for (i = size; i; --i)
+ cells[i] = cells[i - 1];
+
+ cells[0].u.p = value;
+ cells[0].type = PMCCELL;
+ SET_ATTR_num_positionals(INTERP, SELF, size + 1);
}
- VTABLE PMC * pop_pmc() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
+ VTABLE PMC * shift_pmc() {
+ Pcc_cell *cells;
+ PMC *retval;
+ const INTVAL size = STATICSELF.elements();
+ INTVAL i;
+
+ if (size < 1)
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Cannot shift PMC from empty CallContext");
+
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ retval = autobox_pmc(INTERP, &cells[0]);
- if (cell) {
- PMC *result = autobox_pmc(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ for (i = 1; i < size; ++i)
+ cells[i - 1] = cells[i];
- return PMCNULL;
+ SET_ATTR_num_positionals(INTERP, SELF, size - 1);
+ return retval;
}
- VTABLE STRING * pop_string() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
+ VTABLE STRING * shift_string() {
+ Pcc_cell *cells;
+ STRING *retval;
+ const INTVAL size = STATICSELF.elements();
+ INTVAL i;
+
+ if (size < 1)
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "Cannot shift PMC from empty CallContext");
- if (cell) {
- STRING *result = autobox_string(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ retval = autobox_string(INTERP, &cells[0]);
- return NULL;
+ for (i = 1; i < size; ++i)
+ cells[i - 1] = cells[i];
+
+ SET_ATTR_num_positionals(INTERP, SELF, size - 1);
+ return retval;
}
VTABLE INTVAL get_integer_keyed_int(INTVAL key) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
+ Pcc_cell *cells;
+ INTVAL num_pos;
- if (!cell)
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ if (key >= num_pos || key < 0)
return 0;
- return autobox_intval(INTERP, cell);
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ return autobox_intval(INTERP, &cells[key]);
}
VTABLE FLOATVAL get_number_keyed_int(INTVAL key) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
+ Pcc_cell *cells;
+ INTVAL num_pos;
- if (!cell)
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ if (key >= num_pos || key < 0)
return 0.0;
- return autobox_floatval(INTERP, cell);
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ return autobox_floatval(INTERP, &cells[key]);
}
VTABLE STRING * get_string_keyed_int(INTVAL key) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
+ Pcc_cell *cells;
+ INTVAL num_pos;
- if (!cell)
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ if (key >= num_pos || key < 0)
return NULL;
- return autobox_string(INTERP, cell);
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ return autobox_string(INTERP, &cells[key]);
}
VTABLE PMC * get_pmc_keyed_int(INTVAL key) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
+ Pcc_cell *cells;
+ INTVAL num_pos;
- if (!cell)
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ if (key >= num_pos || key < 0)
return PMCNULL;
- return autobox_pmc(INTERP, cell);
- }
-
- VTABLE void unshift_integer(INTVAL value) {
- Pcc_cell *cell = CREATE_INTVAL_CELL(INTERP);
- PREPEND_CELL(INTERP, SELF, cell);
- CELL_INT(cell) = value;
- }
-
- VTABLE void unshift_float(FLOATVAL value) {
- Pcc_cell *cell = CREATE_FLOATVAL_CELL(INTERP);
- PREPEND_CELL(INTERP, SELF, cell);
- CELL_FLOAT(cell) = value;
- }
-
- VTABLE void unshift_string(STRING *value) {
- Pcc_cell *cell = CREATE_STRING_CELL(INTERP);
- PREPEND_CELL(INTERP, SELF, cell);
- CELL_STRING(cell) = value;
- }
-
- VTABLE void unshift_pmc(PMC *value) {
- Pcc_cell *cell = CREATE_PMC_CELL(INTERP);
- PREPEND_CELL(INTERP, SELF, cell);
- CELL_PMC(cell) = value;
- }
-
- VTABLE INTVAL shift_integer() {
- Pcc_cell *cell = shift_cell(INTERP, SELF);
-
- if (cell) {
- INTVAL result = autobox_intval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
-
- return 0;
- }
-
- VTABLE FLOATVAL shift_float() {
- Pcc_cell *cell = shift_cell(INTERP, SELF);
-
- if (cell) {
- FLOATVAL result = autobox_floatval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
-
- return 0.0;
- }
-
- VTABLE STRING * shift_string() {
- Pcc_cell *cell = shift_cell(INTERP, SELF);
-
- if (cell) {
- STRING *result = autobox_string(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
-
- return NULL;
- }
-
- VTABLE PMC * shift_pmc() {
- Pcc_cell *cell = shift_cell(INTERP, SELF);
-
- if (cell) {
- PMC *result = autobox_pmc(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
-
- return PMCNULL;
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ return autobox_pmc(INTERP, &cells[key]);
}
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
-
- if (!cell) {
- INTVAL num_positionals;
+ Pcc_cell * const cell = get_cell_at(INTERP, SELF, key);
+ INTVAL pos;
- GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
+ cell->u.i = value;
+ cell->type = INTCELL;
- if (key == num_positionals)
- VTABLE_push_integer(INTERP, SELF, value);
-
- /* XXX: else throw exception? */
- return;
- }
-
- CELL_INT(cell) = value;
+ GET_ATTR_num_positionals(INTERP, SELF, pos);
+ if (pos <= key)
+ SET_ATTR_num_positionals(INTERP, SELF, key + 1);
}
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
-
- if (!cell) {
- INTVAL num_positionals;
+ Pcc_cell * const cell = get_cell_at(INTERP, SELF, key);
+ INTVAL pos;
- GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
-
- if (key == num_positionals)
- VTABLE_push_float(INTERP, SELF, value);
+ cell->u.n = value;
+ cell->type = FLOATCELL;
- /* XXX: else throw exception? */
- return;
- }
-
- CELL_FLOAT(cell) = value;
+ GET_ATTR_num_positionals(INTERP, SELF, pos);
+ if (pos <= key)
+ SET_ATTR_num_positionals(INTERP, SELF, key + 1);
}
VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
-
- if (!cell) {
- INTVAL num_positionals;
-
- GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
+ Pcc_cell * const cell = get_cell_at(INTERP, SELF, key);
+ INTVAL pos;
- if (key == num_positionals)
- VTABLE_push_string(INTERP, SELF, value);
+ cell->u.s = value;
+ cell->type = STRINGCELL;
- /* XXX: else throw exception? */
- return;
- }
-
- CELL_STRING(cell) = value;
+ GET_ATTR_num_positionals(INTERP, SELF, pos);
+ if (pos <= key)
+ SET_ATTR_num_positionals(INTERP, SELF, key + 1);
}
VTABLE void set_pmc_keyed_int(INTVAL key, PMC *value) {
- Pcc_cell *cell = get_cell_at(INTERP, SELF, key);
+ INTVAL pos;
+ Pcc_cell * const cell = get_cell_at(INTERP, SELF, key);
- if (!cell) {
- INTVAL num_positionals;
-
- GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
+ cell->u.p = value;
+ cell->type = PMCCELL;
- if (key == num_positionals)
- VTABLE_push_pmc(INTERP, SELF, value);
-
- /* XXX: else throw exception? */
- return;
- }
-
- CELL_PMC(cell) = value;
+ GET_ATTR_num_positionals(INTERP, SELF, pos);
+ if (pos <= key)
+ SET_ATTR_num_positionals(INTERP, SELF, key + 1);
}
VTABLE void set_integer_keyed_str(STRING *key, INTVAL value) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, (void *)key);
if (!cell) {
- cell = CREATE_INTVAL_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_INT(cell) = value;
+ cell->u.i = value;
+ cell->type = INTCELL;
}
VTABLE void set_number_keyed_str(STRING *key, FLOATVAL value) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, (void *)key);
if (!cell) {
- cell = CREATE_FLOATVAL_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_FLOAT(cell) = value;
+ cell->u.n = value;
+ cell->type = FLOATCELL;
}
VTABLE void set_string_keyed_str(STRING *key, STRING *value) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, (void *)key);
if (!cell) {
- cell = CREATE_STRING_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_STRING(cell) = value;
+ cell->u.s = value;
+ cell->type = STRINGCELL;
}
VTABLE void set_pmc_keyed_str(STRING *key, PMC *value) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, (void *)key);
if (!cell) {
- cell = CREATE_PMC_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_PMC(cell) = value;
+ cell->u.p = value;
+ cell->type = PMCCELL;
}
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
- Hash *hash = get_hash(INTERP, SELF);
- void *k = hash_key_from_pmc(INTERP, hash, key);
+ Hash * const hash = get_hash(INTERP, SELF);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (!cell) {
- cell = CREATE_INTVAL_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, k, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_INT(cell) = value;
+ cell->u.i = value;
+ cell->type = INTCELL;
}
VTABLE void set_number_keyed(PMC *key, FLOATVAL value) {
- Hash *hash = get_hash(INTERP, SELF);
- void *k = hash_key_from_pmc(INTERP, hash, key);
+ Hash * const hash = get_hash(INTERP, SELF);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (!cell) {
- cell = CREATE_FLOATVAL_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, k, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_FLOAT(cell) = value;
+ cell->u.n = value;
+ cell->type = FLOATCELL;
}
VTABLE void set_string_keyed(PMC *key, STRING *value) {
- Hash *hash = get_hash(INTERP, SELF);
- void *k = hash_key_from_pmc(INTERP, hash, key);
+ Hash * const hash = get_hash(INTERP, SELF);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (!cell) {
- cell = CREATE_STRING_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, k, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_STRING(cell) = value;
+ cell->u.s = value;
+ cell->type = STRINGCELL;
}
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
- Hash *hash = get_hash(INTERP, SELF);
- void *k = hash_key_from_pmc(INTERP, hash, key);
+ Hash * const hash = get_hash(INTERP, SELF);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (!cell) {
- cell = CREATE_PMC_CELL(INTERP);
+ cell = ALLOC_CELL(INTERP);
parrot_hash_put(INTERP, hash, k, (void *)cell);
- NEXT_CELL(cell) = NULL;
}
- CELL_PMC(cell) = value;
+ cell->u.p = value;
+ cell->type = PMCCELL;
}
VTABLE INTVAL get_integer_keyed_str(STRING *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_string(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_string(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_intval(INTERP, cell);
@@ -1267,11 +1266,11 @@
}
VTABLE FLOATVAL get_number_keyed_str(STRING *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_string(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_string(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_floatval(INTERP, cell);
@@ -1282,11 +1281,11 @@
VTABLE STRING * get_string_keyed_str(STRING *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_string(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_string(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_string(INTERP, cell);
@@ -1296,11 +1295,11 @@
}
VTABLE PMC * get_pmc_keyed_str(STRING *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_string(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_string(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_pmc(INTERP, cell);
@@ -1310,11 +1309,11 @@
}
VTABLE INTVAL get_integer_keyed(PMC *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_pmc(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_intval(INTERP, cell);
@@ -1324,11 +1323,11 @@
}
VTABLE FLOATVAL get_number_keyed(PMC *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_pmc(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_floatval(INTERP, cell);
@@ -1338,11 +1337,11 @@
}
VTABLE STRING * get_string_keyed(PMC *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_pmc(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_string(INTERP, cell);
@@ -1352,11 +1351,11 @@
}
VTABLE PMC * get_pmc_keyed(PMC *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_pmc(INTERP, hash, key);
- Pcc_cell *cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
+ Pcc_cell * const cell = (Pcc_cell *)parrot_hash_get(INTERP, hash, k);
if (cell)
return autobox_pmc(INTERP, cell);
@@ -1366,10 +1365,10 @@
}
VTABLE INTVAL exists_keyed(PMC *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_pmc(INTERP, hash, key);
+ void * const k = hash_key_from_pmc(INTERP, hash, key);
return parrot_hash_exists(INTERP, hash, k);
}
@@ -1377,10 +1376,10 @@
}
VTABLE INTVAL exists_keyed_str(STRING *key) {
- Hash *hash = get_hash(INTERP, SELF);
+ Hash * const hash = get_hash(INTERP, SELF);
if (hash) {
- void *k = hash_key_from_string(INTERP, hash, key);
+ void * const k = hash_key_from_string(INTERP, hash, key);
return parrot_hash_exists(INTERP, hash, k);
}
@@ -1408,61 +1407,30 @@
*/
VTABLE PMC *clone() {
- Pcc_cell *cell;
STRING *short_sig;
PMC *type_tuple, *arg_flags, *return_flags;
- PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
-
- GET_ATTR_positionals(INTERP, SELF, cell);
-
- /* Copy all positional cells (thanks to APPEND_CELL, this also
- * sets num_positionals). */
- for (; cell; cell = NEXT_CELL(cell)) {
- Pcc_cell *cloned_cell;
-
- switch (CELL_TYPE_MASK(cell)) {
- case INTCELL:
- cloned_cell = CREATE_INTVAL_CELL(INTERP);
- CELL_INT(cloned_cell) = CELL_INT(cell);
- break;
- case FLOATCELL:
- cloned_cell = CREATE_FLOATVAL_CELL(INTERP);
- CELL_FLOAT(cloned_cell) = CELL_FLOAT(cell);
- break;
- case STRINGCELL:
- cloned_cell = CREATE_STRING_CELL(INTERP);
- CELL_STRING(cloned_cell) = CELL_STRING(cell);
- break;
- case PMCCELL:
- cloned_cell = CREATE_PMC_CELL(INTERP);
- CELL_PMC(cloned_cell) = CELL_PMC(cell);
- break;
- default:
- break;
- }
- APPEND_CELL(INTERP, dest, cloned_cell);
- }
-
+ PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+ INTVAL num;
+ Pcc_cell *our_cells, *dest_cells;
+
+ GET_ATTR_num_positionals(INTERP, SELF, num);
+ /* Copy positionals */
+ ensure_positionals_storage(INTERP, dest, num);
+ GET_ATTR_positionals(INTERP, SELF, our_cells);
+ GET_ATTR_positionals(INTERP, dest, dest_cells);
+ memcpy(dest_cells, our_cells, num * sizeof (Pcc_cell));
+ SET_ATTR_num_positionals(INTERP, dest, num);
GET_ATTR_type_tuple(INTERP, SELF, type_tuple);
GET_ATTR_short_sig(INTERP, SELF, short_sig);
GET_ATTR_arg_flags(INTERP, SELF, arg_flags);
GET_ATTR_return_flags(INTERP, SELF, return_flags);
- /* FIXME
- PMC *results;
-
- GET_ATTR_results(INTERP, SELF, results);
-
- if (!PMC_IS_NULL(results))
- SET_ATTR_results(INTERP, dest, VTABLE_clone(INTERP, results));
- */
-
if (!PMC_IS_NULL(type_tuple))
SET_ATTR_type_tuple(INTERP, dest, VTABLE_clone(INTERP, type_tuple));
if (short_sig)
- SET_ATTR_short_sig(INTERP, dest, Parrot_str_copy(INTERP, short_sig));
+ SET_ATTR_short_sig(INTERP, dest, short_sig);
if (!PMC_IS_NULL(arg_flags))
SET_ATTR_arg_flags(INTERP, dest, VTABLE_clone(INTERP, arg_flags));
@@ -1476,7 +1444,6 @@
return dest;
}
-
/*
=item C<PMC *backtrace>
@@ -1493,48 +1460,48 @@
*/
METHOD backtrace(PMC *resume :optional, INTVAL has_resume :opt_flag) {
- PMC *result = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ PMC *result = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
PMC *cur_ctx = SELF;
- Parrot_Continuation_attributes *cont = has_resume ? PMC_cont(resume) : NULL;
+ Parrot_Continuation_attributes * const cont = has_resume ? PMC_cont(resume) : NULL;
/* Get starting context, then loop over them. */
while (cur_ctx) {
- PMC *frame = Parrot_pmc_new(interp, enum_class_Hash);
+ PMC * const frame = Parrot_pmc_new(INTERP, enum_class_Hash);
PMC *annotations = NULL;
Parrot_Sub_attributes *sub;
/* Get sub and put it in the hash. */
- PMC *sub_pmc = Parrot_pcc_get_sub(interp, cur_ctx);
+ PMC *sub_pmc = Parrot_pcc_get_sub(INTERP, cur_ctx);
if (!sub_pmc)
sub_pmc = PMCNULL;
- VTABLE_set_pmc_keyed_str(interp, frame, CONST_STRING(interp, "sub"), sub_pmc);
+ VTABLE_set_pmc_keyed_str(INTERP, frame, CONST_STRING(INTERP, "sub"), sub_pmc);
/* Look up any annotations and put them in the hash. */
if (!PMC_IS_NULL(sub_pmc)) {
- PMC_get_sub(interp, sub_pmc, sub);
+ PMC_get_sub(INTERP, sub_pmc, sub);
if (sub->seg->annotations) {
PackFile_ByteCode *seg = sub->seg;
opcode_t *pc = cont && cur_ctx == cont->to_ctx
? cont->address
- : Parrot_pcc_get_pc(interp, cur_ctx);
+ : Parrot_pcc_get_pc(INTERP, cur_ctx);
- annotations = PackFile_Annotations_lookup(interp,
+ annotations = PackFile_Annotations_lookup(INTERP,
seg->annotations, pc - seg->base.data,
NULL);
}
}
if (!annotations)
- annotations = Parrot_pmc_new(interp, enum_class_Hash);
+ annotations = Parrot_pmc_new(INTERP, enum_class_Hash);
- VTABLE_set_pmc_keyed_str(interp, frame, CONST_STRING(interp, "annotations"), annotations);
+ VTABLE_set_pmc_keyed_str(INTERP, frame, CONST_STRING(INTERP, "annotations"), annotations);
/* Push frame and go to next caller. */
- VTABLE_push_pmc(interp, result, frame);
- cur_ctx = Parrot_pcc_get_caller_ctx(interp, cur_ctx);
+ VTABLE_push_pmc(INTERP, result, frame);
+ cur_ctx = Parrot_pcc_get_caller_ctx(INTERP, cur_ctx);
}
RETURN(PMC *result);
Modified: branches/ops_pct/src/pmc/capture.pmc
==============================================================================
--- branches/ops_pct/src/pmc/capture.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/capture.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -18,6 +18,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
#define CAPTURE_array_CREATE(i, obj) \
do { \
GETATTR_Capture_array((i), (obj), array); \
Modified: branches/ops_pct/src/pmc/class.pmc
==============================================================================
--- branches/ops_pct/src/pmc/class.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/class.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -62,7 +62,7 @@
=item C<vtable_overrides>
-A directory of vtable method names and method bodies this class overrides.
+A directory of vtable function names and method bodies this class overrides.
An empty Hash PMC is allocated during initialization.
=item C<attrib_metadata>
@@ -94,10 +94,93 @@
#include "pmc/pmc_object.h"
#include "pmc/pmc_namespace.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void build_attrib_index(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static int cache_class_attribs(PARROT_INTERP,
+ ARGIN(PMC *cur_class),
+ ARGIN(PMC *attrib_index),
+ ARGIN(PMC *cache),
+ int cur_index)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+static void calculate_mro(PARROT_INTERP,
+ ARGIN(PMC *SELF),
+ INTVAL num_parents)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void init_class_from_hash(PARROT_INTERP,
+ ARGMOD(PMC *self),
+ ARGIN_NULLOK(PMC *info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+static void initialize_parents(PARROT_INTERP,
+ ARGIN(PMC *object),
+ ARGIN(PMC *all_parents))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static void initialize_parents_pmc(PARROT_INTERP,
+ ARGIN(PMC *object),
+ ARGIN(PMC *all_parents),
+ ARGIN(PMC *init))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+PARROT_CANNOT_RETURN_NULL
+static STRING * make_class_name(PARROT_INTERP, ARGIN(PMC *SELF))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_build_attrib_index __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_cache_class_attribs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(cur_class) \
+ , PARROT_ASSERT_ARG(attrib_index) \
+ , PARROT_ASSERT_ARG(cache))
+#define ASSERT_ARGS_calculate_mro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF))
+#define ASSERT_ARGS_init_class_from_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_initialize_parents __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(object) \
+ , PARROT_ASSERT_ARG(all_parents))
+#define ASSERT_ARGS_initialize_parents_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(object) \
+ , PARROT_ASSERT_ARG(all_parents) \
+ , PARROT_ASSERT_ARG(init))
+#define ASSERT_ARGS_make_class_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
static int
-cache_class_attribs(PARROT_INTERP, PMC *cur_class, PMC *attrib_index,
- PMC *cache, int cur_index)
+cache_class_attribs(PARROT_INTERP,
+ ARGIN(PMC *cur_class), ARGIN(PMC *attrib_index),
+ ARGIN(PMC *cache), int cur_index)
{
+ ASSERT_ARGS(cache_class_attribs)
/* The attribute metadata hash. */
Parrot_Class_attributes * const class_info = PARROT_CLASS(cur_class);
PMC * const attribs = class_info->attrib_metadata;
@@ -120,12 +203,12 @@
STRING * const attrib_name = VTABLE_get_string_keyed_str(
interp, cur_attrib, name_str);
- STRING * const full_key = Parrot_str_append(interp, fq_class, attrib_name);
+ STRING * const full_key = Parrot_str_concat(interp, fq_class, attrib_name);
/* Insert into hash, along with index. */
VTABLE_set_integer_keyed_str(interp, attrib_index, full_key, cur_index);
VTABLE_set_integer_keyed_str(interp, class_cache, attrib_name, cur_index);
- cur_index++;
+ ++cur_index;
}
return cur_index;
@@ -134,8 +217,9 @@
/* This function builds the attribute index (table to map class name and
* attribute name to an index) for the current class. */
static void
-build_attrib_index(PARROT_INTERP, PMC *self)
+build_attrib_index(PARROT_INTERP, ARGIN(PMC *self))
{
+ ASSERT_ARGS(build_attrib_index)
Parrot_Class_attributes * const _class = PARROT_CLASS(self);
int cur_index = 0;
PMC * const attrib_index = Parrot_pmc_new(interp, enum_class_Hash);
@@ -144,7 +228,7 @@
int i;
/* Go over the list of all parents to construct the attribute index. */
- for (i = 0; i < num_classes; i++) {
+ for (i = 0; i < num_classes; ++i) {
/* Get the class and check that it respects the standard class interface
* (if not we don't know how it stores its attributes, so we'll have to
* delegate the lookup). */
@@ -160,10 +244,12 @@
_class->attrib_index = attrib_index;
_class->attrib_cache = cache;
}
+
/* Takes a hash and initializes the class based on it. */
static void
-init_class_from_hash(PARROT_INTERP, PMC *self, PMC *info)
+init_class_from_hash(PARROT_INTERP, ARGMOD(PMC *self), ARGIN_NULLOK(PMC *info))
{
+ ASSERT_ARGS(init_class_from_hash)
Parrot_Class_attributes * const _class = PARROT_CLASS(self);
STRING * const name_str = CONST_STRING(interp, "name");
STRING * const parents_str = CONST_STRING(interp, "parents");
@@ -266,7 +352,7 @@
const int parent_count = VTABLE_elements(interp, parent_list);
int i;
- for (i = 0; i < parent_count; i++)
+ for (i = 0; i < parent_count; ++i)
VTABLE_add_parent(interp, self,
VTABLE_get_pmc_keyed_int(interp, parent_list, i));
}
@@ -279,7 +365,7 @@
const int role_count = VTABLE_elements(interp, role_list);
int i;
- for (i = 0; i < role_count; i++)
+ for (i = 0; i < role_count; ++i)
VTABLE_add_role(interp, self,
VTABLE_get_pmc_keyed_int(interp, role_list, i));
}
@@ -292,7 +378,7 @@
const int attrib_count = VTABLE_elements(interp, attrs_name_list);
int i;
- for (i = 0; i < attrib_count; i++) {
+ for (i = 0; i < attrib_count; ++i) {
STRING * const attr_name = VTABLE_get_string_keyed_int(interp,
attrs_name_list, i);
VTABLE_add_attribute(interp, self, attr_name, PMCNULL);
@@ -322,13 +408,14 @@
}
static void
-initialize_parents(PARROT_INTERP, PMC *object, PMC *all_parents)
+initialize_parents(PARROT_INTERP, ARGIN(PMC *object), ARGIN(PMC *all_parents))
{
+ ASSERT_ARGS(initialize_parents)
INTVAL parent_index = VTABLE_elements(interp, all_parents) - 1;
STRING * const name = CONST_STRING(interp, "init");
/* Loop through the parents in reverse MRO order. */
- for (; parent_index >= 0; parent_index--) {
+ for (; parent_index >= 0; --parent_index) {
PMC *meth;
PMC * const parent = VTABLE_get_pmc_keyed_int(interp,
all_parents, parent_index);
@@ -343,28 +430,22 @@
meth = Parrot_oo_find_vtable_override_for_class(interp, parent, name);
if (!PMC_IS_NULL(meth)) {
- /* build an empty signature; it has an invocant but no args/retvals */
- PMC * const sig_obj = Parrot_pmc_new(interp, enum_class_CallContext);
/* preserve current_object */
- PMC * const old_object = interp->current_object;
- VTABLE_set_string_native(interp, sig_obj, CONST_STRING(interp, "Pi->"));
- /* add the invocant */
- VTABLE_unshift_pmc(interp, sig_obj, object);
- interp->current_object = object;
- Parrot_pcc_invoke_from_sig_object(interp, meth, sig_obj);
- interp->current_object = old_object;
+ Parrot_pcc_invoke_sub_from_c_args(interp, meth, "Pi->", object);
}
}
}
static void
-initialize_parents_pmc(PARROT_INTERP, PMC *object, PMC *all_parents, PMC *init)
+initialize_parents_pmc(PARROT_INTERP, ARGIN(PMC *object),
+ ARGIN(PMC *all_parents), ARGIN(PMC *init))
{
+ ASSERT_ARGS(initialize_parents_pmc)
INTVAL parent_index = VTABLE_elements(interp, all_parents) - 1;
STRING * const name = CONST_STRING(interp, "init_pmc");
/* Loop through the parents in reverse MRO order. */
- for (; parent_index >= 0; parent_index--) {
+ for (; parent_index >= 0; --parent_index) {
PMC *meth;
PMC * const parent = VTABLE_get_pmc_keyed_int(interp,
all_parents, parent_index);
@@ -388,9 +469,11 @@
* directly. VTABLE_isa() uses the name without copying it, for efficiency
* reasons, as it does not modify the STRING. VTABLE_get_string() makes a copy
* of the STRING, so its callers are free to modify it. */
+PARROT_CANNOT_RETURN_NULL
static STRING *
-make_class_name(PARROT_INTERP, PMC *SELF)
+make_class_name(PARROT_INTERP, ARGIN(PMC *SELF))
{
+ ASSERT_ARGS(make_class_name)
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
PMC * const _namespace = _class->_namespace;
@@ -422,8 +505,9 @@
* see the documentation associated with C<Parrot_ComputeMRO_C3>.
*/
static void
-calculate_mro(PARROT_INTERP, PMC *SELF, INTVAL num_parents)
+calculate_mro(PARROT_INTERP, ARGIN(PMC *SELF), INTVAL num_parents)
{
+ ASSERT_ARGS(calculate_mro)
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
/* SELF is already on the all_parents */
@@ -502,23 +586,23 @@
PObj_custom_mark_SET(SELF);
/* Set up the object. */
- _class->name = CONST_STRING(interp, "");
+ _class->name = CONST_STRING(INTERP, "");
_class->_namespace = PMCNULL;
- _class->parents = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _class->all_parents = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _class->roles = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _class->methods = Parrot_pmc_new(interp, enum_class_Hash);
- _class->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
+ _class->parents = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _class->all_parents = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _class->roles = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _class->methods = Parrot_pmc_new(INTERP, enum_class_Hash);
+ _class->attrib_metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
_class->attrib_index = PMCNULL;
_class->attrib_cache = PMCNULL;
_class->meth_cache = PMCNULL;
- _class->resolve_method = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ _class->resolve_method = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
- _class->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
- _class->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+ _class->vtable_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
+ _class->parent_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
/* We put ourself on the all parents list. */
- VTABLE_push_pmc(interp, _class->all_parents, SELF);
+ VTABLE_push_pmc(INTERP, _class->all_parents, SELF);
/* We are a class. */
PObj_is_class_SET(SELF);
@@ -529,8 +613,8 @@
VTABLE void init_pmc(PMC *init_data) {
PMC *arg;
- const INTVAL arg_type = VTABLE_type(interp, init_data);
- STRING * const name_str = CONST_STRING(interp, "name");
+ const INTVAL arg_type = VTABLE_type(INTERP, init_data);
+ STRING * const name_str = CONST_STRING(INTERP, "name");
/* Set up the object. */
SELF.init();
@@ -542,8 +626,8 @@
case enum_class_ResizableStringArray:
case enum_class_NameSpace:
/* set only the name property */
- arg = Parrot_pmc_new(interp, enum_class_Hash);
- VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
+ arg = Parrot_pmc_new(INTERP, enum_class_Hash);
+ VTABLE_set_pmc_keyed_str(INTERP, arg, name_str, init_data);
break;
case enum_class_Hash:
@@ -552,15 +636,15 @@
/* slow attempt to determine init_data type */
default:
- if (VTABLE_isa(interp, init_data, CONST_STRING(interp, "String"))
- || VTABLE_isa(interp, init_data, CONST_STRING(interp, "Key"))
- || VTABLE_isa(interp, init_data, CONST_STRING(interp, "ResizableStringArray"))) {
+ if (VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "String"))
+ || VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "Key"))
+ || VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "ResizableStringArray"))) {
/* set only the name property */
- arg = Parrot_pmc_new(interp, enum_class_Hash);
- VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
+ arg = Parrot_pmc_new(INTERP, enum_class_Hash);
+ VTABLE_set_pmc_keyed_str(INTERP, arg, name_str, init_data);
}
- if (VTABLE_isa(interp, init_data, CONST_STRING(interp, "Hash")))
+ if (VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "Hash")))
arg = init_data;
else
Parrot_ex_throw_from_c_args(INTERP, NULL,
@@ -570,7 +654,7 @@
}
/* Initialize the class with the supplied data. */
- init_class_from_hash(interp, SELF, arg);
+ init_class_from_hash(INTERP, SELF, arg);
}
/*
@@ -584,7 +668,7 @@
*/
VTABLE STRING *get_string() {
- return Parrot_str_copy(interp, make_class_name(interp, SELF));
+ return make_class_name(INTERP, SELF);
}
/*
@@ -599,20 +683,20 @@
VTABLE void mark() {
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
- Parrot_gc_mark_STRING_alive(interp, _class->name);
- Parrot_gc_mark_STRING_alive(interp, _class->fullname);
- Parrot_gc_mark_PMC_alive(interp, _class->_namespace);
- Parrot_gc_mark_PMC_alive(interp, _class->parents);
- Parrot_gc_mark_PMC_alive(interp, _class->all_parents);
- Parrot_gc_mark_PMC_alive(interp, _class->roles);
- Parrot_gc_mark_PMC_alive(interp, _class->methods);
- Parrot_gc_mark_PMC_alive(interp, _class->vtable_overrides);
- Parrot_gc_mark_PMC_alive(interp, _class->parent_overrides);
- Parrot_gc_mark_PMC_alive(interp, _class->attrib_metadata);
- Parrot_gc_mark_PMC_alive(interp, _class->attrib_index);
- Parrot_gc_mark_PMC_alive(interp, _class->attrib_cache);
- Parrot_gc_mark_PMC_alive(interp, _class->resolve_method);
- Parrot_gc_mark_PMC_alive(interp, _class->meth_cache);
+ Parrot_gc_mark_STRING_alive(INTERP, _class->name);
+ Parrot_gc_mark_STRING_alive(INTERP, _class->fullname);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->_namespace);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->parents);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->all_parents);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->roles);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->methods);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->vtable_overrides);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->parent_overrides);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_metadata);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_index);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_cache);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->resolve_method);
+ Parrot_gc_mark_PMC_alive(INTERP, _class->meth_cache);
}
@@ -631,27 +715,27 @@
VTABLE void add_attribute(STRING *name, PMC *type) {
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
- PMC * const new_attribute = Parrot_pmc_new(interp, enum_class_Hash);
+ PMC * const new_attribute = Parrot_pmc_new(INTERP, enum_class_Hash);
/* If we've been instantiated already, not allowed. */
if (_class->instantiated)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Modifications to classes are not allowed after instantiation.");
/* If we already have an attribute of this name, it's an error. */
- if (VTABLE_exists_keyed_str(interp, _class->attrib_metadata, name))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ if (VTABLE_exists_keyed_str(INTERP, _class->attrib_metadata, name))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Attribute '%Ss' already exists in '%Ss'.", name,
VTABLE_get_string(INTERP, SELF));
/* Set name and type. */
- VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
+ VTABLE_set_string_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "name"), name);
if (!PMC_IS_NULL(type))
- VTABLE_set_pmc_keyed_str(interp, new_attribute, CONST_STRING(interp, "type"), type);
+ VTABLE_set_pmc_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "type"), type);
/* Enter the attribute in the attrib_metadata table. */
- VTABLE_set_pmc_keyed_str(interp, _class->attrib_metadata, name,
+ VTABLE_set_pmc_keyed_str(INTERP, _class->attrib_metadata, name,
new_attribute);
}
@@ -672,19 +756,19 @@
/* If we've been instantiated already, not allowed. */
if (_class->instantiated)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Modifications to classes are not allowed after instantiation.");
/* If we don't have an attribute of this name, it's an error. */
- if (!VTABLE_exists_keyed_str(interp, _class->attrib_metadata, name))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ if (!VTABLE_exists_keyed_str(INTERP, _class->attrib_metadata, name))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Attribute '%Ss' cannot be removed, does not exist in '%Ss'.", name,
VTABLE_get_string(INTERP, SELF));
/* Remove the attribute from the attrib_metadata table. */
- VTABLE_delete_keyed_str(interp, _class->attrib_metadata, name);
+ VTABLE_delete_keyed_str(INTERP, _class->attrib_metadata, name);
- build_attrib_index(interp, SELF);
+ build_attrib_index(INTERP, SELF);
}
/*
@@ -699,21 +783,21 @@
VTABLE void add_method(STRING *name, PMC *sub) {
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
PMC * const method =
- VTABLE_get_pmc_keyed_str(interp, _class->methods, name);
+ VTABLE_get_pmc_keyed_str(INTERP, _class->methods, name);
/* If we have already added a method with this name... */
if (!PMC_IS_NULL(method)) {
if (method == sub)
return;
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"A method named '%S' already exists in class '%S'. "
"It may have been supplied by a role.",
- name, VTABLE_get_string(interp, SELF));
+ name, VTABLE_get_string(INTERP, SELF));
}
/* Enter it into the table. */
- VTABLE_set_pmc_keyed_str(interp, _class->methods, name, sub);
+ VTABLE_set_pmc_keyed_str(INTERP, _class->methods, name, sub);
}
/*
@@ -727,12 +811,12 @@
*/
VTABLE void remove_method(STRING *name) {
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
- if (VTABLE_exists_keyed_str(interp, _class->methods, name))
- VTABLE_delete_keyed_str(interp, _class->methods, name);
+ if (VTABLE_exists_keyed_str(INTERP, _class->methods, name))
+ VTABLE_delete_keyed_str(INTERP, _class->methods, name);
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"No method named '%S' to remove in class '%S'.",
- name, VTABLE_get_string(interp, SELF));
+ name, VTABLE_get_string(INTERP, SELF));
}
/*
@@ -747,28 +831,28 @@
VTABLE void add_vtable_override(STRING *name, PMC *sub) {
Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
PMC * const vtable =
- VTABLE_get_pmc_keyed_str(interp, _class->vtable_overrides, name);
+ VTABLE_get_pmc_keyed_str(INTERP, _class->vtable_overrides, name);
/* If we have already added a vtable override with this name... */
if (!PMC_IS_NULL(vtable)) {
if (vtable == sub)
return;
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"A vtable override named '%S' already exists in class '%S'. "
"It may have been supplied by a role.",
- name, VTABLE_get_string(interp, SELF));
+ name, VTABLE_get_string(INTERP, SELF));
}
/* Check that the name is actually valid as a vtable override */
- if (Parrot_get_vtable_index(interp, name) == -1)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ if (Parrot_get_vtable_index(INTERP, name) == -1)
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_METHOD_NOT_FOUND,
"'%S' is not a valid vtable function name.", name);
- /* Add it to vtable methods list. */
- VTABLE_set_pmc_keyed_str(interp, _class->vtable_overrides, name, sub);
+ /* Add it to vtable list. */
+ VTABLE_set_pmc_keyed_str(INTERP, _class->vtable_overrides, name, sub);
}
/*
@@ -786,59 +870,59 @@
/* If we've been instantiated already, not allowed. */
if (_class->instantiated)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Modifications to classes are not allowed after instantiation.");
/* Ensure it really is a class. */
if (!PObj_is_class_TEST(parent))
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Parent isn't a Class.");
/* Check is not self */
if (parent == SELF)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Can't be own parent");
/* get number of direct parents */
- parent_count = VTABLE_elements(interp, _class->parents);
+ parent_count = VTABLE_elements(INTERP, _class->parents);
/* iterate over all direct parents, check whether this class already has
* the parent being added. */
- for (index = 0; index < parent_count; index++) {
+ for (index = 0; index < parent_count; ++index) {
/* get the next parent */
- PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
_class->parents, index);
/* throw an exception if we already have this parent */
if (current_parent == parent)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"The class '%S' already has a parent class '%S'. "
"It may have been supplied by a role.",
- VTABLE_get_string(interp, SELF),
- VTABLE_get_string(interp, parent));
+ VTABLE_get_string(INTERP, SELF),
+ VTABLE_get_string(INTERP, parent));
}
/* Check that none of the parents is self */
- parent_count = VTABLE_elements(interp, PARROT_CLASS(parent)->all_parents);
+ parent_count = VTABLE_elements(INTERP, PARROT_CLASS(parent)->all_parents);
- for (index = 0; index < parent_count; index++) {
+ for (index = 0; index < parent_count; ++index) {
/* get the next parent */
- PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
PARROT_CLASS(parent)->all_parents, index);
if (current_parent == SELF)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Loop in class hierarchy: '%S' is an ancestor of '%S'.",
- VTABLE_get_string(interp, SELF),
- VTABLE_get_string(interp, parent));
+ VTABLE_get_string(INTERP, SELF),
+ VTABLE_get_string(INTERP, parent));
}
/* Add to the lists of our immediate parents and all parents. */
- VTABLE_push_pmc(interp, _class->parents, parent);
- calculate_mro(interp, SELF, parent_count + 1);
+ VTABLE_push_pmc(INTERP, _class->parents, parent);
+ calculate_mro(INTERP, SELF, parent_count + 1);
}
/*
@@ -858,34 +942,34 @@
/* If we've been instantiated already, not allowed. */
if (_class->instantiated)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Modifications to classes are not allowed after instantiation.");
/* Ensure it really is a class. */
if (!PObj_is_class_TEST(parent))
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Parent isn't a Class.");
/* get number of direct parents */
- parent_count = VTABLE_elements(interp, _class->parents);
+ parent_count = VTABLE_elements(INTERP, _class->parents);
/* iterate over all direct parents, looking for the parent to remove */
- for (index = 0; index < parent_count; index++) {
+ for (index = 0; index < parent_count; ++index) {
/* get the next parent */
- PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
_class->parents, index);
if (current_parent == parent)
break;
}
if (index >= parent_count)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Can't remove_parent: is not a parent.");
- VTABLE_delete_keyed_int(interp, _class->parents, index);
- calculate_mro(interp, SELF, parent_count - 1);
+ VTABLE_delete_keyed_int(INTERP, _class->parents, index);
+ calculate_mro(INTERP, SELF, parent_count - 1);
}
/*
@@ -902,7 +986,7 @@
const Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
/* Do the composition. */
- Parrot_ComposeRole(interp, role,
+ Parrot_ComposeRole(INTERP, role,
_class->resolve_method, !PMC_IS_NULL(_class->resolve_method),
PMCNULL, 0, _class->methods, _class->roles);
}
@@ -953,46 +1037,44 @@
/* What should we return? */
PMC *found;
- if (Parrot_str_equal(interp, what, CONST_STRING(interp, "attributes"))) {
+ if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "attributes"))) {
found = _class->attrib_metadata;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "parents"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "parents"))) {
found = _class->parents;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "name"))) {
- found = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, found, _class->name);
- }
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "id"))) {
- found = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, found, _class->id);
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "name"))) {
+ found = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, found, _class->name);
+ }
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "id"))) {
+ found = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, _class->id);
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "namespace"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "namespace"))) {
/* Should not clone this. */
return _class->_namespace;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "attrib_index"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "attrib_index"))) {
found = _class->attrib_index;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "methods"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "methods"))) {
found = _class->methods;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "vtable_overrides"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "vtable_overrides"))) {
found = _class->vtable_overrides;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "all_parents"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "all_parents"))) {
found = _class->all_parents;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "roles"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "roles"))) {
found = _class->roles;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "flags"))) {
- found = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, found,
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "flags"))) {
+ found = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
(INTVAL)PObj_get_FLAGS(SELF));
}
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Unknown introspection value '%S'", what);
/* return found value */
@@ -1002,18 +1084,18 @@
if (found->vtable->base_type == enum_class_Hash) {
/* for Hash return values, create and return a shallow
* clone because the VTABLE_clone does a deep clone */
- PMC * const hash = Parrot_pmc_new(interp, enum_class_Hash);
- PMC * const iter = VTABLE_get_iter(interp, found);
- while (VTABLE_get_bool(interp, iter)) {
- STRING * const key = VTABLE_shift_string(interp, iter);
- PMC * const value = VTABLE_get_pmc_keyed_str(interp, found, key);
- VTABLE_set_pmc_keyed_str(interp, hash, key, value);
+ PMC * const hash = Parrot_pmc_new(INTERP, enum_class_Hash);
+ PMC * const iter = VTABLE_get_iter(INTERP, found);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ STRING * const key = VTABLE_shift_string(INTERP, iter);
+ PMC * const value = VTABLE_get_pmc_keyed_str(INTERP, found, key);
+ VTABLE_set_pmc_keyed_str(INTERP, hash, key, value);
}
return hash;
}
- return VTABLE_clone(interp, found);
+ return VTABLE_clone(INTERP, found);
}
/*
@@ -1029,35 +1111,35 @@
VTABLE PMC *inspect() {
/* Create a hash, then use inspect_str to get all of the data to
* fill it up with. */
- PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
- STRING * const name_str = CONST_STRING(interp, "name");
- STRING * const ns_str = CONST_STRING(interp, "namespace");
- STRING * const attrs_str = CONST_STRING(interp, "attributes");
- STRING * const meths_str = CONST_STRING(interp, "methods");
- STRING * const parents_str = CONST_STRING(interp, "parents");
- STRING * const roles_str = CONST_STRING(interp, "roles");
- STRING * const flags_str = CONST_STRING(interp, "flags");
-
- VTABLE_set_pmc_keyed_str(interp, metadata, name_str,
- VTABLE_inspect_str(interp, SELF, name_str));
-
- VTABLE_set_pmc_keyed_str(interp, metadata, ns_str,
- VTABLE_inspect_str(interp, SELF, ns_str));
-
- VTABLE_set_pmc_keyed_str(interp, metadata, attrs_str,
- VTABLE_inspect_str(interp, SELF, attrs_str));
-
- VTABLE_set_pmc_keyed_str(interp, metadata, meths_str,
- VTABLE_inspect_str(interp, SELF, meths_str));
+ PMC * const metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
+ STRING * const name_str = CONST_STRING(INTERP, "name");
+ STRING * const ns_str = CONST_STRING(INTERP, "namespace");
+ STRING * const attrs_str = CONST_STRING(INTERP, "attributes");
+ STRING * const meths_str = CONST_STRING(INTERP, "methods");
+ STRING * const parents_str = CONST_STRING(INTERP, "parents");
+ STRING * const roles_str = CONST_STRING(INTERP, "roles");
+ STRING * const flags_str = CONST_STRING(INTERP, "flags");
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, name_str,
+ VTABLE_inspect_str(INTERP, SELF, name_str));
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, ns_str,
+ VTABLE_inspect_str(INTERP, SELF, ns_str));
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, attrs_str,
+ VTABLE_inspect_str(INTERP, SELF, attrs_str));
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, meths_str,
+ VTABLE_inspect_str(INTERP, SELF, meths_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, parents_str,
- VTABLE_inspect_str(interp, SELF, parents_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, parents_str,
+ VTABLE_inspect_str(INTERP, SELF, parents_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, roles_str,
- VTABLE_inspect_str(interp, SELF, roles_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, roles_str,
+ VTABLE_inspect_str(INTERP, SELF, roles_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, flags_str,
- VTABLE_inspect_str(interp, SELF, flags_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, flags_str,
+ VTABLE_inspect_str(INTERP, SELF, flags_str));
return metadata;
}
@@ -1086,18 +1168,18 @@
Parrot_Class_attributes * const new_class = PARROT_CLASS(copy);
- new_class->name = CONST_STRING(interp, "");
+ new_class->name = CONST_STRING(INTERP, "");
new_class->_namespace = PMCNULL;
- new_class->parents = VTABLE_clone(interp, _class->parents);
- new_class->roles = VTABLE_clone(interp, _class->roles);
- new_class->methods = VTABLE_clone(interp, _class->methods);
- new_class->vtable_overrides = VTABLE_clone(interp,
+ new_class->parents = VTABLE_clone(INTERP, _class->parents);
+ new_class->roles = VTABLE_clone(INTERP, _class->roles);
+ new_class->methods = VTABLE_clone(INTERP, _class->methods);
+ new_class->vtable_overrides = VTABLE_clone(INTERP,
_class->vtable_overrides);
- new_class->parent_overrides = VTABLE_clone(interp,
+ new_class->parent_overrides = VTABLE_clone(INTERP,
_class->parent_overrides);
- new_class->attrib_metadata = VTABLE_clone(interp,
+ new_class->attrib_metadata = VTABLE_clone(INTERP,
_class->attrib_metadata);
- new_class->resolve_method = VTABLE_clone(interp,
+ new_class->resolve_method = VTABLE_clone(INTERP,
_class->resolve_method);
/* Return cloned class. */
@@ -1121,7 +1203,7 @@
/* Do the standard clone. */
PMC * const copy = SELF.clone();
- init_class_from_hash(interp, copy, args);
+ init_class_from_hash(INTERP, copy, args);
return copy;
}
@@ -1143,39 +1225,39 @@
/* If we've not been instantiated before... */
if (!_class->instantiated) {
/* Check that we have all methods listed in resolve list. */
- const int resolve_count = VTABLE_elements(interp,
+ const int resolve_count = VTABLE_elements(INTERP,
_class->resolve_method);
- const INTVAL cur_hll = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
- const INTVAL num_parents = VTABLE_elements(interp, _class->parents);
+ const INTVAL cur_hll = Parrot_pcc_get_HLL(INTERP, CURRENT_CONTEXT(INTERP));
+ const INTVAL num_parents = VTABLE_elements(INTERP, _class->parents);
INTVAL mro_length;
int i;
/* don't use HLL mappings for internal-only data */
- Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), 0);
+ Parrot_pcc_set_HLL(INTERP, CURRENT_CONTEXT(INTERP), 0);
- for (i = 0; i < resolve_count; i++) {
+ for (i = 0; i < resolve_count; ++i) {
STRING * const check_meth =
- VTABLE_get_string_keyed_int(interp, _class->resolve_method, i);
- if (!VTABLE_exists_keyed_str(interp, _class->methods, check_meth))
- Parrot_ex_throw_from_c_args(interp, NULL,
+ VTABLE_get_string_keyed_int(INTERP, _class->resolve_method, i);
+ if (!VTABLE_exists_keyed_str(INTERP, _class->methods, check_meth))
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_METHOD_NOT_FOUND, "The method '%S' was named "
"in the resolve list, but not supplied", check_meth);
}
/* Build full parents list.
* TT #1256: Need pluggable MRO, for now always do C3. */
- calculate_mro(interp, SELF, num_parents);
- build_attrib_index(interp, SELF);
+ calculate_mro(INTERP, SELF, num_parents);
+ build_attrib_index(INTERP, SELF);
if (PMC_IS_NULL(_class->attrib_index))
return PMCNULL;
/* See if we have any parents from other universes and if so set a
* flag stating so. */
- mro_length = VTABLE_elements(interp, _class->all_parents);
+ mro_length = VTABLE_elements(INTERP, _class->all_parents);
- for (i = 0; i < mro_length; i++) {
- PMC * const class_check = VTABLE_get_pmc_keyed_int(interp,
+ for (i = 0; i < mro_length; ++i) {
+ PMC * const class_check = VTABLE_get_pmc_keyed_int(INTERP,
_class->all_parents, i);
if (class_check->vtable->base_type != enum_class_Class) {
/* Found one; that's enough. */
@@ -1184,14 +1266,14 @@
}
}
- Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), cur_hll);
+ Parrot_pcc_set_HLL(INTERP, CURRENT_CONTEXT(INTERP), cur_hll);
}
/* Set instantiated flag. */
_class->instantiated = 1;
/* Create object. */
- object = Parrot_pmc_new_noinit(interp, enum_class_Object);
+ object = Parrot_pmc_new_noinit(INTERP, enum_class_Object);
/* Set custom GC mark and destroy on the object. */
PObj_custom_mark_destroy_SETALL(object);
@@ -1207,28 +1289,28 @@
Parrot_Object_attributes * const objattr =
PMC_data_typed(object, Parrot_Object_attributes *);
objattr->_class = SELF;
- objattr->attrib_store = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ objattr->attrib_store = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
}
if (!PMC_IS_NULL(init)) {
/* Initialize attributes with the supplied values. */
- PMC * const iter = VTABLE_get_iter(interp, init);
+ PMC * const iter = VTABLE_get_iter(INTERP, init);
- while (VTABLE_get_bool(interp, iter)) {
- STRING * const name = VTABLE_shift_string(interp, iter);
- PMC * const value = VTABLE_get_pmc_keyed_str(interp, init,
+ while (VTABLE_get_bool(INTERP, iter)) {
+ STRING * const name = VTABLE_shift_string(INTERP, iter);
+ PMC * const value = VTABLE_get_pmc_keyed_str(INTERP, init,
name);
/* Set the attribute. */
- VTABLE_set_attr_str(interp, object, name, value);
+ VTABLE_set_attr_str(INTERP, object, name, value);
}
/* Check for overrides on the init_pmc vtable function */
- initialize_parents_pmc(interp, object, _class->all_parents, init);
+ initialize_parents_pmc(INTERP, object, _class->all_parents, init);
}
else
/* Check for overrides on the init vtable function */
- initialize_parents(interp, object, _class->all_parents);
+ initialize_parents(INTERP, object, _class->all_parents);
return object;
}
@@ -1255,13 +1337,13 @@
if (PObj_is_class_TEST(lookup) && lookup == SELF)
return 1;
- classobj = Parrot_oo_get_class(interp, lookup);
+ classobj = Parrot_oo_get_class(INTERP, lookup);
if (PMC_IS_NULL(classobj))
return 0;
/* Check if the class object is the same as self's class object */
- if (VTABLE_is_same(interp, SELF, classobj))
+ if (VTABLE_is_same(INTERP, SELF, classobj))
return 1;
/* this is effectively what the default PMC's isa_pmc does
@@ -1269,26 +1351,26 @@
* only in these two, very specific and common cases */
if (classobj->vtable->base_type == enum_class_Class
|| classobj->vtable->base_type == enum_class_PMCProxy) {
- STRING *classname = make_class_name(interp, classobj);
+ STRING *classname = make_class_name(INTERP, classobj);
- if (Parrot_str_equal(interp, SELF->vtable->whoami, classname))
+ if (Parrot_str_equal(INTERP, SELF->vtable->whoami, classname))
return 1;
if (SELF->vtable->isa_hash
- && parrot_hash_exists(interp, SELF->vtable->isa_hash,
+ && parrot_hash_exists(INTERP, SELF->vtable->isa_hash,
(void *)classname))
return 1;
}
/* Iterate over all the parents and check if they respond true
* for 'isa' on the original comparison. */
- num_classes = VTABLE_elements(interp, _class->parents);
+ num_classes = VTABLE_elements(INTERP, _class->parents);
- for (i = 0; i < num_classes; i++) {
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+ for (i = 0; i < num_classes; ++i) {
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
_class->parents, i);
- if (VTABLE_isa_pmc(interp, cur_class, lookup))
+ if (VTABLE_isa_pmc(INTERP, cur_class, lookup))
return 1;
}
@@ -1309,10 +1391,10 @@
PMC *want_class;
/* hard-code this one exception right away */
- if (Parrot_str_equal(interp, classname, CONST_STRING(interp, "Class")))
+ if (Parrot_str_equal(INTERP, classname, CONST_STRING(INTERP, "Class")))
return 1;
- want_class = Parrot_oo_get_class_str(interp, classname);
+ want_class = Parrot_oo_get_class_str(INTERP, classname);
if (PMC_IS_NULL(want_class))
return 0;
@@ -1320,7 +1402,7 @@
if (SELF == want_class)
return 1;
- return VTABLE_isa_pmc(interp, SELF, want_class);
+ return VTABLE_isa_pmc(INTERP, SELF, want_class);
}
/*
@@ -1340,28 +1422,28 @@
if (!role_list)
return 0;
- count = VTABLE_elements(interp, role_list);
+ count = VTABLE_elements(INTERP, role_list);
- for (i = 0; i < count; i++) {
- PMC * const role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
+ for (i = 0; i < count; ++i) {
+ PMC * const role = VTABLE_get_pmc_keyed_int(INTERP, role_list, i);
- if (VTABLE_does(interp, role, role_name))
+ if (VTABLE_does(INTERP, role, role_name))
return 1;
}
/* Iterate over all the parents and check if they respond true
* for 'does' on the original comparison. */
- count = VTABLE_elements(interp, _class->parents);
+ count = VTABLE_elements(INTERP, _class->parents);
- for (i = 0; i < count; i++) {
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+ for (i = 0; i < count; ++i) {
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
_class->parents, i);
- if (VTABLE_does(interp, cur_class, role_name))
+ if (VTABLE_does(INTERP, cur_class, role_name))
return 1;
}
- return VTABLE_isa(interp, SELF, role_name);
+ return VTABLE_isa(INTERP, SELF, role_name);
}
/*
@@ -1381,27 +1463,27 @@
if (!role_list)
return 0;
- role_count = VTABLE_elements(interp, role_list);
+ role_count = VTABLE_elements(INTERP, role_list);
- for (i = 0; i < role_count; i++) {
- PMC * const test_role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
- if (VTABLE_does_pmc(interp, test_role, role))
+ for (i = 0; i < role_count; ++i) {
+ PMC * const test_role = VTABLE_get_pmc_keyed_int(INTERP, role_list, i);
+ if (VTABLE_does_pmc(INTERP, test_role, role))
return 1;
}
/* Iterate over all the parents and check if they respond true
* for 'does' on the original comparison. */
- count = VTABLE_elements(interp, _class->parents);
+ count = VTABLE_elements(INTERP, _class->parents);
- for (i = 0; i < count; i++) {
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+ for (i = 0; i < count; ++i) {
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
_class->parents, i);
- if (VTABLE_does_pmc(interp, cur_class, role))
+ if (VTABLE_does_pmc(INTERP, cur_class, role))
return 1;
}
- return VTABLE_isa_pmc(interp, SELF, role);
+ return VTABLE_isa_pmc(INTERP, SELF, role);
}
/*
@@ -1463,7 +1545,7 @@
VTABLE void freeze(PMC *info) {
Parrot_Class_attributes * const class_data = PARROT_CLASS(SELF);
- STRING *serial_namespace = CONST_STRING(interp, "");
+ STRING *serial_namespace = CONST_STRING(INTERP, "");
/* 1) freeze class id */
VTABLE_push_integer(INTERP, info, class_data->id);
@@ -1473,10 +1555,10 @@
/* 3) serialize namespace name, including HLL */
if (!PMC_IS_NULL(class_data->_namespace)) {
- PMC * const names = Parrot_ns_get_name(interp,
+ PMC * const names = Parrot_ns_get_name(INTERP,
class_data->_namespace);
if (!PMC_IS_NULL(names))
- serial_namespace = Parrot_str_join(interp, CONST_STRING(interp, ";"), names);
+ serial_namespace = Parrot_str_join(INTERP, CONST_STRING(INTERP, ";"), names);
}
VTABLE_push_string(INTERP, info, serial_namespace);
}
@@ -1507,13 +1589,13 @@
STRING * const semicolon_str = CONST_STRING(INTERP, ";");
PMC * const namespace_array =
Parrot_str_split(INTERP, semicolon_str, serial_namespace);
- PMC *ns = Parrot_get_namespace_keyed(interp,
+ PMC *ns = Parrot_get_namespace_keyed(INTERP,
INTERP->root_namespace, namespace_array);
/* If the namespace doesn't exist, we create it, and initialize
* ourselves in it */
if (PMC_IS_NULL(ns)) {
- ns = Parrot_make_namespace_keyed(interp,
+ ns = Parrot_make_namespace_keyed(INTERP,
INTERP->root_namespace, namespace_array);
SELF.init_pmc(ns);
}
@@ -1562,15 +1644,15 @@
UNUSED(info)
/* Recalculate full MRO from thawed parents */
- _class->all_parents = Parrot_ComputeMRO_C3(interp, SELF);
- _class->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+ _class->all_parents = Parrot_ComputeMRO_C3(INTERP, SELF);
+ _class->parent_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
/* Rebuild attribute index from thawed attribute metadata */
- build_attrib_index(interp, SELF);
+ build_attrib_index(INTERP, SELF);
}
/* **********************************************************************
- * Below here are non-vtable methods that eventually will go in a role
+ * Below here are methods that eventually will go in a role
* that is composed into here to optionally give a nice interface from
* PIR (ParrotClass isa Class does ClassMethods or something like this).
* **********************************************************************/
@@ -1591,11 +1673,11 @@
if (has_name) {
/* We'll build a hash just containing the name, then give this to
* init_class_from_hash - saves some code duplication. */
- PMC * const naming_hash = Parrot_pmc_new(interp, enum_class_Hash);
- STRING * const name_str = CONST_STRING(interp, "name");
+ PMC * const naming_hash = Parrot_pmc_new(INTERP, enum_class_Hash);
+ STRING * const name_str = CONST_STRING(INTERP, "name");
- VTABLE_set_string_keyed_str(interp, naming_hash, name_str, name);
- init_class_from_hash(interp, SELF, naming_hash);
+ VTABLE_set_string_keyed_str(INTERP, naming_hash, name_str, name);
+ init_class_from_hash(INTERP, SELF, naming_hash);
}
ret_name = _class->name;
@@ -1655,9 +1737,9 @@
/* Check if any arguments are in the slurpy hash, don't pass an empty
* hash to instantiate */
PMC * const obj =
- VTABLE_elements(interp, args) > 0
- ? VTABLE_instantiate(interp, SELF, args)
- : VTABLE_instantiate(interp, SELF, PMCNULL);
+ VTABLE_elements(INTERP, args) > 0
+ ? VTABLE_instantiate(INTERP, SELF, args)
+ : VTABLE_instantiate(INTERP, SELF, PMCNULL);
RETURN(PMC *obj);
}
@@ -1673,7 +1755,7 @@
*/
METHOD attributes() {
- STRING * const attr_str = CONST_STRING(interp, "attributes");
+ STRING * const attr_str = CONST_STRING(INTERP, "attributes");
PMC * const ret_attrib_metadata = SELF.inspect_str(attr_str);
RETURN(PMC *ret_attrib_metadata);
@@ -1704,7 +1786,7 @@
*/
METHOD methods() {
- PMC * const ret_methods = SELF.inspect_str(CONST_STRING(interp, "methods"));
+ PMC * const ret_methods = SELF.inspect_str(CONST_STRING(INTERP, "methods"));
RETURN(PMC *ret_methods);
}
@@ -1714,7 +1796,7 @@
=item C<void add_method(STRING *name, PMC *sub)>
Adds the given sub PMC as a method with the given name. Delegates to the
-C<add_method> vtable method.
+C<add_method> vtable.
=cut
@@ -1728,13 +1810,13 @@
=item C<void add_vtable_override(STRING *name, PMC *sub)>
Adds the given sub PMC as a vtable override with the given name. Delegates to
-the C<add_vtable_override> vtable method.
+the C<add_vtable_override> vtable.
=cut
*/
METHOD add_vtable_override(STRING *name, PMC *sub) {
- VTABLE_add_vtable_override(interp, SELF, name, sub);
+ VTABLE_add_vtable_override(INTERP, SELF, name, sub);
}
/*
@@ -1747,7 +1829,7 @@
*/
METHOD remove_method(STRING *name) {
- VTABLE_remove_method(interp, SELF, name);
+ VTABLE_remove_method(INTERP, SELF, name);
}
/*
@@ -1765,17 +1847,17 @@
int i;
/* Walk and search. One day, we'll use the cache first. */
- const int num_classes = VTABLE_elements(interp, _class->all_parents);
+ const int num_classes = VTABLE_elements(INTERP, _class->all_parents);
- for (i = 0; i < num_classes; i++) {
+ for (i = 0; i < num_classes; ++i) {
/* Get the class and see if it has the method. */
PMC * const cur_class =
- VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+ VTABLE_get_pmc_keyed_int(INTERP, _class->all_parents, i);
const Parrot_Class_attributes * const class_info = PARROT_CLASS(cur_class);
/* Found it! */
- if (VTABLE_exists_keyed_str(interp, class_info->methods, name)) {
- PMC * const ret = VTABLE_get_pmc_keyed_str(interp, class_info->methods, name);
+ if (VTABLE_exists_keyed_str(INTERP, class_info->methods, name)) {
+ PMC * const ret = VTABLE_get_pmc_keyed_str(INTERP, class_info->methods, name);
RETURN(PMC *ret);
}
}
@@ -1793,7 +1875,7 @@
*/
METHOD parents() {
- PMC * const ret_parents = SELF.inspect_str(CONST_STRING(interp, "parents"));
+ PMC * const ret_parents = SELF.inspect_str(CONST_STRING(INTERP, "parents"));
RETURN(PMC *ret_parents);
}
@@ -1821,7 +1903,7 @@
*/
METHOD roles() {
- PMC * const ret_roles = SELF.inspect_str(CONST_STRING(interp, "roles"));
+ PMC * const ret_roles = SELF.inspect_str(CONST_STRING(INTERP, "roles"));
RETURN(PMC *ret_roles);
}
@@ -1848,24 +1930,24 @@
* no exclude list, pass along the resolve list in its place if it has
* any methods listed in it. */
if (!has_exclude_method) {
- if (VTABLE_elements(interp, _class->resolve_method) != 0) {
+ if (VTABLE_elements(INTERP, _class->resolve_method) != 0) {
exclude_method = _class->resolve_method;
has_exclude_method = 1;
}
}
else {
- const int resolve_count = VTABLE_elements(interp, _class->resolve_method);
+ const int resolve_count = VTABLE_elements(INTERP, _class->resolve_method);
int i;
- for (i = 0; i < resolve_count; i++) {
- STRING * const meth_name = VTABLE_get_string_keyed_int(interp,
+ for (i = 0; i < resolve_count; ++i) {
+ STRING * const meth_name = VTABLE_get_string_keyed_int(INTERP,
_class->resolve_method, i);
- VTABLE_push_string(interp, exclude_method, meth_name);
+ VTABLE_push_string(INTERP, exclude_method, meth_name);
}
}
/* Do the composition. */
- Parrot_ComposeRole(interp, role, exclude_method, has_exclude_method,
+ Parrot_ComposeRole(INTERP, role, exclude_method, has_exclude_method,
alias_method, has_alias_method,
_class->methods, _class->roles);
}
@@ -1883,7 +1965,7 @@
METHOD inspect(STRING *what :optional, int has_what :opt_flag) {
PMC *found;
- /* Just delegate to the appropriate vtable method. */
+ /* Just delegate to the appropriate vtable. */
if (has_what)
found = SELF.inspect_str(what);
else
@@ -1919,10 +2001,27 @@
*/
METHOD does(STRING *role_name) {
- const INTVAL does = VTABLE_does(interp, SELF, role_name);
+ const INTVAL does = VTABLE_does(INTERP, SELF, role_name);
RETURN(INTVAL does);
}
+ METHOD clear_method_cache() {
+ Parrot_Class_attributes * const attrs = PARROT_CLASS(SELF);
+ PMC * const cache = attrs->meth_cache;
+ if (cache)
+ attrs->meth_cache = PMCNULL;
+ }
+
+ METHOD get_method_cache() {
+ Parrot_Class_attributes * const attrs = PARROT_CLASS(SELF);
+ PMC * cache = attrs->meth_cache;
+ if (!cache) {
+ cache = Parrot_pmc_new(INTERP, enum_class_Hash);
+ attrs->meth_cache = cache;
+ }
+ RETURN(PMC *cache);
+ }
+
} /* END pmclass */
/*
Modified: branches/ops_pct/src/pmc/codestring.pmc
==============================================================================
--- branches/ops_pct/src/pmc/codestring.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/codestring.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2007-2009, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -34,6 +34,10 @@
# include <unicode/uchar.h>
#endif
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass CodeString extends String provides string auto_attrs {
ATTR PMC *linepos; /* start of line positions */
@@ -64,15 +68,14 @@
*/
VTABLE void mark() {
- PMC *linepos;
-
SUPER();
- if (!PMC_data(SELF))
- return;
+ if (PMC_data(SELF)) {
+ PMC *linepos;
- GET_ATTR_linepos(INTERP, SELF, linepos);
+ GET_ATTR_linepos(INTERP, SELF, linepos);
- Parrot_gc_mark_PMC_alive(INTERP, linepos);
+ Parrot_gc_mark_PMC_alive(INTERP, linepos);
+ }
}
/*
@@ -105,40 +108,28 @@
STRING * const comma = CONST_STRING(INTERP, ",");
STRING * const comma_space = CONST_STRING(INTERP, ", ");
STRING * const newline = CONST_STRING(INTERP, "\n");
- STRING *key, *repl, *S0, *S1;
+ PMC *parts = PMCNULL;
+ STRING *key, *repl, *S1;
INTVAL pos = 0;
INTVAL replen = 0;
- INTVAL I0, I1;
-
- fmt = Parrot_str_new_COW(INTERP, fmt);
while (pos >= 0) {
pos += replen;
pos = Parrot_str_find_index(INTERP, fmt, percent, pos);
- if (pos < 0) break;
+ if (pos < 0)
+ break;
- key = Parrot_str_substr(INTERP, fmt, pos+1, 1, &key, 0);
+ key = Parrot_str_substr(INTERP, fmt, pos+1, 1);
if (VTABLE_exists_keyed_str(INTERP, hash, key)) {
repl = VTABLE_get_string_keyed_str(INTERP, hash, key);
}
- else if (Parrot_str_is_cclass(INTERP, enum_cclass_numeric, fmt,
- (UINTVAL)pos + 1)) {
- I0 = Parrot_str_to_int(INTERP, key);
+ else if (Parrot_str_is_cclass(INTERP, enum_cclass_numeric, fmt, (UINTVAL)pos + 1)) {
+ const INTVAL I0 = Parrot_str_to_int(INTERP, key);
repl = VTABLE_get_string_keyed_int(INTERP, args, I0);
}
else if (Parrot_str_equal(INTERP, key, comma)) {
- repl = VTABLE_get_string_keyed_int(INTERP, args, 0);
- repl = Parrot_str_new_COW(INTERP, repl);
- I1 = VTABLE_elements(INTERP, args);
- I0 = 1;
-
- while (I0 < I1) {
- S0 = VTABLE_get_string_keyed_int(INTERP, args, I0);
- repl = Parrot_str_append(INTERP, repl, comma_space);
- repl = Parrot_str_append(INTERP, repl, S0);
- I0++;
- }
+ repl = Parrot_str_join(INTERP, comma_space, args);
}
else if (Parrot_str_equal(INTERP, key, percent)) {
repl = percent;
@@ -149,16 +140,21 @@
continue;
}
- (void) Parrot_str_replace(INTERP, fmt, pos, 2, repl, NULL);
+ fmt = Parrot_str_replace(INTERP, fmt, pos, 2, repl);
replen = Parrot_str_byte_length(INTERP, repl);
}
+ GET_ATTR_str_val(INTERP, SELF, S1);
+
+ parts = Parrot_pmc_new_init_int(INTERP, enum_class_FixedStringArray, 3);
+ VTABLE_set_string_keyed_int(INTERP, parts, 0, S1);
+ VTABLE_set_string_keyed_int(INTERP, parts, 1, fmt);
+
/* Add a newline if necessary */
if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(INTERP, fmt) - 1))
- fmt = Parrot_str_concat(INTERP, fmt, newline, 0);
+ VTABLE_set_string_keyed_int(INTERP, parts, 2, newline);
- GET_ATTR_str_val(INTERP, SELF, S1);
- S1 = Parrot_str_concat(INTERP, S1, fmt, 0);
+ S1 = Parrot_str_join(INTERP, STRINGNULL, parts);
VTABLE_set_string_native(INTERP, SELF, S1);
RETURN(PMC *SELF);
@@ -197,7 +193,7 @@
jpos = Parrot_str_find_cclass(INTERP, enum_cclass_newline,
str, 0, eos);
while (jpos < eos) {
- jpos++;
+ ++jpos;
/* add the start of line position */
VTABLE_push_integer(INTERP, linepos, jpos);
@@ -205,7 +201,7 @@
if (jpos < eos
&& string_ord(INTERP, str, jpos - 1) == 13
&& string_ord(INTERP, str, jpos) == 10) {
- jpos++;
+ ++jpos;
}
/* search for the next newline */
jpos = Parrot_str_find_cclass(INTERP, enum_cclass_newline,
@@ -222,7 +218,7 @@
count = VTABLE_elements(INTERP, linepos);
while (line < count
&& VTABLE_get_integer_keyed_int(INTERP, linepos, line) <= pos)
- line++;
+ ++line;
RETURN(INTVAL line);
}
@@ -244,17 +240,16 @@
METHOD unique(STRING *format :optional, int has_fmt :opt_flag) {
static INTVAL counter = 10;
- STRING *counter_as_string = Parrot_str_from_int(INTERP, counter);
+ STRING * const counter_as_string = Parrot_str_from_int(INTERP, counter);
UNUSED(SELF);
- counter++;
+ ++counter;
if (!has_fmt) {
RETURN(STRING *counter_as_string);
}
else {
- STRING *result = Parrot_str_copy(INTERP, format);
- result = Parrot_str_concat(INTERP, result, counter_as_string, 1);
+ STRING *result = Parrot_str_concat(INTERP, format, counter_as_string);
RETURN(STRING *result);
}
}
@@ -279,8 +274,8 @@
INTVAL is_unicode = 0;
UNUSED(SELF);
- escaped_str = Parrot_str_concat(INTERP, quote, escaped_str, 1);
- escaped_str = Parrot_str_concat(INTERP, escaped_str, quote, 1);
+ escaped_str = Parrot_str_concat(INTERP, quote, escaped_str);
+ escaped_str = Parrot_str_concat(INTERP, escaped_str, quote);
x_pos = Parrot_str_find_index(INTERP, escaped_str, x, 0);
if (x_pos != -1) {
@@ -288,14 +283,14 @@
}
else {
STRING * const u = CONST_STRING(INTERP, "\\u");
- INTVAL u_pos = Parrot_str_find_index(INTERP, escaped_str, u, 0);
+ const INTVAL u_pos = Parrot_str_find_index(INTERP, escaped_str, u, 0);
if (u_pos != -1)
is_unicode = 1;
}
if (is_unicode) {
STRING * const unicode = CONST_STRING(INTERP, "unicode:");
- escaped_str = Parrot_str_concat(INTERP, unicode, escaped_str, 1);
+ escaped_str = Parrot_str_concat(INTERP, unicode, escaped_str);
}
RETURN(STRING *escaped_str);
@@ -342,7 +337,7 @@
METHOD key(PMC *args :slurpy) {
INTVAL index;
- INTVAL elements = VTABLE_elements(INTERP, args);
+ const INTVAL elements = VTABLE_elements(INTERP, args);
STRING * const open_bracket = CONST_STRING(INTERP, "[");
STRING * const semi = CONST_STRING(INTERP, ";");
STRING * const close_bracket = CONST_STRING(INTERP, "]");
@@ -350,30 +345,35 @@
STRING * prefix = NULL;
STRING * out = open_bracket;
- for (index = 0; index < elements; index++) {
- PMC *P0 = VTABLE_get_pmc_keyed_int(INTERP, args, index);
- if (PMC_IS_NULL(P0)) continue;
- else if (VTABLE_does(INTERP, P0, s_array)) {
- INTVAL elements2, index2;
- elements2 = VTABLE_elements(INTERP, P0);
- for (index2 = 0; index2 < elements2; index2++) {
- STRING *S0 = VTABLE_get_string_keyed_int(INTERP, P0, index2);
+ for (index = 0; index < elements; ++index) {
+ PMC * const P0 = VTABLE_get_pmc_keyed_int(INTERP, args, index);
+
+ if (!PMC_IS_NULL(P0)) {
+ if (VTABLE_does(INTERP, P0, s_array)) {
+ const INTVAL elements2 = VTABLE_elements(INTERP, P0);
+ INTVAL index2;
+
+ for (index2 = 0; index2 < elements2; ++index2) {
+ STRING *S0 = VTABLE_get_string_keyed_int(INTERP, P0, index2);
+ (STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
+ if (prefix)
+ out = Parrot_str_concat(INTERP, out, prefix);
+ out = Parrot_str_concat(INTERP, out, S0);
+ prefix = semi;
+ }
+ }
+ else {
+ STRING *S0 = VTABLE_get_string_keyed_int(INTERP, args, index);
(STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
- if (prefix) out = Parrot_str_append(INTERP, out, prefix);
- out = Parrot_str_append(INTERP, out, S0);
+ if (prefix)
+ out = Parrot_str_concat(INTERP, out, prefix);
+ out = Parrot_str_concat(INTERP, out, S0);
prefix = semi;
}
}
- else {
- STRING *S0 = VTABLE_get_string_keyed_int(INTERP, args, index);
- (STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
- if (prefix) out = Parrot_str_append(INTERP, out, prefix);
- out = Parrot_str_append(INTERP, out, S0);
- prefix = semi;
- }
}
- out = Parrot_str_append(INTERP, out, close_bracket);
+ out = Parrot_str_concat(INTERP, out, close_bracket);
RETURN(STRING *out);
}
Modified: branches/ops_pct/src/pmc/complex.pmc
==============================================================================
--- branches/ops_pct/src/pmc/complex.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/complex.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -16,16 +16,58 @@
=over 4
=cut
+ ASSERT_ARGS()
+
Equations used are sometimes listed. At times, multiple equations are given,
but those starting with => are the ones used
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void complex_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void complex_parse_string(PARROT_INTERP,
+ ARGOUT(FLOATVAL *re),
+ ARGOUT(FLOATVAL *im),
+ ARGIN(STRING *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*re)
+ FUNC_MODIFIES(*im);
+
+static void float_check_divide_zero(PARROT_INTERP, FLOATVAL value)
+ __attribute__nonnull__(1);
+
+static void int_check_divide_zero(PARROT_INTERP, INTVAL value)
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_complex_check_divide_zero __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_complex_parse_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(re) \
+ , PARROT_ASSERT_ARG(im) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_float_check_divide_zero __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_int_check_divide_zero __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/*
-=item C<static void
-complex_parse_string(PARROT_INTERP, FLOATVAL *re, FLOATVAL *im, STRING *value)>
+=item C<static void complex_parse_string(PARROT_INTERP, FLOATVAL *re, FLOATVAL
+*im, STRING *value)>
Parses the string in C<value> to produce a complex number, represented
by the real (C<*re>) and imaginary (C<*im>) parts. Raises an exception
@@ -38,7 +80,11 @@
*/
static void
-complex_parse_string(PARROT_INTERP, FLOATVAL *re, FLOATVAL *im, STRING *value) {
+complex_parse_string(PARROT_INTERP,
+ ARGOUT(FLOATVAL *re), ARGOUT(FLOATVAL *im), ARGIN(STRING *value))
+{
+ ASSERT_ARGS(complex_parse_string)
+
char * const str = Parrot_str_to_cstring(interp, value);
char *t = str;
char *first_num_offset = str;
@@ -54,26 +100,26 @@
if (*t == '-') {
/* first number is negative */
- t++;
+ ++t;
first_num_minus = 1;
/* allow for an optional space */
if (*t == ' ')
- t++;
+ ++t;
first_num_offset = t;
}
/* skip digits */
while (*t >= '0' && *t <= '9')
- t++;
+ ++t;
if (*t == '.') {
/* this number has a decimal point */
- t++;
+ ++t;
/* skip digits */
while (*t >= '0' && *t <= '9')
- t++;
+ ++t;
}
/* save the length of the real part */
@@ -99,32 +145,32 @@
else {
/* skip an optional space */
if (*t == ' ')
- t++;
+ ++t;
/* expect "+" or "-" and the imaginary part */
if (*t == '+' || *t == '-') {
/* save the sign */
second_num_minus = (*t == '-');
- t++;
+ ++t;
/* skip another optional space */
if (*t == ' ')
- t++;
+ ++t;
/* save the beginning of the imaginary part */
second_num_offset = t;
/* skip digits */
while (*t >= '0' && *t <= '9')
- t++;
+ ++t;
if (*t == '.') {
/* this number has a decimal point */
- t++;
+ ++t;
/* skip digits */
while (*t >= '0' && *t <= '9')
- t++;
+ ++t;
}
/* save the length of the imaginary part */
@@ -132,7 +178,7 @@
/* allow for one more optional space */
if (*t == ' ')
- t++;
+ ++t;
/* verify that the string ends properly */
if ((*t != 'i' && *t != 'j') || (*(t+1) != 0)) {
@@ -193,23 +239,33 @@
}
static void
-int_check_divide_zero(PARROT_INTERP, INTVAL value) {
+int_check_divide_zero(PARROT_INTERP, INTVAL value)
+{
+ ASSERT_ARGS(int_check_divide_zero)
+
if (value == 0)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_DIV_BY_ZERO,
"Divide by zero");
}
static void
-float_check_divide_zero(PARROT_INTERP, FLOATVAL value) {
+float_check_divide_zero(PARROT_INTERP, FLOATVAL value)
+{
+ ASSERT_ARGS(float_check_divide_zero)
+
if (FLOAT_IS_ZERO(value))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_DIV_BY_ZERO,
"Divide by zero");
}
static void
-complex_check_divide_zero(PARROT_INTERP, PMC *value) {
+complex_check_divide_zero(PARROT_INTERP, ARGIN(PMC *value))
+{
+ ASSERT_ARGS(complex_check_divide_zero)
+
/* Throw an exception if we are dividing by zero. Check both the real part
* and the imaginary part.*/
+
if (FLOAT_IS_ZERO(VTABLE_get_number_keyed_int(interp, value, 0))
&& FLOAT_IS_ZERO(VTABLE_get_number_keyed_int(interp, value, 1)))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_DIV_BY_ZERO,
@@ -253,31 +309,31 @@
}
VTABLE void init_pmc(PMC *initializer) {
- const INTVAL arg_type = VTABLE_type(interp, initializer);
+ const INTVAL arg_type = VTABLE_type(INTERP, initializer);
SELF.init();
switch (arg_type) {
case enum_class_String:
- SELF.set_string_native(VTABLE_get_string(interp, initializer));
+ SELF.set_string_native(VTABLE_get_string(INTERP, initializer));
break;
case enum_class_FixedFloatArray:
case enum_class_ResizableFloatArray:
case enum_class_FixedIntegerArray:
case enum_class_ResizableIntegerArray:
- if (VTABLE_get_integer(interp, initializer) == 2) {
- FLOATVAL re = VTABLE_get_number_keyed_int(interp, initializer, 0);
- FLOATVAL im = VTABLE_get_number_keyed_int(interp, initializer, 1);
+ if (VTABLE_get_integer(INTERP, initializer) == 2) {
+ const FLOATVAL re = VTABLE_get_number_keyed_int(INTERP, initializer, 0);
+ const FLOATVAL im = VTABLE_get_number_keyed_int(INTERP, initializer, 1);
SET_ATTR_re(INTERP, SELF, re);
SET_ATTR_im(INTERP, SELF, im);
break;
}
/* else let it fall to default */
default:
- if (VTABLE_isa(interp, initializer, CONST_STRING(interp, "String"))) {
- STRING * s = VTABLE_get_string(interp, initializer);
+ if (VTABLE_isa(INTERP, initializer, CONST_STRING(INTERP, "String"))) {
+ STRING * const s = VTABLE_get_string(INTERP, initializer);
SELF.set_string_native(s);
}
else {
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Invalid Complex initializer");
}
@@ -424,14 +480,14 @@
GET_ATTR_im(INTERP, SELF, value);
}
else
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Complex: key is neither 'real' or 'imag'");
return value;
}
VTABLE PMC *get_pmc_keyed(PMC *key) {
- if (VTABLE_isa(interp, key, CONST_STRING(interp, "Integer"))) {
- const INTVAL i = VTABLE_get_integer(interp, key);
+ if (VTABLE_isa(INTERP, key, CONST_STRING(INTERP, "Integer"))) {
+ const INTVAL i = VTABLE_get_integer(INTERP, key);
return SELF.get_pmc_keyed_int(i);
}
else {
@@ -491,7 +547,7 @@
GET_ATTR_im(INTERP, SELF, f);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Complex: key must be 0 or 1");
}
return f;
@@ -506,7 +562,7 @@
SET_ATTR_im(INTERP, SELF, v);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Complex: key must be 0 or 1");
}
}
@@ -592,8 +648,8 @@
}
VTABLE void set_number_keyed(PMC *key, FLOATVAL value) {
- if (VTABLE_isa(interp, key, CONST_STRING(interp, "Integer"))) {
- const INTVAL i = VTABLE_get_integer(interp, key);
+ if (VTABLE_isa(INTERP, key, CONST_STRING(INTERP, "Integer"))) {
+ const INTVAL i = VTABLE_get_integer(INTERP, key);
SELF.set_number_keyed_int(i, value);
}
else {
@@ -610,7 +666,7 @@
SET_ATTR_im(INTERP, SELF, value);
}
else
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION, "Complex: key is neither 'real' or 'imag'");
}
@@ -1805,12 +1861,12 @@
PMC *log;
PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
- Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(interp, "ln"),
+ Parrot_pcc_invoke_method_from_c_args(INTERP, SELF, CONST_STRING(INTERP, "ln"),
"->P", &log);
l = VTABLE_multiply(INTERP, log, value, l);
- Parrot_pcc_invoke_method_from_c_args(interp, l, CONST_STRING(interp, "exp"),
+ Parrot_pcc_invoke_method_from_c_args(INTERP, l, CONST_STRING(INTERP, "exp"),
"->P", &dest);
RETURN(PMC *dest);
}
Modified: branches/ops_pct/src/pmc/continuation.pmc
==============================================================================
--- branches/ops_pct/src/pmc/continuation.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/continuation.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -36,6 +36,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
/*
* A Continuation (and RetContinuation, ExceptionHandler) has in its
@@ -53,6 +57,7 @@
ATTR PMC *from_ctx; /* sub, this cont is returning from */
ATTR int runloop_id; /* id of the creating runloop. */
ATTR int invoked; /* flag when a handler has been invoked. */
+
/*
=item C<void init()>
@@ -74,18 +79,21 @@
SET_ATTR_address(INTERP, SELF, NULL);
PObj_custom_mark_SET(SELF);
-
- /* PANIC("don't do that"); */
- /*
- * Whenever we create a continuation, all return continuations
- * up the call chain may be reused due to invoking the
- * continuation. To avoid that all return continuations are
- * converted to true continuations.
- */
- invalidate_retc_context(INTERP, SELF);
}
- /*if they pass in a PMC to initialize with*/
+
+/*
+
+=item C<void init_pmc(PMC *continuation)>
+
+Initializes the continuation with values from the provided continuation.
+
+=cut
+
+*/
+
+
+ /* if they pass in a PMC to initialize with */
VTABLE void init_pmc(PMC *values) {
PMC *to_ctx;
opcode_t *address;
@@ -105,19 +113,9 @@
SET_ATTR_address(INTERP, SELF, address);
PObj_custom_mark_SET(SELF);
-
- /* PANIC("don't do that"); */
- /*
- * Whenever we create a continuation, all return continuations
- * up the call chain may be reused due to invoking the
- * continuation. To avoid that all return continuations are
- * converted to true continuations.
- */
- invalidate_retc_context(INTERP, SELF);
}
-
/*
=item C<void mark()>
@@ -145,6 +143,7 @@
Parrot_gc_mark_PMC_alive(INTERP, tmp);
}
+
/*
=item C<PMC *clone()>
@@ -160,25 +159,27 @@
return Parrot_pmc_new_init(INTERP, SELF->vtable->base_type, SELF);
}
+
/*
=item C<PMC *set_pmc()>
-Assign context.
+Assigns context.
=cut
*/
VTABLE void set_pmc(PMC *src) {
- STRUCT_COPY((Parrot_Continuation_attributes *)PMC_data(SELF),
- (Parrot_Continuation_attributes *)PMC_data(src));
+ STRUCT_COPY(PMC_data_typed(SELF, Parrot_Continuation_attributes *),
+ PMC_data_typed(src, Parrot_Continuation_attributes *));
}
+
/*
=item C<void set_pointer(void *value)>
-Sets the pointer to the return instruction. Also captures the descriptor
-address for any returned values.
+Sets the pointer to the given return instruction and captures the runloop id
+for any returned values.
=cut
@@ -189,6 +190,7 @@
SET_ATTR_runloop_id(INTERP, SELF, INTERP->current_runloop_id);
}
+
/*
=item C<void *get_pointer()>
@@ -203,10 +205,10 @@
opcode_t *address;
GET_ATTR_address(INTERP, SELF, address);
-
return address;
}
+
/*
=item C<INTVAL defined()>
@@ -223,18 +225,18 @@
opcode_t *address;
GET_ATTR_address(INTERP, SELF, address);
-
return address != NULL;
}
+
VTABLE INTVAL get_bool() {
opcode_t *address;
GET_ATTR_address(INTERP, SELF, address);
-
return address != NULL;
}
+
/*
=item C<opcode_t *invoke(void *next)>
@@ -261,21 +263,8 @@
Parrot_continuation_check(INTERP, SELF);
Parrot_continuation_rewind_environment(INTERP, SELF);
- if (!PMC_IS_NULL(from_obj)) {
- STRING * const string_sig = VTABLE_get_string(INTERP, from_obj);
- /* If there is no string - there is no args */
- if (string_sig) {
- PMC *raw_sig, *invalid_sig;
- Parrot_pcc_parse_signature_string(INTERP, string_sig, &raw_sig, &invalid_sig);
-
- /* Build results signature for continuation */
- if (*pc == PARROT_OP_get_results_pc)
- call_obj = Parrot_pcc_build_sig_object_returns_from_op(INTERP, call_obj,
- Parrot_pcc_get_pmc_constant(INTERP, to_ctx, pc[1]), pc);
-
- Parrot_pcc_fill_returns_from_continuation(INTERP, call_obj, raw_sig, from_obj);
- }
- }
+ if (!PMC_IS_NULL(from_obj))
+ Parrot_pcc_set_signature(INTERP, CURRENT_CONTEXT(INTERP), from_obj);
/* switch segment */
if (INTERP->code != seg)
@@ -284,11 +273,12 @@
return pc;
}
+
/*
=item C<STRING *get_string()>
-Experimental: return caller info as a STRING.
+Experimental: returns caller info as a STRING.
=cut
@@ -298,15 +288,15 @@
PMC *to_ctx;
GET_ATTR_to_ctx(INTERP, SELF, to_ctx);
-
return Parrot_Context_infostr(INTERP, to_ctx);
}
+
/*
=item C<PMC *caller()>
-Experimental: return caller PMC or PMCNULL if none.
+Experimental: return callers PMC or PMCNULL if none.
=cut
@@ -331,11 +321,13 @@
RETURN(PMC *caller);
}
+
+
/*
=item C<PMC *continuation()>
-Experimental: return continuation PMC of this Continuation or PMCNULL if none.
+Experimental: returns continuation PMC of this Continuation or PMCNULL if none.
=cut
@@ -359,10 +351,6 @@
=back
-=head1 HISTORY
-
-Initial revision by sean 2002/08/04.
-
=cut
*/
Modified: branches/ops_pct/src/pmc/coroutine.pmc
==============================================================================
--- branches/ops_pct/src/pmc/coroutine.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/coroutine.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -32,8 +32,23 @@
#include "parrot/oplib/ops.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void print_sub_name(PARROT_INTERP, ARGIN(PMC *sub_pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_print_sub_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(sub_pmc))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+
static void
-print_sub_name(PARROT_INTERP, PMC *sub_pmc)
+print_sub_name(PARROT_INTERP, ARGIN(PMC *sub_pmc))
{
/* It's actually a Parrot_coroutine, but this avoids casting warnings. */
PMC *ctx;
@@ -48,7 +63,7 @@
"Calling" : "yielding from",
Parrot_full_sub_name(interp, sub_pmc));
- if (ctx && (PObj_get_FLAGS(sub_pmc) & SUB_FLAG_CORO_FF)) {
+ if (!PMC_IS_NULL(ctx) && (PObj_get_FLAGS(sub_pmc) & SUB_FLAG_CORO_FF)) {
Parrot_io_eprintf(tracer, " to '%Ss'",
Parrot_full_sub_name(interp,
Parrot_pcc_get_sub(interp, Parrot_pcc_get_caller_ctx(interp, ctx))));
@@ -105,9 +120,6 @@
(Parrot_Coroutine_attributes *)PMC_data(SELF),
sizeof (Parrot_Coroutine_attributes));
- GET_ATTR_name(INTERP, ret, name);
- SET_ATTR_name(INTERP, ret, Parrot_str_copy(INTERP, name));
-
return ret;
}
@@ -140,6 +152,8 @@
opcode_t *dest;
PackFile_ByteCode *wanted_seg;
opcode_t * const next_op = (opcode_t *)next;
+ PMC * const signature = Parrot_pcc_get_signature(INTERP,
+ CURRENT_CONTEXT(INTERP));
if (Interp_trace_TEST(INTERP, PARROT_TRACE_SUB_CALL_FLAG))
print_sub_name(INTERP, SELF);
@@ -155,8 +169,10 @@
PMC *ctx = Parrot_pcc_get_signature(INTERP, caller_ctx);
PMC *ccont = INTERP->current_cont;
- if (ccont == NEED_CONTINUATION)
- ccont = (PMC *)new_ret_continuation_pmc(INTERP, next_op);
+ if (ccont == NEED_CONTINUATION) {
+ ccont = pmc_new(INTERP, enum_class_Continuation);
+ VTABLE_set_pointer(INTERP, ccont, next_op);
+ }
if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL)
Parrot_ex_throw_from_c_args(INTERP, NULL, CONTROL_ERROR,
@@ -181,7 +197,6 @@
Parrot_pcc_set_continuation(INTERP, ctx, ccont);
Parrot_pcc_set_object(INTERP, ctx, PMCNULL);
- INTERP->current_object = PMCNULL;
INTERP->current_cont = PMCNULL;
GET_ATTR_lex_info(INTERP, SELF, lex_info);
@@ -267,6 +282,8 @@
CURRENT_CONTEXT(INTERP) = to_ctx;
}
+ Parrot_pcc_set_signature(INTERP, CURRENT_CONTEXT(INTERP), signature);
+
/* toggle address */
GET_ATTR_address(INTERP, SELF, dest);
SET_ATTR_address(INTERP, SELF, (opcode_t *)next);
Deleted: branches/ops_pct/src/pmc/cpointer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/cpointer.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,511 +0,0 @@
-/*
-Copyright (C) 2008-2009, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/cpointer.pmc - CPointer
-
-=head1 DESCRIPTION
-
-The CPointer PMC creates a PMC abstraction for a typed C pointer. It is
-particularly used by the C<CallSignature> PMC, for the return values of a
-C-level PCC invocation using a C<CallSignature> to pass the arguments and fetch
-the results.
-
-=head2 Attributes
-
-A CPointer PMC has two attributes:
-
-=over 4
-
-=item pointer
-
-A C<void *> pointer to an integer, number, string, or PMC.
-
-=item sig
-
-A string signature for the pointer. The possible signature values follow the
-standard defined for PCC.
-
- I a Parrot integer (INTVAL)
- N a Parrot number (FLOATVAL)
- S a Parrot string (STRING *)
- P a Parrot object (PMC *)
-
-=back
-
-
-=head2 Vtable Functions
-
-These are the vtable functions for the CPointer class.
-
-=over 4
-
-=cut
-
-*/
-
-pmclass CPointer auto_attrs {
- ATTR void *pointer; /* The stored pointer. */
- ATTR STRING *sig; /* A string signature for the pointer. */
-
-/*
-
-=item C<void init()>
-
-Initializes the pointer object.
-
-=cut
-
-*/
-
- VTABLE void init() {
- SET_ATTR_pointer(INTERP, SELF, NULL);
- SET_ATTR_sig(INTERP, SELF, NULL);
-
- PObj_custom_mark_SET(SELF);
- }
-
-/*
-
-=item C<void mark()>
-
-Marks the signature as live. Also marks a STRING or PMC pointed to by the
-pointer.
-
-=cut
-
-*/
-
- VTABLE void mark() {
- STRING *sig;
- GET_ATTR_sig(INTERP, SELF, sig);
- if (sig) {
- void *pointer;
- GET_ATTR_pointer(INTERP, SELF, pointer);
- Parrot_gc_mark_STRING_alive(interp, sig);
- }
- }
-
-/*
-
-=item C<PMC *clone()>
-
-Creates and returns a clone of the pointer.
-
-=cut
-
-*/
-
- VTABLE PMC *clone() {
- PMC * const dest = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
- void *ptr;
- STRING *sig;
-
- GET_ATTR_pointer(INTERP, SELF, ptr);
- SET_ATTR_pointer(INTERP, dest, ptr);
-
- GET_ATTR_sig(INTERP, SELF, sig);
- SET_ATTR_sig(INTERP, dest, sig);
-
- PObj_custom_mark_SET(dest);
- return dest;
- }
-
-/*
-
-=item C<void *get_pointer()>
-
-Returns the pointer.
-
-=cut
-
-*/
-
- VTABLE void *get_pointer() {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- return data->pointer;
- }
-
-/*
-
-=item C<void set_pointer(void *)>
-
-Sets the pointer.
-
-=cut
-
-*/
-
- VTABLE void set_pointer(void *value) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- data->pointer = value;
- }
-
-/*
-
-=item C<STRING *get_string_keyed_str(STRING *key)>
-
-Returns the string signature.
-
-=cut
-
-*/
-
- VTABLE STRING *get_string_keyed_str(STRING *key) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- UNUSED(key)
-
- return data->sig;
- }
-
-/*
-
-=item C<void set_string_keyed_str(STRING *key, STRING *value)>
-
-Sets the string signature.
-
-=cut
-
-*/
-
- VTABLE void set_string_keyed_str(STRING *key, STRING *value) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- UNUSED(key)
-
- data->sig = value;
- }
-
-/*
-
-=item C<INTVAL get_integer()>
-
-Returns the integer value that the pointer points to (if the pointer is to an
-integer or PMC).
-
-=cut
-
-*/
-
- VTABLE INTVAL get_integer() {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- return *int_pointer;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- return (INTVAL)*num_pointer;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- return Parrot_str_to_int(INTERP, *str_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- return VTABLE_get_integer(INTERP, *pmc_pointer);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to fetch value, broken signature!");
- }
- }
-
-/*
-
-=item C<void set_integer_native(INTVAL value)>
-
-Sets the integer value that the pointer points to (if the pointer is to an
-integer or PMC).
-
-=cut
-
-*/
-
- VTABLE void set_integer_native(INTVAL value) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- *int_pointer = value;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- *num_pointer = value;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- *str_pointer = Parrot_str_from_int(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- *pmc_pointer = get_integer_pmc(INTERP, value);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to set value, broken signature!");
- }
- }
-
-/*
-
-=item C<FLOATVAL get_number()>
-
-Returns the floating point value that the pointer points to (if the pointer is
-to a number or PMC).
-
-=cut
-
-*/
-
- VTABLE FLOATVAL get_number() {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- return (FLOATVAL)*int_pointer;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- return *num_pointer;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- return Parrot_str_to_num(INTERP, *str_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- return VTABLE_get_number(INTERP, *pmc_pointer);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to fetch value, broken signature!");
- }
- }
-
-/*
-
-=item C<void set_number_native(FLOATVAL value)>
-
-Sets the floating point value that the pointer points to (if the pointer is
-to a number or PMC).
-
-=cut
-
-*/
-
- VTABLE void set_number_native(FLOATVAL value) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- *int_pointer = (INTVAL)value;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- *num_pointer = value;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- *str_pointer = Parrot_str_from_num(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- *pmc_pointer = get_number_pmc(INTERP, value);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to set value, broken signature!");
- }
- }
-
-/*
-
-=item C<STRING *get_string()>
-
-Returns the Parrot string value that the pointer points to (if the pointer is
-to a string or PMC).
-
-=cut
-
-*/
-
- VTABLE STRING *get_string() {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- return Parrot_str_from_int(INTERP, *int_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- return Parrot_str_from_num(INTERP, *num_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- return *str_pointer;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- return VTABLE_get_string(INTERP, *pmc_pointer);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to fetch value, broken signature!");
- }
- }
-
-/*
-
-=item C<void set_string_native(STRING *value)>
-
-Sets the Parrot string value that the pointer points to (if the pointer is
-to a string or PMC).
-
-=cut
-
-*/
-
- VTABLE void set_string_native(STRING *value) {
- Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- *int_pointer = Parrot_str_to_int(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- *num_pointer = Parrot_str_to_num(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- *str_pointer = value;
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- *pmc_pointer = get_string_pmc(INTERP, value);
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to set value, broken signature!");
- }
- }
-
-/*
-
-=item C<PMC *get_pmc()>
-
-Returns the PMC value that the pointer points to (if the pointer is to a PMC).
-
-=cut
-
-*/
-
- VTABLE PMC *get_pmc() {
- const Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- return get_integer_pmc(INTERP, *int_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- return get_number_pmc(INTERP, *num_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- return get_string_pmc(INTERP, *str_pointer);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- return *pmc_pointer;
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to fetch value, broken signature!");
- }
- }
-
-/*
-
-=item C<void set_pmc(PMC *value)>
-
-Sets the PMC value that the pointer points to (if the pointer is to a PMC).
-
-=cut
-
-*/
-
- VTABLE void set_pmc(PMC *value) {
- const Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
-
- if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "I"))) {
- INTVAL * const int_pointer = (INTVAL *) data->pointer;
- *int_pointer = VTABLE_get_integer(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "N"))) {
- FLOATVAL * const num_pointer = (FLOATVAL *) data->pointer;
- *num_pointer = VTABLE_get_number(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "S"))) {
- STRING ** const str_pointer = (STRING **) data->pointer;
- *str_pointer = VTABLE_get_string(INTERP, value);
- }
- else if (Parrot_str_equal(interp, data->sig, CONST_STRING(interp, "P"))) {
- PMC ** const pmc_pointer = (PMC **) data->pointer;
- *pmc_pointer = value;
- }
- else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "Unable to set value, broken signature!");
- }
- }
-
-/*
-
-=item C<INTVAL get_bool()>
-
-Returns whether the pointer is not C<NULL>.
-
-=cut
-
-*/
-
- VTABLE INTVAL get_bool() {
- const Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- return (INTVAL)(data->pointer != NULL);
- }
-
-/*
-
-=item C<INTVAL is_same(PMC *pmc2)>
-
-Returns whether the pointer has the same value as C<*pmc2>.
-
-=cut
-
-*/
-
- VTABLE INTVAL is_same(PMC *pmc2) {
- const Parrot_CPointer_attributes * const data = PARROT_CPOINTER(SELF);
- return (INTVAL)(SELF->vtable == pmc2->vtable &&
- data->pointer == VTABLE_get_pointer(interp, pmc2));
- }
-}
-
-/*
-
-=back
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_pct/src/pmc/default.pmc
==============================================================================
--- branches/ops_pct/src/pmc/default.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/default.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -26,9 +26,92 @@
/* undef 'interface' to keep MSVC happy */
#undef interface
+/* HEADERIZER HFILE: none */
+/* 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 STRING * caller(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
+ __attribute__nonnull__(1);
+
+PARROT_DOES_NOT_RETURN
+static void cant_do_method(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc), int index)
+ __attribute__nonnull__(1);
+
+PARROT_DOES_NOT_RETURN
+static void cant_do_write_method(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *pmc),
+ int index)
+ __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC* check_get_std_props(PARROT_INTERP,
+ ARGIN(const PMC *self),
+ ARGIN(const STRING *key))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL check_set_std_props(PARROT_INTERP,
+ ARGMOD(PMC *pmc),
+ ARGIN(const STRING *key),
+ ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*pmc);
+
+static INTVAL has_pending_std_props(ARGIN(const PMC *self))
+ __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static PMC* make_prop_hash(PARROT_INTERP, ARGMOD(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+static void propagate_std_props(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *prop_hash))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_caller __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_cant_do_method __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_cant_do_write_method __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_check_get_std_props __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_check_set_std_props __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_has_pending_std_props __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_make_prop_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_propagate_std_props __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(prop_hash))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/*
-=item C<static STRING *caller(PARROT_INTERP, PMC *pmc)>
+=item C<static STRING * caller(PARROT_INTERP, PMC *pmc)>
Returns a C string for the name of C<*pmc>.
@@ -36,19 +119,21 @@
*/
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static STRING *
-caller(PARROT_INTERP, PMC *pmc /*NULLOK*/)
+caller(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
{
- STRING * const null_str = CONST_STRING(interp, "(null)");
+ ASSERT_ARGS(caller)
- return pmc && pmc->vtable && pmc->vtable->whoami
- ? VTABLE_name(interp, pmc) : null_str;
+ return !PMC_IS_NULL(pmc) && pmc->vtable && pmc->vtable->whoami
+ ? VTABLE_name(interp, pmc)
+ : CONST_STRING(interp, "(null)");
}
/*
-=item C<static void cant_do_method(PARROT_INTERP, PMC *pmc,
- int index)>
+=item C<static void cant_do_method(PARROT_INTERP, PMC *pmc, int index)>
Throws an exception "$methname() not implemented in class '$class'", used by
all unimplemented messages.
@@ -59,8 +144,10 @@
PARROT_DOES_NOT_RETURN
static void
-cant_do_method(PARROT_INTERP, PMC *pmc /*NULLOK*/, int index)
+cant_do_method(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc), int index)
{
+ ASSERT_ARGS(cant_do_method)
+
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ILL_INHERIT,
"%s() not implemented in class '%Ss'",
Parrot_get_vtable_name(interp, index),
@@ -70,8 +157,7 @@
/*
-=item C<static void cant_do_write_method(PARROT_INTERP, PMC *pmc,
- int index)>
+=item C<static void cant_do_write_method(PARROT_INTERP, PMC *pmc, int index)>
Throws an exception "$methname() on read-only instance of '$class'", used by
all updating messages on read-only instances.
@@ -82,8 +168,10 @@
PARROT_DOES_NOT_RETURN
static void
-cant_do_write_method(PARROT_INTERP, PMC *pmc /*NULLOK*/, int index)
+cant_do_write_method(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc), int index)
{
+ ASSERT_ARGS(cant_do_write_method)
+
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_WRITE_TO_CONSTCLASS,
"%s() in read-only instance of '%Ss'",
Parrot_get_vtable_name(interp, index),
@@ -92,8 +180,8 @@
/*
-=item C<static INTVAL
-check_set_std_props(PARROT_INTERP, PMC *pmc, STRING *key, PMC *value)>
+=item C<static INTVAL check_set_std_props(PARROT_INTERP, PMC *pmc, const STRING
+*key, PMC *value)>
Called from C<setprop()>.
@@ -105,9 +193,12 @@
*/
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-check_set_std_props(PARROT_INTERP, PMC *pmc, STRING *key, PMC *value)
+check_set_std_props(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(const STRING *key), ARGIN(PMC *value))
{
+ ASSERT_ARGS(check_set_std_props)
+
/*
* s2 in Parrot_str_equal is freed here
*/
@@ -136,8 +227,8 @@
/*
-=item C<static void
-propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash)>
+=item C<static void propagate_std_props(PARROT_INTERP, PMC *self, PMC
+*prop_hash)>
Set pending standard properties in C<prop_hash>.
@@ -146,18 +237,20 @@
*/
static void
-propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash) {
+propagate_std_props(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *prop_hash))
+{
+ ASSERT_ARGS(propagate_std_props)
+
if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG)){
- PMC * const pmc_true = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, pmc_true, 1);
+ PMC * const pmc_true = Parrot_pmc_new_init_int(interp,
+ enum_class_Integer, 1);
VTABLE_set_pmc_keyed_str(interp, prop_hash, CONST_STRING(interp, "_ro"), pmc_true);
}
}
/*
-=item C<static INTVAL
-has_pending_std_props(ARGIN(const PMC *self))>
+=item C<static INTVAL has_pending_std_props(const PMC *self)>
Returns true if propagate_std_props() would create a non-empty prophash.
@@ -166,7 +259,10 @@
*/
static INTVAL
-has_pending_std_props(ARGIN(const PMC *self)) {
+has_pending_std_props(ARGIN(const PMC *self))
+{
+ ASSERT_ARGS(has_pending_std_props)
+
if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
return 1;
else
@@ -176,8 +272,8 @@
/*
-=item C<static PMC*
-check_get_std_props(PARROT_INTERPeter, PMC *self, STRING *key)>
+=item C<static PMC* check_get_std_props(PARROT_INTERP, const PMC *self, const
+STRING *key)>
Checks if we can infer the value of C<key> property from C<self> without
looking at its prophash. Returns C<PMCNULL> if not, returns the value otherwise.
@@ -185,12 +281,17 @@
=cut
*/
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC*
-check_get_std_props(PARROT_INTERP, PMC *self, STRING *key) {
+check_get_std_props(PARROT_INTERP, ARGIN(const PMC *self), ARGIN(const STRING *key))
+{
+ ASSERT_ARGS(check_get_std_props)
+
if ((self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
&& Parrot_str_equal(interp, key, CONST_STRING(interp, "_ro"))) {
- PMC * const ret_val = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, ret_val, 1);
+ PMC * const ret_val = Parrot_pmc_new_init_int(interp,
+ enum_class_Integer, 1);
return ret_val;
}
else
@@ -199,72 +300,27 @@
/*
-=item C<static PMC *
-make_prop_hash(PARROT_INTERP, PMC *self)>
+=item C<static PMC* make_prop_hash(PARROT_INTERP, PMC *self)>
Create a property hash for C<self>. Returns the created hash. Inferred
-properties will be added to the hash and it will be set as
-C<PMC_metadata(self)>.
+properties will be added to the hash.
=cut
*/
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
-make_prop_hash(PARROT_INTERP, PMC *self) {
- PMC *prop;
+make_prop_hash(PARROT_INTERP, ARGMOD(PMC *self))
+{
+ ASSERT_ARGS(make_prop_hash)
- PMC_metadata(self) = prop = Parrot_pmc_new(interp, enum_class_Hash);
+ PMC * const prop = Parrot_pmc_new(interp, enum_class_Hash);
propagate_std_props(interp, self, prop);
return prop;
}
-/*
-
-=item C<static INTVAL
-does_isa(PARROT_INTERP, STRING *method, STRING *what)>
-
-Compares C<*method> and C<*what>.
-Returns true (1) if B<method> is found in B<what>, false (0) otherwise.
-
-=cut
-
-*/
-
-static INTVAL
-does_isa(PARROT_INTERP, const STRING *method, const STRING *what)
-{
- INTVAL pos = 0;
- INTVAL length = Parrot_str_byte_length(interp, what);
-
- do {
- INTVAL len;
- INTVAL idx = Parrot_str_find_index(interp, what, method, (INTVAL)pos);
-
- if (idx < 0)
- return 0;
-
- pos = idx;
-
- if (pos >= length)
- return 0;
-
- len = Parrot_str_byte_length(interp, method);
-
- if (pos && Parrot_str_indexed(interp, what, pos - 1) != 32) {
- pos += len;
- continue;
- }
-
- if (pos + len < length && Parrot_str_indexed(interp, what, pos + len) != 32) {
- pos += len;
- continue;
- }
-
- return 1;
- } while (1);
-}
-
pmclass default abstract {
/*
@@ -300,9 +356,9 @@
if (PMC_IS_NULL(initializer))
SELF.init();
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ILL_INHERIT,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
"init_pmc() not implemented in class '%Ss'",
- caller(interp, pmc));
+ caller(INTERP, SELF));
}
/*
@@ -335,7 +391,7 @@
/* Ensure no looping, as Parrot_pmc_new calls the instantiate vtable entry for
* classes. */
if (PObj_is_class_TEST(SELF))
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"All high-level classes should override instantiate");
if (!PMC_IS_NULL(init))
@@ -371,7 +427,7 @@
VTABLE PMC *getprop(STRING *key) {
if (PMC_IS_NULL(PMC_metadata(SELF)))
- return check_get_std_props(interp, SELF, key);
+ return check_get_std_props(INTERP, SELF, key);
else
return VTABLE_get_pmc_keyed_str(INTERP, PMC_metadata(SELF), key);
}
@@ -391,7 +447,7 @@
return;
if (PMC_IS_NULL(PMC_metadata(SELF)))
- make_prop_hash(INTERP, SELF);
+ PMC_metadata(SELF) = make_prop_hash(INTERP, SELF);
VTABLE_set_pmc_keyed_str(INTERP, PMC_metadata(SELF), key, value);
}
@@ -424,7 +480,7 @@
VTABLE PMC *getprops() {
if (PMC_IS_NULL(PMC_metadata(SELF))) {
if (has_pending_std_props(SELF))
- return make_prop_hash(INTERP, SELF);
+ PMC_metadata(SELF) = make_prop_hash(INTERP, SELF);
else
return PMCNULL;
}
@@ -632,7 +688,7 @@
*/
VTABLE void morph(PMC* type) {
- Parrot_pmc_reuse(INTERP, SELF, VTABLE_get_integer(interp, type), 0);
+ Parrot_pmc_reuse(INTERP, SELF, VTABLE_get_integer(INTERP, type), 0);
}
/*
@@ -726,7 +782,7 @@
VTABLE INTVAL is_equal(PMC *value) {
INTVAL retval;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"is_equal", "PP->I", SELF, value, &retval);
return retval;
@@ -744,7 +800,7 @@
VTABLE INTVAL is_equal_num(PMC *value) {
INTVAL retval;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"is_equal_num", "PP->I", SELF, value, &retval);
return retval;
@@ -762,7 +818,7 @@
VTABLE INTVAL is_equal_string(PMC *value) {
INTVAL retval;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"is_equal_string", "PP->I", SELF, value, &retval);
return retval;
@@ -858,7 +914,7 @@
*/
VTABLE INTVAL does(STRING *_interface) {
- return does_isa(INTERP, _interface, SELF->vtable->provides_str);
+ return Parrot_pmc_type_does(INTERP, _interface, SELF->vtable->base_type);
}
/*
@@ -896,10 +952,10 @@
if (PMC_IS_NULL(lookup))
return 0;
- pmc_name = VTABLE_get_string(interp, lookup);
+ pmc_name = VTABLE_get_string(INTERP, lookup);
if (!isa_hash)
- return Parrot_str_equal(interp, SELF->vtable->whoami, pmc_name);
+ return Parrot_str_equal(INTERP, SELF->vtable->whoami, pmc_name);
return parrot_hash_exists(INTERP, isa_hash, (void *)pmc_name);
}
@@ -917,9 +973,9 @@
*/
VTABLE INTVAL isa(STRING *_class) {
- Hash * const isa_hash = SELF->vtable->isa_hash;
+ const Hash * const isa_hash = SELF->vtable->isa_hash;
if (!isa_hash)
- return Parrot_str_equal(interp, SELF->vtable->whoami, _class);
+ return Parrot_str_equal(INTERP, SELF->vtable->whoami, _class);
return parrot_hash_exists(INTERP, isa_hash, (void *)_class);
}
@@ -935,17 +991,16 @@
*/
VTABLE PMC *inspect_str(STRING *name) {
- if (Parrot_str_equal(interp, name, CONST_STRING(interp, "flags"))) {
- PMC *found = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, found,
+ if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "flags"))) {
+ PMC *found = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
(INTVAL)PObj_get_FLAGS(SELF));
return found;
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "mro"))) {
- return VTABLE_clone(interp, SELF->vtable->mro);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "mro"))) {
+ return VTABLE_clone(INTERP, SELF->vtable->mro);
}
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Unknown introspection value '%S'", name);
}
@@ -960,11 +1015,11 @@
*/
VTABLE PMC *inspect() {
- PMC *metadata = Parrot_pmc_new(interp, enum_class_Hash);
- STRING * const flags_str = CONST_STRING(interp, "flags");
+ PMC * const metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
+ STRING * const flags_str = CONST_STRING(INTERP, "flags");
- VTABLE_set_pmc_keyed_str(interp, metadata, flags_str,
- VTABLE_inspect_str(interp, SELF, flags_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, flags_str,
+ VTABLE_inspect_str(INTERP, SELF, flags_str));
return metadata;
}
@@ -979,17 +1034,15 @@
*/
VTABLE PMC *get_class() {
- PMC *ns = VTABLE_get_namespace(interp, SELF);
+ PMC * const ns = VTABLE_get_namespace(INTERP, SELF);
PMC *_class = PMCNULL;
if (!PMC_IS_NULL(ns))
- _class = VTABLE_get_class(interp, ns);
+ _class = VTABLE_get_class(INTERP, ns);
if (PMC_IS_NULL(_class)) {
- INTVAL type = VTABLE_type(interp, SELF);
- PMC *type_num = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, type_num, type);
- return Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
+ const INTVAL type = VTABLE_type(INTERP, SELF);
+ return Parrot_pmc_new_init_int(INTERP, enum_class_PMCProxy, type);
}
return _class;
@@ -1034,10 +1087,10 @@
VTABLE void add_parent(PMC *parent) {
UNUSED(parent)
if (!PObj_is_class_TEST(SELF))
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"Only classes can be subclassed");
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"All classes should override add_parent");
}
@@ -1065,7 +1118,7 @@
*/
VTABLE PMC* clone() {
- return Parrot_thaw(interp, Parrot_freeze(interp, SELF));
+ return Parrot_thaw(INTERP, Parrot_freeze(INTERP, SELF));
}
/*
@@ -1125,7 +1178,7 @@
VTABLE PMC *add(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"add", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1142,7 +1195,7 @@
VTABLE PMC *add_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"add_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1176,7 +1229,7 @@
*/
VTABLE void i_add(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_add", "PP", SELF, value);
}
@@ -1191,7 +1244,7 @@
*/
VTABLE void i_add_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_add_int", "PI", SELF, value);
}
@@ -1206,7 +1259,7 @@
*/
VTABLE void i_add_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_add_float", "PN", SELF, value);
}
@@ -1222,7 +1275,7 @@
VTABLE PMC *subtract(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"subtract", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1239,7 +1292,7 @@
VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"subtract_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1256,7 +1309,7 @@
VTABLE PMC *subtract_float(FLOATVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"subtract_float", "PNP->P", SELF, value, dest, &result);
return result;
}
@@ -1272,7 +1325,7 @@
*/
VTABLE void i_subtract(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_subtract", "PP", SELF, value);
}
@@ -1287,7 +1340,7 @@
*/
VTABLE void i_subtract_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_subtract_int", "PI", SELF, value);
}
@@ -1302,7 +1355,7 @@
*/
VTABLE void i_subtract_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_subtract_float", "PN", SELF, value);
}
@@ -1318,7 +1371,7 @@
VTABLE PMC *multiply(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"multiply", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1335,7 +1388,7 @@
VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"multiply_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1352,7 +1405,7 @@
VTABLE PMC *multiply_float(FLOATVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"multiply_float", "PNP->P", SELF, value, dest, &result);
return result;
}
@@ -1368,7 +1421,7 @@
*/
VTABLE void i_multiply(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_multiply", "PP", SELF, value);
}
@@ -1383,7 +1436,7 @@
*/
VTABLE void i_multiply_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_multiply_int", "PI", SELF, value);
}
@@ -1398,7 +1451,7 @@
*/
VTABLE void i_multiply_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_multiply_float", "PN", SELF, value);
}
@@ -1414,7 +1467,7 @@
VTABLE PMC *divide(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"divide", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1431,7 +1484,7 @@
VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"divide_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1448,7 +1501,7 @@
VTABLE PMC *divide_float(FLOATVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"divide_float", "PNP->P", SELF, value, dest, &result);
return result;
}
@@ -1464,7 +1517,7 @@
*/
VTABLE void i_divide(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_divide", "PP", SELF, value);
}
@@ -1479,7 +1532,7 @@
*/
VTABLE void i_divide_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_divide_int", "PI", SELF, value);
}
@@ -1494,7 +1547,7 @@
*/
VTABLE void i_divide_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_divide_float", "PN", SELF, value);
}
@@ -1510,7 +1563,7 @@
VTABLE PMC *floor_divide(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"floor_divide", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1527,7 +1580,7 @@
VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"floor_divide_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1544,7 +1597,7 @@
VTABLE PMC *floor_divide_float(FLOATVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"floor_divide_float", "PNP->P", SELF, value, dest, &result);
return result;
}
@@ -1560,7 +1613,7 @@
*/
VTABLE void i_floor_divide(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_floor_divide", "PP", SELF, value);
}
@@ -1575,7 +1628,7 @@
*/
VTABLE void i_floor_divide_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_floor_divide_int", "PI", SELF, value);
}
@@ -1590,7 +1643,7 @@
*/
VTABLE void i_floor_divide_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_floor_divide_float", "PN", SELF, value);
}
@@ -1606,7 +1659,7 @@
VTABLE PMC *modulus(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"modulus", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1623,7 +1676,7 @@
VTABLE PMC *modulus_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"modulus_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1640,7 +1693,7 @@
VTABLE PMC *modulus_float(FLOATVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"modulus_float", "PNP->P", SELF, value, dest, &result);
return result;
}
@@ -1656,7 +1709,7 @@
*/
VTABLE void i_modulus(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_modulus", "PP", SELF, value);
}
@@ -1671,7 +1724,7 @@
*/
VTABLE void i_modulus_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_modulus_int", "PI", SELF, value);
}
@@ -1686,7 +1739,7 @@
*/
VTABLE void i_modulus_float(FLOATVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_modulus_float", "PN", SELF, value);
}
@@ -1708,7 +1761,7 @@
if (SELF == value)
return 0;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"cmp", "PP->I", SELF, value, &retval);
return retval;
@@ -1726,7 +1779,7 @@
VTABLE INTVAL cmp_num(PMC *value) {
INTVAL retval;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"cmp_num", "PP->I", SELF, value, &retval);
return retval;
@@ -1744,7 +1797,7 @@
VTABLE INTVAL cmp_string(PMC *value) {
INTVAL retval;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"cmp_string", "PP->I", SELF, value, &retval);
return retval;
@@ -1766,9 +1819,9 @@
/* Don't multidispatch if you've got two pointers to the same PMC. They
* are equal. */
if (SELF == value)
- return 0;
+ return NULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"cmp_pmc", "PP->P", SELF, value, &retval);
return retval;
@@ -1785,7 +1838,7 @@
VTABLE PMC *logical_or(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"logical_or", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1802,7 +1855,7 @@
VTABLE PMC *logical_and(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"logical_and", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1819,7 +1872,7 @@
VTABLE PMC *logical_xor(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"logical_xor", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1836,7 +1889,7 @@
VTABLE PMC *concatenate(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"concatenate", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1853,7 +1906,7 @@
VTABLE PMC *concatenate_str(STRING *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"concatenate_str", "PSP->P", SELF, value, dest, &result);
return result;
}
@@ -1869,7 +1922,7 @@
*/
VTABLE void i_concatenate(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_concatenate", "PP", SELF, value);
}
@@ -1884,7 +1937,7 @@
*/
VTABLE void i_concatenate_str(STRING *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_concatenate_str", "PS", SELF, value);
}
@@ -1900,7 +1953,7 @@
VTABLE PMC *repeat(PMC *value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"repeat", "PPP->P", SELF, value, dest, &result);
return result;
}
@@ -1917,7 +1970,7 @@
VTABLE PMC *repeat_int(INTVAL value, PMC *dest) {
PMC *result = PMCNULL;
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"repeat_int", "PIP->P", SELF, value, dest, &result);
return result;
}
@@ -1933,7 +1986,7 @@
*/
VTABLE void i_repeat(PMC *value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_repeat", "PP", SELF, value);
}
@@ -1948,7 +2001,7 @@
*/
VTABLE void i_repeat_int(INTVAL value) {
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"i_repeat_int", "PI", SELF, value);
}
}
Modified: branches/ops_pct/src/pmc/env.pmc
==============================================================================
--- branches/ops_pct/src/pmc/env.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/env.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -35,6 +35,11 @@
# endif /* __APPLE_CC__ */
#endif /* !WIN32 */
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+
static PMC *Env_PMC;
pmclass Env singleton provides hash {
@@ -92,7 +97,7 @@
INTVAL rv = 0;
while (environ[rv] != NULL)
- rv++;
+ ++rv;
return rv;
}
@@ -149,15 +154,15 @@
VTABLE STRING *get_string_keyed_str(STRING *key) {
if (!STRING_IS_EMPTY(key)) {
- char * const val = Parrot_getenv(interp, key);
+ const char * const val = Parrot_getenv(INTERP, key);
if (val) {
- STRING * const retval = Parrot_str_new(interp, val, 0);
+ STRING * const retval = Parrot_str_new(INTERP, val, 0);
return retval;
}
}
- return string_from_literal(interp, "");
+ return string_from_literal(INTERP, "");
}
VTABLE STRING *get_string_keyed(PMC *key) {
@@ -178,12 +183,12 @@
VTABLE STRING *get_string_keyed_int(INTVAL pos) {
if (pos < 0 || pos >= SELF.elements()) {
- return string_from_literal(interp, "");
+ return string_from_literal(INTERP, "");
}
else {
const char * const envp = environ[pos];
const char * const p = strchr(envp, '=');
- return Parrot_str_new(interp, envp, (UINTVAL)(p - envp));
+ return Parrot_str_new(INTERP, envp, (UINTVAL)(p - envp));
}
}
@@ -198,14 +203,13 @@
*/
VTABLE PMC *get_pmc_keyed(PMC *key) {
- STRING *keyname = VTABLE_get_string(INTERP, key);
+ STRING * const keyname = VTABLE_get_string(INTERP, key);
- char *val = NULL;
STRING *retval = NULL;
PMC *return_pmc;
if (!STRING_IS_EMPTY(keyname)) {
- val = Parrot_getenv(INTERP, keyname);
+ const char * const val = Parrot_getenv(INTERP, keyname);
if (val) {
retval = Parrot_str_new(INTERP, val, 0);
@@ -232,7 +236,7 @@
*/
VTABLE void set_string_keyed(PMC *key, STRING *value) {
- STRING *keyname = VTABLE_get_string(INTERP, key);
+ STRING * const keyname = VTABLE_get_string(INTERP, key);
if (keyname && value)
Parrot_setenv(INTERP, keyname, value);
@@ -249,8 +253,8 @@
*/
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
- STRING * keyname = VTABLE_get_string(INTERP, key);
- STRING * str_value = VTABLE_get_string(INTERP, value);
+ STRING * const keyname = VTABLE_get_string(INTERP, key);
+ STRING * const str_value = VTABLE_get_string(INTERP, value);
if (keyname && str_value)
Parrot_setenv(INTERP, keyname, str_value);
@@ -267,12 +271,12 @@
*/
VTABLE INTVAL exists_keyed(PMC *pmckey) {
- STRING *keyname = VTABLE_get_string(INTERP, pmckey);
+ STRING * const keyname = VTABLE_get_string(INTERP, pmckey);
if (!STRING_IS_EMPTY(keyname)) {
- char * const val = Parrot_getenv(interp, keyname);
+ const char * const val = Parrot_getenv(INTERP, keyname);
- if (val) {
+ if (val != NULL) {
return 1;
}
}
@@ -291,12 +295,12 @@
*/
VTABLE void delete_keyed(PMC *key) {
- STRING *keyname = VTABLE_get_string(INTERP, key);
+ STRING * const keyname = VTABLE_get_string(INTERP, key);
if (!STRING_IS_EMPTY(keyname)) {
- char * const val = Parrot_getenv(INTERP, keyname);
+ const char * const val = Parrot_getenv(INTERP, keyname);
- if (val) {
+ if (val != NULL) {
Parrot_unsetenv(INTERP, keyname);
}
}
Modified: branches/ops_pct/src/pmc/eval.pmc
==============================================================================
--- branches/ops_pct/src/pmc/eval.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/eval.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -21,11 +21,44 @@
#include "pmc/pmc_sub.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void clear_fixups(PARROT_INTERP,
+ ARGIN(const Parrot_Sub_attributes *sub_data))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC* get_sub(PARROT_INTERP, ARGIN(PMC *self), int idx)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void mark_subs(PARROT_INTERP, ARGIN(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_clear_fixups __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(sub_data))
+#define ASSERT_ARGS_get_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+#define ASSERT_ARGS_mark_subs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
static void
-clear_fixups(PARROT_INTERP, Parrot_Sub_attributes *sub_data)
+clear_fixups(PARROT_INTERP, ARGIN(const Parrot_Sub_attributes *sub_data))
{
+ ASSERT_ARGS(clear_fixups)
+
INTVAL i;
- PackFile_ByteCode *seg = sub_data->seg;
+ PackFile_ByteCode * const seg = sub_data->seg;
PackFile_FixupTable *ft;
PackFile_ConstTable *ct;
@@ -40,21 +73,25 @@
if (!ct)
return;
- for (i = 0; i < ft->fixup_count; i++) {
- PackFile_FixupEntry *e = ft->fixups[i];
+ for (i = 0; i < ft->fixup_count; ++i) {
+ PackFile_FixupEntry * const e = ft->fixups + i;
if (e->type == enum_fixup_sub) {
opcode_t ci = e->offset;
ct->constants[ci]->u.key = NULL;
- ft->fixups[i]->type = 0;
+ e->type = 0;
}
}
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC*
-get_sub(PARROT_INTERP, PMC *self, int idx)
+get_sub(PARROT_INTERP, ARGIN(PMC *self), int idx)
{
+ ASSERT_ARGS(get_sub)
+
INTVAL i, n;
Parrot_Sub_attributes *sub;
PackFile_ByteCode *seg;
@@ -75,8 +112,8 @@
if (!ct)
return PMCNULL;
- for (i = n = 0; i < ft->fixup_count; i++) {
- PackFile_FixupEntry *e = ft->fixups[i];
+ for (i = n = 0; i < ft->fixup_count; ++i) {
+ const PackFile_FixupEntry * const e = ft->fixups + i;
if (e->type == enum_fixup_sub) {
opcode_t ci = e->offset;
@@ -90,8 +127,10 @@
}
static void
-mark_subs(PARROT_INTERP, PMC *self)
+mark_subs(PARROT_INTERP, ARGIN(PMC *self))
{
+ ASSERT_ARGS(mark_subs)
+
Parrot_Sub_attributes *sub;
PackFile_ByteCode *seg;
PackFile_FixupTable *ft;
@@ -112,8 +151,8 @@
if (!ct)
return;
- for (i = 0; i < ft->fixup_count; i++) {
- PackFile_FixupEntry *e = ft->fixups[i];
+ for (i = 0; i < ft->fixup_count; ++i) {
+ const PackFile_FixupEntry * const e = ft->fixups + i;
if (e->type == enum_fixup_sub) {
opcode_t ci = e->offset;
@@ -185,8 +224,8 @@
}
/* XXX Quick and dirty fix for TT #995 */
- if ((struct PackFile *)cur_cs == interp->initial_pf
- || cur_cs == interp->code) {
+ if ((struct PackFile *)cur_cs == INTERP->initial_pf
+ || cur_cs == INTERP->code) {
SUPER();
return;
}
@@ -210,14 +249,9 @@
cur_cs->fixups = NULL;
}
-/* XXX Commenting out this to fix TT #995 and related problems.
- * May leak some memory, need further revision.
-
seg = (PackFile_Segment *)cur_cs;
if (seg)
PackFile_Segment_destroy(INTERP, seg);
- * XXX End of commented out section.
- */
sub_data->seg = NULL;
@@ -370,7 +404,7 @@
/*
* TT #1292 this isn't ok - it seems that the packfile
- * gets attached to interp->code and is
+ * gets attached to INTERP->code and is
* destroyed again during interpreter destruction
*/
/* PackFile_destroy(INTERP, pf); */
@@ -382,7 +416,7 @@
PackFile_ByteCode *seg;
PackFile_FixupTable *ft;
- PMC_get_sub(interp, SELF, sub);
+ PMC_get_sub(INTERP, SELF, sub);
seg = sub->seg;
if (!seg)
@@ -392,11 +426,11 @@
if (!ft)
return 0;
- for (i = n = 0; i < ft->fixup_count; i++) {
- PackFile_FixupEntry *e = ft->fixups[i];
+ for (i = n = 0; i < ft->fixup_count; ++i) {
+ const PackFile_FixupEntry * const e = ft->fixups + i;
if (e->type == enum_fixup_sub)
- n++;
+ ++n;
}
return n;
Modified: branches/ops_pct/src/pmc/eventhandler.pmc
==============================================================================
--- branches/ops_pct/src/pmc/eventhandler.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/eventhandler.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -19,6 +19,11 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+
pmclass EventHandler extends Sub auto_attrs {
ATTR STRING *type; /* the type of the event to handle */
@@ -162,9 +167,9 @@
Parrot_EventHandler_attributes * const e = PARROT_EVENTHANDLER(SELF);
if (e)
- return Parrot_str_copy(INTERP, e->type);
+ return e->type;
- return string_from_literal(INTERP, "");
+ return CONST_STRING(INTERP, "");
}
/*
@@ -212,7 +217,7 @@
Parrot_EventHandler_attributes * const e = PARROT_EVENTHANDLER(SELF);
PMC *value = PMCNULL;
- if (Parrot_str_equal(interp, name, CONST_STRING(interp, "code"))) {
+ if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "code"))) {
value = e->code;
}
@@ -269,15 +274,15 @@
METHOD can_handle(PMC *event) {
if (event->vtable->base_type == enum_class_Task) {
- PMC * const type = VTABLE_get_attr_str(interp, event, CONST_STRING(interp, "type"));
- STRING * const type_str = VTABLE_get_string(interp, type);
+ PMC * const type = VTABLE_get_attr_str(INTERP, event, CONST_STRING(INTERP, "type"));
+ STRING * const type_str = VTABLE_get_string(INTERP, type);
- if (Parrot_str_equal(interp, type_str, CONST_STRING(interp, "event"))) {
+ if (Parrot_str_equal(INTERP, type_str, CONST_STRING(INTERP, "event"))) {
Parrot_EventHandler_attributes * const handler_struct = PARROT_EVENTHANDLER(SELF);
- PMC * const subtype = VTABLE_get_attr_str(interp, event, CONST_STRING(interp, "subtype"));
- STRING * const subtype_str = VTABLE_get_string(interp, subtype);
+ PMC * const subtype = VTABLE_get_attr_str(INTERP, event, CONST_STRING(INTERP, "subtype"));
+ STRING * const subtype_str = VTABLE_get_string(INTERP, subtype);
- if (Parrot_str_equal(interp, subtype_str, handler_struct->type)) {
+ if (Parrot_str_equal(INTERP, subtype_str, handler_struct->type)) {
RETURN(INTVAL 1);
}
}
Modified: branches/ops_pct/src/pmc/exception.pmc
==============================================================================
--- branches/ops_pct/src/pmc/exception.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/exception.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -52,6 +52,10 @@
#include "parrot/exceptions.h"
#include "pmc/pmc_sub.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Exception auto_attrs {
ATTR INTVAL id; /* The task ID in the scheduler. */
@@ -109,17 +113,17 @@
INTVAL severity_val;
STRING *message_val;
- INTVAL ishash = VTABLE_isa(interp, values, CONST_STRING(interp, 'Hash'));
+ const INTVAL ishash = VTABLE_isa(INTERP, values, CONST_STRING(INTERP, 'Hash'));
if (ishash) {
- STRING * const severity = CONST_STRING(interp, "severity");
- STRING * const message = CONST_STRING(interp, "message");
- severity_val = VTABLE_get_integer_keyed_str(interp, values, severity);
- message_val = VTABLE_get_string_keyed_str(interp, values, message);
+ STRING * const severity = CONST_STRING(INTERP, "severity");
+ STRING * const message = CONST_STRING(INTERP, "message");
+ severity_val = VTABLE_get_integer_keyed_str(INTERP, values, severity);
+ message_val = VTABLE_get_string_keyed_str(INTERP, values, message);
}
else {
severity_val = EXCEPT_error;
- message_val = VTABLE_get_string(interp, values);
+ message_val = VTABLE_get_string(INTERP, values);
}
/* Set flags for custom GC mark. */
@@ -149,13 +153,13 @@
VTABLE void mark() {
Parrot_Exception_attributes * const core_struct = PARROT_EXCEPTION(SELF);
- Parrot_gc_mark_STRING_alive(interp, core_struct->message);
- Parrot_gc_mark_PMC_alive(interp, core_struct->payload);
- Parrot_gc_mark_PMC_alive(interp, core_struct->resume);
- Parrot_gc_mark_PMC_alive(interp, core_struct->backtrace);
- Parrot_gc_mark_PMC_alive(interp, core_struct->handler_iter);
- Parrot_gc_mark_PMC_alive(interp, core_struct->handler_ctx);
- Parrot_gc_mark_PMC_alive(interp, core_struct->thrower);
+ Parrot_gc_mark_STRING_alive(INTERP, core_struct->message);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->payload);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->resume);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->backtrace);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->handler_iter);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->handler_ctx);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->thrower);
}
/*
@@ -184,9 +188,9 @@
VTABLE STRING *get_string() {
STRING *message;
- GET_ATTR_message(interp, SELF, message);
+ GET_ATTR_message(INTERP, SELF, message);
if (STRING_IS_NULL(message))
- message = CONST_STRING(interp, "");
+ message = CONST_STRING(INTERP, "");
return message;
}
@@ -201,7 +205,7 @@
*/
VTABLE INTVAL get_integer() {
- Parrot_Exception_attributes * const exception = PARROT_EXCEPTION(SELF);
+ const Parrot_Exception_attributes * const exception = PARROT_EXCEPTION(SELF);
return exception->id;
}
@@ -217,7 +221,7 @@
*/
VTABLE STRING *get_string_keyed(PMC *key) {
- STRING *name = VTABLE_get_string(INTERP, key);
+ STRING * const name = VTABLE_get_string(INTERP, key);
STRING *message;
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
@@ -225,7 +229,7 @@
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such string attribute '%S'", name);
}
@@ -243,24 +247,24 @@
*/
VTABLE INTVAL get_integer_keyed(PMC *key) {
- STRING *name = VTABLE_get_string(INTERP, key);
+ STRING * const name = VTABLE_get_string(INTERP, key);
INTVAL result = 0;
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
- GET_ATTR_type(interp, SELF, result);
+ GET_ATTR_type(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
- GET_ATTR_severity(interp, SELF, result);
+ GET_ATTR_severity(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
- GET_ATTR_exit_code(interp, SELF, result);
+ GET_ATTR_exit_code(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
- GET_ATTR_handled(interp, SELF, result);
+ GET_ATTR_handled(INTERP, SELF, result);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such integer attribute '%S'", name);
}
@@ -281,20 +285,20 @@
INTVAL result = 0;
if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "type"))) {
- GET_ATTR_type(interp, SELF, result);
+ GET_ATTR_type(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "severity"))) {
- GET_ATTR_severity(interp, SELF, result);
+ GET_ATTR_severity(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "exit_code"))) {
- GET_ATTR_exit_code(interp, SELF, result);
+ GET_ATTR_exit_code(INTERP, SELF, result);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "handled"))) {
- GET_ATTR_handled(interp, SELF, result);
+ GET_ATTR_handled(INTERP, SELF, result);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such integer attribute '%S'", key);
}
@@ -312,7 +316,7 @@
*/
VTABLE PMC *get_pmc_keyed(PMC *key) {
- STRING *s = VTABLE_get_string(INTERP, key);
+ STRING * const s = VTABLE_get_string(INTERP, key);
return SELF.get_attr_str(s);
}
@@ -328,7 +332,7 @@
*/
VTABLE void set_string_native(STRING *value) {
- SET_ATTR_message(interp, SELF, value);
+ SET_ATTR_message(INTERP, SELF, value);
}
@@ -343,7 +347,7 @@
*/
VTABLE void set_integer_native(INTVAL value) {
- SET_ATTR_id(interp, SELF, value);
+ SET_ATTR_id(INTERP, SELF, value);
}
/*
@@ -357,7 +361,7 @@
*/
VTABLE void set_number_native(FLOATVAL value) {
- SET_ATTR_birthtime(interp, SELF, value);
+ SET_ATTR_birthtime(INTERP, SELF, value);
}
@@ -372,14 +376,14 @@
*/
VTABLE void set_string_keyed(PMC *key, STRING *value) {
- STRING *name = VTABLE_get_string(INTERP, key);
+ STRING * const name = VTABLE_get_string(INTERP, key);
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
SELF.set_string_native(value);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such string attribute '%S'", name);
}
}
@@ -395,23 +399,23 @@
*/
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
- STRING *name = VTABLE_get_string(INTERP, key);
+ STRING * const name = VTABLE_get_string(INTERP, key);
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
- SET_ATTR_type(interp, SELF, value);
+ SET_ATTR_type(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
- SET_ATTR_severity(interp, SELF, value);
+ SET_ATTR_severity(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
- SET_ATTR_exit_code(interp, SELF, value);
+ SET_ATTR_exit_code(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
- SET_ATTR_handled(interp, SELF, value);
+ SET_ATTR_handled(INTERP, SELF, value);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such integer attribute '%S'", name);
}
}
@@ -428,20 +432,20 @@
VTABLE void set_integer_keyed_str(STRING *key, INTVAL value) {
if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "type"))) {
- SET_ATTR_type(interp, SELF, value);
+ SET_ATTR_type(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "severity"))) {
- SET_ATTR_severity(interp, SELF, value);
+ SET_ATTR_severity(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "exit_code"))) {
- SET_ATTR_exit_code(interp, SELF, value);
+ SET_ATTR_exit_code(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, key, CONST_STRING(INTERP, "handled"))) {
- SET_ATTR_handled(interp, SELF, value);
+ SET_ATTR_handled(INTERP, SELF, value);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such integer attribute '%S'", key);
}
}
@@ -457,7 +461,7 @@
*/
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
- STRING *s = VTABLE_get_string(INTERP, key);
+ STRING * const s = VTABLE_get_string(INTERP, key);
SELF.set_attr_str(s, value);
}
@@ -488,7 +492,7 @@
*/
VTABLE void *get_pointer() {
- Parrot_Exception_attributes * const core_struct = PARROT_EXCEPTION(SELF);
+ const Parrot_Exception_attributes * const core_struct = PARROT_EXCEPTION(SELF);
return core_struct->handler_ctx;
}
@@ -509,14 +513,14 @@
if (value->vtable->base_type == SELF->vtable->base_type
&& VTABLE_isa(INTERP, value, exception_str)) {
INTVAL self_compare, value_compare;
- GET_ATTR_type(interp, SELF, self_compare);
- GET_ATTR_type(interp, value, value_compare);
+ GET_ATTR_type(INTERP, SELF, self_compare);
+ GET_ATTR_type(INTERP, value, value_compare);
if (self_compare == value_compare) {
- GET_ATTR_severity(interp, SELF, self_compare);
- GET_ATTR_severity(interp, value, value_compare);
+ GET_ATTR_severity(INTERP, SELF, self_compare);
+ GET_ATTR_severity(INTERP, value, value_compare);
if (self_compare == value_compare) {
- GET_ATTR_exit_code(interp, SELF, self_compare);
- GET_ATTR_exit_code(interp, value, value_compare);
+ GET_ATTR_exit_code(INTERP, SELF, self_compare);
+ GET_ATTR_exit_code(INTERP, value, value_compare);
if (self_compare == value_compare)
return 1;
}
@@ -540,48 +544,44 @@
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
INTVAL type;
- GET_ATTR_type(interp, SELF, type);
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, type);
+ GET_ATTR_type(INTERP, SELF, type);
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, type);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
INTVAL severity;
- GET_ATTR_severity(interp, SELF, severity);
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, severity);
+ GET_ATTR_severity(INTERP, SELF, severity);
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, severity);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
INTVAL exit_code;
- GET_ATTR_exit_code(interp, SELF, exit_code);
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, exit_code);
+ GET_ATTR_exit_code(INTERP, SELF, exit_code);
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, exit_code);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
INTVAL handled;
- GET_ATTR_handled(interp, SELF, handled);
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, handled);
+ GET_ATTR_handled(INTERP, SELF, handled);
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, handled);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
STRING *message = SELF.get_string();
- value = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, value, message);
+ value = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, value, message);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "payload"))) {
- GET_ATTR_payload(interp, SELF, value);
+ GET_ATTR_payload(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "resume"))) {
- GET_ATTR_resume(interp, SELF, value);
+ GET_ATTR_resume(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "backtrace"))) {
- GET_ATTR_backtrace(interp, SELF, value);
+ GET_ATTR_backtrace(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handler_iter"))) {
- GET_ATTR_handler_iter(interp, SELF, value);
+ GET_ATTR_handler_iter(INTERP, SELF, value);
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S'", name);
}
@@ -600,49 +600,49 @@
VTABLE void set_attr_str(STRING *name, PMC *value) {
if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
- INTVAL type = VTABLE_get_integer(interp, value);
- SET_ATTR_type(interp, SELF, type);
+ const INTVAL type = VTABLE_get_integer(INTERP, value);
+ SET_ATTR_type(INTERP, SELF, type);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
- INTVAL severity = VTABLE_get_integer(interp, value);
- SET_ATTR_severity(interp, SELF, severity);
+ const INTVAL severity = VTABLE_get_integer(INTERP, value);
+ SET_ATTR_severity(INTERP, SELF, severity);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
- INTVAL exit_code = VTABLE_get_integer(interp, value);
- SET_ATTR_exit_code(interp, SELF, exit_code);
+ const INTVAL exit_code = VTABLE_get_integer(INTERP, value);
+ SET_ATTR_exit_code(INTERP, SELF, exit_code);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
- INTVAL handled = VTABLE_get_integer(interp, value);
- SET_ATTR_handled(interp, SELF, handled);
+ const INTVAL handled = VTABLE_get_integer(INTERP, value);
+ SET_ATTR_handled(INTERP, SELF, handled);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
- STRING *message = VTABLE_get_string(interp, value);
+ STRING * const message = VTABLE_get_string(INTERP, value);
SELF.set_string_native(message);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "payload"))) {
- SET_ATTR_payload(interp, SELF, value);
+ SET_ATTR_payload(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "resume"))) {
- SET_ATTR_resume(interp, SELF, value);
+ SET_ATTR_resume(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "backtrace"))) {
- SET_ATTR_backtrace(interp, SELF, value);
+ SET_ATTR_backtrace(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handler_iter"))) {
- SET_ATTR_handler_iter(interp, SELF, value);
+ SET_ATTR_handler_iter(INTERP, SELF, value);
}
else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "thrower"))) {
/* Ensure it's a ret cont, and extract the from_ctx.
* XXX TT #596 - when we have Context PMCs, just take and set that. */
- if (!PMC_IS_NULL(value) && VTABLE_isa(interp, value, CONST_STRING(interp, "Continuation"))) {
- PMC *ctx = PMC_cont(value)->from_ctx;
+ if (!PMC_IS_NULL(value) && VTABLE_isa(INTERP, value, CONST_STRING(INTERP, "Continuation"))) {
+ PMC * const ctx = PMC_cont(value)->from_ctx;
if (!PMC_IS_NULL(ctx))
- SET_ATTR_thrower(interp, SELF, ctx);
+ SET_ATTR_thrower(INTERP, SELF, ctx);
}
}
else {
/* If unknown attribute name, throw an exception. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S'", name);
}
@@ -698,18 +698,18 @@
PMC *result = PMCNULL;
/* Get resume continuation, to find location we failed at. */
- GET_ATTR_resume(interp, SELF, resume);
+ GET_ATTR_resume(INTERP, SELF, resume);
if (!PMC_IS_NULL(resume)) {
- Parrot_Continuation_attributes *cont = PARROT_CONTINUATION(resume);
+ const Parrot_Continuation_attributes * const cont = PARROT_CONTINUATION(resume);
if (cont->seg != NULL && cont->seg->annotations != NULL)
- result = PackFile_Annotations_lookup(interp, cont->seg->annotations,
+ result = PackFile_Annotations_lookup(INTERP, cont->seg->annotations,
cont->address - cont->seg->base.data, name);
}
/* If we didn't have a key specified and we found no annotations to
* return, should return an empty hash. */
if (!have_name && PMC_IS_NULL(result))
- result = Parrot_pmc_new(interp, enum_class_Hash);
+ result = Parrot_pmc_new(INTERP, enum_class_Hash);
RETURN(PMC *result);
}
@@ -733,22 +733,19 @@
METHOD backtrace() {
PMC *result = PMCNULL;
PMC *resume;
- PMC *cur_ctx;
- Parrot_Continuation_attributes *cont;
/* Get starting context, then loop over them. */
- GET_ATTR_resume(interp, SELF, resume);
+ GET_ATTR_resume(INTERP, SELF, resume);
if (!PMC_IS_NULL(resume)) {
- /* We have a resume continuation, so we can get the address from
- * that. */
- cont = PARROT_CONTINUATION(resume);
- Parrot_pcc_invoke_method_from_c_args(INTERP, cont->to_ctx, CONST_STRING(interp, "backtrace"), "P->P", resume, &result);
+ /* We have a resume continuation, so we can get the address from that. */
+ const Parrot_Continuation_attributes * const cont = PARROT_CONTINUATION(resume);
+ Parrot_pcc_invoke_method_from_c_args(INTERP, cont->to_ctx, CONST_STRING(INTERP, "backtrace"), "P->P", resume, &result);
}
else {
+ PMC *cur_ctx;
/* No return continuation. Assuming we're being called */
- cont = NULL;
- GET_ATTR_thrower(interp, SELF, cur_ctx);
- Parrot_pcc_invoke_method_from_c_args(INTERP, CURRENT_CONTEXT(INTERP), CONST_STRING(interp, "backtrace"), "->P", &result);
+ GET_ATTR_thrower(INTERP, SELF, cur_ctx);
+ Parrot_pcc_invoke_method_from_c_args(INTERP, CURRENT_CONTEXT(INTERP), CONST_STRING(INTERP, "backtrace"), "->P", &result);
}
RETURN(PMC *result);
Modified: branches/ops_pct/src/pmc/exceptionhandler.pmc
==============================================================================
--- branches/ops_pct/src/pmc/exceptionhandler.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/exceptionhandler.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -22,6 +22,10 @@
#include "parrot/oplib/ops.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ExceptionHandler extends Continuation auto_attrs {
ATTR PMC *handled_types;
@@ -68,8 +72,8 @@
VTABLE void mark() {
Parrot_ExceptionHandler_attributes * const attrs =
PARROT_EXCEPTIONHANDLER(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->handled_types);
- Parrot_gc_mark_PMC_alive(interp, attrs->handled_types_except);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->handled_types);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->handled_types_except);
SUPER();
}
@@ -121,8 +125,8 @@
VTABLE opcode_t *invoke(void *next) {
opcode_t * const pc = PARROT_CONTINUATION(SELF)->address;
- Parrot_continuation_check(interp, SELF);
- Parrot_continuation_rewind_environment(interp, SELF);
+ Parrot_continuation_check(INTERP, SELF);
+ Parrot_continuation_rewind_environment(INTERP, SELF);
/* switch code segment if needed */
if (INTERP->code != PARROT_CONTINUATION(SELF)->seg)
@@ -155,10 +159,10 @@
*/
METHOD can_handle(PMC *exception) {
- STRING * const sev = CONST_STRING(interp, "severity");
- STRING * const ex_str = CONST_STRING(interp, "Exception");
+ STRING * const sev = CONST_STRING(INTERP, "severity");
+ STRING * const ex_str = CONST_STRING(INTERP, "Exception");
- INTVAL severity = VTABLE_get_integer_keyed_str(interp, exception, sev);
+ INTVAL severity = VTABLE_get_integer_keyed_str(INTERP, exception, sev);
if (exception->vtable->base_type == enum_class_Exception
|| VTABLE_isa(INTERP, exception, ex_str)) {
@@ -177,12 +181,12 @@
RETURN(INTVAL 0);
}
if (! PMC_IS_NULL(handled_types)) {
- const INTVAL elems = VTABLE_elements(interp, handled_types);
- const INTVAL type = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
+ const INTVAL elems = VTABLE_elements(INTERP, handled_types);
+ const INTVAL type = VTABLE_get_integer_keyed_str(INTERP, exception, CONST_STRING(INTERP, "type"));
INTVAL i;
- for (i = 0; i < elems; i++) {
- INTVAL handled_type = VTABLE_get_integer_keyed_int(interp,
+ for (i = 0; i < elems; ++i) {
+ INTVAL handled_type = VTABLE_get_integer_keyed_int(INTERP,
handled_types, i);
if (handled_type == type)
RETURN(INTVAL 1);
@@ -191,12 +195,12 @@
RETURN(INTVAL 0);
}
if (handled_types_except != PMCNULL) {
- const INTVAL elems = VTABLE_elements(interp, handled_types_except);
- const INTVAL type = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
+ const INTVAL elems = VTABLE_elements(INTERP, handled_types_except);
+ const INTVAL type = VTABLE_get_integer_keyed_str(INTERP, exception, CONST_STRING(INTERP, "type"));
INTVAL i;
- for (i = 0; i < elems; i++) {
- const INTVAL handled_type = VTABLE_get_integer_keyed_int(interp,
+ for (i = 0; i < elems; ++i) {
+ const INTVAL handled_type = VTABLE_get_integer_keyed_int(INTERP,
handled_types_except, i);
if (handled_type == type)
RETURN(INTVAL 0);
@@ -272,7 +276,7 @@
Parrot_ExceptionHandler_attributes * const attrs =
PARROT_EXCEPTIONHANDLER(SELF);
attrs->handled_types =
- VTABLE_elements(interp, types) > 0
+ VTABLE_elements(INTERP, types) > 0
? types
: PMCNULL;
}
@@ -291,7 +295,7 @@
Parrot_ExceptionHandler_attributes * const attrs =
PARROT_EXCEPTIONHANDLER(SELF);
attrs->handled_types_except =
- VTABLE_elements(interp, types) > 0
+ VTABLE_elements(INTERP, types) > 0
? types
: PMCNULL;
}
Modified: branches/ops_pct/src/pmc/exporter.pmc
==============================================================================
--- branches/ops_pct/src/pmc/exporter.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/exporter.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -49,7 +49,8 @@
F<docs/pdds/pdd21_namespaces.pod>.
Exporter is not derived from any other PMC, and does not provide any
-vtable interface--its interface consists solely of non-vtable methods.
+vtable interface--its interface consists solely of methods, not
+vtable functions.
=head2 Structure
@@ -90,6 +91,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Exporter auto_attrs {
ATTR PMC *ns_src;
@@ -134,9 +139,9 @@
GET_ATTR_ns_dest(INTERP, SELF, ns_dest);
GET_ATTR_globals(INTERP, SELF, globals);
- Parrot_gc_mark_PMC_alive(interp, ns_src);
- Parrot_gc_mark_PMC_alive(interp, ns_dest);
- Parrot_gc_mark_PMC_alive(interp, globals);
+ Parrot_gc_mark_PMC_alive(INTERP, ns_src);
+ Parrot_gc_mark_PMC_alive(INTERP, ns_dest);
+ Parrot_gc_mark_PMC_alive(INTERP, globals);
}
@@ -162,14 +167,14 @@
METHOD source(PMC *src :optional, int got_src :opt_flag) {
if (got_src) {
if (src->vtable->base_type != enum_class_NameSpace)
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"source must be a NameSpace PMC");
- SET_ATTR_ns_src(interp, SELF, src);
+ SET_ATTR_ns_src(INTERP, SELF, src);
}
else {
PMC *tmp_ns_src;
- GET_ATTR_ns_src(interp, SELF, tmp_ns_src);
+ GET_ATTR_ns_src(INTERP, SELF, tmp_ns_src);
RETURN(PMC *tmp_ns_src);
}
}
@@ -192,14 +197,14 @@
if (got_dest) {
if (dest->vtable->base_type != enum_class_NameSpace)
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"destination must be a NameSpace PMC");
- SET_ATTR_ns_dest(interp, SELF, dest);
+ SET_ATTR_ns_dest(INTERP, SELF, dest);
}
else {
PMC *tmp_ns_dest;
- GET_ATTR_ns_dest(interp, SELF, tmp_ns_dest);
+ GET_ATTR_ns_dest(INTERP, SELF, tmp_ns_dest);
RETURN(PMC *tmp_ns_dest);
}
}
@@ -224,54 +229,54 @@
*/
METHOD globals(PMC *glb :optional, int got_glb :opt_flag) {
- STRING * const s_str = CONST_STRING(interp, "String");
- STRING * const s_arr = CONST_STRING(interp, "array");
- STRING * const s_hash = CONST_STRING(interp, "hash");
- STRING * const s_space = CONST_STRING(interp, " ");
+ STRING * const s_str = CONST_STRING(INTERP, "String");
+ STRING * const s_arr = CONST_STRING(INTERP, "array");
+ STRING * const s_hash = CONST_STRING(INTERP, "hash");
+ STRING * const s_space = CONST_STRING(INTERP, " ");
if (got_glb) {
- STRING * const s_empty = CONST_STRING(interp, "");
- PMC *temp_globals = Parrot_pmc_new(interp, enum_class_Hash);
+ STRING * const s_empty = CONST_STRING(INTERP, "");
+ PMC *temp_globals = Parrot_pmc_new(INTERP, enum_class_Hash);
if (PMC_IS_NULL(glb)) {
temp_globals = PMCNULL;
}
- else if (VTABLE_isa(interp, glb, s_str) || (VTABLE_does(interp, glb, s_arr))) {
+ else if (VTABLE_isa(INTERP, glb, s_str) || (VTABLE_does(INTERP, glb, s_arr))) {
PMC *glb_array;
INTVAL n, i;
- if (VTABLE_isa(interp, glb, s_str))
- glb_array = Parrot_str_split(interp, s_space,
- VTABLE_get_string(interp, glb));
+ if (VTABLE_isa(INTERP, glb, s_str))
+ glb_array = Parrot_str_split(INTERP, s_space,
+ VTABLE_get_string(INTERP, glb));
else
glb_array = glb;
- n = VTABLE_elements(interp, glb_array);
+ n = VTABLE_elements(INTERP, glb_array);
if (n == 0)
temp_globals = PMCNULL;
- for (i = 0; i < n; i++) {
- STRING * const item = VTABLE_get_string_keyed_int(interp, glb_array, i);
- VTABLE_set_string_keyed_str(interp, temp_globals, item, s_empty);
+ for (i = 0; i < n; ++i) {
+ STRING * const item = VTABLE_get_string_keyed_int(INTERP, glb_array, i);
+ VTABLE_set_string_keyed_str(INTERP, temp_globals, item, s_empty);
}
}
- else if (VTABLE_does(interp, glb, s_hash)) {
- if (VTABLE_elements(interp, glb) == 0)
+ else if (VTABLE_does(INTERP, glb, s_hash)) {
+ if (VTABLE_elements(INTERP, glb) == 0)
temp_globals = PMCNULL;
else
temp_globals = glb;
}
else {
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"Invalid type %d in globals()", glb->vtable->base_type);
}
- SET_ATTR_globals(interp, SELF, temp_globals);
+ SET_ATTR_globals(INTERP, SELF, temp_globals);
}
else {
PMC *tmp_globals;
- GET_ATTR_globals(interp, SELF, tmp_globals);
+ GET_ATTR_globals(INTERP, SELF, tmp_globals);
if (PMC_IS_NULL(tmp_globals)) {
RETURN(PMC *PMCNULL);
}
@@ -309,26 +314,26 @@
PMC *ns_src, *ns_dest, *ns_globals;
if (got_src)
- PCCINVOKE(interp, SELF, "source", PMC *src);
+ PCCINVOKE(INTERP, SELF, "source", PMC *src);
if (got_dest)
- PCCINVOKE(interp, SELF, "destination", PMC *dest);
+ PCCINVOKE(INTERP, SELF, "destination", PMC *dest);
if (got_globals)
- PCCINVOKE(interp, SELF, "globals", PMC *globals);
+ PCCINVOKE(INTERP, SELF, "globals", PMC *globals);
- GET_ATTR_ns_src(interp, SELF, ns_src);
+ GET_ATTR_ns_src(INTERP, SELF, ns_src);
if (PMC_IS_NULL(ns_src))
- Parrot_ex_throw_from_c_args(interp, NULL, 0, "source namespace not set");
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0, "source namespace not set");
- GET_ATTR_ns_dest(interp, SELF, ns_dest);
+ GET_ATTR_ns_dest(INTERP, SELF, ns_dest);
if (PMC_IS_NULL(ns_dest))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"destination namespace not set");
- GET_ATTR_globals(interp, SELF, ns_globals);
+ GET_ATTR_globals(INTERP, SELF, ns_globals);
- PCCINVOKE(interp, ns_src, "export_to", PMC *ns_dest, PMC *ns_globals);
+ PCCINVOKE(INTERP, ns_src, "export_to", PMC *ns_dest, PMC *ns_globals);
}
Deleted: branches/ops_pct/src/pmc/file.pmc
==============================================================================
--- branches/ops_pct/src/pmc/file.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,283 +0,0 @@
-/*
-Copyright (C) 2001-2010, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/file.pmc - File PMC
-
-=head1 DESCRIPTION
-
-C<File> is a singleton class which provides access to File functions.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#ifdef WIN32
-# include <direct.h>
-#endif
-
-/* TT #1050 apparently, strerror_r is thread-safe and should be used instead.*/
-
-static PMC *File_PMC;
-pmclass File singleton {
-
-/*
-
-=item C<void *get_pointer()>
-
-=item C<void set_pointer(void *ptr)>
-
-These two functions are part of the singleton creation interface. For more
-information see F<src/pmc.c>.
-
-=cut
-
-*/
- void class_init() {
- File_PMC = NULL;
- }
-
- VTABLE void *get_pointer() {
- return File_PMC;
- }
-
- VTABLE void set_pointer(void *ptr) {
- File_PMC = (PMC *)ptr;
- }
-
-/*
-
-=item C<INTVAL exists(STRING *file)>
-
-Returns a true value (1) if the supplied file or directory exists.
-
-=cut
-
-*/
-
- METHOD exists(STRING *path) {
- struct stat info;
- char * const cpath = Parrot_str_to_cstring(interp, path);
-#ifdef WIN32
- const int error = stat(cpath, &info);
-#else
- const int error = lstat(cpath, &info);
-#endif
- Parrot_str_free_cstring(cpath);
-
- if (error)
- RETURN(INTVAL 0);
-
- RETURN(INTVAL 1);
- }
-
-/*
-
-=item C<INTVAL is_dir(STRING *path)>
-
-Returns a true value (1) if the supplied path is a directory.
-
-=cut
-
-*/
-
- METHOD is_dir(STRING *path) {
- struct stat info;
- char * const cpath = Parrot_str_to_cstring(interp, path);
-#ifdef WIN32
- const int error = stat(cpath, &info);
-#else
- const int error = lstat(cpath, &info);
-#endif
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-
- if (S_ISDIR(info.st_mode))
- RETURN(INTVAL 1);
- else
- RETURN(INTVAL 0);
- }
-
-/*
-
-=item C<INTVAL is_file(STRING *path)>
-
-Returns a true value (1) if the supplied path is a plain file.
-
-=cut
-
-*/
-
- METHOD is_file(STRING *path) {
- struct stat info;
- char * const cpath = Parrot_str_to_cstring(interp, path);
-#ifdef WIN32
- int error = stat(cpath, &info);
-#else
- int error = lstat(cpath, &info);
-#endif
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-
- if (S_ISREG(info.st_mode))
- RETURN(INTVAL 1);
- else
- RETURN(INTVAL 0);
- }
-
-/*
-
-=item C<INTVAL is_link(STRING *path)>
-
-Returns a true value (1) if the supplied path is a link.
-
-=cut
-
-*/
-
- METHOD is_link(STRING *path) {
-#ifdef WIN32
- /* I love win32 implementations */
- RETURN(INTVAL 0);
-#else
- struct stat info;
-
- char * const cpath = Parrot_str_to_cstring(interp, path);
- const int error = lstat(cpath, &info);
-
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-
- if (S_ISLNK(info.st_mode))
- RETURN(INTVAL 1);
- else
- RETURN(INTVAL 0);
-#endif
- }
-
-/*
-
-=item C<void copy(STRING *from, STRING *to)>
-
-Copy the contents from file represented by path C<from> to the path
-C<to>.
-
-Uses the "work everywhere method". It is good enough to start with.
-
-NOTE: I'm sure that there should be more efficient ways to do this. Be
-free to change or give me hints on how to change it. -- ambs
-
-=cut
-
-*/
-
- METHOD copy(STRING *from, STRING *to) {
-#define CHUNK_SIZE 1024
-
- char * const cfrom = Parrot_str_to_cstring(interp, from);
- FILE * const source = fopen(cfrom, "rb");
-
- Parrot_str_free_cstring(cfrom);
-
- if (source) {
- char * const cto = Parrot_str_to_cstring(interp, to);
- FILE * const target = fopen(cto, "w+b");
-
- Parrot_str_free_cstring(cto);
-
- if (target) {
- while (!feof(source)) {
- char buf[CHUNK_SIZE];
- const size_t bytes_read = fread(buf, 1, CHUNK_SIZE, source);
-
- if (bytes_read) {
- const size_t bytes_written = fwrite(buf, 1, bytes_read, target);
- if (bytes_read != bytes_written) {
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_EXTERNAL_ERROR, "Error writing file");
- break;
- }
- }
- }
- fclose(target);
- }
- else {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- fclose(source);
- }
- else {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-#undef CHUNK_SIZE
- }
-
-/*
-
-=item C<void rename(STRING *from, STRING *to)>
-
-Rename a file C<from> to the path C<to>.
-
-=cut
-
-*/
-
- METHOD rename(STRING *from, STRING *to) {
- char * const cfrom = Parrot_str_to_cstring(interp, from);
- char * const cto = Parrot_str_to_cstring(interp, to);
- const int error = rename(cfrom, cto);
-
- Parrot_str_free_cstring(cfrom);
- Parrot_str_free_cstring(cto);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
-}
-
-/*
-
-=back
-
-=head1 SEE ALS0
-
- stat(2), rename(2)
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_pct/src/pmc/filehandle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/filehandle.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/filehandle.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -31,6 +31,10 @@
#endif
#endif
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass FileHandle extends Handle auto_attrs {
ATTR INTVAL flags; /* Filehandle flags */
ATTR STRING *filename; /* The opened path and filename */
@@ -102,7 +106,7 @@
VTABLE PMC *clone() {
Parrot_FileHandle_attributes * const old_struct
= PARROT_FILEHANDLE(SELF);
- PMC * const copy = Parrot_io_new_pmc(interp, old_struct->flags);
+ PMC * const copy = Parrot_io_new_pmc(INTERP, old_struct->flags);
Parrot_FileHandle_attributes * const data_struct
= PARROT_FILEHANDLE(copy);
@@ -126,9 +130,9 @@
Parrot_FileHandle_attributes * const data_struct
= PARROT_FILEHANDLE(SELF);
- Parrot_gc_mark_STRING_alive(interp, data_struct->mode);
- Parrot_gc_mark_STRING_alive(interp, data_struct->filename);
- Parrot_gc_mark_STRING_alive(interp, data_struct->encoding);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->mode);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->filename);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->encoding);
}
@@ -245,21 +249,21 @@
STRING *open_filename, *open_mode;
if (!Parrot_io_is_closed_filehandle(INTERP, SELF))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot reopen already open filehandle");
if (got_mode && !STRING_IS_NULL(mode))
- SET_ATTR_mode(INTERP, SELF, Parrot_str_copy(INTERP, mode));
+ SET_ATTR_mode(INTERP, SELF, mode);
if (got_filename && !STRING_IS_NULL(filename))
- SET_ATTR_filename(INTERP, SELF, Parrot_str_copy(INTERP, filename));
+ SET_ATTR_filename(INTERP, SELF, filename);
/* Open the file. With no options, reopen the same file as before */
GET_ATTR_filename(INTERP, SELF, open_filename);
GET_ATTR_mode(INTERP, SELF, open_mode);
if (STRING_IS_NULL(open_filename))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot open filehandle, no filename");
if (STRING_IS_NULL(open_mode)) {
@@ -313,7 +317,7 @@
*/
METHOD is_closed() {
- const INTVAL status = Parrot_io_is_closed(interp, SELF);
+ const INTVAL status = Parrot_io_is_closed(INTERP, SELF);
RETURN(INTVAL status);
}
@@ -443,7 +447,7 @@
GET_ATTR_encoding(INTERP, SELF, encoding);
if (!Parrot_io_is_closed_filehandle(INTERP, SELF))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot readall on a new file from an already open filehandle");
filehandle = Parrot_io_open(INTERP, PMCNULL, name, NULL);
@@ -460,7 +464,7 @@
else {
/* slurp open file */
if (Parrot_io_is_closed_filehandle(INTERP, SELF))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot readall without a file name or open filehandle");
result = Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
@@ -471,7 +475,7 @@
do {
STRING * const part = Parrot_io_reads(INTERP, SELF, 0);
- result = Parrot_str_append(INTERP, result, part);
+ result = Parrot_str_concat(INTERP, result, part);
if (Parrot_io_eof(INTERP, SELF))
break;
@@ -510,7 +514,7 @@
METHOD print(PMC *to_print) {
STRING * const string_to_print = VTABLE_get_string(INTERP, to_print);
- Parrot_io_putps(interp, SELF, string_to_print);
+ Parrot_io_putps(INTERP, SELF, string_to_print);
}
@@ -614,12 +618,9 @@
*/
METHOD mode() {
- STRING *mode, *mode_copy;
-
+ STRING *mode;
GET_ATTR_mode(INTERP, SELF, mode);
- mode_copy = Parrot_str_copy(INTERP, mode);
-
- RETURN(STRING *mode_copy);
+ RETURN(STRING *mode);
}
@@ -636,20 +637,14 @@
METHOD encoding(STRING *new_encoding :optional, INTVAL got_encoding :opt_flag) {
STRING *encoding;
- STRING *encoding_copy = NULL;
if (got_encoding) {
- if (!STRING_IS_NULL(new_encoding))
- encoding_copy = Parrot_str_copy(INTERP, new_encoding);
- SET_ATTR_encoding(INTERP, SELF, encoding_copy);
+ SET_ATTR_encoding(INTERP, SELF, new_encoding);
RETURN(STRING *new_encoding);
}
GET_ATTR_encoding(INTERP, SELF, encoding);
- if (!STRING_IS_NULL(encoding))
- encoding_copy = Parrot_str_copy(INTERP, encoding);
-
- RETURN(STRING *encoding_copy);
+ RETURN(STRING *encoding);
}
Modified: branches/ops_pct/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedbooleanarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/fixedbooleanarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -27,10 +27,23 @@
#define BITS_PER_CHAR 8
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_INLINE
+static UINTVAL get_size_in_bytes(UINTVAL size);
+
+#define ASSERT_ARGS_get_size_in_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
PARROT_INLINE
static UINTVAL
get_size_in_bytes(UINTVAL size)
{
+ ASSERT_ARGS(get_size_in_bytes)
+
return (size + BITS_PER_CHAR - 1) / BITS_PER_CHAR;
}
@@ -74,7 +87,7 @@
const size_t size_in_bytes = get_size_in_bytes(size);
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("FixedBooleanArray: Cannot set array size to a negative number (%d)"), size);
SET_ATTR_size(INTERP, SELF, size);
@@ -268,11 +281,11 @@
zero = CONST_STRING(INTERP, "0");
one = CONST_STRING(INTERP, "1");
- for (i = 0; i < elems; i++) {
+ for (i = 0; i < elems; ++i) {
if (SELF.get_integer_keyed_int((INTVAL)i))
- str = Parrot_str_concat(INTERP, str, one, 0);
+ str = Parrot_str_concat(INTERP, str, one);
else
- str = Parrot_str_concat(INTERP, str, zero, 0);
+ str = Parrot_str_concat(INTERP, str, zero);
}
return str;
@@ -568,13 +581,11 @@
SUPER(info);
{
- unsigned char * bit_array;
- UINTVAL threshold;
const INTVAL size = VTABLE_shift_integer(INTERP, info);
STRING * const s = VTABLE_shift_string(INTERP, info);
- bit_array = (unsigned char *)Parrot_str_to_cstring(INTERP, s);
- threshold = Parrot_str_byte_length(interp, s) * BITS_PER_CHAR;
+ unsigned char * const bit_array = (unsigned char *)Parrot_str_to_cstring(INTERP, s);
+ const UINTVAL threshold = Parrot_str_byte_length(INTERP, s) * BITS_PER_CHAR;
SET_ATTR_size(INTERP, SELF, size);
SET_ATTR_resize_threshold(INTERP, SELF, threshold);
Modified: branches/ops_pct/src/pmc/fixedfloatarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedfloatarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/fixedfloatarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass FixedFloatArray auto_attrs provides array {
ATTR INTVAL size;
ATTR FLOATVAL *float_array;
@@ -58,7 +62,7 @@
VTABLE void init_int(INTVAL size) {
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("FixedFloatArray: Cannot set array size to a negative number (%d)"), size);
SET_ATTR_size(INTERP, SELF, size);
SET_ATTR_float_array(INTERP, SELF, mem_gc_allocate_n_typed(INTERP, size, FLOATVAL));
@@ -76,24 +80,22 @@
*/
VTABLE PMC *clone() {
- INTVAL size;
- FLOATVAL *self_float_array, *dest_float_array;
- size_t mem_size;
- PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+ FLOATVAL *self_float_array;
+ PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
GET_ATTR_float_array(INTERP, SELF, self_float_array);
-
- if (!self_float_array)
- return dest;
-
- GET_ATTR_size(INTERP, SELF, size);
- SET_ATTR_size(INTERP, dest, size);
- mem_size = size * sizeof (FLOATVAL);
-
- dest_float_array = (FLOATVAL*)Parrot_gc_allocate_memory_chunk(INTERP, mem_size);
- mem_sys_memcopy(dest_float_array, self_float_array, mem_size);
- SET_ATTR_float_array(INTERP, dest, dest_float_array);
- PObj_custom_destroy_SET(dest);
-
+ if (self_float_array) {
+ INTVAL size;
+ GET_ATTR_size(INTERP, SELF, size);
+ {
+ FLOATVAL * const dest_float_array = mem_gc_allocate_n_typed(INTERP,
+ size, FLOATVAL);
+ mem_copy_n_typed(dest_float_array, self_float_array,
+ size, FLOATVAL);
+ SET_ATTR_float_array(INTERP, dest, dest_float_array);
+ }
+ SET_ATTR_size(INTERP, dest, size);
+ PObj_custom_destroy_SET(dest);
+ }
return dest;
}
Modified: branches/ops_pct/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedintegerarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/fixedintegerarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass FixedIntegerArray auto_attrs provides array {
ATTR INTVAL size; /* number of INTVALs stored in this array */
ATTR INTVAL * int_array; /* INTVALs are stored here */
@@ -55,7 +59,7 @@
VTABLE void init_int(INTVAL size) {
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("FixedIntegerArray: Cannot set array size to a negative number (%d)"), size);
SET_ATTR_size(INTERP, SELF, size);
SET_ATTR_int_array(INTERP, SELF, mem_gc_allocate_n_typed(INTERP, size, INTVAL));
@@ -106,16 +110,16 @@
GET_ATTR_int_array(INTERP, SELF, int_array);
if (int_array) {
- INTVAL *dest_int_array;
- INTVAL size;
-
+ INTVAL size;
GET_ATTR_size(INTERP, SELF, size);
-
- dest_int_array = mem_gc_allocate_n_typed(INTERP, size, INTVAL);
+ {
+ INTVAL * const dest_int_array = mem_gc_allocate_n_typed(INTERP,
+ size, INTVAL);
+ mem_copy_n_typed(dest_int_array, int_array,
+ size, INTVAL);
+ SET_ATTR_int_array(INTERP, dest, dest_int_array);
+ }
SET_ATTR_size(INTERP, dest, size);
- SET_ATTR_int_array(INTERP, dest, dest_int_array);
-
- mem_sys_memcopy(dest_int_array, int_array, size * sizeof (INTVAL));
PObj_custom_destroy_SET(dest);
}
@@ -187,7 +191,7 @@
GET_ATTR_size(INTERP, SELF, size);
if (key < 0 || key >= size)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"FixedIntegerArray: index out of bounds!");
GET_ATTR_int_array(INTERP, SELF, int_array);
@@ -275,13 +279,13 @@
for (j = 0; j < n; ++j) {
PMC * const val = SELF.get_pmc_keyed_int(j);
- res = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+ res = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
if (j < n - 1)
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
}
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
return res;
}
@@ -313,9 +317,8 @@
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
- PMC * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
const INTVAL val = SELF.get_integer_keyed_int(key);
- VTABLE_set_integer_native(INTERP, ret, val);
+ PMC * const ret = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, val);
return ret;
}
@@ -378,7 +381,7 @@
GET_ATTR_size(INTERP, SELF, size);
if (key < 0 || key >= size)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"FixedIntegerArray: index out of bounds!");
GET_ATTR_int_array(INTERP, SELF, int_array);
@@ -440,11 +443,7 @@
*/
VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
- INTVAL tempInt;
- PMC * const tempPMC = Parrot_pmc_new_temporary(INTERP, enum_class_Integer);
- VTABLE_set_string_native(INTERP, tempPMC, value);
- tempInt = VTABLE_get_integer(INTERP, tempPMC);
- Parrot_pmc_free_temporary(interp, tempPMC);
+ const INTVAL tempInt = Parrot_str_to_int(INTERP, value);
SELF.set_integer_keyed_int(key, tempInt);
}
@@ -504,7 +503,7 @@
if (n > 1) {
GET_ATTR_int_array(INTERP, SELF, int_array);
- Parrot_quicksort(interp, (void**)int_array, n, cmp_func);
+ Parrot_quicksort(INTERP, (void**)int_array, n, cmp_func);
}
}
Modified: branches/ops_pct/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedpmcarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/fixedpmcarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -27,6 +27,10 @@
#define PMC_size(x) ((Parrot_FixedPMCArray_attributes *)PMC_data(x))->size
#define PMC_array(x) ((Parrot_FixedPMCArray_attributes *)PMC_data(x))->pmc_array
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass FixedPMCArray auto_attrs provides array {
ATTR INTVAL size; /* number of elements in the array */
ATTR PMC **pmc_array; /* pointer to PMC array */
@@ -47,11 +51,11 @@
if (n > 1) {
/* XXX Workaround for TT #218 */
if (PObj_is_object_TEST(SELF)) {
- PMC *parent = SELF.get_attr_str(CONST_STRING(interp, "proxy"));
- Parrot_pcc_invoke_method_from_c_args(interp, parent, CONST_STRING(interp, "sort"), "P->", cmp_func);
+ PMC *parent = SELF.get_attr_str(CONST_STRING(INTERP, "proxy"));
+ Parrot_pcc_invoke_method_from_c_args(INTERP, parent, CONST_STRING(INTERP, "sort"), "P->", cmp_func);
}
else
- Parrot_quicksort(interp, (void **)PMC_array(SELF), n, cmp_func);
+ Parrot_quicksort(INTERP, (void **)PMC_array(SELF), n, cmp_func);
}
RETURN(PMC *SELF);
}
@@ -87,20 +91,13 @@
*/
VTABLE void init_int(INTVAL size) {
- PMC **data;
- int i;
-
if (size < 0)
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("FixedPMCArray: Cannot set array size to a negative number (%d)"), size);
- SET_ATTR_size(INTERP, SELF, size);
- data = mem_gc_allocate_n_typed(INTERP, size, PMC *);
+ SELF.set_integer_native(size);
- for (i = 0; i < size; i++)
- data[i] = PMCNULL;
-
- PObj_custom_destroy_SET(SELF);
+ PObj_custom_mark_destroy_SETALL(SELF);
}
/*
@@ -134,7 +131,7 @@
if (size) {
PMC_size(dest) = size;
- PMC_array(dest) = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
+ PMC_array(dest) = mem_gc_allocate_n_typed(INTERP, size, PMC *);
mem_copy_n_typed(PMC_array(dest), PMC_array(SELF), size, PMC *);
PObj_custom_mark_destroy_SETALL(dest);
}
@@ -225,12 +222,12 @@
for (i = 0; i < n; ++i) {
PMC * const val = SELF.get_pmc_keyed_int(i);
if (i > 0)
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
- res = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+ res = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
}
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ")"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ")"));
return res;
}
@@ -311,7 +308,7 @@
PMC * const retval = SELF.get_pmc_keyed_int(key);
if (PMC_IS_NULL(retval))
- return string_from_literal(interp, "");
+ return CONST_STRING(INTERP, "");
return VTABLE_get_string(INTERP, retval);
}
@@ -404,9 +401,9 @@
_("FixedPMCArray: Cannot set array size to a negative number"));
PMC_size(SELF) = size;
- data = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
+ data = mem_gc_allocate_n_typed(INTERP, size, PMC *);
- for (i = 0; i < size; i++)
+ for (i = 0; i < size; ++i)
data[i] = PMCNULL;
PMC_array(SELF) = data;
@@ -419,7 +416,7 @@
if (SELF == value)
return;
- if (!VTABLE_does(interp, value, CONST_STRING(interp, "array")))
+ if (!VTABLE_does(INTERP, value, CONST_STRING(INTERP, "array")))
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("Can't set self from this type"));
@@ -427,9 +424,9 @@
mem_gc_free(INTERP, PMC_array(SELF));
size = PMC_size(SELF) = VTABLE_elements(INTERP, value);
- PMC_array(SELF) = mem_gc_allocate_n_zeroed_typed(INTERP, size, PMC *);
+ PMC_array(SELF) = mem_gc_allocate_n_typed(INTERP, size, PMC *);
- for (i = 0; i < size; i++)
+ for (i = 0; i < size; ++i)
(PMC_array(SELF))[i] = VTABLE_get_pmc_keyed_int(INTERP, value, i);
PObj_custom_mark_destroy_SETALL(SELF);
@@ -640,7 +637,7 @@
|| item2->vtable->base_type == enum_class_Null)
return 0;
- if (!VTABLE_is_equal(interp, item1, item2))
+ if (!VTABLE_is_equal(INTERP, item1, item2))
return 0;
}
@@ -794,7 +791,7 @@
return;
for (i = PMC_size(SELF) - 1; i >= 0; --i)
- Parrot_gc_mark_PMC_alive(interp, data[i]);
+ Parrot_gc_mark_PMC_alive(INTERP, data[i]);
}
Modified: branches/ops_pct/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/fixedstringarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/fixedstringarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass FixedStringArray auto_attrs provides array {
ATTR STRING **str_array; /* where the STRINGs are stored */
ATTR UINTVAL size; /* element count */
@@ -55,7 +59,7 @@
VTABLE void init_int(INTVAL size) {
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
_("FixedStringArray: Cannot set array size to a negative number (%d)"), size);
SET_ATTR_size(INTERP, SELF, size);
SET_ATTR_str_array(INTERP, SELF, mem_gc_allocate_n_zeroed_typed(INTERP, size, STRING *));
@@ -137,7 +141,7 @@
UINTVAL size, i;
GET_ATTR_size(INTERP, SELF, size);
- for (i = 0; i < size; i++) {
+ for (i = 0; i < size; ++i) {
Parrot_gc_mark_STRING_alive(INTERP, str_array[i]);
}
}
@@ -230,7 +234,7 @@
VTABLE INTVAL get_integer_keyed_int(INTVAL key) {
STRING * const element = SELF.get_string_keyed_int(key);
- return Parrot_str_to_int(interp, element);
+ return Parrot_str_to_int(INTERP, element);
}
/*
@@ -262,7 +266,7 @@
VTABLE FLOATVAL get_number_keyed_int(INTVAL key) {
STRING * const element = SELF.get_string_keyed_int(key);
- return Parrot_str_to_num(interp, element);
+ return Parrot_str_to_num(INTERP, element);
}
/*
@@ -391,7 +395,7 @@
*/
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
- STRING *val = Parrot_str_from_int(interp, value);
+ STRING *val = Parrot_str_from_int(INTERP, value);
SELF.set_string_keyed_int(key, val);
}
@@ -422,7 +426,7 @@
*/
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
- STRING *val = Parrot_str_from_num(interp, value);
+ STRING *val = Parrot_str_from_num(INTERP, value);
SELF.set_string_keyed_int(key, val);
}
@@ -534,15 +538,15 @@
for (j = 0; j < n; ++j) {
STRING * const val = SELF.get_string_keyed_int(j);
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "\""));
- res = Parrot_str_append(INTERP, res, val);
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "\""));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "\""));
+ res = Parrot_str_concat(INTERP, res, val);
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "\""));
if (j < n - 1)
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
}
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
return res;
}
@@ -578,7 +582,7 @@
if (item1 == NULL || item2 == NULL)
return 0;
- if (!Parrot_str_equal(interp, item1, item2))
+ if (!Parrot_str_equal(INTERP, item1, item2))
return 0;
}
Modified: branches/ops_pct/src/pmc/float.pmc
==============================================================================
--- branches/ops_pct/src/pmc/float.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/float.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -18,6 +18,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Float extends scalar provides float provides scalar auto_attrs {
ATTR FLOATVAL fv;
@@ -296,7 +300,7 @@
VTABLE void increment() {
FLOATVAL fv;
GET_ATTR_fv(INTERP, SELF, fv);
- fv++;
+ ++fv;
SET_ATTR_fv(INTERP, SELF, fv);
}
@@ -313,7 +317,7 @@
VTABLE void decrement() {
FLOATVAL fv;
GET_ATTR_fv(INTERP, SELF, fv);
- fv--;
+ --fv;
SET_ATTR_fv(INTERP, SELF, fv);
}
/*
Modified: branches/ops_pct/src/pmc/handle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/handle.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/handle.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -25,17 +25,21 @@
#include "parrot/parrot.h"
#include "../src/io/io_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Handle provides Handle manual_attrs {
/* TODO: Consider encapsulating PIOHANDLE as a PMC type, for subclassing */
ATTR PIOHANDLE os_handle; /* Low level OS descriptor */
VTABLE void init() {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Handle cannot be instantiated directly.");
}
VTABLE void init_pmc(PMC * init) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Handle cannot be instantiated directly.");
}
}
Modified: branches/ops_pct/src/pmc/hash.pmc
==============================================================================
--- branches/ops_pct/src/pmc/hash.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/hash.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -48,6 +48,10 @@
#include "pmc/pmc_key.h"
#include "pmc/pmc_hashiteratorkey.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Hash provides hash auto_attrs {
ATTR Hash *hash;
@@ -57,6 +61,10 @@
Initializes the instance.
+=item C<void init_int(INTVAL value_type)>
+
+Initializes the instance with the value_type provided.
+
=item C<void destroy()>
Free hash structure.
@@ -74,6 +82,19 @@
PObj_custom_mark_destroy_SETALL(SELF);
}
+ VTABLE void init_int(INTVAL value_type) {
+ Parrot_Hash_attributes * const attr =
+ (Parrot_Hash_attributes *) PMC_data(SELF);
+
+ attr->hash = parrot_create_hash(INTERP,
+ (PARROT_DATA_TYPE)value_type,
+ Hash_key_type_STRING,
+ STRING_compare,
+ (hash_hash_key_fn)key_hash_STRING);
+ attr->hash->container = SELF;
+ PObj_custom_mark_destroy_SETALL(SELF);
+ }
+
VTABLE void destroy() {
Hash * const hash = (Hash *)SELF.get_pointer();
if (hash)
@@ -158,21 +179,21 @@
: enum_type_PMC;
if (type == Hash_key_type_STRING)
- new_hash = parrot_create_hash(interp,
+ new_hash = parrot_create_hash(INTERP,
entry_type,
Hash_key_type_STRING,
STRING_compare,
(hash_hash_key_fn)key_hash_STRING);
else if (type == Hash_key_type_int)
/* new_int_hash set BOTH keys and values to INTVAL */
- new_hash = parrot_create_hash(interp,
+ new_hash = parrot_create_hash(INTERP,
entry_type,
Hash_key_type_int,
int_compare,
key_hash_int);
else if (type == Hash_key_type_PMC)
/* new_int_hash set BOTH keys and values to INTVAL */
- new_hash = parrot_create_hash(interp,
+ new_hash = parrot_create_hash(INTERP,
entry_type,
Hash_key_type_PMC,
(hash_comp_fn)PMC_compare,
@@ -229,28 +250,29 @@
It will create STRING* keys hash. Because we can't use STRING_compare
directly - it declared static in F<src/hash.c>
*/
- if (!old_hash)
- old_hash = parrot_new_hash(INTERP);
+ if (old_hash && old_hash->entry_type == type)
+ return;
switch (type) {
case enum_type_INTVAL:
case enum_type_STRING:
case enum_type_PMC:
- new_hash = parrot_create_hash(interp,
+ new_hash = parrot_create_hash(INTERP,
(PARROT_DATA_TYPE)type,
- old_hash->key_type,
- old_hash->compare,
- old_hash->hash_val);
+ old_hash ? old_hash->key_type : Hash_key_type_STRING,
+ old_hash ? old_hash->compare : STRING_compare,
+ old_hash ? old_hash->hash_val : (hash_hash_key_fn)key_hash_STRING);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
"Hash: unsupported entry_type %d", type);
}
PARROT_HASH(SELF)->hash = new_hash;
new_hash->container = SELF;
- parrot_hash_destroy(INTERP, old_hash);
+ if (old_hash)
+ parrot_hash_destroy(INTERP, old_hash);
}
METHOD get_value_type() {
@@ -318,40 +340,40 @@
INTVAL j;
for (j = 0; j < n; ++j) {
- STRING * const key = VTABLE_shift_string(INTERP, iter);
- char * key_str;
- size_t i, str_len;
+ STRING * const key = VTABLE_shift_string(INTERP, iter);
+ char * const key_str = Parrot_str_to_cstring(INTERP, key);
+ const size_t str_len = strlen(key_str);
+ size_t i;
int all_digit = 1;
PMC *val;
- key_str = Parrot_str_to_cstring(INTERP, key);
- str_len = strlen(key_str);
for (i = 0; i < str_len; ++i) {
if (!isdigit((unsigned char)key_str[i])) {
all_digit = 0;
break;
}
}
+
Parrot_str_free_cstring(key_str);
if (all_digit) {
- res = Parrot_str_append(INTERP, res, key);
+ res = Parrot_str_concat(INTERP, res, key);
}
else {
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "'"));
- res = Parrot_str_append(INTERP, res, key);
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "'"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "'"));
+ res = Parrot_str_concat(INTERP, res, key);
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "'"));
}
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ": "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ": "));
val = SELF.get_pmc_keyed_str(key);
- res = Parrot_str_append(INTERP, res, VTABLE_get_string(INTERP, val));
+ res = Parrot_str_concat(INTERP, res, VTABLE_get_string(INTERP, val));
if (j < n - 1)
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
}
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "}"));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, "}"));
return res;
}
@@ -519,7 +541,7 @@
VTABLE FLOATVAL get_number_keyed(PMC *key) {
PMC *nextkey;
PMC *valpmc;
- const Hash * const hash = (Hash *)VTABLE_get_pointer(interp, pmc);
+ const Hash * const hash = (Hash *)SELF.get_pointer();
void * const keystr = hash_key_from_pmc(INTERP, hash, key);
HashBucket * const b = parrot_hash_get_bucket(INTERP, hash, keystr);
@@ -673,11 +695,11 @@
const Hash *hash;
HashBucket *b = NULL;
- GET_ATTR_hash(interp, SELF, hash);
+ GET_ATTR_hash(INTERP, SELF, hash);
/* special case the most key type, for speed */
if (hash->key_type == Hash_key_type_STRING)
- b = parrot_hash_get_bucket(interp, hash, key);
+ b = parrot_hash_get_bucket(INTERP, hash, key);
else
b = parrot_hash_get_bucket(INTERP, hash,
hash_key_from_string(INTERP, hash, key));
@@ -1129,8 +1151,31 @@
const INTVAL v_type = VTABLE_shift_integer(INTERP, info);
Hash *hash;
- if (k_type == Hash_key_type_int && v_type == enum_hash_int) {
- SELF.set_pointer(parrot_new_intval_hash(INTERP));
+ if (k_type != Hash_key_type_STRING || v_type != enum_hash_pmc) {
+ hash_comp_fn cmp_fn;
+ hash_hash_key_fn key_fn;
+
+ switch (k_type) {
+ case Hash_key_type_int:
+ key_fn = (hash_hash_key_fn)key_hash_int;
+ cmp_fn = (hash_comp_fn)int_compare;
+ break;
+ case Hash_key_type_STRING:
+ key_fn = (hash_hash_key_fn)key_hash_STRING;
+ cmp_fn = (hash_comp_fn)STRING_compare;
+ break;
+ case Hash_key_type_PMC:
+ key_fn = (hash_hash_key_fn)key_hash_PMC;
+ cmp_fn = (hash_comp_fn)PMC_compare;
+ break;
+ default:
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
+ "unimplemented key type");
+ break;
+ }
+
+ SELF.set_pointer(parrot_create_hash(INTERP, (PARROT_DATA_TYPE)v_type,
+ (Hash_key_type)k_type, cmp_fn, key_fn));
}
hash = (Hash *)SELF.get_pointer();
Modified: branches/ops_pct/src/pmc/hashiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/hashiterator.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/hashiterator.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -49,13 +49,32 @@
#include "pmc/pmc_hash.h"
#include "pmc/pmc_hashiteratorkey.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void advance_to_next(PARROT_INTERP, ARGMOD(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+#define ASSERT_ARGS_advance_to_next __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/*
Advance to next position. Return found (if any) HashBucket.
*/
-static HashBucket*
-advance_to_next(PARROT_INTERP, PMC *self) {
+
+static void
+advance_to_next(PARROT_INTERP, ARGMOD(PMC *self))
+{
+ ASSERT_ARGS(advance_to_next)
+
Parrot_HashIterator_attributes * const attrs = PARROT_HASHITERATOR(self);
HashBucket *bucket = attrs->bucket;
@@ -71,8 +90,9 @@
bucket = attrs->parrot_hash->bi[attrs->pos++];
}
attrs->bucket = bucket;
- attrs->elements--;
- return bucket;
+ --attrs->elements;
+
+ return;
}
pmclass HashIterator extends Iterator no_ro auto_attrs {
@@ -125,7 +145,7 @@
*/
VTABLE void mark() {
- PMC *hash = PARROT_HASHITERATOR(SELF)->pmc_hash;
+ PMC * const hash = PARROT_HASHITERATOR(SELF)->pmc_hash;
Parrot_gc_mark_PMC_alive(INTERP, hash);
/* We don't mark underlying parrot_hash. Hash PMC will mark it */
}
Modified: branches/ops_pct/src/pmc/hashiteratorkey.pmc
==============================================================================
--- branches/ops_pct/src/pmc/hashiteratorkey.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/hashiteratorkey.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass HashIteratorKey no_ro auto_attrs {
ATTR Hash *parrot_hash; /* Underlying parrot's hash */
ATTR HashBucket *bucket; /* Current bucket from HashItertor */
Modified: branches/ops_pct/src/pmc/imageio.pmc
==============================================================================
--- branches/ops_pct/src/pmc/imageio.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/imageio.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -33,24 +33,121 @@
enum_PackID_seen = 1,
};
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void create_buffer(PARROT_INTERP,
+ ARGIN_NULLOK(PMC *pmc),
+ ARGMOD(PMC *info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*info);
+
+PARROT_INLINE
+static void ensure_buffer_size(PARROT_INTERP, ARGIN(PMC *io), size_t len)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_INLINE
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static opcode_t * GET_VISIT_CURSOR(ARGIN(const PMC *pmc))
+ __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PARROT_INLINE
+static PMC* id_list_get(PARROT_INTERP, ARGIN(const PMC *io), UINTVAL id)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_INLINE
+static void INC_VISIT_CURSOR(ARGMOD(PMC *pmc), UINTVAL inc)
+ __attribute__nonnull__(1)
+ FUNC_MODIFIES(*pmc);
+
+PARROT_WARN_UNUSED_RESULT
PARROT_INLINE
+static INTVAL INFO_HAS_DATA(ARGIN(const PMC *io))
+ __attribute__nonnull__(1);
+
+PARROT_INLINE
+static void SET_VISIT_CURSOR(ARGMOD(PMC *pmc), ARGIN(const char *cursor))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*pmc);
+
+static void visit_todo_list_freeze(PARROT_INTERP,
+ ARGIN_NULLOK(PMC* pmc),
+ ARGMOD(PMC* info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(* info);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PARROT_INLINE
+static PMC * visit_todo_list_thaw(PARROT_INTERP, ARGIN(PMC* info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_create_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(info))
+#define ASSERT_ARGS_ensure_buffer_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(io))
+#define ASSERT_ARGS_GET_VISIT_CURSOR __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_id_list_get __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(io))
+#define ASSERT_ARGS_INC_VISIT_CURSOR __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_INFO_HAS_DATA __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(io))
+#define ASSERT_ARGS_SET_VISIT_CURSOR __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(cursor))
+#define ASSERT_ARGS_visit_todo_list_freeze __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(info))
+#define ASSERT_ARGS_visit_todo_list_thaw __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(info))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+PARROT_INLINE
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static opcode_t *
-GET_VISIT_CURSOR(PMC *pmc){
- char *buf = (char *)Buffer_bufstart(PARROT_IMAGEIO(pmc)->buffer);
- size_t pos = PARROT_IMAGEIO(pmc)->pos;
+GET_VISIT_CURSOR(ARGIN(const PMC *pmc))
+{
+ ASSERT_ARGS(GET_VISIT_CURSOR)
+
+ char * const buf = (char *)Buffer_bufstart(PARROT_IMAGEIO(pmc)->buffer);
+ const size_t pos = PARROT_IMAGEIO(pmc)->pos;
return (opcode_t *)(buf + pos);
}
PARROT_INLINE
static void
-SET_VISIT_CURSOR(PMC *pmc, char *cursor) {
- char *bufstart = (char *)Buffer_bufstart(PARROT_IMAGEIO(pmc)->buffer);
+SET_VISIT_CURSOR(ARGMOD(PMC *pmc), ARGIN(const char *cursor))
+{
+ ASSERT_ARGS(SET_VISIT_CURSOR)
+
+ const char *bufstart = (char *)Buffer_bufstart(PARROT_IMAGEIO(pmc)->buffer);
PARROT_IMAGEIO(pmc)->pos = (cursor - bufstart);
}
PARROT_INLINE
static void
-INC_VISIT_CURSOR(PMC *pmc, UINTVAL inc) {
+INC_VISIT_CURSOR(ARGMOD(PMC *pmc), UINTVAL inc)
+{
+ ASSERT_ARGS(INC_VISIT_CURSOR)
+
PARROT_IMAGEIO(pmc)->pos += inc;
}
@@ -60,13 +157,15 @@
static void
-create_buffer(PARROT_INTERP, PMC *pmc, PMC *info)
+create_buffer(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc), ARGMOD(PMC *info))
{
+ ASSERT_ARGS(create_buffer)
+
INTVAL len;
if (!PMC_IS_NULL(pmc)) {
- STRING *array = CONST_STRING(interp, "array");
- STRING *hash = CONST_STRING(interp, "hash");
+ STRING * const array = CONST_STRING(interp, "array");
+ STRING * const hash = CONST_STRING(interp, "hash");
INTVAL items = 1;
if (VTABLE_does(interp, pmc, array) || VTABLE_does(interp, pmc, hash)) {
@@ -97,6 +196,8 @@
static void
ensure_buffer_size(PARROT_INTERP, ARGIN(PMC *io), size_t len)
{
+ ASSERT_ARGS(ensure_buffer_size)
+
Buffer *buf = PARROT_IMAGEIO(io)->buffer;
const size_t used = PARROT_IMAGEIO(io)->pos;
const int need_free = Buffer_buflen(buf) - used - len;
@@ -111,31 +212,44 @@
}
#ifndef DISABLE_GC_DEBUG
- Parrot_gc_compact_memory_pool(INTERP);
+ Parrot_gc_compact_memory_pool(interp);
#endif
}
+PARROT_WARN_UNUSED_RESULT
PARROT_INLINE
static INTVAL
-INFO_HAS_DATA(ARGIN(PMC *io)) {
+INFO_HAS_DATA(ARGIN(const PMC *io))
+{
+ ASSERT_ARGS(INFO_HAS_DATA)
+
return PARROT_IMAGEIO(io)->pos < PARROT_IMAGEIO(io)->input_length;
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PARROT_INLINE
static PMC*
-id_list_get(PARROT_INTERP, PMC *io, UINTVAL id) {
+id_list_get(PARROT_INTERP, ARGIN(const PMC *io), UINTVAL id)
+{
+ ASSERT_ARGS(id_list_get)
+
return VTABLE_get_pmc_keyed_int(interp, PARROT_IMAGEIO(io)->todo, id - 1);
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
PARROT_INLINE
static PMC *
visit_todo_list_thaw(PARROT_INTERP, ARGIN(PMC* info))
{
- UINTVAL n = VTABLE_shift_integer(interp, info);
- UINTVAL id = PackID_get_PMCID(n);
- int packid_flags = PackID_get_FLAGS(n);
- PMC *pmc = PMCNULL;
+ ASSERT_ARGS(visit_todo_list_thaw)
+
+ const UINTVAL n = VTABLE_shift_integer(interp, info);
+ const UINTVAL id = PackID_get_PMCID(n);
+ const int packid_flags = PackID_get_FLAGS(n);
+ PMC *pmc = PMCNULL;
PARROT_ASSERT(PARROT_IMAGEIO(info)->what == VISIT_THAW_NORMAL);
@@ -146,17 +260,22 @@
break;
case enum_PackID_normal:
{
- INTVAL type = VTABLE_shift_integer(interp, info);
+ PMC * const todo = PARROT_IMAGEIO(info)->todo;
+ const INTVAL type = VTABLE_shift_integer(interp, info);
+
+ PARROT_ASSERT(id - 1 == VTABLE_elements(interp, PARROT_IMAGEIO(info)->todo));
+
if (type <= 0 || type > interp->n_vtable_max)
Parrot_ex_throw_from_c_args(interp, NULL, 1, "Unknown PMC type to thaw %d", type);
+ /* workaround to keep ParrotInterpreter PBC hack working */
+ if (type == enum_class_ParrotInterpreter)
+ PObj_flag_CLEAR(private1, info);
+
pmc = Parrot_pmc_new_noinit(interp, type);
VTABLE_thaw(interp, pmc, info);
- {
- PMC * const todo = PARROT_IMAGEIO(info)->todo;
- VTABLE_set_pmc_keyed_int(interp, todo, id - 1, pmc);
- }
+ VTABLE_set_pmc_keyed_int(interp, todo, id - 1, pmc);
}
break;
default:
@@ -168,8 +287,10 @@
}
static void
-visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info)
+visit_todo_list_freeze(PARROT_INTERP, ARGIN_NULLOK(PMC* pmc), ARGMOD(PMC* info))
{
+ ASSERT_ARGS(visit_todo_list_freeze)
+
UINTVAL id;
int packid_type;
@@ -180,14 +301,14 @@
packid_type = enum_PackID_seen;
}
else {
- Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIO(info)->seen);
+ Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIO(info)->seen);
HashBucket * const b = parrot_hash_get_bucket(interp, hash, pmc);
if (b) {
id = (UINTVAL) b->value;
packid_type = enum_PackID_seen;
}
else {
- PARROT_IMAGEIO(info)->id++; /* next id to freeze */
+ ++PARROT_IMAGEIO(info)->id; /* next id to freeze */
id = PARROT_IMAGEIO(info)->id;
packid_type = enum_PackID_normal;
}
@@ -196,10 +317,17 @@
VTABLE_push_integer(interp, info, PackID_new(id, packid_type));
if (packid_type == enum_PackID_normal) {
- Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIO(info)->seen);
+ Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIO(info)->seen);
+
PARROT_ASSERT(pmc);
+
+ /* workaround to keep ParrotInterpreter PBC hack working */
+ if (pmc->vtable->base_type == enum_class_ParrotInterpreter)
+ PObj_flag_CLEAR(private1, info);
+
VTABLE_push_integer(interp, info,
- PObj_is_object_TEST(pmc) ? enum_class_Object : pmc->vtable->base_type);
+ PObj_is_object_TEST(pmc) ? (INTVAL) enum_class_Object : pmc->vtable->base_type);
+
parrot_hash_put(interp, hash, pmc, (void *)id);
VTABLE_push_pmc(interp, PARROT_IMAGEIO(info)->todo, pmc);
VTABLE_freeze(interp, pmc, info);
@@ -207,14 +335,15 @@
}
pmclass ImageIO auto_attrs {
- ATTR Buffer *buffer; /* buffer to store the image */
- ATTR size_t pos; /* current read/write position in buffer */
- ATTR size_t input_length;
- ATTR INTVAL what;
- ATTR PMC *seen; /* seen hash */
- ATTR PMC *todo; /* todo list */
- ATTR UINTVAL id; /* freze ID of PMC */
- ATTR struct PackFile *pf;
+ ATTR Buffer *buffer; /* buffer to store the image */
+ ATTR size_t pos; /* current read/write position in buffer */
+ ATTR size_t input_length;
+ ATTR INTVAL what;
+ ATTR PMC *seen; /* seen hash */
+ ATTR PMC *todo; /* todo list */
+ ATTR UINTVAL id; /* freze ID of PMC */
+ ATTR struct PackFile *pf;
+ ATTR PackFile_ConstTable *pf_ct;
/*
@@ -236,11 +365,35 @@
*/
VTABLE void init() {
- PARROT_IMAGEIO(SELF)->buffer = NULL;
- PARROT_IMAGEIO(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
- PARROT_IMAGEIO(SELF)->seen = PMCNULL;
- PARROT_IMAGEIO(SELF)->id = 0;
- PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+ PARROT_IMAGEIO(SELF)->buffer = NULL;
+ PARROT_IMAGEIO(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ PARROT_IMAGEIO(SELF)->seen = PMCNULL;
+ PARROT_IMAGEIO(SELF)->id = 0;
+ PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+
+ PObj_flag_CLEAR(private1, SELF);
+
+ PObj_custom_mark_destroy_SETALL(SELF);
+ }
+
+/*
+
+=item C<void init_pmc(PMC *pmc)>
+
+Initializes the PMC with a pre-existing C<PackFile_ConstTable>.
+
+=cut
+
+*/
+ VTABLE void init_pmc(PMC *pmc) {
+ PARROT_IMAGEIO(SELF)->buffer = NULL;
+ PARROT_IMAGEIO(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ PARROT_IMAGEIO(SELF)->seen = PMCNULL;
+ PARROT_IMAGEIO(SELF)->id = 0;
+ PARROT_IMAGEIO(SELF)->pf = PackFile_new(INTERP, 0);
+
+ PARROT_IMAGEIO(SELF)->pf_ct = (PackFile_ConstTable *)VTABLE_get_pointer(INTERP, pmc);
+ PObj_flag_SET(private1, SELF);
PObj_custom_mark_destroy_SETALL(SELF);
}
@@ -257,6 +410,7 @@
*/
VTABLE void destroy() {
PackFile_destroy(INTERP, PARROT_IMAGEIO(SELF)->pf);
+ PARROT_IMAGEIO(SELF)->pf = NULL;
}
/*
@@ -345,8 +499,8 @@
*/
VTABLE void push_integer(INTVAL v) {
- size_t len = PF_size_integer() * sizeof (opcode_t);
- ensure_buffer_size(interp, SELF, len);
+ const size_t len = PF_size_integer() * sizeof (opcode_t);
+ ensure_buffer_size(INTERP, SELF, len);
SET_VISIT_CURSOR(SELF, (char *)PF_store_integer(GET_VISIT_CURSOR(SELF), v));
}
@@ -364,7 +518,7 @@
VTABLE void push_float(FLOATVAL v)
{
size_t len = PF_size_number() * sizeof (opcode_t);
- ensure_buffer_size(interp, SELF, len);
+ ensure_buffer_size(INTERP, SELF, len);
SET_VISIT_CURSOR(SELF, (char *)PF_store_number(GET_VISIT_CURSOR(SELF), &v));
}
@@ -379,11 +533,42 @@
*/
- VTABLE void push_string(STRING *v)
- {
- size_t len = PF_size_string(v) * sizeof (opcode_t);
- ensure_buffer_size(INTERP, SELF, len);
- SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
+ VTABLE void push_string(STRING *v) {
+ if (PObj_flag_TEST(private1, SELF)) {
+ /* store a reference to constant table entry of string */
+ int i;
+ PackFile_ConstTable *table = PARROT_IMAGEIO(SELF)->pf_ct;
+ for (i = 0; i < table->const_count; i++) {
+ PackFile_Constant *constant = table->constants[i];
+ if (constant->type == PFC_STRING) {
+ STRING * const sc = constant->u.string;
+ if (Parrot_str_equal(INTERP, v, sc)
+ && Parrot_charset_number_of_str(INTERP, v)
+ == Parrot_charset_number_of_str(INTERP, sc)
+ && Parrot_encoding_number_of_str(INTERP, v)
+ == Parrot_encoding_number_of_str(INTERP, sc))
+ {
+ STATICSELF.push_integer(i);
+ return;
+ }
+ }
+ }
+ /* XXX
+ * handle cases where the PMC has changed after Parrot_freeze_strings was called
+ * eg: :immediate subs
+ */
+ STATICSELF.push_integer(-1);
+ /* TODO
+ * should really be:
+ * PANIC(INTERP, "string not previously in constant table when freezing to packfile");
+ */
+ }
+
+ {
+ const size_t len = PF_size_string(v) * sizeof (opcode_t);
+ ensure_buffer_size(INTERP, SELF, len);
+ SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
+ }
}
/*
@@ -413,8 +598,9 @@
VTABLE INTVAL shift_integer()
{
- opcode_t *pos = GET_VISIT_CURSOR(SELF);
- const INTVAL i = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
+ opcode_t *pos = GET_VISIT_CURSOR(SELF);
+ INTVAL i = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf,
+ (const opcode_t **)&pos);
SET_VISIT_CURSOR(SELF, (char *)pos);
BYTECODE_SHIFT_OK(SELF);
return i;
@@ -432,8 +618,9 @@
*/
VTABLE FLOATVAL shift_float() {
- opcode_t *pos = GET_VISIT_CURSOR(SELF);
- const FLOATVAL f = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf, (const opcode_t **)&pos);
+ opcode_t *pos = GET_VISIT_CURSOR(SELF);
+ FLOATVAL f = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf,
+ (const opcode_t **)&pos);
SET_VISIT_CURSOR(SELF, (char *)pos);
BYTECODE_SHIFT_OK(SELF);
return f;
@@ -450,14 +637,28 @@
*/
- VTABLE STRING *shift_string()
- {
- opcode_t *pos = GET_VISIT_CURSOR(SELF);
- STRING * const s = PF_fetch_string(interp, PARROT_IMAGEIO(SELF)->pf,
- (const opcode_t **)&pos);
- SET_VISIT_CURSOR(SELF, (char *)pos);
- BYTECODE_SHIFT_OK(SELF);
- return s;
+ VTABLE STRING *shift_string() {
+ if (PObj_flag_TEST(private1, SELF)) {
+ PackFile_ConstTable *table = PARROT_IMAGEIO(SELF)->pf_ct;
+ INTVAL i = STATICSELF.shift_integer();
+
+ if (i >= 0)
+ return table->constants[i]->u.string;
+
+ /* XXX
+ * only got here because constant table doesn't contain the string
+ * fallback on inline strings
+ */
+ }
+
+ {
+ opcode_t *pos = GET_VISIT_CURSOR(SELF);
+ STRING *s = PF_fetch_string(INTERP, PARROT_IMAGEIO(SELF)->pf,
+ (const opcode_t **)&pos);
+ SET_VISIT_CURSOR(SELF, (char *)pos);
+ BYTECODE_SHIFT_OK(SELF);
+ return s;
+ }
}
/*
@@ -476,7 +677,7 @@
VTABLE void set_pmc(PMC *p)
{
- UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
+ const UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
PARROT_IMAGEIO(SELF)->what = VISIT_FREEZE_NORMAL;
create_buffer(INTERP, p, SELF);
@@ -494,11 +695,12 @@
}
VTABLE void set_string_native(STRING *image) {
- UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
+ PMC *unused;
+ const UINTVAL header_length = GROW_TO_16_BYTE_BOUNDARY(PACKFILE_HEADER_BYTES);
int unpacked_length;
- PARROT_IMAGEIO(SELF)->what = VISIT_THAW_NORMAL;
- PARROT_IMAGEIO(SELF)->buffer = (Buffer *)image;
+ PARROT_IMAGEIO(SELF)->what = VISIT_THAW_NORMAL;
+ PARROT_IMAGEIO(SELF)->buffer = (Buffer *)image;
PARROT_ASSERT(image->_bufstart == image->strstart);
@@ -506,19 +708,17 @@
PARROT_IMAGEIO(SELF)->input_length = image->strlen;
PARROT_IMAGEIO(SELF)->pf->options |= PFOPT_PMC_FREEZE_ONLY;
- unpacked_length = PackFile_unpack(interp, PARROT_IMAGEIO(SELF)->pf,
+ unpacked_length = PackFile_unpack(INTERP, PARROT_IMAGEIO(SELF)->pf,
GET_VISIT_CURSOR(SELF), PARROT_IMAGEIO(SELF)->input_length);
- if (!unpacked_length) {
- Parrot_ex_throw_from_c_args(interp, NULL,
+ if (unpacked_length)
+ INC_VISIT_CURSOR(SELF, header_length);
+ else
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_STRING_REPRESENTATION,
"PackFile header failed during unpack");
- }
- else {
- INC_VISIT_CURSOR(SELF, header_length);
- }
- visit_todo_list_thaw(INTERP, SELF);
+ unused = visit_todo_list_thaw(INTERP, SELF);
Parrot_visit_loop_visit(INTERP, SELF);
/* we're done reading the image */
Modified: branches/ops_pct/src/pmc/imageiosize.pmc
==============================================================================
--- branches/ops_pct/src/pmc/imageiosize.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/imageiosize.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -16,12 +16,32 @@
#define GROW_TO_16_BYTE_BOUNDARY(size) ((size) + ((size) % 16 ? 16 - (size) % 16 : 0))
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void visit_todo_list_freeze(PARROT_INTERP,
+ ARGIN(PMC* pmc),
+ ARGMOD(PMC* info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(* info);
+
+#define ASSERT_ARGS_visit_todo_list_freeze __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(info))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
static void
-visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info) {
+visit_todo_list_freeze(PARROT_INTERP, ARGIN(PMC* pmc), ARGMOD(PMC* info))
+{
int is_new = 0;
if (!PMC_IS_NULL(pmc)) {
- Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
+ Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
HashBucket * const b = parrot_hash_get_bucket(interp, hash, pmc);
is_new = !b;
}
@@ -29,8 +49,14 @@
VTABLE_push_integer(interp, info, 0);
if (is_new) {
- Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
+ Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
+
parrot_hash_put(interp, hash, pmc, pmc);
+
+ /* workaround to keep ParrotInterpreter PBC hack working */
+ if (pmc->vtable->base_type == enum_class_ParrotInterpreter)
+ PObj_flag_CLEAR(private1, info);
+
VTABLE_push_integer(interp, info, pmc->vtable->base_type);
VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
VTABLE_freeze(interp, pmc, info);
@@ -38,10 +64,11 @@
}
pmclass ImageIOSize auto_attrs {
- ATTR PMC *seen; /* seen hash */
- ATTR PMC *todo; /* todo list */
- ATTR struct PackFile *pf;
- ATTR INTVAL size;
+ ATTR PMC *seen; /* seen hash */
+ ATTR PMC *todo; /* todo list */
+ ATTR struct PackFile *pf;
+ ATTR struct PackFile_ConstTable *pf_ct;
+ ATTR INTVAL size;
/*
@@ -63,14 +90,42 @@
*/
VTABLE void init() {
- PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
- PARROT_IMAGEIOSIZE(SELF)->pf = PackFile_new(INTERP, 0);
- PARROT_IMAGEIOSIZE(SELF)->size = 0;
+ PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ PARROT_IMAGEIOSIZE(SELF)->pf = PackFile_new(INTERP, 0);
+ PARROT_IMAGEIOSIZE(SELF)->pf_ct = NULL;
+ PARROT_IMAGEIOSIZE(SELF)->size = 0;
PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
parrot_new_intval_hash(INTERP));
+ PObj_flag_CLEAR(private1, SELF);
+
+ PObj_custom_mark_destroy_SETALL(SELF);
+ }
+
+/*
+
+=item C<void init_pmc()>
+
+Initializes the PMC with a pre-existing C<PackFile_ConstTable>.
+
+=cut
+
+*/
+ VTABLE void init_pmc(PMC *pf_ct) {
+ PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ PARROT_IMAGEIOSIZE(SELF)->pf = PackFile_new(INTERP, 0);
+ PARROT_IMAGEIOSIZE(SELF)->pf_ct =
+ (PackFile_ConstTable *)VTABLE_get_pointer(INTERP, pf_ct);
+ PARROT_IMAGEIOSIZE(SELF)->size = 0;
+
+ PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
+ VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
+ parrot_new_intval_hash(INTERP));
+
+ PObj_flag_SET(private1, SELF);
+
PObj_custom_mark_destroy_SETALL(SELF);
}
@@ -113,8 +168,8 @@
*/
VTABLE PMC *get_pmc() {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_Integer);
- VTABLE_set_integer_native(INTERP, ret, PARROT_IMAGEIOSIZE(SELF)->size);
+ PMC * const ret = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
+ PARROT_IMAGEIOSIZE(SELF)->size);
return ret;
}
@@ -157,7 +212,7 @@
*/
VTABLE void push_integer(INTVAL v) {
- size_t len = PF_size_integer() * sizeof (opcode_t);
+ const size_t len = PF_size_integer() * sizeof (opcode_t);
PARROT_IMAGEIOSIZE(SELF)->size += len;
}
@@ -174,7 +229,7 @@
VTABLE void push_float(FLOATVAL v)
{
- size_t len = PF_size_number() * sizeof (opcode_t);
+ const size_t len = PF_size_number() * sizeof (opcode_t);
PARROT_IMAGEIOSIZE(SELF)->size += len;
}
@@ -189,10 +244,40 @@
*/
- VTABLE void push_string(STRING *v)
- {
- size_t len = PF_size_string(v) * sizeof (opcode_t);
- PARROT_IMAGEIOSIZE(SELF)->size += len;
+ VTABLE void push_string(STRING *v) {
+ if (PObj_flag_TEST(private1, SELF)) {
+ /* look for a reference to constant table entry of string */
+ int i;
+ PackFile_ConstTable *table = PARROT_IMAGEIOSIZE(SELF)->pf_ct;
+ for (i = 0; i < table->const_count; i++) {
+ PackFile_Constant *constant = table->constants[i];
+ if (constant->type == PFC_STRING) {
+ STRING * const sc = constant->u.string;
+ if (Parrot_str_equal(INTERP, v, sc)
+ && Parrot_charset_number_of_str(INTERP, v)
+ == Parrot_charset_number_of_str(INTERP, sc)
+ && Parrot_encoding_number_of_str(INTERP, v)
+ == Parrot_encoding_number_of_str(INTERP, sc)) {
+ STATICSELF.push_integer(i);
+ return;
+ }
+ }
+ }
+ /* XXX
+ * handle cases where the PMC has changed after Parrot_freeze_strings was called
+ * eg: :immediate subs
+ */
+ STATICSELF.push_integer(-1);
+ /* TODO
+ * should really be:
+ * PANIC(INTERP, "string not previously in constant table when freezing to packfile");
+ */
+ }
+
+ {
+ const size_t len = PF_size_string(v) * sizeof (opcode_t);
+ PARROT_IMAGEIOSIZE(SELF)->size += len;
+ }
}
/*
Copied: branches/ops_pct/src/pmc/imageiostrings.pmc (from r46301, trunk/src/pmc/imageiostrings.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/pmc/imageiostrings.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/pmc/imageiostrings.pmc)
@@ -0,0 +1,199 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/imageiosize.pmc - ImageIOStrings PMC
+
+=head1 DESCRIPTION
+
+Get a list of strings in an object graph. Used in packfile creation.
+
+=cut
+
+*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass ImageIOStrings auto_attrs {
+ ATTR PMC *seen; /* seen hash */
+ ATTR PMC *todo; /* todo list */
+ ATTR PMC *list; /* list of strings seen */
+
+/*
+
+=head1 VTABLES
+
+=over 4
+
+=cut
+
+*/
+
+/*
+
+=item C<void init()>
+
+Initializes the PMC.
+
+=cut
+
+*/
+ VTABLE void init() {
+ PARROT_IMAGEIOSTRINGS(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+
+ PARROT_IMAGEIOSTRINGS(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
+ VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->seen,
+ parrot_new_intval_hash(INTERP));
+
+ PARROT_IMAGEIOSTRINGS(SELF)->list = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+ }
+
+/*
+
+=item C<void mark()>
+
+Marks the PMC as alive.
+
+=cut
+
+*/
+ VTABLE void mark() {
+ Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->todo);
+ Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->seen);
+ Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->list);
+ }
+
+/*
+
+=item C<VTABLE PMC *get_pmc()>
+
+Gets the result PMC after a thaw.
+
+=cut
+
+*/
+
+ VTABLE PMC *get_pmc() {
+ return PARROT_IMAGEIOSTRINGS(SELF)->list;
+ }
+
+/*
+
+=item C<VTABLE PMC *get_iter()>
+
+Get the C<todo> list for this freeze/thaw for iterating over.
+
+=cut
+
+*/
+
+ VTABLE PMC *get_iter() {
+ return PARROT_IMAGEIOSTRINGS(SELF)->todo;
+ }
+
+/*
+
+=item C<VTABLE INTVAL get_integer()>
+
+Returns the flags describing the visit action
+
+=cut
+
+*/
+
+ VTABLE INTVAL get_integer() {
+ return VISIT_FREEZE_NORMAL;
+ }
+
+
+/*
+
+=item C<VTABLE void push_integer(INTVAL v)>
+
+Do nothing.
+
+=cut
+
+*/
+
+ VTABLE void push_integer(INTVAL v) { }
+
+
+/*
+
+=item C<VTABLE void push_float(FLOATVAL v)>
+
+Do nothing.
+
+=cut
+
+*/
+
+ VTABLE void push_float(FLOATVAL v) { }
+
+
+/*
+
+=item C<VTABLE void push_string(STRING *v)>
+
+Adds the string to the list of strings.
+
+=cut
+
+*/
+
+ VTABLE void push_string(STRING *v)
+ {
+ VTABLE_push_string(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->list, v);
+ }
+
+/*
+
+=item C<VTABLE void push_pmc(PMC *v)>
+
+Checks new pmcs for strings.
+
+=cut
+
+*/
+
+ VTABLE void push_pmc(PMC *v) {
+ if (!PMC_IS_NULL(v)) {
+ Hash * const hash = (Hash *)VTABLE_get_pointer(INTERP,
+ PARROT_IMAGEIOSTRINGS(SELF)->seen);
+ HashBucket * const b = parrot_hash_get_bucket(INTERP, hash, v);
+ if (!b) {
+ /* not yet seen */
+ parrot_hash_put(INTERP, hash, v, v);
+ VTABLE_push_pmc(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->todo, v);
+ VTABLE_freeze(INTERP, v, SELF);
+ }
+ }
+ }
+
+ VTABLE void set_pmc(PMC *p)
+ {
+ STATICSELF.push_pmc(p);
+ Parrot_visit_loop_visit(INTERP, SELF);
+ }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/pmc/integer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/integer.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/integer.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2003-2008, Parrot Foundation.
+Copyright (C) 2003-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -21,9 +21,33 @@
#include "pmc/pmc_bigint.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void maybe_throw_overflow_error(PARROT_INTERP)
+ __attribute__nonnull__(1);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+static PMC* upgrade_self_to_bignum(PARROT_INTERP, ARGMOD(PMC *self))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*self);
+
+#define ASSERT_ARGS_maybe_throw_overflow_error __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_upgrade_self_to_bignum __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
static void
maybe_throw_overflow_error(PARROT_INTERP)
{
+ ASSERT_ARGS(maybe_throw_overflow_error)
+
/* check to see what the behavior is. If the interpreter is set
to throw an exception on overflow. If so, throw the exception,
otherwise, chill out it's no big deal. */
@@ -32,9 +56,13 @@
"Integer overflow");
}
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
static PMC*
-upgrade_self_to_bignum(PARROT_INTERP, PMC *self)
+upgrade_self_to_bignum(PARROT_INTERP, ARGMOD(PMC *self))
{
+ ASSERT_ARGS(upgrade_self_to_bignum)
+
/* Do an in-place upgrade to a Bignum of SELF and return a pointer
to it (which is probably redundant, but whatever). */
const INTVAL a = VTABLE_get_integer(interp, self);
@@ -74,6 +102,13 @@
attrs->iv = VTABLE_get_integer(INTERP, init);
}
+ VTABLE void init_int(INTVAL init) {
+ Parrot_Integer_attributes * const attrs =
+ (Parrot_Integer_attributes *)PMC_data(SELF);
+
+ attrs->iv = init;
+ }
+
/*
=item C<PMC *clone()>
@@ -265,7 +300,7 @@
const INTVAL c = a + b;
if ((c^a) >= 0 || (c^b) >= 0) {
- dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
+ dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
/* need this for e.g. Undef PMC */
VTABLE_set_integer_native(INTERP, dest, c);
@@ -273,10 +308,10 @@
}
else {
PMC * temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
- return VTABLE_add(interp, temp, value, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
+ return VTABLE_add(INTERP, temp, value, dest);
}
}
@@ -296,15 +331,15 @@
MULTI PMC *add(BigInt value, PMC *dest) {
PMC *temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, SELF.get_integer());
- return VTABLE_add(interp, temp, value, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
+ return VTABLE_add(INTERP, temp, value, dest);
}
MULTI PMC *add(DEFAULT value, PMC *dest) {
- dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, value));
+ dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
VTABLE_set_number_native(INTERP, dest,
SELF.get_integer() + VTABLE_get_number(INTERP, value));
@@ -324,10 +359,10 @@
}
else {
PMC *temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
- return VTABLE_add_int(interp, temp, b, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
+ return VTABLE_add_int(INTERP, temp, b, dest);
}
}
@@ -353,6 +388,7 @@
MULTI void i_add(Complex value) {
const INTVAL a = SELF.get_integer();
+ UNUSED(a);
Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
VTABLE_set_number_native(INTERP, SELF,
@@ -373,10 +409,9 @@
if ((c^a) >= 0 || (c^b) >= 0)
VTABLE_set_integer_native(INTERP, SELF, c);
else {
- PMC *temp;
- maybe_throw_overflow_error(interp);
- SELF = upgrade_self_to_bignum(interp, SELF);
- VTABLE_i_add_int(interp, SELF, b);
+ maybe_throw_overflow_error(INTERP);
+ SELF = upgrade_self_to_bignum(INTERP, SELF);
+ VTABLE_i_add_int(INTERP, SELF, b);
}
}
@@ -414,10 +449,10 @@
}
else {
PMC *temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
- return VTABLE_subtract(interp, temp, value, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
+ return VTABLE_subtract(INTERP, temp, value, dest);
}
}
@@ -437,10 +472,10 @@
MULTI PMC *subtract(BigInt value, PMC *dest) {
PMC *temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, SELF.get_integer());
- return VTABLE_subtract(interp, temp, value, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
+ return VTABLE_subtract(INTERP, temp, value, dest);
}
@@ -475,10 +510,10 @@
}
else {
PMC *temp;
- maybe_throw_overflow_error(interp);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
- return VTABLE_subtract_int(interp, temp, b, dest);
+ maybe_throw_overflow_error(INTERP);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
+ return VTABLE_subtract_int(INTERP, temp, b, dest);
}
}
@@ -505,9 +540,9 @@
if ((c^a) >= 0 || (c^~b) >= 0)
VTABLE_set_integer_native(INTERP, SELF, c);
else {
- maybe_throw_overflow_error(interp);
- SELF = upgrade_self_to_bignum(interp, SELF);
- VTABLE_i_subtract(interp, SELF, value);
+ maybe_throw_overflow_error(INTERP);
+ SELF = upgrade_self_to_bignum(INTERP, SELF);
+ VTABLE_i_subtract(INTERP, SELF, value);
}
}
@@ -568,7 +603,7 @@
const double cf = (double)a * (double)b;
if ((double) c == cf) {
- dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
+ dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
VTABLE_set_integer_native(INTERP, dest, c);
return dest;
@@ -576,8 +611,8 @@
else {
PMC *temp;
maybe_throw_overflow_error(INTERP);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
return VTABLE_multiply(INTERP, temp, value, dest);
}
}
@@ -621,8 +656,8 @@
else {
PMC *temp;
maybe_throw_overflow_error(INTERP);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, a);
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, a);
return VTABLE_multiply_int(INTERP, temp, b, dest);
}
}
@@ -647,7 +682,7 @@
MULTI void i_multiply(BigInt value) {
- interp->vtables[enum_class_BigInt]->multiply_int(INTERP, value, SELF.get_integer(), SELF);
+ INTERP->vtables[enum_class_BigInt]->multiply_int(INTERP, value, SELF.get_integer(), SELF);
}
@@ -708,8 +743,8 @@
MULTI PMC *divide(BigInt value, PMC *dest) {
PMC *temp;
maybe_throw_overflow_error(INTERP);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, SELF.get_integer());
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
return VTABLE_divide(INTERP, temp, value, dest);
}
@@ -769,8 +804,8 @@
MULTI PMC *floor_divide(BigInt value, PMC *dest) {
PMC *temp;
maybe_throw_overflow_error(INTERP);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, SELF.get_integer());
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
return VTABLE_floor_divide(INTERP, temp, value, dest);
}
@@ -854,7 +889,6 @@
VTABLE void i_floor_divide_float(FLOATVAL value) {
FLOATVAL f;
- INTVAL self_val;
if (FLOAT_IS_ZERO(value))
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
@@ -892,8 +926,8 @@
MULTI PMC *modulus(BigInt value, PMC *dest) {
PMC *temp;
maybe_throw_overflow_error(INTERP);
- temp = Parrot_pmc_new(interp, enum_class_BigInt);
- VTABLE_set_integer_native(interp, temp, SELF.get_integer());
+ temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
+ VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
return VTABLE_modulus(INTERP, temp, value, dest);
}
@@ -995,7 +1029,7 @@
case enum_class_BigInt:
temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"is_equal", "PP->I", temp, value, &retval);
return retval;
break;
@@ -1032,7 +1066,7 @@
MULTI INTVAL cmp(Float value) {
INTVAL iv;
- GET_ATTR_iv(interp, SELF, iv);
+ GET_ATTR_iv(INTERP, SELF, iv);
{
const FLOATVAL diff = (FLOATVAL)iv - VTABLE_get_number(INTERP, value);
@@ -1044,7 +1078,7 @@
MULTI INTVAL cmp(DEFAULT value) {
/* int or undef */
INTVAL selfint;
- GET_ATTR_iv(interp, SELF, selfint);
+ GET_ATTR_iv(INTERP, SELF, selfint);
{
const INTVAL valueint = VTABLE_get_integer(INTERP, value);
return selfint > valueint ? 1 : selfint < valueint ? -1 : 0;
@@ -1100,16 +1134,16 @@
VTABLE void increment() {
INTVAL a, c;
- GET_ATTR_iv(interp, SELF, a);
+ GET_ATTR_iv(INTERP, SELF, a);
c = a + 1;
/* did not overflow */
if ((c^a) >= 0 || (c^1) >= 0)
- SET_ATTR_iv(interp, SELF, c);
+ SET_ATTR_iv(INTERP, SELF, c);
else {
- Parrot_pmc_reuse(interp, SELF, enum_class_BigInt, 0);
- VTABLE_set_integer_native(interp, SELF, a);
- VTABLE_increment(interp, SELF);
+ Parrot_pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
+ VTABLE_set_integer_native(INTERP, SELF, a);
+ VTABLE_increment(INTERP, SELF);
}
}
@@ -1129,11 +1163,11 @@
const INTVAL c = a - 1;
if ((c^a) >= 0 || (c^~1) >= 0)
- VTABLE_set_integer_native(interp, SELF, c);
+ VTABLE_set_integer_native(INTERP, SELF, c);
else {
Parrot_pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
- VTABLE_set_integer_native(interp, SELF, a);
- VTABLE_decrement(interp, SELF);
+ VTABLE_set_integer_native(INTERP, SELF, a);
+ VTABLE_decrement(INTERP, SELF);
}
}
@@ -1184,10 +1218,10 @@
STRING *result;
if ((base < 2) || (base > 36))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"get_as_base: base out of bounds");
- result = Parrot_str_from_int_base(interp, buf,
+ result = Parrot_str_from_int_base(INTERP, buf,
(HUGEINTVAL)VTABLE_get_integer(INTERP, SELF),
(unsigned int)base);
Modified: branches/ops_pct/src/pmc/iterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/iterator.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/iterator.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -57,6 +57,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Iterator no_ro {
/*
Modified: branches/ops_pct/src/pmc/key.pmc
==============================================================================
--- branches/ops_pct/src/pmc/key.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/key.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -18,6 +18,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Key auto_attrs {
ATTR PMC *next_key; /* Sometimes it's the next key, sometimes it's
not. The Key code is like that. */
@@ -70,8 +74,7 @@
break;
case KEY_string_FLAG:
case KEY_string_FLAG | KEY_register_FLAG:
- key_set_string(INTERP, dkey,
- Parrot_str_copy(INTERP, VTABLE_get_string(INTERP, key)));
+ key_set_string(INTERP, dkey, VTABLE_get_string(INTERP, key));
break;
case KEY_pmc_FLAG:
case KEY_pmc_FLAG | KEY_register_FLAG:
@@ -153,7 +156,7 @@
if (PObj_get_FLAGS(SELF) & KEY_type_FLAGS)
return key_string(INTERP, SELF);
- return string_from_literal(INTERP, "");
+ return CONST_STRING(INTERP, "");
}
/*
@@ -235,7 +238,7 @@
void push_pmc(PMC *value) {
if (value->vtable->base_type != enum_class_Key)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Can only push another Key onto a Key PMC.");
key_append(INTERP, SELF, value);
Modified: branches/ops_pct/src/pmc/lexinfo.pmc
==============================================================================
--- branches/ops_pct/src/pmc/lexinfo.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/lexinfo.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2008-2009, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -20,6 +20,10 @@
#include "pmc/pmc_hash.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
/*
* LexInfo contains a constant Hash with constant string
* keys and integer indices
@@ -47,7 +51,7 @@
void class_init() {
/* there is no pmclass const_pmc flag yet */
- interp->vtables[entry]->flags |= VTABLE_IS_CONST_PMC_FLAG;
+ INTERP->vtables[entry]->flags |= VTABLE_IS_CONST_PMC_FLAG;
}
@@ -57,13 +61,11 @@
}
VTABLE void init_pmc(PMC *sub) {
- Parrot_LexInfo_attributes *attrs =
- (Parrot_LexInfo_attributes *) PMC_data(SELF);
-
PARROT_ASSERT(PObj_constant_TEST(SELF));
/* Set value type to INTVAL */
- Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(INTERP, "set_value_type"), "I->", (INTVAL)enum_type_INTVAL);
+ SELF.init_int((INTVAL)enum_type_INTVAL);
+ PObj_custom_mark_destroy_SETALL(SELF);
}
/*
@@ -94,10 +96,11 @@
*/
VTABLE PMC *inspect_str(STRING *what) {
- if (Parrot_str_equal(interp, what, CONST_STRING(interp, "symbols"))) {
- PMC *result = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
- Hash *hash = (Hash *)SELF.get_pointer();
- UINTVAL entries = hash->entries;
+ if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "symbols"))) {
+ PMC * const result = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+ const Hash *hash = (Hash *)SELF.get_pointer();
+ const UINTVAL entries = hash->entries;
+
UINTVAL found = 0;
INTVAL i;
@@ -105,12 +108,12 @@
HashBucket *bucket = hash->bi[i];
while (bucket) {
if (++found > entries)
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"Detected corruption at LexInfo hash %p entries %d",
hash, (int)entries);
PARROT_ASSERT(bucket->key);
- VTABLE_push_string(interp, result, (STRING *)bucket->key);
+ VTABLE_push_string(INTERP, result, (STRING *)bucket->key);
bucket = bucket->next;
}
@@ -119,7 +122,7 @@
return result;
}
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Unknown introspection value '%S'", what);
}
Modified: branches/ops_pct/src/pmc/lexpad.pmc
==============================================================================
--- branches/ops_pct/src/pmc/lexpad.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/lexpad.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -26,6 +26,10 @@
* pmc_val ... LexInfo
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass LexPad provides hash no_ro auto_attrs {
ATTR PMC *lexinfo;
ATTR PMC *ctx;
Modified: branches/ops_pct/src/pmc/managedstruct.pmc
==============================================================================
--- branches/ops_pct/src/pmc/managedstruct.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/managedstruct.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -22,6 +22,10 @@
typedef void (*custom_free_func_t)(PARROT_INTERP, void *ptr, void *priv);
typedef PMC * (*custom_clone_func_t)(PARROT_INTERP, PMC *ptr, void *priv);
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ManagedStruct extends UnManagedStruct auto_attrs {
/* if custom_free_func and ptr (inherited from UnManagedStruct) are both set,
* custom_free_func is called before the normal destroy() function does any
@@ -144,9 +148,9 @@
PMC *dest;
if (clone_func) {
void *clone_data = PARROT_MANAGEDSTRUCT(SELF)->custom_clone_priv;
- return clone_func(interp, SELF, clone_data);
+ return clone_func(INTERP, SELF, clone_data);
}
- dest = Parrot_pmc_new_init(interp, SELF->vtable->base_type,
+ dest = Parrot_pmc_new_init(INTERP, SELF->vtable->base_type,
PARROT_MANAGEDSTRUCT(SELF)->init);
if (PARROT_MANAGEDSTRUCT(SELF)->ptr)
Modified: branches/ops_pct/src/pmc/multisub.pmc
==============================================================================
--- branches/ops_pct/src/pmc/multisub.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/multisub.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -21,6 +21,10 @@
#include "pmc/pmc_callcontext.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass MultiSub extends ResizablePMCArray auto_attrs provides array {
VTABLE STRING * get_string() {
@@ -30,78 +34,78 @@
}
VTABLE void push_pmc(PMC *value) {
- STRING * const _sub = CONST_STRING(interp, "Sub");
- STRING * const _nci = CONST_STRING(interp, "NCI");
+ STRING * const _sub = CONST_STRING(INTERP, "Sub");
+ STRING * const _nci = CONST_STRING(INTERP, "NCI");
- if (!VTABLE_isa(interp, value, _sub)
- && !VTABLE_isa(interp, value, _nci))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ if (!VTABLE_isa(INTERP, value, _sub)
+ && !VTABLE_isa(INTERP, value, _nci))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to push non Sub PMC");
SUPER(value);
}
VTABLE void set_pmc_keyed_int(INTVAL key, PMC *value) {
- STRING * const _sub = CONST_STRING(interp, "Sub");
- if (!VTABLE_isa(interp, value, _sub))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ STRING * const _sub = CONST_STRING(INTERP, "Sub");
+ if (!VTABLE_isa(INTERP, value, _sub))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to set non Sub PMC");
SUPER(key, value);
}
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to set non Sub PMC");
}
VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to set non Sub PMC");
}
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to set non Sub PMC");
}
VTABLE opcode_t *invoke(void *next) {
- PMC * const sig_obj = CONTEXT(interp)->current_sig;
- PMC * const func = Parrot_mmd_sort_manhattan_by_sig_pmc(interp,
+ PMC * const sig_obj = CONTEXT(INTERP)->current_sig;
+ PMC * const func = Parrot_mmd_sort_manhattan_by_sig_pmc(INTERP,
SELF, sig_obj);
if (PMC_IS_NULL(func))
Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"No applicable candidates found to dispatch to for '%Ss'",
- VTABLE_get_string(interp, SELF));
+ VTABLE_get_string(INTERP, SELF));
return VTABLE_invoke(INTERP, func, next);
}
/* I don't really know how to implement these if they need something
special, so I'll sort the sub list and defer processing to the
- ResizablePMCArray's VTABLE methods of the same names. Hopefully we
+ ResizablePMCArray's VTABLEs of the same names. Hopefully we
don't need anything beyond that. */
VTABLE PMC *get_pmc_keyed(PMC *key) {
- PMC * const sig_obj = CONTEXT(interp)->current_sig;
- PMC * const sub = Parrot_mmd_sort_manhattan_by_sig_pmc(interp,
+ PMC * const sig_obj = CONTEXT(INTERP)->current_sig;
+ PMC * const sub = Parrot_mmd_sort_manhattan_by_sig_pmc(INTERP,
SELF, sig_obj);
if (PMC_IS_NULL(sub))
Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"No applicable candidates found to dispatch to for '%Ss'",
- VTABLE_get_string(interp, SELF));
+ VTABLE_get_string(INTERP, SELF));
return SUPER(key);
}
VTABLE PMC *get_pmc_keyed_str(STRING *s) {
- PMC * const sig_obj = CONTEXT(interp)->current_sig;
- PMC * const sub = Parrot_mmd_sort_manhattan_by_sig_pmc(interp,
+ PMC * const sig_obj = CONTEXT(INTERP)->current_sig;
+ PMC * const sub = Parrot_mmd_sort_manhattan_by_sig_pmc(INTERP,
SELF, sig_obj);
if (PMC_IS_NULL(sub))
Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"No applicable candidates found to dispatch to for '%Ss'",
- VTABLE_get_string(interp, SELF));
+ VTABLE_get_string(INTERP, SELF));
return SUPER(s);
}
@@ -111,8 +115,8 @@
to this input argument list and return an iterator over that list. */
METHOD get_iter(PMC *args) {
- STRING * const _array = CONST_STRING(interp, "Array");
- STRING * const _string = CONST_STRING(interp, "String");
+ STRING * const _array = CONST_STRING(INTERP, "Array");
+ STRING * const _string = CONST_STRING(INTERP, "String");
if (VTABLE_isa(INTERP, args, _array)){
/* TODO: What goes here? */
@@ -122,7 +126,7 @@
/* TODO: What goes here? */
}
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"attempt to call get_iter method with invalid arg type.\n");
}
}
Modified: branches/ops_pct/src/pmc/namespace.pmc
==============================================================================
--- branches/ops_pct/src/pmc/namespace.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/namespace.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2005-2009, Parrot Foundation.
+Copyright (C) 2005-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -20,13 +20,90 @@
#include "pmc/pmc_sub.h"
-static void add_to_class(
- Interp *interp,
- Parrot_NameSpace_attributes * const nsinfo,
- PMC * const classobj,
- STRING *key,
- PMC *value)
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void add_multi_to_namespace(PARROT_INTERP,
+ ARGIN(PMC *SELF),
+ ARGIN(STRING *key),
+ ARGIN_NULLOK(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static void add_nci_to_namespace(PARROT_INTERP,
+ ARGIN(PMC *SELF),
+ ARGIN(STRING *key),
+ ARGIN_NULLOK(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+static void add_to_class(PARROT_INTERP,
+ ARGMOD(Parrot_NameSpace_attributes *nsinfo),
+ ARGMOD_NULLOK(PMC *classobj),
+ ARGIN(STRING *key),
+ ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*nsinfo)
+ FUNC_MODIFIES(*classobj);
+
+PARROT_WARN_UNUSED_RESULT
+static int maybe_add_sub_to_namespace(PARROT_INTERP,
+ ARGIN(PMC *SELF),
+ ARGIN(STRING *key),
+ ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+PARROT_WARN_UNUSED_RESULT
+static int ns_insert_sub_keyed_str(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(STRING *key),
+ ARGIN(PMC *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+#define ASSERT_ARGS_add_multi_to_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF) \
+ , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_add_nci_to_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF) \
+ , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_add_to_class __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(nsinfo) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_maybe_add_sub_to_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(SELF) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_ns_insert_sub_keyed_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(value))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+static void
+add_to_class(PARROT_INTERP, ARGMOD(Parrot_NameSpace_attributes *nsinfo),
+ ARGMOD_NULLOK(PMC *classobj), ARGIN(STRING *key), ARGIN(PMC *value))
{
+ ASSERT_ARGS(add_to_class)
+
/* Insert it in class, if there is a class */
if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj))
VTABLE_add_method(interp, classobj, key, value);
@@ -43,14 +120,19 @@
}
}
+PARROT_WARN_UNUSED_RESULT
static int
-ns_insert_sub_keyed_str(PARROT_INTERP, PMC *self, STRING *key, PMC *value)
+ns_insert_sub_keyed_str(PARROT_INTERP, ARGIN(PMC *self), ARGIN(STRING *key),
+ ARGIN(PMC *value))
{
+ ASSERT_ARGS(ns_insert_sub_keyed_str)
+
Parrot_NameSpace_attributes * const nsinfo = PARROT_NAMESPACE(self);
PMC * vtable = nsinfo->vtable;
PMC * const classobj = VTABLE_get_class(interp, self);
- STRING * vtable_key = NULL;
+ STRING * vtable_key = STRINGNULL;
Parrot_Sub_attributes *sub;
+ INTVAL stored = 0;
PMC_get_sub(interp, value, sub);
@@ -68,36 +150,45 @@
/* Otherwise, store it in the namespace for the class to
* retrieve later */
else {
- /* If we don't have a place to hang vtable methods, make one. */
+ /* If we don't have a place to hang vtables, make one. */
if (PMC_IS_NULL(vtable))
nsinfo->vtable = vtable = Parrot_pmc_new(interp, enum_class_Hash);
/* Insert it. */
VTABLE_set_pmc_keyed_int(interp, vtable, sub->vtable_index, value);
}
+ if (!(sub->comp_flags & SUB_COMP_FLAG_NSENTRY))
+ stored = 1;
}
if (sub->comp_flags & SUB_COMP_FLAG_METHOD) {
STRING *method_name = key;
if (Parrot_str_equal(interp, sub->method_name, CONST_STRING(interp, ""))) {
- if (sub->vtable_index != -1 && vtable_key != NULL) {
- method_name = Parrot_str_copy(interp, vtable_key);
+ if (sub->vtable_index != -1 && !STRING_IS_NULL(vtable_key)) {
+ method_name = vtable_key;
}
}
else {
method_name = sub->method_name;
}
add_to_class(interp, nsinfo, classobj, method_name, value);
+
+ if (!(sub->comp_flags & SUB_COMP_FLAG_NSENTRY))
+ stored = 1;
}
- return 0;
+ return stored;
}
+PARROT_WARN_UNUSED_RESULT
static int
-maybe_add_sub_to_namespace(PARROT_INTERP, PMC *SELF, STRING *key, PMC *value)
+maybe_add_sub_to_namespace(PARROT_INTERP, ARGIN(PMC *SELF), ARGIN(STRING *key),
+ ARGIN(PMC *value))
{
- STRING *sub_str = CONST_STRING(interp, "Sub");
+ ASSERT_ARGS(maybe_add_sub_to_namespace)
+
+ STRING * const sub_str = CONST_STRING(interp, "Sub");
if (!PMC_IS_NULL(value)
&& VTABLE_isa(interp, value, sub_str)
@@ -108,9 +199,12 @@
}
static void
-add_nci_to_namespace(PARROT_INTERP, PMC *SELF, STRING *key, PMC *value)
+add_nci_to_namespace(PARROT_INTERP, ARGIN(PMC *SELF), ARGIN(STRING *key),
+ ARGIN_NULLOK(PMC *value))
{
- STRING *nci_str = CONST_STRING(interp, "NCI");
+ ASSERT_ARGS(add_nci_to_namespace)
+
+ STRING * const nci_str = CONST_STRING(interp, "NCI");
if (!PMC_IS_NULL(value)
&& VTABLE_isa(interp, value, nci_str)) {
@@ -123,9 +217,12 @@
}
static void
-add_multi_to_namespace(PARROT_INTERP, PMC *SELF, STRING *key, PMC *value)
+add_multi_to_namespace(PARROT_INTERP, ARGIN(PMC *SELF), ARGIN(STRING *key),
+ ARGIN_NULLOK(PMC *value))
{
- STRING *multi_str = CONST_STRING(interp, "MultiSub");
+ ASSERT_ARGS(add_multi_to_namespace)
+
+ STRING * const multi_str = CONST_STRING(interp, "MultiSub");
if (!PMC_IS_NULL(value)
&& VTABLE_isa(interp, value, multi_str)) {
@@ -137,12 +234,12 @@
PMC * const classobj = VTABLE_get_class(interp, SELF);
/* Extract the first alternate and check if it is a method */
- PMC *pmc_sub = VTABLE_get_pmc_keyed_int(interp, value, 0);
+ PMC * const pmc_sub = VTABLE_get_pmc_keyed_int(interp, value, 0);
Parrot_Sub_attributes *sub;
PMC_get_sub(interp, pmc_sub, sub);
if (sub->comp_flags & SUB_COMP_FLAG_METHOD) {
- STRING *empty_str = CONST_STRING(interp, "");
+ STRING * const empty_str = CONST_STRING(interp, "");
STRING *method_name = key;
Hash *hash;
@@ -202,8 +299,9 @@
*/
VTABLE void init() {
- PARROT_NAMESPACE(SELF)->vtable = PMCNULL;
- PARROT_NAMESPACE(SELF)->_class = PMCNULL;
+ PARROT_NAMESPACE(SELF)->vtable = PMCNULL;
+ PARROT_NAMESPACE(SELF)->methods = PMCNULL;
+ PARROT_NAMESPACE(SELF)->_class = PMCNULL;
SELF.set_pointer(parrot_new_hash(INTERP));
PObj_custom_mark_destroy_SETALL(SELF);
}
@@ -221,13 +319,13 @@
Parrot_NameSpace_attributes * const nsinfo = PARROT_NAMESPACE(SELF);
if (nsinfo->hash)
- parrot_mark_hash(interp, nsinfo->hash);
+ parrot_mark_hash(INTERP, nsinfo->hash);
- Parrot_gc_mark_PMC_alive(interp, nsinfo->parent);
- Parrot_gc_mark_PMC_alive(interp, nsinfo->_class);
- Parrot_gc_mark_PMC_alive(interp, nsinfo->vtable);
- Parrot_gc_mark_PMC_alive(interp, nsinfo->methods);
- Parrot_gc_mark_STRING_alive(interp, nsinfo->name);
+ Parrot_gc_mark_PMC_alive(INTERP, nsinfo->parent);
+ Parrot_gc_mark_PMC_alive(INTERP, nsinfo->_class);
+ Parrot_gc_mark_PMC_alive(INTERP, nsinfo->vtable);
+ Parrot_gc_mark_PMC_alive(INTERP, nsinfo->methods);
+ Parrot_gc_mark_STRING_alive(INTERP, nsinfo->name);
}
/*
@@ -287,14 +385,14 @@
PMC * const old = (PMC *)parrot_hash_get(INTERP, (Hash *)SELF.get_pointer(), key);
/* If it's a sub... */
- if (maybe_add_sub_to_namespace(interp, SELF, key, value))
+ if (maybe_add_sub_to_namespace(INTERP, SELF, key, value))
return;
/* If it's an NCI method */
- add_nci_to_namespace(interp, SELF, key, value);
+ add_nci_to_namespace(INTERP, SELF, key, value);
/* If it's a multi-sub and the first in this NS... */
- add_multi_to_namespace(interp, SELF, key, value);
+ add_multi_to_namespace(INTERP, SELF, key, value);
if (!old)
SUPER(key, value);
@@ -312,13 +410,12 @@
}
else {
/* create new tuple */
- new_tuple = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
+ /* for a fully typed namespace, we'd need 3 or 4 */
+ new_tuple = Parrot_pmc_new_init_int(INTERP,
+ enum_class_FixedPMCArray, NS_max_slots);
/* flag it as special */
PObj_get_FLAGS(new_tuple) |= FPA_is_ns_ext;
-
- /* for a fully typed namespace, we'd need 3 or 4 */
- VTABLE_set_integer_native(INTERP, new_tuple, NS_max_slots);
}
}
@@ -368,10 +465,10 @@
}
if (key->vtable->base_type == enum_class_ResizableStringArray) {
- const INTVAL elements = VTABLE_elements(interp, key);
+ const INTVAL elements = VTABLE_elements(INTERP, key);
INTVAL i;
for (i = 0; i < elements; ++i) {
- STRING * const part = VTABLE_get_string_keyed_int(interp, key, i);
+ STRING * const part = VTABLE_get_string_keyed_int(INTERP, key, i);
if ((i + 1) >= elements) { /* Last entry in the array */
Parrot_set_global(INTERP, ns, part, value);
@@ -429,13 +526,13 @@
INTVAL i = 0;
while (!PMC_IS_NULL(ns) && VTABLE_elements(INTERP, key)) {
STRING * const name = VTABLE_get_string_keyed_int(INTERP, key, i);
- if (name == NULL || name == STRINGNULL) {
+ if (STRING_IS_NULL(name)) {
ns = PMCNULL;
/* What to do here? Throw an exception or something? */
break;
}
ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
- i++;
+ ++i;
}
return ns;
}
@@ -457,7 +554,7 @@
if (PMC_IS_NULL(vtable))
return PMCNULL;
- return VTABLE_get_pmc_keyed_int(interp, vtable, key);
+ return VTABLE_get_pmc_keyed_int(INTERP, vtable, key);
}
/*
@@ -515,10 +612,10 @@
}
}
case enum_class_ResizableStringArray: {
- const INTVAL elements = VTABLE_elements(interp, key);
+ const INTVAL elements = VTABLE_elements(INTERP, key);
INTVAL i;
for (i = 0; i < elements; ++i) {
- STRING * const part = VTABLE_get_string_keyed_int(interp, key, i);
+ STRING * const part = VTABLE_get_string_keyed_int(INTERP, key, i);
/* Last entry in the array */
if ((i + 1) >= elements)
@@ -555,6 +652,61 @@
/*
+=item C<PMC *inspect_str(STRING *what)>
+
+Provides introspection of a specific piece of information about the
+namespace. The available information is:
+
+=over 8
+
+=item class
+
+The class object associated with the namespace, if any.
+
+=item methods
+
+A temporary cache of methods (destroyed when class object is created).
+Hash keyed on method name, value is an invokable PMC. Includes methods
+composed in from roles.
+
+=item vtable_overrides
+
+A temporary cache of vtable overrides (destroyed when class object is
+created). Hash keyed on vtable name, value is an invokable PMC.
+Includes vtable overrides composed in from roles.
+
+=back
+
+=cut
+
+*/
+
+ VTABLE PMC *inspect_str(STRING *what) {
+ const Parrot_NameSpace_attributes * const nsinfo = PARROT_NAMESPACE(SELF);
+ PMC *found;
+
+ if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "methods"))) {
+ found = nsinfo->methods;
+ }
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "vtable_overrides"))) {
+ found = nsinfo->vtable;
+ }
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "class"))) {
+ found = nsinfo->_class;
+ }
+ else
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
+ "Unknown introspection value '%S'", what);
+
+ /* return found value */
+ if (PMC_IS_NULL(found))
+ return PMCNULL;
+
+ return found;
+ }
+
+/*
+
=back
=head2 Methods
@@ -666,7 +818,7 @@
Parrot_NameSpace_attributes *nsinfo = PARROT_NAMESPACE(ns);
VTABLE_unshift_string(INTERP, ar, nsinfo->name);
ns = nsinfo->parent;
- elements++;
+ ++elements;
}
/* remove the NULL string of the namespace root */
@@ -863,75 +1015,75 @@
*/
METHOD export_to(PMC *dest, PMC *what) {
- STRING * const s_hash = CONST_STRING(interp, "hash");
- STRING * const s_array = CONST_STRING(interp, "array");
+ STRING * const s_hash = CONST_STRING(INTERP, "hash");
+ STRING * const s_array = CONST_STRING(INTERP, "array");
if (PMC_IS_NULL(dest))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"destination namespace not specified");
- if (PMC_IS_NULL(what) || !VTABLE_elements(interp, what))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ if (PMC_IS_NULL(what) || !VTABLE_elements(INTERP, what))
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"exporting default object set not yet implemented");
/* if "what" does "hash", we extract string key/value pairs,
* lookup the object with the name specified in the key,
* and export it with the name specified as value. */
if (VTABLE_does(INTERP, what, s_hash)) {
- PMC * const iter = VTABLE_get_iter(interp, what);
- const INTVAL n = VTABLE_elements(interp, what);
+ PMC * const iter = VTABLE_get_iter(INTERP, what);
+ const INTVAL n = VTABLE_elements(INTERP, what);
INTVAL i;
for (i = 0; i < n; ++i) {
STRING *dest_name;
PMC *object;
- STRING * const src_name = VTABLE_shift_string(interp, iter);
+ STRING * const src_name = VTABLE_shift_string(INTERP, iter);
if (STRING_IS_NULL(src_name) || STRING_IS_EMPTY(src_name))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"source object name not specified");
- if (PMC_IS_NULL(VTABLE_get_pmc_keyed_str(interp, what, src_name))) {
+ if (PMC_IS_NULL(VTABLE_get_pmc_keyed_str(INTERP, what, src_name))) {
dest_name = src_name;
}
else {
- dest_name = VTABLE_get_string_keyed_str(interp, what, src_name);
+ dest_name = VTABLE_get_string_keyed_str(INTERP, what, src_name);
if (STRING_IS_NULL(dest_name) || STRING_IS_EMPTY(dest_name))
dest_name = src_name;
}
- object = VTABLE_get_pmc_keyed_str(interp, SELF, src_name);
+ object = VTABLE_get_pmc_keyed_str(INTERP, SELF, src_name);
if (PMC_IS_NULL(object))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"object '%Ss' not found in current namespace", src_name);
- VTABLE_set_pmc_keyed_str(interp, dest, dest_name, object);
+ VTABLE_set_pmc_keyed_str(INTERP, dest, dest_name, object);
}
}
else if (VTABLE_does(INTERP, what, s_array)) {
- const INTVAL n = VTABLE_elements(interp, what);
+ const INTVAL n = VTABLE_elements(INTERP, what);
INTVAL i;
for (i = 0; i < n; ++i) {
PMC *object;
- STRING * const name = VTABLE_get_string_keyed_int(interp, what, i);
+ STRING * const name = VTABLE_get_string_keyed_int(INTERP, what, i);
if (STRING_IS_NULL(name) || STRING_IS_EMPTY(name))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"object name not specified");
- object = VTABLE_get_pmc_keyed_str(interp, SELF, name);
+ object = VTABLE_get_pmc_keyed_str(INTERP, SELF, name);
if (PMC_IS_NULL(object))
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"object '%Ss' not found in current namespace", name);
- VTABLE_set_pmc_keyed_str(interp, dest, name, object);
+ VTABLE_set_pmc_keyed_str(INTERP, dest, name, object);
}
}
else
- Parrot_ex_throw_from_c_args(interp, NULL, 0,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 0,
"can't handle argument of type %s", what->vtable->base_type);
}
@@ -1008,7 +1160,7 @@
=item C<METHOD get_associated_vtable_methods()>
-Gets the Hash of vtable methods associated with this namespace and removes it
+Gets the Hash of vtables associated with this namespace and removes it
from the namespace.
=cut
Modified: branches/ops_pct/src/pmc/nci.pmc
==============================================================================
--- branches/ops_pct/src/pmc/nci.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/nci.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -18,22 +18,54 @@
*/
-typedef INTVAL (*nci_sub_t)(PARROT_INTERP, PMC *);
-typedef INTVAL (*nci_jit_sub_t)(PARROT_INTERP, PMC *, char *);
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_IGNORABLE_RESULT
+static nci_thunk_t /*@alt void@*/
+build_func(PARROT_INTERP,
+ ARGMOD(Parrot_NCI_attributes *nci_info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*nci_info);
+
+static void pcc_params(PARROT_INTERP,
+ ARGIN(STRING *sig),
+ ARGMOD(Parrot_NCI_attributes *nci_info),
+ size_t sig_length)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*nci_info);
+
+#define ASSERT_ARGS_build_func __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(nci_info))
+#define ASSERT_ARGS_pcc_params __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(sig) \
+ , PARROT_ASSERT_ARG(nci_info))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+
+static void
+pcc_params(PARROT_INTERP, ARGIN(STRING *sig), ARGMOD(Parrot_NCI_attributes *nci_info),
+ size_t sig_length)
+{
+ ASSERT_ARGS(pcc_params)
-void pcc_params(PARROT_INTERP, STRING *sig, Parrot_NCI_attributes * const nci_info,
- size_t sig_length);
-void pcc_params(PARROT_INTERP, STRING *sig, Parrot_NCI_attributes * const nci_info,
- size_t sig_length) {
char param_buf[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
- char *param_sig = sig_length <= 7
+ const int do_alloc = (sig_length > 7);
+ char *param_sig = !do_alloc
? param_buf
: mem_gc_allocate_n_typed(interp, sig_length, char);
size_t j = 0;
size_t i;
- for (i = 1; i < sig_length; i++) {
- INTVAL c = Parrot_str_indexed(interp, sig, i);
+ for (i = 1; i < sig_length; ++i) {
+ const INTVAL c = Parrot_str_indexed(interp, sig, i);
switch (c) {
case (INTVAL)'0': /* null ptr or such - doesn't consume a reg */
@@ -77,7 +109,7 @@
param_sig[j++] = 'S';
break;
default:
- if (sig_length > 7)
+ if (do_alloc)
mem_gc_free(interp, param_sig);
Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_JIT_ERROR,
@@ -101,14 +133,15 @@
}
/* actually build the NCI thunk */
-static nci_sub_t build_func(PARROT_INTERP, PMC *, Parrot_NCI_attributes *);
-static
-nci_sub_t build_func(PARROT_INTERP, PMC *pmc, Parrot_NCI_attributes *nci_info)
+PARROT_IGNORABLE_RESULT
+static nci_thunk_t
+build_func(PARROT_INTERP, ARGMOD(Parrot_NCI_attributes *nci_info))
{
- STRING *key = nci_info->signature;
- size_t key_length = Parrot_str_byte_length(interp, key);
- int jitted = 0;
+ ASSERT_ARGS(build_func)
+
+ STRING * const key = nci_info->signature;
+ const size_t key_length = Parrot_str_byte_length(interp, key);
pcc_params(interp, key, nci_info, key_length);
@@ -116,23 +149,23 @@
nci_info->arity = key_length - 1;
/* Build call function. */
- nci_info->func = (PMC *)(build_call_func(interp, pmc, key, &jitted));
- nci_info->jitted = jitted;
+ nci_info->fb_info = build_call_func(interp, key);
+ nci_info->func = F2DPTR(VTABLE_get_pointer(interp, nci_info->fb_info));
- return (nci_sub_t)nci_info->func;
+ return (nci_thunk_t)nci_info->func;
}
pmclass NCI auto_attrs {
ATTR STRING *signature; /* The signature. */
ATTR void *func; /* Function pointer to call. */
+ ATTR PMC *fb_info; /* Frame-builder info */
ATTR void *orig_func; /* Function pointer
* used to create func */
ATTR STRING *pcc_params_signature; /* The signature. */
ATTR STRING *long_signature; /* The full signature. */
ATTR PMC *multi_sig; /* type tuple array (?) */
ATTR INTVAL arity; /* Cached arity of the NCI. */
- ATTR INTVAL jitted; /* Is this a jitted NCI stub. */
/*
@@ -210,7 +243,7 @@
/* ensure that the STRING signature is constant */
if (!PObj_constant_TEST(key)) {
char * const key_c = Parrot_str_to_cstring(INTERP, key);
- size_t key_length = Parrot_str_byte_length(interp, key);
+ const size_t key_length = Parrot_str_byte_length(interp, key);
key = string_make(interp, key_c, key_length,
NULL, PObj_constant_FLAG);
Parrot_str_free_cstring(key_c);
@@ -232,6 +265,7 @@
if (PARROT_NCI(SELF)) {
Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
+ Parrot_gc_mark_PMC_alive(interp, nci_info->fb_info);
Parrot_gc_mark_STRING_alive(interp, nci_info->signature);
Parrot_gc_mark_STRING_alive(interp, nci_info->pcc_params_signature);
Parrot_gc_mark_STRING_alive(interp, nci_info->long_signature);
@@ -262,11 +296,11 @@
* ManagedStruct or Buffer?
*/
nci_info_ret->func = nci_info_self->func;
+ nci_info_ret->fb_info = nci_info_self->fb_info;
nci_info_ret->orig_func = nci_info_self->orig_func;
nci_info_ret->signature = nci_info_self->signature;
nci_info_ret->pcc_params_signature = nci_info_self->pcc_params_signature;
nci_info_ret->arity = nci_info_self->arity;
- nci_info_ret->jitted = nci_info_self->jitted;
PObj_get_FLAGS(ret) |= (PObj_get_FLAGS(SELF) & 0x7);
return ret;
@@ -300,19 +334,22 @@
VTABLE opcode_t *invoke(void *next) {
Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
- nci_sub_t func;
+ nci_thunk_t func;
+ PMC *fb_info;
char *sig_str;
void *orig_func;
PMC *cont;
GET_ATTR_orig_func(INTERP, SELF, orig_func);
func = PObj_flag_TEST(private2, SELF)
- ? (nci_sub_t) D2FPTR(orig_func)
- : (nci_sub_t) D2FPTR(nci_info->func);
+ ? (nci_thunk_t) D2FPTR(orig_func)
+ : (nci_thunk_t) D2FPTR(nci_info->func);
+
+ GET_ATTR_fb_info(INTERP, SELF, fb_info);
if (!func) {
/* build the thunk only when necessary */
- func = build_func(interp, SELF, nci_info);
+ func = build_func(interp, nci_info);
if (!func)
Parrot_ex_throw_from_c_args(INTERP, NULL,
@@ -320,23 +357,7 @@
"attempt to call NULL function");
}
- if (nci_info->jitted) {
- nci_jit_sub_t jit_func = (nci_jit_sub_t) D2FPTR(nci_info->func);
-
- /* Parrot_eprintf(interp, "JITTED %S\n", nci_info->signature); */
- sig_str = Parrot_str_to_cstring(interp, nci_info->pcc_params_signature);
- jit_func(INTERP, SELF, sig_str);
- Parrot_str_free_cstring(sig_str);
- }
- else {
- if (PObj_flag_TEST(private2, SELF)) {
- /* Parrot_eprintf(interp, "RAW NCI CALL\n"); */
- }
- else {
- /* Parrot_eprintf(interp, "HACKED %S\n", nci_info->signature); */
- }
- func(INTERP, SELF);
- }
+ func(INTERP, SELF, fb_info);
cont = INTERP->current_cont;
/*
@@ -368,7 +389,7 @@
VTABLE INTVAL get_integer() {
Parrot_NCI_attributes * const nci_info = PARROT_NCI(SELF);
if (!nci_info->func)
- build_func(INTERP, SELF, nci_info);
+ build_func(INTERP, nci_info);
return (INTVAL)nci_info->func;
}
@@ -402,7 +423,7 @@
if (nci_info) {
if (!nci_info->func)
- build_func(INTERP, SELF, nci_info);
+ build_func(INTERP, nci_info);
if (nci_info->func) {
arity = nci_info->arity;
RETURN(INTVAL arity);
Modified: branches/ops_pct/src/pmc/null.pmc
==============================================================================
--- branches/ops_pct/src/pmc/null.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/null.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2007, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -19,10 +19,24 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_DOES_NOT_RETURN
+static void null_pmc_access(PARROT_INTERP, int index)
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_null_pmc_access __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
PARROT_DOES_NOT_RETURN
static void
null_pmc_access(PARROT_INTERP, int index)
{
+ ASSERT_ARGS(null_pmc_access)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_NULL_REG_ACCESS,
"Null PMC access in %s()",
Parrot_get_vtable_name(interp, index));
@@ -41,21 +55,21 @@
*/
VTABLE void init() {
- UNUSED(interp)
+ UNUSED(INTERP)
}
VTABLE void *get_pointer() {
- UNUSED(interp)
+ UNUSED(INTERP)
return PMCNULL;
}
VTABLE void set_pointer(void *p) {
- UNUSED(interp)
+ UNUSED(INTERP)
PMCNULL = (PMC *)p;
}
VTABLE INTVAL does(STRING *what) {
- UNUSED(interp)
+ UNUSED(INTERP)
UNUSED(what)
/* XXX maybe a hack to get TGE running again */
return 0;
@@ -85,7 +99,7 @@
*/
VTABLE PMC *find_method(STRING *method_name) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_NULL_REG_ACCESS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_NULL_REG_ACCESS,
"Null PMC access in find_method('%Ss')",
method_name);
}
Modified: branches/ops_pct/src/pmc/object.pmc
==============================================================================
--- branches/ops_pct/src/pmc/object.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/object.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -21,11 +21,75 @@
#include "parrot/oo_private.h"
#include "pmc/pmc_class.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void cache_method(PARROT_INTERP,
+ ARGIN(PMC *_class),
+ ARGIN(STRING *name),
+ ARGIN(PMC *method))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC * find_cached(PARROT_INTERP,
+ ARGIN(PMC *_class),
+ ARGIN(STRING *name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL get_attrib_index(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(STRING *name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL get_attrib_index_keyed(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *key),
+ ARGIN(STRING *name))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4);
+
+#define ASSERT_ARGS_cache_method __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(_class) \
+ , PARROT_ASSERT_ARG(name) \
+ , PARROT_ASSERT_ARG(method))
+#define ASSERT_ARGS_find_cached __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(_class) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_get_attrib_index __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_get_attrib_index_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(name))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/* This finds the index of an attribute in an object's attribute store and
* returns it. Returns -1 if the attribute does not exist. */
+
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-get_attrib_index(PARROT_INTERP, PMC *self, STRING *name)
+get_attrib_index(PARROT_INTERP, ARGIN(PMC *self), ARGIN(STRING *name))
{
+ ASSERT_ARGS(get_attrib_index)
Parrot_Class_attributes * const _class = PARROT_CLASS(self);
const INTVAL cur_hll = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
int num_classes, i;
@@ -55,7 +119,7 @@
/* Build a string representing the fully qualified attribute name. */
STRING *fq_name = VTABLE_get_string(interp, cur_class);
- fq_name = Parrot_str_append(interp, fq_name, name);
+ fq_name = Parrot_str_concat(interp, fq_name, name);
/* Look up. */
if (VTABLE_exists_keyed_str(interp, _class->attrib_index, fq_name)) {
@@ -78,9 +142,11 @@
* parent's attribute in an object's attribute store and returns it. Returns -1
* if the attribute does not exist. */
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-get_attrib_index_keyed(PARROT_INTERP, PMC *self, PMC *key, STRING *name)
+get_attrib_index_keyed(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *key), ARGIN(STRING *name))
{
+ ASSERT_ARGS(get_attrib_index_keyed)
Parrot_Class_attributes * const _class = PARROT_CLASS(self);
PMC * const class_cache = VTABLE_get_pmc_keyed_str(interp,
_class->attrib_cache, VTABLE_get_string(interp, key));
@@ -94,7 +160,7 @@
/* Build a string representing the fully qualified attribute name. */
parent_class = Parrot_oo_get_class(interp, key);
fq_name = VTABLE_get_string(interp, parent_class);
- fq_name = Parrot_str_append(interp, fq_name, name);
+ fq_name = Parrot_str_concat(interp, fq_name, name);
/* Look up. */
if (VTABLE_exists_keyed_str(interp, _class->attrib_index, fq_name)) {
@@ -107,9 +173,12 @@
return -1;
}
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC *
-find_cached(PARROT_INTERP, PMC *_class, STRING *name)
+find_cached(PARROT_INTERP, ARGIN(PMC *_class), ARGIN(STRING *name))
{
+ ASSERT_ARGS(find_cached)
PMC *cache;
GETATTR_Class_meth_cache(interp, _class, cache);
@@ -120,8 +189,9 @@
}
static void
-cache_method(PARROT_INTERP, PMC *_class, STRING *name, PMC *method)
+cache_method(PARROT_INTERP, ARGIN(PMC *_class), ARGIN(STRING *name), ARGIN(PMC *method))
{
+ ASSERT_ARGS(cache_method)
PMC *cache;
GETATTR_Class_meth_cache(interp, _class, cache);
@@ -148,7 +218,7 @@
*/
VTABLE void init() {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Object must be created by a class.");
}
@@ -164,7 +234,7 @@
*/
VTABLE void init_pmc(PMC *worreva) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Object must be created by a class.");
}
@@ -191,20 +261,20 @@
*/
VTABLE STRING *name() {
- PMC * const _class = VTABLE_get_class(interp, SELF);
- STRING * const name = CONST_STRING(interp, "name");
+ PMC * const _class = VTABLE_get_class(INTERP, SELF);
+ STRING * const name = CONST_STRING(INTERP, "name");
/* If there's a vtable override for 'name' run that instead. */
- PMC * const method = Parrot_oo_find_vtable_override(interp, _class, name);
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP, _class, name);
if (!PMC_IS_NULL(method)) {
STRING *result = NULL;
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "Pi->S",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "Pi->S",
SELF, &result);
return result;
}
else
- return VTABLE_get_string(interp, _class);
+ return VTABLE_get_string(INTERP, _class);
}
/*
@@ -220,8 +290,8 @@
if (PARROT_OBJECT(SELF)) {
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
- Parrot_gc_mark_PMC_alive(interp, obj->_class);
- Parrot_gc_mark_PMC_alive(interp, obj->attrib_store);
+ Parrot_gc_mark_PMC_alive(INTERP, obj->_class);
+ Parrot_gc_mark_PMC_alive(INTERP, obj->attrib_store);
}
}
@@ -237,29 +307,29 @@
*/
VTABLE PMC *get_attr_str(STRING *name) {
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
- STRING * const get_attr = CONST_STRING(interp, "get_attr_str");
+ STRING * const get_attr = CONST_STRING(INTERP, "get_attr_str");
INTVAL index;
/* If there's a vtable override for 'get_attr_str' run that first. */
- PMC * const method = Parrot_oo_find_vtable_override(interp,
- VTABLE_get_class(interp, SELF), get_attr);
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
+ VTABLE_get_class(INTERP, SELF), get_attr);
if (!PMC_IS_NULL(method)) {
PMC *result = PMCNULL;
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "PiS->P",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "PiS->P",
SELF, name, &result);
return result;
}
/* Look up the index. */
- index = get_attrib_index(interp, obj->_class, name);
+ index = get_attrib_index(INTERP, obj->_class, name);
/* If lookup failed, exception. */
if (index == -1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S'", name);
- return VTABLE_get_pmc_keyed_int(interp, obj->attrib_store, index);
+ return VTABLE_get_pmc_keyed_int(INTERP, obj->attrib_store, index);
}
/*
@@ -276,15 +346,15 @@
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
/* Look up the index. */
- const INTVAL index = get_attrib_index_keyed(interp, obj->_class, key, name);
+ const INTVAL index = get_attrib_index_keyed(INTERP, obj->_class, key, name);
/* If lookup failed, exception. */
if (index == -1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S' in class '%S'", name,
- VTABLE_get_string(interp, key));
+ VTABLE_get_string(INTERP, key));
- return VTABLE_get_pmc_keyed_int(interp, obj->attrib_store, index);
+ return VTABLE_get_pmc_keyed_int(INTERP, obj->attrib_store, index);
}
/*
@@ -299,26 +369,26 @@
*/
VTABLE void set_attr_str(STRING *name, PMC *value) {
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
- STRING * const vtable_meth_name = CONST_STRING(interp, "set_attr_str");
+ STRING * const vtable_meth_name = CONST_STRING(INTERP, "set_attr_str");
INTVAL index;
/* If there's a vtable override for 'set_attr_str' run that first. */
- PMC * const method = Parrot_oo_find_vtable_override(interp,
- VTABLE_get_class(interp, SELF), vtable_meth_name);
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
+ VTABLE_get_class(INTERP, SELF), vtable_meth_name);
if (!PMC_IS_NULL(method)) {
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "PiSP->",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "PiSP->",
SELF, name, value);
return;
}
- index = get_attrib_index(interp, obj->_class, name);
+ index = get_attrib_index(INTERP, obj->_class, name);
/* If lookup failed, exception. */
if (index == -1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S'", name);
- VTABLE_set_pmc_keyed_int(interp, obj->attrib_store, index, value);
+ VTABLE_set_pmc_keyed_int(INTERP, obj->attrib_store, index, value);
}
/*
@@ -333,15 +403,15 @@
*/
VTABLE void set_attr_keyed(PMC *key, STRING *name, PMC *value) {
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
- const INTVAL index = get_attrib_index_keyed(interp, obj->_class, key, name);
+ const INTVAL index = get_attrib_index_keyed(INTERP, obj->_class, key, name);
/* If lookup failed, exception. */
if (index == -1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such attribute '%S' in class '%S'", name,
- VTABLE_get_string(interp, key));
+ VTABLE_get_string(INTERP, key));
- VTABLE_set_pmc_keyed_int(interp, obj->attrib_store, index, value);
+ VTABLE_set_pmc_keyed_int(INTERP, obj->attrib_store, index, value);
}
/*
@@ -356,13 +426,13 @@
VTABLE PMC *find_method(STRING *name) {
Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
- PMC *method = find_cached(interp, obj->_class, name);
+ PMC *method = find_cached(INTERP, obj->_class, name);
if (!PMC_IS_NULL(method))
return method;
else {
- STRING * const find_method = CONST_STRING(interp, "find_method");
- const int num_classes = VTABLE_elements(interp,
+ STRING * const find_method = CONST_STRING(INTERP, "find_method");
+ const int num_classes = VTABLE_elements(INTERP,
_class->all_parents);
const int all_in_universe =
@@ -372,7 +442,7 @@
for (i = 0; i < num_classes; i++) {
/* Get the class. */
PMC * const cur_class =
- VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+ VTABLE_get_pmc_keyed_int(INTERP, _class->all_parents, i);
const Parrot_Class_attributes * const class_info =
PARROT_CLASS(cur_class);
@@ -380,12 +450,12 @@
/* If there's a vtable override for 'find_method' in the
* current class, run that first. */
- method = Parrot_oo_find_vtable_override_for_class(interp,
+ method = Parrot_oo_find_vtable_override_for_class(INTERP,
cur_class, find_method);
if (!PMC_IS_NULL(method)) {
PMC *result = PMCNULL;
- Parrot_pcc_invoke_sub_from_c_args(interp, method,
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method,
"PiS->P", SELF, name, &result);
/* break out to the CACHE IF FOUND code */
@@ -395,8 +465,8 @@
/* If it's from this universe or the class doesn't inherit from
* anything outside of it... */
- if (all_in_universe || VTABLE_isa(interp, cur_class, CONST_STRING(interp, "Class"))) {
- method = VTABLE_get_pmc_keyed_str(interp,
+ if (all_in_universe || VTABLE_isa(INTERP, cur_class, CONST_STRING(INTERP, "Class"))) {
+ method = VTABLE_get_pmc_keyed_str(INTERP,
class_info->methods, name);
/* Found it! */
@@ -410,7 +480,7 @@
}
if (!PMC_IS_NULL(method))
- cache_method(interp, obj->_class, name, method);
+ cache_method(INTERP, obj->_class, name, method);
return method;
}
@@ -426,38 +496,38 @@
*/
VTABLE INTVAL get_integer() {
- Parrot_Object_attributes * const obj = PARROT_OBJECT(pmc);
+ Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
- STRING * const meth_name = CONST_STRING(interp, "get_integer");
+ STRING * const meth_name = CONST_STRING(INTERP, "get_integer");
- /* Walk and search for the vtable method. */
- const int num_classes = VTABLE_elements(interp, _class->all_parents);
+ /* Walk and search for the vtable. */
+ const int num_classes = VTABLE_elements(INTERP, _class->all_parents);
int i;
for (i = 0; i < num_classes; i++) {
/* Get the class. */
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP, _class->all_parents, i);
- PMC * const meth = Parrot_oo_find_vtable_override_for_class(interp,
+ PMC * const meth = Parrot_oo_find_vtable_override_for_class(INTERP,
cur_class, meth_name);
if (!PMC_IS_NULL(meth)) {
INTVAL result;
- Parrot_pcc_invoke_sub_from_c_args(interp, meth, "Pi->I", pmc, &result);
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, meth, "Pi->I", SELF, &result);
return result;
}
/* method name is get_integer */
if (cur_class->vtable->base_type == enum_class_PMCProxy) {
- /* Get the PMC instance and call the vtable method on that. */
- STRING * const proxy = CONST_STRING(interp, "proxy");
- PMC * const del_object = VTABLE_get_attr_str(interp, pmc, proxy);
+ /* Get the PMC instance and call the vtable function on that. */
+ STRING * const proxy = CONST_STRING(INTERP, "proxy");
+ PMC * const del_object = VTABLE_get_attr_str(INTERP, SELF, proxy);
if (!PMC_IS_NULL(del_object)) {
- return (INTVAL)VTABLE_get_integer(interp, del_object);
+ return (INTVAL)VTABLE_get_integer(INTERP, del_object);
}
}
}
- return interp->vtables[enum_class_default]->get_integer(interp, pmc);
+ return INTERP->vtables[enum_class_default]->get_integer(INTERP, SELF);
}
/*
@@ -471,14 +541,14 @@
*/
VTABLE PMC *get_class() {
PMC * const classobj = PARROT_OBJECT(SELF)->_class;
- STRING * const get_class = CONST_STRING(interp, "get_class");
+ STRING * const get_class = CONST_STRING(INTERP, "get_class");
/* If there's a vtable override for 'get_class' run that instead. */
- PMC * const method = Parrot_oo_find_vtable_override(interp,
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
classobj, get_class);
if (!PMC_IS_NULL(method)) {
PMC *result;
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "Pi->P",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "Pi->P",
SELF, &result);
return result;
}
@@ -497,20 +567,20 @@
*/
VTABLE PMC *get_namespace() {
- PMC * const classobj = VTABLE_get_class(interp, SELF);
- STRING * const get_namespace = CONST_STRING(interp, "get_namespace");
+ PMC * const classobj = VTABLE_get_class(INTERP, SELF);
+ STRING * const get_namespace = CONST_STRING(INTERP, "get_namespace");
/* If there's a vtable override for 'get_namespace' run that instead. */
- PMC * const method = Parrot_oo_find_vtable_override(interp,
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
classobj, get_namespace);
if (!PMC_IS_NULL(method)) {
PMC *result;
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "Pi->P",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "Pi->P",
SELF, &result);
return result;
}
else
- return VTABLE_inspect_str(interp, classobj, CONST_STRING(interp, "namespace"));
+ return VTABLE_inspect_str(INTERP, classobj, CONST_STRING(INTERP, "namespace"));
}
@@ -526,7 +596,7 @@
*/
VTABLE INTVAL can(STRING *method_name) {
/* Just use find_method and see it if finds anything. */
- const PMC * const method = VTABLE_find_method(interp, SELF, method_name);
+ const PMC * const method = VTABLE_find_method(INTERP, SELF, method_name);
return !PMC_IS_NULL(method);
}
@@ -548,7 +618,7 @@
return 1;
/* Dispatch isa to the object's class */
- return VTABLE_isa_pmc(interp, VTABLE_get_class(interp, SELF), lookup);
+ return VTABLE_isa_pmc(INTERP, VTABLE_get_class(INTERP, SELF), lookup);
}
/*
@@ -567,8 +637,8 @@
if (SUPER(classname))
return 1;
- _class = VTABLE_get_class(interp, SELF);
- return VTABLE_isa(interp, _class, classname);
+ _class = VTABLE_get_class(INTERP, SELF);
+ return VTABLE_isa(INTERP, _class, classname);
}
/*
@@ -586,15 +656,15 @@
if (!role_name)
return 0;
else {
- PMC * const classobj = VTABLE_get_class(interp, SELF);
- STRING * const meth_name = CONST_STRING(interp, "does");
+ PMC * const classobj = VTABLE_get_class(INTERP, SELF);
+ STRING * const meth_name = CONST_STRING(INTERP, "does");
- PMC * const method = Parrot_oo_find_vtable_override(interp,
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
classobj, meth_name);
if (!PMC_IS_NULL(method)) {
INTVAL result;
- Parrot_pcc_invoke_sub_from_c_args(interp, method,
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method,
"PiS->I", SELF, role_name, &result);
if (result)
return 1;
@@ -605,7 +675,7 @@
return 1;
/* Dispatch to the object's class */
- return VTABLE_does(interp, VTABLE_get_class(interp, SELF), role_name);
+ return VTABLE_does(INTERP, VTABLE_get_class(INTERP, SELF), role_name);
}
/*
@@ -626,7 +696,7 @@
return 1;
/* Dispatch to the object's class */
- return VTABLE_does_pmc(interp, VTABLE_get_class(interp, SELF), role);
+ return VTABLE_does_pmc(INTERP, VTABLE_get_class(INTERP, SELF), role);
}
/*
@@ -640,45 +710,44 @@
*/
opcode_t * invoke(void *next) {
- Parrot_Object_attributes * const obj = PARROT_OBJECT(pmc);
+ Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
- /* Walk and search for the vtable method. */
- const int num_classes = VTABLE_elements(interp, _class->all_parents);
+ /* Walk and search for the vtable. */
+ const int num_classes = VTABLE_elements(INTERP, _class->all_parents);
int i;
for (i = 0; i < num_classes; i++) {
/* Get the class. */
- STRING * const meth_name = CONST_STRING(interp, "invoke");
- STRING * const proxy = CONST_STRING(interp, "proxy");
+ STRING * const meth_name = CONST_STRING(INTERP, "invoke");
+ STRING * const proxy = CONST_STRING(INTERP, "proxy");
PMC * const cur_class =
- VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+ VTABLE_get_pmc_keyed_int(INTERP, _class->all_parents, i);
PMC * const meth =
- Parrot_oo_find_vtable_override_for_class(interp, cur_class,
+ Parrot_oo_find_vtable_override_for_class(INTERP, cur_class,
meth_name);
if (!PMC_IS_NULL(meth)) {
/* Experimental code. See DEPRECATED.pod */
- PMC *call_sig = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
- if (PMC_IS_NULL(interp->current_object) &&
- (VTABLE_elements(interp, call_sig) == 0 ||
- VTABLE_get_pmc_keyed_int(interp, call_sig, 0) != SELF))
- VTABLE_unshift_pmc(interp, call_sig, SELF);
+ PMC *call_sig = Parrot_pcc_get_signature(INTERP, CURRENT_CONTEXT(INTERP));
+ if ((VTABLE_elements(INTERP, call_sig) == 0 ||
+ VTABLE_get_pmc_keyed_int(INTERP, call_sig, 0) != SELF))
+ VTABLE_unshift_pmc(INTERP, call_sig, SELF);
- return VTABLE_invoke(interp, meth, next);
+ return VTABLE_invoke(INTERP, meth, next);
}
if (cur_class->vtable->base_type == enum_class_PMCProxy) {
- /* Get the PMC instance and call the vtable method on that. */
+ /* Get the PMC instance and call the vtable function on that. */
PMC * const del_object =
- VTABLE_get_attr_keyed(interp, pmc, cur_class, proxy);
+ VTABLE_get_attr_keyed(INTERP, SELF, cur_class, proxy);
if (!PMC_IS_NULL(del_object))
- return VTABLE_invoke(interp, del_object, next);
+ return VTABLE_invoke(INTERP, del_object, next);
}
}
- return (opcode_t *)interp->vtables[enum_class_default]->invoke(interp, pmc, next);
+ return (opcode_t *)INTERP->vtables[enum_class_default]->invoke(INTERP, SELF, next);
}
/*
@@ -692,8 +761,8 @@
*/
VTABLE INTVAL type() {
- PMC * const _class = VTABLE_get_class(interp, SELF);
- return VTABLE_type(interp, _class);
+ PMC * const _class = VTABLE_get_class(INTERP, SELF);
+ return VTABLE_type(INTERP, _class);
}
/*
@@ -707,20 +776,22 @@
*/
VTABLE PMC * clone() {
- Parrot_Object_attributes * const obj = PARROT_OBJECT(pmc);
+ Parrot_Object_attributes * const obj = PARROT_OBJECT(SELF);
/* If we have a custom override, invoke it.
* If not, use the oo function. */
- STRING * const meth_name = CONST_STRING(interp, "clone");
+ STRING * const meth_name = CONST_STRING(INTERP, "clone");
PMC * const meth =
- Parrot_oo_find_vtable_override(interp, obj->_class, meth_name);
+ Parrot_oo_find_vtable_override(INTERP, obj->_class, meth_name);
+ PMC *result;
+
if (!PMC_IS_NULL(meth)) {
- PMC *result;
- Parrot_pcc_invoke_sub_from_c_args(interp, meth, "Pi->P",
- pmc, &result);
- return result;
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, meth, "Pi->P", SELF, &result);
}
- else
- return Parrot_oo_clone_object(interp, SELF, obj->_class, NULL);
+ else {
+ result = Parrot_oo_clone_object(INTERP, SELF, NULL);
+ }
+
+ return result;
}
/*
@@ -802,8 +873,8 @@
type_num = SELF->vtable->base_type;
/* make sure metadata doesn't go away unexpectedly */
- if (PMC_metadata(pmc))
- PMC_metadata(pmc) = pt_shared_fixup(interp, PMC_metadata(pmc));
+ if (PMC_metadata(SELF))
+ PMC_metadata(SELF) = pt_shared_fixup(INTERP, PMC_metadata(SELF));
PARROT_ASSERT(master->vtables[type_num]->pmc_class);
/* don't want the referenced class disappearing on us */
@@ -812,13 +883,11 @@
UNLOCK_INTERPRETER(master);
ret = SELF;
- _true = Parrot_pmc_new(INTERP, enum_class_Integer);
-
/* Setting the '_ro' property switches to the read-only vtable */
- VTABLE_set_integer_native(INTERP, _true, 1);
- VTABLE_setprop(INTERP, ret, CONST_STRING(interp, "_ro"), _true);
+ _true = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, 1);
+ VTABLE_setprop(INTERP, ret, CONST_STRING(INTERP, "_ro"), _true);
+
SELF->vtable->pmc_class = master->vtables[type_num]->pmc_class;
- Parrot_gc_add_pmc_sync(INTERP, ret);
PObj_is_PMC_shared_SET(ret);
data = PARROT_CLASS(classobj)->parents;
@@ -850,14 +919,14 @@
*/
VTABLE void morph(PMC* type) {
- PMC * const classobj = VTABLE_get_class(interp, SELF);
- STRING * const meth_name = CONST_STRING(interp, "morph");
+ PMC * const classobj = VTABLE_get_class(INTERP, SELF);
+ STRING * const meth_name = CONST_STRING(INTERP, "morph");
/* If there's a vtable override for 'morph' run that instead. */
- PMC * const method = Parrot_oo_find_vtable_override(interp,
+ PMC * const method = Parrot_oo_find_vtable_override(INTERP,
classobj, meth_name);
if (!PMC_IS_NULL(method))
- Parrot_pcc_invoke_sub_from_c_args(interp, method, "PiP->",
+ Parrot_pcc_invoke_sub_from_c_args(INTERP, method, "PiP->",
SELF, type);
else
SUPER(type);
Modified: branches/ops_pct/src/pmc/opcode.pmc
==============================================================================
--- branches/ops_pct/src/pmc/opcode.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/opcode.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -16,13 +16,17 @@
#include "parrot/parrot.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Opcode auto_attrs {
ATTR op_info_t *info;
ATTR INTVAL op_number;
ATTR STRING *full_name_cache;
VTABLE void init() {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Opcode must be created from OpLib.");
}
@@ -35,13 +39,13 @@
VTABLE void set_pointer(void *i) {
Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
if (attrs->info)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Opcode has already been initialized");
attrs->info = (op_info_t *)i;
}
VTABLE void set_string_native(STRING *name) {
- char * cstr = Parrot_str_to_cstring(INTERP, name);
+ char * const cstr = Parrot_str_to_cstring(INTERP, name);
const INTVAL num = INTERP->op_lib->op_code(INTERP, cstr, 1);
Parrot_str_free_cstring(cstr);
if (num == -1)
@@ -61,7 +65,7 @@
const INTVAL opcount = INTERP->op_lib->op_count;
Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
if (attrs->info)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Opcode has already been initialized");
if (value >= opcount || value < 0)
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
@@ -110,14 +114,16 @@
METHOD dirs() {
const op_info_t * const info = PARROT_OPCODE(SELF)->info;
- PMC *result = Parrot_pmc_new(INTERP, enum_class_FixedIntegerArray);
+ PMC *result;
INTVAL arg_count = info->op_count - 1;
if (arg_count > 0) {
INTVAL i;
- VTABLE_set_integer_native(INTERP, result, arg_count);
+ result = Parrot_pmc_new_init_int(INTERP, enum_class_FixedIntegerArray, arg_count);
for (i = 0; i < arg_count; ++i)
VTABLE_set_integer_keyed_int(INTERP, result, i, (INTVAL) info->dirs[i]);
}
+ else
+ result = Parrot_pmc_new(INTERP, enum_class_FixedIntegerArray);
RETURN(PMC *result);
}
Modified: branches/ops_pct/src/pmc/oplib.pmc
==============================================================================
--- branches/ops_pct/src/pmc/oplib.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/oplib.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -16,13 +16,17 @@
#include "parrot/parrot.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
/* TODO: Since Opcode PMCs are essentially read-only after initialization
here, we should cache them. A FixedPMCArray would be okay, an
INTVAL->PMC HASH might be better, since it's unlikely that we will
need to cache even a majority of the ~1300 ops. */
static PMC *OPLIB_PMC_INSTANCE;
static PMC *OPLIB_OPCODE_CACHE;
-pmclass OpLib {
+pmclass OpLib singleton {
void class_init() {
OPLIB_PMC_INSTANCE = NULL;
OPLIB_OPCODE_CACHE = NULL;
@@ -37,8 +41,10 @@
}
VTABLE void init() {
- if (OPLIB_OPCODE_CACHE == NULL)
+ if (OPLIB_OPCODE_CACHE == NULL) {
OPLIB_OPCODE_CACHE = Parrot_pmc_new(INTERP, enum_class_Hash);
+ Parrot_pmc_gc_register(INTERP, OPLIB_OPCODE_CACHE);
+ }
PObj_custom_mark_SET(SELF);
}
@@ -50,7 +56,7 @@
/* Look up an opnumber given the name of the op. First we look for the
specific name, then the more general short name. */
VTABLE INTVAL get_integer_keyed_str(STRING *name) {
- char * cstr = Parrot_str_to_cstring(INTERP, name);
+ char * const cstr = Parrot_str_to_cstring(INTERP, name);
INTVAL num = INTERP->op_lib->op_code(INTERP, cstr, 1);
if (num == -1)
num = INTERP->op_lib->op_code(INTERP, cstr, 0);
@@ -83,11 +89,11 @@
}
VTABLE PMC* get_pmc_keyed_int(INTVAL value) {
- if ((UINTVAL)value > interp->op_lib->op_count)
+ if ((UINTVAL)value > INTERP->op_lib->op_count)
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"OpLib: Opcode index %d out of bounds", value);
else {
- const char * const name = interp->op_info_table[value].full_name;
+ const char * const name = INTERP->op_info_table[value].full_name;
STRING * const newstr = Parrot_str_new(INTERP, name, 0);
return VTABLE_get_pmc_keyed_str(INTERP, SELF, newstr);
}
@@ -99,7 +105,7 @@
METHOD op_family(STRING *shortname)
{
- char *sname = Parrot_str_to_cstring(INTERP, shortname);
+ char * const sname = Parrot_str_to_cstring(INTERP, shortname);
const op_lib_t * const op_lib = INTERP->op_lib;
const op_info_t * const table = op_lib->op_info_table;
PMC *result = PMCNULL;
Modified: branches/ops_pct/src/pmc/orderedhash.pmc
==============================================================================
--- branches/ops_pct/src/pmc/orderedhash.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/orderedhash.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -77,11 +77,72 @@
*/
+/* HEADERIZER HFILE: none */
+/* 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 PMC* box_integer(PARROT_INTERP, INTVAL val)
+ __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static PMC* box_number(PARROT_INTERP, FLOATVAL val)
+ __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static PMC* box_string(PARROT_INTERP, ARGIN(STRING *str))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void find_bounds(PARROT_INTERP,
+ ARGIN(PMC *pmc_hash),
+ ARGMOD(PMC **first),
+ ARGMOD(PMC **last))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*first)
+ FUNC_MODIFIES(*last);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC* get_list_item(PARROT_INTERP, ARGIN(PMC *self), INTVAL idx)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_box_integer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_box_number __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_box_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_find_bounds __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc_hash) \
+ , PARROT_ASSERT_ARG(first) \
+ , PARROT_ASSERT_ARG(last))
+#define ASSERT_ARGS_get_list_item __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/* Get list_item by index */
+/* XXX Can this actually return NULL or not? */
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static PMC*
-get_list_item(PARROT_INTERP, ARGIN(PMC *self), INTVAL idx) {
- Parrot_OrderedHash_attributes *attrs = PARROT_ORDEREDHASH(self);
- INTVAL n = VTABLE_elements(interp, attrs->hash);
+get_list_item(PARROT_INTERP, ARGIN(PMC *self), INTVAL idx)
+{
+ ASSERT_ARGS(get_list_item)
+
+ const Parrot_OrderedHash_attributes * const attrs = PARROT_ORDEREDHASH(self);
+ const INTVAL n = VTABLE_elements(interp, attrs->hash);
INTVAL pos;
PMC *list_entry = attrs->first;
@@ -100,11 +161,15 @@
/* Find first/last in cloned/thawed OrderedHash */
/* Parameter C<pmc_hash> is Hash, not OrderedHash */
static void
-find_bounds(PARROT_INTERP, PMC *pmc_hash, PMC **first, PMC **last) {
- PMC *iter = VTABLE_get_iter(interp, pmc_hash);
+find_bounds(PARROT_INTERP, ARGIN(PMC *pmc_hash), ARGMOD(PMC **first), ARGMOD(PMC **last))
+{
+ ASSERT_ARGS(find_bounds)
+
+ PMC * const iter = VTABLE_get_iter(interp, pmc_hash);
+
while (VTABLE_get_bool(interp, iter)) {
- PMC *item = VTABLE_shift_pmc(interp, iter);
- PMC *entry = VTABLE_get_pmc_keyed(interp, pmc_hash, item);
+ PMC * const item = VTABLE_shift_pmc(interp, iter);
+ PMC * const entry = VTABLE_get_pmc_keyed(interp, pmc_hash, item);
/* First entry doesn't have prev */
PMC *tmp = VTABLE_get_pmc_keyed_int(interp, entry, ORDERED_HASH_ITEM_PREV);
if (PMC_IS_NULL(tmp))
@@ -117,24 +182,39 @@
}
/* Helpers for boxing values */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
-box_string(PARROT_INTERP, STRING *str) {
+box_string(PARROT_INTERP, ARGIN(STRING *str))
+{
+ ASSERT_ARGS(box_string)
+
PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
enum_class_String));
VTABLE_set_string_native(interp, ret, str);
return ret;
}
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
-box_integer(PARROT_INTERP, INTVAL val) {
+box_integer(PARROT_INTERP, INTVAL val)
+{
+ ASSERT_ARGS(box_integer)
+
PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
enum_class_Integer));
VTABLE_set_integer_native(interp, ret, val);
return ret;
}
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
-box_number(PARROT_INTERP, FLOATVAL val) {
+box_number(PARROT_INTERP, FLOATVAL val)
+{
+ ASSERT_ARGS(box_number)
+
PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
enum_class_Float));
VTABLE_set_number_native(interp, ret, val);
@@ -238,16 +318,17 @@
*/
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
- Parrot_OrderedHash_attributes *attrs =
+ Parrot_OrderedHash_attributes * const attrs =
PARROT_ORDEREDHASH(SELF);
/* Check for old entry */
PMC *list_entry = VTABLE_get_pmc_keyed(INTERP, attrs->hash, key);
if (!PMC_IS_NULL(list_entry)) {
/* We have old entry. Just update value */
- PMC *nextkey = key_next(INTERP, key);
+ PMC * const nextkey = key_next(INTERP, key);
if (nextkey) {
- PMC *old_value = VTABLE_get_pmc_keyed_int(INTERP, list_entry,
+ /* XXX old_value is unused. Should we be storing this at all? */
+ PMC * const old_value = VTABLE_get_pmc_keyed_int(INTERP, list_entry,
ORDERED_HASH_ITEM_VALUE);
VTABLE_set_pmc_keyed(INTERP, value, nextkey, value);
}
@@ -257,8 +338,8 @@
}
/* Create new entry */
- list_entry = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
- VTABLE_set_integer_native(INTERP, list_entry, ORDERED_HASH_ITEM_MAX);
+ list_entry = Parrot_pmc_new_init_int(INTERP,
+ enum_class_FixedPMCArray, ORDERED_HASH_ITEM_MAX);
VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_VALUE, value);
VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_KEY, key);
@@ -325,7 +406,7 @@
/* Now we have chicken and egg problem during freeze/thaw */
/* When we try to thaw OrderedHash which stores HLL mapping */
/* Reported by François Perrad */
- PMC *pkey = Parrot_pmc_new(INTERP, enum_class_String);
+ PMC * const pkey = Parrot_pmc_new(INTERP, enum_class_String);
VTABLE_set_string_native(INTERP, pkey, key);
VTABLE_set_pmc_keyed(INTERP, SELF, pkey, value);
}
@@ -358,7 +439,7 @@
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL idx) {
- PMC *list_entry = get_list_item(INTERP, SELF, idx);
+ PMC * const list_entry = get_list_item(INTERP, SELF, idx);
if (PMC_IS_NULL(list_entry))
return PMCNULL;
@@ -367,11 +448,11 @@
}
VTABLE PMC *get_pmc_keyed(PMC *key) {
- PMC * item;
+ PMC *item;
+
/* Access by integer index */
- if ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_integer_FLAG) {
+ if ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_integer_FLAG)
return SELF.get_pmc_keyed_int(VTABLE_get_integer(INTERP, key));
- }
item = VTABLE_get_pmc_keyed(INTERP, PARROT_ORDEREDHASH(SELF)->hash, key);
if (PMC_IS_NULL(item))
@@ -380,9 +461,13 @@
}
VTABLE PMC *get_pmc_keyed_str(STRING *key) {
- PMC *pkey = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
- VTABLE_set_string_native(INTERP, pkey, key);
- return STATICSELF.get_pmc_keyed(pkey);
+ PMC *item = VTABLE_get_pmc_keyed_str(INTERP,
+ PARROT_ORDEREDHASH(SELF)->hash, key);
+
+ if (PMC_IS_NULL(item))
+ return PMCNULL;
+
+ return VTABLE_get_pmc_keyed_int(INTERP, item, ORDERED_HASH_ITEM_VALUE);
}
/*
@@ -471,10 +556,7 @@
*/
VTABLE void set_pmc_keyed_int(INTVAL idx, PMC *val) {
- const INTVAL n = STATICSELF.elements();
- STRING * const fmt = CONST_STRING(INTERP, "\1%d");
- PMC *list_entry;
- INTVAL pos;
+ const INTVAL n = STATICSELF.elements();
if (idx < -n)
idx = -idx - n - 1;
@@ -483,11 +565,12 @@
if (idx >= n) {
/* TODO warn or fill if there are holes */
+ STRING * const fmt = CONST_STRING(INTERP, "\1%d");
STRING * const key = Parrot_sprintf_s(INTERP, fmt, idx);
SELF.set_pmc_keyed_str(key, val);
}
else {
- list_entry = get_list_item(INTERP, SELF, idx);
+ PMC * const list_entry = get_list_item(INTERP, SELF, idx);
PARROT_ASSERT(!PMC_IS_NULL(list_entry));
VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_VALUE, val);
}
@@ -566,8 +649,8 @@
VTABLE INTVAL exists_keyed(PMC *key) {
if ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_integer_FLAG) {
/* Don't fetch item prematurely. It's costy */
- INTVAL intval = VTABLE_get_integer(INTERP, key);
- PMC * const next = VTABLE_shift_pmc(INTERP, key);
+ const INTVAL intval = VTABLE_get_integer(INTERP, key);
+ PMC * const next = VTABLE_shift_pmc(INTERP, key);
if (!next)
return STATICSELF.exists_keyed_int(intval);
@@ -642,8 +725,8 @@
PARROT_ORDEREDHASH(SELF);
PMC *list_entry, *prev, *next;
if ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_integer_FLAG) {
- INTVAL intval = VTABLE_get_integer(INTERP, key);
- PMC * const next = VTABLE_shift_pmc(INTERP, key);
+ const INTVAL intval = VTABLE_get_integer(INTERP, key);
+ PMC * const next = VTABLE_shift_pmc(INTERP, key);
if (next)
VTABLE_delete_keyed(INTERP, STATICSELF.get_pmc_keyed_int(intval), next);
@@ -682,13 +765,12 @@
}
VTABLE void delete_keyed_int(INTVAL idx) {
- PMC *list_entry;
- if (!STATICSELF.exists_keyed_int(idx))
- return;
-
- list_entry = get_list_item(INTERP, SELF, idx);
- STATICSELF.delete_keyed(
- VTABLE_get_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_KEY));
+ if (STATICSELF.exists_keyed_int(idx)) {
+ PMC * const list_entry = get_list_item(INTERP, SELF, idx);
+ STATICSELF.delete_keyed(
+ VTABLE_get_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_KEY));
+ }
+ return;
}
/*
@@ -766,10 +848,6 @@
F<docs/pdds/pdd08_keys.pod>.
-=head1 HISTORY
-
-Initial rev by leo 2003-08-21.
-
=cut
*/
Modified: branches/ops_pct/src/pmc/orderedhashiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/orderedhashiterator.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/orderedhashiterator.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -21,6 +21,10 @@
#include "pmc/pmc_orderedhash.h"
#include "pmc/pmc_hashiteratorkey.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass OrderedHashIterator extends Iterator no_ro auto_attrs {
ATTR PMC *pmc_hash; /* the Hash which this Iterator iterates */
ATTR PMC *next_entry; /* Next entry to shift/pop */
@@ -179,8 +183,8 @@
ORDERED_HASH_ITEM_KEY);
attrs->next_entry = VTABLE_get_pmc_keyed_int(INTERP, attrs->next_entry,
ORDERED_HASH_ITEM_NEXT);
- attrs->pos++;
- attrs->elements--;
+ ++attrs->pos;
+ --attrs->elements;
return ret;
}
@@ -210,8 +214,8 @@
ORDERED_HASH_ITEM_KEY);
attrs->next_entry = VTABLE_get_pmc_keyed_int(INTERP, attrs->next_entry,
ORDERED_HASH_ITEM_PREV);
- attrs->pos--;
- attrs->elements--;
+ --attrs->pos;
+ --attrs->elements;
return ret;
}
Deleted: branches/ops_pct/src/pmc/os.pmc
==============================================================================
--- branches/ops_pct/src/pmc/os.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,582 +0,0 @@
-/*
-Copyright (C) 2001-2010, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/os.pmc - Files and Directories PMC
-
-=head1 DESCRIPTION
-
-C<OS> is a singleton class which provides access to the filesystem
-files and directories.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#if defined(_MSC_VER)
-# include <direct.h>
-# include <io.h>
-# include <tchar.h>
-# include <windows.h>
-#elif defined(__BORLANDC__)
-# include <dir.h>
-# include <dirent.h>
-#else
-# include <dirent.h>
-#endif
-
-/* XXX Check if we need to deallocate strerror strings */
-/* XXX apparently, strerror_r is thread-safe and should be used instead.*/
-
-static PMC *OS_PMC;
-pmclass OS singleton {
-
-/*
-
-=item C<void *get_pointer()>
-
-=item C<void set_pointer(void *ptr)>
-
-These two functions are part of the singleton creation interface. For more
-information see F<src/pmc.c>.
-
-=cut
-
-*/
-
- void class_init() {
- OS_PMC = NULL;
- }
-
- VTABLE void *get_pointer() {
- return OS_PMC;
- }
-
- VTABLE void set_pointer(void *ptr) {
- OS_PMC = (PMC *)ptr;
- }
-
-
-/*
-
-=item C<STRING *cwd()>
-
-Returns the current working directory.
-
-=cut
-
-*/
-
- METHOD cwd() {
- char *cwd;
-#ifdef _MSC_VER
- cwd = _getcwd(NULL, 0);
- /* capitalize the drive letter */
- cwd[0] = (char)toupper((unsigned char)cwd[0]);
-#else
-# ifdef PATH_MAX
- cwd = getcwd(NULL, PATH_MAX+1);
-# else
- cwd = getcwd(NULL, 0);
-# endif
-#endif
- if (cwd) {
- STRING * const scwd = Parrot_str_new(INTERP, cwd, strlen(cwd));
- free(cwd);
- RETURN(STRING *scwd);
- }
- else {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
-
-/*
-
-=item C<void chdir(STRING *path)>
-
-Changes the current working directory to the one specified by C<path>.
-
-=cut
-
-*/
-
- METHOD chdir(STRING *path) {
- int error;
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
-#ifdef _MSC_VER
- error = _chdir(cpath);
-#else
- error = chdir(cpath);
-#endif
- Parrot_str_free_cstring(cpath);
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
-
-/*
-
-=item C<void rm(STRING *path)>
-
-Calls C<remove> to remove the file or empty directory specified by
-C<path>.
-
-=cut
-
-*/
-
- METHOD rm(STRING *path) {
- struct stat info;
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
- int error = stat(cpath, &info);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_str_free_cstring(cpath);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-
- if (S_ISDIR(info.st_mode)) {
-#ifdef _MSC_VER
- error = _rmdir(cpath);
-#else
- error = rmdir(cpath);
-#endif
- Parrot_str_free_cstring(cpath);
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
- else {
- error = remove(cpath);
- Parrot_str_free_cstring(cpath);
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
- }
-
-/*
-
-=item C<void mkdir(STRING *path, STRING *mode)>
-
-Creates a directory specified by C<path> with mode C<mode>.
-
-=cut
-
-*/
-
- METHOD mkdir(STRING *path, INTVAL mode) {
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
- /* should we validate mode? */
-#ifdef WIN32
- const int error = _mkdir(cpath);
-#else
- const int error = mkdir(cpath, (mode_t)mode);
-#endif
- Parrot_str_free_cstring(cpath);
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- }
-
-/*
-
-=item C<fixedpmcarray *stat(STRING *path)>
-
-Stats a file, and returns a 13 position array as in Perl:
-
- 0 dev device number of filesystem
- 1 ino inode number
- 2 mode file mode (type and permissions)
- 3 nlink number of (hard) links to the file
- 4 uid numeric user ID of file's owner
- 5 gid numeric group ID of file's owner
- 6 rdev the device identifier (special files only)
- 7 size total size of file, in bytes
- 8 atime last access time in seconds since the epoch
- 9 mtime last modify time in seconds since the epoch
- 10 ctime inode change time in seconds since the epoch (*)
- 11 blksize preferred block size for file system I/O
- 12 blocks actual number of blocks allocated
-
-11 and 12 are not available under Windows.
-
-=cut
-
-TT #849: Provide a mechanism for setting 'mtime' and 'atime':
-https://trac.parrot.org/parrot/ticket/849
-
-*/
-
- METHOD stat(STRING *path) {
- struct stat info;
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
- const int error = stat(cpath, &info);
-
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- else {
- PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
- VTABLE_set_integer_native(INTERP, array, 13);
-
- VTABLE_set_integer_keyed_int(INTERP, array, 0,
- (INTVAL)info.st_dev);
- VTABLE_set_integer_keyed_int(INTERP, array, 1,
- (INTVAL)info.st_ino);
- VTABLE_set_integer_keyed_int(INTERP, array, 2,
- (INTVAL)info.st_mode);
- VTABLE_set_integer_keyed_int(INTERP, array, 3,
- (INTVAL)info.st_nlink);
- VTABLE_set_integer_keyed_int(INTERP, array, 4,
- (INTVAL)info.st_uid);
- VTABLE_set_integer_keyed_int(INTERP, array, 5,
- (INTVAL)info.st_gid);
- VTABLE_set_integer_keyed_int(INTERP, array, 6,
- (INTVAL)info.st_rdev);
- VTABLE_set_integer_keyed_int(INTERP, array, 7,
- (INTVAL)info.st_size);
- VTABLE_set_integer_keyed_int(INTERP, array, 8,
- (INTVAL)info.st_atime);
- VTABLE_set_integer_keyed_int(INTERP, array, 9,
- (INTVAL)info.st_mtime);
- VTABLE_set_integer_keyed_int(INTERP, array, 10,
- (INTVAL)info.st_ctime);
-#ifndef WIN32
- VTABLE_set_integer_keyed_int(INTERP, array, 11,
- (INTVAL)info.st_blksize);
- VTABLE_set_integer_keyed_int(INTERP, array, 12,
- (INTVAL)info.st_blocks);
-#endif
- RETURN(PMC *array);
- }
- }
-
-/*
-
-=item C<fixedpmcarray *lstat(STRING *path)>
-
-Stats a file, and returns a 13 position array as in Perl:
-
- 0 dev device number of filesystem
- 1 ino inode number
- 2 mode file mode (type and permissions)
- 3 nlink number of (hard) links to the file
- 4 uid numeric user ID of file's owner
- 5 gid numeric group ID of file's owner
- 6 rdev the device identifier (special files only)
- 7 size total size of file, in bytes
- 8 atime last access time in seconds since the epoch
- 9 mtime last modify time in seconds since the epoch
- 10 ctime inode change time in seconds since the epoch (*)
- 11 blksize preferred block size for file system I/O
- 12 blocks actual number of blocks allocated
-
-11 and 12 are not available under Windows.
-
-=cut
-
-*/
-
- METHOD lstat(STRING *path) {
- struct stat info;
-
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
-#ifdef WIN32
- const int error = stat(cpath, &info);
-#else
- const int error = lstat(cpath, &info);
-#endif
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
- else {
- PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
- VTABLE_set_integer_native(INTERP, array, 13);
-
- VTABLE_set_integer_keyed_int(INTERP, array, 0,
- (INTVAL)info.st_dev);
- VTABLE_set_integer_keyed_int(INTERP, array, 1,
- (INTVAL)info.st_ino);
- VTABLE_set_integer_keyed_int(INTERP, array, 2,
- (INTVAL)info.st_mode);
- VTABLE_set_integer_keyed_int(INTERP, array, 3,
- (INTVAL)info.st_nlink);
- VTABLE_set_integer_keyed_int(INTERP, array, 4,
- (INTVAL)info.st_uid);
- VTABLE_set_integer_keyed_int(INTERP, array, 5,
- (INTVAL)info.st_gid);
- VTABLE_set_integer_keyed_int(INTERP, array, 6,
- (INTVAL)info.st_rdev);
- VTABLE_set_integer_keyed_int(INTERP, array, 7,
- (INTVAL)info.st_size);
- VTABLE_set_integer_keyed_int(INTERP, array, 8,
- (INTVAL)info.st_atime);
- VTABLE_set_integer_keyed_int(INTERP, array, 9,
- (INTVAL)info.st_mtime);
- VTABLE_set_integer_keyed_int(INTERP, array, 10,
- (INTVAL)info.st_ctime);
-#ifndef WIN32
- VTABLE_set_integer_keyed_int(INTERP, array, 11,
- (INTVAL)info.st_blksize);
- VTABLE_set_integer_keyed_int(INTERP, array, 12,
- (INTVAL)info.st_blocks);
-#endif
- RETURN(PMC *array);
- }
- }
-
-/*
-
-=item C<void symlink(STRING *from, STRING *to)>
-
-Creates a symlink, where available
-
-=cut
-
-*/
-
- METHOD symlink(STRING *from, STRING *to) {
-#ifndef WIN32
- char * const cfrom = Parrot_str_to_cstring(INTERP, from);
- char * const cto = Parrot_str_to_cstring(INTERP, to);
- const int error = symlink(cfrom, cto);
-
- Parrot_str_free_cstring(cfrom);
- Parrot_str_free_cstring(cto);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-#else
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
- "Win32 does not support symlinks!");
-#endif
- }
-
-/*
-
-=item C<void link(STRING *from, STRING *to)>
-
-Creates a hard link, where available(?)
-
-=cut
-
-*/
-
- METHOD link(STRING *from, STRING *to) {
-#ifndef WIN32
- char * const cfrom = Parrot_str_to_cstring(INTERP, from);
- char * const cto = Parrot_str_to_cstring(INTERP, to);
- const int error = link(cfrom, cto);
-
- Parrot_str_free_cstring(cfrom);
- Parrot_str_free_cstring(cto);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- "link() failed for OS PMC: %s\n", errmsg);
- }
-#else
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
- "Win32 is not POSIX. Need win32 developer!");
-#endif
- }
-
-/*
-
-=item C<INTVAL umask(INTVAL mask)>
-
-umask sets the process's file mode creation mask (and returns the
-previous one).
-
-=cut
-
-*/
-
- METHOD umask(INTVAL mask) {
-#ifndef _MSC_VER
- const INTVAL old = umask((mode_t)mask);
- RETURN(INTVAL old);
-#else
- Parrot_ex_throw_from_c_args(INTERP, NULL,
- EXCEPTION_UNIMPLEMENTED,
- "Win32 is not POSIX. Need Win32 developer!");
-#endif
- }
-
-/*
-
-=item C<INTVAL chroot(STRING *path)>
-
-it makes the named directory the new root directory for all further
-pathnames that begin with a "/" by your process and all its children.
-
-B<NOTE>: perl restricts this operation to superusers. It might be a good
-idea to do the same with parrot.
-
-=cut
-
-*/
-
- METHOD chroot(STRING *path) {
-#ifndef WIN32
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
- const int error = chroot(cpath);
-
- Parrot_str_free_cstring(cpath);
-
- if (error) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-#else
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
- "Win32 is not POSIX. Need Win32 developer!");
-#endif
- }
-
-
-/*
-
-=item C<PMC *readdir(STRING *path)>
-
-reads entries from a directory.
-
-=cut
-
-*/
- METHOD readdir(STRING *path) {
- PMC * array = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
-#ifndef _MSC_VER
- char * const cpath = Parrot_str_to_cstring(INTERP, path);
- DIR *dir = opendir(cpath);
- struct dirent *dirent;
- STRING *retval;
-
- Parrot_str_free_cstring(cpath);
-
- if (!dir) {
- const char * const errmsg = strerror(errno);
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- errmsg);
- }
-
- while ((dirent = readdir(dir)) != NULL) {
- retval = Parrot_str_new(INTERP, dirent->d_name, 0) ;
- VTABLE_push_string(INTERP, array, retval);
- }
-
- closedir(dir);
-#else
- WIN32_FIND_DATA file_find_data;
- char * cpath;
- HANDLE hFind = INVALID_HANDLE_VALUE;
-
- /* Add \* to the directory name and start search. */
- STRING *last_char = Parrot_str_substr(interp, path,
- Parrot_str_length(interp, path) - 1, 1, NULL, 0);
- int trailing_slash = Parrot_str_equal(interp, last_char, string_from_literal(interp, "\\"))
- ||
- Parrot_str_equal(interp, last_char, string_from_literal(interp, "/"));
- cpath = Parrot_str_to_cstring(interp, Parrot_str_concat(interp,
- path, string_from_literal(interp, trailing_slash ? "*" : "\\*"), 0));
- hFind = FindFirstFile(cpath, &file_find_data);
- Parrot_str_free_cstring(cpath);
- if (hFind == INVALID_HANDLE_VALUE)
- {
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- "Unable to readdir");
- }
-
- /* Loop over all directories and add to result array. */
- do
- {
- VTABLE_push_string(INTERP, array, Parrot_str_new(INTERP,
- file_find_data.cFileName, 0));
- }
- while (FindNextFile(hFind, &file_find_data) != 0);
- if (GetLastError() != ERROR_NO_MORE_FILES)
- {
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- "Error during readdir");
- }
- FindClose(hFind);
-#endif
- RETURN(PMC *array);
- }
-/*
-=item C<rename(STRING *oldpath, STRING *newpath)>
-
-This method is a wrapper for rename(2). On error a SystemError exception is
-thrown.
-
-=cut
-
-*/
- METHOD rename(STRING *oldpath, STRING *newpath) {
- char * const coldpath = Parrot_str_to_cstring(INTERP, oldpath);
- char * const cnewpath = Parrot_str_to_cstring(INTERP, newpath);
- const int ret = rename(coldpath, cnewpath);
-
- Parrot_str_free_cstring(coldpath);
- Parrot_str_free_cstring(cnewpath);
-
- if (ret < 0) {
- const char * const errmsg = strerror(errno) ;
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_EXTERNAL_ERROR,
- "%s", errmsg);
- }
- }
-
-}
-
-/*
-
-=back
-
-=head1 SEE ALS0
-
- chdir(2), getcwd(3), unlink(2), mkdir(2), stat(2), lstat(2),
- symlink(2), link(2), umask(2), chroot(2)
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_pct/src/pmc/packfile.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfile.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfile.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -21,12 +21,34 @@
#include "pmc/pmc_packfiledirectory.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void copy_packfile_header(PARROT_INTERP,
+ ARGMOD(PMC *self),
+ ARGIN(PackFile *pf))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*self);
+
+#define ASSERT_ARGS_copy_packfile_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(pf))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/*
Copy attributes from PackFile* to Packfile PMC.
*/
static void
-copy_packfile_header(PARROT_INTERP, PMC *self, PackFile *pf) {
- Parrot_Packfile_attributes *attrs = PARROT_PACKFILE(self);
+copy_packfile_header(PARROT_INTERP, ARGMOD(PMC *self), ARGIN(PackFile *pf))
+{
+ ASSERT_ARGS(copy_packfile_header)
+
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(self);
attrs->wordsize = pf->header->wordsize;
attrs->byteorder = pf->header->byteorder;
@@ -66,7 +88,7 @@
*/
VTABLE void init() {
- Parrot_Packfile_attributes *attrs =
+ Parrot_Packfile_attributes * const attrs =
PMC_data_typed(SELF, Parrot_Packfile_attributes*);
PackFile *pf;
@@ -74,9 +96,9 @@
attrs->directory = Parrot_pmc_new(INTERP, enum_class_PackfileDirectory);
/* Create dummy PackFile and copy default attributes to self */
- pf = PackFile_new(interp, 0);
- copy_packfile_header(interp, SELF, pf);
- PackFile_destroy(interp, pf);
+ pf = PackFile_new(INTERP, 0);
+ copy_packfile_header(INTERP, SELF, pf);
+ PackFile_destroy(INTERP, pf);
PObj_custom_mark_SET(SELF);
}
@@ -93,7 +115,7 @@
*/
VTABLE void mark() {
- Parrot_Packfile_attributes * attrs = PARROT_PACKFILE(SELF);
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
Parrot_gc_mark_STRING_alive(INTERP, attrs->uuid);
Parrot_gc_mark_PMC_alive(INTERP, attrs->directory);
@@ -110,17 +132,15 @@
*/
VTABLE STRING *get_string() {
- Parrot_Packfile_attributes * attrs = PARROT_PACKFILE(SELF);
- PackFile * pf =
- (PackFile*)VTABLE_get_pointer(interp, attrs->directory);
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
+ PackFile * const pf =
+ (PackFile*)VTABLE_get_pointer(INTERP, attrs->directory);
- opcode_t length;
- opcode_t *ptr;
STRING *str;
/* Calculate required memory */
- length = PackFile_pack_size(interp, pf) * sizeof (opcode_t);
- ptr = (opcode_t*)Parrot_gc_allocate_memory_chunk(INTERP, length);
+ const opcode_t length = PackFile_pack_size(INTERP, pf) * sizeof (opcode_t);
+ opcode_t * const ptr = (opcode_t*)Parrot_gc_allocate_memory_chunk(INTERP, length);
/* Copy related attributes to header */
pf->header->major = attrs->version_major;
@@ -129,13 +149,13 @@
pf->header->uuid_type = attrs->uuid_type;
/* And pack it! */
- PackFile_pack(interp, pf, ptr);
+ PackFile_pack(INTERP, pf, ptr);
- str = Parrot_str_new_init(interp, (const char*)ptr, length,
+ str = Parrot_str_new_init(INTERP, (const char*)ptr, length,
PARROT_FIXED_8_ENCODING, PARROT_BINARY_CHARSET, 0);
Parrot_gc_free_memory_chunk(INTERP, ptr);
- PackFile_destroy(interp, pf);
+ PackFile_destroy(INTERP, pf);
return str;
}
@@ -148,31 +168,34 @@
=cut
Implementation note: taken from the bottom end of Parrot_pbc_read().
+
*/
+
VTABLE void set_string_native(STRING *str) {
- PackFile *pf = PackFile_new(interp, 0);
- const opcode_t *ptr =
- (const opcode_t*)Parrot_string_cstring(interp, str);
- int length = Parrot_str_byte_length(interp, str);
- Parrot_Packfile_attributes * attrs = PARROT_PACKFILE(SELF);
-
- if (!PackFile_unpack(interp, pf, ptr, length)) {
- PackFile_destroy(interp, pf);
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
- "Can't unpack packfile.");
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
+ PackFile * const pf = PackFile_new(INTERP, 0);
+ const opcode_t * const ptr =
+ (const opcode_t *)Parrot_str_cstring(INTERP, str);
+
+ const int length = Parrot_str_byte_length(INTERP, str);
+
+ if (!PackFile_unpack(INTERP, pf, ptr, length)) {
+ PackFile_destroy(INTERP, pf);
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_MALFORMED_PACKFILE, "Can't unpack packfile.");
}
/* Disable GC during copy data into internal structures. */
- Parrot_block_GC_mark(interp);
+ Parrot_block_GC_mark(INTERP);
/* Copy values from PackFile header to own attributes */
- copy_packfile_header(interp, SELF, pf);
+ copy_packfile_header(INTERP, SELF, pf);
- VTABLE_set_pointer(interp, attrs->directory, &pf->directory);
+ VTABLE_set_pointer(INTERP, attrs->directory, &pf->directory);
- Parrot_unblock_GC_mark(interp);
+ Parrot_unblock_GC_mark(INTERP);
- PackFile_destroy(interp, pf);
+ PackFile_destroy(INTERP, pf);
}
@@ -210,29 +233,30 @@
*/
VTABLE INTVAL get_integer_keyed_str(STRING *key) {
- Parrot_Packfile_attributes *attrs = PARROT_PACKFILE(SELF);
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "wordsize")))
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
+
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "wordsize")))
return attrs->wordsize;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "byteorder")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "byteorder")))
return attrs->byteorder;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "fptype")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "fptype")))
return attrs->fptype;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_major")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_major")))
return attrs->version_major;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_minor")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_minor")))
return attrs->version_minor;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_patch")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_patch")))
return attrs->version_patch;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "bytecode_major")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "bytecode_major")))
return attrs->bytecode_major;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "bytecode_minor")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "bytecode_minor")))
return attrs->bytecode_minor;
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "uuid_type")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "uuid_type")))
return attrs->uuid_type;
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_KEY_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_KEY_NOT_FOUND,
"Packfile: No such integer key \"%s\"",
- Parrot_string_cstring(interp, key));
+ Parrot_str_cstring(INTERP, key));
}
/*
@@ -251,12 +275,12 @@
*/
VTABLE STRING *get_string_keyed_str(STRING *key) {
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "uuid")))
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "uuid")))
return PARROT_PACKFILE(SELF)->uuid;
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_KEY_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_KEY_NOT_FOUND,
"Packfile: No such string key \"%s\"",
- Parrot_string_cstring(interp, key));
+ Parrot_str_cstring(INTERP, key));
}
@@ -313,26 +337,26 @@
*/
VTABLE void set_integer_keyed_str(STRING *key, INTVAL value) {
- Parrot_Packfile_attributes *attrs = PARROT_PACKFILE(SELF);
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_major"))) {
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_major"))) {
attrs->version_major = value;
return;
}
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_minor"))) {
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_minor"))) {
attrs->version_minor = value;
return;
}
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_patch"))) {
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "version_patch"))) {
attrs->version_patch = value;
return;
}
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "uuid_type"))) {
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "uuid_type"))) {
attrs->uuid_type = value;
return;
}
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_KEY_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_KEY_NOT_FOUND,
"Packfile: No such integer key \"%s\"",
- Parrot_string_cstring(interp, key));
+ Parrot_str_cstring(INTERP, key));
}
@@ -369,14 +393,14 @@
*/
VTABLE void set_string_keyed_str(STRING *key, STRING *value) {
- if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "uuid"))) {
+ if (!Parrot_str_compare(INTERP, key, CONST_STRING(INTERP, "uuid"))) {
PARROT_PACKFILE(SELF)->uuid = value;
return;
}
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_KEY_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_KEY_NOT_FOUND,
"Packfile: No such string key \"%s\"",
- Parrot_string_cstring(interp, key));
+ Parrot_str_cstring(INTERP, key));
}
/*
@@ -406,7 +430,7 @@
*/
METHOD pack() {
- STRING * ret = SELF.get_string();
+ STRING * const ret = SELF.get_string();
RETURN(STRING * ret);
}
@@ -436,11 +460,9 @@
*/
METHOD get_directory() {
- PMC *dir = PARROT_PACKFILE(SELF)->directory;
+ PMC * const dir = PARROT_PACKFILE(SELF)->directory;
RETURN(PMC *dir);
}
-
-
}
/*
Modified: branches/ops_pct/src/pmc/packfileannotation.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileannotation.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfileannotation.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileAnnotation auto_attrs {
ATTR STRING *name;
ATTR INTVAL offset;
@@ -39,7 +43,7 @@
*/
VTABLE void init() {
- Parrot_PackfileAnnotation_attributes * attrs =
+ Parrot_PackfileAnnotation_attributes * const attrs =
PMC_data_typed(SELF, Parrot_PackfileAnnotation_attributes*);
PObj_custom_mark_SET(SELF);
@@ -57,11 +61,11 @@
*/
VTABLE void mark() {
- Parrot_PackfileAnnotation_attributes * attrs =
+ Parrot_PackfileAnnotation_attributes * const attrs =
PARROT_PACKFILEANNOTATION(SELF);
- Parrot_gc_mark_STRING_alive(interp, attrs->name);
- Parrot_gc_mark_STRING_alive(interp, attrs->str_value);
+ Parrot_gc_mark_STRING_alive(INTERP, attrs->name);
+ Parrot_gc_mark_STRING_alive(INTERP, attrs->str_value);
}
@@ -133,9 +137,9 @@
*/
VTABLE INTVAL get_integer() {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
if (attrs->value_type != PF_ANNOTATION_KEY_TYPE_INT)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Trying to fetch wrong type of value from annotation");
return attrs->int_value;
}
@@ -151,7 +155,7 @@
*/
VTABLE void set_integer_native(INTVAL value) {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
attrs->value_type = PF_ANNOTATION_KEY_TYPE_INT;
attrs->int_value = value;
}
@@ -166,9 +170,9 @@
*/
VTABLE STRING * get_string() {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
if (attrs->value_type != PF_ANNOTATION_KEY_TYPE_STR)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Trying to fetch wrong type of value from annotation");
return attrs->str_value;
}
@@ -184,7 +188,7 @@
*/
VTABLE void set_string_native(STRING * value) {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
attrs->value_type = PF_ANNOTATION_KEY_TYPE_STR;
attrs->str_value = value;
}
@@ -199,9 +203,9 @@
*/
VTABLE FLOATVAL get_number() {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
if (attrs->value_type != PF_ANNOTATION_KEY_TYPE_NUM)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Trying to fetch wrong type of value from annotation");
return attrs->num_value;
}
@@ -217,7 +221,7 @@
*/
VTABLE void set_number_native(FLOATVAL value) {
- Parrot_PackfileAnnotation_attributes * attrs = PARROT_PACKFILEANNOTATION(SELF);
+ Parrot_PackfileAnnotation_attributes * const attrs = PARROT_PACKFILEANNOTATION(SELF);
attrs->value_type = PF_ANNOTATION_KEY_TYPE_NUM;
attrs->num_value = value;
}
Modified: branches/ops_pct/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileannotations.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfileannotations.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -29,6 +29,10 @@
#include "pmc/pmc_packfileannotation.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileAnnotations auto_attrs extends PackfileSegment {
/* ConstantTable used for names lookup */
ATTR PMC *const_table;
@@ -49,7 +53,7 @@
Parrot_PackfileAnnotations_attributes * attrs =
PMC_data_typed(SELF, Parrot_PackfileAnnotations_attributes*);
- attrs->annotations = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ attrs->annotations = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
/*
Don't initialize C<const_table>. It will be set to NULL bu auto_attrs
handling. And should be set to proper PMC in set_directory.
@@ -72,8 +76,8 @@
Parrot_PackfileAnnotations_attributes * attrs =
PARROT_PACKFILEANNOTATIONS(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->const_table);
- Parrot_gc_mark_PMC_alive(interp, attrs->annotations);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->const_table);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->annotations);
SUPER();
}
@@ -89,7 +93,7 @@
*/
VTABLE INTVAL elements() {
- return VTABLE_elements(interp,
+ return VTABLE_elements(INTERP,
PARROT_PACKFILEANNOTATIONS(SELF)->annotations);
}
@@ -104,7 +108,7 @@
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL index) {
- return VTABLE_get_pmc_keyed_int(interp,
+ return VTABLE_get_pmc_keyed_int(INTERP,
PARROT_PACKFILEANNOTATIONS(SELF)->annotations, index);
}
@@ -141,22 +145,22 @@
INTVAL dummy;
/* TODO: add checks desribed above */
- VTABLE_set_pmc_keyed_int(interp, attrs->annotations, index, annotation);
+ VTABLE_set_pmc_keyed_int(INTERP, attrs->annotations, index, annotation);
/* Add required constants */
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"get_or_create_constant", "PS->I", attrs->const_table,
entity_attrs->name, &dummy);
switch (entity_attrs->value_type) {
case PF_ANNOTATION_KEY_TYPE_STR:
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"get_or_create_constant", "PS->I", attrs->const_table,
entity_attrs->str_value, &dummy);
break;
case PF_ANNOTATION_KEY_TYPE_NUM:
- Parrot_mmd_multi_dispatch_from_c_args(interp,
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP,
"get_or_create_constant", "PN->I", attrs->const_table,
entity_attrs->num_value, &dummy);
break;
@@ -186,12 +190,12 @@
STRING *name;
PMC *segment;
- PMC *iter = VTABLE_get_iter(interp, directory);
- while (VTABLE_get_bool(interp, iter)) {
- name = VTABLE_shift_string(interp, iter);
- segment = VTABLE_get_pmc_keyed_str(interp, directory, name);
- if (VTABLE_isa(interp, segment,
- Parrot_str_new_constant(interp, "PackfileConstantTable"))) {
+ PMC *iter = VTABLE_get_iter(INTERP, directory);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ name = VTABLE_shift_string(INTERP, iter);
+ segment = VTABLE_get_pmc_keyed_str(INTERP, directory, name);
+ if (VTABLE_isa(INTERP, segment,
+ Parrot_str_new_constant(INTERP, "PackfileConstantTable"))) {
attrs->const_table = segment;
break;
}
@@ -216,35 +220,39 @@
Parrot_PackfileAnnotation_attributes *annotation_attrs;
/* Copy annotations to own array */
- VTABLE_set_integer_native(interp, attrs->annotations, a->num_entries);
+ VTABLE_set_integer_native(INTERP, attrs->annotations, a->num_entries);
for (i = 0; i < a->num_entries; ++i) {
PackFile_Annotations_Entry *entry = a->entries[i];
PackFile_Annotations_Key *key = a->keys[entry->key];
- annotation = Parrot_pmc_new(interp, enum_class_PackfileAnnotation);
+ annotation = Parrot_pmc_new(INTERP, enum_class_PackfileAnnotation);
/* Poke directly to annotation attributes. */
annotation_attrs = PARROT_PACKFILEANNOTATION(annotation);
annotation_attrs->offset = entry->bytecode_offset;
- annotation_attrs->name = VTABLE_get_string_keyed_int(interp,
+ if (! attrs->const_table)
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_MALFORMED_PACKFILE, "No constant table");
+
+ annotation_attrs->name = VTABLE_get_string_keyed_int(INTERP,
attrs->const_table, key->name);
switch (key->type) {
case PF_ANNOTATION_KEY_TYPE_INT:
- VTABLE_set_integer_native(interp, annotation, entry->value);
+ VTABLE_set_integer_native(INTERP, annotation, entry->value);
break;
case PF_ANNOTATION_KEY_TYPE_STR:
- VTABLE_set_string_native(interp, annotation,
- VTABLE_get_string_keyed_int(interp, attrs->const_table, entry->value));
+ VTABLE_set_string_native(INTERP, annotation,
+ VTABLE_get_string_keyed_int(INTERP, attrs->const_table, entry->value));
break;
case PF_ANNOTATION_KEY_TYPE_NUM:
- VTABLE_set_number_native(interp, annotation,
- VTABLE_get_number_keyed_int(interp, attrs->const_table, entry->value));
+ VTABLE_set_number_native(INTERP, annotation,
+ VTABLE_get_number_keyed_int(INTERP, attrs->const_table, entry->value));
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_MALFORMED_PACKFILE,
"Unknown value type %d in Packfile Annotation", key->type);
}
- VTABLE_set_pmc_keyed_int(interp, attrs->annotations, i, annotation);
+ VTABLE_set_pmc_keyed_int(INTERP, attrs->annotations, i, annotation);
}
}
@@ -263,7 +271,6 @@
PackFile_Annotations *res = mem_gc_allocate_zeroed_typed(INTERP,
PackFile_Annotations);
INTVAL i, num;
- INTVAL key_type;
PMC *keys; /* Temporary representation of Keys */
PMC *names; /* Constants for Key's names */
PMC *types; /* Types of Keys */
@@ -290,49 +297,49 @@
...
]
*/
- keys = Parrot_pmc_new(interp, enum_class_Hash);
- names = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
- types = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+ keys = Parrot_pmc_new(INTERP, enum_class_Hash);
+ names = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
+ types = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
last_key_id = -1;
/* Iterate over stored annotations and create Key if required. */
- num = VTABLE_elements(interp, attrs->annotations);
+ num = VTABLE_elements(INTERP, attrs->annotations);
res->num_entries = num;
res->entries = mem_gc_allocate_n_typed(INTERP, num, PackFile_Annotations_Entry*);
for (i = 0; i < num; ++i) {
- PMC *entity = VTABLE_get_pmc_keyed_int(interp, attrs->annotations, i);
- Parrot_PackfileAnnotation_attributes *entity_attrs = PARROT_PACKFILEANNOTATION(entity);
+ PMC * const entity = VTABLE_get_pmc_keyed_int(INTERP, attrs->annotations, i);
+ const Parrot_PackfileAnnotation_attributes * const entity_attrs =
+ PARROT_PACKFILEANNOTATION(entity);
/* Handle creating of Key */
- PMC * key_array = VTABLE_get_pmc_keyed_str(interp, keys, entity_attrs->name);
+ PMC * key_array = VTABLE_get_pmc_keyed_str(INTERP, keys, entity_attrs->name);
if (PMC_IS_NULL(key_array)) {
/* Never see this name before. Create new FIA and add to keys. */
- key_array = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
- VTABLE_set_integer_native(interp, key_array, 3);
- VTABLE_set_integer_keyed_int(interp, key_array, 0, -1);
- VTABLE_set_integer_keyed_int(interp, key_array, 1, -1);
- VTABLE_set_integer_keyed_int(interp, key_array, 2, -1);
+ key_array = Parrot_pmc_new_init_int(INTERP, enum_class_FixedIntegerArray, 3);
+ VTABLE_set_integer_keyed_int(INTERP, key_array, 0, -1);
+ VTABLE_set_integer_keyed_int(INTERP, key_array, 1, -1);
+ VTABLE_set_integer_keyed_int(INTERP, key_array, 2, -1);
- VTABLE_set_pmc_keyed_str(interp, keys, entity_attrs->name, key_array);
+ VTABLE_set_pmc_keyed_str(INTERP, keys, entity_attrs->name, key_array);
}
/* PackfileAnnotation.value_type exactly the same as key.type */
- key_id = VTABLE_get_integer_keyed_int(interp, key_array, entity_attrs->value_type);
+ key_id = VTABLE_get_integer_keyed_int(INTERP, key_array, entity_attrs->value_type);
/* If key_id is -1 it means we have to create new key. */
if (key_id == -1) {
key_id = ++last_key_id;
- VTABLE_set_integer_keyed_int(interp, key_array, entity_attrs->value_type, key_id);
+ VTABLE_set_integer_keyed_int(INTERP, key_array, entity_attrs->value_type, key_id);
/* Store type */
- VTABLE_set_integer_keyed_int(interp, types, key_id, entity_attrs->value_type);
+ VTABLE_set_integer_keyed_int(INTERP, types, key_id, entity_attrs->value_type);
/* Store constant for name. */
- Parrot_mmd_multi_dispatch_from_c_args(interp, "get_or_create_constant",
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP, "get_or_create_constant",
"PS->I", attrs->const_table, entity_attrs->name, &name_id);
- VTABLE_set_integer_keyed_int(interp, names, key_id, name_id);
+ VTABLE_set_integer_keyed_int(INTERP, names, key_id, name_id);
}
/* At this point we have create (if nesassary) key and name constant. */
@@ -349,30 +356,30 @@
res->entries[i]->value = entity_attrs->int_value;
break;
case PF_ANNOTATION_KEY_TYPE_STR:
- Parrot_mmd_multi_dispatch_from_c_args(interp, "get_or_create_constant",
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP, "get_or_create_constant",
"PS->I", attrs->const_table, entity_attrs->str_value,
&res->entries[i]->value);
break;
case PF_ANNOTATION_KEY_TYPE_NUM:
- Parrot_mmd_multi_dispatch_from_c_args(interp, "get_or_create_constant",
+ Parrot_mmd_multi_dispatch_from_c_args(INTERP, "get_or_create_constant",
"PN->I", attrs->const_table, entity_attrs->num_value,
&res->entries[i]->value);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_MALFORMED_PACKFILE,
"Unknown value type in PackfileAnnotation");
}
}
/* Time to pack keys */
- num = VTABLE_elements(interp, types);
+ num = VTABLE_elements(INTERP, types);
res->num_keys = num;
res->keys = mem_gc_allocate_n_zeroed_typed(INTERP, num,
PackFile_Annotations_Key*);
for (i = 0; i < num; ++i) {
res->keys[i] = mem_gc_allocate_typed(INTERP, PackFile_Annotations_Key);
- res->keys[i]->name = VTABLE_get_integer_keyed_int(interp, names, i);
- res->keys[i]->type = VTABLE_get_integer_keyed_int(interp, types, i);
+ res->keys[i]->name = VTABLE_get_integer_keyed_int(INTERP, names, i);
+ res->keys[i]->type = VTABLE_get_integer_keyed_int(INTERP, types, i);
}
return res;
Modified: branches/ops_pct/src/pmc/packfileconstanttable.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfileconstanttable.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfileconstanttable.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -24,6 +24,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileConstantTable auto_attrs extends PackfileSegment {
/* ResizablePMCArray for storing constants */
ATTR PMC *constants;
@@ -42,11 +46,11 @@
*/
VTABLE void init() {
- Parrot_PackfileConstantTable_attributes * attrs =
+ 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->constants = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ attrs->types = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
PObj_custom_mark_SET(SELF);
PMC_data(SELF) = attrs;
@@ -63,11 +67,11 @@
*/
VTABLE void mark() {
- Parrot_PackfileConstantTable_attributes * attrs =
+ 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->constants);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->types);
SUPER();
}
@@ -84,7 +88,7 @@
*/
VTABLE void set_pointer(void * pointer) {
- Parrot_PackfileConstantTable_attributes * attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
const PackFile_ConstTable * const table =
(const PackFile_ConstTable *)(pointer);
@@ -92,8 +96,8 @@
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->constants, table->const_count);
+ VTABLE_set_integer_native(INTERP, attrs->types, table->const_count);
for (i = 0; i < table->const_count; ++i) {
val = table->constants[i];
@@ -112,7 +116,7 @@
SELF.set_pmc_keyed_int(i, val->u.key);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_MALFORMED_PACKFILE,
"Unknown PackFile constant type: %d", val->type);
}
@@ -126,41 +130,40 @@
*/
VTABLE void *get_pointer() {
- Parrot_PackfileConstantTable_attributes * attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- PackFile_ConstTable * pftable =
+ PackFile_ConstTable * const pftable =
mem_gc_allocate_zeroed_typed(INTERP, PackFile_ConstTable);
- PackFile_Constant * value;
opcode_t i;
pftable->base.type = PF_CONST_SEG;
/* Copy all constanst with respect of type */
- pftable->const_count = VTABLE_get_integer(interp, attrs->constants);
+ 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) {
- value = PackFile_Constant_new(interp);
- value->type = VTABLE_get_integer_keyed_int(interp, attrs->types, i);
+ PackFile_Constant * const value = PackFile_Constant_new(INTERP);
+ 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,
+ 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,
+ 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,
+ value->u.key = VTABLE_get_pmc_keyed_int(INTERP,
attrs->constants, i);
break;
default:
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_MALFORMED_PACKFILE,
"Unknown PackFile constant type: %d", value->type);
}
@@ -181,7 +184,7 @@
*/
VTABLE INTVAL elements() {
- return VTABLE_elements(interp,
+ return VTABLE_elements(INTERP,
PARROT_PACKFILECONSTANTTABLE(SELF)->constants);
}
@@ -197,7 +200,7 @@
*/
VTABLE FLOATVAL get_number_keyed_int(INTVAL index) {
- return VTABLE_get_number_keyed_int(interp,
+ return VTABLE_get_number_keyed_int(INTERP,
PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
}
@@ -213,7 +216,7 @@
*/
VTABLE STRING *get_string_keyed_int(INTVAL index) {
- return VTABLE_get_string_keyed_int(interp,
+ return VTABLE_get_string_keyed_int(INTERP,
PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
}
@@ -228,7 +231,7 @@
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL index) {
- return VTABLE_get_pmc_keyed_int(interp,
+ return VTABLE_get_pmc_keyed_int(INTERP,
PARROT_PACKFILECONSTANTTABLE(SELF)->constants, index);
}
@@ -243,11 +246,11 @@
*/
VTABLE void set_number_keyed_int(INTVAL index, FLOATVAL value) {
- Parrot_PackfileConstantTable_attributes * attrs =
+ 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->constants, index, value);
+ VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, PFC_NUMBER);
}
@@ -262,11 +265,11 @@
*/
VTABLE void set_string_keyed_int(INTVAL index, STRING *value) {
- Parrot_PackfileConstantTable_attributes * attrs =
+ 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->constants, index, value);
+ VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, PFC_STRING);
}
@@ -280,15 +283,15 @@
*/
VTABLE void set_pmc_keyed_int(INTVAL index, PMC *value) {
- Parrot_PackfileConstantTable_attributes * attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- opcode_t type = VTABLE_isa(interp, value,
- Parrot_str_new_constant(interp, "Key"))
+ 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);
+ VTABLE_set_pmc_keyed_int(INTERP, attrs->constants, index, value);
+ VTABLE_set_integer_keyed_int(INTERP, attrs->types, index, type);
}
@@ -316,7 +319,7 @@
*/
METHOD get_type(INTVAL index) {
- INTVAL rv = VTABLE_get_integer_keyed_int(interp,
+ INTVAL rv = VTABLE_get_integer_keyed_int(INTERP,
PARROT_PACKFILECONSTANTTABLE(SELF)->types, index);
RETURN(INTVAL rv);
}
@@ -338,7 +341,7 @@
METHOD set_main(INTVAL index) {
PMC *mainsub = SELF.get_pmc_keyed_int(index);
if (mainsub->vtable->base_type != enum_class_Sub)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Attempt to set main flag in a non Sub");
SUB_FLAG_flag_SET(PF_MAIN, mainsub);
@@ -354,66 +357,63 @@
*/
MULTI INTVAL get_or_create_constant(STRING *value) {
- Parrot_PackfileConstantTable_attributes *attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- INTVAL num = VTABLE_elements(interp, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->types);
INTVAL i;
- STRING *str;
+
for (i=0; i < num; ++i) {
- INTVAL type = VTABLE_get_integer_keyed_int(interp, attrs->types, i);
- if (type != PFC_STRING)
- continue;
-
- str = VTABLE_get_string_keyed_int(interp, attrs->constants, i);
- if (Parrot_str_equal(interp, value, str))
- return 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;
+ }
}
/* Constant not found. Add new one */
- VTABLE_set_string_keyed_int(interp, SELF, i, value);
+ VTABLE_set_string_keyed_int(INTERP, SELF, i, value);
return i;
}
MULTI INTVAL get_or_create_constant(FLOATVAL value) {
- Parrot_PackfileConstantTable_attributes *attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- INTVAL num = VTABLE_elements(interp, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->types);
INTVAL i;
- FLOATVAL val;
+
for (i=0; i < num; ++i) {
- INTVAL type = VTABLE_get_integer_keyed_int(interp, attrs->types, i);
- if (type != PFC_NUMBER)
- continue;
-
- val = VTABLE_get_number_keyed_int(interp, attrs->constants, i);
- if (FLOAT_IS_ZERO(fabs(val - value)))
- return 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;
+ }
}
/* Constant not found. Add new one */
- VTABLE_set_number_keyed_int(interp, SELF, i, value);
+ VTABLE_set_number_keyed_int(INTERP, SELF, i, value);
return i;
}
MULTI INTVAL get_or_create_constant(PMC *value) {
- Parrot_PackfileConstantTable_attributes *attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
- INTVAL num = VTABLE_elements(interp, attrs->types);
+ const INTVAL num = VTABLE_elements(INTERP, attrs->types);
INTVAL i;
- PMC *val;
- INTVAL val_type = value->vtable->base_type == enum_class_Key
+ const INTVAL val_type =
+ value->vtable->base_type == enum_class_Key
? PFC_KEY
: PFC_PMC;
for (i=0; i < num; ++i) {
- INTVAL type = VTABLE_get_integer_keyed_int(interp, attrs->types, i);
- if (type != val_type)
- continue;
-
- val = VTABLE_get_pmc_keyed_int(interp, attrs->constants, i);
- if (VTABLE_is_equal(INTERP, value, val))
- return 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;
+ }
}
/* Constant not found. Add new one */
- VTABLE_set_pmc_keyed_int(interp, SELF, i, value);
+ VTABLE_set_pmc_keyed_int(INTERP, SELF, i, value);
return i;
}
Copied: branches/ops_pct/src/pmc/packfiledebug.pmc (from r46301, trunk/src/pmc/packfiledebug.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/pmc/packfiledebug.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/pmc/packfiledebug.pmc)
@@ -0,0 +1,210 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/packfiledebug.pmc - Packfile Debug Segment PMC
+
+=head1 DESCRIPTION
+
+This class implements a PackfileDebug object, a segment of the .pbc
+data file used for storing pir debug information.
+
+See packfile.pmc for the toplevel Packfile interface, see packfilesegment.pmc
+for the list of common methods every packfile segment pmc must implement; see
+PDD13 for the design spec.
+
+Initial and experimental version, using some vtables as a quick way of testing.
+
+=head2 Vtable functions
+
+=over 4
+
+=cut
+
+*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass PackfileDebug auto_attrs extends PackfileRawSegment {
+ /* Number of file mappings */
+ ATTR INTVAL num_mappings;
+ /* File name mapping */
+ ATTR PMC *mapping_offset;
+ ATTR PMC *mapping_filename;
+
+/*
+
+=item C<init>
+
+Create empty PackfileDebug.
+
+=cut
+
+*/
+
+ VTABLE void init() {
+ SUPER();
+ SET_ATTR_type(INTERP, SELF, PF_DEBUG_SEG);
+ }
+
+/*
+
+=item C<void mark()>
+
+Marks the object as live.
+
+=cut
+
+*/
+
+ VTABLE void mark() {
+ PMC *mapping_offset;
+ PMC *mapping_filename;
+ GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+ GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+ Parrot_gc_mark_PMC_alive(INTERP, mapping_offset);
+ Parrot_gc_mark_PMC_alive(INTERP, mapping_filename);
+
+ SUPER();
+ }
+
+
+/*
+
+=item C<set_pointer>
+
+Set pointer to underlying PackFile_ConstTable
+
+=cut
+
+*/
+
+ VTABLE void set_pointer(void * pointer) {
+ PackFile_Debug *p = (PackFile_Debug *) pointer;
+ INTVAL num_mappings = p->num_mappings;
+ PMC *mapping_offset = Parrot_pmc_new_init_int(INTERP,
+ enum_class_FixedIntegerArray, num_mappings);
+ PMC *mapping_filename = Parrot_pmc_new_init_int(INTERP,
+ enum_class_FixedIntegerArray, num_mappings);
+ INTVAL i;
+ STRING *t = CONST_STRING(INTERP, "test");
+
+ SUPER(pointer);
+ for (i = 0; i < num_mappings; ++i) {
+ VTABLE_set_integer_keyed_int(INTERP, mapping_offset, i, p->mappings[i].offset);
+ VTABLE_set_integer_keyed_int(INTERP, mapping_filename, i, p->mappings[i].filename);
+ }
+ SET_ATTR_num_mappings(INTERP, SELF, p->num_mappings);
+ SET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+ SET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+ }
+
+/*
+
+=item C<void *get_pointer()>
+=cut
+
+*/
+
+ VTABLE void *get_pointer() {
+ PackFile_Debug *p = (PackFile_Debug *) mem_gc_realloc_n_typed(INTERP,
+ SUPER(), sizeof (PackFile_Debug), char);
+ INTVAL num_mappings;
+ PMC *mapping_offset;
+ PMC *mapping_filename;
+ INTVAL i;
+ GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+ GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+ GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+ p->num_mappings = num_mappings;
+ p->mappings = mem_gc_allocate_n_typed(INTERP, num_mappings, PackFile_DebugFilenameMapping);
+ for (i = 0; i < num_mappings; ++i) {
+ p->mappings[i].offset = VTABLE_get_integer_keyed_int(INTERP, mapping_offset, i);
+ p->mappings[i].filename = VTABLE_get_integer_keyed_int(INTERP, mapping_filename, i);
+ }
+ return p;
+ }
+
+/*
+
+=item C<INTVAL get_integer()>
+
+Get the number of filename mappings.
+
+=cut
+
+*/
+
+ VTABLE INTVAL get_integer() {
+ INTVAL num_mappings;
+ GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+ return num_mappings;
+ }
+
+/*
+
+=item C<INTVAL get_string_keyed_int(INTVAL n)>
+
+Get the filename mapping n.
+
+=cut
+
+*/
+
+ VTABLE PMC *get_pmc_keyed_int(INTVAL n) {
+ INTVAL num_mappings;
+ GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+ if (n < num_mappings) {
+ PMC *mapping_offset;
+ INTVAL offset;
+ PMC *result;
+ GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+ offset = VTABLE_get_integer_keyed_int(INTERP, mapping_offset, n);
+ result = Parrot_pmc_new(INTERP, enum_class_Integer);
+ VTABLE_set_integer_native(INTERP, result, offset);
+ return result;
+ }
+ else return PMCNULL;
+ }
+
+/*
+
+=item C<INTVAL get_string_keyed_int(INTVAL n)>
+
+Get the filename mapping n.
+
+=cut
+
+*/
+
+ VTABLE STRING *get_string_keyed_int(INTVAL n) {
+ INTVAL num_mappings;
+ GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+ if (n < num_mappings) {
+ PMC *mapping_filename;
+ GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+ return VTABLE_get_string_keyed_int(INTERP, mapping_filename, n);
+ }
+ else return STRINGNULL;
+ }
+
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfiledirectory.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfiledirectory.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -25,6 +25,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileDirectory auto_attrs extends PackfileSegment {
/* Directory is a hash of Segments */
ATTR PMC *hash;
@@ -42,7 +46,7 @@
Parrot_PackfileDirectory_attributes * attrs =
PMC_data_typed(SELF, Parrot_PackfileDirectory_attributes*);
- attrs->hash = Parrot_pmc_new(interp, enum_class_Hash);
+ attrs->hash = Parrot_pmc_new(INTERP, enum_class_Hash);
PObj_custom_mark_SET(SELF);
}
@@ -61,7 +65,7 @@
Parrot_PackfileDirectory_attributes * attrs =
PARROT_PACKFILEDIRECTORY(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->hash);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->hash);
SUPER();
}
@@ -102,20 +106,22 @@
case PF_ANNOTATIONS_SEG:
pmc_type = enum_class_PackfileAnnotations;
break;
+ case PF_DEBUG_SEG:
+ pmc_type = enum_class_PackfileDebug;
+ break;
case PF_BYTEC_SEG:
case PF_UNKNOWN_SEG:
- case PF_DEBUG_SEG:
default:
pmc_type = enum_class_PackfileRawSegment;
break;
}
- segment = Parrot_pmc_new(interp, pmc_type);
+ segment = Parrot_pmc_new(INTERP, pmc_type);
name = pfseg->name;
- VTABLE_set_pmc_keyed_str(interp, SELF, name, segment);
+ VTABLE_set_pmc_keyed_str(INTERP, SELF, name, segment);
/* Initialize internal PMC structure */
- VTABLE_set_pointer(interp, segment, pfseg);
+ VTABLE_set_pointer(INTERP, segment, pfseg);
}
}
@@ -133,19 +139,19 @@
VTABLE void *get_pointer() {
Parrot_PackfileDirectory_attributes * attrs =
PARROT_PACKFILEDIRECTORY(SELF);
- PackFile * const pf = PackFile_new(interp, 0); /* dummy PackFile... */
+ PackFile * const pf = PackFile_new(INTERP, 0); /* dummy PackFile... */
PackFile_Directory * const pfdir = &pf->directory;
- PMC * const iter = VTABLE_get_iter(interp, attrs->hash);
+ PMC * const iter = VTABLE_get_iter(INTERP, attrs->hash);
/* Create Segments. Add to Directory with transfering ownership */
- while (VTABLE_get_bool(interp, iter)) {
- STRING * const name = VTABLE_shift_string(interp, iter);
- PMC * const seg = VTABLE_get_pmc_keyed_str(interp, attrs->hash, name);
- PackFile_Segment * const pfseg = (PackFile_Segment *)VTABLE_get_pointer(interp, seg);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ STRING * const name = VTABLE_shift_string(INTERP, iter);
+ PMC * const seg = VTABLE_get_pmc_keyed_str(INTERP, attrs->hash, name);
+ PackFile_Segment * const pfseg = (PackFile_Segment *)VTABLE_get_pointer(INTERP, seg);
pfseg->pf = pf;
- pfseg->name = Parrot_str_copy(interp, name);
- PackFile_add_segment(interp, pfdir, pfseg);
+ pfseg->name = name;
+ PackFile_add_segment(INTERP, pfdir, pfseg);
}
return pf;
@@ -161,7 +167,7 @@
*/
VTABLE INTVAL elements() {
- return VTABLE_elements(interp, PARROT_PACKFILEDIRECTORY(SELF)->hash);
+ return VTABLE_elements(INTERP, PARROT_PACKFILEDIRECTORY(SELF)->hash);
}
@@ -176,7 +182,7 @@
*/
VTABLE PMC *get_iter() {
- return VTABLE_get_iter(interp, PARROT_PACKFILEDIRECTORY(SELF)->hash);
+ return VTABLE_get_iter(INTERP, PARROT_PACKFILEDIRECTORY(SELF)->hash);
}
/*
@@ -189,7 +195,7 @@
*/
VTABLE PMC *get_pmc_keyed_str(STRING *name) {
- return VTABLE_get_pmc_keyed_str(interp,
+ return VTABLE_get_pmc_keyed_str(INTERP,
PARROT_PACKFILEDIRECTORY(SELF)->hash, name);
}
@@ -204,8 +210,8 @@
*/
VTABLE PMC *get_pmc_keyed(PMC *key) {
- STRING * const s_key = VTABLE_get_string(interp, key);
- return VTABLE_get_pmc_keyed_str(interp,
+ STRING * const s_key = VTABLE_get_string(INTERP, key);
+ return VTABLE_get_pmc_keyed_str(INTERP,
PARROT_PACKFILEDIRECTORY(SELF)->hash, s_key);
}
@@ -223,10 +229,10 @@
*/
VTABLE void set_pmc_keyed_str(STRING *name, PMC *segment) {
- Parrot_pcc_invoke_method_from_c_args(interp, segment,
- Parrot_str_new_constant(interp, "set_directory"),
+ Parrot_pcc_invoke_method_from_c_args(INTERP, segment,
+ Parrot_str_new_constant(INTERP, "set_directory"),
"P->", SELF);
- VTABLE_set_pmc_keyed_str(interp,
+ VTABLE_set_pmc_keyed_str(INTERP,
PARROT_PACKFILEDIRECTORY(SELF)->hash, name, segment);
}
@@ -242,8 +248,8 @@
*/
VTABLE void set_pmc_keyed(PMC *key, PMC *segment) {
- STRING * const s_key = VTABLE_get_string(interp, key);
- VTABLE_set_pmc_keyed_str(interp, SELF, s_key, segment);
+ STRING * const s_key = VTABLE_get_string(INTERP, key);
+ VTABLE_set_pmc_keyed_str(INTERP, SELF, s_key, segment);
}
/*
@@ -257,7 +263,7 @@
*/
VTABLE void delete_keyed(PMC *key) {
- VTABLE_delete_keyed(interp,
+ VTABLE_delete_keyed(INTERP,
PARROT_PACKFILEDIRECTORY(SELF)->hash, key);
}
Modified: branches/ops_pct/src/pmc/packfilefixupentry.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilefixupentry.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfilefixupentry.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileFixupEntry auto_attrs {
ATTR INTVAL type;
ATTR STRING *name;
@@ -38,7 +42,7 @@
Parrot_PackfileFixupEntry_attributes * attrs =
PMC_data_typed(SELF, Parrot_PackfileFixupEntry_attributes*);
- attrs->name = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+ attrs->name = Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
PObj_custom_mark_SET(SELF);
}
@@ -54,10 +58,10 @@
*/
VTABLE void mark() {
- Parrot_PackfileFixupEntry_attributes * attrs =
+ Parrot_PackfileFixupEntry_attributes * const attrs =
PARROT_PACKFILEFIXUPENTRY(SELF);
- Parrot_gc_mark_STRING_alive(interp, attrs->name);
+ Parrot_gc_mark_STRING_alive(INTERP, attrs->name);
}
/*
@@ -71,12 +75,12 @@
*/
VTABLE void set_pointer(void * pointer) {
- Parrot_PackfileFixupEntry_attributes * attrs =
+ Parrot_PackfileFixupEntry_attributes * const attrs =
PARROT_PACKFILEFIXUPENTRY(SELF);
PackFile_FixupEntry *entry = (PackFile_FixupEntry*)pointer;
attrs->type = entry->type;
- attrs->name = Parrot_str_new_init(interp, entry->name,
+ attrs->name = Parrot_str_new_init(INTERP, entry->name,
strlen(entry->name), PARROT_FIXED_8_ENCODING,
PARROT_BINARY_CHARSET, 0);
attrs->offset = entry->offset;
@@ -92,13 +96,13 @@
*/
VTABLE void *get_pointer() {
- Parrot_PackfileFixupEntry_attributes * attrs =
+ Parrot_PackfileFixupEntry_attributes * const attrs =
PARROT_PACKFILEFIXUPENTRY(SELF);
- PackFile_FixupEntry * entry =
+ PackFile_FixupEntry * const entry =
mem_gc_allocate_zeroed_typed(INTERP, PackFile_FixupEntry);
entry->type = attrs->type;
- entry->name = strdup(Parrot_string_cstring(interp, attrs->name));
+ entry->name = strdup(Parrot_str_cstring(INTERP, attrs->name));
entry->offset = attrs->offset;
return entry;
}
@@ -169,7 +173,7 @@
*/
METHOD get_type() {
- INTVAL rv = PARROT_PACKFILEFIXUPENTRY(SELF)->type;
+ const INTVAL rv = PARROT_PACKFILEFIXUPENTRY(SELF)->type;
RETURN(INTVAL rv);
}
Modified: branches/ops_pct/src/pmc/packfilefixuptable.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilefixuptable.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfilefixuptable.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -24,6 +24,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileFixupTable auto_attrs extends PackfileSegment {
/* RPA of entries */
ATTR PMC *entries;
@@ -42,7 +46,7 @@
Parrot_PackfileFixupTable_attributes * attrs =
PMC_data_typed(SELF, Parrot_PackfileFixupTable_attributes*);
- attrs->entries = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ attrs->entries = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
PObj_custom_mark_SET(SELF);
}
@@ -61,7 +65,7 @@
Parrot_PackfileFixupTable_attributes * attrs =
PARROT_PACKFILEFIXUPTABLE(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->entries);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->entries);
SUPER();
}
@@ -85,13 +89,13 @@
PackFile_FixupEntry *val;
opcode_t i;
- VTABLE_set_integer_native(interp, attrs->entries, table->fixup_count);
+ VTABLE_set_integer_native(INTERP, attrs->entries, table->fixup_count);
for (i = 0; i < table->fixup_count; ++i) {
- val = table->fixups[i];
- entry = Parrot_pmc_new(interp, enum_class_PackfileFixupEntry);
- VTABLE_set_pointer(interp, entry, (void*)val);
- VTABLE_set_pmc_keyed_int(interp, attrs->entries, i, entry);
+ val = table->fixups + i;
+ entry = Parrot_pmc_new(INTERP, enum_class_PackfileFixupEntry);
+ VTABLE_set_pointer(INTERP, entry, (void*)val);
+ VTABLE_set_pmc_keyed_int(INTERP, attrs->entries, i, entry);
}
}
@@ -114,15 +118,16 @@
opcode_t i;
pftable->base.type = PF_FIXUP_SEG;
- pftable->fixup_count = VTABLE_elements(interp, attrs->entries);
+ pftable->fixup_count = VTABLE_elements(INTERP, attrs->entries);
pftable->fixups = mem_gc_allocate_n_typed(INTERP,
- pftable->fixup_count, PackFile_FixupEntry*);
+ pftable->fixup_count, PackFile_FixupEntry);
/* Copy all entries */
for (i = 0; i < pftable->fixup_count; ++i) {
- entry = VTABLE_get_pmc_keyed_int(interp, attrs->entries, i);
- val = (PackFile_FixupEntry*)VTABLE_get_pointer(interp, entry);
- pftable->fixups[i] = val;
+ entry = VTABLE_get_pmc_keyed_int(INTERP, attrs->entries, i);
+ val = (PackFile_FixupEntry*)VTABLE_get_pointer(INTERP, entry);
+ pftable->fixups[i] = *val;
+ mem_gc_free(INTERP, val);
}
return pftable;
@@ -139,7 +144,7 @@
*/
VTABLE INTVAL elements() {
- return VTABLE_elements(interp,
+ return VTABLE_elements(INTERP,
PARROT_PACKFILEFIXUPTABLE(SELF)->entries);
}
@@ -154,7 +159,7 @@
*/
VTABLE PMC *get_pmc_keyed_int(INTVAL index) {
- return VTABLE_get_pmc_keyed_int(interp,
+ return VTABLE_get_pmc_keyed_int(INTERP,
PARROT_PACKFILEFIXUPTABLE(SELF)->entries, index);
}
@@ -169,7 +174,7 @@
*/
VTABLE void set_pmc_keyed_int(INTVAL index, PMC *value) {
- VTABLE_set_pmc_keyed_int(interp,
+ VTABLE_set_pmc_keyed_int(INTERP,
PARROT_PACKFILEFIXUPTABLE(SELF)->entries, index, value);
}
Modified: branches/ops_pct/src/pmc/packfilerawsegment.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilerawsegment.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfilerawsegment.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -24,6 +24,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileRawSegment auto_attrs extends PackfileSegment {
/* Type of segment */
ATTR INTVAL type;
@@ -44,7 +48,7 @@
Parrot_PackfileRawSegment_attributes * attrs =
PMC_data_typed(SELF, Parrot_PackfileRawSegment_attributes*);
- attrs->opcodes = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+ attrs->opcodes = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
attrs->type = PF_BYTEC_SEG;
PObj_custom_mark_SET(SELF);
@@ -61,10 +65,10 @@
*/
VTABLE void mark() {
- Parrot_PackfileRawSegment_attributes * attrs =
+ Parrot_PackfileRawSegment_attributes * const attrs =
PARROT_PACKFILERAWSEGMENT(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->opcodes);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->opcodes);
SUPER();
}
@@ -83,20 +87,21 @@
VTABLE void set_pointer(void * pointer) {
const PackFile_Segment * const pfseg =
(const PackFile_Segment *)pointer;
- Parrot_PackfileRawSegment_attributes * attrs =
+ Parrot_PackfileRawSegment_attributes * const attrs =
PARROT_PACKFILERAWSEGMENT(SELF);
- PMC * opcodes = attrs->opcodes;
- size_t i;
+ PMC * const opcodes = attrs->opcodes;
/* Preserve type of unpacked segment */
attrs->type = pfseg->type;
if (pfseg->size) {
+ size_t i;
+
/* copy data to own array */
- VTABLE_set_integer_native(interp, opcodes, pfseg->size);
+ VTABLE_set_integer_native(INTERP, opcodes, pfseg->size);
/* Not very efficient... */
for (i = 0; i < pfseg->size; ++i) {
- VTABLE_set_integer_keyed_int(interp, opcodes, i, pfseg->data[i]);
+ VTABLE_set_integer_keyed_int(INTERP, opcodes, i, pfseg->data[i]);
}
}
}
@@ -112,18 +117,18 @@
VTABLE void *get_pointer() {
PackFile_Segment * pfseg =
(PackFile_Segment*)mem_gc_allocate_zeroed_typed(INTERP, PackFile_ByteCode);
- Parrot_PackfileRawSegment_attributes * attrs =
+ Parrot_PackfileRawSegment_attributes * const attrs =
PARROT_PACKFILERAWSEGMENT(SELF);
PMC * opcodes = attrs->opcodes;
size_t i;
pfseg->type = attrs->type;
- pfseg->size = VTABLE_get_integer(interp, opcodes);
+ pfseg->size = VTABLE_get_integer(INTERP, opcodes);
pfseg->data = mem_gc_allocate_n_typed(INTERP, pfseg->size, opcode_t);
/* Not very efficient... */
for (i = 0; i < pfseg->size; ++i) {
- pfseg->data[i] = VTABLE_get_integer_keyed_int(interp, opcodes, i);
+ pfseg->data[i] = VTABLE_get_integer_keyed_int(INTERP, opcodes, i);
}
return pfseg;
@@ -138,7 +143,7 @@
*/
VTABLE INTVAL elements() {
- return VTABLE_elements(interp,
+ return VTABLE_elements(INTERP,
PARROT_PACKFILERAWSEGMENT(SELF)->opcodes);
}
@@ -153,7 +158,7 @@
*/
VTABLE INTVAL get_integer_keyed_int(INTVAL key) {
- return VTABLE_get_integer_keyed_int(interp,
+ return VTABLE_get_integer_keyed_int(INTERP,
PARROT_PACKFILERAWSEGMENT(SELF)->opcodes, key);
}
@@ -168,7 +173,7 @@
*/
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
- VTABLE_set_integer_keyed_int(interp,
+ VTABLE_set_integer_keyed_int(INTERP,
PARROT_PACKFILERAWSEGMENT(SELF)->opcodes, key, value);
}
@@ -182,7 +187,7 @@
*/
VTABLE void push_integer(INTVAL value) {
- VTABLE_push_integer(interp,
+ VTABLE_push_integer(INTERP,
PARROT_PACKFILERAWSEGMENT(SELF)->opcodes, value);
}
@@ -199,7 +204,7 @@
*/
METHOD type(INTVAL type :optional, INTVAL got_type :opt_flag) {
- Parrot_PackfileRawSegment_attributes * attrs =
+ Parrot_PackfileRawSegment_attributes * const attrs =
PARROT_PACKFILERAWSEGMENT(SELF);
INTVAL res;
Modified: branches/ops_pct/src/pmc/packfilesegment.pmc
==============================================================================
--- branches/ops_pct/src/pmc/packfilesegment.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/packfilesegment.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -23,6 +23,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileSegment auto_attrs {
/*
Directory which owns this segment. Required for correct pack/unpack
@@ -63,7 +67,7 @@
Parrot_PackfileSegment_attributes * attrs =
PARROT_PACKFILESEGMENT(SELF);
- Parrot_gc_mark_PMC_alive(interp, attrs->directory);
+ Parrot_gc_mark_PMC_alive(INTERP, attrs->directory);
}
/*
@@ -101,7 +105,7 @@
*/
METHOD pack() {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
"PackfileSegment.pack() not implemented yet.");
}
@@ -116,7 +120,7 @@
*/
METHOD unpack(STRING *data) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
"PackfileSegment.unpack() not implemented yet.");
}
Modified: branches/ops_pct/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotinterpreter.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/parrotinterpreter.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -36,10 +36,23 @@
#define PMC_args(x) ((Parrot_ParrotInterpreter_attributes *)PMC_data(x))->args
#define PMC_sub(x) ((Parrot_ParrotInterpreter_attributes *)PMC_data(x))->sub
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void create_interp(
+ ARGIN(PMC *self),
+ ARGIN_NULLOK(Parrot_Interp parent))
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_create_interp __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(self))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/*
-=item C<void
-clone_interpreter(Parrot_Interp dest, const Parrot_Interp source, INTVAL flags)>
+=item C<void clone_interpreter(Parrot_Interp d, Parrot_Interp s, INTVAL flags)>
Clones the interpreter as specified by the flags.
@@ -69,7 +82,6 @@
if (flags & PARROT_CLONE_HLL) {
/* we'd like to share the HLL data. Give it a PMC_sync structure
if it doesn't have one already */
- Parrot_gc_add_pmc_sync(s, s->HLL_info);
d->HLL_info = s->HLL_info;
Parrot_regenerate_HLL_namespaces(d);
}
@@ -127,11 +139,12 @@
PObj_is_class_TEST(s->vtables[i]->pmc_class)) {
/* Cloning the class into the new interpreter ought
* to be sufficient to instantiate the class. */
- PMC *source = s->vtables[i]->pmc_class;
- PMC *dest = Parrot_clone(d, source);
- Parrot_Class_attributes *source_class = PARROT_CLASS(source);
- Parrot_Class_attributes *dest_class = PARROT_CLASS(dest);
- dest_class->name = Parrot_str_copy(d, source_class->name);
+ PMC * const source = s->vtables[i]->pmc_class;
+ PMC * const dest = Parrot_clone(d, source);
+ Parrot_Class_attributes * const source_class = PARROT_CLASS(source);
+ Parrot_Class_attributes * const dest_class = PARROT_CLASS(dest);
+
+ dest_class->name = source_class->name;
dest_class->_namespace = VTABLE_clone(d, source_class->_namespace);
}
}
@@ -149,8 +162,7 @@
/*
-=item C<static void
-create_interp(PMC *self, Parrot_Interp parent)>
+=item C<static void create_interp(PMC *self, Parrot_Interp parent)>
Creates a new child interpreter of C<parent>.
@@ -159,8 +171,9 @@
*/
static void
-create_interp(PMC *self, Parrot_Interp parent)
+create_interp(ARGIN(PMC *self), ARGIN_NULLOK(Parrot_Interp parent))
{
+ ASSERT_ARGS(create_interp)
Interp_flags flag = PARROT_NO_FLAGS;
Parrot_Interp new_interp;
@@ -231,7 +244,7 @@
* so we check, if the interpreter is already set up
*/
if (!PMC_data(SELF)) {
- Parrot_ParrotInterpreter_attributes *attrs =
+ Parrot_ParrotInterpreter_attributes * const attrs =
mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
PMC_data(SELF) = attrs;
}
@@ -254,10 +267,11 @@
*/
VTABLE void init_pmc(PMC *parent) {
+ /* XXX Can this be moved inside the block where it's used */
Parrot_Interp p = PMC_interp(parent);
if (!PMC_data(SELF)) {
- Parrot_ParrotInterpreter_attributes *attrs =
+ Parrot_ParrotInterpreter_attributes * const attrs =
mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
PMC_data(SELF) = attrs;
}
@@ -302,7 +316,7 @@
* ParrotInterpreter through Parrot_pmc_new_noinit. If this PMC hasn't been
* initialized, cheat by initializing instead. */
if (!PMC_data(SELF)) {
- Parrot_ParrotInterpreter_attributes *attrs =
+ Parrot_ParrotInterpreter_attributes * const attrs =
mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
PMC_data(SELF) = attrs;
PObj_custom_destroy_SET(SELF);
@@ -336,7 +350,9 @@
VTABLE INTVAL get_integer() {
const Parrot_Interp i = PMC_interp(SELF);
- return (INTVAL)i->thread_data->tid;
+ if (i->thread_data)
+ return (INTVAL)i->thread_data->tid;
+ return 0;
}
/*
@@ -353,14 +369,14 @@
Interp * const new_interp = PMC_interp(SELF);
/* setup code */
- pt_thread_prepare_for_run(new_interp, interp);
+ pt_thread_prepare_for_run(new_interp, INTERP);
/* TODO pass arguments from parent (interp) to child (new_interp) by
* possibly clone of share the arguments r/o args can be passed as is */
/* calculate offset and run */
runops(new_interp, (size_t)((opcode_t *)PMC_sub(SELF) -
- (opcode_t *)interp->code->base.data));
+ (opcode_t *)INTERP->code->base.data));
return (opcode_t *)next;
}
@@ -441,122 +457,122 @@
*/
VTABLE PMC *get_pmc_keyed(PMC *key) {
- PMC *nextkey, *cont;
+ PMC *nextkey;
STRING *outer = NULL;
- STRING *item = key_string(interp, key);
- STRING *name = CONST_STRING(interp, "globals");
+ STRING *item = key_string(INTERP, key);
+ STRING *name = CONST_STRING(INTERP, "globals");
int level = 0;
PMC *ctx;
- if (Parrot_str_equal(interp, item, name))
- return interp->root_namespace;
+ if (Parrot_str_equal(INTERP, item, name))
+ return INTERP->root_namespace;
- name = CONST_STRING(interp, "outer");
+ name = CONST_STRING(INTERP, "outer");
- if (Parrot_str_equal(interp, item, name)) {
+ if (Parrot_str_equal(INTERP, item, name)) {
outer = item;
nextkey = key_next(INTERP, key);
if (nextkey && (PObj_get_FLAGS(nextkey) & KEY_string_FLAG)) {
key = nextkey;
- item = VTABLE_get_string(interp, key);
+ item = VTABLE_get_string(INTERP, key);
}
}
nextkey = key_next(INTERP, key);
if (nextkey)
- level = VTABLE_get_integer(interp, nextkey);
+ level = VTABLE_get_integer(INTERP, nextkey);
else if (outer)
level = 1;
if (level < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, CONTROL_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, CONTROL_ERROR,
"No such caller depth");
- ctx = CURRENT_CONTEXT(interp);
+ ctx = CURRENT_CONTEXT(INTERP);
if (outer) {
for (; level; --level) {
- ctx = Parrot_pcc_get_outer_ctx(interp, ctx);
+ ctx = Parrot_pcc_get_outer_ctx(INTERP, ctx);
if (PMC_IS_NULL(ctx))
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
CONTROL_ERROR, "No such outer depth");
}
}
else {
for (; level; --level) {
- cont = Parrot_pcc_get_continuation(interp, ctx);
+ PMC * const cont = Parrot_pcc_get_continuation(INTERP, ctx);
if (PMC_IS_NULL(cont) || !PARROT_CONTINUATION(cont)->seg)
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
CONTROL_ERROR, "No such caller depth");
ctx = PARROT_CONTINUATION(cont)->to_ctx;
- if (PMC_IS_NULL(Parrot_pcc_get_sub(interp, ctx)))
- Parrot_ex_throw_from_c_args(interp, NULL,
+ if (PMC_IS_NULL(Parrot_pcc_get_sub(INTERP, ctx)))
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
CONTROL_ERROR, "No such caller depth");
}
}
if (item == outer)
- return Parrot_pcc_get_sub(interp, ctx);
+ return Parrot_pcc_get_sub(INTERP, ctx);
- name = CONST_STRING(interp, "context");
+ name = CONST_STRING(INTERP, "context");
- if (Parrot_str_equal(interp, item, name))
+ if (Parrot_str_equal(INTERP, item, name))
return ctx;
- name = CONST_STRING(interp, "sub");
+ name = CONST_STRING(INTERP, "sub");
- if (Parrot_str_equal(interp, item, name))
- return Parrot_pcc_get_sub(interp, ctx);
+ if (Parrot_str_equal(INTERP, item, name))
+ return Parrot_pcc_get_sub(INTERP, ctx);
- name = CONST_STRING(interp, "lexpad");
+ name = CONST_STRING(INTERP, "lexpad");
- if (Parrot_str_equal(interp, item, name))
- return Parrot_pcc_get_lex_pad(interp, ctx);
+ if (Parrot_str_equal(INTERP, item, name))
+ return Parrot_pcc_get_lex_pad(INTERP, ctx);
- name = CONST_STRING(interp, "namespace");
+ name = CONST_STRING(INTERP, "namespace");
- if (Parrot_str_equal(interp, item, name))
- return Parrot_pcc_get_namespace(interp, ctx);
+ if (Parrot_str_equal(INTERP, item, name))
+ return Parrot_pcc_get_namespace(INTERP, ctx);
- name = CONST_STRING(interp, "continuation");
+ name = CONST_STRING(INTERP, "continuation");
- if (Parrot_str_equal(interp, item, name))
- return VTABLE_clone(interp, Parrot_pcc_get_continuation(interp, ctx));
+ if (Parrot_str_equal(INTERP, item, name))
+ return VTABLE_clone(INTERP, Parrot_pcc_get_continuation(INTERP, ctx));
- name = CONST_STRING(interp, "annotations");
+ name = CONST_STRING(INTERP, "annotations");
- if (Parrot_str_equal(interp, item, name)) {
- PMC *sub_pmc = Parrot_pcc_get_sub(interp, ctx);
- if (ctx == CURRENT_CONTEXT(interp)) {
+ if (Parrot_str_equal(INTERP, item, name)) {
+ PMC *sub_pmc = Parrot_pcc_get_sub(INTERP, ctx);
+ if (ctx == CURRENT_CONTEXT(INTERP)) {
/* We can't know the current program counter for the currently
* executing sub, so can't return annotations for that. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Cannot get annotations at depth 0; use annotations op instead.");
}
if (!PMC_IS_NULL(sub_pmc)
&& sub_pmc->vtable->base_type == enum_class_Sub) {
Parrot_Sub_attributes *sub;
PackFile_ByteCode *seg;
- opcode_t *pc = Parrot_pcc_get_pc(interp, ctx);
+ opcode_t *pc = Parrot_pcc_get_pc(INTERP, ctx);
- PMC_get_sub(interp, sub_pmc, sub);
+ PMC_get_sub(INTERP, sub_pmc, sub);
seg = sub->seg;
if (sub->seg->annotations)
- return PackFile_Annotations_lookup(interp, seg->annotations,
+ return PackFile_Annotations_lookup(INTERP, seg->annotations,
pc - seg->base.data, NULL);
}
- return Parrot_pmc_new(interp, enum_class_Hash);
+ return Parrot_pmc_new(INTERP, enum_class_Hash);
}
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
"No such item %Ss", item);
}
@@ -636,7 +652,7 @@
*/
- VTABLE INTVAL is_equal(PMC *val) {
+ MULTI INTVAL is_equal(ParrotInterpreter val) {
Parrot_Interp self = PMC_interp(SELF);
Parrot_Interp other = PMC_interp(val);
@@ -650,6 +666,22 @@
return 0;
}
+ MULTI INTVAL is_equal(ParrotThread value) {
+ Parrot_Interp self = PMC_interp(SELF);
+
+ if (!self->thread_data)
+ return 0;
+
+ return self->thread_data->tid == (UINTVAL) VTABLE_get_integer(INTERP, value);
+ }
+
+ MULTI INTVAL is_equal(DEFAULT value) {
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
+ EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
+ "ParrotInterpreter: no multiple dispatch variant 'is_equal' for %Ss",
+ VTABLE_name(INTERP, value));
+ }
+
/*
=item C<void visit(PMC *info)>
@@ -703,16 +735,16 @@
/* HLL_info */
if (VTABLE_get_integer(INTERP, info) == VISIT_THAW_NORMAL ||
VTABLE_get_integer(INTERP, info) == VISIT_THAW_CONSTANTS) {
- VISIT_PMC(interp, info, PMC_args(SELF));
+ VISIT_PMC(INTERP, info, PMC_args(SELF));
}
else
- VISIT_PMC(interp, info, INTERP->HLL_info);
+ VISIT_PMC(INTERP, info, INTERP->HLL_info);
}
VTABLE void thaw(PMC *info) {
if (!PMC_data(SELF)) {
- Parrot_ParrotInterpreter_attributes *attrs =
+ Parrot_ParrotInterpreter_attributes * const attrs =
mem_gc_allocate_zeroed_typed(INTERP, Parrot_ParrotInterpreter_attributes);
PMC_data(SELF) = attrs;
PObj_custom_destroy_SET(SELF);
@@ -746,22 +778,18 @@
}
if (!PMC_IS_NULL(lib_pmc)) {
- STRING *lib_name = VTABLE_get_string(INTERP, lib_pmc);
- PMC *ignored;
+ STRING * const lib_name = VTABLE_get_string(INTERP, lib_pmc);
if (!STRING_IS_EMPTY(lib_name)) {
- INTVAL id;
- ignored = Parrot_load_lib(INTERP, lib_name, NULL);
- id = Parrot_register_HLL_lib(INTERP, lib_name);
+ PMC * const ignored = Parrot_load_lib(INTERP, lib_name, NULL);
+ const INTVAL id = Parrot_register_HLL_lib(INTERP, lib_name);
UNUSED(id);
}
-
- UNUSED(ignored);
}
if (hll_id >= 0 && !PMC_IS_NULL(typemap)) {
- PMC *iter = VTABLE_get_iter(INTERP, typemap);
- INTVAL e = VTABLE_get_integer(INTERP, typemap);
+ PMC * const iter = VTABLE_get_iter(INTERP, typemap);
+ const INTVAL e = VTABLE_get_integer(INTERP, typemap);
INTVAL i;
for (i = 0; i < e; ++i) {
@@ -792,9 +820,9 @@
*/
METHOD hll_map(PMC *core_type, PMC *hll_type) {
- INTVAL core_type_id = VTABLE_type(INTERP, core_type);
- INTVAL hll_type_id = VTABLE_type(INTERP, hll_type);
- INTVAL hll_id = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
+ const INTVAL core_type_id = VTABLE_type(INTERP, core_type);
+ const INTVAL hll_type_id = VTABLE_type(INTERP, hll_type);
+ const INTVAL hll_id = Parrot_pcc_get_HLL(INTERP, CURRENT_CONTEXT(INTERP));
Parrot_register_HLL_type(INTERP, hll_id, core_type_id, hll_type_id);
}
@@ -815,7 +843,7 @@
*/
METHOD stdhandle(INTVAL fileno, PMC *newhandle :optional) {
- PMC * handle = Parrot_io_stdhandle(interp, fileno, newhandle);
+ PMC * const handle = Parrot_io_stdhandle(INTERP, fileno, newhandle);
RETURN(PMC *handle);
}
Modified: branches/ops_pct/src/pmc/parrotlibrary.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotlibrary.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/parrotlibrary.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -31,6 +31,10 @@
#define PMC_dlhandle(x) ((Parrot_ParrotLibrary_attributes*)PMC_data(x))->dl_handle
#define PMC_oplib_init(x) ((Parrot_ParrotLibrary_attributes*)PMC_data(x))->oplib_init
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ParrotLibrary auto_attrs provides library {
ATTR void * dl_handle; /* DLL handle */
ATTR void * oplib_init; /* oplib init function */
Deleted: branches/ops_pct/src/pmc/parrotrunningthread.pmc
==============================================================================
--- branches/ops_pct/src/pmc/parrotrunningthread.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,160 +0,0 @@
-/*
-Copyright (C) 2006-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/parrotrunningthread.pmc -- Represents a running Parrot Thread.
-
-=head1 DESCRIPTION
-
-This type represents a running parrot thread.
-
-It provides the following methods:
- - join
- - detach
- - kill
-
-Note that a running thread object becomes invalid when a thread
-finishes while detached or joined. Further operations on the
-object may have unexpected behavior, such as manipulating an
-unrelated thread.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/embed.h"
-
-#define PMC_tid(x) (PARROT_PARROTRUNNINGTHREAD(x))->tid
-
-pmclass ParrotRunningThread no_ro auto_attrs {
- ATTR INTVAL tid; /* thread id */
-
-/*
-
-=item C<void init()>
-
-Create a new, invalid handle to a running thread.
-
-=cut
-
-*/
-
- VTABLE void init() {
- PMC_tid(SELF) = -1;
- }
-
-/*
-
-=item C<void init_pmc(PMC *tid)>
-
-Create a new running thread referring to the thread with
-the Thread ID specified in C<tid>.
-
-=cut
-
-*/
-
- VTABLE void init_pmc(PMC *tid) {
- PMC_tid(SELF) = VTABLE_get_integer(INTERP, tid);
- }
-
-/*
-
-=item C<INTVAL get_integer()>
-
-Return the thread ID of this thread.
-
-=cut
-
-*/
-
- VTABLE INTVAL get_integer() {
- return PMC_tid(SELF);
- }
-
-/*
-
-=item C<void set_integer_native(INTVAL new_tid)>
-
-Change the thread ID we refer to to C<new_tid>.
-
-=cut
-
-*/
-
- VTABLE void set_integer_native(INTVAL new_tid) {
- if (new_tid < 0)
- Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERP_ERROR,
- "Attempt to set invalid thread id %d", (int)new_tid);
- PMC_tid(SELF) = new_tid;
- }
-/*
-
-=item C<METHOD join()>
-
-Join the thread, returning whatever its main method returns.
-
-=cut
-
-*/
- METHOD join() {
- PMC *ret = pt_thread_join(INTERP,
- (UINTVAL)VTABLE_get_integer(INTERP, SELF));
-
- /* invalidate self */
- PMC_tid(SELF) = -1;
-
- RETURN(PMC *ret);
- }
-
-/*
-
-=item C<METHOD detach()>
-
-Detach the thread so it cannot be joined and will free its resources
-immediately when it exits.
-
-=cut
-
-*/
-
- METHOD detach() {
- pt_thread_detach((UINTVAL)VTABLE_get_integer(INTERP, SELF));
- }
-
-/*
-
-=item C<METHOD kill()>
-
-Terminate a running thread.
-
-=cut
-
-*/
-
- METHOD kill() {
- pt_thread_kill((UINTVAL)VTABLE_get_integer(INTERP, SELF));
- }
-
-}
-
-/*
-
-=back
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Copied: branches/ops_pct/src/pmc/parrotthread.pmc (from r46301, trunk/src/pmc/parrotthread.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/pmc/parrotthread.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/pmc/parrotthread.pmc)
@@ -0,0 +1,181 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/parrotthread.pmc - Represents a Parrot Thread.
+
+=head1 DESCRIPTION
+
+This type represents a parrot thread.
+
+It provides the following methods:
+ - join
+ - detach
+ - kill
+ - pid
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/embed.h"
+
+
+pmclass ParrotThread no_ro auto_attrs {
+ ATTR INTVAL tid; /* thread id */
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+/*
+
+=item C<void init()>
+
+Create a new, invalid handle to a running thread.
+
+=cut
+
+*/
+
+ VTABLE void init() {
+ VTABLE_set_integer_native(INTERP, SELF, -1);
+ }
+
+/*
+
+=item C<void init_pmc(PMC *notused)>
+
+Create a new, invalid handle to a running thread.
+
+=cut
+
+*/
+
+ VTABLE void init_pmc(PMC *notused) {
+ VTABLE_set_integer_native(INTERP, SELF, -1);
+ }
+
+/*
+
+=item C<INTVAL get_integer()>
+
+Return the thread ID of this thread.
+
+=cut
+
+*/
+
+ VTABLE INTVAL get_integer() {
+ INTVAL ttid;
+ GETATTR_ParrotThread_tid(INTERP, SELF, ttid);
+ return ttid;
+ }
+
+ VTABLE void set_integer_native(INTVAL ttid) {
+ SETATTR_ParrotThread_tid(INTERP, SELF, ttid);
+ }
+
+
+/*
+
+=item C<METHOD run(closure)>
+
+Join the thread, returning whatever its main method returns.
+
+=cut
+
+*/
+ METHOD run_clone(PMC *sub, PMC *args :slurpy) {
+ INTVAL ttid;
+ if (PMC_IS_NULL(sub)) {
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
+ "Invalid thread sub");
+ }
+
+ ttid = pt_thread_create_run(INTERP,
+ enum_class_ThreadInterpreter, PARROT_CLONE_DEFAULT, sub, args);
+ VTABLE_set_integer_native(INTERP, SELF, ttid);
+ }
+
+ METHOD run(INTVAL clone_flags, PMC *sub, PMC *args :slurpy) {
+ INTVAL ttid;
+ if (PMC_IS_NULL(sub)) {
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
+ "Invalid thread sub");
+ }
+
+ ttid = pt_thread_create_run(INTERP, enum_class_ThreadInterpreter, clone_flags, sub, args);
+ VTABLE_set_integer_native(INTERP, SELF, ttid);
+ }
+/*
+
+=item C<METHOD join()>
+
+Join the thread, returning whatever its main method returns.
+
+=cut
+
+*/
+ METHOD join() {
+ PMC *ret;
+ INTVAL ttid = VTABLE_get_integer(INTERP, SELF);
+
+ ret = pt_thread_join(INTERP, ttid);
+ /* invalidate self */
+ VTABLE_set_integer_native(INTERP, SELF, -1);
+
+ RETURN(PMC *ret);
+ }
+
+/*
+
+=item C<METHOD detach()>
+
+Detach the thread so it cannot be joined and will free its resources
+immediately when it exits.
+
+=cut
+
+*/
+
+ METHOD detach() {
+ pt_thread_detach((UINTVAL)VTABLE_get_integer(INTERP, SELF));
+ }
+
+/*
+
+=item C<METHOD kill()>
+
+Terminate a running thread.
+
+=cut
+
+*/
+
+ METHOD kill() {
+ pt_thread_kill((UINTVAL)VTABLE_get_integer(INTERP, SELF));
+ }
+
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/pmc/pmc.num
==============================================================================
--- branches/ops_pct/src/pmc/pmc.num Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/pmc.num Wed May 5 08:45:29 2010 (r46302)
@@ -77,8 +77,5 @@
parrotclass.pmc 49
parrotobject.pmc 50
-os.pmc 51
-file.pmc 52
-
-oplib.pmc 53
-opcode.pmc 54
+oplib.pmc 51
+opcode.pmc 52
Modified: branches/ops_pct/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/ops_pct/src/pmc/pmcproxy.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/pmcproxy.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -63,6 +63,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PMCProxy extends Class auto_attrs {
@@ -79,46 +83,45 @@
VTABLE void init() {
Parrot_Class_attributes * const _pmc =
(Parrot_Class_attributes *) PMC_data(SELF);
- PMC * const new_attribute = Parrot_pmc_new(interp, enum_class_Hash);
- STRING * const name = CONST_STRING(interp, "proxy");
+ PMC * const new_attribute = Parrot_pmc_new(INTERP, enum_class_Hash);
+ STRING * const name = CONST_STRING(INTERP, "proxy");
/* Set flag for custom GC mark. */
PObj_custom_mark_SET(SELF);
/* Set up the object. */
_pmc->id = 0;
- _pmc->name = CONST_STRING(interp, "");
+ _pmc->name = CONST_STRING(INTERP, "");
_pmc->_namespace = PMCNULL;
- _pmc->parents = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _pmc->all_parents = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _pmc->roles = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- _pmc->methods = Parrot_pmc_new(interp, enum_class_Hash);
- _pmc->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
- _pmc->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
- _pmc->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
+ _pmc->parents = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _pmc->all_parents = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _pmc->roles = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ _pmc->methods = Parrot_pmc_new(INTERP, enum_class_Hash);
+ _pmc->vtable_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
+ _pmc->parent_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
+ _pmc->attrib_metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
_pmc->attrib_index = PMCNULL;
_pmc->attrib_cache = PMCNULL;
- _pmc->resolve_method = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ _pmc->resolve_method = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
/* Set up the attribute storage for the proxy instance */
- VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
- VTABLE_set_pmc_keyed_str(interp, _pmc->attrib_metadata, name, new_attribute);
+ VTABLE_set_string_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "name"), name);
+ VTABLE_set_pmc_keyed_str(INTERP, _pmc->attrib_metadata, name, new_attribute);
/* We put ourself on the all parents list. */
- VTABLE_push_pmc(interp, _pmc->all_parents, SELF);
+ VTABLE_push_pmc(INTERP, _pmc->all_parents, SELF);
/* We are a class. */
PObj_is_class_SET(SELF);
}
- VTABLE void init_pmc(PMC *init_data) {
- const INTVAL type_num = VTABLE_get_integer(interp, init_data);
+ VTABLE void init_int(INTVAL type_num) {
Parrot_Class_attributes *proxy_info;
INTVAL mro_length, i;
/* Ensure that it's a valid type number. */
- if (type_num > interp->n_vtable_max || type_num <= 0)
- Parrot_ex_throw_from_c_args(interp, NULL, 1,
+ if (type_num > INTERP->n_vtable_max || type_num <= 0)
+ Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
"Attempt to create PMC Proxy for invalid type number!");
/* Set up the object. */
@@ -127,36 +130,36 @@
/* Set up number, name and namespace. */
proxy_info = PARROT_CLASS(SELF);
proxy_info->id = type_num;
- proxy_info->name = interp->vtables[type_num]->whoami;
- proxy_info->_namespace = interp->vtables[type_num]->_namespace;
+ proxy_info->name = INTERP->vtables[type_num]->whoami;
+ proxy_info->_namespace = INTERP->vtables[type_num]->_namespace;
/* Build MRO (skip ourself). */
- mro_length = VTABLE_elements(interp, interp->vtables[type_num]->mro);
- for (i = 1; i < mro_length; i++) {
- PMC *pclass = VTABLE_get_pmc_keyed_int(interp, interp->vtables[type_num]->mro, i);
+ mro_length = VTABLE_elements(INTERP, INTERP->vtables[type_num]->mro);
+ for (i = 1; i < mro_length; ++i) {
+ PMC *pclass = VTABLE_get_pmc_keyed_int(INTERP, INTERP->vtables[type_num]->mro, i);
PMC *cns = pclass->vtable->_namespace;
STRING *cname = pclass->vtable->whoami;
- if (Parrot_str_not_equal(interp, cname, CONST_STRING(interp, "scalar"))) {
- PMC *pproxy = Parrot_oo_get_class(interp, cns);
- VTABLE_push_pmc(interp, proxy_info->all_parents, pproxy);
+ if (Parrot_str_not_equal(INTERP, cname, CONST_STRING(INTERP, "scalar"))) {
+ PMC *pproxy = Parrot_oo_get_class(INTERP, cns);
+ VTABLE_push_pmc(INTERP, proxy_info->all_parents, pproxy);
}
}
/* PMCs just do single inheritance, so we'll assume that if we have a
* second entry in our MRO, it goes in the parents list. */
- if (VTABLE_elements(interp, proxy_info->all_parents) >= 2)
- VTABLE_push_pmc(interp, proxy_info->parents,
- VTABLE_get_pmc_keyed_int(interp, proxy_info->all_parents, 1));
+ if (VTABLE_elements(INTERP, proxy_info->all_parents) >= 2)
+ VTABLE_push_pmc(INTERP, proxy_info->parents,
+ VTABLE_get_pmc_keyed_int(INTERP, proxy_info->all_parents, 1));
if (!PMC_IS_NULL(proxy_info->_namespace) &&
- PMC_IS_NULL(VTABLE_get_class(interp, proxy_info->_namespace))) {
+ PMC_IS_NULL(VTABLE_get_class(INTERP, proxy_info->_namespace))) {
/* Link the proxy and the namespace, caching the proxy object for
* later retrieval on class lookup. */
- Parrot_pcc_invoke_method_from_c_args(interp, proxy_info->_namespace, CONST_STRING(interp, "set_class"), "P->", SELF);
+ Parrot_pcc_invoke_method_from_c_args(INTERP, proxy_info->_namespace, CONST_STRING(INTERP, "set_class"), "P->", SELF);
/* Extract any methods from the namespace */
- Parrot_oo_extract_methods_from_namespace(interp, SELF,
+ Parrot_oo_extract_methods_from_namespace(INTERP, SELF,
proxy_info->_namespace);
}
@@ -165,7 +168,7 @@
* and terminated by an space,
* the list is '\0' terminated
*/
- const char * attr = interp->vtables[type_num]->attribute_defs;
+ const char * attr = INTERP->vtables[type_num]->attribute_defs;
while (* attr) {
const char * const current = attr + 1;
size_t l;
@@ -173,7 +176,7 @@
while (* attr != ' ') ++attr;
l= attr - current;
if (attrtype != ':') {
- STRING *sattr = Parrot_str_new(interp, current, l);
+ STRING *sattr = Parrot_str_new(INTERP, current, l);
SELF.add_attribute(sattr, NULL);
}
++attr;
@@ -181,6 +184,11 @@
}
}
+ VTABLE void init_pmc(PMC *init_data) {
+ const INTVAL type_num = VTABLE_get_integer(INTERP, init_data);
+ SELF.init_int(type_num);
+ }
+
/*
=item C<PMC *instantiate(PMC *init)>
@@ -194,9 +202,9 @@
Parrot_Class_attributes * const _pmc = PARROT_CLASS(SELF);
if (!PMC_IS_NULL(init))
- return Parrot_pmc_new_init(interp, _pmc->id, init);
+ return Parrot_pmc_new_init(INTERP, _pmc->id, init);
- return Parrot_pmc_new(interp, _pmc->id);
+ return Parrot_pmc_new(INTERP, _pmc->id);
}
/*
@@ -221,46 +229,46 @@
if (SUPER(lookup))
return 1;
- classobj = Parrot_oo_get_class(interp, lookup);
+ classobj = Parrot_oo_get_class(INTERP, lookup);
if (PMC_IS_NULL(classobj))
return 0;
- classname = VTABLE_get_string(interp, classobj);
+ classname = VTABLE_get_string(INTERP, classobj);
/* Check if the passed name is the same as the stored short name. */
- if (Parrot_str_equal(interp, classname, _proxy->name))
+ if (Parrot_str_equal(INTERP, classname, _proxy->name))
return 1;
/* Check if the class object is the same as self's class object */
- if (VTABLE_is_same(interp, SELF, classobj))
+ if (VTABLE_is_same(INTERP, SELF, classobj))
return 1;
/* Check if the passed name is the same as the fully qualified name. */
- if (Parrot_str_equal(interp, classname, VTABLE_get_string(interp, SELF)))
+ if (Parrot_str_equal(INTERP, classname, VTABLE_get_string(INTERP, SELF)))
return 1;
/* Look in the isa hash. */
- if (interp->vtables[_proxy->id]) {
- Hash *isa_hash = interp->vtables[_proxy->id]->isa_hash;
+ if (INTERP->vtables[_proxy->id]) {
+ Hash *isa_hash = INTERP->vtables[_proxy->id]->isa_hash;
- if (!isa_hash && Parrot_str_equal(interp,
- interp->vtables[_proxy->id]->whoami, classname))
+ if (!isa_hash && Parrot_str_equal(INTERP,
+ INTERP->vtables[_proxy->id]->whoami, classname))
return 1;
- if (isa_hash && parrot_hash_exists(interp, isa_hash, classname))
+ if (isa_hash && parrot_hash_exists(INTERP, isa_hash, classname))
return 1;
}
/* Iterate over all the parents and check if they respond true
* for 'isa' on the original comparison. */
- num_classes = VTABLE_elements(interp, _proxy->parents);
+ num_classes = VTABLE_elements(INTERP, _proxy->parents);
- for (i = 0; i < num_classes; i++) {
- PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+ for (i = 0; i < num_classes; ++i) {
+ PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
_proxy->parents, i);
- if (VTABLE_isa_pmc(interp, cur_class, lookup))
+ if (VTABLE_isa_pmc(INTERP, cur_class, lookup))
return 1;
}
@@ -279,7 +287,7 @@
VTABLE INTVAL isa(STRING *classname) {
Parrot_Class_attributes * const _proxy = PARROT_CLASS(SELF);
- const STRING * const pmc_proxy = CONST_STRING(interp, "PMCProxy");
+ const STRING * const pmc_proxy = CONST_STRING(INTERP, "PMCProxy");
if (Parrot_str_equal(INTERP, classname, pmc_proxy))
return 1;
@@ -288,15 +296,15 @@
return 1;
/* Look in the isa hash. */
- if (interp->vtables[_proxy->id]) {
- Hash *isa_hash = interp->vtables[_proxy->id]->isa_hash;
+ if (INTERP->vtables[_proxy->id]) {
+ Hash *isa_hash = INTERP->vtables[_proxy->id]->isa_hash;
- if (!isa_hash && Parrot_str_equal(interp,
- interp->vtables[_proxy->id]->whoami, classname)) {
+ if (!isa_hash && Parrot_str_equal(INTERP,
+ INTERP->vtables[_proxy->id]->whoami, classname)) {
return 1;
}
- if (isa_hash && parrot_hash_exists(interp, isa_hash, classname))
+ if (isa_hash && parrot_hash_exists(INTERP, isa_hash, classname))
return 1;
}
@@ -314,15 +322,12 @@
*/
VTABLE INTVAL does(STRING *role_name) {
- Parrot_Class_attributes *_class = PARROT_CLASS(SELF);
- INTVAL id = _class->id;
- PMC *proxied = Parrot_pmc_new(interp, id);
-
- if (VTABLE_does(interp, proxied, role_name))
+ Parrot_Class_attributes * const attrs = PARROT_CLASS(SELF);
+ const INTVAL id = attrs->id;
+ const INTVAL type_does = Parrot_pmc_type_does(INTERP, role_name, id);
+ if (type_does)
return 1;
-
- return VTABLE_isa(interp, proxied, role_name);
-
+ return VTABLE_isa(INTERP, SELF, role_name);
}
/*
@@ -355,21 +360,21 @@
{
/* Create a hash, then use inspect_str to get all of the data to
* fill it up with. */
- STRING * const name_str = CONST_STRING(interp, "name");
- STRING * const ns_str = CONST_STRING(interp, "namespace");
- STRING * const meth_str = CONST_STRING(interp, "methods");
- STRING * const parents_str = CONST_STRING(interp, "parents");
-
- PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
-
- VTABLE_set_pmc_keyed_str(interp, metadata, name_str,
- VTABLE_inspect_str(interp, SELF, name_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, ns_str,
- VTABLE_inspect_str(interp, SELF, ns_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, meth_str,
- VTABLE_inspect_str(interp, SELF, meth_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, parents_str,
- VTABLE_inspect_str(interp, SELF, parents_str));
+ STRING * const name_str = CONST_STRING(INTERP, "name");
+ STRING * const ns_str = CONST_STRING(INTERP, "namespace");
+ STRING * const meth_str = CONST_STRING(INTERP, "methods");
+ STRING * const parents_str = CONST_STRING(INTERP, "parents");
+
+ PMC * const metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, name_str,
+ VTABLE_inspect_str(INTERP, SELF, name_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, ns_str,
+ VTABLE_inspect_str(INTERP, SELF, ns_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, meth_str,
+ VTABLE_inspect_str(INTERP, SELF, meth_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, parents_str,
+ VTABLE_inspect_str(INTERP, SELF, parents_str));
return metadata;
}
@@ -417,7 +422,7 @@
*/
METHOD new(PMC *args :optional, int got_args :opt_flag) {
- PMC * const obj = VTABLE_instantiate(interp, SELF, args);
+ PMC * const obj = VTABLE_instantiate(INTERP, SELF, args);
UNUSED(got_args);
RETURN(PMC *obj);
}
@@ -433,7 +438,7 @@
*/
METHOD methods() {
- PMC * const ret_methods = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "methods"));
+ PMC * const ret_methods = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "methods"));
RETURN(PMC *ret_methods);
}
@@ -448,7 +453,7 @@
*/
METHOD parents() {
- PMC * const ret_parents = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "parents"));
+ PMC * const ret_parents = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "parents"));
RETURN(PMC *ret_parents);
}
@@ -464,11 +469,11 @@
*/
METHOD inspect(STRING *what :optional, int got_what :opt_flag) {
- /* Just delegate to the appropriate vtable method. */
+ /* Just delegate to the appropriate vtable. */
PMC * const found =
got_what
- ? VTABLE_inspect_str(interp, SELF, what)
- : VTABLE_inspect(interp, SELF);
+ ? VTABLE_inspect_str(INTERP, SELF, what)
+ : VTABLE_inspect(INTERP, SELF);
RETURN(PMC *found);
}
@@ -485,9 +490,7 @@
VTABLE STRING *get_string() {
Parrot_Class_attributes * const proxy_info = PARROT_CLASS(SELF);
-
- /* Copy the stored string name of the proxy. */
- return Parrot_str_copy(interp, proxy_info->name);
+ return proxy_info->name;
}
Modified: branches/ops_pct/src/pmc/pointer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/pointer.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/pointer.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Pointer auto_attrs {
ATTR void * mark_function;
ATTR void * pointer;
Modified: branches/ops_pct/src/pmc/resizablebooleanarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablebooleanarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/resizablebooleanarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -30,6 +30,10 @@
/* Convert a size in bits to a size in bytes */
#define BITS_TO_BYTES(size) ((size) / BITS_PER_CHAR)
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ResizableBooleanArray extends FixedBooleanArray auto_attrs provides array {
/* RBA uses the same attributes as FBA, but in RBA they're used as follows:
size: position of the last element (a.k.a tail_pos)
@@ -61,7 +65,7 @@
/* If it's still negative, we have a problem */
if (key < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableBooleanArray: index out of bounds!");
}
@@ -95,7 +99,7 @@
/* If it's still negative, we have a problem */
if (key < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableBooleanArray: index out of bounds!");
}
@@ -135,7 +139,7 @@
return;
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableBooleanArray: Can't resize!");
/* now set the new size, in bits */
@@ -208,7 +212,7 @@
INTVAL value;
if (SELF.elements() < 1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableBooleanArray: Can't pop from an empty array!");
GET_ATTR_size(INTERP, SELF, tail_pos);
@@ -293,7 +297,7 @@
UINTVAL tail_pos, head_pos;
if (SELF.elements() < 1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableBooleanArray: Can't shift from an empty array!");
/* Get head value */
@@ -450,12 +454,12 @@
*/
VTABLE void thaw(PMC *info) {
- unsigned char *bit_array;
+
const UINTVAL head_pos = VTABLE_shift_integer(INTERP, info);
const UINTVAL tail_pos = VTABLE_shift_integer(INTERP, info);
STRING * const s = VTABLE_shift_string(INTERP, info);
- bit_array = (unsigned char*)Parrot_str_to_cstring(INTERP, s);
+ unsigned char * const bit_array = (unsigned char*)Parrot_str_to_cstring(INTERP, s);
SET_ATTR_size(INTERP, SELF, tail_pos);
SET_ATTR_resize_threshold(INTERP, SELF, head_pos);
SET_ATTR_bit_array(INTERP, SELF, bit_array);
Modified: branches/ops_pct/src/pmc/resizablefloatarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablefloatarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/resizablefloatarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ResizableFloatArray extends FixedFloatArray auto_attrs provides array {
ATTR INTVAL resize_threshold; /* max size before array needs resizing */
@@ -38,7 +42,7 @@
INTVAL size;
if (key < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableFloatArray: index out of bounds!");
GET_ATTR_size(INTERP, SELF, size);
@@ -65,7 +69,7 @@
INTVAL size;
if (key < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableFloatArray: index out of bounds!");
GET_ATTR_size(INTERP, SELF, size);
@@ -98,7 +102,7 @@
INTVAL resize_threshold;
if (size < 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableFloatArray: Can't resize to negative value!");
GET_ATTR_float_array(INTERP, SELF, float_array);
@@ -152,7 +156,7 @@
/* copy trimmed extra space */
GET_ATTR_size(INTERP, SELF, size);
- SET_ATTR_resize_threshold(INTERP, SELF, size);
+ SET_ATTR_resize_threshold(INTERP, copy, size);
return copy;
}
@@ -188,7 +192,7 @@
GET_ATTR_size(INTERP, SELF, size);
if (size == 0)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableFloatArray: Can't pop from an empty array!");
value = SELF.get_number_keyed_int(size-1);
Modified: branches/ops_pct/src/pmc/resizableintegerarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizableintegerarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/resizableintegerarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ResizableIntegerArray extends FixedIntegerArray auto_attrs provides array {
ATTR INTVAL resize_threshold; /* max size before array needs to be resized */
@@ -41,7 +45,7 @@
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
"ResizableIntegerArray: index out of bounds!");
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
if (key >= size)
return 0;
@@ -147,17 +151,17 @@
INTVAL nextix;
INTVAL resize_threshold;
- GET_ATTR_size(interp, SELF, nextix);
- GET_ATTR_resize_threshold(interp, SELF, resize_threshold);
+ GET_ATTR_size(INTERP, SELF, nextix);
+ GET_ATTR_resize_threshold(INTERP, SELF, resize_threshold);
/* can't always avoid the resize, but don't duplicate the code */
if ((nextix && (nextix >= resize_threshold)) || !nextix)
SELF.set_integer_native(nextix + 1);
else
- SET_ATTR_size(interp, SELF, nextix + 1);
+ SET_ATTR_size(INTERP, SELF, nextix + 1);
/* fetch the array only after resize check; realloc may move it */
- GET_ATTR_int_array(interp, SELF, int_array);
+ GET_ATTR_int_array(INTERP, SELF, int_array);
int_array[nextix] = value;
}
Modified: branches/ops_pct/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablepmcarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/resizablepmcarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -23,6 +23,10 @@
#define PMC_array(x) ((Parrot_ResizablePMCArray_attributes *)PMC_data(x))->pmc_array
#define PMC_threshold(x) ((Parrot_ResizablePMCArray_attributes *)PMC_data(x))->resize_threshold
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ResizablePMCArray extends FixedPMCArray auto_attrs provides array {
ATTR INTVAL resize_threshold; /* max size before array needs resizing */
@@ -82,7 +86,7 @@
INTVAL i, cur, needed;
i = cur = PMC_threshold(SELF);
if (cur < 8192)
- cur = size < 2 * cur ? 2 * cur : size;
+ cur = (size < 2 * cur) ? (2 * cur) : size;
else {
needed = size - cur;
cur += needed + 4096;
@@ -95,7 +99,7 @@
PMC_array(SELF) = mem_gc_realloc_n_typed_zeroed(INTERP,
PMC_array(SELF), cur, i, PMC *);
- for (; i < cur; i++) {
+ for (; i < cur; ++i) {
(PMC_array(SELF))[i] = PMCNULL;
}
@@ -281,14 +285,14 @@
}
VTABLE void delete_keyed_int(INTVAL idx) {
- PMC **data = PMC_array(SELF);
- INTVAL n = PMC_size(SELF);
+ PMC ** const data = PMC_array(SELF);
+ const INTVAL n = PMC_size(SELF);
INTVAL i;
for (i = idx; i < n - 1; ++i)
data[i] = data[i + 1];
- PMC_size(SELF)--;
+ --PMC_size(SELF);
}
/*
@@ -316,7 +320,7 @@
}
VTABLE INTVAL exists_keyed(PMC *key) {
- INTVAL ix = VTABLE_get_integer(INTERP, key);
+ const INTVAL ix = VTABLE_get_integer(INTERP, key);
return SELF.exists_keyed_int(ix);
}
@@ -366,8 +370,8 @@
VTABLE void push_float(FLOATVAL value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_Float);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new(INTERP, enum_class_Float);
VTABLE_set_number_native(INTERP, val, value);
SELF.set_pmc_keyed_int(size, val);
@@ -377,19 +381,22 @@
VTABLE void push_integer(INTVAL value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_Integer);
-
- VTABLE_set_integer_native(INTERP, val, value);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
SELF.set_pmc_keyed_int(size, val);
return;
}
VTABLE void push_pmc(PMC *value) {
+ const INTVAL size = PMC_size(SELF);
+ const INTVAL thresh = PMC_threshold(SELF);
- INTVAL size = PMC_size(SELF);
- SELF.set_integer_native(size + 1);
+ if (PMC_array(SELF) && size < thresh)
+ PMC_size(SELF) = size + 1;
+ else {
+ SELF.set_integer_native(size + 1);
+ }
((PMC **)PMC_array(SELF))[size] = value;
return;
@@ -397,8 +404,8 @@
VTABLE void push_string(STRING *value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_String);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new(INTERP, enum_class_String);
VTABLE_assign_string_native(INTERP, val, value);
SELF.set_pmc_keyed_int(size, val);
@@ -501,8 +508,8 @@
VTABLE void unshift_float(FLOATVAL value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_Float);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new(INTERP, enum_class_Float);
PMC **data;
INTVAL i;
@@ -521,12 +528,11 @@
VTABLE void unshift_integer(INTVAL value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_Integer);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
PMC **data;
INTVAL i;
- VTABLE_set_integer_native(INTERP, val, value);
SELF.set_integer_native(size + 1);
data = PMC_array(SELF);
@@ -541,7 +547,7 @@
VTABLE void unshift_pmc(PMC *value) {
- INTVAL size = PMC_size(SELF);
+ const INTVAL size = PMC_size(SELF);
PMC **data;
INTVAL i;
@@ -559,8 +565,8 @@
VTABLE void unshift_string(STRING *value) {
- INTVAL size = PMC_size(SELF);
- PMC *val = Parrot_pmc_new(INTERP, enum_class_String);
+ const INTVAL size = PMC_size(SELF);
+ PMC * const val = Parrot_pmc_new(INTERP, enum_class_String);
PMC **data;
INTVAL i;
@@ -588,7 +594,7 @@
*/
VTABLE PMC *clone() {
- PMC *copy = SUPER();
+ PMC * const copy = SUPER();
/* copy trimmed extra space */
PMC_threshold(copy) = PMC_size(SELF);
@@ -608,9 +614,8 @@
METHOD append(PMC *other) {
- INTVAL i;
- INTVAL n = VTABLE_elements(INTERP, SELF);
- INTVAL m = VTABLE_elements(INTERP, other);
+ const INTVAL n = VTABLE_elements(INTERP, SELF);
+ const INTVAL m = VTABLE_elements(INTERP, other);
if (!m)
RETURN(void);
@@ -620,14 +625,15 @@
if (other->vtable->base_type == SELF->vtable->base_type
|| other->vtable->base_type == enum_class_FixedPMCArray) {
- PMC **other_data = PMC_array(other);
- PMC **this_data = PMC_array(SELF);
+ PMC ** const other_data = PMC_array(other);
+ PMC ** const this_data = PMC_array(SELF);
/* libc is faster at copying data than a manual loop here */
memmove(this_data + n, other_data, m * sizeof (PMC *));
}
else {
- PMC **this_data = PMC_array(SELF);
+ PMC ** const this_data = PMC_array(SELF);
+ INTVAL i;
for (i = 0; i < m; ++i)
this_data[n + i] = VTABLE_get_pmc_keyed_int(INTERP, other, i);
@@ -646,18 +652,18 @@
VTABLE STRING *get_repr() {
INTVAL j;
- INTVAL n = VTABLE_elements(INTERP, SELF);
+ const INTVAL n = VTABLE_elements(INTERP, SELF);
STRING *res = CONST_STRING(INTERP, "[ ");
for (j = 0; j < n; ++j) {
- PMC *val = SELF.get_pmc_keyed_int(j);
- res = Parrot_str_append(INTERP, res, VTABLE_get_repr(INTERP, val));
+ PMC * const val = SELF.get_pmc_keyed_int(j);
+ res = Parrot_str_concat(INTERP, res, VTABLE_get_repr(INTERP, val));
if (j < n - 1)
- res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, ", "));
+ res = Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, ", "));
}
- return Parrot_str_append(INTERP, res, CONST_STRING(INTERP, " ]"));
+ return Parrot_str_concat(INTERP, res, CONST_STRING(INTERP, " ]"));
}
/*
@@ -680,7 +686,7 @@
const INTVAL length = VTABLE_elements(INTERP, SELF);
const INTVAL elems = VTABLE_elements(INTERP, value);
- INTVAL shift = elems - count;
+ const INTVAL shift = elems - count;
INTVAL i;
/* start from end? */
@@ -694,7 +700,7 @@
/* shrink the array */
if (shift < 0) {
/* start at offset so we don't overwrite values we'll need */
- for (i = offset + count; i < length; i++)
+ for (i = offset + count; i < length; ++i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
@@ -706,13 +712,13 @@
/* move the existing values */
/* start at length-1 so we don't overwrite values we'll need */
- for (i = length - 1; i >= offset; i--)
+ for (i = length - 1; i >= offset; --i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
}
/* copy the new values */
- for (i = 0; i < elems; i++)
+ for (i = 0; i < elems; ++i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + offset,
VTABLE_get_pmc_keyed_int(INTERP, value, i));
}
@@ -731,12 +737,12 @@
*/
METHOD shift() {
- PMC *value = VTABLE_shift_pmc(INTERP, SELF);
+ PMC * const value = VTABLE_shift_pmc(INTERP, SELF);
RETURN(PMC *value);
}
METHOD pop() {
- PMC *value = VTABLE_pop_pmc(INTERP, SELF);
+ PMC * const value = VTABLE_pop_pmc(INTERP, SELF);
RETURN(PMC *value);
}
Modified: branches/ops_pct/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/ops_pct/src/pmc/resizablestringarray.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/resizablestringarray.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -18,6 +18,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ResizableStringArray extends FixedStringArray auto_attrs provides array {
ATTR UINTVAL resize_threshold; /*max capacity before resizing */
@@ -39,7 +43,7 @@
STRING **str_array;
INTVAL size;
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
if (key < 0) {
if (key < -size)
@@ -50,12 +54,12 @@
}
if (key >= size)
- return string_from_literal(INTERP, "");
+ return CONST_STRING(INTERP, "");
GET_ATTR_str_array(INTERP, SELF, str_array);
if (!str_array[key])
- str_array[key] = Parrot_str_new(interp, NULL, 0);
+ str_array[key] = Parrot_str_new(INTERP, NULL, 0);
return str_array[key];
}
@@ -74,7 +78,7 @@
STRING **str_array;
INTVAL size;
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
if (key < 0) {
if (key < -size)
@@ -104,7 +108,7 @@
VTABLE void push_string(STRING *value) {
INTVAL next_idx;
- GET_ATTR_size(interp, SELF, next_idx);
+ GET_ATTR_size(INTERP, SELF, next_idx);
SELF.set_string_keyed_int(next_idx, value);
}
@@ -121,7 +125,7 @@
VTABLE STRING *pop_string() {
STRING *value;
INTVAL size;
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
if (size == 0)
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
@@ -162,7 +166,7 @@
*/
VTABLE INTVAL pop_integer() {
- PMC *pmcval = SELF.pop_pmc();
+ PMC * const pmcval = SELF.pop_pmc();
return VTABLE_get_integer(INTERP, pmcval);
}
@@ -177,7 +181,7 @@
*/
VTABLE FLOATVAL pop_float() {
- PMC *pmcval = SELF.pop_pmc();
+ PMC * const pmcval = SELF.pop_pmc();
return VTABLE_get_number(INTERP, pmcval);
}
@@ -218,10 +222,10 @@
/* zero out anything that was previously allocated
* if we're growing the array */
INTVAL old_size;
- GET_ATTR_size(interp, SELF, old_size);
+ GET_ATTR_size(INTERP, SELF, old_size);
if (new_size > old_size) {
INTVAL i;
- for (i = old_size; i < new_size; i++)
+ for (i = old_size; i < new_size; ++i)
str_array[i] = NULL;
}
@@ -234,7 +238,7 @@
INTVAL cur = i;
if (cur < 8192)
- cur = new_size < 2 * cur ? 2 * cur : new_size;
+ cur = (new_size < 2 * cur) ? (2 * cur) : new_size;
else {
cur = new_size + 4096;
cur &= ~0xfff;
@@ -245,7 +249,7 @@
cur, resize_threshold, STRING*));
GET_ATTR_str_array(INTERP, SELF, str_array);
- for (; i < cur; i++)
+ for (; i < cur; ++i)
str_array[i] = NULL;
SET_ATTR_size(INTERP, SELF, new_size);
@@ -264,9 +268,9 @@
*/
VTABLE PMC *clone() {
- PMC *copy = SUPER();
+ PMC * const copy = SUPER();
INTVAL size;
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
/* copy trimmed extra space */
SET_ATTR_resize_threshold(INTERP, copy, size);
return copy;
@@ -285,7 +289,7 @@
VTABLE STRING *shift_string() {
STRING *value;
INTVAL size;
- GET_ATTR_size(interp, SELF, size);
+ GET_ATTR_size(INTERP, SELF, size);
if (size == 0)
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
@@ -307,8 +311,8 @@
*/
VTABLE PMC *shift_pmc() {
- STRING *strval = SELF.shift_string();
- PMC *value = Parrot_pmc_new(INTERP, enum_class_String);
+ STRING * const strval = SELF.shift_string();
+ PMC * const value = Parrot_pmc_new(INTERP, enum_class_String);
VTABLE_set_string_native(INTERP, value, strval);
@@ -326,7 +330,7 @@
*/
VTABLE INTVAL shift_integer() {
- PMC *pmcval = SELF.shift_pmc();
+ PMC * const pmcval = SELF.shift_pmc();
return VTABLE_get_integer(INTERP, pmcval);
}
@@ -341,7 +345,7 @@
*/
VTABLE FLOATVAL shift_float() {
- PMC *pmcval = SELF.shift_pmc();
+ PMC * const pmcval = SELF.shift_pmc();
return VTABLE_get_number(INTERP, pmcval);
}
@@ -358,7 +362,7 @@
*/
VTABLE void push_pmc(PMC *value) {
- STRING *strvalue = VTABLE_get_string(INTERP, value);
+ STRING * const strvalue = VTABLE_get_string(INTERP, value);
SELF.push_string(strvalue);
}
@@ -374,7 +378,7 @@
*/
VTABLE void push_integer(INTVAL value) {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_String);
+ PMC * const ret = Parrot_pmc_new(INTERP, enum_class_String);
STRING *val;
VTABLE_set_integer_native(INTERP, ret, value);
@@ -394,7 +398,7 @@
*/
VTABLE void push_float(FLOATVAL value) {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_String);
+ PMC * const ret = Parrot_pmc_new(INTERP, enum_class_String);
STRING *val;
VTABLE_set_number_native(INTERP, ret, value);
@@ -470,7 +474,7 @@
*/
VTABLE void unshift_pmc(PMC *value) {
- STRING *strvalue = VTABLE_get_string(INTERP, value);
+ STRING * const strvalue = VTABLE_get_string(INTERP, value);
SELF.unshift_string(strvalue);
}
@@ -486,7 +490,7 @@
*/
VTABLE void unshift_integer(INTVAL value) {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_String);
+ PMC * const ret = Parrot_pmc_new(INTERP, enum_class_String);
STRING *val;
VTABLE_set_integer_native(INTERP, ret, value);
@@ -506,7 +510,7 @@
*/
VTABLE void unshift_float(FLOATVAL value) {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_String);
+ PMC * const ret = Parrot_pmc_new(INTERP, enum_class_String);
STRING *val;
VTABLE_set_number_native(INTERP, ret, value);
@@ -548,7 +552,7 @@
*/
VTABLE void delete_keyed(PMC *key) {
- INTVAL idx = VTABLE_get_integer(INTERP, key);
+ const INTVAL idx = VTABLE_get_integer(INTERP, key);
STRING **str_array;
UINTVAL size, i;
@@ -601,7 +605,7 @@
/* shrink the array */
if (shift < 0) {
/* start at offset so we don't overwrite values we'll need */
- for (i = offset+count; i < length; i++)
+ for (i = offset+count; i < length; ++i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
@@ -613,13 +617,13 @@
/* move the existing values */
/* start at length-1 so we don't overwrite values we'll need */
- for (i = length - 1; i >= offset; i--)
+ for (i = length - 1; i >= offset; --i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
}
/* copy the new values */
- for (i = 0; i < elems; i++)
+ for (i = 0; i < elems; ++i)
VTABLE_set_pmc_keyed_int(INTERP, SELF, i + offset,
VTABLE_get_pmc_keyed_int(INTERP, value, i));
}
@@ -638,12 +642,12 @@
*/
METHOD shift() {
- PMC *value = SELF.shift_pmc();
+ PMC * const value = SELF.shift_pmc();
RETURN(PMC *value);
}
METHOD pop() {
- PMC *value = SELF.pop_pmc();
+ PMC * const value = SELF.pop_pmc();
RETURN(PMC *value);
}
@@ -677,13 +681,6 @@
F<docs/pdds/pdd17_basic_types.pod>.
-=head1 HISTORY
-
-Initial version - Matt Fowles 2004-06-11
-Changed allocator to double size - Matt Fowles 2004-06-15
-Added push_string - Bernhard Schmalhofer 2004-10-17
-moved available size to int_val2 - Matt Fowles 2005-07-22
-
=cut
*/
Deleted: branches/ops_pct/src/pmc/retcontinuation.pmc
==============================================================================
--- branches/ops_pct/src/pmc/retcontinuation.pmc Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,114 +0,0 @@
-/*
-Copyright (C) 2001-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/retcontinuation.pmc - Return Continuation
-
-=head1 DESCRIPTION
-
-C<RetContinuation> extends C<Continuation>.
-
-A return continuation is a one shot Continuation. It gets recycled immediately
-after invocation.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/oplib/ops.h"
-
-pmclass RetContinuation extends Continuation auto_attrs {
-
-/*
-
-=item C<void init()>
-
-Initializes the continuation.
-
-=cut
-
-*/
-
- VTABLE void init() {
- Parrot_RetContinuation_attributes * const attrs = PARROT_RETCONTINUATION(SELF);
-
- attrs->to_ctx = CURRENT_CONTEXT(interp);
- attrs->from_ctx = PMCNULL; /* filled in during a call */
- attrs->runloop_id = 0;
- attrs->seg = interp->code;
- attrs->address = NULL;
- }
-
-
-/*
-
-=item C<PMC *clone>
-
-Return a new Continuation PMC with the context of SELF. Note: the returned
-object is not a RetContinuation and creating a real Continuation invalidates
-all RetContinuation all the way up the call chain. That is, these can't be
-recycled; they persist until the GC gets at them.
-
-=cut
-
-*/
- VTABLE PMC *clone() {
- invalidate_retc_context(INTERP, SELF);
- return SUPER();
- }
-/*
-
-=item C<opcode_t *invoke(void *next)>
-
-Transfers control to the calling context and frees the current context.
-
-=cut
-
-*/
-
- VTABLE opcode_t *invoke(void *in_next) {
- Parrot_Continuation_attributes *data = PARROT_CONTINUATION(SELF);
- PMC *from_ctx = data->from_ctx;
- PackFile_ByteCode * const seg = data->seg;
- opcode_t *next = data->address;
- UNUSED(in_next)
-
- Parrot_continuation_check(interp, SELF);
- Parrot_continuation_rewind_environment(interp, SELF);
-
- /* recycle this PMC and make sure it doesn't get marked */
- if (!PMC_IS_NULL(from_ctx))
- Parrot_pcc_set_continuation(interp, from_ctx, NULL);
-
- if (INTERP->code != seg)
- Parrot_switch_to_cs(INTERP, seg, 1);
-
- return next;
- }
-}
-
-
-/*
-
-=back
-
-=head1 HISTORY
-
-Initial revision by sean 2002/08/04.
-
-=cut
-
-*/
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
Modified: branches/ops_pct/src/pmc/role.pmc
==============================================================================
--- branches/ops_pct/src/pmc/role.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/role.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -50,9 +50,29 @@
#include "pmc/pmc_namespace.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void init_role_from_hash(PARROT_INTERP,
+ ARGIN(PMC *self),
+ ARGIN(PMC *info))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_init_role_from_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(self) \
+ , PARROT_ASSERT_ARG(info))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
/* Takes a hash and initializes the role based on it. */
-static void init_role_from_hash(PARROT_INTERP, PMC *self, PMC *info)
+static void
+init_role_from_hash(PARROT_INTERP, ARGIN(PMC *self), ARGIN(PMC *info))
{
+ ASSERT_ARGS(init_role_from_hash)
Parrot_Role_attributes * const role = PARROT_ROLE(self);
STRING * const ns_string = CONST_STRING(interp, "NameSpace");
STRING * const name_str = CONST_STRING(interp, "name");
@@ -127,13 +147,13 @@
* need to unset ourselves in the old namespace. */
if (!PMC_IS_NULL(old_ns) && role->_namespace != old_ns) {
STRING * const set_class_str = CONST_STRING(interp, "set_class");
- Parrot_PCCINVOKE(interp, old_ns, set_class_str, "P->", PMCNULL);
+ Parrot_pcc_invoke_method_from_c_args(interp, old_ns, set_class_str, "P->", PMCNULL);
}
/* Link namespace to this role, if there is one. */
if (!PMC_IS_NULL(role->_namespace)) {
STRING * const set_class_str = CONST_STRING(interp, "set_class");
- Parrot_PCCINVOKE(interp, role->_namespace, set_class_str, "P->", self);
+ Parrot_pcc_invoke_method_from_c_args(interp, role->_namespace, set_class_str, "P->", self);
}
/* Initialize roles, if we have any. */
@@ -143,7 +163,7 @@
PMC * const role_list = VTABLE_get_pmc_keyed_str(interp, info, roles_str);
const int role_count = VTABLE_elements(interp, role_list);
- for (i = 0; i < role_count; i++) {
+ for (i = 0; i < role_count; ++i) {
PMC * const cur_role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
VTABLE_add_role(interp, self, cur_role);
}
@@ -157,7 +177,7 @@
const int attrib_count = VTABLE_elements(interp, attrib_name_list);
- for (i = 0; i < attrib_count; i++) {
+ for (i = 0; i < attrib_count; ++i) {
STRING * const attrib_name = VTABLE_get_string_keyed_int(interp,
attrib_name_list, i);
VTABLE_add_attribute(interp, self, attrib_name, PMCNULL);
@@ -228,11 +248,11 @@
PObj_custom_mark_SET(SELF);
/* Set up the object. */
- role->name = CONST_STRING(interp, "");
+ role->name = CONST_STRING(INTERP, "");
role->_namespace = PMCNULL;
- role->roles = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- role->methods = Parrot_pmc_new(interp, enum_class_Hash);
- role->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
+ role->roles = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ role->methods = Parrot_pmc_new(INTERP, enum_class_Hash);
+ role->attrib_metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
}
VTABLE void init_pmc(PMC *init_data) {
@@ -240,7 +260,7 @@
SELF.init();
/* Initialize the role with the supplied data. */
- init_role_from_hash(interp, SELF, init_data);
+ init_role_from_hash(INTERP, SELF, init_data);
}
/*
@@ -256,11 +276,11 @@
VTABLE void mark() {
Parrot_Role_attributes * const role = PARROT_ROLE(SELF);
- Parrot_gc_mark_STRING_alive(interp, role->name);
- Parrot_gc_mark_PMC_alive(interp, role->_namespace);
- Parrot_gc_mark_PMC_alive(interp, role->roles);
- Parrot_gc_mark_PMC_alive(interp, role->methods);
- Parrot_gc_mark_PMC_alive(interp, role->attrib_metadata);
+ Parrot_gc_mark_STRING_alive(INTERP, role->name);
+ Parrot_gc_mark_PMC_alive(INTERP, role->_namespace);
+ Parrot_gc_mark_PMC_alive(INTERP, role->roles);
+ Parrot_gc_mark_PMC_alive(INTERP, role->methods);
+ Parrot_gc_mark_PMC_alive(INTERP, role->attrib_metadata);
}
/*
@@ -276,16 +296,16 @@
VTABLE void add_attribute(STRING *name, PMC *type) {
Parrot_Role_attributes * const role = PARROT_ROLE(SELF);
- PMC * const new_attribute = Parrot_pmc_new(interp, enum_class_Hash);
+ PMC * const new_attribute = Parrot_pmc_new(INTERP, enum_class_Hash);
/* Set name and type. */
- VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
+ VTABLE_set_string_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "name"), name);
if (!PMC_IS_NULL(type))
- VTABLE_set_pmc_keyed_str(interp, new_attribute, CONST_STRING(interp, "type"), type);
+ VTABLE_set_pmc_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "type"), type);
/* Enter the attribute in the attributes array. */
- VTABLE_set_pmc_keyed_str(interp, role->attrib_metadata,
+ VTABLE_set_pmc_keyed_str(INTERP, role->attrib_metadata,
name, new_attribute);
}
@@ -303,15 +323,15 @@
Parrot_Role_attributes * const role = PARROT_ROLE(SELF);
/* If we have already added a method with this name... */
- if (VTABLE_exists_keyed_str(interp, role->methods, name)) {
+ if (VTABLE_exists_keyed_str(INTERP, role->methods, name)) {
/* XXX Need to handle multi methods here. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
"Currently, adding multiple methods of the same name"
" is not supported.");
}
else {
/* Enter it into the table. */
- VTABLE_set_pmc_keyed_str(interp, role->methods, name, sub);
+ VTABLE_set_pmc_keyed_str(INTERP, role->methods, name, sub);
}
}
@@ -326,12 +346,12 @@
*/
VTABLE void remove_method(STRING *name) {
Parrot_Role_attributes * const role = PARROT_ROLE(SELF);
- if (VTABLE_exists_keyed_str(interp, role->methods, name))
- VTABLE_delete_keyed_str(interp, role->methods, name);
+ if (VTABLE_exists_keyed_str(INTERP, role->methods, name))
+ VTABLE_delete_keyed_str(INTERP, role->methods, name);
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"No method named '%S' to remove in role '%S'.",
- name, VTABLE_get_string(interp, SELF));
+ name, VTABLE_get_string(INTERP, SELF));
}
/*
@@ -349,7 +369,7 @@
Parrot_Role_attributes * const this_role = PARROT_ROLE(SELF);
/* Do the composition. */
- Parrot_ComposeRole(interp, role, PMCNULL, 0, PMCNULL, 0,
+ Parrot_ComposeRole(INTERP, role, PMCNULL, 0, PMCNULL, 0,
this_role->methods, this_role->roles);
}
@@ -387,25 +407,25 @@
/* What should we return? */
PMC *found;
- if (Parrot_str_equal(interp, what, CONST_STRING(interp, "name"))) {
- found = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, found, role->name);
+ if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "name"))) {
+ found = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, found, role->name);
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "namespace"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "namespace"))) {
/* Don't clone the namespace, as it's not part of our state. */
return role->_namespace;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "attributes"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "attributes"))) {
found = role->attrib_metadata;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "methods"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "methods"))) {
found = role->methods;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "roles"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "roles"))) {
found = role->roles;
}
else {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"Unknown introspection value '%S'", what);
}
@@ -414,16 +434,16 @@
if (found->vtable->base_type == enum_class_Hash) {
/* for Hash return values, create and return a shallow
* clone because the VTABLE_clone does a deep clone */
- PMC * const hash = Parrot_pmc_new(interp, enum_class_Hash);
- PMC * const iter = VTABLE_get_iter(interp, found);
- while (VTABLE_get_bool(interp, iter)) {
- STRING * key = VTABLE_shift_string(interp, iter);
- PMC * value = VTABLE_get_pmc_keyed_str(interp, found, key);
- VTABLE_set_pmc_keyed_str(interp, hash, key, value);
+ PMC * const hash = Parrot_pmc_new(INTERP, enum_class_Hash);
+ PMC * const iter = VTABLE_get_iter(INTERP, found);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ STRING * key = VTABLE_shift_string(INTERP, iter);
+ PMC * value = VTABLE_get_pmc_keyed_str(INTERP, found, key);
+ VTABLE_set_pmc_keyed_str(INTERP, hash, key, value);
}
return hash;
}
- return VTABLE_clone(interp, found);
+ return VTABLE_clone(INTERP, found);
}
@@ -441,28 +461,28 @@
VTABLE PMC *inspect() {
/* Create a hash, then use inspect_str to get all of the data to
* fill it up with. */
- PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
+ PMC * const metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
- STRING * const name = CONST_STRING(interp, "name");
- STRING * const _namespace = CONST_STRING(interp, "namespace");
- STRING * const attributes = CONST_STRING(interp, "attributes");
- STRING * const methods = CONST_STRING(interp, "methods");
- STRING * const roles = CONST_STRING(interp, "roles");
+ STRING * const name = CONST_STRING(INTERP, "name");
+ STRING * const _namespace = CONST_STRING(INTERP, "namespace");
+ STRING * const attributes = CONST_STRING(INTERP, "attributes");
+ STRING * const methods = CONST_STRING(INTERP, "methods");
+ STRING * const roles = CONST_STRING(INTERP, "roles");
- VTABLE_set_pmc_keyed_str(interp, metadata, name,
- VTABLE_inspect_str(interp, SELF, name));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, name,
+ VTABLE_inspect_str(INTERP, SELF, name));
- VTABLE_set_pmc_keyed_str(interp, metadata, _namespace,
- VTABLE_inspect_str(interp, SELF, _namespace));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, _namespace,
+ VTABLE_inspect_str(INTERP, SELF, _namespace));
- VTABLE_set_pmc_keyed_str(interp, metadata, attributes,
- VTABLE_inspect_str(interp, SELF, attributes));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, attributes,
+ VTABLE_inspect_str(INTERP, SELF, attributes));
- VTABLE_set_pmc_keyed_str(interp, metadata, methods,
- VTABLE_inspect_str(interp, SELF, methods));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, methods,
+ VTABLE_inspect_str(INTERP, SELF, methods));
- VTABLE_set_pmc_keyed_str(interp, metadata, roles,
- VTABLE_inspect_str(interp, SELF, roles));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, roles,
+ VTABLE_inspect_str(INTERP, SELF, roles));
return metadata;
}
@@ -485,17 +505,17 @@
* to retrieve a fully qualified list of names, then join the list
* with a semicolon.
*/
- PMC * const names = Parrot_ns_get_name(interp, _namespace);
+ PMC * const names = Parrot_ns_get_name(INTERP, _namespace);
if (!PMC_IS_NULL(names)) {
/* remove the HLL namespace name */
VTABLE_shift_string(INTERP, names);
- return Parrot_str_join(interp, CONST_STRING(interp, ";"), names);
+ return Parrot_str_join(INTERP, CONST_STRING(INTERP, ";"), names);
}
}
/* Otherwise, copy the stored string name of the class. */
- return Parrot_str_copy(interp, role->name);
+ return role->name;
}
/*
@@ -512,13 +532,13 @@
Parrot_Role_attributes * const role = PARROT_ROLE(SELF);
INTVAL i, count;
- if (Parrot_str_equal(interp, role->name, role_name))
+ if (Parrot_str_equal(INTERP, role->name, role_name))
return 1;
- count = VTABLE_elements(interp, role->roles);
- for (i = 0; i < count; i++) {
- PMC *cur_role = VTABLE_get_pmc_keyed_int(interp, role->roles, i);
- if (VTABLE_does(interp, cur_role, role_name))
+ count = VTABLE_elements(INTERP, role->roles);
+ for (i = 0; i < count; ++i) {
+ PMC *cur_role = VTABLE_get_pmc_keyed_int(INTERP, role->roles, i);
+ if (VTABLE_does(INTERP, cur_role, role_name))
return 1;
}
@@ -542,10 +562,10 @@
if (role == SELF)
return 1;
- count = VTABLE_elements(interp, this_role->roles);
- for (i = 0; i < count; i++) {
- PMC *cur_role = VTABLE_get_pmc_keyed_int(interp, this_role->roles, i);
- if (VTABLE_does_pmc(interp, cur_role, role))
+ count = VTABLE_elements(INTERP, this_role->roles);
+ for (i = 0; i < count; ++i) {
+ PMC *cur_role = VTABLE_get_pmc_keyed_int(INTERP, this_role->roles, i);
+ if (VTABLE_does_pmc(INTERP, cur_role, role))
return 1;
}
@@ -553,7 +573,7 @@
}
/*
- * Below here are non-vtable methods that eventually will go in a role
+ * Below here are methods that eventually will go in a role
* that is composed into here to optionally give a nice interface from
* PIR (ParrotRole isa Role does RoleMethods or something like this).
*/
@@ -583,9 +603,9 @@
if (got_name) {
/* We'll build a hash just containing the name, then give this to
* init_role_from_hash - saves some code duplication. */
- PMC *naming_hash = Parrot_pmc_new(interp, enum_class_Hash);
- VTABLE_set_string_keyed_str(interp, naming_hash, CONST_STRING(interp, "name"), name);
- init_role_from_hash(interp, SELF, naming_hash);
+ PMC *naming_hash = Parrot_pmc_new(INTERP, enum_class_Hash);
+ VTABLE_set_string_keyed_str(INTERP, naming_hash, CONST_STRING(INTERP, "name"), name);
+ init_role_from_hash(INTERP, SELF, naming_hash);
}
ret_name = role->name;
@@ -623,7 +643,7 @@
*/
METHOD attributes() {
- PMC *ret_attrib_metadata = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "attributes"));
+ PMC *ret_attrib_metadata = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "attributes"));
RETURN(PMC *ret_attrib_metadata);
}
@@ -641,7 +661,7 @@
*/
METHOD add_attribute(STRING *attribute_name,
PMC *attribute_type :optional, int got_type :opt_flag) {
- VTABLE_add_attribute(interp, SELF, attribute_name,
+ VTABLE_add_attribute(INTERP, SELF, attribute_name,
got_type ? attribute_type : PMCNULL);
}
@@ -656,7 +676,7 @@
*/
METHOD methods() {
- PMC *ret_methods = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "methods"));
+ PMC *ret_methods = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "methods"));
RETURN(PMC *ret_methods);
}
@@ -671,7 +691,7 @@
*/
METHOD add_method(STRING *name, PMC *sub) {
- VTABLE_add_method(interp, SELF, name, sub);
+ VTABLE_add_method(INTERP, SELF, name, sub);
}
/*
@@ -685,7 +705,7 @@
*/
METHOD remove_method(STRING *name)
{
- VTABLE_remove_method(interp, SELF, name);
+ VTABLE_remove_method(INTERP, SELF, name);
}
@@ -699,7 +719,7 @@
*/
METHOD roles() {
- PMC *ret_roles = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "roles"));
+ PMC *ret_roles = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "roles"));
RETURN(PMC *ret_roles);
}
@@ -727,12 +747,12 @@
STRING *s_name = NULL;
STRING *r_name = NULL;
- (STRING *s_name) = PCCINVOKE(interp, SELF, "name");
- (STRING *r_name) = PCCINVOKE(interp, role, "name");
+ (STRING *s_name) = PCCINVOKE(INTERP, SELF, "name");
+ (STRING *r_name) = PCCINVOKE(INTERP, role, "name");
UNUSED(s_name);
UNUSED(r_name);
- Parrot_ComposeRole(interp, role, exclude_method, got_exclude_method,
+ Parrot_ComposeRole(INTERP, role, exclude_method, got_exclude_method,
alias_method, got_alias_method,
role_info->methods, role_info->roles);
}
@@ -750,11 +770,11 @@
METHOD inspect(STRING *what :optional, int got_what :opt_flag) {
PMC *found;
- /* Just delegate to the appropriate vtable method. */
+ /* Just delegate to the appropriate vtable. */
if (got_what)
- found = VTABLE_inspect_str(interp, SELF, what);
+ found = VTABLE_inspect_str(INTERP, SELF, what);
else
- found = VTABLE_inspect(interp, SELF);
+ found = VTABLE_inspect(INTERP, SELF);
RETURN(PMC *found);
}
Modified: branches/ops_pct/src/pmc/scalar.pmc
==============================================================================
--- branches/ops_pct/src/pmc/scalar.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/scalar.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
#include "pmc/pmc_bigint.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass scalar {
/*
@@ -628,7 +632,7 @@
VTABLE PMC *concatenate(PMC *value, PMC *dest) {
STRING * const s = Parrot_str_concat(INTERP, SELF.get_string(),
- VTABLE_get_string(INTERP, value), 0);
+ VTABLE_get_string(INTERP, value));
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
@@ -638,7 +642,7 @@
VTABLE PMC *concatenate_str(STRING *value, PMC *dest) {
STRING * const s = Parrot_str_concat(INTERP,
- SELF.get_string(), value, 0);
+ SELF.get_string(), value);
dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
@@ -649,12 +653,12 @@
VTABLE void i_concatenate(PMC *value) {
STRING * const s = SELF.get_string();
STRING * const v = VTABLE_get_string(INTERP, value);
- SELF.set_string_native(Parrot_str_append(INTERP, s, v));
+ SELF.set_string_native(Parrot_str_concat(INTERP, s, v));
}
VTABLE void i_concatenate_str(STRING *value) {
STRING * const s = SELF.get_string();
- SELF.set_string_native(Parrot_str_append(INTERP, s, value));
+ SELF.set_string_native(Parrot_str_concat(INTERP, s, value));
}
/*
@@ -920,7 +924,7 @@
VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
return Parrot_str_substr(INTERP, VTABLE_get_string(INTERP, SELF),
- offset, length, NULL, 0);
+ offset, length);
}
/*
@@ -934,15 +938,12 @@
*/
VTABLE PMC *share_ro() {
PMC *ret = pt_shared_fixup(INTERP, SELF);
- PMC * const _true = Parrot_pmc_new(INTERP, enum_class_Integer);
-
- VTABLE_set_integer_native(INTERP, _true, 1);
+ PMC * const _true = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, 1);
/* first set readonly */
VTABLE_setprop(INTERP, ret, CONST_STRING(INTERP, "_ro"), _true);
/* We're sharing this, so make sure it has a PMC_sync */
- Parrot_gc_add_pmc_sync(INTERP, ret);
PObj_is_PMC_shared_SET(ret);
/* XXX FIXME workaround lack of metadata sharing*/
Modified: branches/ops_pct/src/pmc/scheduler.pmc
==============================================================================
--- branches/ops_pct/src/pmc/scheduler.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/scheduler.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -20,6 +20,10 @@
#include "parrot/scheduler_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Scheduler auto_attrs {
ATTR INTVAL id; /* The scheduler's ID. */
@@ -57,10 +61,10 @@
/* Set up the core struct. */
core_struct->id = 0;
core_struct->max_tid = 0;
- core_struct->task_list = Parrot_pmc_new(interp, enum_class_Hash);
- core_struct->task_index = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
- core_struct->wait_index = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- core_struct->handlers = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+ core_struct->task_list = Parrot_pmc_new(INTERP, enum_class_Hash);
+ core_struct->task_index = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
+ core_struct->wait_index = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+ core_struct->handlers = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
core_struct->messages = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
core_struct->interp = INTERP;
MUTEX_INIT(core_struct->msg_lock);
@@ -137,7 +141,7 @@
SCHEDULER_cache_valid_CLEAR(SELF);
if (task->vtable->base_type != enum_class_Exception)
- Parrot_cx_runloop_wake(core_struct->interp, SELF);
+ Parrot_cx_runloop_wake(core_struct->INTERP, SELF);
}
@@ -160,7 +164,7 @@
* deleted tasks. */
while (PMC_IS_NULL(task)
&& VTABLE_elements(INTERP, core_struct->task_index) > 0) {
- INTVAL tid = VTABLE_shift_integer(INTERP, core_struct->task_index);
+ const INTVAL tid = VTABLE_shift_integer(INTERP, core_struct->task_index);
if (tid > 0)
task = VTABLE_get_pmc_keyed_int(INTERP,
@@ -198,8 +202,9 @@
*/
VTABLE void delete_keyed_int(INTVAL key) {
- Parrot_Scheduler_attributes *core_struct = PARROT_SCHEDULER(SELF);
- STRING *task_id_str = Parrot_str_from_int(INTERP, key);
+ Parrot_Scheduler_attributes * const core_struct = PARROT_SCHEDULER(SELF);
+ STRING * const task_id_str = Parrot_str_from_int(INTERP, key);
+
VTABLE_delete_keyed_str(INTERP, core_struct->task_list, task_id_str);
SCHEDULER_cache_valid_CLEAR(SELF);
}
@@ -266,11 +271,11 @@
if (PARROT_SCHEDULER(SELF)) {
Parrot_Scheduler_attributes * const core_struct = PARROT_SCHEDULER(SELF);
- Parrot_gc_mark_PMC_alive(interp, core_struct->task_list);
- Parrot_gc_mark_PMC_alive(interp, core_struct->task_index);
- Parrot_gc_mark_PMC_alive(interp, core_struct->wait_index);
- Parrot_gc_mark_PMC_alive(interp, core_struct->handlers);
- Parrot_gc_mark_PMC_alive(interp, core_struct->messages);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->task_list);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->task_index);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->wait_index);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->handlers);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->messages);
}
}
@@ -401,8 +406,8 @@
METHOD delete_handler(STRING *type :optional, INTVAL have_type :opt_flag) {
PMC *handlers;
INTVAL elements, index;
- STRING *except_str = CONST_STRING(INTERP, "exception");
- STRING *event_str = CONST_STRING(INTERP, "event");
+ STRING * const except_str = CONST_STRING(INTERP, "exception");
+ STRING * const event_str = CONST_STRING(INTERP, "event");
GET_ATTR_handlers(INTERP, SELF, handlers);
elements = VTABLE_elements(INTERP, handlers);
@@ -412,7 +417,7 @@
/* Loop from newest handler to oldest handler. */
for (index = 0; index < elements; ++index) {
- PMC *handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
+ const PMC * const handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
if (!PMC_IS_NULL(handler)) {
if (Parrot_str_equal(INTERP, type, except_str)
&& handler->vtable->base_type == enum_class_ExceptionHandler) {
@@ -427,7 +432,7 @@
}
}
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"No handler to delete.");
}
@@ -444,35 +449,35 @@
*/
METHOD find_handler(PMC *task) {
- STRING * const handled_str = CONST_STRING(interp, "handled");
- STRING * const iter_str = CONST_STRING(interp, "handler_iter");
+ STRING * const handled_str = CONST_STRING(INTERP, "handled");
+ STRING * const iter_str = CONST_STRING(INTERP, "handler_iter");
PMC *iter;
/* Exceptions store the handler iterator for rethrow, other kinds of
* tasks don't (though they could). */
if (task->vtable->base_type == enum_class_Exception
- && VTABLE_get_integer_keyed_str(interp, task, handled_str) == -1) {
- iter = VTABLE_get_attr_str(interp, task, iter_str);
+ && VTABLE_get_integer_keyed_str(INTERP, task, handled_str) == -1) {
+ iter = VTABLE_get_attr_str(INTERP, task, iter_str);
}
else {
PMC *handlers;
- GET_ATTR_handlers(interp, SELF, handlers);
- iter = VTABLE_get_iter(interp, handlers);
+ GET_ATTR_handlers(INTERP, SELF, handlers);
+ iter = VTABLE_get_iter(INTERP, handlers);
if (task->vtable->base_type == enum_class_Exception)
- VTABLE_set_attr_str(interp, task, iter_str, iter);
+ VTABLE_set_attr_str(INTERP, task, iter_str, iter);
}
/* Loop from newest handler to oldest handler. */
- while (VTABLE_get_bool(interp, iter)) {
- PMC *handler = VTABLE_shift_pmc(INTERP, iter);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ PMC * const handler = VTABLE_shift_pmc(INTERP, iter);
INTVAL valid_handler = 0;
if (!PMC_IS_NULL(handler)) {
- (INTVAL valid_handler) = PCCINVOKE(INTERP, handler, "can_handle", PMC *task);
+ (const INTVAL valid_handler) = PCCINVOKE(INTERP, handler, "can_handle", PMC *task);
if (valid_handler) {
if (task->vtable->base_type == enum_class_Exception)
- VTABLE_set_integer_native(interp, handler, 1);
+ VTABLE_set_integer_native(INTERP, handler, 1);
RETURN(PMC *handler);
}
}
@@ -509,16 +514,16 @@
RETURN(INTVAL elements);
for (index = 0; index < elements; ++index) {
- PMC *handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
- STRING *exception = CONST_STRING(INTERP, "exception");
- STRING *event = CONST_STRING(INTERP, "event");
+ const PMC * const handler = VTABLE_get_pmc_keyed_int(INTERP, handlers, index);
+ STRING * const exception = CONST_STRING(INTERP, "exception");
+ STRING * const event = CONST_STRING(INTERP, "event");
if (!PMC_IS_NULL(handler)) {
if ((Parrot_str_equal(INTERP, type, exception)
&& handler->vtable->base_type == enum_class_ExceptionHandler)
|| (Parrot_str_equal(INTERP, type, event)
&& handler->vtable->base_type == enum_class_EventHandler))
- count++;
+ ++count;
}
}
Modified: branches/ops_pct/src/pmc/schedulermessage.pmc
==============================================================================
--- branches/ops_pct/src/pmc/schedulermessage.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/schedulermessage.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -20,6 +20,10 @@
#include "parrot/scheduler_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass SchedulerMessage auto_attrs {
ATTR INTVAL id; /* The message's ID. */
ATTR STRING *type; /* The message's type. */
@@ -110,7 +114,10 @@
*/
VTABLE INTVAL get_integer() {
- Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ const Parrot_SchedulerMessage_attributes * const
+ core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ UNUSED(INTERP);
+
return core_struct->id;
}
@@ -125,7 +132,8 @@
*/
VTABLE void set_integer_native(INTVAL value) {
- Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ Parrot_SchedulerMessage_attributes * const core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ UNUSED(INTERP);
core_struct->id = value;
}
@@ -141,7 +149,9 @@
*/
STRING * get_string() {
- Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ const Parrot_SchedulerMessage_attributes * const core_struct =
+ PARROT_SCHEDULERMESSAGE(SELF);
+ UNUSED(INTERP);
return core_struct->type;
}
@@ -156,7 +166,8 @@
*/
VTABLE void set_string_native(STRING *value) {
- Parrot_SchedulerMessage_attributes * core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ Parrot_SchedulerMessage_attributes * const core_struct = PARROT_SCHEDULERMESSAGE(SELF);
+ UNUSED(INTERP);
core_struct->type = value;
}
@@ -199,8 +210,8 @@
Parrot_SchedulerMessage_attributes * const core_struct =
PARROT_SCHEDULERMESSAGE(SELF);
- Parrot_gc_mark_STRING_alive(interp, core_struct->type);
- Parrot_gc_mark_PMC_alive(interp, core_struct->data);
+ Parrot_gc_mark_STRING_alive(INTERP, core_struct->type);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->data);
}
}
Modified: branches/ops_pct/src/pmc/sockaddr.pmc
==============================================================================
--- branches/ops_pct/src/pmc/sockaddr.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/sockaddr.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -29,6 +29,10 @@
}
#endif
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Sockaddr auto_attrs {
ATTR void *pointer; /* The stored pointer. */
Modified: branches/ops_pct/src/pmc/socket.pmc
==============================================================================
--- branches/ops_pct/src/pmc/socket.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/socket.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
#include "../src/io/io_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Socket extends Handle provides socket auto_attrs {
ATTR PMC *local; /* Local addr */
ATTR PMC *remote; /* Remote addr */
@@ -59,8 +63,8 @@
Parrot_Socket_attributes * const old_struct = PARROT_SOCKET(SELF);
Parrot_Socket_attributes * const data_struct = PARROT_SOCKET(copy);
- data_struct->local = VTABLE_clone(interp, old_struct->local);
- data_struct->remote = VTABLE_clone(interp, old_struct->remote);
+ data_struct->local = VTABLE_clone(INTERP, old_struct->local);
+ data_struct->remote = VTABLE_clone(INTERP, old_struct->remote);
return SELF;
}
@@ -79,8 +83,8 @@
Parrot_Socket_attributes * const data = PARROT_SOCKET(SELF);
if (data) {
- Parrot_gc_mark_PMC_alive(interp, data->local);
- Parrot_gc_mark_PMC_alive(interp, data->remote);
+ Parrot_gc_mark_PMC_alive(INTERP, data->local);
+ Parrot_gc_mark_PMC_alive(INTERP, data->remote);
}
}
/*
@@ -97,7 +101,7 @@
Parrot_Socket_attributes *data_struct = PARROT_SOCKET(SELF);
if (data_struct->os_handle != PIO_INVALID_HANDLE)
- Parrot_io_close_piohandle(interp, data_struct->os_handle);
+ Parrot_io_close_piohandle(INTERP, data_struct->os_handle);
data_struct->os_handle = PIO_INVALID_HANDLE;
}
}
@@ -132,7 +136,7 @@
METHOD socket(INTVAL fam, INTVAL type, INTVAL proto) {
- if (Parrot_io_socket(interp, SELF, fam, type, proto) < 0)
+ if (Parrot_io_socket(INTERP, SELF, fam, type, proto) < 0)
RETURN(PMC * PMCNULL);
RETURN(PMC * SELF);
}
@@ -167,7 +171,7 @@
*/
METHOD sockaddr(STRING * address, INTVAL port) {
- PMC * res = Parrot_io_sockaddr_in(interp, address, port);
+ PMC * res = Parrot_io_sockaddr_in(INTERP, address, port);
RETURN(PMC * res);
}
@@ -209,7 +213,7 @@
Parrot_Socket_attributes *data_struct = PARROT_SOCKET(SELF);
if (data_struct->os_handle != PIO_INVALID_HANDLE)
- result = Parrot_io_close_piohandle(interp, data_struct->os_handle);
+ result = Parrot_io_close_piohandle(INTERP, data_struct->os_handle);
data_struct->os_handle = PIO_INVALID_HANDLE;
}
RETURN(INTVAL result);
Modified: branches/ops_pct/src/pmc/string.pmc
==============================================================================
--- branches/ops_pct/src/pmc/string.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/string.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass String extends scalar provides string provides scalar auto_attrs {
ATTR STRING * str_val;
@@ -34,7 +38,7 @@
*/
VTABLE void init() {
- STRING *str_val = STRINGNULL;
+ STRING * const str_val = STRINGNULL;
SET_ATTR_str_val(INTERP, SELF, str_val);
PObj_custom_mark_SET(SELF);
@@ -104,7 +108,7 @@
VTABLE FLOATVAL get_number() {
STRING *str_val;
- GET_ATTR_str_val(interp, SELF, str_val);
+ GET_ATTR_str_val(INTERP, SELF, str_val);
return Parrot_str_to_num(INTERP, str_val);
}
@@ -121,8 +125,7 @@
VTABLE STRING *get_string() {
STRING *str_val;
GET_ATTR_str_val(INTERP, SELF, str_val);
-
- return str_val ? Parrot_str_copy(INTERP, str_val) : NULL;
+ return str_val;
}
/*
@@ -187,7 +190,7 @@
*/
VTABLE void set_string_native(STRING *value) {
- if (!value)
+ if (value == NULL)
value = STRINGNULL;
/* Only allow constant PMCs to embed constant strings */
@@ -213,12 +216,7 @@
*/
VTABLE void assign_string_native(STRING *value) {
- if (!STRING_IS_NULL(value)) {
- SET_ATTR_str_val(INTERP, SELF,
- Parrot_str_set(INTERP, SELF.get_string(), value));
- }
- else
- SET_ATTR_str_val(INTERP, SELF, NULL);
+ SET_ATTR_str_val(INTERP, SELF, value);
}
/*
@@ -371,7 +369,7 @@
VTABLE void substr(INTVAL offset, INTVAL length, PMC *dest) {
STRING *str_val, *s2;
GET_ATTR_str_val(INTERP, SELF, str_val);
- s2 = Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
+ s2 = Parrot_str_substr(INTERP, str_val, offset, length);
VTABLE_set_string_native(INTERP, dest, s2);
}
@@ -388,7 +386,7 @@
VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
STRING *str_val;
GET_ATTR_str_val(INTERP, SELF, str_val);
- return Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
+ return Parrot_str_substr(INTERP, str_val, offset, length);
}
/*
@@ -443,7 +441,7 @@
VTABLE STRING *get_string_keyed_int(INTVAL pos) {
STRING *str_val;
GET_ATTR_str_val(INTERP, SELF, str_val);
- return Parrot_str_substr(INTERP, str_val, pos, 1, NULL, 0);
+ return Parrot_str_substr(INTERP, str_val, pos, 1);
}
VTABLE INTVAL get_integer_keyed(PMC *key) {
@@ -474,7 +472,8 @@
STRING *str_val;
const INTVAL len = Parrot_str_byte_length(INTERP, value);
GET_ATTR_str_val(INTERP, SELF, str_val);
- Parrot_str_replace(INTERP, str_val, pos, len, value, &str_val);
+ str_val = Parrot_str_replace(INTERP, str_val, pos, len, value);
+ SET_ATTR_str_val(INTERP, SELF, str_val);
}
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
@@ -485,7 +484,8 @@
STRING *str_val;
STRING * const c = string_chr(INTERP, (UINTVAL) value);
GET_ATTR_str_val(INTERP, SELF, str_val);
- Parrot_str_replace(INTERP, str_val, pos, 1, c, &str_val);
+ str_val = Parrot_str_replace(INTERP, str_val, pos, 1, c);
+ SET_ATTR_str_val(INTERP, SELF, str_val);
}
VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
@@ -508,11 +508,11 @@
METHOD replace(STRING *orig, STRING *_new) {
const INTVAL old_len = Parrot_str_byte_length(INTERP, orig);
const INTVAL new_len = Parrot_str_byte_length(INTERP, _new);
- STRING * const s = VTABLE_get_string(INTERP, SELF);
+ STRING * s = VTABLE_get_string(INTERP, SELF);
INTVAL i = 0;
while (-1 != (i = Parrot_str_find_index(INTERP, s, orig, i))) {
- (void)Parrot_str_replace(INTERP, s, i, old_len, _new, NULL);
+ s = Parrot_str_replace(INTERP, s, i, old_len, _new);
i += new_len;
}
@@ -536,12 +536,12 @@
*/
METHOD to_int(INTVAL base) {
- PMC *result = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp,
+ PMC * const result = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
enum_class_Integer));
/* TODO verify encoding */
const STRING *me = VTABLE_get_string(INTERP, SELF);
- char *str = Parrot_str_to_cstring(INTERP, me);
+ char * const str = Parrot_str_to_cstring(INTERP, me);
UINTVAL i = 0;
size_t j = 0;
size_t len = strlen(str);
@@ -567,11 +567,11 @@
break;
i = i * base + dig;
- j++;
+ ++j;
}
if (j < len) {
- char ch = str[j];
+ const char ch = str[j];
Parrot_str_free_cstring(str);
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
"invalid conversion to int - bad char %c", ch);
@@ -690,16 +690,16 @@
INTVAL *tr_data;
INTVAL i;
- const INTVAL len = Parrot_str_byte_length(interp, src);
+ const INTVAL len = Parrot_str_byte_length(INTERP, src);
if (!len)
RETURN(void);
if (src->charset != Parrot_ascii_charset_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_ENCODING,
"Can't translate non-ascii");
- p = (unsigned char *)Buffer_bufstart(src);
+ p = (unsigned char *)(src->strstart);
/* TODO verify trans table */
GETATTR_FixedIntegerArray_int_array(INTERP, table, tr_data);
@@ -713,38 +713,6 @@
/*
-=item C<void reverse(STRING *src)>
-
-Reverse the ascii STRING C<src> in place.
-
-=cut
-
-*/
-
- METHOD reverse(STRING *src) {
- INTVAL i;
- unsigned char *p;
- INTVAL len = Parrot_str_byte_length(interp, src);
-
- if (!len)
- RETURN(void);
-
- if (src->charset != Parrot_ascii_charset_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
- "Can't reverse non-ascii");
-
- p = (unsigned char *)Buffer_bufstart(src);
-
- for (i = 0, --len; i < len; ++i, --len) {
- const unsigned char ch = p[len];
-
- p[len] = p[i];
- p[i] = ch;
- }
- }
-
-/*
-
=item C<INTEGER is_integer(STRING *src)>
Checks if the ascii STRING C<str> is just an integer.
@@ -756,13 +724,13 @@
METHOD is_integer(STRING *src) {
INTVAL i;
unsigned char *p;
- const INTVAL len = Parrot_str_byte_length(interp, src);
+ const INTVAL len = Parrot_str_byte_length(INTERP, src);
if (!len)
RETURN(INTVAL 0);
if (src->charset != Parrot_ascii_charset_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_ENCODING,
"Can't is_integer non-ascii");
i = 0;
@@ -814,7 +782,7 @@
if (start < 0)
RETURN(INTVAL res);
- len = Parrot_str_byte_length(interp, src);
+ len = Parrot_str_byte_length(INTERP, src);
if (!len)
RETURN(INTVAL res);
@@ -822,7 +790,7 @@
if (start >= (INTVAL)len)
RETURN(INTVAL res);
- if (!Parrot_str_byte_length(interp, substring))
+ if (!Parrot_str_byte_length(INTERP, substring))
RETURN(INTVAL res);
res = CHARSET_RINDEX(INTERP, src, substring, (UINTVAL)start);
Modified: branches/ops_pct/src/pmc/stringhandle.pmc
==============================================================================
--- branches/ops_pct/src/pmc/stringhandle.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/stringhandle.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2008, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -17,8 +17,18 @@
#include "../src/io/io_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
PARROT_INLINE
-static int encoding_is_utf8(PARROT_INTERP, ARGIN_NULLOK(STRING *s));
+static int encoding_is_utf8(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_encoding_is_utf8 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
/*
@@ -26,7 +36,7 @@
=over 4
-=item C<static int encoding_is_utf8()>
+=item C<static int encoding_is_utf8(PARROT_INTERP, const STRING *s)>
Helper function for internal usage. Return 1 if the string argument is
not null and has utf8 encoding, 0 otherwise.
@@ -38,8 +48,10 @@
*/
PARROT_INLINE
-static int encoding_is_utf8(PARROT_INTERP, ARGIN_NULLOK(STRING *s))
+static int
+encoding_is_utf8(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
+ ASSERT_ARGS(encoding_is_utf8)
if (STRING_IS_NULL(s))
return 0;
else
@@ -69,7 +81,7 @@
*/
VTABLE void init() {
- Parrot_StringHandle_attributes *data_struct =
+ Parrot_StringHandle_attributes * const data_struct =
(Parrot_StringHandle_attributes *) PMC_data(SELF);
data_struct->flags = 0;
@@ -98,11 +110,11 @@
Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(copy);
if (old_struct->stringhandle != NULL)
- data_struct->stringhandle = Parrot_str_copy(INTERP, old_struct->stringhandle);
+ data_struct->stringhandle = old_struct->stringhandle;
if (old_struct->mode != NULL)
- data_struct->mode = Parrot_str_copy(INTERP, old_struct->mode);
+ data_struct->mode = old_struct->mode;
if (old_struct->encoding != NULL)
- data_struct->encoding = Parrot_str_copy(INTERP, old_struct->encoding);
+ data_struct->encoding = old_struct->encoding;
data_struct->flags = old_struct->flags;
return copy;
@@ -120,10 +132,10 @@
VTABLE void mark() {
Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(SELF);
- Parrot_gc_mark_STRING_alive(interp, data_struct->stringhandle);
- Parrot_gc_mark_STRING_alive(interp, data_struct->mode);
- Parrot_gc_mark_STRING_alive(interp, data_struct->encoding);
- Parrot_gc_mark_STRING_alive(interp, data_struct->filename);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->stringhandle);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->mode);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->encoding);
+ Parrot_gc_mark_STRING_alive(INTERP, data_struct->filename);
}
/*
@@ -170,10 +182,10 @@
INTVAL flags;
if (got_mode && !STRING_IS_NULL(mode))
- SET_ATTR_mode(INTERP, SELF, Parrot_str_copy(INTERP, mode));
+ SET_ATTR_mode(INTERP, SELF, mode);
if (got_filename && !STRING_IS_NULL(filename))
- SET_ATTR_filename(INTERP, SELF, Parrot_str_copy(INTERP, filename));
+ SET_ATTR_filename(INTERP, SELF, filename);
/* If StringHandle hasn't already been initialized, create a new string. */
@@ -243,8 +255,7 @@
*/
METHOD is_closed() {
- INTVAL status;
- status = Parrot_io_is_closed(INTERP, SELF);
+ const INTVAL status = Parrot_io_is_closed(INTERP, SELF);
RETURN(INTVAL status);
}
@@ -260,8 +271,7 @@
*/
METHOD read(INTVAL length) {
- STRING *string_result;
- string_result = Parrot_io_reads(INTERP, SELF, length);
+ STRING * const string_result = Parrot_io_reads(INTERP, SELF, length);
RETURN(STRING *string_result);
}
@@ -277,8 +287,7 @@
*/
METHOD readline() {
- STRING *string_result;
- string_result = Parrot_io_readline(INTERP, SELF);
+ STRING * const string_result = Parrot_io_readline(INTERP, SELF);
RETURN(STRING *string_result);
}
@@ -305,8 +314,6 @@
else
string_result = Parrot_str_new_constant(INTERP, "");
}
- else
- string_result = Parrot_str_copy(INTERP, string_result);
RETURN(STRING *string_result);
}
@@ -339,7 +346,7 @@
METHOD print(PMC *to_print) {
STRING * const string_to_print = VTABLE_get_string(INTERP, to_print);
- Parrot_io_putps(interp, SELF, string_to_print);
+ Parrot_io_putps(INTERP, SELF, string_to_print);
}
/*
@@ -358,19 +365,19 @@
GET_ATTR_stringhandle(INTERP, SELF, old_string);
if (STRING_IS_NULL(old_string))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot write to a closed filehandle");
GET_ATTR_flags(INTERP, SELF, flags);
if (!(flags & PIO_F_WRITE))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PIO_ERROR,
+ Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR,
"Cannot write to a filehandle not opened for write");
- new_string = Parrot_str_append(interp, old_string, to_print);
+ new_string = Parrot_str_concat(INTERP, old_string, to_print);
SET_ATTR_stringhandle(INTERP, SELF, new_string);
- status = Parrot_str_byte_length(interp, new_string);
+ status = Parrot_str_byte_length(INTERP, new_string);
RETURN(INTVAL status);
}
@@ -435,7 +442,7 @@
if (STRING_IS_NULL(stringhandle))
RETURN(INTVAL 0);
- buffer_size = Parrot_str_byte_length(interp, stringhandle);
+ buffer_size = Parrot_str_byte_length(INTERP, stringhandle);
RETURN(INTVAL buffer_size);
@@ -452,13 +459,9 @@
*/
METHOD mode() {
- STRING *mode, *mode_copy;
-
+ STRING *mode;
GET_ATTR_mode(INTERP, SELF, mode);
- mode_copy = Parrot_str_copy(INTERP, mode);
-
- RETURN(STRING *mode_copy);
-
+ RETURN(STRING *mode);
}
/*
@@ -474,21 +477,14 @@
METHOD encoding(STRING *new_encoding :optional, INTVAL got_encoding :opt_flag) {
STRING *encoding;
- STRING *encoding_copy = NULL;
if (got_encoding) {
- if (!STRING_IS_NULL(new_encoding))
- encoding_copy = Parrot_str_copy(INTERP, new_encoding);
- SET_ATTR_encoding(INTERP, SELF, encoding_copy);
+ SET_ATTR_encoding(INTERP, SELF, new_encoding);
RETURN(STRING *new_encoding);
}
GET_ATTR_encoding(INTERP, SELF, encoding);
- if (!STRING_IS_NULL(encoding))
- encoding_copy = Parrot_str_copy(INTERP, encoding);
-
- RETURN(STRING *encoding_copy);
-
+ RETURN(STRING *encoding);
}
/*
@@ -527,6 +523,7 @@
*/
METHOD get_fd() {
+ UNUSED(INTERP);
RETURN(INTVAL -1);
}
Modified: branches/ops_pct/src/pmc/stringiterator.pmc
==============================================================================
--- branches/ops_pct/src/pmc/stringiterator.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/stringiterator.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -22,6 +22,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass StringIterator auto_attrs extends Iterator {
ATTR PMC *string; /* String to iterate over */
ATTR INTVAL pos; /* Current position of iterator for forward iterator */
Modified: branches/ops_pct/src/pmc/sub.pmc
==============================================================================
--- branches/ops_pct/src/pmc/sub.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/sub.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -21,9 +21,22 @@
#include "parrot/oplib/ops.h"
#include "sub.str"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void print_sub_name(PARROT_INTERP, ARGIN_NULLOK(PMC *sub))
+ __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_print_sub_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
static void
print_sub_name(PARROT_INTERP, ARGIN_NULLOK(PMC *sub))
{
+ ASSERT_ARGS(print_sub_name)
Interp * const tracer = (interp->pdb && interp->pdb->debugger)
? interp->pdb->debugger
: interp;
@@ -174,7 +187,7 @@
field = CONST_STRING(INTERP, "n_regs_used");
if (VTABLE_exists_keyed_str(INTERP, init, field)) {
- PMC *tmp = VTABLE_get_pmc_keyed_str(INTERP, init, field);
+ PMC * const tmp = VTABLE_get_pmc_keyed_str(INTERP, init, field);
INTVAL i;
for (i = 0; i < 4; ++i)
attrs->n_regs_used[i] = VTABLE_get_integer_keyed_int(INTERP, tmp, i);
@@ -182,7 +195,7 @@
field = CONST_STRING(INTERP, "arg_info");
if (VTABLE_exists_keyed_str(INTERP, init, field)) {
- PMC *tmp = VTABLE_get_pmc_keyed_str(INTERP, init, field);
+ PMC * const tmp = VTABLE_get_pmc_keyed_str(INTERP, init, field);
/* Allocate structure to store argument information in. */
attrs->arg_info = mem_gc_allocate_zeroed_typed(INTERP,
Parrot_sub_arginfo);
@@ -217,7 +230,7 @@
*/
VTABLE void destroy() {
- Parrot_Sub_attributes *sub = PARROT_SUB(SELF);
+ Parrot_Sub_attributes * const sub = PARROT_SUB(SELF);
if (sub && sub->arg_info)
mem_gc_free(INTERP, sub->arg_info);
@@ -239,20 +252,14 @@
*/
VTABLE STRING *get_string() {
- Parrot_Sub_attributes *sub;
- PMC_get_sub(INTERP, SELF, sub);
-
- if (sub->name)
- return Parrot_str_copy(INTERP, sub->name);
-
- return NULL;
+ STRING *name;
+ GET_ATTR_name(INTERP, SELF, name);
+ return name;
}
VTABLE void set_string_native(STRING *subname) {
- Parrot_Sub_attributes *sub;
- PMC_get_sub(INTERP, SELF, sub);
- sub->name = Parrot_str_copy(INTERP, subname);
+ SET_ATTR_name(INTERP, SELF, subname);
}
@@ -345,8 +352,9 @@
*/
VTABLE opcode_t *invoke(void *next) {
- PMC *caller_ctx = CURRENT_CONTEXT(interp);
+ PMC * const caller_ctx = CURRENT_CONTEXT(INTERP);
PMC *ccont = INTERP->current_cont;
+ PMC *object;
/* plain subroutine call
* create new context, place it in interpreter */
@@ -384,8 +392,10 @@
pc = sub->seg->base.data + sub->start_offs;
INTERP->current_cont = NULL;
- if (ccont == NEED_CONTINUATION)
- ccont = new_ret_continuation_pmc(interp, (opcode_t *)next);
+ if (ccont == NEED_CONTINUATION) {
+ ccont = pmc_new(INTERP, enum_class_Continuation);
+ VTABLE_set_pointer(INTERP, ccont, next);
+ }
PARROT_ASSERT(!PMC_IS_NULL(ccont));
@@ -395,11 +405,14 @@
CURRENT_CONTEXT(INTERP) = context;
Parrot_pcc_set_caller_ctx(INTERP, context, caller_ctx);
Parrot_pcc_allocate_registers(INTERP, context, sub->n_regs_used);
+ /* Preserve object */
+ object = Parrot_pcc_get_object(INTERP, context);
Parrot_pcc_init_context(INTERP, context, caller_ctx);
+ Parrot_pcc_set_object(INTERP, context, object);
- 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_sub(INTERP, context, SELF);
+ Parrot_pcc_set_continuation(INTERP, context, ccont);
+ Parrot_pcc_set_constants(INTERP, context, sub->seg->const_table->constants);
/* check recursion/call depth */
if (Parrot_pcc_inc_recursion_depth(INTERP, context) > INTERP->recursion_limit)
@@ -410,17 +423,9 @@
PARROT_CONTINUATION(ccont)->from_ctx = context;
/* if this is an outer sub, then we need to set sub->ctx
- * to the new context (refcounted) and convert the
- * retcontinuation to a normal continuation. */
+ * to the new context (refcounted) */
if (PObj_get_FLAGS(SELF) & SUB_FLAG_IS_OUTER) {
sub->ctx = context;
- /* convert retcontinuation to a continuation */
- ccont->vtable = interp->vtables[enum_class_Continuation];
- }
-
- if (!PMC_IS_NULL(INTERP->current_object)) {
- Parrot_pcc_set_object(interp, context, INTERP->current_object);
- INTERP->current_object = NULL;
}
/* create pad if needed
@@ -428,26 +433,26 @@
* and factor out common code with coroutine pmc
*/
if (!PMC_IS_NULL(sub->lex_info)) {
- Parrot_pcc_set_lex_pad(interp, context, Parrot_pmc_new_init(INTERP,
- Parrot_get_ctx_HLL_type(interp, enum_class_LexPad),
+ Parrot_pcc_set_lex_pad(INTERP, context, Parrot_pmc_new_init(INTERP,
+ Parrot_get_ctx_HLL_type(INTERP, enum_class_LexPad),
sub->lex_info));
- VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(interp, context), context);
+ VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(INTERP, context), context);
}
/* set outer context */
if (!PMC_IS_NULL(sub->outer_ctx))
- Parrot_pcc_set_outer_ctx(interp, context, sub->outer_ctx);
+ Parrot_pcc_set_outer_ctx(INTERP, context, sub->outer_ctx);
else {
/* autoclose */
PMC *c = context;
- PMC *outer_c = Parrot_pcc_get_outer_ctx(interp, c);
+ PMC *outer_c = Parrot_pcc_get_outer_ctx(INTERP, c);
for (c = context; PMC_IS_NULL(outer_c); c = outer_c) {
PMC *outer_pmc;
Parrot_Sub_attributes *current_sub, *outer_sub;
- PMC_get_sub(INTERP, Parrot_pcc_get_sub(interp, c), current_sub);
+ PMC_get_sub(INTERP, Parrot_pcc_get_sub(INTERP, c), current_sub);
outer_pmc = current_sub->outer_sub;
if (PMC_IS_NULL(outer_pmc))
@@ -458,26 +463,26 @@
if (PMC_IS_NULL(outer_sub->ctx)) {
PMC * const dummy = Parrot_alloc_context(INTERP,
outer_sub->n_regs_used, NULL);
- Parrot_pcc_set_sub(interp, dummy, outer_pmc);
+ Parrot_pcc_set_sub(INTERP, dummy, outer_pmc);
if (!PMC_IS_NULL(outer_sub->lex_info)) {
- Parrot_pcc_set_lex_pad(interp, dummy,
+ Parrot_pcc_set_lex_pad(INTERP, dummy,
Parrot_pmc_new_init(INTERP,
- Parrot_get_ctx_HLL_type(interp,
+ Parrot_get_ctx_HLL_type(INTERP,
enum_class_LexPad), outer_sub->lex_info));
VTABLE_set_pointer(INTERP,
- Parrot_pcc_get_lex_pad(interp, dummy), dummy);
+ Parrot_pcc_get_lex_pad(INTERP, dummy), dummy);
}
if (!PMC_IS_NULL(outer_sub->outer_ctx))
- Parrot_pcc_set_outer_ctx(interp, dummy,
+ Parrot_pcc_set_outer_ctx(INTERP, dummy,
outer_sub->outer_ctx);
outer_sub->ctx = dummy;
}
- Parrot_pcc_set_outer_ctx(interp, c, outer_sub->ctx);
+ Parrot_pcc_set_outer_ctx(INTERP, c, outer_sub->ctx);
outer_c = outer_sub->ctx;
}
}
@@ -486,20 +491,6 @@
if (INTERP->code != sub->seg)
Parrot_switch_to_cs(INTERP, sub->seg, 1);
- if (PObj_get_FLAGS(ccont) & SUB_FLAG_TAILCALL) {
- if (!(*pc == PARROT_OP_get_params_pc
- || (*pc == PARROT_OP_push_eh_ic
- && pc[2] == PARROT_OP_get_params_pc))) {
-
- /* TODO keep it or resize it */
- Parrot_pcc_dec_recursion_depth(INTERP, context);
-
- PObj_get_FLAGS(ccont) &= ~SUB_FLAG_TAILCALL;
- Parrot_pcc_set_caller_ctx(interp, context,
- Parrot_pcc_get_caller_ctx(interp, caller_ctx));
- }
- }
-
return pc;
}
@@ -530,9 +521,6 @@
/* first set the sub struct, Parrot_str_copy may cause GC */
*sub = *dest_sub;
- if (sub->name)
- sub->name = Parrot_str_copy(INTERP, sub->name);
-
/* Be sure not to share arg_info. */
dest_sub->arg_info = NULL;
@@ -565,10 +553,6 @@
/* copy the sub struct */
memmove(my_sub, other_sub, sizeof (Parrot_Sub_attributes));
-
- /* copy the name so it's a different string in memory */
- if (my_sub->name)
- my_sub->name = Parrot_str_copy(INTERP, my_sub->name);
}
else
Parrot_ex_throw_from_c_args(INTERP, NULL,
@@ -598,10 +582,10 @@
Parrot_gc_mark_STRING_alive(INTERP, sub->method_name);
Parrot_gc_mark_STRING_alive(INTERP, sub->ns_entry_name);
- Parrot_gc_mark_PMC_alive(interp, sub->ctx);
+ Parrot_gc_mark_PMC_alive(INTERP, sub->ctx);
Parrot_gc_mark_PMC_alive(INTERP, sub->eval_pmc);
Parrot_gc_mark_PMC_alive(INTERP, sub->lex_info);
- Parrot_gc_mark_PMC_alive(interp, sub->outer_ctx);
+ Parrot_gc_mark_PMC_alive(INTERP, sub->outer_ctx);
Parrot_gc_mark_PMC_alive(INTERP, sub->outer_sub);
Parrot_gc_mark_PMC_alive(INTERP, sub->namespace_name);
Parrot_gc_mark_PMC_alive(INTERP, sub->multi_signature);
@@ -691,7 +675,7 @@
VTABLE_push_integer(INTERP, info, (INTVAL) sub->start_offs);
VTABLE_push_integer(INTERP, info, (INTVAL) sub->end_offs);
VTABLE_push_integer(INTERP, info,
- (INTVAL)(PObj_get_FLAGS(pmc) & SUB_FLAG_PF_MASK));
+ (INTVAL)(PObj_get_FLAGS(SELF) & SUB_FLAG_PF_MASK));
VTABLE_push_string(INTERP, info, sub->name);
@@ -776,31 +760,31 @@
{
/* Create a hash, then use inspect_str to get all of its data */
- PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
- STRING * const pos_required_str = CONST_STRING(interp, "pos_required");
- STRING * const pos_optional_str = CONST_STRING(interp, "pos_optional");
- STRING * const named_required_str = CONST_STRING(interp, "named_required");
- STRING * const named_optional_str = CONST_STRING(interp, "named_optional");
- STRING * const pos_slurpy_str = CONST_STRING(interp, "pos_slurpy");
- STRING * const named_slurpy_str = CONST_STRING(interp, "named_slurpy");
-
- VTABLE_set_pmc_keyed_str(interp, metadata, pos_required_str,
- VTABLE_inspect_str(interp, SELF, pos_required_str));
-
- VTABLE_set_pmc_keyed_str(interp, metadata, pos_optional_str,
- VTABLE_inspect_str(interp, SELF, pos_optional_str));
-
- VTABLE_set_pmc_keyed_str(interp, metadata, named_required_str,
- VTABLE_inspect_str(interp, SELF, named_required_str));
+ PMC * const metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
+ STRING * const pos_required_str = CONST_STRING(INTERP, "pos_required");
+ STRING * const pos_optional_str = CONST_STRING(INTERP, "pos_optional");
+ STRING * const named_required_str = CONST_STRING(INTERP, "named_required");
+ STRING * const named_optional_str = CONST_STRING(INTERP, "named_optional");
+ STRING * const pos_slurpy_str = CONST_STRING(INTERP, "pos_slurpy");
+ STRING * const named_slurpy_str = CONST_STRING(INTERP, "named_slurpy");
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, pos_required_str,
+ VTABLE_inspect_str(INTERP, SELF, pos_required_str));
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, pos_optional_str,
+ VTABLE_inspect_str(INTERP, SELF, pos_optional_str));
+
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, named_required_str,
+ VTABLE_inspect_str(INTERP, SELF, named_required_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, named_optional_str,
- VTABLE_inspect_str(interp, SELF, named_optional_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, named_optional_str,
+ VTABLE_inspect_str(INTERP, SELF, named_optional_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, pos_slurpy_str,
- VTABLE_inspect_str(interp, SELF, pos_slurpy_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, pos_slurpy_str,
+ VTABLE_inspect_str(INTERP, SELF, pos_slurpy_str));
- VTABLE_set_pmc_keyed_str(interp, metadata, named_slurpy_str,
- VTABLE_inspect_str(interp, SELF, named_slurpy_str));
+ VTABLE_set_pmc_keyed_str(INTERP, metadata, named_slurpy_str,
+ VTABLE_inspect_str(INTERP, SELF, named_slurpy_str));
return metadata;
}
@@ -865,15 +849,15 @@
/* If the first instruction is a get_params... */
if (*pc == PARROT_OP_get_params_pc) {
/* Get the signature (the next thing in the bytecode). */
- PMC *sig = PF_CONST(sub->seg, *(++pc))->u.key;
+ PMC * const sig = PF_CONST(sub->seg, *(++pc))->u.key;
/* Iterate over the signature and compute argument counts. */
- INTVAL sig_length = VTABLE_elements(INTERP, sig);
+ const INTVAL sig_length = VTABLE_elements(INTERP, sig);
int i;
ASSERT_SIG_PMC(sig);
- for (i = 0; i < sig_length; i++) {
+ for (i = 0; i < sig_length; ++i) {
int sig_item = VTABLE_get_integer_keyed_int(INTERP, sig, i);;
if (PARROT_ARG_SLURPY_ARRAY_ISSET(sig_item)){
if (PARROT_ARG_NAME_ISSET(sig_item))
@@ -882,49 +866,48 @@
sub->arg_info->pos_slurpy = 1;
}
else if (PARROT_ARG_NAME_ISSET(sig_item)) {
- i++;
+ ++i;
sig_item = VTABLE_get_integer_keyed_int(INTERP, sig, i);;
if (PARROT_ARG_OPTIONAL_ISSET(sig_item))
- sub->arg_info->named_optional++;
+ ++sub->arg_info->named_optional;
else
- sub->arg_info->named_required++;
+ ++sub->arg_info->named_required;
}
else if (!PARROT_ARG_OPT_FLAG_ISSET(sig_item)) {
if (PARROT_ARG_OPTIONAL_ISSET(sig_item))
- sub->arg_info->pos_optional++;
+ ++sub->arg_info->pos_optional;
else
- sub->arg_info->pos_required++;
+ ++sub->arg_info->pos_required;
}
}
}
}
/* Return the requested argument information */
- if (Parrot_str_equal(interp, what, CONST_STRING(interp, "pos_required"))) {
+ if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "pos_required"))) {
count_found = (INTVAL)sub->arg_info->pos_required;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "pos_optional"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "pos_optional"))) {
count_found = (INTVAL)sub->arg_info->pos_optional;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "pos_slurpy"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "pos_slurpy"))) {
count_found = (INTVAL)sub->arg_info->pos_slurpy;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "named_required"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "named_required"))) {
count_found = (INTVAL)sub->arg_info->named_required;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "named_optional"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "named_optional"))) {
count_found = (INTVAL)sub->arg_info->named_optional;
}
- else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "named_slurpy"))) {
+ else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "named_slurpy"))) {
count_found = (INTVAL)sub->arg_info->named_slurpy;
}
else
- Parrot_ex_throw_from_c_args(interp, NULL,
+ Parrot_ex_throw_from_c_args(INTERP, NULL,
EXCEPTION_INVALID_OPERATION,
"Unknown introspection value '%S'", what);
- retval = Parrot_pmc_new(INTERP, enum_class_Integer);
- VTABLE_set_integer_native(INTERP, retval, count_found);
+ retval = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, count_found);
return retval;
}
@@ -1016,7 +999,7 @@
METHOD __get_regs_used(STRING *reg) {
/* TODO switch to canonical NiSP order
* see also imcc/reg_alloc.c */
- STRING *types = CONST_STRING(INTERP, "INSP");
+ STRING * const types = CONST_STRING(INTERP, "INSP");
Parrot_Sub_attributes *sub;
INTVAL regs_used;
INTVAL kind;
@@ -1056,7 +1039,7 @@
Parrot_Sub_attributes *sub;
PMC_get_sub(INTERP, SELF, sub);
- subid = sub->subid ? sub->subid : CONST_STRING(interp, "");
+ subid = sub->subid ? sub->subid : CONST_STRING(INTERP, "");
RETURN(STRING *subid);
}
@@ -1086,21 +1069,21 @@
/* Ensure we have lex info. */
if (PMC_IS_NULL(sub->lex_info)) {
- const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(interp,
+ const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(INTERP,
enum_class_LexInfo);
- sub->lex_info = Parrot_pmc_new_init(interp, lex_info_id, SELF);
+ sub->lex_info = Parrot_pmc_new_init(INTERP, lex_info_id, SELF);
}
/* If we've got a context around for the outer sub, set it as the
* outer context. */
- outer_ctx = CURRENT_CONTEXT(interp);
+ outer_ctx = CURRENT_CONTEXT(INTERP);
while (!PMC_IS_NULL(outer_ctx)) {
- if (Parrot_pcc_get_sub(interp, outer_ctx) == outer) {
+ if (Parrot_pcc_get_sub(INTERP, outer_ctx) == outer) {
sub->outer_ctx = outer_ctx;
break;
}
- outer_ctx = Parrot_pcc_get_caller_ctx(interp, outer_ctx);
+ outer_ctx = Parrot_pcc_get_caller_ctx(INTERP, outer_ctx);
}
}
@@ -1117,8 +1100,8 @@
METHOD arity() {
- PMC * const pos_required = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "pos_required"));
- PMC * const named_required = VTABLE_inspect_str(interp, SELF, CONST_STRING(interp, "named_required"));
+ PMC * const pos_required = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "pos_required"));
+ PMC * const named_required = VTABLE_inspect_str(INTERP, SELF, CONST_STRING(INTERP, "named_required"));
const INTVAL arity = VTABLE_get_integer(INTERP, pos_required)
+ VTABLE_get_integer(INTERP, named_required);
Modified: branches/ops_pct/src/pmc/task.pmc
==============================================================================
--- branches/ops_pct/src/pmc/task.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/task.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -20,6 +20,10 @@
#include "parrot/scheduler_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Task auto_attrs {
ATTR INTVAL id; /* The task ID. */
ATTR INTVAL priority; /* The priority of the task. */
@@ -50,10 +54,10 @@
/* Set up the core struct. */
core_struct->id = 0;
- core_struct->type = CONST_STRING(interp, "");
- core_struct->subtype = CONST_STRING(interp, "");
+ core_struct->type = CONST_STRING(INTERP, "");
+ core_struct->subtype = CONST_STRING(INTERP, "");
core_struct->priority = 0;
- core_struct->status = CONST_STRING(interp, "created");
+ core_struct->status = CONST_STRING(INTERP, "created");
core_struct->birthtime = 0.0;
core_struct->codeblock = PMCNULL;
core_struct->data = PMCNULL;
@@ -180,11 +184,11 @@
VTABLE PMC *clone() {
/* Create the new task PMC, of the same type of this one (we may
* have been subclassed). */
- PMC * const copy = Parrot_pmc_new(interp, SELF->vtable->base_type);
+ PMC * const copy = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
Parrot_Task_attributes * const new_struct = PARROT_TASK(copy);
Parrot_Task_attributes * const old_struct = PARROT_TASK(SELF);
- new_struct->codeblock = VTABLE_clone(interp, old_struct->codeblock);
+ new_struct->codeblock = VTABLE_clone(INTERP, old_struct->codeblock);
new_struct->data = old_struct->data;
new_struct->type = old_struct->type;
new_struct->subtype = old_struct->subtype;
@@ -205,29 +209,29 @@
Parrot_Task_attributes * const core_struct = PARROT_TASK(SELF);
PMC *value;
- if (Parrot_str_equal(interp, name, CONST_STRING(interp, "id"))) {
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, core_struct->id);
- }
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "type"))) {
- value = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, value, core_struct->type);
- }
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "subtype"))) {
- value = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, value, core_struct->subtype);
- }
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "priority"))) {
- value = Parrot_pmc_new(interp, enum_class_Integer);
- VTABLE_set_integer_native(interp, value, core_struct->priority);
- }
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "status"))) {
- value = Parrot_pmc_new(interp, enum_class_String);
- VTABLE_set_string_native(interp, value, core_struct->status);
- }
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "birthtime"))) {
- value = Parrot_pmc_new(interp, enum_class_Float);
- VTABLE_set_number_native(interp, value, core_struct->birthtime);
+ if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "id"))) {
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
+ core_struct->id);
+ }
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
+ value = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, value, core_struct->type);
+ }
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "subtype"))) {
+ value = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, value, core_struct->subtype);
+ }
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "priority"))) {
+ value = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
+ core_struct->priority);
+ }
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "status"))) {
+ value = Parrot_pmc_new(INTERP, enum_class_String);
+ VTABLE_set_string_native(INTERP, value, core_struct->status);
+ }
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "birthtime"))) {
+ value = Parrot_pmc_new(INTERP, enum_class_Float);
+ VTABLE_set_number_native(INTERP, value, core_struct->birthtime);
}
else {
value = PMCNULL;
@@ -248,28 +252,28 @@
VTABLE void set_attr_str(STRING *name, PMC *value) {
Parrot_Task_attributes * const core_struct = PARROT_TASK(SELF);
- if (Parrot_str_equal(interp, name, CONST_STRING(interp, "id"))) {
- core_struct->id = VTABLE_get_integer(interp, value);
+ if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "id"))) {
+ core_struct->id = VTABLE_get_integer(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "type"))) {
- core_struct->type = VTABLE_get_string(interp, value);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
+ core_struct->type = VTABLE_get_string(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "subtype"))) {
- core_struct->subtype = VTABLE_get_string(interp, value);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "subtype"))) {
+ core_struct->subtype = VTABLE_get_string(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "priority"))) {
- core_struct->priority = VTABLE_get_integer(interp, value);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "priority"))) {
+ core_struct->priority = VTABLE_get_integer(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "status"))) {
- core_struct->status = VTABLE_get_string(interp, value);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "status"))) {
+ core_struct->status = VTABLE_get_string(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "birthtime"))) {
- core_struct->birthtime = VTABLE_get_number(interp, value);
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "birthtime"))) {
+ core_struct->birthtime = VTABLE_get_number(INTERP, value);
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "code"))) {
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "code"))) {
core_struct->codeblock = value;
}
- else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "data"))) {
+ else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "data"))) {
core_struct->data = value;
}
}
@@ -375,11 +379,11 @@
if (PARROT_TASK(SELF)) {
Parrot_Task_attributes * const core_struct = PARROT_TASK(SELF);
- Parrot_gc_mark_STRING_alive(interp, core_struct->type);
- Parrot_gc_mark_STRING_alive(interp, core_struct->subtype);
- Parrot_gc_mark_STRING_alive(interp, core_struct->status);
- Parrot_gc_mark_PMC_alive(interp, core_struct->codeblock);
- Parrot_gc_mark_PMC_alive(interp, core_struct->data);
+ Parrot_gc_mark_STRING_alive(INTERP, core_struct->type);
+ Parrot_gc_mark_STRING_alive(INTERP, core_struct->subtype);
+ Parrot_gc_mark_STRING_alive(INTERP, core_struct->status);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->codeblock);
+ Parrot_gc_mark_PMC_alive(INTERP, core_struct->data);
}
}
Copied: branches/ops_pct/src/pmc/threadinterpreter.pmc (from r46301, trunk/src/pmc/threadinterpreter.pmc)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/src/pmc/threadinterpreter.pmc Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/src/pmc/threadinterpreter.pmc)
@@ -0,0 +1,98 @@
+/*
+Copyright (C) 2001-2007, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/threadinterpreter.pmc - INTERNAL Interpreter for OS level worker thread(pthread).
+
+=head1 DESCRIPTION
+
+ThreadInterpreter extends ParrotInterpreter to provide a interpreter
+to be used internally in a OS level worker thread(pthread).
+which supports:
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/embed.h"
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static void stop_GC(ARGMOD(Interp *parent), ARGMOD(Interp *thread))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*parent)
+ FUNC_MODIFIES(*thread);
+
+#define ASSERT_ARGS_stop_GC __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(parent) \
+ , PARROT_ASSERT_ARG(thread))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
+
+#define PMC_interp(x) ((Parrot_ParrotInterpreter_attributes *)PMC_data(x))->interp
+
+/*
+ * can't do multi-threaded GC yet
+ * XXX a quick hack to pass the few tests
+ */
+static void
+stop_GC(ARGMOD(Interp *parent), ARGMOD(Interp *thread))
+{
+ ASSERT_ARGS(stop_GC)
+ Parrot_block_GC_mark(parent);
+ Parrot_block_GC_mark(thread);
+ Parrot_block_GC_sweep(parent);
+ Parrot_block_GC_sweep(thread);
+}
+
+
+
+pmclass ThreadInterpreter extends ParrotInterpreter no_ro manual_attrs {
+
+/*
+
+=item C<void init()>
+
+Initializes the thread.
+
+=cut
+
+*/
+
+ VTABLE void init() {
+ /* protect interpreter creation and list handling */
+ LOCK(interpreter_array_mutex);
+
+ SUPER();
+ pt_add_to_interpreters(INTERP, PMC_interp(SELF));
+
+ UNLOCK(interpreter_array_mutex);
+
+ /* can't allow GC runs for now */
+ stop_GC(INTERP, PMC_interp(SELF));
+ }
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/ops_pct/src/pmc/timer.pmc
==============================================================================
--- branches/ops_pct/src/pmc/timer.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/timer.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -57,6 +57,10 @@
#include "parrot/scheduler_private.h"
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Timer extends Task provides event auto_attrs {
ATTR FLOATVAL duration; /* The duration of the timer pause */
ATTR FLOATVAL interval; /* How often to repeat */
@@ -82,8 +86,8 @@
/* Set up the core struct. */
core_struct->id = 0;
- core_struct->type = CONST_STRING(interp, "timer");
- core_struct->subtype = CONST_STRING(interp, "");
+ core_struct->type = CONST_STRING(INTERP, "timer");
+ core_struct->subtype = CONST_STRING(INTERP, "");
core_struct->priority = 0;
core_struct->status = CONST_STRING(interp, "created");
core_struct->birthtime = 0.0;
@@ -309,7 +313,7 @@
Parrot_Timer_attributes * const core_struct = PARROT_TIMER(SELF);
core_struct->codeblock = value;
*/
- SET_ATTR_codeblock(interp, SELF, value);
+ SET_ATTR_codeblock(INTERP, SELF, value);
}
}
Modified: branches/ops_pct/src/pmc/undef.pmc
==============================================================================
--- branches/ops_pct/src/pmc/undef.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/undef.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -26,6 +26,10 @@
#include "pmc/pmc_object.h"
#define UNDEF_STRING_CLASS enum_class_String
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Undef no_ro {
/*
@@ -46,7 +50,7 @@
}
else {
PMC * const class_ = PARROT_OBJECT(other)->_class;
- PMC *clone = VTABLE_clone(interp, other);
+ PMC *clone = VTABLE_clone(INTERP, other);
void *attrs = PMC_data(clone);
PMC *meta = PMC_metadata(clone);
@@ -57,11 +61,11 @@
/* Restore metadata. */
if (!PMC_IS_NULL(meta)) {
- PMC * const iter = VTABLE_get_iter(interp, meta);
- while (VTABLE_get_bool(interp, iter)) {
- STRING * const key = VTABLE_shift_string(interp, iter);
- PMC * const value = VTABLE_get_pmc_keyed_str(interp, meta, key);
- VTABLE_setprop(interp, SELF, key, value);
+ PMC * const iter = VTABLE_get_iter(INTERP, meta);
+ while (VTABLE_get_bool(INTERP, iter)) {
+ STRING * const key = VTABLE_shift_string(INTERP, iter);
+ PMC * const value = VTABLE_get_pmc_keyed_str(INTERP, meta, key);
+ VTABLE_setprop(INTERP, SELF, key, value);
}
}
PMC_data(clone) = NULL;
@@ -171,7 +175,7 @@
*/
VTABLE STRING *get_string() {
- Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
+ Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
"Stringifying an Undef PMC");
return Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
@@ -188,7 +192,7 @@
*/
VTABLE void set_string_native(STRING *value) {
- Parrot_pmc_reuse(interp, SELF, enum_class_String, 0);
+ Parrot_pmc_reuse(INTERP, SELF, enum_class_String, 0);
VTABLE_set_string_native(INTERP, SELF, value);
}
Modified: branches/ops_pct/src/pmc/unmanagedstruct.pmc
==============================================================================
--- branches/ops_pct/src/pmc/unmanagedstruct.pmc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc/unmanagedstruct.pmc Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -24,13 +24,151 @@
#include "parrot/compiler.h"
-static INTVAL key_2_idx(PARROT_INTERP, PMC *pmc, PMC *key);
-static size_t calc_offsets(PARROT_INTERP, PMC*, PMC *init, size_t toff);
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_WARN_UNUSED_RESULT
+static int calc_align(PARROT_INTERP,
+ ARGIN(PMC *type_pmc),
+ int type,
+ size_t offs)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void calc_offsets(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ ARGIN(PMC *value),
+ size_t toff)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static char * char_offset_int(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ INTVAL ix,
+ ARGOUT(int *type))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*type);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static char * char_offset_key(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ ARGIN(PMC *key),
+ ARGOUT(int *type))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*type);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL key_2_idx(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(PMC *key))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+static FLOATVAL ret_float(PARROT_INTERP, ARGIN(const char *p), int type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+static INTVAL ret_int(PARROT_INTERP, ARGIN(const char *p), int type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static PMC* ret_pmc(PARROT_INTERP,
+ ARGIN(PMC *pmc),
+ ARGIN(char *p),
+ int type,
+ INTVAL idx)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static STRING* ret_string(PARROT_INTERP, ARGIN(char *p), int type)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void set_float(PARROT_INTERP,
+ ARGIN(char *p),
+ int type,
+ FLOATVAL value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void set_int(PARROT_INTERP, ARGIN(char *p), int type, INTVAL value)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+static void set_string(PARROT_INTERP,
+ ARGIN(char *p),
+ int type,
+ ARGIN(STRING *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4);
+
+#define ASSERT_ARGS_calc_align __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(type_pmc))
+#define ASSERT_ARGS_calc_offsets __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_char_offset_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(type))
+#define ASSERT_ARGS_char_offset_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(key) \
+ , PARROT_ASSERT_ARG(type))
+#define ASSERT_ARGS_key_2_idx __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_ret_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_ret_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_ret_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_ret_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_set_float __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_set_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p))
+#define ASSERT_ARGS_set_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(p) \
+ , PARROT_ASSERT_ARG(value))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: static */
/*
-=item C<static char *
-char_offset_int(PARROT_INTERP, PMC *pmc, INTVAL ix, int *type)>
+=item C<static char * char_offset_int(PARROT_INTERP, PMC *pmc, INTVAL ix, int
+*type)>
Returns the pointer for the element at index C<ix>, and sets the element
type in C<*type>.
@@ -39,9 +177,12 @@
*/
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static char *
-char_offset_int(PARROT_INTERP, PMC *pmc, INTVAL ix, int *type)
+char_offset_int(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL ix, ARGOUT(int *type))
{
+ ASSERT_ARGS(char_offset_int)
size_t offs, n;
ix *= 3;
@@ -67,8 +208,7 @@
/*
-=item C<static INTVAL
-key_2_idx(PARROT_INTERP, PMC *pmc, PMC *key)>
+=item C<static INTVAL key_2_idx(PARROT_INTERP, PMC *pmc, PMC *key)>
Returns the index for the element associated with key C<*key>. Raises an
exception if the key doesn't exist.
@@ -77,9 +217,11 @@
*/
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-key_2_idx(PARROT_INTERP, PMC *pmc, PMC *key)
+key_2_idx(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(PMC *key))
{
+ ASSERT_ARGS(key_2_idx)
int ix = 0;
if (!PARROT_UNMANAGEDSTRUCT(pmc)->init)
@@ -115,8 +257,8 @@
/*
-=item C<static char *
-char_offset_key(PARROT_INTERP, PMC *pmc, PMC *key, int *type)>
+=item C<static char * char_offset_key(PARROT_INTERP, PMC *pmc, PMC *key, int
+*type)>
Returns the pointer for the element associated with key C<*key>, and
sets the element type in C<*type>.
@@ -125,9 +267,12 @@
*/
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static char *
-char_offset_key(PARROT_INTERP, PMC *pmc, PMC *key, int *type)
+char_offset_key(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(PMC *key), ARGOUT(int *type))
{
+ ASSERT_ARGS(char_offset_key)
size_t offs, count, size, max;
int ix;
PMC *next, *init;
@@ -217,8 +362,7 @@
/*
-=item C<static INTVAL
-ret_int(PARROT_INTERP, const char *p, int type)>
+=item C<static INTVAL ret_int(PARROT_INTERP, const char *p, int type)>
Returns the element of type C<type> starting at C<*p> as an C<INTVAL>.
@@ -229,13 +373,11 @@
*/
+PARROT_WARN_UNUSED_RESULT
static INTVAL
-ret_int(PARROT_INTERP, const char *p, int type)
- __attribute__nonnull__(1);
-
-static INTVAL
-ret_int(PARROT_INTERP, const char *p, int type)
+ret_int(PARROT_INTERP, ARGIN(const char *p), int type)
{
+ ASSERT_ARGS(ret_int)
switch (type) {
case enum_type_INTVAL:
return *(const INTVAL*) p;
@@ -292,8 +434,7 @@
/*
-=item C<static FLOATVAL
-ret_float(PARROT_INTERP, const char *p, int type)>
+=item C<static FLOATVAL ret_float(PARROT_INTERP, const char *p, int type)>
Returns the element of type C<type> starting at C<*p> as a C<FLOATVAL>.
@@ -301,13 +442,11 @@
*/
+PARROT_WARN_UNUSED_RESULT
static FLOATVAL
-ret_float(PARROT_INTERP, const char *p, int type)
- __attribute__nonnull__(1);
-
-static FLOATVAL
-ret_float(PARROT_INTERP, const char *p, int type)
+ret_float(PARROT_INTERP, ARGIN(const char *p), int type)
{
+ ASSERT_ARGS(ret_float)
switch (type) {
case enum_type_FLOATVAL:
return (FLOATVAL) *(const FLOATVAL *)p;
@@ -323,8 +462,7 @@
/*
-=item C<static STRING*
-ret_string(PARROT_INTERP, char *p, int type)>
+=item C<static STRING* ret_string(PARROT_INTERP, char *p, int type)>
Returns the element of type C<type> starting at C<*p> as a Parrot string.
@@ -332,13 +470,16 @@
*/
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
static STRING*
-ret_string(PARROT_INTERP, char *p, int type)
+ret_string(PARROT_INTERP, ARGIN(char *p), int type)
{
+ ASSERT_ARGS(ret_string)
if (type == enum_type_cstr) {
char *cstr = *(char **) p;
if (cstr) {
- size_t len = strlen(cstr);
+ const size_t len = strlen(cstr);
/* TODO
Can't assume that the C string is constant during the
life of the returned parrot string, so can't be
@@ -359,8 +500,8 @@
/*
-=item C<static PMC*
-ret_pmc(PARROT_INTERP, PMC *pmc, char *p, int type, INTVAL idx)>
+=item C<static PMC* ret_pmc(PARROT_INTERP, PMC *pmc, char *p, int type, INTVAL
+idx)>
Returns the element of type C<type> starting at C<*p> as a PMC.
@@ -368,12 +509,15 @@
*/
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
static PMC*
-ret_pmc(PARROT_INTERP, PMC *pmc, char *p, int type, INTVAL idx)
+ret_pmc(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(char *p), int type, INTVAL idx)
{
+ ASSERT_ARGS(ret_pmc)
+ PMC * const init = PARROT_UNMANAGEDSTRUCT(pmc)->init;
+ PMC * const ptr = VTABLE_get_pmc_keyed_int(interp, init, idx * 3);
PMC *ret = NULL;
- PMC *init = PARROT_UNMANAGEDSTRUCT(pmc)->init;
- PMC *ptr = VTABLE_get_pmc_keyed_int(interp, init, idx * 3);
switch (type) {
case enum_type_func_ptr:
@@ -383,9 +527,9 @@
/* now check if initializer has a signature attached */
if (PMC_metadata(ptr)) {
STRING *signature_str = CONST_STRING(interp, "_signature");
- PMC *sig = VTABLE_getprop(interp, ptr, signature_str);
+ PMC * const sig = VTABLE_getprop(interp, ptr, signature_str);
if (VTABLE_defined(interp, sig)) {
- STRING *sig_str = VTABLE_get_string(interp, sig);
+ STRING * const sig_str = VTABLE_get_string(interp, sig);
ret = Parrot_pmc_new(interp, enum_class_NCI);
VTABLE_set_pointer_keyed_str(interp, ret, sig_str,
*(PMC **)p);
@@ -416,16 +560,16 @@
/*
-=item C<static void
-set_int(PARROT_INTERP, char *p, int type, INTVAL value)>
+=item C<static void set_int(PARROT_INTERP, char *p, int type, INTVAL value)>
=cut
*/
static void
-set_int(PARROT_INTERP, char *p, int type, INTVAL value)
+set_int(PARROT_INTERP, ARGIN(char *p), int type, INTVAL value)
{
+ ASSERT_ARGS(set_int)
switch (type) {
case enum_type_uint8:
case enum_type_int8:
@@ -453,8 +597,7 @@
/*
-=item C<static void
-set_float(PARROT_INTERP, char *p, int type, FLOATVAL value)>
+=item C<static void set_float(PARROT_INTERP, char *p, int type, FLOATVAL value)>
Sets the value of the element of type C<type> starting at C<*p> to
C<value>.
@@ -464,8 +607,9 @@
*/
static void
-set_float(PARROT_INTERP, char *p, int type, FLOATVAL value)
+set_float(PARROT_INTERP, ARGIN(char *p), int type, FLOATVAL value)
{
+ ASSERT_ARGS(set_float)
switch (type) {
case enum_type_FLOATVAL:
*(FLOATVAL *)p = (FLOATVAL)value;
@@ -485,8 +629,7 @@
/*
-=item C<static void
-set_string(PARROT_INTERP, char *p, int type, STRING *value)>
+=item C<static void set_string(PARROT_INTERP, char *p, int type, STRING *value)>
Sets the value of the element of type C<type> starting at C<*p> to
C<*value>.
@@ -496,8 +639,9 @@
*/
static void
-set_string(PARROT_INTERP, char *p, int type, STRING *value)
+set_string(PARROT_INTERP, ARGIN(char *p), int type, ARGIN(STRING *value))
{
+ ASSERT_ARGS(set_string)
if (type == enum_type_cstr) {
/* assuming 0-terminated C-string here;
* we can't use Parrot_str_to_cstring easily */
@@ -511,9 +655,8 @@
/*
-=item C<static int
-calc_align(PARROT_INTERP, PMC *pmc, PMC *type_pmc,
- int type, size_t offs)>
+=item C<static int calc_align(PARROT_INTERP, PMC *type_pmc, int type, size_t
+offs)>
Alignment of contained structures is the alignment of the biggest item in that
C<struct>.
@@ -526,10 +669,11 @@
*/
+PARROT_WARN_UNUSED_RESULT
static int
-calc_align(PARROT_INTERP, PMC *pmc, PMC *type_pmc,
- int type, size_t offs)
+calc_align(PARROT_INTERP, ARGIN(PMC *type_pmc), int type, size_t offs)
{
+ ASSERT_ARGS(calc_align)
int align = data_types[type - enum_first_type].size;
PMC *nested = NULL;
PMC *nested_init = NULL;
@@ -541,7 +685,8 @@
nested_init = PARROT_UNMANAGEDSTRUCT(nested)->init;
}
if (type == enum_type_struct) {
- INTVAL i, n = (size_t)VTABLE_elements(interp, nested_init);
+ INTVAL i;
+ const INTVAL n = (size_t)VTABLE_elements(interp, nested_init);
int a_max = 0;
int new_offs;
@@ -550,11 +695,11 @@
"Illegal initializer for struct");
for (i = 0; i < n; i += 3) {
- PMC *nested_type_pmc = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const nested_type_pmc = VTABLE_get_pmc_keyed_int(interp,
nested_init, i);
- int nested_type = (int)VTABLE_get_integer(interp,
+ const int nested_type = (int)VTABLE_get_integer(interp,
nested_type_pmc);
- new_offs = calc_align(interp, nested,
+ new_offs = calc_align(interp,
nested_type_pmc, nested_type, offs);
if (new_offs > a_max)
@@ -577,8 +722,8 @@
/*
-=item C<static size_t
-calc_offsets(PARROT_INTERP, PMC *pmc, PMC *value, size_t toff)>
+=item C<static void calc_offsets(PARROT_INTERP, PMC *pmc, PMC *value, size_t
+toff)>
Calculates the offsets for the C<struct>. See C<init_pmc()> for a description
of C<*value>.
@@ -587,23 +732,25 @@
*/
-static size_t
-calc_offsets(PARROT_INTERP, PMC *pmc, PMC *value, size_t toff)
+static void
+calc_offsets(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(PMC *value), size_t toff)
{
- STRING *_struct = CONST_STRING(interp, "_struct");
- INTVAL n = (size_t)VTABLE_elements(interp, value);
+ ASSERT_ARGS(calc_offsets)
+ STRING * const _struct = CONST_STRING(interp, "_struct");
+ const INTVAL n = (size_t)VTABLE_elements(interp, value);
INTVAL i;
- int size;
if (n % 3)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
"Illegal initializer for struct");
for (i = 0; i < n; i += 3) {
- PMC *type_pmc = VTABLE_get_pmc_keyed_int(interp, value, i);
- int type = (int)VTABLE_get_integer(interp, type_pmc);
+ PMC * const type_pmc = VTABLE_get_pmc_keyed_int(interp, value, i);
+ const int type = (int)VTABLE_get_integer(interp, type_pmc);
+
int count = (int)VTABLE_get_integer_keyed_int(interp, value, i + 1);
int offs = (int)VTABLE_get_integer_keyed_int(interp, value, i + 2);
+ int size;
if (type < enum_first_type || type >= enum_last_type)
Parrot_ex_throw_from_c_args(interp, NULL,
@@ -616,18 +763,18 @@
}
if (offs <= 0) {
- offs = toff = calc_align(interp, pmc, type_pmc, type, toff);
+ offs = toff = calc_align(interp, type_pmc, type, toff);
VTABLE_set_integer_keyed_int(interp, value, i + 2, offs);
}
else
toff = offs;
if (type == enum_type_struct) {
- PMC *nested = VTABLE_getprop(interp, type_pmc, _struct);
+ PMC * const nested = VTABLE_getprop(interp, type_pmc, _struct);
size = VTABLE_get_integer(interp, nested);
}
else if (type == enum_type_struct_ptr) {
- PMC *nested = VTABLE_getprop(interp, type_pmc, _struct);
+ PMC * const nested = VTABLE_getprop(interp, type_pmc, _struct);
/* must clone this struct so as not to share its memory */
if (nested->vtable->base_type == enum_class_ManagedStruct)
@@ -645,8 +792,6 @@
if (i == n - 3)
VTABLE_set_integer_native(interp, pmc, (INTVAL)toff);
}
-
- return toff;
}
pmclass UnManagedStruct auto_attrs no_ro {
@@ -703,7 +848,8 @@
*/
VTABLE PMC *clone() {
- PMC *clone = Parrot_pmc_new(INTERP, enum_class_UnManagedStruct);
+ PMC * const clone = Parrot_pmc_new(INTERP, enum_class_UnManagedStruct);
+
mem_sys_memmove(PMC_data(clone), PMC_data(SELF),
sizeof (Parrot_UnManagedStruct_attributes));
PARROT_UNMANAGEDSTRUCT(clone)->init =
@@ -738,7 +884,7 @@
*/
VTABLE void mark() {
- PMC *init = PARROT_UNMANAGEDSTRUCT(SELF)->init;
+ PMC * const init = PARROT_UNMANAGEDSTRUCT(SELF)->init;
Parrot_gc_mark_PMC_alive(INTERP, init);
}
@@ -754,7 +900,7 @@
VTABLE INTVAL is_equal(PMC *value) {
return (SELF->vtable == value->vtable
- && SELF.get_pointer() == VTABLE_get_pointer(interp, value));
+ && SELF.get_pointer() == VTABLE_get_pointer(INTERP, value));
}
/*
@@ -811,7 +957,7 @@
VTABLE INTVAL get_integer_keyed_int(INTVAL ix) {
int type;
- char *p = char_offset_int(INTERP, pmc, ix, &type);
+ const char * const p = char_offset_int(INTERP, SELF, ix, &type);
return ret_int(INTERP, p, type);
}
@@ -827,7 +973,7 @@
VTABLE INTVAL get_integer_keyed(PMC *key) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
return ret_int(INTERP, p, type);
}
@@ -843,7 +989,7 @@
VTABLE FLOATVAL get_number_keyed_int(INTVAL key) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
+ char * const p = char_offset_int(INTERP, SELF, key, &type);
return ret_float(INTERP, p, type);
}
@@ -859,7 +1005,7 @@
VTABLE FLOATVAL get_number_keyed(PMC *key) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
return ret_float(INTERP, p, type);
}
@@ -875,7 +1021,7 @@
VTABLE STRING *get_string_keyed_int(INTVAL key) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
+ char * const p = char_offset_int(INTERP, SELF, key, &type);
return ret_string(INTERP, p, type);
}
@@ -891,7 +1037,7 @@
VTABLE STRING *get_string_keyed(PMC *key) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
return ret_string(INTERP, p, type);
}
@@ -907,8 +1053,8 @@
VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
- return ret_pmc(INTERP, pmc, p, type, key);
+ char * const p = char_offset_int(INTERP, SELF, key, &type);
+ return ret_pmc(INTERP, SELF, p, type, key);
}
/*
@@ -923,8 +1069,8 @@
VTABLE PMC *get_pmc_keyed(PMC *key) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
- return ret_pmc(INTERP, pmc, p, type, key_2_idx(INTERP, pmc, key));
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
+ return ret_pmc(INTERP, SELF, p, type, key_2_idx(INTERP, SELF, key));
}
/*
@@ -967,7 +1113,7 @@
VTABLE void set_integer_keyed_int(INTVAL ix, INTVAL value) {
int type;
- char *p = char_offset_int(INTERP, pmc, ix, &type);
+ char * const p = char_offset_int(INTERP, SELF, ix, &type);
set_int(INTERP, p, type, value);
}
@@ -985,7 +1131,7 @@
VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
set_int(INTERP, p, type, value);
}
@@ -1001,7 +1147,7 @@
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
+ char * const p = char_offset_int(INTERP, SELF, key, &type);
set_float(INTERP, p, type, value);
}
@@ -1017,7 +1163,7 @@
VTABLE void set_number_keyed(PMC *key, FLOATVAL value) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
set_float(INTERP, p, type, value);
}
@@ -1033,7 +1179,7 @@
VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
+ char * const p = char_offset_int(INTERP, SELF, key, &type);
set_string(INTERP, p, type, value);
}
@@ -1049,7 +1195,7 @@
VTABLE void set_string_keyed(PMC *key, STRING *value) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, SELF, key, &type);
set_string(INTERP, p, type, value);
}
@@ -1059,10 +1205,6 @@
=back
-=head1 HISTORY
-
-Initial revision by sean 2002/08/04
-
=head1 SEE ALSO
F<docs/pmc/struct.pod>
Modified: branches/ops_pct/src/pmc_freeze.c
==============================================================================
--- branches/ops_pct/src/pmc_freeze.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/pmc_freeze.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -49,44 +49,123 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
STRING*
Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
{
ASSERT_ARGS(Parrot_freeze)
- PMC *image = Parrot_pmc_new(interp, enum_class_ImageIO);
+ PMC * const image = Parrot_pmc_new(interp, enum_class_ImageIO);
VTABLE_set_pmc(interp, image, pmc);
return VTABLE_get_string(interp, image);
}
/*
+=item C<STRING * Parrot_freeze_pbc(PARROT_INTERP, PMC *pmc, const
+PackFile_ConstTable *pf)>
+
+Freeze to a PackFile.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+STRING *
+Parrot_freeze_pbc(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(const PackFile_ConstTable *pf))
+{
+ ASSERT_ARGS(Parrot_freeze_pbc)
+ PMC *visitor;
+
+ PMC * const pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+
+ visitor = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
+ VTABLE_set_pmc(interp, visitor, pmc);
+
+ return VTABLE_get_string(interp, visitor);
+}
+
+
+/*
+
=item C<UINTVAL Parrot_freeze_size(PARROT_INTERP, PMC *pmc)>
Get the size of an image to be frozen without allocating a large buffer.
-Used in C<Packfile_Constant_pack_size>.
-
=cut
*/
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
UINTVAL
Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
{
ASSERT_ARGS(Parrot_freeze_size)
UINTVAL int_result;
PMC *pmc_result;
- PMC *visitor = Parrot_pmc_new(interp, enum_class_ImageIOSize);
+ PMC * const visitor = Parrot_pmc_new(interp, enum_class_ImageIOSize);
VTABLE_set_pmc(interp, visitor, pmc);
pmc_result = VTABLE_get_pmc(interp, visitor);
int_result = VTABLE_get_integer(interp, pmc_result);
return int_result;
}
+/*
+
+=item C<UINTVAL Parrot_freeze_pbc_size(PARROT_INTERP, PMC *pmc, const
+PackFile_ConstTable *pf)>
+
+Get the size of an image if it were created using C<Parrot_freeze_pbc>.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+UINTVAL
+Parrot_freeze_pbc_size(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(const PackFile_ConstTable *pf))
+{
+ ASSERT_ARGS(Parrot_freeze_pbc_size)
+ PMC *pf_pmc, *visitor, *pmc_result;
+
+ pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+
+ visitor = Parrot_pmc_new_init(interp, enum_class_ImageIOSize, pf_pmc);
+ VTABLE_set_pmc(interp, visitor, pmc);
+
+ pmc_result = VTABLE_get_pmc(interp, visitor);
+ return VTABLE_get_integer(interp, pmc_result);
+}
+
+
+/*
+
+=item C<PMC * Parrot_freeze_strings(PARROT_INTERP, PMC *pmc)>
+
+Get the strings of a PMC to be frozen.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC *
+Parrot_freeze_strings(PARROT_INTERP, ARGIN(PMC *pmc))
+{
+ ASSERT_ARGS(Parrot_freeze_strings)
+ PMC * const visitor = Parrot_pmc_new(interp, enum_class_ImageIOStrings);
+ VTABLE_set_pmc(interp, visitor, pmc);
+ return VTABLE_get_pmc(interp, visitor);
+}
+
/*
@@ -106,13 +185,13 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC*
Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
{
ASSERT_ARGS(Parrot_thaw)
- PMC *info = Parrot_pmc_new(interp, enum_class_ImageIO);
+ PMC * const info = Parrot_pmc_new(interp, enum_class_ImageIO);
int gc_block = 0;
PMC *result;
@@ -147,6 +226,47 @@
/*
+=item C<PMC* Parrot_thaw_pbc(PARROT_INTERP, STRING *image, PackFile_ConstTable
+*pf)>
+
+Thaw a pmc frozen by Parrot_freeze_pbc.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC*
+Parrot_thaw_pbc(PARROT_INTERP, ARGIN(STRING *image), ARGIN(PackFile_ConstTable *pf))
+{
+ ASSERT_ARGS(Parrot_thaw_pbc)
+ PMC *info, *pf_pmc, *result;
+
+ pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, pf_pmc, pf);
+
+ info = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
+
+ /* TODO
+ * Find out what broken code depends on blocking GC here and fix it, regardless of performance
+ * wins.
+ */
+ Parrot_block_GC_mark(interp);
+ Parrot_block_GC_sweep(interp);
+
+ VTABLE_set_string_native(interp, info, image);
+ result = VTABLE_get_pmc(interp, info);
+
+ Parrot_unblock_GC_mark(interp);
+ Parrot_unblock_GC_sweep(interp);
+
+ return result;
+}
+
+/*
+
=item C<PMC* Parrot_thaw_constants(PARROT_INTERP, STRING *image)>
Thaws constants, used by PackFile for unpacking PMC constants.
@@ -158,7 +278,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PMC*
Parrot_thaw_constants(PARROT_INTERP, ARGIN(STRING *image))
{
@@ -199,15 +319,16 @@
*/
void
-Parrot_visit_loop_visit(PARROT_INTERP, ARGIN(PMC *info)) {
+Parrot_visit_loop_visit(PARROT_INTERP, ARGIN(PMC *info))
+{
ASSERT_ARGS(Parrot_visit_loop_visit)
INTVAL i;
PMC * const todo = VTABLE_get_iter(interp, info);
/* can't cache upper limit, visit may append items */
- for (i = 0; i < VTABLE_elements(interp, todo); i++) {
- PMC *current = VTABLE_get_pmc_keyed_int(interp, todo, i);
+ for (i = 0; i < VTABLE_elements(interp, todo); ++i) {
+ PMC * const current = VTABLE_get_pmc_keyed_int(interp, todo, i);
if (!current)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"NULL current PMC in visit_loop_todo_list");
@@ -231,7 +352,8 @@
*/
void
-Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info)) {
+Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info))
+{
ASSERT_ARGS(Parrot_visit_loop_thawfinish)
/* call thawfinish for each processed PMC */
@@ -267,10 +389,6 @@
Lot of discussion on p6i and F<docs/dev/pmc_freeze.pod>.
-=head1 HISTORY
-
-Initial version by leo 2003.11.03 - 2003.11.07.
-
=cut
*/
Modified: branches/ops_pct/src/runcore/cores.c
==============================================================================
--- branches/ops_pct/src/runcore/cores.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/runcore/cores.c Wed May 5 08:45:29 2010 (r46302)
@@ -73,7 +73,7 @@
structure to execute opcodes. Here's a brief example of how this
architecture works:
- for( ; ; current_opcode++) {
+ for( ; ; ++current_opcode) {
switch(*current_opcode) {
case opcode_1:
...
@@ -249,17 +249,11 @@
#include "parrot/oplib/ops.h"
#include "parrot/oplib/core_ops.h"
-#include "parrot/oplib/core_ops_switch.h"
#include "parrot/dynext.h"
#include "pmc/pmc_sub.h"
#include "pmc/pmc_callcontext.h"
-#ifdef HAVE_COMPUTED_GOTO
-# include "parrot/oplib/core_ops_cg.h"
-# include "parrot/oplib/core_ops_cgp.h"
-#endif
-
#ifdef WIN32
# define getpid _getpid
#endif
@@ -271,29 +265,10 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
-static opcode_t * runops_cgoto_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
- ARGIN(opcode_t *pc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static opcode_t * runops_cgp_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
- ARGIN(opcode_t *pc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
static opcode_t * runops_debugger_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
+ SHIM(Parrot_runcore_t *runcore),
ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
@@ -308,59 +283,35 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t * runops_fast_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
+ SHIM(Parrot_runcore_t *runcore),
ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t * runops_gc_debug_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
+ SHIM(Parrot_runcore_t *runcore),
ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t * runops_slow_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
- ARGIN(opcode_t *pc))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static opcode_t * runops_switch_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
+ SHIM(Parrot_runcore_t *runcore),
ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
-static opcode_t * runops_trace_core(PARROT_INTERP,
- ARGIN(Parrot_runcore_t *runcore),
- ARGIN(opcode_t *pc))
+static opcode_t * runops_trace_core(PARROT_INTERP, ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ __attribute__nonnull__(2);
-#define ASSERT_ARGS_runops_cgoto_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
- , PARROT_ASSERT_ARG(pc))
-#define ASSERT_ARGS_runops_cgp_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
- , PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_debugger_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_exec_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -368,23 +319,15 @@
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_fast_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_gc_debug_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_slow_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
- , PARROT_ASSERT_ARG(pc))
-#define ASSERT_ARGS_runops_switch_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_runops_trace_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -405,7 +348,7 @@
{
ASSERT_ARGS(Parrot_runcore_slow_init)
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
+ Parrot_runcore_t * const coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
coredata->name = CONST_STRING(interp, "slow");
coredata->id = PARROT_SLOW_CORE;
coredata->opinit = PARROT_CORE_OPLIB_INIT;
@@ -435,7 +378,7 @@
{
ASSERT_ARGS(Parrot_runcore_fast_init)
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
+ Parrot_runcore_t * const coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
coredata->name = CONST_STRING(interp, "fast");
coredata->id = PARROT_FAST_CORE;
coredata->opinit = PARROT_CORE_OPLIB_INIT;
@@ -452,36 +395,6 @@
/*
-=item C<void Parrot_runcore_switch_init(PARROT_INTERP)>
-
-Registers the switch runcore with Parrot.
-
-=cut
-
-*/
-
-void
-Parrot_runcore_switch_init(PARROT_INTERP)
-{
- ASSERT_ARGS(Parrot_runcore_switch_init)
-
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
- coredata->name = CONST_STRING(interp, "switch");
- coredata->id = PARROT_SWITCH_CORE;
- coredata->opinit = PARROT_CORE_SWITCH_OPLIB_INIT;
- coredata->runops = runops_switch_core;
- coredata->prepare_run = init_prederef;
- coredata->destroy = NULL;
- coredata->flags = 0;
-
- PARROT_RUNCORE_PREDEREF_OPS_SET(coredata);
-
- Parrot_runcore_register(interp, coredata);
-}
-
-
-/*
-
=item C<void Parrot_runcore_exec_init(PARROT_INTERP)>
Registers the exec runcore with Parrot.
@@ -495,7 +408,7 @@
{
ASSERT_ARGS(Parrot_runcore_exec_init)
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
+ Parrot_runcore_t * const coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
coredata->name = CONST_STRING(interp, "exec");
coredata->id = PARROT_EXEC_CORE;
coredata->opinit = PARROT_CORE_OPLIB_INIT;
@@ -523,7 +436,7 @@
{
ASSERT_ARGS(Parrot_runcore_gc_debug_init)
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
+ Parrot_runcore_t * const coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
coredata->name = CONST_STRING(interp, "gc_debug");
coredata->id = PARROT_GC_DEBUG_CORE;
coredata->opinit = PARROT_CORE_OPLIB_INIT;
@@ -553,11 +466,11 @@
{
ASSERT_ARGS(Parrot_runcore_debugger_init)
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
+ Parrot_runcore_t * const coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
coredata->name = CONST_STRING(interp, "debugger");
coredata->id = PARROT_DEBUGGER_CORE;
coredata->opinit = PARROT_CORE_OPLIB_INIT;
- coredata->prepare_run = init_prederef;
+ coredata->prepare_run = NULL;
coredata->runops = runops_debugger_core;
coredata->destroy = NULL;
coredata->flags = 0;
@@ -570,75 +483,6 @@
/*
-=item C<void Parrot_runcore_cgp_init(PARROT_INTERP)>
-
-Registers the CGP runcore with Parrot.
-
-=cut
-
-*/
-
-#ifdef HAVE_COMPUTED_GOTO
-
-void
-Parrot_runcore_cgp_init(PARROT_INTERP)
-{
- ASSERT_ARGS(Parrot_runcore_cgp_init)
-
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
- coredata->name = CONST_STRING(interp, "cgp");
- coredata->id = PARROT_CGP_CORE;
- coredata->opinit = PARROT_CORE_CGP_OPLIB_INIT;
- coredata->prepare_run = init_prederef;
- coredata->runops = runops_cgp_core;
- coredata->flags = 0;
-
- coredata->destroy = NULL;
-
- PARROT_RUNCORE_CGOTO_OPS_SET(coredata);
- PARROT_RUNCORE_EVENT_CHECK_SET(coredata);
- PARROT_RUNCORE_PREDEREF_OPS_SET(coredata);
-
- Parrot_runcore_register(interp, coredata);
-}
-
-
-/*
-
-=item C<void Parrot_runcore_cgoto_init(PARROT_INTERP)>
-
-Registers the cgoto runcore with Parrot.
-
-=cut
-
-*/
-
-void
-Parrot_runcore_cgoto_init(PARROT_INTERP)
-{
- ASSERT_ARGS(Parrot_runcore_cgoto_init)
-
- Parrot_runcore_t *coredata = mem_gc_allocate_zeroed_typed(interp, Parrot_runcore_t);
- coredata->name = CONST_STRING(interp, "cgoto");
- coredata->id = PARROT_CGOTO_CORE;
- coredata->opinit = PARROT_CORE_CG_OPLIB_INIT;
- coredata->runops = runops_cgoto_core;
- coredata->destroy = NULL;
- coredata->prepare_run = NULL;
- coredata->flags = 0;
-
- PARROT_RUNCORE_FUNC_TABLE_SET(coredata);
- PARROT_RUNCORE_CGOTO_OPS_SET(coredata);
-
- Parrot_runcore_register(interp, coredata);
-}
-
-
-#endif /* #ifdef HAVE_COMPUTED_GOTO */
-
-
-/*
-
=item C<static opcode_t * runops_fast_core(PARROT_INTERP, Parrot_runcore_t
*runcore, opcode_t *pc)>
@@ -652,7 +496,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t *
-runops_fast_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
+runops_fast_core(PARROT_INTERP, SHIM(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_fast_core)
@@ -674,42 +518,6 @@
}
-/*
-
-=item C<static opcode_t * runops_cgoto_core(PARROT_INTERP, Parrot_runcore_t
-*runcore, opcode_t *pc)>
-
-Runs the Parrot operations starting at C<pc> until there are no more
-operations, using the computed C<goto> core, performing no bounds checking,
-profiling, or tracing.
-
-If computed C<goto> is not available then Parrot exits with exit code 1.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static opcode_t *
-runops_cgoto_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
-{
- ASSERT_ARGS(runops_cgoto_core)
-
- /* disable pc */
- Parrot_pcc_set_pc(interp, CURRENT_CONTEXT(interp), NULL);
-
-#ifdef HAVE_COMPUTED_GOTO
- pc = cg_core(pc, interp);
- return pc;
-#else
- UNUSED(pc);
- Parrot_io_eprintf(interp,
- "Computed goto unavailable in this configuration.\n");
- Parrot_exit(interp, 1);
-#endif
-}
-
#ifdef code_start
# undef code_start
#endif
@@ -724,8 +532,7 @@
/*
-=item C<static opcode_t * runops_trace_core(PARROT_INTERP, Parrot_runcore_t
-*runcore, opcode_t *pc)>
+=item C<static opcode_t * runops_trace_core(PARROT_INTERP, opcode_t *pc)>
Runs the Parrot operations starting at C<pc> until there are no more
operations, using the tracing interpreter.
@@ -737,7 +544,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t *
-runops_trace_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
+runops_trace_core(PARROT_INTERP, ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_trace_core)
@@ -757,13 +564,9 @@
* using a distinct interpreter for tracing should be ok
* - just in case, make it easy to switch
*/
-#if 0
- debugger = interp:
-#else
Parrot_debugger_init(interp);
PARROT_ASSERT(interp->pdb);
debugger = interp->pdb->debugger;
-#endif
PARROT_ASSERT(debugger);
/* set the top of the stack so GC can trace it for GC-able pointers
@@ -827,16 +630,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t *
-runops_slow_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
+runops_slow_core(PARROT_INTERP, SHIM(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_slow_core)
if (Interp_trace_TEST(interp, PARROT_TRACE_OPS_FLAG))
- return runops_trace_core(interp, runcore, pc);
-#if 0
- if (interp->debugger && interp->debugger->pdb)
- return Parrot_debug(interp, interp->debugger, pc);
-#endif
+ return runops_trace_core(interp, pc);
while (pc) {
if (pc < code_start || pc >= code_end)
@@ -868,7 +667,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t *
-runops_gc_debug_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
+runops_gc_debug_core(PARROT_INTERP, SHIM(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_gc_debug_core)
while (pc) {
@@ -903,7 +702,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t *
-runops_debugger_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
+runops_debugger_core(PARROT_INTERP, SHIM(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_debugger_core)
@@ -950,120 +749,6 @@
}
-/*
-
-=item C<static opcode_t * runops_switch_core(PARROT_INTERP, Parrot_runcore_t
-*runcore, opcode_t *pc)>
-
-Runs the C<switch> core.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static opcode_t *
-runops_switch_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
-{
- ASSERT_ARGS(runops_switch_core)
- opcode_t * const code_start = (opcode_t *)interp->code->base.data;
- opcode_t *pc_prederef;
-
- init_prederef(interp, runcore);
- pc_prederef = (opcode_t*)interp->code->prederef.code + (pc - code_start);
-
- return switch_core(pc_prederef, interp);
-}
-
-
-/*
-
-=item C<void * init_prederef(PARROT_INTERP, Parrot_runcore_t *runcore)>
-
-Initialize: load prederef C<func_table>, file prederef.code.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-void *
-init_prederef(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
-{
- ASSERT_ARGS(init_prederef)
- load_prederef(interp, runcore);
-
- if (!interp->code->prederef.code) {
- void *pred_func;
- opcode_t *pc = interp->code->base.data;
- const size_t N = interp->code->base.size;
- size_t i, n_pics;
-
- void **temp = (void **)Parrot_memalign_if_possible(256,
- N * sizeof (void *));
- /* calc and remember pred_offset */
- CONTEXT(interp)->pred_offset = pc - (opcode_t *)temp;
-
- /* fill with the prederef__ opcode function */
- if (PARROT_RUNCORE_PREDEREF_OPS_TEST(runcore)
- && !PARROT_RUNCORE_CGOTO_OPS_TEST(runcore))
- pred_func = (void *)CORE_OPS_prederef__;
- else {
- PARROT_ASSERT(interp->op_lib->op_func_table);
- pred_func = ((void **)
- interp->op_lib->op_func_table)[CORE_OPS_prederef__];
- }
-
- for (i = n_pics = 0; i < N;) {
- op_info_t * const opinfo = &interp->op_info_table[*pc];
- size_t n = opinfo->op_count;
-
- temp[i] = pred_func;
-
- ADD_OP_VAR_PART(interp, interp->code, pc, n);
-
- pc += n;
- i += n;
- }
-
- interp->code->prederef.code = temp;
- }
-
- return NULL;
-}
-
-
-/*
-
-=item C<void load_prederef(PARROT_INTERP, Parrot_runcore_t *runcore)>
-
-C<< interp->op_lib >> = prederefed oplib.
-
-=cut
-
-*/
-
-void
-load_prederef(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
-{
- ASSERT_ARGS(load_prederef)
- const oplib_init_f init_func = get_core_op_lib_init(interp, runcore);
-
- int (*get_op)(PARROT_INTERP, const char * name, int full);
-
- get_op = interp->op_lib->op_code;
- interp->op_lib = init_func(interp, 1);
-
- /* preserve the get_op function */
- interp->op_lib->op_code = get_op;
-
- if (interp->op_lib->op_count != interp->op_count)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_PREDEREF_LOAD_ERROR,
- "Illegal op count (%d) in prederef oplib\n",
- (int)interp->op_lib->op_count);
-}
-
/*
@@ -1079,7 +764,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
oplib_init_f
-get_core_op_lib_init(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore))
+get_core_op_lib_init(SHIM_INTERP, ARGIN(Parrot_runcore_t *runcore))
{
ASSERT_ARGS(get_core_op_lib_init)
return runcore->opinit;
@@ -1105,6 +790,7 @@
ASSERT_ARGS(runops_exec_core)
UNUSED(interp);
+ UNUSED(runcore);
UNUSED(pc);
return NULL;
@@ -1113,41 +799,6 @@
/*
-=item C<static opcode_t * runops_cgp_core(PARROT_INTERP, Parrot_runcore_t
-*runcore, opcode_t *pc)>
-
-Runs the computed goto and predereferenced core.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static opcode_t *
-runops_cgp_core(PARROT_INTERP, ARGIN(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
-{
- ASSERT_ARGS(runops_cgp_core)
-#ifdef HAVE_COMPUTED_GOTO
- opcode_t * const code_start = (opcode_t *)interp->code->base.data;
- opcode_t *pc_prederef;
-
- init_prederef(interp, runcore);
-
- pc_prederef = (opcode_t *)interp->code->prederef.code + (pc - code_start);
- return cgp_core(pc_prederef, interp);
-
-#else
- UNUSED(pc);
- Parrot_io_eprintf(interp,
- "Computed goto unavailable in this configuration.\n");
- Parrot_exit(interp, 1);
-#endif
-
-}
-
-/*
-
=back
*/
Modified: branches/ops_pct/src/runcore/main.c
==============================================================================
--- branches/ops_pct/src/runcore/main.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/runcore/main.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -22,14 +22,9 @@
#include "parrot/runcore_api.h"
#include "parrot/runcore_profiling.h"
#include "parrot/oplib/core_ops.h"
-#include "parrot/oplib/core_ops_switch.h"
#include "parrot/oplib/ops.h"
#include "main.str"
-#ifdef HAVE_COMPUTED_GOTO
-# include "parrot/oplib/core_ops_cg.h"
-# include "parrot/oplib/core_ops_cgp.h"
-#endif
#include "parrot/dynext.h"
#include "pmc/pmc_parrotlibrary.h"
#include "pmc/pmc_callcontext.h"
@@ -44,12 +39,6 @@
static void dynop_register_switch(PARROT_INTERP, size_t n_old, size_t n_new)
__attribute__nonnull__(1);
-static void dynop_register_xx(PARROT_INTERP,
- size_t n_old,
- size_t n_new,
- oplib_init_f init_func)
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static oplib_init_f get_dynamic_op_lib_init(SHIM_INTERP,
@@ -62,25 +51,13 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void stop_prederef(PARROT_INTERP)
- __attribute__nonnull__(1);
-
-static void turn_ev_check(PARROT_INTERP, int on)
- __attribute__nonnull__(1);
-
#define ASSERT_ARGS_dynop_register_switch __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_dynop_register_xx __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_dynamic_op_lib_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lib))
#define ASSERT_ARGS_notify_func_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(table))
-#define ASSERT_ARGS_stop_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_turn_ev_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -105,7 +82,6 @@
Parrot_runcore_slow_init(interp);
Parrot_runcore_fast_init(interp);
- Parrot_runcore_switch_init(interp);
Parrot_runcore_exec_init(interp);
Parrot_runcore_gc_debug_init(interp);
@@ -115,11 +91,6 @@
/* set the default runcore */
Parrot_runcore_switch(interp, default_core);
-
-#ifdef HAVE_COMPUTED_GOTO
- Parrot_runcore_cgp_init(interp);
- Parrot_runcore_cgoto_init(interp);
-#endif
}
@@ -187,44 +158,6 @@
/*
-=item C<static void turn_ev_check(PARROT_INTERP, int on)>
-
-Turn on or off event checking for prederefed cores.
-
-Fills in the C<event_checker> opcode, or restores original ops in all
-branch locations of the opcode stream.
-
-Note that when C<on> is true, this is being called from the event
-handler thread.
-
-=cut
-
-*/
-
-static void
-turn_ev_check(PARROT_INTERP, int on)
-{
- ASSERT_ARGS(turn_ev_check)
- const Prederef * const pi = &interp->code->prederef;
- size_t i;
-
- if (!pi->branches)
- return;
-
- for (i = 0; i < pi->n_branches; ++i) {
- const size_t offs = pi->branches[i].offs;
- if (on)
- interp->code->prederef.code[offs] =
- ((void **)interp->op_lib->op_func_table)
- [CORE_OPS_check_events__];
- else
- interp->code->prederef.code[offs] = pi->branches[i].op;
- }
-}
-
-
-/*
-
=item C<static oplib_init_f get_dynamic_op_lib_init(PARROT_INTERP, const PMC
*lib)>
@@ -249,33 +182,6 @@
/*
-=item C<static void stop_prederef(PARROT_INTERP)>
-
-Restore the interpreter's op function tables to their initial state.
-Also recreate the event function pointers. This is only necessary
-for run-core changes, but we don't know the old run core.
-
-=cut
-
-*/
-
-static void
-stop_prederef(PARROT_INTERP)
-{
- ASSERT_ARGS(stop_prederef)
- interp->op_func_table = PARROT_CORE_OPLIB_INIT(interp, 1)->op_func_table;
-
- if (interp->evc_func_table) {
- mem_gc_free(interp, interp->evc_func_table);
- interp->evc_func_table = NULL;
- }
-
- Parrot_setup_event_func_ptrs(interp);
-}
-
-
-/*
-
=item C<void prepare_for_run(PARROT_INTERP)>
Prepares to run the interpreter's run core.
@@ -337,7 +243,6 @@
if ((int)interp->resume_offset < 0)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"branch_cs: illegal resume offset");
- stop_prederef(interp);
}
}
}
@@ -397,13 +302,12 @@
Parrot_runcore_destroy(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_runcore_destroy)
- op_lib_t *cg_lib;
size_t num_cores = interp->num_cores;
size_t i;
for (i = 0; i < num_cores; ++i) {
- Parrot_runcore_t *core = interp->cores[i];
- runcore_destroy_fn_type destroy = core->destroy;
+ Parrot_runcore_t * const core = interp->cores[i];
+ const runcore_destroy_fn_type destroy = core->destroy;
if (destroy)
(*destroy)(interp, core);
@@ -421,19 +325,6 @@
if (interp->n_libs <= 0)
return;
-#ifdef HAVE_COMPUTED_GOTO
- cg_lib = PARROT_CORE_CGP_OPLIB_INIT(interp, 1);
-
- if (cg_lib->op_func_table)
- mem_gc_free(interp, cg_lib->op_func_table);
- cg_lib->op_func_table = NULL;
-
- cg_lib = PARROT_CORE_CG_OPLIB_INIT(interp, 1);
- if (cg_lib->op_func_table)
- mem_gc_free(interp, cg_lib->op_func_table);
- cg_lib->op_func_table = NULL;
-#endif
-
mem_gc_free(interp, interp->op_info_table);
mem_gc_free(interp, interp->op_func_table);
interp->op_info_table = NULL;
@@ -457,6 +348,7 @@
*/
+PARROT_EXPORT
void
dynop_register(PARROT_INTERP, ARGIN(PMC *lib_pmc))
{
@@ -557,125 +449,10 @@
core->flags = OP_FUNC_IS_ALLOCATED | OP_INFO_IS_ALLOCATED;
/* done for plain core */
-#ifdef HAVE_COMPUTED_GOTO
- dynop_register_xx(interp, n_old, n_new, PARROT_CORE_CGP_OPLIB_INIT);
- dynop_register_xx(interp, n_old, n_new, PARROT_CORE_CG_OPLIB_INIT);
-#endif
-
dynop_register_switch(interp, n_old, n_new);
}
-/*
-
-=item C<static void dynop_register_xx(PARROT_INTERP, size_t n_old, size_t n_new,
-oplib_init_f init_func)>
-
-Register C<op_lib> with other cores.
-
-=cut
-
-*/
-
-static void
-dynop_register_xx(PARROT_INTERP,
- size_t n_old, size_t n_new, oplib_init_f init_func)
-{
- ASSERT_ARGS(dynop_register_xx)
- const size_t n_tot = n_old + n_new;
- op_func_t *ops_addr = NULL;
- op_lib_t *cg_lib = init_func(interp, 1);
-
-#if 0
- /* related to CG and CGP ops issue below */
- op_lib_t *new_lib;
- STRING *op_variant;
- oplib_init_f new_init_func;
- PMC *lib_variant;
-#endif
-
- if (cg_lib->flags & OP_FUNC_IS_ALLOCATED) {
- ops_addr = mem_gc_realloc_n_typed_zeroed(interp,
- cg_lib->op_func_table, n_tot, n_old, op_func_t);
- }
- else {
- size_t i;
-
- ops_addr = mem_gc_allocate_n_zeroed_typed(interp, n_tot, op_func_t);
- cg_lib->flags = OP_FUNC_IS_ALLOCATED;
-
- for (i = 0; i < n_old; ++i)
- ops_addr[i] = cg_lib->op_func_table[i];
- }
-
- /*
- * XXX running CG and CGP ops currently works only via the wrapper
- *
- * the problem is:
- * The actual runcores cg_core and cgp_core are very big functions.
- * The C compiler usually addresses "spilled" registers in the C stack.
- * The loaded opcode lib is another possibly big function, but with
- * a likely different stack layout. Directly jumping around between
- * code locations in these two opcode functions works, but access
- * to stack-ed (or spilled) variables fails badly.
- *
- * We would need to prepare the assembly source of the opcode
- * lib so that all variable access on the stack has the same
- * layout and compile the prepared assembly to ops_cgp?.o
- *
- * The switched core is different anyway, as we can't extend the
- * compiled big switch statement with the new cases. We have
- * always to use the wrapper__ opcode called from the default case.
- */
-#if 0
- /* check if the lib_pmc exists with a _xx flavor */
- new_init_func = get_op_lib_init(0, 0, lib_pmc);
- new_lib = new_init_func(1);
- op_variant = Parrot_sprintf_c(interp, "%s_ops%s",
- new_lib->name, cg_lib->suffix);
- lib_variant = Parrot_load_lib(interp, op_variant, NULL);
-
- /* XXX running CG and CGP ops currently works only via the wrapper */
- if (0 /*lib_variant */) {
- size_t i;
-
- new_init_func = get_dynamic_op_lib_init(interp, lib_variant);
- new_lib = new_init_func(1);
-
- for (i = n_old; i < n_tot; ++i)
- ops_addr[i] = (new_lib->op_func_table)[i - n_old];
-
- new_lib->op_func_table = ops_addr;
- new_lib->op_count = n_tot;
-
- new_init_func((long) ops_addr);
- }
- else
-#endif
- {
- size_t i;
-
- /* if not install wrappers */
- /* fill new entries with the wrapper op */
- for (i = n_old; i < n_tot; ++i)
- ops_addr[i] = ops_addr[CORE_OPS_wrapper__];
- }
-
- /* if we are running this core, update event check ops */
- if (interp->run_core->id == cg_lib->core_type) {
- size_t i;
-
- for (i = n_old; i < n_tot; ++i)
- interp->evc_func_table[i] =
- (op_func_t)ops_addr[CORE_OPS_check_events__];
- interp->save_func_table = ops_addr;
- }
-
- /* tell the cg_core about the new jump table */
- cg_lib->op_func_table = ops_addr;
- cg_lib->op_count = n_tot;
- init_func(interp, (long) ops_addr);
-}
/*
@@ -695,7 +472,7 @@
dynop_register_switch(PARROT_INTERP, size_t n_old, size_t n_new)
{
ASSERT_ARGS(dynop_register_switch)
- op_lib_t * const lib = PARROT_CORE_SWITCH_OPLIB_INIT(interp, 1);
+ op_lib_t * const lib = PARROT_CORE_OPLIB_INIT(interp, 1);
lib->op_count = n_old + n_new;
}
@@ -722,9 +499,6 @@
PARROT_ASSERT(table);
interp->op_func_table = table;
}
-
- if (PARROT_RUNCORE_EVENT_CHECK_TEST(interp->run_core))
- turn_ev_check(interp, on);
}
Modified: branches/ops_pct/src/runcore/profiling.c
==============================================================================
--- branches/ops_pct/src/runcore/profiling.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/runcore/profiling.c Wed May 5 08:45:29 2010 (r46302)
@@ -148,7 +148,7 @@
{
ASSERT_ARGS(init_profiling_core)
- char *profile_filename, *output_cstr, *filename_cstr, *annotations_cstr;
+ char *profile_filename, *output_cstr, *filename_cstr;
/* initialize the runcore struct */
runcore->runops = (Parrot_runcore_runops_fn_t) runops_profiling_core;
@@ -227,12 +227,14 @@
}
/* figure out if annotations are wanted */
- annotations_cstr = Parrot_getenv(interp, CONST_STRING(interp, "PARROT_PROFILING_ANNOTATIONS"));
-
- if (annotations_cstr) {
+ if (Parrot_getenv(interp, CONST_STRING(interp, "PARROT_PROFILING_ANNOTATIONS"))) {
Profiling_report_annotations_SET(runcore);
}
+ if (Parrot_getenv(interp, CONST_STRING(interp, "PARROT_PROFILING_CANONICAL_OUTPUT"))) {
+ Profiling_canonical_output_SET(runcore);
+ }
+
/* put profile_filename in the gc root set so it won't get collected */
Parrot_pmc_gc_register(interp, (PMC *) runcore->profile_filename);
@@ -332,7 +334,7 @@
preop_ctx->current_pc = pc;
preop_pc = pc;
- runcore->level++;
+ ++runcore->level;
Profiling_exit_check_CLEAR(runcore);
runcore->op_start = Parrot_hires_get_time();
@@ -347,7 +349,7 @@
else
op_time = runcore->op_finish - runcore->op_start;
- runcore->level--;
+ --runcore->level;
/* if current context changed since the last printing of a CS line... */
/* Occasionally the ctx stays the same while the sub changes, possible
@@ -373,7 +375,7 @@
ns_separator = Parrot_str_new(interp, ";", 1);
i = MAX_NS_DEPTH - 1;
- for (;ns ; i--) {
+ for (;ns ; --i) {
if (i < 0) {
/* should probably warn about truncated namespace here */
break;
@@ -382,21 +384,28 @@
GETATTR_NameSpace_parent(interp, ns, ns);
}
- i++;
- i++; /* the root namespace has an empty name, so ignore it */
- for (;i < MAX_NS_DEPTH; i++) {
- full_ns = Parrot_str_concat(interp, full_ns, ns_names[i], 0);
- full_ns = Parrot_str_concat(interp, full_ns, ns_separator, 0);
+ i += 2; /* the root namespace has an empty name, so ignore it */
+ for (;i < MAX_NS_DEPTH; ++i) {
+ full_ns = Parrot_str_concat(interp, full_ns, ns_names[i]);
+ full_ns = Parrot_str_concat(interp, full_ns, ns_separator);
}
GETATTR_Sub_name(interp, preop_ctx->current_sub, sub_name);
- full_ns = Parrot_str_concat(interp, full_ns, sub_name, 0);
+ full_ns = Parrot_str_concat(interp, full_ns, sub_name);
full_ns_cstr = Parrot_str_to_cstring(interp, full_ns);
pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;
pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) filename_cstr;
- pprof_data[PPROF_DATA_SUB_ADDR] = (PPROF_DATA) preop_ctx->current_sub;
- pprof_data[PPROF_DATA_CTX_ADDR] = (PPROF_DATA) preop_ctx;
+
+ if (Profiling_canonical_output_TEST(runcore)) {
+ pprof_data[PPROF_DATA_SUB_ADDR] = (PPROF_DATA) 0x3;
+ pprof_data[PPROF_DATA_CTX_ADDR] = (PPROF_DATA) 0x3;
+ }
+ else {
+ pprof_data[PPROF_DATA_SUB_ADDR] = (PPROF_DATA) preop_ctx->current_sub;
+ pprof_data[PPROF_DATA_CTX_ADDR] = (PPROF_DATA) preop_ctx;
+ }
+
runcore->output_fn(runcore, pprof_data, PPROF_LINE_CONTEXT_SWITCH);
Parrot_str_free_cstring(full_ns_cstr);
@@ -443,8 +452,13 @@
}
}
+ if (Profiling_canonical_output_TEST(runcore)) {
+ pprof_data[PPROF_DATA_TIME] = 1;
+ }
+ else {
+ pprof_data[PPROF_DATA_TIME] = op_time;
+ }
pprof_data[PPROF_DATA_LINE] = preop_line;
- pprof_data[PPROF_DATA_TIME] = op_time;
pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
}
@@ -496,7 +510,7 @@
pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
- runcore->runloop_count++;
+ ++runcore->runloop_count;
}
/*
Modified: branches/ops_pct/src/runcore/trace.c
==============================================================================
--- branches/ops_pct/src/runcore/trace.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/runcore/trace.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -25,6 +25,7 @@
#include "parrot/runcore_trace.h"
#include "parrot/oplib/ops.h"
+#include "parrot/context.h"
#include "pmc/pmc_sub.h"
#include "pmc/pmc_callcontext.h"
@@ -79,18 +80,18 @@
trace_class_name(PARROT_INTERP, ARGIN(const PMC* pmc))
{
ASSERT_ARGS(trace_class_name)
- STRING *class_name;
+
if (PObj_is_class_TEST(pmc)) {
- SLOTTYPE * const class_array = (SLOTTYPE *)PMC_data(pmc);
- PMC * const class_name_pmc = get_attrib_num(class_array,
+ SLOTTYPE * const class_array = PMC_data_typed(pmc, SLOTTYPE *);
+ PMC * const class_name_pmc = get_attrib_num(class_array,
PCD_CLASS_NAME);
- class_name = VTABLE_get_string(interp, class_name_pmc);
+ return VTABLE_get_string(interp, class_name_pmc);
}
else
- class_name = pmc->vtable->whoami;
- return class_name;
+ return pmc->vtable->whoami;
}
+
/*
=item C<void trace_pmc_dump(PARROT_INTERP, PMC *pmc)>
@@ -112,17 +113,21 @@
Parrot_io_eprintf(debugger, "(null)");
return;
}
+
if (PMC_IS_NULL(pmc)) {
Parrot_io_eprintf(debugger, "PMCNULL");
return;
}
+
if (!pmc->vtable || (UINTVAL)pmc->vtable == 0xdeadbeef) {
Parrot_io_eprintf(debugger, "<!!no vtable!!>");
return;
}
- if (PObj_on_free_list_TEST(pmc)) {
- Parrot_io_eprintf(debugger, "**************** PMC is on free list *****\n");
- }
+
+ if (PObj_on_free_list_TEST(pmc))
+ Parrot_io_eprintf(debugger,
+ "**************** PMC is on free list *****\n");
+
if (pmc->vtable->pmc_class == pmc) {
STRING * const name = trace_class_name(interp, pmc);
Parrot_io_eprintf(debugger, "Class=%Ss:PMC(%#p)", name, pmc);
@@ -133,25 +138,23 @@
Parrot_io_eprintf(debugger, "%S=PMC(%#p Str:(NULL))",
VTABLE_name(interp, pmc), pmc);
else {
- STRING* const escaped = Parrot_str_escape_truncate(
- interp, s, 20);
+ STRING * const escaped = Parrot_str_escape_truncate(interp, s, 20);
if (escaped)
Parrot_io_eprintf(debugger, "%S=PMC(%#p Str:\"%Ss\")",
- VTABLE_name(interp, pmc), pmc,
- escaped);
+ VTABLE_name(interp, pmc), pmc, escaped);
else
Parrot_io_eprintf(debugger, "%S=PMC(%#p Str:\"(null)\")",
VTABLE_name(interp, pmc), pmc);
}
}
- else if (pmc->vtable->base_type == enum_class_Boolean) {
+ else if (pmc->vtable->base_type == enum_class_Boolean)
Parrot_io_eprintf(debugger, "Boolean=PMC(%#p: %d)",
pmc, VTABLE_get_integer(interp, pmc));
- }
- else if (pmc->vtable->base_type == enum_class_Integer) {
+
+ else if (pmc->vtable->base_type == enum_class_Integer)
Parrot_io_eprintf(debugger, "Integer=PMC(%#p: %d)",
pmc, VTABLE_get_integer(interp, pmc));
- }
+
else if (pmc->vtable->base_type == enum_class_BigInt) {
STRING * const s = VTABLE_get_string(interp, pmc);
Parrot_io_eprintf(debugger, "BigInt=PMC(%#p: %Ss)",
@@ -159,8 +162,7 @@
}
else if (pmc->vtable->base_type == enum_class_Complex) {
STRING * const s = VTABLE_get_string(interp, pmc);
- Parrot_io_eprintf(debugger, "Complex=PMC(%#p: %Ss)",
- pmc, s);
+ Parrot_io_eprintf(debugger, "Complex=PMC(%#p: %Ss)", pmc, s);
}
else if (pmc->vtable->base_type == enum_class_Sub) {
PMC_get_sub(interp, pmc, sub);
@@ -177,6 +179,7 @@
}
}
+
/*
=item C<int trace_key_dump(PARROT_INTERP, PMC *key)>
@@ -198,16 +201,18 @@
while (key) {
switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
case KEY_integer_FLAG:
- len += Parrot_io_eprintf(debugger, "%vi", VTABLE_get_integer(interp, key));
+ len += Parrot_io_eprintf(debugger, "%vi",
+ VTABLE_get_integer(interp, key));
break;
case KEY_number_FLAG:
- len += Parrot_io_eprintf(debugger, "%vg", VTABLE_get_number(interp, key));
+ len += Parrot_io_eprintf(debugger, "%vg",
+ VTABLE_get_number(interp, key));
break;
case KEY_string_FLAG:
{
const STRING * const s = key_string(interp, key);
- STRING* const escaped = Parrot_str_escape_truncate(
- interp, s, 20);
+ STRING * const escaped = Parrot_str_escape_truncate(interp, s, 20);
+
if (escaped)
len += Parrot_io_eprintf(debugger, "\"%Ss\"", escaped);
else
@@ -215,33 +220,37 @@
}
break;
case KEY_integer_FLAG|KEY_register_FLAG:
- len += Parrot_io_eprintf(debugger, "I%vd=%vd", VTABLE_get_integer(interp, key),
+ len += Parrot_io_eprintf(debugger, "I%vd=%vd",
+ VTABLE_get_integer(interp, key),
REG_INT(interp, VTABLE_get_integer(interp, key)));
break;
case KEY_number_FLAG|KEY_register_FLAG:
- len += Parrot_io_eprintf(debugger, "I%vd=%vd", VTABLE_get_integer(interp, key),
+ len += Parrot_io_eprintf(debugger, "I%vd=%vd",
+ VTABLE_get_integer(interp, key),
REG_NUM(interp, VTABLE_get_integer(interp, key)));
break;
case KEY_string_FLAG|KEY_register_FLAG:
{
- const STRING * const s = REG_STR(interp, VTABLE_get_integer(interp, key));
- STRING* const escaped = Parrot_str_escape_truncate(
- interp, s, 20);
+ const STRING * const s = REG_STR(interp,
+ VTABLE_get_integer(interp, key));
+ STRING * const escaped = Parrot_str_escape_truncate(interp, s, 20);
if (escaped)
- len += Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"", VTABLE_get_integer(interp, key),
- escaped);
+ len += Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"",
+ VTABLE_get_integer(interp, key), escaped);
else
len += Parrot_io_eprintf(debugger, "S%vd=\"(null)\"",
VTABLE_get_integer(interp, key));
}
break;
case KEY_pmc_FLAG|KEY_register_FLAG:
- len += Parrot_io_eprintf(debugger, "P%vd=", VTABLE_get_integer(interp, key));
- trace_pmc_dump(debugger, REG_PMC(interp, VTABLE_get_integer(interp, key)));
+ len += Parrot_io_eprintf(debugger, "P%vd=",
+ VTABLE_get_integer(interp, key));
+ trace_pmc_dump(debugger, REG_PMC(interp,
+ VTABLE_get_integer(interp, key)));
break;
default:
len += Parrot_io_eprintf(debugger, "??");
- key = NULL;
+ key = NULL;
break;
}
@@ -250,12 +259,13 @@
if (key)
len += Parrot_io_eprintf(debugger, ";");
}
- } /* while */
+ }
len += Parrot_io_eprintf(debugger, "]");
return len;
}
+
/*
=item C<void trace_op_dump(PARROT_INTERP, const opcode_t *code_start, const
@@ -275,29 +285,23 @@
ARGIN(const opcode_t *pc))
{
ASSERT_ARGS(trace_op_dump)
- INTVAL s, n;
- int more = 0, var_args;
- Interp * const debugger = debugger_or_interp(interp);
- op_info_t * const info = &interp->op_info_table[*pc];
- PMC *sig;
- int type;
- int len;
-#define ARGS_COLUMN 40
+ Interp * const debugger = debugger_or_interp(interp);
+ op_info_t * const info = &interp->op_info_table[*pc];
+ PMC *sig = PMCNULL;
+ INTVAL n = info->op_count;
+ INTVAL s = 1;
+ int more = 0, type;
+ int var_args = 0;
- PARROT_ASSERT(debugger);
- sig = NULL; /* silence compiler uninit warning */
+ int len = Parrot_io_eprintf(debugger, "%04vx ", (UINTVAL)(pc - code_start))
+ + Parrot_io_eprintf(debugger, "%s", info->name);
+
+#define ARGS_COLUMN 40
- s = 1;
- len = Parrot_io_eprintf(debugger, "%6vu ", (UINTVAL)(pc - code_start));
- len += Parrot_io_eprintf(debugger, "%s", info->name);
-
- n = info->op_count;
- var_args = 0;
-
- if (*pc == PARROT_OP_set_args_pc ||
- *pc == PARROT_OP_get_results_pc ||
- *pc == PARROT_OP_get_params_pc ||
- *pc == PARROT_OP_set_returns_pc) {
+ if (*pc == PARROT_OP_set_args_pc
+ || *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;
if (!sig)
@@ -305,18 +309,18 @@
"NULL sig PMC detected in trace_op_dump");
var_args = VTABLE_elements(interp, sig);
- n += var_args;
+ n += var_args;
}
if (n > 1) {
INTVAL i;
len += Parrot_io_eprintf(debugger, " ");
/* pass 1 print arguments */
- for (i = s; i < n; i++) {
+ for (i = s; i < n; ++i) {
const opcode_t o = pc[i];
- if (i < info->op_count) {
+
+ if (i < info->op_count)
type = info->types[i - 1];
- }
else {
if (!sig)
Parrot_ex_throw_from_c_args(interp, NULL, 1,
@@ -325,19 +329,22 @@
type = VTABLE_get_integer_keyed_int(interp, sig, i - 2) &
(PARROT_ARG_TYPE_MASK|PARROT_ARG_CONSTANT);
}
- if (i > s &&
- type != PARROT_ARG_KC &&
- type != PARROT_ARG_KIC &&
- type != PARROT_ARG_KI &&
- type != PARROT_ARG_K) {
+
+ if (i > s
+ && type != PARROT_ARG_KC
+ && type != PARROT_ARG_KIC
+ && type != PARROT_ARG_KI
+ && type != PARROT_ARG_K)
len += Parrot_io_eprintf(debugger, ", ");
- }
+
switch (type) {
case PARROT_ARG_IC:
len += Parrot_io_eprintf(debugger, "%vd", o);
break;
case PARROT_ARG_NC:
- len += Parrot_io_eprintf(debugger, "%vg", PCONST(o)->u.number);
+ len += Parrot_io_eprintf(debugger, "%vg",
+ Parrot_pcc_get_num_constant(interp,
+ CURRENT_CONTEXT(interp), o));
break;
case PARROT_ARG_PC:
if (var_args)
@@ -348,9 +355,9 @@
break;
case PARROT_ARG_SC:
{
- STRING* const escaped = Parrot_str_escape_truncate(
- interp,
- PCONST(o)->u.string, 20);
+ STRING * const escaped = Parrot_str_escape_truncate(
+ interp, Parrot_pcc_get_string_constant(interp,
+ CURRENT_CONTEXT(interp), o), 20);
if (escaped)
len += Parrot_io_eprintf(debugger, "\"%Ss\"", escaped);
else
@@ -358,7 +365,9 @@
}
break;
case PARROT_ARG_KC:
- len += trace_key_dump(interp, PCONST(o)->u.key);
+ len += trace_key_dump(interp,
+ Parrot_pcc_get_pmc_constant(interp,
+ CURRENT_CONTEXT(interp), o));
break;
case PARROT_ARG_KIC:
len += Parrot_io_eprintf(debugger, "[%vd]", o);
@@ -393,29 +402,30 @@
break;
}
}
+
if (!more)
goto done;
+
if (len < ARGS_COLUMN) {
STRING * const fill = Parrot_str_repeat(debugger,
- Parrot_str_new_constant(debugger, " "),
- ARGS_COLUMN);
+ Parrot_str_new_constant(debugger, " "), ARGS_COLUMN);
Parrot_io_putps(debugger, Parrot_io_STDERR(debugger), fill);
}
- else {
+ else
Parrot_io_eprintf(debugger, "\t");
- }
/* pass 2 print argument details if needed */
- for (i = 1; i < n; i++) {
+ for (i = 1; i < n; ++i) {
const opcode_t o = pc[i];
if (i < info->op_count)
type = info->types[i - 1];
else
type = VTABLE_get_integer_keyed_int(interp, sig, i - 2) &
(PARROT_ARG_TYPE_MASK|PARROT_ARG_CONSTANT);
- if (i > s) {
+
+ if (i > s)
Parrot_io_eprintf(debugger, " ");
- }
+
switch (type) {
case PARROT_ARG_I:
Parrot_io_eprintf(debugger, "I%vd=%vd", o, REG_INT(interp, o));
@@ -425,7 +435,8 @@
break;
case PARROT_ARG_PC:
Parrot_io_eprintf(debugger, "PC%vd=", o);
- trace_pmc_dump(interp, PCONST(o)->u.key);
+ trace_pmc_dump(interp, Parrot_pcc_get_pmc_constant(interp,
+ CURRENT_CONTEXT(interp), o));
break;
case PARROT_ARG_P:
Parrot_io_eprintf(debugger, "P%vd=", o);
@@ -433,10 +444,9 @@
break;
case PARROT_ARG_S:
if (REG_STR(interp, o)) {
- STRING* const escaped = Parrot_str_escape_truncate(
+ STRING * const escaped = Parrot_str_escape_truncate(
interp, REG_STR(interp, o), 20);
- Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"", o,
- escaped);
+ Parrot_io_eprintf(debugger, "S%vd=\"%Ss\"", o, escaped);
}
else
Parrot_io_eprintf(debugger, "S%vd=\"(null)\"", o);
@@ -456,20 +466,21 @@
done:
if (interp->code->annotations) {
- PMC * const annot = PackFile_Annotations_lookup(interp, interp->code->annotations,
- pc - code_start + 1, NULL);
+ PMC * const annot = PackFile_Annotations_lookup(interp,
+ interp->code->annotations, pc - code_start + 1, NULL);
+
if (!PMC_IS_NULL(annot)) {
PMC * const pfile = VTABLE_get_pmc_keyed_str(interp, annot,
Parrot_str_new_constant(interp, "file"));
PMC * const pline = VTABLE_get_pmc_keyed_str(interp, annot,
Parrot_str_new_constant(interp, "line"));
+
if ((!PMC_IS_NULL(pfile)) && (!PMC_IS_NULL(pline))) {
/* The debugger interpreter may not be the same as
* the main interpreter, extract values from the
- * PMC instad of passing them directly
- */
+ * PMC instad of passing them directly */
STRING * const file = VTABLE_get_string(interp, pfile);
- const INTVAL line = VTABLE_get_integer(interp, pline);
+ const INTVAL line = VTABLE_get_integer(interp, pline);
Parrot_io_eprintf(debugger, " (%Ss:%li)", file, (long)line);
}
}
@@ -478,13 +489,13 @@
Parrot_io_eprintf(debugger, "\n");
}
+
/*
=item C<void trace_op(PARROT_INTERP, const opcode_t *code_start, const opcode_t
*code_end, const opcode_t *pc)>
-Prints the PC, OP and ARGS. Used by C<runops_trace()>. With bounds
-checking.
+Prints the PC, OP and ARGS. Used by C<runops_trace()>. With bounds checking.
I<Not really part of the API.>
@@ -499,16 +510,18 @@
ARGIN_NULLOK(const opcode_t *pc))
{
ASSERT_ARGS(trace_op)
- if (!pc) {
+
+ if (!pc)
return;
- }
if (pc >= code_start && pc < code_end)
trace_op_dump(interp, code_start, pc);
else
- Parrot_io_eprintf(interp, "PC=%ld; OP=<err>\n", (long)(pc - code_start));
+ Parrot_io_eprintf(interp, "PC=%ld; OP=<err>\n",
+ (long)(pc - code_start));
}
+
/*
=back
Modified: branches/ops_pct/src/scheduler.c
==============================================================================
--- branches/ops_pct/src/scheduler.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/scheduler.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2007-2009, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -18,6 +18,7 @@
#include "parrot/parrot.h"
#include "parrot/scheduler_private.h"
+#include "parrot/runcore_api.h"
#include "pmc/pmc_scheduler.h"
#include "pmc/pmc_task.h"
@@ -328,7 +329,7 @@
FLOATVAL duration = VTABLE_get_number_keyed_int(interp, task,
PARROT_TIMER_INTERVAL);
if (repeat != 0) {
- PMC *repeat_task = VTABLE_clone(interp, task);
+ PMC * const repeat_task = VTABLE_clone(interp, task);
VTABLE_set_number_keyed_int(interp, repeat_task, PARROT_TIMER_NSEC, duration);
if (repeat > 0)
@@ -356,7 +357,7 @@
ARGIN(PMC *user_data), ARGIN(char *ext_data))
{
ASSERT_ARGS(Parrot_cx_schedule_callback)
- PMC *callback = Parrot_pmc_new(interp, enum_class_Task);
+ PMC * const callback = Parrot_pmc_new(interp, enum_class_Task);
Parrot_Task_attributes * const task_struct = PARROT_TASK(callback);
task_struct->type = CONST_STRING(interp, "callback");
@@ -444,7 +445,7 @@
LOCK(sched_struct->msg_lock);
/* Search the task index for GC suspend tasks */
num_tasks = VTABLE_elements(interp, sched_struct->messages);
- for (index = 0; index < num_tasks; index++) {
+ for (index = 0; index < num_tasks; ++index) {
PMC *message = VTABLE_get_pmc_keyed_int(interp, sched_struct->messages, index);
if (!PMC_IS_NULL(message)
&& Parrot_str_equal(interp, VTABLE_get_string(interp, message),
@@ -530,11 +531,10 @@
Parrot_str_equal(interp, handler_type, event_str) ?
Hevent :
Hunknown;
- STRING * const handler_name = (htype == Hexception) ?
- handler_str : (STRING *) NULL;
+ STRING * const handler_name = (htype == Hexception) ? handler_str : (STRING *)NULL;
for (index = 0; index < elements; ++index) {
- PMC *handler = VTABLE_get_pmc_keyed_int(interp, handlers, index);
+ PMC * const handler = VTABLE_get_pmc_keyed_int(interp, handlers, index);
if (!PMC_IS_NULL(handler)) {
switch (htype) {
case Hexception:
@@ -578,7 +578,7 @@
Parrot_cx_count_handlers_local(PARROT_INTERP, ARGIN(STRING *handler_type))
{
ASSERT_ARGS(Parrot_cx_count_handlers_local)
- PMC *handlers = Parrot_pcc_get_handlers(interp, interp->ctx);
+ PMC * const handlers = Parrot_pcc_get_handlers(interp, interp->ctx);
INTVAL elements;
if (PMC_IS_NULL(handlers))
@@ -604,20 +604,19 @@
(Parrot_str_equal(interp, handler_type, event_str)) ?
Hevent :
Hunknown;
- STRING * const handler_name = (htype == Hexception) ?
- handler_str : (STRING *) NULL;
+ STRING * const handler_name = (htype == Hexception) ? handler_str : (STRING *)NULL;
for (index = 0; index < elements; ++index) {
- PMC *handler = VTABLE_get_pmc_keyed_int(interp, handlers, index);
+ PMC * const handler = VTABLE_get_pmc_keyed_int(interp, handlers, index);
if (!PMC_IS_NULL(handler)) {
switch (htype) {
case Hexception:
if (VTABLE_isa(interp, handler, handler_name))
- count++;
+ ++count;
break;
case Hevent:
if (handler->vtable->base_type == enum_class_EventHandler)
- count++;
+ ++count;
break;
default:
break;
@@ -644,7 +643,7 @@
Parrot_cx_add_handler(PARROT_INTERP, ARGIN(PMC *handler))
{
ASSERT_ARGS(Parrot_cx_add_handler)
- STRING *add_handler = CONST_STRING(interp, "add_handler");
+ STRING * const add_handler = CONST_STRING(interp, "add_handler");
if (!interp->scheduler)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
"Scheduler was not initialized for this interpreter.\n");
@@ -894,7 +893,7 @@
keep_context = context;
/* Loop from newest handler to oldest handler. */
while (!PMC_IS_NULL(iter) && VTABLE_get_bool(interp, iter)) {
- PMC *handler = VTABLE_shift_pmc(interp, iter);
+ PMC * const handler = VTABLE_shift_pmc(interp, iter);
if (!PMC_IS_NULL(handler)) {
INTVAL valid_handler = 0;
@@ -1070,7 +1069,7 @@
/* Sweep the wait list for completed timers */
num_tasks = VTABLE_elements(interp, sched_struct->wait_index);
- for (index = 0; index < num_tasks; index++) {
+ for (index = 0; index < num_tasks; ++index) {
INTVAL tid = VTABLE_get_integer_keyed_int(interp, sched_struct->wait_index, index);
if (tid > 0) {
PMC *task = VTABLE_get_pmc_keyed_int(interp, sched_struct->task_list, tid);
Modified: branches/ops_pct/src/spf_render.c
==============================================================================
--- branches/ops_pct/src/spf_render.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/spf_render.c Wed May 5 08:45:29 2010 (r46302)
@@ -65,19 +65,19 @@
FUNC_MODIFIES(*out)
FUNC_MODIFIES(*info);
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * handle_flags(PARROT_INTERP,
ARGIN(const SpfInfo *info),
- ARGMOD(STRING *str),
+ ARGIN(STRING *str),
INTVAL is_int_type,
ARGIN_NULLOK(STRING* prefix))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*str);
+ __attribute__nonnull__(3);
PARROT_CANNOT_RETURN_NULL
-static STRING* str_append_w_flags(PARROT_INTERP,
+static STRING* str_concat_w_flags(PARROT_INTERP,
ARGOUT(STRING *dest),
ARGIN(const SpfInfo *info),
ARGMOD(STRING *src),
@@ -96,7 +96,7 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(info) \
, PARROT_ASSERT_ARG(str))
-#define ASSERT_ARGS_str_append_w_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_str_concat_w_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(dest) \
, PARROT_ASSERT_ARG(info) \
@@ -123,9 +123,10 @@
*/
+PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-handle_flags(PARROT_INTERP, ARGIN(const SpfInfo *info), ARGMOD(STRING *str),
+handle_flags(PARROT_INTERP, ARGIN(const SpfInfo *info), ARGIN(STRING *str),
INTVAL is_int_type, ARGIN_NULLOK(STRING* prefix))
{
ASSERT_ARGS(handle_flags)
@@ -135,52 +136,38 @@
if (info->flags & FLAG_PREC && info->prec == 0 &&
len == 1 &&
string_ord(interp, str, 0) == '0') {
- Parrot_str_chopn_inplace(interp, str, len);
+ str = Parrot_str_chopn(interp, str, len);
len = 0;
}
/* +, space */
if (!len || string_ord(interp, str, 0) != '-') {
if (info->flags & FLAG_PLUS) {
STRING * const cs = CONST_STRING(interp, "+");
- str = Parrot_str_concat(interp, cs, str, 0);
- len++;
+ str = Parrot_str_concat(interp, cs, str);
+ ++len;
}
else if (info->flags & FLAG_SPACE) {
STRING * const cs = CONST_STRING(interp, " ");
- str = Parrot_str_concat(interp, cs, str, 0);
- len++;
+ str = Parrot_str_concat(interp, cs, str);
+ ++len;
}
}
/* # 0x ... */
if ((info->flags & FLAG_SHARP) && prefix) {
- str = Parrot_str_concat(interp, prefix, str, 0);
+ str = Parrot_str_concat(interp, prefix, str);
len += Parrot_str_byte_length(interp, prefix);
}
/* XXX sharp + fill ??? */
-
-#if 0
- /* precision - only for floats, which is handled elsewhere */
- if (info->flags & FLAG_PREC) {
- info->flags |= FLAG_WIDTH;
- if (string_ord(interp, str, 0) == '-' ||
- string_ord(interp, str, 0) == '+') {
- info->width = info->prec + 1;
- }
- else {
- info->width = info->prec;
- }
- }
-#endif
}
else {
/* string precision */
if (info->flags & FLAG_PREC && info->prec == 0) {
- Parrot_str_chopn_inplace(interp, str, len);
+ str = Parrot_str_chopn(interp, str, len);
len = 0;
}
else if (info->flags & FLAG_PREC && info->prec < len) {
- Parrot_str_chopn_inplace(interp, str, -(INTVAL)(info->prec));
+ str = Parrot_str_chopn(interp, str, -(INTVAL)(info->prec));
len = info->prec;
}
}
@@ -193,7 +180,7 @@
STRING * const fill = Parrot_str_repeat(interp, filler, info->width - len);
if (info->flags & FLAG_MINUS) { /* left-align */
- str = Parrot_str_concat(interp, str, fill, 0);
+ str = Parrot_str_concat(interp, str, fill);
}
else { /* right-align */
/* signed and zero padded */
@@ -202,14 +189,13 @@
string_ord(interp, str, 0) == '+')) {
STRING *temp = NULL;
STRING *ignored;
- ignored = Parrot_str_substr(interp, str, 1, len-1, &temp, 0);
- UNUSED(ignored);
- Parrot_str_chopn_inplace(interp, str, -1);
- str = Parrot_str_append(interp, str, fill);
- str = Parrot_str_append(interp, str, temp);
+ temp = Parrot_str_substr(interp, str, 1, len-1);
+ str = Parrot_str_chopn(interp, str, -1);
+ str = Parrot_str_concat(interp, str, fill);
+ str = Parrot_str_concat(interp, str, temp);
}
else {
- str = Parrot_str_concat(interp, fill, str, 0);
+ str = Parrot_str_concat(interp, fill, str);
}
}
}
@@ -218,7 +204,7 @@
/*
-=item C<static STRING* str_append_w_flags(PARROT_INTERP, STRING *dest, const
+=item C<static STRING* str_concat_w_flags(PARROT_INTERP, STRING *dest, const
SpfInfo *info, STRING *src, STRING *prefix)>
Used by Parrot_sprintf_format. Prepends supplied prefix for numeric
@@ -232,12 +218,12 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-str_append_w_flags(PARROT_INTERP, ARGOUT(STRING *dest), ARGIN(const SpfInfo *info),
+str_concat_w_flags(PARROT_INTERP, ARGOUT(STRING *dest), ARGIN(const SpfInfo *info),
ARGMOD(STRING *src), ARGIN_NULLOK(STRING *prefix))
{
- ASSERT_ARGS(str_append_w_flags)
+ ASSERT_ARGS(str_concat_w_flags)
src = handle_flags(interp, info, src, 1, prefix);
- dest = Parrot_str_append(interp, dest, src);
+ dest = Parrot_str_concat(interp, dest, src);
return dest;
}
@@ -309,8 +295,8 @@
/*
-=item C<STRING * Parrot_sprintf_format(PARROT_INTERP, STRING *pat, SPRINTF_OBJ
-*obj)>
+=item C<STRING * Parrot_sprintf_format(PARROT_INTERP, const STRING *pat,
+SPRINTF_OBJ *obj)>
This is the engine that does all the formatting.
@@ -321,14 +307,13 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
STRING *
-Parrot_sprintf_format(PARROT_INTERP,
- ARGIN(STRING *pat), ARGIN(SPRINTF_OBJ *obj))
+Parrot_sprintf_format(PARROT_INTERP, ARGIN(const STRING *pat), ARGMOD(SPRINTF_OBJ *obj))
{
ASSERT_ARGS(Parrot_sprintf_format)
INTVAL i;
INTVAL len = 0;
INTVAL old = 0;
- INTVAL pat_len = (INTVAL)Parrot_str_byte_length(interp, pat);
+ const INTVAL pat_len = (INTVAL)Parrot_str_byte_length(interp, pat);
HUGEINTVAL num;
/* start with a buffer; double the pattern length to avoid realloc #1 */
@@ -341,23 +326,21 @@
STRING *substr = NULL;
char tc[PARROT_SPRINTF_BUFFER_SIZE];
- for (i = 0; i < pat_len; i++) {
+ for (i = 0; i < pat_len; ++i) {
if (string_ord(interp, pat, i) == '%') { /* % */
if (len) {
- STRING *ignored
- = Parrot_str_substr(interp, pat, old, len, &substr, 1);
- UNUSED(ignored);
+ substr = Parrot_str_substr(interp, pat, old, len);
/* XXX This shouldn't modify targ the pointer */
- targ = Parrot_str_append(interp, targ, substr);
+ targ = Parrot_str_concat(interp, targ, substr);
}
len = 0;
old = i;
if (string_ord(interp, pat, i + 1) == '%') {
/* skip this one, make next the first char
* of literal sequence, starting at old */
- i++;
- old++;
- len++;
+ ++i;
+ ++old;
+ ++len;
continue;
}
else {
@@ -462,7 +445,7 @@
* set flags--the last does all the work.
*/
- for (i++; i < pat_len && info.phase != PHASE_DONE; i++) {
+ for (++i; i < pat_len && info.phase != PHASE_DONE; ++i) {
const INTVAL ch = string_ord(interp, pat, i);
switch (info.phase) {
@@ -602,7 +585,7 @@
{
STRING * const ts = string_chr(interp,
(UINTVAL)obj->getint(interp, info.type, obj));
- targ = str_append_w_flags(interp, targ, &info, ts, NULL);
+ targ = str_concat_w_flags(interp, targ, &info, ts, NULL);
}
break;
@@ -616,7 +599,7 @@
/* unsigned conversion - no plus */
info.flags &= ~FLAG_PLUS;
- targ = str_append_w_flags(interp, targ,
+ targ = str_concat_w_flags(interp, targ,
&info, ts, prefix);
}
break;
@@ -631,7 +614,7 @@
/* unsigned conversion - no plus */
info.flags &= ~FLAG_PLUS;
- targ = str_append_w_flags(interp, targ,
+ targ = str_concat_w_flags(interp, targ,
&info, ts, prefix);
}
break;
@@ -641,13 +624,13 @@
STRING * const prefix = CONST_STRING(interp, "0X");
const UHUGEINTVAL theuint =
obj->getuint(interp, info.type, obj);
- STRING * const ts =
+ STRING * ts =
Parrot_str_from_uint(interp, tc, theuint, 16, 0);
- Parrot_str_upcase_inplace(interp, ts);
+ ts = Parrot_str_upcase(interp, ts);
/* unsigned conversion - no plus */
info.flags &= ~FLAG_PLUS;
- targ = str_append_w_flags(interp, targ,
+ targ = str_concat_w_flags(interp, targ,
&info, ts, prefix);
}
break;
@@ -662,7 +645,7 @@
/* unsigned conversion - no plus */
info.flags &= ~FLAG_PLUS;
- targ = str_append_w_flags(interp, targ,
+ targ = str_concat_w_flags(interp, targ,
&info, ts, prefix);
}
break;
@@ -677,7 +660,7 @@
/* unsigned conversion - no plus */
info.flags &= ~FLAG_PLUS;
- targ = str_append_w_flags(interp, targ,
+ targ = str_concat_w_flags(interp, targ,
&info, ts, prefix);
}
break;
@@ -716,7 +699,7 @@
#endif
Parrot_str_free_cstring(tempstr);
}
- targ = Parrot_str_append(interp, targ, cstr2pstr(tc));
+ targ = Parrot_str_concat(interp, targ, cstr2pstr(tc));
}
break;
@@ -728,7 +711,7 @@
STRING * const ts = Parrot_str_from_uint(interp, tc,
(UHUGEINTVAL) (size_t) ptr, 16, 0);
- targ = str_append_w_flags(interp, targ, &info,
+ targ = str_concat_w_flags(interp, targ, &info,
ts, prefix);
}
break;
@@ -786,7 +769,7 @@
|| ch == 'e' || ch == 'E') {
const size_t tclen = strlen(tc);
size_t j;
- for (j = 0; j < tclen; j++) {
+ for (j = 0; j < tclen; ++j) {
if ((tc[j] == 'e' || tc[j] == 'E')
&& (tc[j+1] == '+' || tc[j+1] == '-')
&& tc[j+2] == '0'
@@ -816,7 +799,7 @@
}
#endif /* WIN32 */
- targ = Parrot_str_append(interp, targ, cstr2pstr(tc));
+ targ = Parrot_str_concat(interp, targ, cstr2pstr(tc));
}
break;
@@ -834,9 +817,9 @@
STRING * const string = (VTABLE_get_repr(interp, tmp));
STRING * const ts = handle_flags(interp, &info,
string, 0, NULL);
- obj->index++;
+ ++obj->index;
- targ = Parrot_str_append(interp, targ, ts);
+ targ = Parrot_str_concat(interp, targ, ts);
break;
}
@@ -849,7 +832,7 @@
if (!STRING_IS_NULL(string)) {
STRING * const ts = handle_flags(interp,
&info, string, 0, NULL);
- targ = Parrot_str_append(interp, targ, ts);
+ targ = Parrot_str_concat(interp, targ, ts);
}
}
break;
@@ -858,7 +841,7 @@
/* fake the old %P and %S commands */
if (info.type == SIZE_PMC
|| info.type == SIZE_PSTR) {
- i--;
+ --i;
goto CASE_s;
/* case 's' will see the SIZE_PMC or SIZE_PSTR
* and assume it was %Ps (or %Ss). Genius,
@@ -885,16 +868,15 @@
}
old = i;
- i--;
+ --i;
}
else {
- len++;
+ ++len;
}
}
if (len) {
- STRING *ignored = Parrot_str_substr(interp, pat, old, len, &substr, 1);
- UNUSED(ignored);
- targ = Parrot_str_append(interp, targ, substr);
+ substr = Parrot_str_substr(interp, pat, old, len);
+ targ = Parrot_str_concat(interp, targ, substr);
}
return targ;
Modified: branches/ops_pct/src/spf_vtable.c
==============================================================================
--- branches/ops_pct/src/spf_vtable.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/spf_vtable.c Wed May 5 08:45:29 2010 (r46302)
@@ -450,10 +450,10 @@
((PMC *)obj->data),
(obj->index));
- obj->index++;
+ ++obj->index;
s = VTABLE_get_string(interp, tmp);
/* XXX Parrot_str_copy like below? + adjusting bufused */
- return Parrot_str_substr(interp, s, 0, 1, NULL, 0);
+ return Parrot_str_substr(interp, s, 0, 1);
}
/*
@@ -473,13 +473,12 @@
getint_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
{
ASSERT_ARGS(getint_pmc)
- HUGEINTVAL ret;
+
PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
((PMC *)obj->data),
- (obj->index));
+ (obj->index++));
- obj->index++;
- ret = VTABLE_get_integer(interp, tmp);
+ HUGEINTVAL ret = VTABLE_get_integer(interp, tmp);
switch (size) {
case SIZE_SHORT:
@@ -513,13 +512,12 @@
getuint_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
{
ASSERT_ARGS(getuint_pmc)
- UHUGEINTVAL ret;
+
PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
((PMC *)obj->data),
- (obj->index));
+ (obj->index++));
- obj->index++;
- ret = (UINTVAL)VTABLE_get_integer(interp, tmp);
+ UHUGEINTVAL ret = (UINTVAL)VTABLE_get_integer(interp, tmp);
switch (size) {
case SIZE_SHORT:
@@ -553,13 +551,11 @@
getfloat_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
{
ASSERT_ARGS(getfloat_pmc)
- HUGEFLOATVAL ret;
- PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
+ PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
((PMC *)obj->data),
- (obj->index));
+ (obj->index++));
- obj->index++;
- ret = (HUGEFLOATVAL)(VTABLE_get_number(interp, tmp));
+ HUGEFLOATVAL ret = (HUGEFLOATVAL)(VTABLE_get_number(interp, tmp));
switch (size) {
case SIZE_SHORT:
@@ -591,14 +587,13 @@
getstring_pmc(PARROT_INTERP, SHIM(INTVAL size), ARGIN(SPRINTF_OBJ *obj))
{
ASSERT_ARGS(getstring_pmc)
- STRING *s;
+
PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
((PMC *)obj->data),
- (obj->index));
+ (obj->index++));
- obj->index++;
- s = (STRING *)(VTABLE_get_string(interp, tmp));
- return s;
+ STRING * const str = (STRING *)(VTABLE_get_string(interp, tmp));
+ return str;
}
/*
@@ -619,11 +614,9 @@
{
ASSERT_ARGS(getptr_pmc)
PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
- ((PMC *)obj->data), (obj->index));
+ ((PMC *)obj->data), (obj->index++));
const INTVAL i = VTABLE_get_integer(interp, tmp);
- obj->index++;
-
/* XXX correct? */
return (void *)i;
}
Modified: branches/ops_pct/src/string/api.c
==============================================================================
--- branches/ops_pct/src/string/api.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/api.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -28,10 +28,12 @@
#include "api.str"
/* for parrot/interpreter.h */
+#if PARROT_CATCH_NULL
STRING *STRINGNULL;
+#endif
#define nonnull_encoding_name(s) (s) ? (s)->encoding->name : "null string"
-#define saneify_string(s) \
+#define ASSERT_STRING_SANITY(s) \
PARROT_ASSERT((s)->encoding); \
PARROT_ASSERT((s)->charset); \
PARROT_ASSERT(!PObj_on_free_list_TEST(s))
@@ -41,16 +43,8 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void make_writable(PARROT_INTERP,
- ARGMOD(STRING **s),
- const size_t len,
- parrot_string_representation_t representation)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
PARROT_INLINE
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
PARROT_CAN_RETURN_NULL
static const CHARSET * string_rep_compatible(SHIM_INTERP,
ARGIN(const STRING *a),
@@ -61,9 +55,6 @@
__attribute__nonnull__(4)
FUNC_MODIFIES(*e);
-#define ASSERT_ARGS_make_writable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_string_rep_compatible __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(a) \
, PARROT_ASSERT_ARG(b) \
@@ -82,185 +73,13 @@
*/
PARROT_EXPORT
+PARROT_HOT
+PARROT_PURE_FUNCTION
INTVAL
Parrot_str_is_null(SHIM_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_is_null)
- return !s || s == STRINGNULL;
-}
-
-
-/*
-
-=item C<INTVAL STRING_is_null(PARROT_INTERP, const STRING *s)>
-
-Tests if the given STRING is STRINGNULL.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-INTVAL
-STRING_is_null(SHIM_INTERP, ARGIN_NULLOK(const STRING *s))
-{
- ASSERT_ARGS(STRING_is_null)
- return !s || s == STRINGNULL;
-}
-
-
-/*
-
-=item C<void Parrot_str_write_COW(PARROT_INTERP, STRING *s)>
-
-If the specified Parrot string is copy-on-write then the memory is
-copied over and the copy-on-write flag is cleared.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_write_COW(PARROT_INTERP, ARGMOD(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_write_COW)
-
- /* COW_FLAG | constant_FLAG | external_FLAG) */
- if (PObj_is_cowed_TESTALL(s)) {
- STRING for_alloc;
-
- /* Create new pool data for this header to use,
- * independent of the original COW data */
- PObj_constant_CLEAR(s);
-
- /* constant may have been marked */
- PObj_live_CLEAR(s);
-
- /*
- * allocate a dummy strings memory
- * buflen might be bigger and used, so pass this length
- * also be sure not to allocate from the constant pool
- */
- PObj_flags_CLEARALL(&for_alloc);
- Parrot_gc_allocate_string_storage(interp, &for_alloc, Buffer_buflen(s));
-
- /* now copy memory over */
- mem_sys_memcopy(for_alloc.strstart, s->strstart, s->bufused);
-
- /* and finally use that string memory */
-
- Buffer_bufstart(s) = Buffer_bufstart(&for_alloc);
- s->strstart = for_alloc.strstart;
- Buffer_buflen(s) = Buffer_buflen(&for_alloc);
-
- /* COW_FLAG | external_FLAG */
- PObj_is_external_CLEARALL(s);
- }
-
- s->hashval = 0;
-}
-
-/*
-
-=item C<STRING * Parrot_str_new_COW(PARROT_INTERP, STRING *s)>
-
-Creates a copy-on-write string, cloning a string header without
-allocating a new buffer.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING *
-Parrot_str_new_COW(PARROT_INTERP, ARGMOD(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_new_COW)
- STRING *d;
-
- if (PObj_constant_TEST(s)) {
- d = Parrot_gc_new_string_header(interp,
- PObj_get_FLAGS(s) & ~PObj_constant_FLAG);
- PObj_COW_SET(s);
- STRUCT_COPY(d, s);
- /* we can't move the memory, because constants aren't
- * scanned in compact_pool, therefore the other end
- * would point to garbage.
- */
- PObj_constant_CLEAR(d);
- PObj_external_SET(d);
- }
- else {
- d = Parrot_gc_new_string_header(interp, PObj_get_FLAGS(s));
- PObj_COW_SET(s);
- STRUCT_COPY(d, s);
- PObj_sysmem_CLEAR(d);
- }
- return d;
-}
-
-/*
-
-=item C<STRING * Parrot_str_reuse_COW(PARROT_INTERP, STRING *s, STRING *d)>
-
-Creates a copy-on-write string by cloning a string header without
-allocating a new buffer. Doesn't allocate a new string header, instead
-using the one passed in and returns it.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_reuse_COW(SHIM_INTERP, ARGMOD(STRING *s), ARGOUT(STRING *d))
-{
- ASSERT_ARGS(Parrot_str_reuse_COW)
-
- if (PObj_constant_TEST(s)) {
- PObj_COW_SET(s);
- STRUCT_COPY(d, s);
- PObj_constant_CLEAR(d);
- PObj_external_SET(d);
- }
- else {
- PObj_COW_SET(s);
- STRUCT_COPY(d, s);
- PObj_sysmem_CLEAR(d);
- }
- return d;
-}
-
-/*
-
-=item C<STRING * Parrot_str_set(PARROT_INTERP, STRING *dest, STRING *src)>
-
-Makes the contents of first Parrot string a copy of the contents of
-second.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_set(PARROT_INTERP, ARGIN_NULLOK(STRING *dest), ARGMOD(STRING *src))
-{
- ASSERT_ARGS(Parrot_str_set)
- if (dest == src)
- return dest;
- if (dest) { /* && dest != src */
- /* they are different, dest is not an external string */
- dest = Parrot_str_reuse_COW(interp, src, dest);
- }
- else
- dest = Parrot_str_new_COW(interp, src);
- return dest;
+ return STRING_IS_NULL(s);
}
@@ -292,15 +111,16 @@
const size_t n_parrot_cstrings =
sizeof (parrot_cstrings) / sizeof (parrot_cstrings[0]);
- if (interp->parent_interpreter) {
+ if (interp->parent_interpreter)
interp->hash_seed = interp->parent_interpreter->hash_seed;
- }
+
/* interp is initialized from zeroed memory, so this is fine */
else if (interp->hash_seed == 0) {
/* TT #64 - use an entropy source once available */
Parrot_srand(Parrot_intval_time());
interp->hash_seed = Parrot_uint_rand(0);
}
+
/* initialize the constant string table */
if (interp->parent_interpreter) {
interp->const_cstring_table =
@@ -315,10 +135,12 @@
interp->const_cstring_hash = const_cstring_hash;
Parrot_charsets_encodings_init(interp);
+#if PARROT_CATCH_NULL
/* initialize STRINGNULL, but not in the constant table */
STRINGNULL = Parrot_str_new_init(interp, NULL, 0,
PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
PObj_constant_FLAG);
+#endif
interp->const_cstring_table =
mem_gc_allocate_n_zeroed_typed(interp, n_parrot_cstrings, STRING *);
@@ -337,6 +159,7 @@
}
}
+
/*
=item C<void Parrot_str_finish(PARROT_INTERP)>
@@ -352,6 +175,7 @@
Parrot_str_finish(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_str_finish)
+
/* all are shared between interpreters */
if (!interp->parent_interpreter) {
mem_internal_free(interp->const_cstring_table);
@@ -361,28 +185,6 @@
}
}
-/*
-
-=item C<UINTVAL string_capacity(PARROT_INTERP, const STRING *s)>
-
-Returns the capacity of the specified Parrot string in bytes, that
-is how many bytes can be appended onto strstart.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_PURE_FUNCTION
-UINTVAL
-string_capacity(SHIM_INTERP, ARGIN(const STRING *s))
-{
- ASSERT_ARGS(string_capacity)
-
- return ((ptrcast_t)Buffer_bufstart(s) + Buffer_buflen(s) -
- (ptrcast_t)s->strstart);
-}
/*
@@ -418,6 +220,7 @@
return s;
}
+
/*
=item C<static const CHARSET * string_rep_compatible(PARROT_INTERP, const STRING
@@ -428,20 +231,21 @@
ascii <op> utf8 => utf8
=> ascii, B<if> C<STRING *b> has ascii chars only.
-Returs NULL, if no compatible string representation can be found.
+Returns NULL, if no compatible string representation can be found.
=cut
*/
PARROT_INLINE
-PARROT_WARN_UNUSED_RESULT
+PARROT_IGNORABLE_RESULT
PARROT_CAN_RETURN_NULL
static const CHARSET *
string_rep_compatible(SHIM_INTERP,
ARGIN(const STRING *a), ARGIN(const STRING *b), ARGOUT(const ENCODING **e))
{
ASSERT_ARGS(string_rep_compatible)
+
if (a->encoding == b->encoding && a->charset == b->charset) {
*e = a->encoding;
return a->charset;
@@ -449,7 +253,7 @@
/* a table could possibly simplify the logic */
if (a->encoding == Parrot_utf8_encoding_ptr
- && b->charset == Parrot_ascii_charset_ptr) {
+ && b->charset == Parrot_ascii_charset_ptr) {
if (a->strlen == a->bufused) {
*e = Parrot_fixed_8_encoding_ptr;
return b->charset;
@@ -459,7 +263,7 @@
}
if (b->encoding == Parrot_utf8_encoding_ptr
- && a->charset == Parrot_ascii_charset_ptr) {
+ && a->charset == Parrot_ascii_charset_ptr) {
if (b->strlen == b->bufused) {
*e = Parrot_fixed_8_encoding_ptr;
return a->charset;
@@ -493,14 +297,47 @@
/*
-=item C<STRING * Parrot_str_concat(PARROT_INTERP, STRING *a, STRING *b, UINTVAL
-Uflags)>
+=item C<STRING* Parrot_str_clone(PARROT_INTERP, const STRING *s)>
-Concatenates two Parrot strings. If necessary, converts the second
-string's encoding and/or type to match those of the first string. If
-either string is C<NULL>, then a copy of the non-C<NULL> string is
-returned. If both strings are C<NULL>, then a new zero-length string is
-created and returned.
+Helper function to clone string.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+STRING*
+Parrot_str_clone(PARROT_INTERP, ARGIN(const STRING *s))
+{
+ ASSERT_ARGS(Parrot_str_clone)
+
+ const size_t alloc_size = s->bufused;
+ STRING * const result = Parrot_gc_new_string_header(interp, 0);
+
+ /* Copy encoding/charset/etc */
+ STRUCT_COPY(result, s);
+
+ /* Clear COW flag. We own buffer */
+ PObj_get_FLAGS(result) = PObj_is_string_FLAG
+ | PObj_is_COWable_FLAG
+ | PObj_live_FLAG;
+
+ /* Allocate new chunk of memory */
+ Parrot_gc_allocate_string_storage(interp, result, alloc_size);
+
+ /* and copy it over */
+ mem_sys_memcopy(result->strstart, s->strstart, alloc_size);
+
+ return result;
+}
+
+
+/*
+
+=item C<STRING * Parrot_str_copy(PARROT_INTERP, const STRING *s)>
+
+Creates and returns a shallow copy of the specified Parrot string.
=cut
@@ -508,50 +345,58 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
STRING *
-Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(STRING *a),
- ARGIN_NULLOK(STRING *b), UINTVAL Uflags)
+Parrot_str_copy(PARROT_INTERP, ARGIN(const STRING *s))
{
- ASSERT_ARGS(Parrot_str_concat)
- if (a && a->strlen) {
- if (b && b->strlen) {
- STRING *result = Parrot_str_copy(interp, a);
- Parrot_str_write_COW(interp, result);
- return Parrot_str_append(interp, result, b);
- }
+ ASSERT_ARGS(Parrot_str_copy)
+ STRING *d;
+ const int is_movable = PObj_is_movable_TESTALL(s);
- return Parrot_str_copy(interp, a);
+ /* We set COW flag to avoid cloning buffer in compact_pool */
+
+ d = Parrot_gc_new_string_header(interp,
+ PObj_get_FLAGS(s) & ~PObj_constant_FLAG);
+ STRUCT_COPY(d, s);
+
+ /* Now check that buffer allocated from pool and affected by compacting */
+ if (is_movable) {
+ /* If so, mark it as shared */
+ INTVAL * const buffer_flags = Buffer_bufrefcountptr(d);
+ *buffer_flags |= Buffer_shared_FLAG;
}
- return b
- ? Parrot_str_copy(interp, b)
- : string_make(interp, NULL, 0, NULL, Uflags);
+ PARROT_ASSERT(is_movable == PObj_is_movable_TESTALL(d));
+
+ return d;
}
/*
-=item C<STRING * Parrot_str_append(PARROT_INTERP, STRING *a, STRING *b)>
+=item C<STRING * Parrot_str_concat(PARROT_INTERP, STRING *a, STRING *b)>
-Take in two Parrot strings and append the second to the first. NOTE THAT
-RETURN VALUE MAY NOT BE THE FIRST STRING, if the first string is COW'd or
-read-only. So make sure to _use_ the return value.
+Concatenates two Parrot strings. If necessary, converts the second
+string's encoding and/or type to match those of the first string. If
+either string is C<NULL>, then a copy of the non-C<NULL> string is
+returned. If both strings are C<NULL>, then a new zero-length string is
+created and returned.
=cut
*/
PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
STRING *
-Parrot_str_append(PARROT_INTERP, ARGMOD_NULLOK(STRING *a), ARGIN_NULLOK(STRING *b))
+Parrot_str_concat(PARROT_INTERP, ARGIN_NULLOK(STRING *a),
+ ARGIN_NULLOK(STRING *b))
{
- ASSERT_ARGS(Parrot_str_append)
- UINTVAL a_capacity;
- UINTVAL total_length;
- const CHARSET *cs;
- const ENCODING *enc;
+ ASSERT_ARGS(Parrot_str_concat)
+ const CHARSET *cs;
+ const ENCODING *enc;
+ STRING *dest;
+ UINTVAL total_length;
/* XXX should this be a CHARSET method? */
@@ -561,16 +406,11 @@
return a;
/* Is A real? */
- if (a == NULL || Buffer_bufstart(a) == NULL)
- return Parrot_str_copy(interp, b);
-
- saneify_string(a);
- saneify_string(b);
+ if (STRING_IS_NULL(a) || Buffer_bufstart(a) == NULL)
+ return b;
- /* If the destination's constant, or external then just fall back to
- Parrot_str_concat */
- if (PObj_is_cowed_TESTALL(a))
- return Parrot_str_concat(interp, a, b, 0);
+ ASSERT_STRING_SANITY(a);
+ ASSERT_STRING_SANITY(b);
cs = string_rep_compatible(interp, a, b, &enc);
@@ -584,46 +424,45 @@
|| b->encoding == Parrot_utf16_encoding_ptr
|| a->encoding == Parrot_ucs2_encoding_ptr
|| b->encoding == Parrot_ucs2_encoding_ptr)
- ? Parrot_utf16_encoding_ptr
- : Parrot_utf8_encoding_ptr;
+ ? Parrot_utf16_encoding_ptr
+ : Parrot_utf8_encoding_ptr;
- Parrot_unicode_charset_ptr->to_charset(interp, a, NULL);
- b = Parrot_unicode_charset_ptr->to_charset(interp, b,
- Parrot_gc_new_string_header(interp, 0));
+ a = Parrot_unicode_charset_ptr->to_charset(interp, a);
+ b = Parrot_unicode_charset_ptr->to_charset(interp, b);
if (a->encoding != enc)
- enc->to_encoding(interp, a, NULL);
+ a = enc->to_encoding(interp, a);
if (b->encoding != enc)
- enc->to_encoding(interp, b, NULL);
+ b = enc->to_encoding(interp, b);
}
/* calc usable and total bytes */
- a_capacity = string_capacity(interp, a);
total_length = a->bufused + b->bufused;
- /* make sure A's big enough for both */
- if (total_length > a_capacity)
- Parrot_gc_reallocate_string_storage(interp, a, total_length << 1);
+ dest = Parrot_str_new_noinit(interp, enum_stringrep_one, total_length);
+ dest->encoding = a->encoding;
+ dest->charset = a->charset;
- /* A is now ready to receive the contents of B */
+ /* Copy A first */
+ mem_sys_memcopy(dest->strstart, a->strstart, a->bufused);
/* Tack B on the end of A */
- mem_sys_memcopy((void *)((ptrcast_t)a->strstart + a->bufused),
+ mem_sys_memcopy((void *)((ptrcast_t)dest->strstart + a->bufused),
b->strstart, b->bufused);
- a->bufused += b->bufused;
- a->strlen += b_len;
- a->hashval = 0;
+ dest->bufused = a->bufused + b->bufused;
+ dest->strlen = a->strlen + b_len;
- return a;
+ return dest;
}
+
/*
-=item C<STRING * Parrot_str_new(PARROT_INTERP, const char * const buffer, const
-UINTVAL len)>
+=item C<STRING * Parrot_str_new(PARROT_INTERP, const char *buffer, const UINTVAL
+len)>
-Make a Parrot string from a specified C string.
+Makes a Parrot string from a specified C string.
=cut
@@ -634,14 +473,14 @@
PARROT_MALLOC
PARROT_CANNOT_RETURN_NULL
STRING *
-Parrot_str_new(PARROT_INTERP, ARGIN_NULLOK(const char * const buffer), const UINTVAL len)
+Parrot_str_new(PARROT_INTERP, ARGIN_NULLOK(const char *buffer), const UINTVAL len)
{
ASSERT_ARGS(Parrot_str_new)
- return Parrot_str_new_init(interp, buffer, len ? len :
- buffer ? strlen(buffer) : 0,
- PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
- 0); /* Force an 8-bit encoding at some
- point? */
+ /* Force an 8-bit encoding at some point? */
+ const UINTVAL buff_length = (len > 0) ? len : buffer ? strlen(buffer) : 0;
+
+ return Parrot_str_new_init(interp, buffer, buff_length,
+ PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
}
@@ -650,9 +489,10 @@
=item C<STRING * Parrot_str_new_from_buffer(PARROT_INTERP, Buffer *buffer, const
UINTVAL len)>
-Make a Parrot string from a Buffer.
+Makes a Parrot string from a Buffer.
-The Buffer is nulled afterwards - only one PObj can point at a given string pool object.
+The Buffer is nulled afterwards, as only one PObj can point at a given string
+pool object.
=cut
@@ -666,23 +506,23 @@
Parrot_str_new_from_buffer(PARROT_INTERP, ARGMOD(Buffer *buffer), const UINTVAL len)
{
ASSERT_ARGS(Parrot_str_new_from_buffer)
- STRING *result;
- result = Parrot_gc_new_string_header(interp, 0);
+ STRING * const result = Parrot_gc_new_string_header(interp, 0);
Buffer_bufstart(result) = Buffer_bufstart(buffer);
Buffer_buflen(result) = Buffer_buflen(buffer);
- result->strstart = (char *) Buffer_bufstart(result);
+ result->strstart = (char *)Buffer_bufstart(result);
result->bufused = len;
result->strlen = len;
result->encoding = Parrot_fixed_8_encoding_ptr;
result->charset = Parrot_binary_charset_ptr;
- Buffer_bufstart(buffer) = NULL;
Buffer_buflen(buffer) = 0;
+ Buffer_bufstart(buffer) = NULL;
return result;
}
+
/*
=item C<const char* string_primary_encoding_for_representation(PARROT_INTERP,
@@ -713,6 +553,7 @@
"invalid string representation");
}
+
/*
=item C<STRING * Parrot_str_new_constant(PARROT_INTERP, const char *buffer)>
@@ -731,10 +572,9 @@
{
ASSERT_ARGS(Parrot_str_new_constant)
DECL_CONST_CAST;
- STRING *s;
Hash * const cstring_cache = (Hash *)interp->const_cstring_hash;
-
- s = (STRING *)parrot_hash_get(interp, cstring_cache, buffer);
+ STRING *s = (STRING *)parrot_hash_get(interp,
+ cstring_cache, buffer);
if (s)
return s;
@@ -788,18 +628,17 @@
ASSERT_ARGS(string_make)
const CHARSET *charset;
- if (!charset_name)
- charset_name = "ascii";
-
- charset = Parrot_find_charset(interp, charset_name);
-
- if (!charset)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
- "Can't make '%s' charset strings", charset_name);
+ if (charset_name) {
+ charset = Parrot_find_charset(interp, charset_name);
+ if (!charset)
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+ "Can't make '%s' charset strings", charset_name);
+ }
+ else
+ charset = Parrot_get_charset(interp, 0);
return Parrot_str_new_init(interp, buffer, len,
charset->preferred_encoding, charset, flags);
-
}
@@ -889,7 +728,7 @@
if (encoding == Parrot_fixed_8_encoding_ptr)
s->strlen = len;
else
- Parrot_str_length(interp, s);
+ s->strlen = CHARSET_CODEPOINTS(interp, s);
return s;
}
@@ -902,37 +741,11 @@
if (encoding == Parrot_fixed_8_encoding_ptr)
s->strlen = len;
else
- Parrot_str_length(interp, s);
+ s->strlen = CHARSET_CODEPOINTS(interp, s);
}
- else {
+ else
s->strlen = s->bufused = 0;
- }
-
- return s;
-}
-
-
-/*
-
-=item C<STRING * Parrot_str_resize(PARROT_INTERP, STRING *s, UINTVAL addlen)>
-Grows the Parrot string's buffer by the specified number of characters.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-Parrot_str_resize(PARROT_INTERP, ARGMOD(STRING *s), UINTVAL addlen)
-{
- ASSERT_ARGS(Parrot_str_resize)
- Parrot_str_write_COW(interp, s);
-
- /* Don't check buflen, if we are here, we already checked. */
- Parrot_gc_reallocate_string_storage(interp,
- s, Buffer_buflen(s) + string_max_bytes(interp, s, addlen));
return s;
}
@@ -960,7 +773,7 @@
{
ASSERT_ARGS(Parrot_str_byte_length)
- return s ? s->strlen : 0;
+ return STRING_IS_NULL(s) ? 0 : s->strlen;
}
@@ -985,7 +798,7 @@
Parrot_str_indexed(PARROT_INTERP, ARGIN(const STRING *s), UINTVAL idx)
{
ASSERT_ARGS(Parrot_str_indexed)
- saneify_string(s);
+ ASSERT_STRING_SANITY(s);
return (INTVAL)CHARSET_GET_CODEPOINT(interp, s, idx);
}
@@ -1010,9 +823,7 @@
ARGIN(const STRING *s2), INTVAL start)
{
ASSERT_ARGS(Parrot_str_find_index)
- STRING *src, *search;
UINTVAL len;
- DECL_CONST_CAST;
if (start < 0)
return -1;
@@ -1027,11 +838,13 @@
if (!Parrot_str_byte_length(interp, s2))
return -1;
+ else {
+ DECL_CONST_CAST;
+ STRING *src = PARROT_const_cast(STRING *, s);
+ STRING *search = PARROT_const_cast(STRING *, s2);
- src = PARROT_const_cast(STRING *, s);
- search = PARROT_const_cast(STRING *, s2);
-
- return CHARSET_INDEX(interp, src, search, (UINTVAL)start);
+ return CHARSET_INDEX(interp, src, search, (UINTVAL)start);
+ }
}
@@ -1049,12 +862,17 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL
-string_ord(PARROT_INTERP, ARGIN_NULLOK(const STRING *s), INTVAL idx)
+string_ord(PARROT_INTERP, ARGIN(const STRING *s), INTVAL idx)
{
ASSERT_ARGS(string_ord)
- const UINTVAL len = s ? Parrot_str_byte_length(interp, s) : 0;
+ UINTVAL len;
UINTVAL true_index = (UINTVAL)idx;
+ if (STRING_IS_NULL(s))
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
+ "Cannot get character of NULL string");
+
+ len = Parrot_str_byte_length(interp, s);
if (len == 0)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
"Cannot get character of empty string");
@@ -1111,34 +929,13 @@
/*
-=item C<STRING * Parrot_str_copy(PARROT_INTERP, STRING *s)>
-
-Creates and returns a copy of the specified Parrot string.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING *
-Parrot_str_copy(PARROT_INTERP, ARGMOD(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_copy)
- return Parrot_str_new_COW(interp, s);
-}
-
-
-/*
-
=back
=head2 Vtable Dispatch Functions
=over 4
-=item C<INTVAL Parrot_str_length(PARROT_INTERP, STRING *s)>
+=item C<INTVAL Parrot_str_length(PARROT_INTERP, const STRING *s)>
Calculates and returns the number of characters in the specified Parrot string.
@@ -1147,13 +944,12 @@
*/
PARROT_EXPORT
-PARROT_IGNORABLE_RESULT
+PARROT_WARN_UNUSED_RESULT
INTVAL
-Parrot_str_length(PARROT_INTERP, ARGMOD(STRING *s))
+Parrot_str_length(SHIM_INTERP, ARGIN(const STRING *s))
{
ASSERT_ARGS(Parrot_str_length)
- s->strlen = CHARSET_CODEPOINTS(interp, s);
return s->strlen;
}
@@ -1171,6 +967,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
INTVAL
string_max_bytes(SHIM_INTERP, ARGIN(const STRING *s), UINTVAL nchars)
{
@@ -1179,6 +976,7 @@
return ENCODING_MAX_BYTES_PER_CODEPOINT(interp, s) * nchars;
}
+
/*
=item C<STRING * Parrot_str_repeat(PARROT_INTERP, const STRING *s, UINTVAL num)>
@@ -1204,26 +1002,26 @@
UINTVAL i;
char * destpos = dest->strstart;
const char * const srcpos = s->strstart;
- for (i = 0; i < num; i++) {
+ for (i = 0; i < num; ++i) {
mem_sys_memcopy(destpos, srcpos, length);
destpos += length;
}
+ dest->strlen = s->strlen * num;
dest->bufused = s->bufused * num;
- dest->strlen = s->strlen * num;
}
return dest;
}
+
/*
-=item C<STRING * Parrot_str_substr(PARROT_INTERP, STRING *src, INTVAL offset,
-INTVAL length, STRING **d, int replace_dest)>
+=item C<STRING * Parrot_str_substr(PARROT_INTERP, const STRING *src, INTVAL
+offset, INTVAL length)>
-Copies the substring of length C<length> from C<offset> from the specified
-Parrot string and stores it in C<**d>, allocating memory if necessary. The
-substring is also returned.
+Returns substring of length C<length> from C<offset> from the specified
+Parrot string.
=cut
@@ -1234,66 +1032,45 @@
PARROT_WARN_UNUSED_RESULT
STRING *
Parrot_str_substr(PARROT_INTERP,
- ARGIN_NULLOK(STRING *src), INTVAL offset, INTVAL length,
- ARGOUT_NULLOK(STRING **d), int replace_dest)
+ ARGIN_NULLOK(const STRING *src), INTVAL offset, INTVAL length)
{
ASSERT_ARGS(Parrot_str_substr)
- if (src == NULL)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
- "Cannot substr on a null string");
- else {
- STRING *dest;
- UINTVAL true_length;
- UINTVAL true_offset = (UINTVAL)offset;
-
- saneify_string(src);
-
- /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
- if (offset == (INTVAL)Parrot_str_byte_length(interp, src) || length < 1)
- return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
- if (offset < 0)
- true_offset = (UINTVAL)(src->strlen + offset);
+ UINTVAL true_length;
+ UINTVAL true_offset = (UINTVAL)offset;
- /* 0 based... */
- if (src->strlen == 0 || true_offset > src->strlen - 1)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
- "Cannot take substr outside string");
+ if (STRING_IS_NULL(src))
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_SUBSTR_OUT_OF_STRING, "Cannot substr on a null string");
- true_length = (UINTVAL)length;
- if (true_length > (src->strlen - true_offset))
- true_length = (UINTVAL)(src->strlen - true_offset);
+ ASSERT_STRING_SANITY(src);
- /* do in-place i.e. reuse existing header if one */
- if (replace_dest && d && *d) {
- PARROT_ASSERT(src->encoding == Parrot_fixed_8_encoding_ptr);
- dest = *d;
+ /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
+ if (offset == (INTVAL)Parrot_str_byte_length(interp, src) || length < 1)
+ return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
- dest->encoding = src->encoding;
- dest->charset = src->charset;
+ if (offset < 0)
+ true_offset = (UINTVAL)(src->strlen + offset);
- dest->strstart = (char *)src->strstart + true_offset;
- dest->bufused = true_length;
+ /* 0 based... */
+ if (src->strlen == 0 || true_offset > src->strlen - 1)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_SUBSTR_OUT_OF_STRING,
+ "Cannot take substr outside string");
- dest->strlen = true_length;
- dest->hashval = 0;
- }
- else
- dest = CHARSET_GET_CODEPOINTS(interp, src, true_offset,
- true_length);
+ true_length = (UINTVAL)length;
- if (d)
- *d = dest;
+ if (true_length > (src->strlen - true_offset))
+ true_length = (UINTVAL)(src->strlen - true_offset);
- return dest;
- }
+ return CHARSET_GET_CODEPOINTS(interp, src, true_offset, true_length);
}
/*
-=item C<STRING * Parrot_str_replace(PARROT_INTERP, STRING *src, INTVAL offset,
-INTVAL length, STRING *rep, STRING **d)>
+=item C<STRING * Parrot_str_replace(PARROT_INTERP, const STRING *src, INTVAL
+offset, INTVAL length, const STRING *rep)>
Replaces a sequence of C<length> characters from C<offset> in the first
Parrot string with the second Parrot string, returning what was
@@ -1317,35 +1094,25 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
STRING *
-Parrot_str_replace(PARROT_INTERP, ARGIN(STRING *src),
- INTVAL offset, INTVAL length, ARGIN(STRING *rep), ARGOUT_NULLOK(STRING **d))
+Parrot_str_replace(PARROT_INTERP, ARGIN(const STRING *src),
+ INTVAL offset, INTVAL length, ARGIN(const STRING *rep))
{
ASSERT_ARGS(Parrot_str_replace)
- UINTVAL start_byte, end_byte;
- INTVAL diff;
String_iter iter;
-
const CHARSET *cs;
const ENCODING *enc;
STRING *dest = NULL;
UINTVAL true_offset = (UINTVAL)offset;
UINTVAL true_length = (UINTVAL)length;
- /* special case */
- if (d == NULL
- && src->encoding == Parrot_fixed_8_encoding_ptr
- && rep->encoding == Parrot_fixed_8_encoding_ptr
- && offset >= 0
- && true_offset < src->strlen
- && length == 1
- && rep->strlen == 1) {
- if (PObj_is_cowed_TESTALL(src))
- Parrot_str_write_COW(interp, src);
-
- ((char *)src->strstart)[offset] = ((char *)rep->strstart)[0];
+ UINTVAL start_byte, end_byte;
+ INTVAL buf_size;
- return NULL;
+ if (STRING_IS_NULL(src)) {
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
+ "Can't replace in NULL string");
}
/* abs(-offset) may not be > strlen-1 */
@@ -1357,29 +1124,22 @@
* Only give exception if caller trys to replace end of string + 2
*/
if (true_offset > src->strlen)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_SUBSTR_OUT_OF_STRING,
"Can only replace inside string or index after end of string");
if (true_length > (src->strlen - true_offset))
true_length = (UINTVAL)(src->strlen - true_offset);
- /* Save the substring that is replaced for the return value */
- if (d) {
- dest = CHARSET_GET_CODEPOINTS(interp, src, true_offset, true_length);
- *d = dest;
- }
-
/* may have different reps..... */
cs = string_rep_compatible(interp, src, rep, &enc);
if (!cs) {
- Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
- rep = Parrot_utf16_encoding_ptr->to_encoding(interp, rep,
- Parrot_gc_new_string_header(interp, 0));
- }
- else {
- src->charset = cs;
- src->encoding = enc;
+ src = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
+ rep = Parrot_utf16_encoding_ptr->to_encoding(interp, rep);
+ /* Remember selected charset and encoding */
+ enc = src->encoding;
+ cs = src->charset;
}
/* get byte position of the part that will be replaced */
@@ -1393,65 +1153,54 @@
/* not possible.... */
if (end_byte < start_byte)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_SUBSTR_OUT_OF_STRING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_SUBSTR_OUT_OF_STRING,
"replace: subend somehow is less than substart");
/* Now do the replacement */
+ dest = Parrot_gc_new_string_header(interp, 0);
- /*
- * If the replacement string fits inside the original substring
- * don't create a new string, just pack it.
- */
- diff = (end_byte - start_byte) - rep->bufused;
-
- if (diff >= 0
- || ((INTVAL)src->bufused - (INTVAL)Buffer_buflen(src)) <= diff) {
- Parrot_str_write_COW(interp, src);
-
- if (diff != 0) {
- mem_sys_memmove((char *)src->strstart + start_byte + rep->bufused,
- (char *)src->strstart + end_byte,
- src->bufused - end_byte);
- src->bufused -= diff;
- }
-
- mem_sys_memcopy((char *)src->strstart + start_byte,
- rep->strstart, rep->bufused);
+ /* Set encoding and charset to compatible */
+ dest->encoding = enc;
+ dest->charset = cs;
+
+ /* Clear COW flag. We own buffer */
+ PObj_get_FLAGS(dest) = PObj_is_string_FLAG
+ | PObj_is_COWable_FLAG
+ | PObj_live_FLAG;
+
+ /* size removed bytes added bytes */
+ buf_size = src->bufused - (end_byte - start_byte) + rep->bufused;
+
+ /* Alloctate new string size. */
+ Parrot_gc_allocate_string_storage(interp, dest, buf_size);
+ dest->bufused = buf_size;
+
+ /* Copy begin of string */
+ mem_sys_memcopy(dest->strstart, src->strstart, start_byte);
+
+ /* Copy the replacement in */
+ mem_sys_memcopy((char *)dest->strstart + start_byte, rep->strstart,
+ rep->bufused);
+
+ /* Copy the end of old string */
+ mem_sys_memcopy((char *)dest->strstart + start_byte + rep->bufused,
+ (char *)src->strstart + end_byte,
+ src->bufused - end_byte);
- if (diff)
- (void)Parrot_str_length(interp, src);
- }
-
- /* Replacement is larger than avail buffer, grow the string */
- else {
- /* diff is negative here, make it positive */
- diff = -(diff);
- Parrot_str_resize(interp, src, (UINTVAL)diff);
-
- /* Move the end of old string that isn't replaced to new offset first */
- mem_sys_memmove((char *)src->strstart + end_byte + diff,
- (char *)src->strstart + end_byte,
- src->bufused - end_byte);
-
- /* Copy the replacement in */
- mem_sys_memcopy((char *)src->strstart + start_byte, rep->strstart,
- rep->bufused);
- src->bufused += diff;
- (void)Parrot_str_length(interp, src);
- }
+ dest->strlen = CHARSET_CODEPOINTS(interp, dest);
+ dest->hashval = 0;
- /* src is modified, now return the original substring */
return dest;
}
/*
-=item C<STRING * Parrot_str_chopn(PARROT_INTERP, STRING *s, INTVAL n)>
+=item C<STRING * Parrot_str_chopn(PARROT_INTERP, const STRING *s, INTVAL n)>
-Removes the last C<n> characters of the specified Parrot string. If C<n> is
-negative, cuts the string after C<+n> characters. The returned string is a copy
-of the one passed in.
+Removes the last C<n> characters of the specified Parrot string and returns the
+modified string. If C<n> is negative, cuts the string after C<+n> characters.
=cut
@@ -1460,71 +1209,50 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING *
-Parrot_str_chopn(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
+Parrot_str_chopn(PARROT_INTERP, ARGIN(const STRING *s), INTVAL n)
{
ASSERT_ARGS(Parrot_str_chopn)
- STRING * const chopped = Parrot_str_copy(interp, s);
- Parrot_str_chopn_inplace(interp, chopped, n);
- return chopped;
-}
-
-/*
-
-=item C<void Parrot_str_chopn_inplace(PARROT_INTERP, STRING *s, INTVAL n)>
-
-Removes the last C<n> characters of the specified Parrot string. If C<n> is
-negative, cuts the string after C<+n> characters. The string passed in is
-modified and returned.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_chopn_inplace(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
-{
- ASSERT_ARGS(Parrot_str_chopn_inplace)
+ STRING * const chopped = Parrot_str_copy(interp, s);
UINTVAL new_length, uchar_size;
if (n < 0) {
new_length = -n;
- if (new_length > s->strlen)
- return;
+ if (new_length > chopped->strlen)
+ return chopped;
}
else {
- if (s->strlen > (UINTVAL)n)
- new_length = s->strlen - n;
+ if (chopped->strlen > (UINTVAL)n)
+ new_length = chopped->strlen - n;
else
new_length = 0;
}
- s->hashval = 0;
+ chopped->hashval = 0;
- if (!new_length || !s->strlen) {
- s->bufused = s->strlen = 0;
- return;
+ if (!new_length || !chopped->strlen) {
+ chopped->bufused = chopped->strlen = 0;
+ return chopped;
}
- uchar_size = s->bufused / s->strlen;
- s->strlen = new_length;
+ uchar_size = chopped->bufused / chopped->strlen;
+ chopped->strlen = new_length;
- if (s->encoding == Parrot_fixed_8_encoding_ptr) {
- s->bufused = new_length;
+ if (chopped->encoding == Parrot_fixed_8_encoding_ptr) {
+ chopped->bufused = new_length;
}
- else if (s->encoding == Parrot_ucs2_encoding_ptr) {
- s->bufused = new_length * uchar_size;
+ else if (chopped->encoding == Parrot_ucs2_encoding_ptr) {
+ chopped->bufused = new_length * uchar_size;
}
else {
String_iter iter;
ENCODING_ITER_INIT(interp, s, &iter);
iter.set_position(interp, &iter, new_length);
- s->bufused = iter.bytepos;
+ chopped->bufused = iter.bytepos;
}
- return;
+ return chopped;
}
@@ -1548,14 +1276,14 @@
Parrot_str_compare(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1), ARGIN_NULLOK(const STRING *s2))
{
ASSERT_ARGS(Parrot_str_compare)
- if (!s2)
+ if (STRING_IS_NULL(s2))
return s1 && (s1->strlen != 0);
- if (!s1)
+ if (STRING_IS_NULL(s1))
return -(s2->strlen != 0);
- saneify_string(s1);
- saneify_string(s2);
+ ASSERT_STRING_SANITY(s1);
+ ASSERT_STRING_SANITY(s2);
return CHARSET_COMPARE(interp, s1, s2);
}
@@ -1582,6 +1310,7 @@
return !Parrot_str_equal(interp, s1, s2);
}
+
/*
=item C<INTVAL Parrot_str_equal(PARROT_INTERP, const STRING *s1, const STRING
@@ -1602,73 +1331,44 @@
Parrot_str_equal(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1), ARGIN_NULLOK(const STRING *s2))
{
ASSERT_ARGS(Parrot_str_equal)
- if ((s1 == s2) || (!s1 && !s2)) {
+
+ if ((s1 == s2) || (STRING_IS_NULL(s1) && STRING_IS_NULL(s2)))
return 1;
- }
- else if (!s2) {
+ else if (STRING_IS_NULL(s2))
return s1->strlen == 0;
- }
- else if (!s1) {
+ else if (STRING_IS_NULL(s1))
return s2->strlen == 0;
- }
- else if (s1->strlen != s2->strlen) {
- return 0; /* we don't care which is bigger */
- }
- else if (s1->hashval != s2->hashval && s1->hashval && s2->hashval) {
+
+ /* we don't care which is bigger */
+ else if (s1->strlen != s2->strlen)
return 0;
- }
- else if (!s1->strlen) { /* s2->strlen is the same here */
+ else if ((s1->hashval != s2->hashval) && s1->hashval && s2->hashval)
+ return 0;
+
+ /* s2->strlen is the same here */
+ else if (s1->strlen == 0)
return 1;
- }
+
/* COWed strings */
- else if (s1->strstart == s2->strstart && s1->bufused == s2->bufused) {
+ else if ((s1->strstart == s2->strstart) && (s1->bufused == s2->bufused))
return 1;
- }
/*
* now,
* both strings are non-null
* both strings have same length
*/
- return !CHARSET_COMPARE(interp, s1, s2);
-}
-
-
-/*
-
-=item C<static void make_writable(PARROT_INTERP, STRING **s, const size_t len,
-parrot_string_representation_t representation)>
-
-Makes the specified Parrot string writable with minimum length C<len>. The
-C<representation> argument is required in case a new Parrot string has to be
-created.
-
-=cut
-
-*/
-
-static void
-make_writable(PARROT_INTERP, ARGMOD(STRING **s),
- const size_t len, parrot_string_representation_t representation)
-{
- ASSERT_ARGS(make_writable)
- if (!*s)
- *s = Parrot_str_new_noinit(interp, representation, len);
- else if ((*s)->strlen < len)
- Parrot_str_resize(interp, *s, (UINTVAL)(len - (*s)->strlen));
- else if (PObj_is_cowed_TESTALL(*s))
- Parrot_str_write_COW(interp, *s);
+ return CHARSET_COMPARE(interp, s1, s2) == 0;
}
/*
=item C<STRING * Parrot_str_bitwise_and(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
-Performs a bitwise C<AND> on two Parrot string, performing type and encoding
-conversions if necessary. If the second string is not C<NULL> then it is
-reused. Otherwise a new Parrot string is created.
+Performs a bitwise C<AND> on two Parrot strings, performing type and encoding
+conversions if necessary. Returns the result as a new string.
=cut
@@ -1678,7 +1378,7 @@
PARROT_CANNOT_RETURN_NULL
STRING *
Parrot_str_bitwise_and(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+ ARGIN_NULLOK(const STRING *s2))
{
ASSERT_ARGS(Parrot_str_bitwise_and)
STRING *res;
@@ -1696,21 +1396,15 @@
nonnull_encoding_name(s1), s2->encoding->name);
/* think about case of dest string is one of the operands */
- if (s1 && s2)
+ if (!STRING_IS_NULL(s1) && !STRING_IS_NULL(s2))
minlen = s1->strlen > s2->strlen ? s2->strlen : s1->strlen;
else
minlen = 0;
- if (dest && *dest) {
- res = *dest;
- res->encoding = Parrot_fixed_8_encoding_ptr;
- res->charset = Parrot_binary_charset_ptr;
- }
- else
- res = Parrot_str_new_init(interp, NULL, minlen,
- Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+ res = Parrot_str_new_init(interp, NULL, minlen,
+ Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
- if (!s1 || !s2) {
+ if (STRING_IS_NULL(s1) || STRING_IS_NULL(s2)) {
res->bufused = 0;
res->strlen = 0;
@@ -1723,8 +1417,6 @@
Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
#endif
- make_writable(interp, &res, minlen, enum_stringrep_one);
-
{ /* bitwise AND the strings */
const Parrot_UInt1 *curr1 = (Parrot_UInt1 *)s1->strstart;
const Parrot_UInt1 *curr2 = (Parrot_UInt1 *)s2->strstart;
@@ -1737,12 +1429,10 @@
res->bufused = res->strlen = minlen;
- if (dest)
- *dest = res;
-
return res;
}
+
#define BITWISE_XOR_STRINGS(type1, type2, restype, s1, s2, res, maxlen) \
do { \
const type1 *curr1 = NULL; \
@@ -1752,11 +1442,11 @@
restype *dp; \
size_t _index; \
\
- if (s1) { \
+ if (!STRING_IS_NULL(s1)) { \
curr1 = (type1 *)(s1)->strstart; \
length1 = (s1)->strlen; \
} \
- if (s2) { \
+ if (!STRING_IS_NULL(s2)) { \
curr2 = (type2 *)(s2)->strstart; \
length2 = (s2)->strlen; \
} \
@@ -1787,11 +1477,11 @@
restype *dp; \
size_t _index; \
\
- if (s1) { \
+ if (!STRING_IS_NULL(s1)) { \
curr1 = (type1 *)(s1)->strstart; \
length1 = (s1)->strlen; \
} \
- if (s2) { \
+ if (!STRING_IS_NULL(s2)) { \
curr2 = (type2 *)(s2)->strstart; \
length2 = (s2)->strlen; \
} \
@@ -1816,11 +1506,10 @@
/*
=item C<STRING * Parrot_str_bitwise_or(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
Performs a bitwise C<OR> on two Parrot strings, performing type and encoding
-conversions if necessary. If the third string is not C<NULL>, then it is
-reused. Otherwise a new Parrot string is created.
+conversions if necessary. Returns the result as a new string.
=cut
@@ -1830,24 +1519,26 @@
PARROT_CANNOT_RETURN_NULL
STRING *
Parrot_str_bitwise_or(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+ ARGIN_NULLOK(const STRING *s2))
{
ASSERT_ARGS(Parrot_str_bitwise_or)
STRING *res;
size_t maxlen = 0;
- if (s1) {
+ if (!STRING_IS_NULL(s1)) {
if (s1->encoding != Parrot_fixed_8_encoding_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_ENCODING,
"string bitwise_or (%s/%s) unsupported",
s1->encoding->name, nonnull_encoding_name(s2));
maxlen = s1->bufused;
}
- if (s2) {
+ if (!STRING_IS_NULL(s2)) {
if (s2->encoding != Parrot_fixed_8_encoding_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_ENCODING,
"string bitwise_or (%s/%s) unsupported",
nonnull_encoding_name(s1), s2->encoding->name);
@@ -1855,14 +1546,8 @@
maxlen = s2->bufused;
}
- if (dest && *dest) {
- res = *dest;
- res->encoding = Parrot_fixed_8_encoding_ptr;
- res->charset = Parrot_binary_charset_ptr;
- }
- else
- res = Parrot_str_new_init(interp, NULL, maxlen,
- Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+ res = Parrot_str_new_init(interp, NULL, maxlen,
+ Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
if (!maxlen) {
res->bufused = 0;
@@ -1876,15 +1561,10 @@
Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
#endif
- make_writable(interp, &res, maxlen, enum_stringrep_one);
-
BITWISE_OR_STRINGS(Parrot_UInt1, Parrot_UInt1, Parrot_UInt1,
s1, s2, res, maxlen);
res->bufused = res->strlen = maxlen;
- if (dest)
- *dest = res;
-
return res;
}
@@ -1892,11 +1572,10 @@
/*
=item C<STRING * Parrot_str_bitwise_xor(PARROT_INTERP, const STRING *s1, const
-STRING *s2, STRING **dest)>
+STRING *s2)>
Performs a bitwise C<XOR> on two Parrot strings, performing type and encoding
-conversions if necessary. If the second string is not C<NULL>, then it is
-reused. Otherwise a new Parrot string is created.
+conversions if necessary. Returns the result as a new string.
=cut
@@ -1906,24 +1585,26 @@
PARROT_CANNOT_RETURN_NULL
STRING *
Parrot_str_bitwise_xor(PARROT_INTERP, ARGIN_NULLOK(const STRING *s1),
- ARGIN_NULLOK(const STRING *s2), ARGOUT_NULLOK(STRING **dest))
+ ARGIN_NULLOK(const STRING *s2))
{
ASSERT_ARGS(Parrot_str_bitwise_xor)
STRING *res;
size_t maxlen = 0;
- if (s1) {
+ if (!STRING_IS_NULL(s1)) {
if (s1->encoding != Parrot_fixed_8_encoding_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_ENCODING,
"string bitwise_xor (%s/%s) unsupported",
s1->encoding->name, nonnull_encoding_name(s2));
maxlen = s1->bufused;
}
- if (s2) {
+ if (!STRING_IS_NULL(s2)) {
if (s2->encoding != Parrot_fixed_8_encoding_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_ENCODING,
"string bitwise_xor (%s/%s) unsupported",
nonnull_encoding_name(s1), s2->encoding->name);
@@ -1931,14 +1612,8 @@
maxlen = s2->bufused;
}
- if (dest && *dest) {
- res = *dest;
- res->encoding = Parrot_fixed_8_encoding_ptr;
- res->charset = Parrot_binary_charset_ptr;
- }
- else
- res = Parrot_str_new_init(interp, NULL, maxlen,
- Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+ res = Parrot_str_new_init(interp, NULL, maxlen,
+ Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
if (!maxlen) {
res->bufused = 0;
@@ -1952,22 +1627,17 @@
Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
#endif
- make_writable(interp, &res, maxlen, enum_stringrep_one);
-
BITWISE_XOR_STRINGS(Parrot_UInt1, Parrot_UInt1, Parrot_UInt1,
s1, s2, res, maxlen);
res->bufused = res->strlen = maxlen;
- if (dest)
- *dest = res;
-
return res;
}
#define BITWISE_NOT_STRING(type, s, res) \
do { \
- if ((s) && (res)) { \
+ if (!STRING_IS_NULL(s) && !STRING_IS_NULL(res)) { \
const type *curr = (type *)(s)->strstart; \
size_t length = (s)->strlen; \
Parrot_UInt1 *dp = (Parrot_UInt1 *)(res)->strstart; \
@@ -1977,13 +1647,13 @@
} \
} while (0)
+
/*
-=item C<STRING * Parrot_str_bitwise_not(PARROT_INTERP, const STRING *s, STRING
-**dest)>
+=item C<STRING * Parrot_str_bitwise_not(PARROT_INTERP, const STRING *s)>
-Performs a bitwise C<NOT> on a Parrot string. If the second string is
-not C<NULL> then it is reused, otherwise a new Parrot string is created.
+Performs a bitwise C<NOT> on a Parrot string. Returns the result as a new
+string.
=cut
@@ -1992,16 +1662,16 @@
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
STRING *
-Parrot_str_bitwise_not(PARROT_INTERP, ARGIN_NULLOK(const STRING *s),
- ARGOUT_NULLOK(STRING **dest))
+Parrot_str_bitwise_not(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_bitwise_not)
STRING *res;
size_t len;
- if (s) {
+ if (!STRING_IS_NULL(s)) {
if (s->encoding != Parrot_fixed_8_encoding_ptr)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_ENCODING,
"string bitwise_not (%s/%s) unsupported",
s->encoding->name, s->encoding->name);
@@ -2010,14 +1680,8 @@
else
len = 0;
- if (dest && *dest) {
- res = *dest;
- res->encoding = Parrot_fixed_8_encoding_ptr;
- res->charset = Parrot_binary_charset_ptr;
- }
- else
- res = Parrot_str_new_init(interp, NULL, len,
- Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
+ res = Parrot_str_new_init(interp, NULL, len,
+ Parrot_fixed_8_encoding_ptr, Parrot_binary_charset_ptr, 0);
if (!len) {
res->bufused = 0;
@@ -2031,13 +1695,9 @@
Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
#endif
- make_writable(interp, &res, len, enum_stringrep_one);
-
res->strlen = res->bufused = len;
BITWISE_NOT_STRING(Parrot_UInt1, s, res);
- if (dest)
- *dest = res;
return res;
}
@@ -2060,7 +1720,7 @@
Parrot_str_boolean(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_boolean)
- const INTVAL len = s ? Parrot_str_byte_length(interp, s) : 0;
+ const INTVAL len = !STRING_IS_NULL(s) ? Parrot_str_byte_length(interp, s) : 0;
if (len == 0)
return 0;
@@ -2106,12 +1766,15 @@
return output;
}
+
/*
+
State of FSM during number value parsing.
Integer uses only parse_start, parse_before_dot and parse_end.
*/
+
typedef enum number_parse_state {
parse_start,
parse_before_dot,
@@ -2151,13 +1814,13 @@
Parrot_str_to_int(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_to_int)
- if (s == NULL)
+ if (STRING_IS_NULL(s))
return 0;
- {
- const INTVAL max_safe = PARROT_INTVAL_MAX / 10;
- const INTVAL last_dig = PARROT_INTVAL_MAX % 10;
+ else {
+ const UINTVAL max_safe = -(UINTVAL)PARROT_INTVAL_MIN / 10;
+ const UINTVAL last_dig = (-(UINTVAL)PARROT_INTVAL_MIN) % 10;
int sign = 1;
- INTVAL i = 0;
+ UINTVAL i = 0;
String_iter iter;
UINTVAL offs;
number_parse_state state = parse_start;
@@ -2173,12 +1836,13 @@
switch (state) {
case parse_start:
if (isdigit((unsigned char)c)) {
- const INTVAL nextval = c - '0';
+ const UINTVAL nextval = c - '0';
if (i < max_safe || (i == max_safe && nextval <= last_dig))
i = i * 10 + nextval;
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
- "Integer value of String '%S' too big", s);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_ERR_OVERFLOW,
+ "Integer value of String '%S' too big", s);
state = parse_before_dot;
}
else if (c == '-') {
@@ -2196,12 +1860,13 @@
case parse_before_dot:
if (isdigit((unsigned char)c)) {
- const INTVAL nextval = c - '0';
+ const UINTVAL nextval = c - '0';
if (i < max_safe || (i == max_safe && nextval <= last_dig))
i = i * 10 + nextval;
else
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
- "Integer value of String '%S' too big", s);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_ERR_OVERFLOW,
+ "Integer value of String '%S' too big", s);
}
else
state = parse_end;
@@ -2213,12 +1878,15 @@
}
}
- i *= sign;
-
- return i;
+ if (sign == 1 && i > (UINTVAL)PARROT_INTVAL_MAX)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_ERR_OVERFLOW,
+ "Integer value of String '%S' too big", s);
+ return sign == -1 ? -i : i;
}
}
+
/*
=item C<FLOATVAL Parrot_str_to_num(PARROT_INTERP, const STRING *s)>
@@ -2253,7 +1921,7 @@
UINTVAL offs;
number_parse_state state = parse_start;
- if (!s)
+ if (STRING_IS_NULL(s))
return 0.0;
ENCODING_ITER_INIT(interp, s, &iter);
@@ -2326,7 +1994,7 @@
d = d*10 + (c-'0');
if (d >= max_safe)
d_is_safe = 0;
- d_length++;
+ ++d_length;
}
else if (c == 'e' || c == 'E')
state = parse_after_e;
@@ -2364,16 +2032,16 @@
}
/* Support for non-canonical NaN and Inf */
- /* charpos <=2 because for "-i" iter will be advanced to next char already */
+ /* charpos <= 2 because for "-i" iter already advanced to next char */
if (check_nan && (iter.charpos <= 2)) {
STRING *t = Parrot_str_upcase(interp, s);
if (Parrot_str_equal(interp, t, CONST_STRING(interp, "NAN")))
return PARROT_FLOATVAL_NAN_QUIET;
else if (Parrot_str_equal(interp, t, CONST_STRING(interp, "INF"))
- || Parrot_str_equal(interp, t, CONST_STRING(interp, "INFINITY")))
+ || Parrot_str_equal(interp, t, CONST_STRING(interp, "INFINITY")))
return PARROT_FLOATVAL_INF_POSITIVE;
else if (Parrot_str_equal(interp, t, CONST_STRING(interp, "-INF"))
- || Parrot_str_equal(interp, t, CONST_STRING(interp, "-INFINITY")))
+ || Parrot_str_equal(interp, t, CONST_STRING(interp, "-INFINITY")))
return PARROT_FLOATVAL_INF_NEGATIVE;
else
return 0.0;
@@ -2457,8 +2125,8 @@
=item C<char * Parrot_str_to_cstring(PARROT_INTERP, const STRING *s)>
Returns a C string for the specified Parrot string. Use
-C<Parrot_str_free_cstring()> to free the string. Failure to do this will result in
-a memory leak.
+C<Parrot_str_free_cstring()> to free the string. Failure to do this will result
+in a memory leak.
=cut
@@ -2471,12 +2139,13 @@
Parrot_str_to_cstring(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_to_cstring)
- if (! s) {
+
+ if (STRING_IS_NULL(s)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"Can't convert NULL string");
}
- else
- return string_to_cstring_nullable(interp, s);
+
+ return string_to_cstring_nullable(interp, s);
}
@@ -2485,8 +2154,9 @@
=item C<char * string_to_cstring_nullable(PARROT_INTERP, const STRING *s)>
Returns a C string for the specified Parrot string. Use
-C<Parrot_str_free_cstring()> to free the string. Failure to do this will result in
-a memory leak.
+C<Parrot_str_free_cstring()> to free the string, if it's not NULL. Failure to
+do this will result in a memory leak. Failure to check if the return value is
+NULL will result in embarrassment for you.
=cut
@@ -2499,7 +2169,7 @@
string_to_cstring_nullable(SHIM_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(string_to_cstring_nullable)
- if (!s)
+ if (STRING_IS_NULL(s))
return NULL;
else {
char * const p = (char*)mem_internal_allocate(s->bufused + 1);
@@ -2525,7 +2195,7 @@
PARROT_EXPORT
void
-Parrot_str_free_cstring(ARGIN_NULLOK(char *p))
+Parrot_str_free_cstring(ARGFREE(char *p))
{
ASSERT_ARGS(Parrot_str_free_cstring)
mem_internal_free((void *)p);
@@ -2544,24 +2214,15 @@
PARROT_EXPORT
void
-Parrot_str_pin(PARROT_INTERP, ARGMOD(STRING *s))
+Parrot_str_pin(SHIM_INTERP, ARGMOD(STRING *s))
{
ASSERT_ARGS(Parrot_str_pin)
- char *memory;
- size_t size;
-
- /* XXX -lt: COW strings have the external_FLAG set, so this will
- * not work for these
- * so probably only sysmem should be tested
- */
- Parrot_str_write_COW(interp, s);
-
- size = Buffer_buflen(s);
- memory = (char *)mem_internal_allocate(size);
+ size_t size = Buffer_buflen(s);
+ char *memory = (char *)mem_internal_allocate(size);
mem_sys_memcopy(memory, Buffer_bufstart(s), size);
Buffer_bufstart(s) = memory;
- s->strstart = memory;
+ s->strstart = memory;
/* Mark the memory as both from the system and immobile */
PObj_sysmem_SET(s);
@@ -2587,12 +2248,10 @@
size_t size;
/* If this string is not marked using system memory,
- * we just don't do this
- */
+ * we just don't do this */
if (!PObj_sysmem_TEST(s))
return;
- Parrot_str_write_COW(interp, s);
size = Buffer_buflen(s);
/* We need a handle on the fixed memory so we can get rid of it later */
@@ -2638,18 +2297,22 @@
UINTVAL offs;
size_t hashval = interp->hash_seed;
- if (!s)
+ if (STRING_IS_NULL(s) || !s->strlen)
return hashval;
- /* ZZZZZ workaround for something not setting up encodings right */
- saneify_string(s);
+ if (s->encoding->hash)
+ hashval = ENCODING_HASH(interp, s, hashval);
+ else {
+ /* ZZZZZ workaround for something not setting up encodings right */
+ ASSERT_STRING_SANITY(s);
- ENCODING_ITER_INIT(interp, s, &iter);
+ ENCODING_ITER_INIT(interp, s, &iter);
- for (offs = 0; offs < s->strlen; ++offs) {
- const UINTVAL c = iter.get_and_advance(interp, &iter);
- hashval += hashval << 5;
- hashval += c;
+ for (offs = 0; offs < s->strlen; ++offs) {
+ const UINTVAL c = iter.get_and_advance(interp, &iter);
+ hashval += hashval << 5;
+ hashval += c;
+ }
}
s->hashval = hashval;
@@ -2706,8 +2369,8 @@
String_iter iter;
unsigned char *dp;
- if (!src)
- return NULL;
+ if (STRING_IS_NULL(src))
+ return STRINGNULL;
len = src->strlen;
@@ -2793,7 +2456,7 @@
else
hex = Parrot_sprintf_c(interp, "\\u%04x", c);
- result = Parrot_str_append(interp, result, hex);
+ result = Parrot_str_concat(interp, result, hex);
/* adjust our insert idx */
i += hex->strlen;
@@ -2900,8 +2563,8 @@
if (d == offs) {
/* we did it in place - no action */
++d;
- iter.bytepos++;
- iter.charpos++;
+ ++(iter.bytepos);
+ ++(iter.charpos);
continue;
}
@@ -2913,9 +2576,9 @@
result->strlen = d;
result->bufused = iter.bytepos;
- /* this also validates the string */
+ /* Force validating the string */
if (encoding != result->encoding)
- Parrot_str_length(interp, result);
+ result->strlen = CHARSET_CODEPOINTS(interp, result);
if (!CHARSET_VALIDATE(interp, result))
Parrot_ex_throw_from_c_args(interp, NULL,
@@ -2943,41 +2606,13 @@
Parrot_str_upcase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_upcase)
- if (STRING_IS_NULL(s)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
- "Can't upcase NULL string");
- }
- else {
- DECL_CONST_CAST;
- STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
- Parrot_str_upcase_inplace(interp, dest);
- return dest;
- }
-}
-
-
-/*
-
-=item C<void Parrot_str_upcase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to upper case.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_upcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_upcase_inplace)
- if (STRING_IS_NULL(s)) {
+ if (STRING_IS_NULL(s))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"Can't upcase NULL string");
- }
else {
- Parrot_str_write_COW(interp, s);
- CHARSET_UPCASE(interp, s);
+ STRING * const res = CHARSET_UPCASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3000,47 +2635,14 @@
Parrot_str_downcase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_downcase)
- if (STRING_IS_NULL(s)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
- "Can't downcase NULL string");
- }
- else {
- DECL_CONST_CAST;
- STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
- Parrot_str_downcase_inplace(interp, dest);
- return dest;
- }
-}
-
-
-/*
-
-=item C<void Parrot_str_downcase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to lower case.
-
-=cut
-
-*/
-PARROT_EXPORT
-void
-Parrot_str_downcase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_downcase_inplace)
- if (STRING_IS_NULL(s)) {
+ if (STRING_IS_NULL(s))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"Can't downcase NULL string");
- }
else {
- /*
- * TODO get rid of all the inplace variants. We have for utf8:
- * * 1 Parrot_str_copy from the non-incase variant
- * * conversion to utf16, with doubling the buffer
- * * possibly one more reallocation in downcase
- */
- Parrot_str_write_COW(interp, s);
- CHARSET_DOWNCASE(interp, s);
+ STRING * const res = CHARSET_DOWNCASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3063,41 +2665,14 @@
Parrot_str_titlecase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_titlecase)
- if (STRING_IS_NULL(s)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
- "Can't titlecase NULL string");
- }
- else {
- DECL_CONST_CAST;
- STRING * const dest = Parrot_str_copy(interp, PARROT_const_cast(STRING *, s));
- Parrot_str_titlecase_inplace(interp, dest);
- return dest;
- }
-}
-
-
-/*
-
-=item C<void Parrot_str_titlecase_inplace(PARROT_INTERP, STRING *s)>
-
-Converts the specified Parrot string to title case.
-
-=cut
-*/
-
-PARROT_EXPORT
-void
-Parrot_str_titlecase_inplace(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
-{
- ASSERT_ARGS(Parrot_str_titlecase_inplace)
- if (STRING_IS_NULL(s)) {
+ if (STRING_IS_NULL(s))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"Can't titlecase NULL string");
- }
else {
- Parrot_str_write_COW(interp, s);
- CHARSET_TITLECASE(interp, s);
+ STRING * const res = CHARSET_TITLECASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3141,7 +2716,7 @@
/*
-=item C<const char * Parrot_string_cstring(PARROT_INTERP, const STRING *str)>
+=item C<const char * Parrot_str_cstring(PARROT_INTERP, const STRING *str)>
Returns a C string from a Parrot string. Both sides are treated
as constants -- i.e. do not resize the result.
@@ -3154,10 +2729,10 @@
PARROT_PURE_FUNCTION
PARROT_CANNOT_RETURN_NULL
const char *
-Parrot_string_cstring(SHIM_INTERP, ARGIN(const STRING *str))
+Parrot_str_cstring(SHIM_INTERP, ARGIN(const STRING *str))
{
- ASSERT_ARGS(Parrot_string_cstring)
- /* TODO handle NUL and friends */
+ ASSERT_ARGS(Parrot_str_cstring)
+ /* TODO handle NULL and friends */
return str->strstart;
}
@@ -3182,6 +2757,7 @@
ARGIN(const STRING *s), UINTVAL offset)
{
ASSERT_ARGS(Parrot_str_is_cclass)
+
if (!Parrot_str_byte_length(interp, s))
return 0;
@@ -3191,8 +2767,8 @@
/*
-=item C<INTVAL Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, STRING *s,
-UINTVAL offset, UINTVAL count)>
+=item C<INTVAL Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*s, UINTVAL offset, UINTVAL count)>
Finds the first occurrence of the given character class in C<flags> in the
string, and returns its glyph-wise index.
@@ -3204,20 +2780,22 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL
-Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, ARGIN_NULLOK(STRING *s),
+Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, ARGIN_NULLOK(const STRING *s),
UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(Parrot_str_find_cclass)
- if (!s)
+
+ if (STRING_IS_NULL(s))
return -1;
return CHARSET_FIND_CCLASS(interp, flags, s, offset, count);
}
+
/*
-=item C<INTVAL Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*s, UINTVAL offset, UINTVAL count)>
+=item C<INTVAL Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags, const
+STRING *s, UINTVAL offset, UINTVAL count)>
Finds the first occurrence of the a character I<not> in the given character
class in C<flags> in the string starting from C<offset> and looking at C<count>
@@ -3232,10 +2810,11 @@
PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN_NULLOK(STRING *s), UINTVAL offset, UINTVAL count)
+ ARGIN_NULLOK(const STRING *s), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(Parrot_str_find_not_cclass)
- if (!s)
+
+ if (STRING_IS_NULL(s))
return -1;
return CHARSET_FIND_NOT_CCLASS(interp, flags, s, offset, count);
@@ -3245,10 +2824,10 @@
/*
=item C<STRING* Parrot_str_change_charset(PARROT_INTERP, STRING *src, INTVAL
-charset_nr, STRING *dest)>
+charset_nr)>
-If C<dest> == NULL, converts C<src> to the given charset or encoding inplace.
-Otherwise returns a copy of C<src> with the charset/encoding in C<dest>.
+Converts C<src> to the given charset or encoding and returns the result as a
+new string.
=cut
@@ -3259,13 +2838,13 @@
PARROT_CAN_RETURN_NULL
STRING*
Parrot_str_change_charset(PARROT_INTERP, ARGMOD_NULLOK(STRING *src),
- INTVAL charset_nr, ARGOUT_NULLOK(STRING *dest))
+ INTVAL charset_nr)
{
ASSERT_ARGS(Parrot_str_change_charset)
const CHARSET *new_charset;
- if (!src)
- return NULL;
+ if (STRING_IS_NULL(src))
+ return STRINGNULL;
new_charset = Parrot_get_charset(interp, charset_nr);
@@ -3273,41 +2852,20 @@
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_CHARTYPE,
"charset #%d not found", (int) charset_nr);
- /*
- * dest is an empty string header or NULL, if an inplace
- * operation is desired
- */
- if (dest) {
- if (new_charset == src->charset) {
- dest = Parrot_str_reuse_COW(interp, src, dest);
- dest->charset = new_charset;
- /* keep encoding */
- return dest;
- }
-
- dest->charset = new_charset;
-
- /* get prefered encoding for charset */
- dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
- }
- else {
- if (new_charset == src->charset)
- return src;
-
- Parrot_str_write_COW(interp, src);
- }
+ if (new_charset == src->charset)
+ return src;
- return new_charset->to_charset(interp, src, dest);
+ return new_charset->to_charset(interp, src);
}
/*
=item C<STRING* Parrot_str_change_encoding(PARROT_INTERP, STRING *src, INTVAL
-encoding_nr, STRING *dest)>
+encoding_nr)>
-If C<dest> == NULL, converts C<src> to the given charset or encoding in place.
-Otherwise returns a copy of C<src> with the charset/encoding in C<dest>
+Converts C<src> to the given charset or encoding and returns the result as a
+new string.
=cut
@@ -3317,14 +2875,14 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
STRING*
-Parrot_str_change_encoding(PARROT_INTERP, ARGIN_NULLOK(STRING *src),
- INTVAL encoding_nr, ARGOUT_NULLOK(STRING *dest))
+Parrot_str_change_encoding(PARROT_INTERP, ARGMOD_NULLOK(STRING *src),
+ INTVAL encoding_nr)
{
ASSERT_ARGS(Parrot_str_change_encoding)
const ENCODING *new_encoding;
- if (!src)
- return NULL;
+ if (STRING_IS_NULL(src))
+ return STRINGNULL;
new_encoding = Parrot_get_encoding(interp, encoding_nr);
@@ -3332,31 +2890,16 @@
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_CHARTYPE,
"encoding #%d not found", (int) encoding_nr);
- /*
- * dest is an empty string header or NULL, if an inplace
- * operation is desired
- */
- if (dest) {
- dest->encoding = new_encoding;
- if (new_encoding == src->encoding) {
- dest = Parrot_str_reuse_COW(interp, src, dest);
- return dest;
- }
- }
- else {
- if (new_encoding == src->encoding)
- return src;
-
- Parrot_str_write_COW(interp, src);
- }
+ if (new_encoding == src->encoding)
+ return src;
- return new_encoding->to_encoding(interp, src, dest);
+ return new_encoding->to_encoding(interp, src);
}
/*
-=item C<STRING * Parrot_str_compose(PARROT_INTERP, STRING *src)>
+=item C<STRING * Parrot_str_compose(PARROT_INTERP, const STRING *src)>
Normalizes the string.
@@ -3368,10 +2911,11 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
STRING *
-Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
+Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(const STRING *src))
{
ASSERT_ARGS(Parrot_str_compose)
- if (!src)
+
+ if (STRING_IS_NULL(src))
return NULL;
if (!src->strlen)
@@ -3399,24 +2943,105 @@
Parrot_str_join(PARROT_INTERP, ARGIN_NULLOK(STRING *j), ARGIN(PMC *ar))
{
ASSERT_ARGS(Parrot_str_join)
- STRING *res;
- STRING *s;
- const int ar_len = VTABLE_elements(interp, ar);
- int i;
+ STRING **chunks;
+ STRING *res;
+ STRING *s;
+ char *pos;
+ const int ar_len = VTABLE_elements(interp, ar);
+ int total_length = 0;
+ int transcoded = 0;
+ int i;
if (ar_len == 0)
return Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
- s = VTABLE_get_string_keyed_int(interp, ar, 0);
- res = s ? Parrot_str_copy(interp, s) : NULL;
+ if (STRING_IS_NULL(j))
+ j = Parrot_str_new_noinit(interp, enum_stringrep_one, 0);
+
+ chunks = (STRING **)Parrot_gc_allocate_fixed_size_storage(interp,
+ ar_len * sizeof (STRING *));
+
+ for (i = 0; i < ar_len; ++i) {
+ STRING *next = VTABLE_get_string_keyed_int(interp, ar, i);
+
+ if (STRING_IS_NULL(next)) {
+ chunks[i] = STRINGNULL;
+ continue;
+ }
+
+ if (next->encoding != j->encoding) {
+ const ENCODING *e = j->encoding;
+
+ string_rep_compatible(interp, next, j, &e);
+ if (e == Parrot_fixed_8_encoding_ptr)
+ e = Parrot_utf8_encoding_ptr;
+ j = e->to_encoding(interp, j);
+ transcoded = 1;
+ }
+
+ chunks[i] = next;
+ total_length += next->bufused;
+ }
+
+ /* with the right charset, transcode any strings if necessary */
+ if (transcoded) {
+ const CHARSET *c = j->charset;
+ const ENCODING *e = j->encoding;
+
+ for (i = 0; i < ar_len; ++i) {
+ STRING *s = chunks[i];
+
+ if (STRING_IS_NULL(s))
+ continue;
+
+ if (s->encoding != e || s->charset != c) {
+ STRING *new_s = e->to_encoding(interp, s);
+ chunks[i] = new_s;
+ total_length += s->bufused - new_s->bufused;
+ }
+ }
+ }
+
+ /* add the length of the separator, now that it's transcoded */
+ total_length += j->bufused * ar_len;
+
+ res = Parrot_gc_new_string_header(interp, 0);
+ Parrot_gc_allocate_string_storage(interp, res, total_length);
+
+ res->charset = j->charset;
+ res->encoding = j->encoding;
+
+ /* Iterate over chunks and append it to res */
+ pos = res->strstart;
+
+ /* Copy first chunk */
+ s = chunks[0];
+ if (!STRING_IS_NULL(s)) {
+ mem_sys_memcopy(pos, s->strstart, s->bufused);
+ pos += s->bufused;
+ }
for (i = 1; i < ar_len; ++i) {
- STRING * const next = VTABLE_get_string_keyed_int(interp, ar, i);
+ STRING *next = chunks[i];
+
+ if (STRING_IS_NULL(next))
+ continue;
+
+ mem_sys_memcopy(pos, j->strstart, j->bufused);
+ pos += j->bufused;
- res = Parrot_str_append(interp, res, j);
- res = Parrot_str_append(interp, res, next);
+ mem_sys_memcopy(pos, next->strstart, next->bufused);
+ pos += next->bufused;
+
+ PARROT_ASSERT(pos <= res->strstart + Buffer_buflen(res));
}
+ res->bufused = pos - res->strstart;
+ res->strlen = CHARSET_CODEPOINTS(interp, res);
+
+ Parrot_gc_free_fixed_size_storage(interp, ar_len * sizeof (STRING *),
+ chunks);
+
return res;
}
@@ -3426,8 +3051,8 @@
=item C<PMC* Parrot_str_split(PARROT_INTERP, STRING *delim, STRING *str)>
Splits the string C<str> at the delimiter C<delim>, returning a
-C<ResizableStringArray>, or his mapped type in the current HLL,
-of results. Returns PMCNULL if the string or the delimiter is NULL.
+C<ResizableStringArray>, or his mapped type in the current HLL, of results.
+Returns PMCNULL if the string or the delimiter is NULL.
=cut
@@ -3435,7 +3060,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
PMC*
Parrot_str_split(PARROT_INTERP,
ARGIN_NULLOK(STRING *delim), ARGIN_NULLOK(STRING *str))
@@ -3447,7 +3072,8 @@
if (STRING_IS_NULL(delim) || STRING_IS_NULL(str))
return PMCNULL;
- res = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
+ res = Parrot_pmc_new(interp,
+ Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
slen = Parrot_str_byte_length(interp, str);
if (!slen)
@@ -3460,7 +3086,7 @@
VTABLE_set_integer_native(interp, res, slen);
for (i = 0; i < slen; ++i) {
- STRING * const p = Parrot_str_substr(interp, str, i, 1, NULL, 0);
+ STRING * const p = Parrot_str_substr(interp, str, i, 1);
VTABLE_set_string_keyed_int(interp, res, i, p);
}
@@ -3478,7 +3104,7 @@
while (ps <= slen) {
const int pl = pe - ps;
- STRING * const tstr = Parrot_str_substr(interp, str, ps, pl, NULL, 0);
+ STRING * const tstr = Parrot_str_substr(interp, str, ps, pl);
VTABLE_push_string(interp, res, tstr);
ps = pe + Parrot_str_byte_length(interp, delim);
@@ -3520,6 +3146,7 @@
unsigned int base, int minus)
{
ASSERT_ARGS(Parrot_str_from_uint)
+
/* the buffer must be at least as long as this */
char *p = tc + sizeof (UHUGEINTVAL)*8 + 1;
const char * const tail = p;
@@ -3528,18 +3155,18 @@
do {
const char cur = (char)(num % base);
- if (cur < 10) {
+
+ if (cur < 10)
*--p = (char)('0' + cur);
- }
- else {
+ else
*--p = (char)('a' + cur - 10);
- }
+
} while (num /= base);
if (minus)
*--p = '-';
- return string_make(interp, p, (UINTVAL)(tail - p), "ascii", 0);
+ return string_make(interp, p, (UINTVAL)(tail - p), NULL, 0);
}
@@ -3572,6 +3199,7 @@
return Parrot_str_from_uint(interp, tc, (UHUGEINTVAL)num, base, is_neg);
}
+
/*
=back
Modified: branches/ops_pct/src/string/charset.c
==============================================================================
--- branches/ops_pct/src/string/charset.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset.c Wed May 5 08:45:29 2010 (r46302)
@@ -29,16 +29,16 @@
#include "charset/iso-8859-1.h"
#include "charset/unicode.h"
-CHARSET *Parrot_iso_8859_1_charset_ptr;
-CHARSET *Parrot_binary_charset_ptr;
-CHARSET *Parrot_default_charset_ptr;
-CHARSET *Parrot_unicode_charset_ptr;
-CHARSET *Parrot_ascii_charset_ptr;
+const CHARSET *Parrot_iso_8859_1_charset_ptr;
+const CHARSET *Parrot_binary_charset_ptr;
+const CHARSET *Parrot_default_charset_ptr;
+const CHARSET *Parrot_unicode_charset_ptr;
+const CHARSET *Parrot_ascii_charset_ptr;
/* all registered charsets are collected in one global structure */
typedef struct To_converter {
- NOTNULL(CHARSET *to);
+ NOTNULL(const CHARSET *to);
NOTNULL(charset_converter_t func);
} To_converter;
@@ -97,7 +97,7 @@
*/
PARROT_EXPORT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
PARROT_MALLOC
CHARSET *
Parrot_new_charset(PARROT_INTERP)
@@ -168,7 +168,8 @@
/*
-=item C<CHARSET * Parrot_load_charset(PARROT_INTERP, const char *charsetname)>
+=item C<const CHARSET * Parrot_load_charset(PARROT_INTERP, const char
+*charsetname)>
Throws an exception (Can't load charsets dynamically yet. https://trac.parrot.org/parrot/wiki/StringsTasklist).
@@ -179,7 +180,7 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-CHARSET *
+const CHARSET *
Parrot_load_charset(PARROT_INTERP, ARGIN(const char *charsetname))
{
ASSERT_ARGS(Parrot_load_charset)
@@ -243,7 +244,7 @@
/*
-=item C<STRING* Parrot_charset_name(PARROT_INTERP, INTVAL number_of_charset)>
+=item C<STRING * Parrot_charset_name(PARROT_INTERP, INTVAL number_of_charset)>
Returns the name of the charset given by the INTVAL index
C<number_of_charset>.
@@ -255,12 +256,12 @@
PARROT_EXPORT
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-STRING*
+STRING *
Parrot_charset_name(SHIM_INTERP, INTVAL number_of_charset)
{
ASSERT_ARGS(Parrot_charset_name)
if (number_of_charset < 0 || number_of_charset >= all_charsets->n_charsets)
- return NULL;
+ return STRINGNULL;
return all_charsets->set[number_of_charset].name;
}
@@ -347,7 +348,7 @@
all_charsets->set = mem_gc_realloc_n_typed_zeroed(interp,
all_charsets->set, n + 1, n, One_charset);
- all_charsets->n_charsets++;
+ ++all_charsets->n_charsets;
all_charsets->set[n].charset = charset;
all_charsets->set[n].n_converters = 0;
@@ -371,7 +372,7 @@
{
ASSERT_ARGS(Parrot_str_internal_register_charset_names)
int n;
- for (n = 0; n < all_charsets->n_charsets; n++)
+ for (n = 0; n < all_charsets->n_charsets; ++n)
all_charsets->set[n].name =
Parrot_str_new_constant(interp, all_charsets->set[n].charset->name);
}
@@ -509,7 +510,7 @@
/*
=item C<INTVAL Parrot_make_default_charset(PARROT_INTERP, const char
-*charsetname, CHARSET *charset)>
+*charsetname, const CHARSET *charset)>
Sets the current default charset to C<charset> with name C<charsetname>.
@@ -520,7 +521,7 @@
PARROT_EXPORT
INTVAL
Parrot_make_default_charset(SHIM_INTERP, SHIM(const char *charsetname),
- ARGIN(CHARSET *charset))
+ ARGIN(const CHARSET *charset))
{
ASSERT_ARGS(Parrot_make_default_charset)
Parrot_default_charset_ptr = charset;
@@ -587,7 +588,7 @@
/*
=item C<void Parrot_register_charset_converter(PARROT_INTERP, const CHARSET
-*lhs, CHARSET *rhs, charset_converter_t func)>
+*lhs, const CHARSET *rhs, charset_converter_t func)>
Registers a converter C<func> from charset C<lhs> to C<rhs>.
@@ -598,7 +599,7 @@
PARROT_EXPORT
void
Parrot_register_charset_converter(PARROT_INTERP,
- ARGIN(const CHARSET *lhs), ARGIN(CHARSET *rhs),
+ ARGIN(const CHARSET *lhs), ARGIN(const CHARSET *rhs),
ARGIN(charset_converter_t func))
{
ASSERT_ARGS(Parrot_register_charset_converter)
Modified: branches/ops_pct/src/string/charset/ascii.c
==============================================================================
--- branches/ops_pct/src/string/charset/ascii.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/ascii.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -32,26 +32,29 @@
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
PARROT_CANNOT_RETURN_NULL
-static STRING* compose(PARROT_INTERP, ARGIN(STRING *src))
+static STRING* compose(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING* decompose(PARROT_INTERP, ARGMOD(STRING *src))
+static STRING* decompose(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*src);
+ __attribute__nonnull__(2);
-static void downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *src))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void downcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP, ARGIN(const STRING *src))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
static INTVAL find_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -59,7 +62,7 @@
static INTVAL find_not_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -68,65 +71,48 @@
PARROT_WARN_UNUSED_RESULT
static INTVAL is_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-static void set_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL replace_count,
- ARGMOD(STRING *insert_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*insert_string);
-
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
__attribute__nonnull__(1);
-static void titlecase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *src))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void titlecase_first(SHIM_INTERP, ARGMOD(STRING *source_string))
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*source_string);
-
PARROT_CANNOT_RETURN_NULL
-static STRING * to_ascii(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+static STRING* titlecase_first(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING * to_charset(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+static STRING * to_ascii(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING * to_unicode(PARROT_INTERP,
- ARGMOD(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+static STRING * to_charset(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*src)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
-static void upcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *src))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void upcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP, ARGIN(const STRING *src))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL validate(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL validate(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -137,41 +123,40 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_downcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_downcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_not_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(insert_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_titlecase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_to_ascii __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_to_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_to_unicode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
#define ASSERT_ARGS_upcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_validate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -180,10 +165,10 @@
/*
-=item C<STRING * ascii_get_graphemes(PARROT_INTERP, STRING *source_string,
-UINTVAL offset, UINTVAL count)>
+=item C<STRING * ascii_get_graphemes(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
-Retrieves the graphemes for the STRING C<source_string>, starting at
+Retrieves the graphemes for the STRING C<src>, starting at
C<offset> and ending at C<offset + count>.
=cut
@@ -193,62 +178,15 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING *
-ascii_get_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count)
+ascii_get_graphemes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(ascii_get_graphemes)
- return ENCODING_GET_BYTES(interp, source_string, offset, count);
-}
-
-/*
-
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets the graphemes for C<source_string>, starting at C<offset>. Replace
-C<replace_count> graphemes with those from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
- ASSERT_ARGS(set_graphemes)
- ENCODING_SET_BYTES(interp, source_string, offset,
- replace_count, insert_string);
-
-}
-
-/*
-
-=item C<STRING * ascii_get_graphemes_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Retrieves the graphemes in place for ascii STRING C<source_string>,
-starting at C<offset>. Retrieves C<count> graphemes and puts them
-into C<dest_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-STRING *
-ascii_get_graphemes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
- ASSERT_ARGS(ascii_get_graphemes_inplace)
- return ENCODING_GET_BYTES_INPLACE(interp, source_string,
- offset, count, dest_string);
+ return ENCODING_GET_BYTES(interp, src, offset, count);
}
/*
-=item C<static STRING * to_ascii(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_ascii(PARROT_INTERP, const STRING *src)>
Attempts to convert STRING C<src> to ASCII in STRING C<dest>. Throws
an exception if unconvertable UNICODE characters are involved.
@@ -259,7 +197,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_ascii(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_ascii(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_ascii)
String_iter iter;
@@ -267,13 +205,9 @@
unsigned char *p;
const UINTVAL len = src->strlen;
- if (dest) {
- Parrot_gc_reallocate_string_storage(interp, dest, len);
- }
- else {
- /* the string can't grow - replace inplace */
- dest = src;
- }
+ /* the string can't grow. Just clone it */
+ STRING * const dest = Parrot_str_clone(interp, src);
+
p = (unsigned char *)dest->strstart;
ENCODING_ITER_INIT(interp, src, &iter);
for (offs = 0; offs < len; ++offs) {
@@ -292,35 +226,7 @@
/*
-=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src, STRING *dest)>
-
-Converts the ASCII STRING C<src> to UNICODE STRING C<dest>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-to_unicode(PARROT_INTERP, ARGMOD(STRING *src), ARGMOD_NULLOK(STRING *dest))
-{
- ASSERT_ARGS(to_unicode)
- if (dest) {
- dest->charset = Parrot_unicode_charset_ptr;
- dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
- Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
- return dest;
- }
- else {
- src->charset = Parrot_unicode_charset_ptr;
- src->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, src);
- return src;
- }
-}
-
-/*
-
-=item C<static STRING * to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_charset(PARROT_INTERP, const STRING *src)>
Converts STRING C<src> to ASCII charset STRING C<dest>.
@@ -330,24 +236,23 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_charset)
const charset_converter_t conversion_func =
Parrot_find_charset_converter(interp, src->charset, Parrot_ascii_charset_ptr);
if (conversion_func) {
- return conversion_func(interp, src, dest);
+ return conversion_func(interp, src);
}
else {
- return to_ascii(interp, src, dest);
+ return to_ascii(interp, src);
}
}
-/* A noop. can't compose ascii */
/*
-=item C<static STRING* compose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* compose(PARROT_INTERP, const STRING *src)>
Can't compose ASCII strings, so performs a string copy on it and
returns the new string.
@@ -358,16 +263,18 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-compose(PARROT_INTERP, ARGIN(STRING *src))
+compose(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(compose)
- return Parrot_str_copy(interp, src);
+
+ STRING * const dest = Parrot_str_copy(interp, src);
+
+ return dest;
}
-/* A noop. can't decompose ascii */
/*
-=item C<static STRING* decompose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* decompose(PARROT_INTERP, const STRING *src)>
Can't decompose ASCII, so we perform a string copy instead and return
a pointer to the new string.
@@ -378,69 +285,80 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-decompose(PARROT_INTERP, ARGMOD(STRING *src))
+decompose(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(decompose)
- return Parrot_str_copy(interp, src);
+
+ STRING * const dest = Parrot_str_copy(interp, src);
+
+ return dest;
}
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *src)>
-Converts the STRING C<source_string> to all uppercase.
+Converts the STRING C<src> to all uppercase.
=cut
*/
-static void
-upcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(upcase)
- const UINTVAL n = source_string->strlen;
+ STRING * const result = Parrot_str_clone(interp, src);
+ const UINTVAL n = src->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL offset;
- for (offset = 0; offset < n; offset++) {
+ for (offset = 0; offset < n; ++offset) {
buffer[offset] = (char)toupper((unsigned char)buffer[offset]);
}
}
+
+ return result;
}
/*
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *src)>
-Converts the STRING C<source_string> to all lower-case.
+Converts the STRING C<src> to all lower-case.
=cut
*/
-static void
-downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(downcase)
- const UINTVAL n = source_string->strlen;
+ STRING *result = Parrot_str_clone(interp, src);
+ const UINTVAL n = src->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL offset;
- for (offset = 0; offset < n; offset++) {
+ for (offset = 0; offset < n; ++offset) {
buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
}
}
+
+ return result;
}
/*
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *src)>
-Converts the STRING given by C<source_string> to title case, where
+Converts the STRING given by C<src> to title case, where
the first character is upper case and all the rest of the characters
are lower-case.
@@ -448,84 +366,103 @@
*/
-static void
-titlecase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(titlecase)
- const UINTVAL n = source_string->strlen;
+ STRING *result = Parrot_str_clone(interp, src);
+ const UINTVAL n = src->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL offset;
buffer[0] = (char)toupper((unsigned char)buffer[0]);
- for (offset = 1; offset < n; offset++) {
+ for (offset = 1; offset < n; ++offset) {
buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
}
}
+
+ return result;
}
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *src)>
-Sets the first character in the STRING C<source_string> to upper case,
+Sets the first character in the STRING C<src> to upper case,
but doesn't modify the rest of the string.
=cut
*/
-static void
-upcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(upcase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING * const result = Parrot_str_clone(interp, src);
+
+ if (result->strlen > 0) {
+ char * const buffer = result->strstart;
buffer[0] = (char)toupper((unsigned char)buffer[0]);
}
+
+ return result;
}
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING *src)>
-Sets the first character of the STRING C<source_string> to lowercase,
+Sets the first character of the STRING C<src> to lowercase,
but doesn't modify the rest of the characters.
=cut
*/
-static void
-downcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(downcase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING * const result = Parrot_str_clone(interp, src);
+
+ if (result->strlen > 0) {
+ char * const buffer = result->strstart;
buffer[0] = (char)tolower((unsigned char)buffer[0]);
}
+
+ return result;
}
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING *src)>
-Converts the first letter of STRING C<source_string> to upper case,
+Converts the first letter of STRING C<src> to upper case,
but doesn't modify the rest of the string.
=cut
*/
-static void
-titlecase_first(SHIM_INTERP, ARGMOD(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(titlecase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING * const result = Parrot_str_clone(interp, src);
+
+ if (result->strlen > 0) {
+ char * const buffer = result->strstart;
buffer[0] = (char)toupper((unsigned char)buffer[0]);
}
+
+ return result;
}
/*
@@ -550,8 +487,7 @@
const UINTVAL min_len = l_len > r_len ? r_len : l_len;
String_iter iter;
- if (lhs->encoding == Parrot_fixed_8_encoding_ptr &&
- rhs->encoding == Parrot_fixed_8_encoding_ptr) {
+ if (lhs->encoding == rhs->encoding) {
const int ret_val = memcmp(lhs->strstart, rhs->strstart, min_len);
if (ret_val)
return ret_val < 0 ? -1 : 1;
@@ -577,8 +513,8 @@
/*
-=item C<INTVAL mixed_cs_index(PARROT_INTERP, STRING *src, STRING *search,
-UINTVAL offs)>
+=item C<INTVAL mixed_cs_index(PARROT_INTERP, const STRING *src, const STRING
+*search, UINTVAL offs)>
Searches for the first instance of STRING C<search> in STRING C<src>.
returns the position where the substring is found if it is indeed found.
@@ -591,7 +527,7 @@
PARROT_WARN_UNUSED_RESULT
INTVAL
-mixed_cs_index(PARROT_INTERP, ARGIN(STRING *src), ARGIN(STRING *search),
+mixed_cs_index(PARROT_INTERP, ARGIN(const STRING *src), ARGIN(const STRING *search),
UINTVAL offs)
{
ASSERT_ARGS(mixed_cs_index)
@@ -637,7 +573,7 @@
/*
-=item C<INTVAL ascii_cs_index(PARROT_INTERP, STRING *source_string, STRING
+=item C<INTVAL ascii_cs_index(PARROT_INTERP, const STRING *src, const STRING
*search_string, UINTVAL offset)>
Searches for the first instance of STRING C<search> in STRING C<src>.
@@ -650,28 +586,28 @@
PARROT_WARN_UNUSED_RESULT
INTVAL
-ascii_cs_index(PARROT_INTERP, ARGIN(STRING *source_string),
- ARGIN(STRING *search_string), UINTVAL offset)
+ascii_cs_index(PARROT_INTERP, ARGIN(const STRING *src),
+ ARGIN(const STRING *search_string), UINTVAL offset)
{
ASSERT_ARGS(ascii_cs_index)
INTVAL retval;
- if (source_string->charset != search_string->charset) {
- return mixed_cs_index(interp, source_string, search_string, offset);
+ if (src->charset != search_string->charset) {
+ return mixed_cs_index(interp, src, search_string, offset);
}
- PARROT_ASSERT(source_string->encoding == Parrot_fixed_8_encoding_ptr);
- retval = Parrot_byte_index(interp, source_string,
+ PARROT_ASSERT(src->encoding == Parrot_fixed_8_encoding_ptr);
+ retval = Parrot_byte_index(interp, src,
search_string, offset);
return retval;
}
/*
-=item C<INTVAL ascii_cs_rindex(PARROT_INTERP, STRING *source_string, STRING
+=item C<INTVAL ascii_cs_rindex(PARROT_INTERP, const STRING *src, const STRING
*search_string, UINTVAL offset)>
Searches for the last instance of STRING C<search_string> in STRING
-C<source_string>. Starts searching at C<offset>.
+C<src>. Starts searching at C<offset>.
=cut
@@ -679,25 +615,25 @@
PARROT_WARN_UNUSED_RESULT
INTVAL
-ascii_cs_rindex(PARROT_INTERP, ARGIN(STRING *source_string),
- ARGIN(STRING *search_string), UINTVAL offset)
+ascii_cs_rindex(PARROT_INTERP, ARGIN(const STRING *src),
+ ARGIN(const STRING *search_string), UINTVAL offset)
{
ASSERT_ARGS(ascii_cs_rindex)
INTVAL retval;
- if (source_string->charset != search_string->charset)
+ if (src->charset != search_string->charset)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
"Cross-charset index not supported");
- PARROT_ASSERT(source_string->encoding == Parrot_fixed_8_encoding_ptr);
- retval = Parrot_byte_rindex(interp, source_string,
+ PARROT_ASSERT(src->encoding == Parrot_fixed_8_encoding_ptr);
+ retval = Parrot_byte_rindex(interp, src,
search_string, offset);
return retval;
}
/*
-=item C<static UINTVAL validate(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL validate(PARROT_INTERP, const STRING *src)>
Verifies that the given string is valid ASCII. Returns 1 if it is ASCII,
returns 0 otherwise.
@@ -708,7 +644,7 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-validate(PARROT_INTERP, ARGIN(STRING *src))
+validate(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(validate)
UINTVAL offset;
@@ -747,8 +683,8 @@
/*
-=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING
-*source_string, UINTVAL offset)>
+=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING *src,
+UINTVAL offset)>
=cut
@@ -756,17 +692,16 @@
PARROT_WARN_UNUSED_RESULT
static INTVAL
-is_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *source_string), UINTVAL offset)
+is_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src), UINTVAL offset)
{
ASSERT_ARGS(is_cclass)
UINTVAL codepoint;
- if (offset >= source_string->strlen)
+ if (offset >= src->strlen)
return 0;
- codepoint = ENCODING_GET_CODEPOINT(interp, source_string, offset);
+ codepoint = ENCODING_GET_CODEPOINT(interp, src, offset);
- if (codepoint >= sizeof (Parrot_ascii_typetable) /
- sizeof (Parrot_ascii_typetable[0])) {
+ if (codepoint >= sizeof (Parrot_ascii_typetable) / sizeof (Parrot_ascii_typetable[0])) {
return 0;
}
return (Parrot_ascii_typetable[codepoint] & flags) ? 1 : 0;
@@ -774,8 +709,8 @@
/*
-=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
Find a character in the given character class. Delegates to the find_cclass
method of the encoding plugin.
@@ -786,38 +721,37 @@
PARROT_WARN_UNUSED_RESULT
static INTVAL
-find_cclass(PARROT_INTERP, INTVAL flags, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count)
+find_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_cclass)
UINTVAL pos = offset;
UINTVAL end = offset + count;
- end = source_string->strlen < end ? source_string->strlen : end;
- return ENCODING_FIND_CCLASS(interp, source_string, Parrot_ascii_typetable,
+ end = src->strlen < end ? src->strlen : end;
+ return ENCODING_FIND_CCLASS(interp, src, Parrot_ascii_typetable,
flags, pos, end);
}
/*
-=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
*/
static INTVAL
-find_not_cclass(PARROT_INTERP, INTVAL flags, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count)
+find_not_cclass(PARROT_INTERP,
+ INTVAL flags, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_not_cclass)
UINTVAL pos = offset;
UINTVAL end = offset + count;
- end = source_string->strlen < end ? source_string->strlen : end;
+ end = src->strlen < end ? src->strlen : end;
for (; pos < end; ++pos) {
- const UINTVAL codepoint = ENCODING_GET_CODEPOINT(interp, source_string, pos);
+ const UINTVAL codepoint = ENCODING_GET_CODEPOINT(interp, src, pos);
if ((Parrot_ascii_typetable[codepoint] & flags) == 0) {
return pos;
}
@@ -827,10 +761,10 @@
/*
-=item C<size_t ascii_compute_hash(PARROT_INTERP, const STRING *source_string,
-size_t seed)>
+=item C<size_t ascii_compute_hash(PARROT_INTERP, const STRING *src, size_t
+seed)>
-Computes the hash of STRING C<source_string> starting with seed value
+Computes the hash of STRING C<src> starting with seed value
C<seed>.
=cut
@@ -839,14 +773,14 @@
PARROT_PURE_FUNCTION
size_t
-ascii_compute_hash(SHIM_INTERP, ARGIN(const STRING *source_string), size_t seed)
+ascii_compute_hash(SHIM_INTERP, ARGIN(const STRING *src), size_t seed)
{
ASSERT_ARGS(ascii_compute_hash)
size_t hashval = seed;
- const char *buffptr = (const char *)source_string->strstart;
- UINTVAL len = source_string->strlen;
+ const char *buffptr = (const char *)src->strstart;
+ UINTVAL len = src->strlen;
- PARROT_ASSERT(source_string->encoding == Parrot_fixed_8_encoding_ptr);
+ PARROT_ASSERT(src->encoding == Parrot_fixed_8_encoding_ptr);
while (len--) {
hashval += hashval << 5;
hashval += *buffptr++;
@@ -856,7 +790,7 @@
/*
-=item C<const CHARSET * Parrot_charset_ascii_init(PARROT_INTERP)>
+=item C<void Parrot_charset_ascii_init(PARROT_INTERP)>
Initialize the ASCII charset but registering all the necessary
function pointers and settings.
@@ -865,8 +799,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_ascii_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_ascii_init)
@@ -874,8 +807,6 @@
static const CHARSET base_set = {
"ascii",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -900,13 +831,13 @@
STRUCT_COPY_FROM_STRUCT(return_set, base_set);
return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
Parrot_register_charset(interp, "ascii", return_set);
- return return_set;
+
+ return;
}
/*
-=item C<STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, STRING *src, STRING
-*dest)>
+=item C<STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, const STRING *src)>
Converts an ASCII STRING C<src> to a binary STRING C<dest>.
@@ -916,29 +847,25 @@
PARROT_CANNOT_RETURN_NULL
STRING *
-charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(charset_cvt_ascii_to_binary)
- if (dest) {
- UINTVAL offs;
+ STRING * const dest = Parrot_str_clone(interp, src);
+ UINTVAL offs;
- Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
- dest->bufused = src->bufused;
- dest->strlen = src->strlen;
- for (offs = 0; offs < src->strlen; ++offs) {
- const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
- ENCODING_SET_BYTE(interp, dest, offs, c);
- }
- return dest;
+ for (offs = 0; offs < src->strlen; ++offs) {
+ const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+ ENCODING_SET_BYTE(interp, dest, offs, c);
}
- src->charset = Parrot_binary_charset_ptr;
- return src;
+
+ dest->charset = Parrot_binary_charset_ptr;
+ return dest;
}
/*
-=item C<STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, STRING *src,
-STRING *dest)>
+=item C<STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, const STRING
+*src)>
Converts ASCII STRING C<src> to ISO8859-1 STRING C<dest>.
@@ -948,24 +875,19 @@
PARROT_CANNOT_RETURN_NULL
STRING *
-charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(charset_cvt_ascii_to_iso_8859_1)
- if (dest) {
- UINTVAL offs;
+ STRING * const dest = Parrot_str_clone(interp, src);
+ UINTVAL offs;
- Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
- dest->bufused = src->bufused;
- dest->strlen = src->strlen;
- for (offs = 0; offs < src->strlen; ++offs) {
- const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
- ENCODING_SET_BYTE(interp, dest, offs, c);
- }
- return dest;
+ for (offs = 0; offs < src->strlen; ++offs) {
+ const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+ ENCODING_SET_BYTE(interp, dest, offs, c);
}
- src->charset = Parrot_iso_8859_1_charset_ptr;
- return src;
+
+ dest->charset = Parrot_iso_8859_1_charset_ptr;
+ return dest;
}
/*
Modified: branches/ops_pct/src/string/charset/ascii.h
==============================================================================
--- branches/ops_pct/src/string/charset/ascii.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/ascii.h Wed May 5 08:45:29 2010 (r46302)
@@ -30,14 +30,14 @@
PARROT_PURE_FUNCTION
size_t ascii_compute_hash(SHIM_INTERP,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
size_t seed)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
INTVAL ascii_cs_index(PARROT_INTERP,
- ARGIN(STRING *source_string),
- ARGIN(STRING *search_string),
+ ARGIN(const STRING *src),
+ ARGIN(const STRING *search_string),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -45,8 +45,8 @@
PARROT_WARN_UNUSED_RESULT
INTVAL ascii_cs_rindex(PARROT_INTERP,
- ARGIN(STRING *source_string),
- ARGIN(STRING *search_string),
+ ARGIN(const STRING *src),
+ ARGIN(const STRING *search_string),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -55,49 +55,34 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING * ascii_get_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-STRING * ascii_get_graphemes_inplace(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *dest_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*dest_string);
-
PARROT_CANNOT_RETURN_NULL
STRING * charset_cvt_ascii_to_binary(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+ ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+ ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
INTVAL mixed_cs_index(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN(STRING *search),
+ ARGIN(const STRING *src),
+ ARGIN(const STRING *search),
UINTVAL offs)
__attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_ascii_init(PARROT_INTERP)
+void Parrot_charset_ascii_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_ascii_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -105,22 +90,18 @@
, PARROT_ASSERT_ARG(lhs) \
, PARROT_ASSERT_ARG(rhs))
#define ASSERT_ARGS_ascii_compute_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_ascii_cs_index __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
+ , PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(search_string))
#define ASSERT_ARGS_ascii_cs_rindex __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
+ , PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(search_string))
#define ASSERT_ARGS_ascii_get_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_ascii_get_graphemes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(dest_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_charset_cvt_ascii_to_binary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
Modified: branches/ops_pct/src/string/charset/binary.c
==============================================================================
--- branches/ops_pct/src/string/charset/binary.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/binary.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -34,80 +34,74 @@
__attribute__nonnull__(3);
PARROT_CANNOT_RETURN_NULL
-static STRING* compose(PARROT_INTERP, SHIM(STRING *source_string))
+static STRING* compose(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
static INTVAL cs_index(SHIM_INTERP,
- SHIM(STRING *source_string),
- SHIM(STRING *search_string),
+ SHIM(const STRING *src),
+ SHIM(const STRING *search_string),
SHIM(UINTVAL offset));
static INTVAL cs_rindex(SHIM_INTERP,
- SHIM(STRING *source_string),
- SHIM(STRING *search_string),
+ SHIM(const STRING *src),
+ SHIM(const STRING *search_string),
SHIM(UINTVAL offset));
PARROT_CANNOT_RETURN_NULL
-static STRING* decompose(PARROT_INTERP, SHIM(STRING *source_string))
+static STRING* decompose(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
static INTVAL find_cclass(SHIM_INTERP,
SHIM(INTVAL flags),
- SHIM(STRING *source_string),
+ SHIM(const STRING *src),
UINTVAL offset,
UINTVAL count);
static INTVAL find_not_cclass(SHIM_INTERP,
SHIM(INTVAL flags),
- SHIM(STRING *source_string),
+ SHIM(const STRING *src),
UINTVAL offset,
UINTVAL count);
static INTVAL is_cclass(SHIM_INTERP,
SHIM(INTVAL flags),
- SHIM(const STRING *source_string),
+ SHIM(const STRING *src),
SHIM(UINTVAL offset));
-static void set_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL replace_count,
- ARGMOD(STRING *insert_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*insert_string);
-
PARROT_CANNOT_RETURN_NULL
static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
__attribute__nonnull__(1);
-static void titlecase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
PARROT_CANNOT_RETURN_NULL
-static STRING* to_charset(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+static STRING* to_charset(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void upcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static UINTVAL validate(SHIM_INTERP, SHIM(STRING *source_string));
+static UINTVAL validate(SHIM_INTERP, SHIM(const STRING *src));
#define ASSERT_ARGS_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(lhs) \
, PARROT_ASSERT_ARG(rhs))
@@ -124,10 +118,6 @@
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_find_not_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(insert_string))
#define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -152,31 +142,10 @@
#define EXCEPTION(err, str) \
Parrot_ex_throw_from_c_args(interp, NULL, (err), (str))
-/*
-
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets the graphemes for STRING C<source_string>, starting at offset
-C<offset>. Replaces C<replace_count> graphemes from STRING
-C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
- ASSERT_ARGS(set_graphemes)
- ENCODING_SET_BYTES(interp, source_string, offset,
- replace_count, insert_string);
-}
/*
-=item C<static STRING* to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING* to_charset(PARROT_INTERP, const STRING *src)>
Converts the STRING C<src> to STRING C<dest> in binary mode. Throws
an exception if a suitable conversion function is not found.
@@ -187,14 +156,14 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_charset)
charset_converter_t conversion_func =
Parrot_find_charset_converter(interp, src->charset, Parrot_binary_charset_ptr);
if (conversion_func)
- return conversion_func(interp, src, dest);
+ return conversion_func(interp, src);
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
"to_charset for binary not implemented");
@@ -202,7 +171,7 @@
/*
-=item C<static STRING* compose(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* compose(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot compose a binary string.
@@ -213,7 +182,7 @@
/* A err. can't compose binary */
PARROT_CANNOT_RETURN_NULL
static STRING*
-compose(PARROT_INTERP, SHIM(STRING *source_string))
+compose(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(compose)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't compose binary data");
@@ -221,7 +190,7 @@
/*
-=item C<static STRING* decompose(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* decompose(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot decompose a binary string.
@@ -232,7 +201,7 @@
/* A err. can't decompose binary */
PARROT_CANNOT_RETURN_NULL
static STRING*
-decompose(PARROT_INTERP, SHIM(STRING *source_string))
+decompose(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(decompose)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't decompose binary data");
@@ -240,7 +209,7 @@
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot convert a binary string to
upper case.
@@ -249,8 +218,9 @@
*/
-static void
-upcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(upcase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -258,7 +228,7 @@
/*
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot convert a binary string to
lower-case.
@@ -267,8 +237,9 @@
*/
-static void
-downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(downcase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -276,7 +247,7 @@
/*
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot convert a binary string to
title case.
@@ -285,8 +256,9 @@
*/
-static void
-titlecase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(titlecase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -294,7 +266,7 @@
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot set the first "character" of the
binary string to uppercase.
@@ -303,8 +275,9 @@
*/
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(upcase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -312,7 +285,7 @@
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING *src)>
Throws an exception because we cannot set the first "character"
of the binary string to lowercase.
@@ -321,8 +294,9 @@
*/
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(downcase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -330,7 +304,7 @@
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING *src)>
Throws an exception because we can't convert the first "character"
of binary data to title case.
@@ -339,8 +313,9 @@
*/
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(titlecase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -371,7 +346,7 @@
/*
-=item C<static INTVAL cs_index(PARROT_INTERP, STRING *source_string, STRING
+=item C<static INTVAL cs_index(PARROT_INTERP, const STRING *src, const STRING
*search_string, UINTVAL offset)>
Returns -1. It makes no sense to try and search for a substring in
@@ -382,8 +357,8 @@
*/
static INTVAL
-cs_index(SHIM_INTERP, SHIM(STRING *source_string),
- SHIM(STRING *search_string), SHIM(UINTVAL offset))
+cs_index(SHIM_INTERP, SHIM(const STRING *src),
+ SHIM(const STRING *search_string), SHIM(UINTVAL offset))
{
ASSERT_ARGS(cs_index)
return -1;
@@ -391,7 +366,7 @@
/*
-=item C<static INTVAL cs_rindex(PARROT_INTERP, STRING *source_string, STRING
+=item C<static INTVAL cs_rindex(PARROT_INTERP, const STRING *src, const STRING
*search_string, UINTVAL offset)>
Returns -1. It makes no sense to search for the last substring match
@@ -402,8 +377,8 @@
*/
static INTVAL
-cs_rindex(SHIM_INTERP, SHIM(STRING *source_string),
- SHIM(STRING *search_string), SHIM(UINTVAL offset))
+cs_rindex(SHIM_INTERP, SHIM(const STRING *src),
+ SHIM(const STRING *search_string), SHIM(UINTVAL offset))
{
ASSERT_ARGS(cs_rindex)
return -1;
@@ -411,7 +386,7 @@
/*
-=item C<static UINTVAL validate(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL validate(PARROT_INTERP, const STRING *src)>
Returns 1. All sequential data is valid binary data.
@@ -421,7 +396,7 @@
/* Binary's always valid */
static UINTVAL
-validate(SHIM_INTERP, SHIM(STRING *source_string))
+validate(SHIM_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(validate)
return 1;
@@ -429,16 +404,15 @@
/*
-=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING
-*source_string, UINTVAL offset)>
+=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING *src,
+UINTVAL offset)>
=cut
*/
static INTVAL
-is_cclass(SHIM_INTERP, SHIM(INTVAL flags), SHIM(const STRING *source_string),
- SHIM(UINTVAL offset))
+is_cclass(SHIM_INTERP, SHIM(INTVAL flags), SHIM(const STRING *src), SHIM(UINTVAL offset))
{
ASSERT_ARGS(is_cclass)
return 0;
@@ -446,8 +420,8 @@
/*
-=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
@@ -455,7 +429,7 @@
static INTVAL
find_cclass(SHIM_INTERP, SHIM(INTVAL flags),
- SHIM(STRING *source_string), UINTVAL offset, UINTVAL count)
+ SHIM(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_cclass)
return offset + count;
@@ -463,8 +437,8 @@
/*
-=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
@@ -472,7 +446,7 @@
static INTVAL
find_not_cclass(SHIM_INTERP, SHIM(INTVAL flags),
- SHIM(STRING *source_string), UINTVAL offset, UINTVAL count)
+ SHIM(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_not_cclass)
return offset + count;
@@ -500,7 +474,7 @@
/*
-=item C<const CHARSET * Parrot_charset_binary_init(PARROT_INTERP)>
+=item C<void Parrot_charset_binary_init(PARROT_INTERP)>
Initialize the binary charset, including function pointers and
settings.
@@ -509,8 +483,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_binary_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_binary_init)
@@ -518,8 +491,6 @@
static const CHARSET base_set = {
"binary",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -544,7 +515,8 @@
STRUCT_COPY_FROM_STRUCT(return_set, base_set);
return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
Parrot_register_charset(interp, "binary", return_set);
- return return_set;
+
+ return;
}
Modified: branches/ops_pct/src/string/charset/binary.h
==============================================================================
--- branches/ops_pct/src/string/charset/binary.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/binary.h Wed May 5 08:45:29 2010 (r46302)
@@ -16,8 +16,7 @@
/* HEADERIZER BEGIN: src/string/charset/binary.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_binary_init(PARROT_INTERP)
+void Parrot_charset_binary_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_charset_binary_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/charset/iso-8859-1.c
==============================================================================
--- branches/ops_pct/src/string/charset/iso-8859-1.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/iso-8859-1.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -27,25 +27,27 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-static STRING* compose(PARROT_INTERP, ARGIN(STRING *src))
+static STRING* compose(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING* decompose(PARROT_INTERP, SHIM(STRING *src))
+static STRING* decompose(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void downcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void downcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
static INTVAL find_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -53,7 +55,7 @@
static INTVAL find_not_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -61,66 +63,52 @@
static INTVAL is_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-static void set_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL replace_count,
- ARGMOD(STRING *insert_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*insert_string);
-
PARROT_CANNOT_RETURN_NULL
static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
__attribute__nonnull__(1);
-static void titlecase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void titlecase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-static STRING * to_charset(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+static STRING * to_charset(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING * to_iso_8859_1(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+static STRING * to_iso_8859_1(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
PARROT_CANNOT_RETURN_NULL
-static STRING * to_unicode(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+static STRING * to_unicode(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
-static void upcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void upcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static UINTVAL validate(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL validate(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -131,31 +119,27 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_downcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_downcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_not_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(insert_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_titlecase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_to_charset __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -167,10 +151,10 @@
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_upcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_validate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -181,28 +165,7 @@
/*
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets C<replace_count> graphemes in STRING C<source_string> starting at offset C<offset>.
-Gets the replacement graphemes from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
- ASSERT_ARGS(set_graphemes)
- ENCODING_SET_BYTES(interp, source_string, offset,
- replace_count, insert_string);
-}
-
-/*
-
-=item C<static STRING * to_iso_8859_1(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_iso_8859_1(PARROT_INTERP, const STRING *src)>
Converts STRING C<src> to iso-8859-1 in STRING C<dest>.
@@ -212,22 +175,16 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_iso_8859_1(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_iso_8859_1)
UINTVAL offs, src_len;
String_iter iter;
+ /* iso-8859-1 is never bigger then source */
+ STRING * dest = Parrot_str_clone(interp, src);
ENCODING_ITER_INIT(interp, src, &iter);
src_len = src->strlen;
- if (dest) {
- Parrot_gc_reallocate_string_storage(interp, dest, src_len);
- dest->strlen = src_len;
- }
- else {
- /* iso-8859-1 is never bigger then source */
- dest = src;
- }
dest->bufused = src_len;
dest->charset = Parrot_iso_8859_1_charset_ptr;
dest->encoding = Parrot_fixed_8_encoding_ptr;
@@ -244,7 +201,7 @@
/*
-=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_unicode(PARROT_INTERP, const STRING *src)>
Converts STRING C<src> to unicode STRING C<dest>.
@@ -254,40 +211,37 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_unicode(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_unicode(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_unicode)
- if (dest) {
- UINTVAL offs;
- String_iter iter;
-
- dest->charset = Parrot_unicode_charset_ptr;
- dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
- Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
- ENCODING_ITER_INIT(interp, dest, &iter);
- for (offs = 0; offs < src->strlen; ++offs) {
- const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
-
- if (iter.bytepos >= Buffer_buflen(dest) - 4) {
- UINTVAL need = (UINTVAL)((src->strlen - offs) * 1.5);
- if (need < 16)
- need = 16;
- Parrot_gc_reallocate_string_storage(interp, dest,
- Buffer_buflen(dest) + need);
- }
- iter.set_and_advance(interp, &iter, c);
+ STRING * dest = Parrot_str_clone(interp, src);
+ UINTVAL offs;
+ String_iter iter;
+
+ dest->charset = Parrot_unicode_charset_ptr;
+ dest->encoding = CHARSET_GET_PREFERRED_ENCODING(interp, dest);
+ Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
+ ENCODING_ITER_INIT(interp, dest, &iter);
+ for (offs = 0; offs < src->strlen; ++offs) {
+ const UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
+
+ if (iter.bytepos >= Buffer_buflen(dest) - 4) {
+ UINTVAL need = (UINTVAL)((src->strlen - offs) * 1.5);
+ if (need < 16)
+ need = 16;
+ Parrot_gc_reallocate_string_storage(interp, dest,
+ Buffer_buflen(dest) + need);
}
- dest->bufused = iter.bytepos;
- dest->strlen = iter.charpos;
- return dest;
+ iter.set_and_advance(interp, &iter, c);
}
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
- "to_unicode inplace for iso-8859-1 not implemented");
+ dest->bufused = iter.bytepos;
+ dest->strlen = iter.charpos;
+ return dest;
}
/*
-=item C<static STRING * to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_charset(PARROT_INTERP, const STRING *src)>
Converts the STRING C<src> to an ISO-8859-1 STRING C<dest>.
@@ -298,22 +252,22 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
static STRING *
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_charset)
const charset_converter_t conversion_func =
Parrot_find_charset_converter(interp, src->charset, Parrot_iso_8859_1_charset_ptr);
if (conversion_func)
- return conversion_func(interp, src, dest);
+ return conversion_func(interp, src);
else
- return to_iso_8859_1(interp, src, dest);
+ return to_iso_8859_1(interp, src);
}
/*
-=item C<static STRING* compose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* compose(PARROT_INTERP, const STRING *src)>
ISO-8859-1 does not support composing, so we just copy the STRING C<src> and return the
copy.
@@ -322,19 +276,21 @@
*/
-/* A noop. can't compose iso-8859-1 */
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
static STRING*
-compose(PARROT_INTERP, ARGIN(STRING *src))
+compose(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(compose)
- return Parrot_str_copy(interp, src);
+
+ STRING * const dest = Parrot_str_copy(interp, src);
+
+ return dest;
}
/*
-=item C<static STRING* decompose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* decompose(PARROT_INTERP, const STRING *src)>
SO-8859-1 does not support decomposing, so we throw an exception.
@@ -344,7 +300,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-decompose(PARROT_INTERP, SHIM(STRING *src))
+decompose(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(decompose)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
@@ -353,28 +309,29 @@
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *src)>
-Convert all graphemes in the STRING C<source_string> to upper case, for those
+Convert all graphemes in the STRING C<src> to upper case, for those
graphemes that support cases.
=cut
*/
-static void
-upcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(upcase)
unsigned char *buffer;
- UINTVAL offset = 0;
+ UINTVAL offset = 0;
+ STRING *result = Parrot_str_clone(interp, src);
- if (!source_string->strlen)
- return;
+ if (!result->strlen)
+ return result;
- Parrot_str_write_COW(interp, source_string);
- buffer = (unsigned char *)source_string->strstart;
- for (offset = 0; offset < source_string->strlen; offset++) {
+ buffer = (unsigned char *)result->strstart;
+ for (offset = 0; offset < result->strlen; ++offset) {
unsigned int c = buffer[offset]; /* XXX use encoding ? */
if (c >= 0xe0 && c != 0xf7)
c &= ~0x20;
@@ -382,64 +339,71 @@
c = toupper((unsigned char)c);
buffer[offset] = (unsigned char)c;
}
+
+ return result;
}
/*
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *src)>
-Converts all graphemes in STRING C<source_string> to lower-case, for those graphemes
+Converts all graphemes in STRING C<src> to lower-case, for those graphemes
that support cases.
=cut
*/
-static void
-downcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(downcase)
- if (source_string->strlen) {
- UINTVAL offset;
- unsigned char *buffer;
-
- Parrot_str_write_COW(interp, source_string);
- buffer = (unsigned char *)source_string->strstart;
- for (offset = 0; offset < source_string->strlen; offset++) {
- unsigned int c = buffer[offset];
- if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
- c |= 0x20;
- else
- c = tolower((unsigned char)c);
- buffer[offset] = (unsigned char)c;
- }
+ unsigned char *buffer;
+ UINTVAL offset = 0;
+ STRING *result = Parrot_str_clone(interp, src);
+
+ if (!result->strlen)
+ return result;
+
+ buffer = (unsigned char *)result->strstart;
+ for (offset = 0; offset < result->strlen; ++offset) {
+ unsigned int c = buffer[offset];
+ if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
+ c |= 0x20;
+ else
+ c = tolower((unsigned char)c);
+ buffer[offset] = (unsigned char)c;
}
+
+ return result;
}
/*
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *src)>
-Converts the graphemes in STRING C<source_string> to title case, for those graphemes
+Converts the graphemes in STRING C<src> to title case, for those graphemes
that support cases.
=cut
*/
-static void
-titlecase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(titlecase)
unsigned char *buffer;
- unsigned int c;
- UINTVAL offset;
+ unsigned int c;
+ UINTVAL offset;
+ STRING *result = Parrot_str_clone(interp, src);
- if (!source_string->strlen)
- return;
+ if (!result->strlen)
+ return result;
- Parrot_str_write_COW(interp, source_string);
- buffer = (unsigned char *)source_string->strstart;
+ buffer = (unsigned char *)result->strstart;
c = buffer[0];
if (c >= 0xe0 && c != 0xf7)
c &= ~0x20;
@@ -447,7 +411,7 @@
c = toupper((unsigned char)c);
buffer[0] = (unsigned char)c;
- for (offset = 1; offset < source_string->strlen; offset++) {
+ for (offset = 1; offset < result->strlen; ++offset) {
c = buffer[offset];
if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
c |= 0x20;
@@ -455,90 +419,101 @@
c = tolower((unsigned char)c);
buffer[offset] = (unsigned char)c;
}
+
+ return result;
}
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *src)>
-Converts the first grapheme in STRING C<source_string> to upper case, if it
+Converts the first grapheme in STRING C<src> to upper case, if it
supports cases.
=cut
*/
-static void
-upcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(upcase_first)
- if (source_string->strlen) {
- unsigned char *buffer;
- unsigned int c;
-
- Parrot_str_write_COW(interp, source_string);
- buffer = (unsigned char *)source_string->strstart;
- c = buffer[0];
- if (c >= 0xe0 && c != 0xf7)
- c &= ~0x20;
- else
- c = toupper((unsigned char)c);
- buffer[0] = (unsigned char)c;
- }
+ unsigned char *buffer;
+ unsigned int c;
+ STRING *result = Parrot_str_clone(interp, src);
+
+ if (!result->strlen)
+ return result;
+
+ buffer = (unsigned char *)result->strstart;
+ c = buffer[0];
+ if (c >= 0xe0 && c != 0xf7)
+ c &= ~0x20;
+ else
+ c = toupper((unsigned char)c);
+ buffer[0] = (unsigned char)c;
+
+ return result;
}
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING *src)>
-Converts the first character of the STRING C<source_string> to lower case, if the
+Converts the first character of the STRING C<src> to lower case, if the
grapheme supports lower case.
=cut
*/
-static void
-downcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(downcase_first)
- if (source_string->strlen) {
- unsigned char *buffer;
- unsigned int c;
-
- Parrot_str_write_COW(interp, source_string);
- buffer = (unsigned char *)source_string->strstart;
- c = buffer[0];
- if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
- c &= ~0x20;
- else
- c = tolower((unsigned char)c);
- buffer[0] = (unsigned char)c;
- }
+ unsigned char *buffer;
+ unsigned int c;
+ STRING *result = Parrot_str_clone(interp, src);
+
+ if (!result->strlen)
+ return result;
+
+ buffer = (unsigned char *)result->strstart;
+ c = buffer[0];
+ if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
+ c &= ~0x20;
+ else
+ c = tolower((unsigned char)c);
+ buffer[0] = (unsigned char)c;
+
+ return result;
}
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING *src)>
-Converts the first grapheme in STRING C<source_string> to title case, if the grapheme
+Converts the first grapheme in STRING C<src> to title case, if the grapheme
supports case.
=cut
*/
-static void
-titlecase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(titlecase_first)
- upcase_first(interp, source_string);
+ return upcase_first(interp, src);
}
/*
-=item C<static UINTVAL validate(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL validate(PARROT_INTERP, const STRING *src)>
Returns 1 if the STRING C<src> is a valid ISO-8859-1 STRING. Returns 0 otherwise.
@@ -547,7 +522,7 @@
*/
static UINTVAL
-validate(PARROT_INTERP, ARGIN(STRING *src))
+validate(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(validate)
UINTVAL offset;
@@ -562,22 +537,21 @@
/*
-=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING
-*source_string, UINTVAL offset)>
+=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING *src,
+UINTVAL offset)>
=cut
*/
static INTVAL
-is_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(const STRING *source_string), UINTVAL offset)
+is_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src), UINTVAL offset)
{
ASSERT_ARGS(is_cclass)
UINTVAL codepoint;
- if (offset >= source_string->strlen) return 0;
- codepoint = ENCODING_GET_CODEPOINT(interp, source_string, offset);
+ if (offset >= src->strlen) return 0;
+ codepoint = ENCODING_GET_CODEPOINT(interp, src, offset);
if (codepoint >= sizeof (Parrot_ascii_typetable) /
sizeof (Parrot_ascii_typetable[0])) {
@@ -588,8 +562,8 @@
/*
-=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
Find a character in the given character class. Delegates to the find_cclass
method of the encoding plugin.
@@ -600,21 +574,21 @@
static INTVAL
find_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
+ ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_cclass)
- UINTVAL pos = offset;
+ const UINTVAL pos = offset;
UINTVAL end = offset + count;
- end = source_string->strlen < end ? source_string->strlen : end;
- return ENCODING_FIND_CCLASS(interp, source_string,
+ end = src->strlen < end ? src->strlen : end;
+ return ENCODING_FIND_CCLASS(interp, src,
Parrot_iso_8859_1_typetable, flags, pos, end);
}
/*
-=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
@@ -622,15 +596,15 @@
static INTVAL
find_not_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
+ ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_not_cclass)
UINTVAL pos = offset;
UINTVAL end = offset + count;
- end = source_string->strlen < end ? source_string->strlen : end;
+ end = src->strlen < end ? src->strlen : end;
for (; pos < end; ++pos) {
- const UINTVAL codepoint = ENCODING_GET_CODEPOINT(interp, source_string, pos);
+ const UINTVAL codepoint = ENCODING_GET_CODEPOINT(interp, src, pos);
if ((Parrot_iso_8859_1_typetable[codepoint] & flags) == 0) {
return pos;
}
@@ -662,7 +636,7 @@
/*
-=item C<const CHARSET * Parrot_charset_iso_8859_1_init(PARROT_INTERP)>
+=item C<void Parrot_charset_iso_8859_1_init(PARROT_INTERP)>
Initializes the ISO-8859-1 charset by installing all the necessary function pointers.
@@ -670,8 +644,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_iso_8859_1_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_iso_8859_1_init)
@@ -679,8 +652,6 @@
static const CHARSET base_set = {
"iso-8859-1",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -705,13 +676,14 @@
STRUCT_COPY_FROM_STRUCT(return_set, base_set);
return_set->preferred_encoding = Parrot_fixed_8_encoding_ptr;
Parrot_register_charset(interp, "iso-8859-1", return_set);
- return return_set;
+
+ return;
}
/*
-=item C<STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, STRING *src,
-STRING *dest)>
+=item C<STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, const STRING
+*src)>
Converts STRING C<src> in ISO-8859-1 to ASCII STRING C<dest>.
@@ -722,29 +694,21 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING *
-charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(charset_cvt_iso_8859_1_to_ascii)
UINTVAL offs;
- if (dest) {
- Parrot_gc_reallocate_string_storage(interp, dest, src->strlen);
- dest->bufused = src->bufused;
- dest->strlen = src->strlen;
- }
+ STRING *dest = Parrot_str_clone(interp, src);
+
for (offs = 0; offs < src->strlen; ++offs) {
UINTVAL c = ENCODING_GET_BYTE(interp, src, offs);
if (c >= 0x80)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LOSSY_CONVERSION,
"lossy conversion to ascii");
- if (dest)
- ENCODING_SET_BYTE(interp, dest, offs, c);
+ ENCODING_SET_BYTE(interp, dest, offs, c);
}
- if (dest)
- return dest;
- src->charset = Parrot_ascii_charset_ptr;
- return src;
+ return dest;
}
/*
Modified: branches/ops_pct/src/string/charset/iso-8859-1.h
==============================================================================
--- branches/ops_pct/src/string/charset/iso-8859-1.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/iso-8859-1.h Wed May 5 08:45:29 2010 (r46302)
@@ -19,14 +19,11 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+ ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_iso_8859_1_init(PARROT_INTERP)
+void Parrot_charset_iso_8859_1_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_charset_cvt_iso_8859_1_to_ascii \
Modified: branches/ops_pct/src/string/charset/unicode.c
==============================================================================
--- branches/ops_pct/src/string/charset/unicode.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/unicode.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2005-2009, Parrot Foundation.
+Copyright (C) 2005-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -34,7 +34,7 @@
__attribute__nonnull__(3);
PARROT_CANNOT_RETURN_NULL
-static STRING* compose(PARROT_INTERP, ARGIN(STRING *src))
+static STRING* compose(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -45,25 +45,27 @@
__attribute__nonnull__(2);
static INTVAL cs_rindex(PARROT_INTERP,
- SHIM(STRING *source_string),
- SHIM(STRING *search_string),
+ SHIM(const STRING *src),
+ SHIM(const STRING *search_string),
SHIM(UINTVAL offset))
__attribute__nonnull__(1);
PARROT_CANNOT_RETURN_NULL
-static STRING* decompose(PARROT_INTERP, SHIM(STRING *src))
+static STRING* decompose(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static void downcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
static INTVAL find_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -71,7 +73,7 @@
static INTVAL find_not_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
@@ -79,69 +81,50 @@
PARROT_CANNOT_RETURN_NULL
static STRING * get_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_graphemes_inplace(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *dest_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*dest_string);
-
static INTVAL is_cclass(PARROT_INTERP,
INTVAL flags,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-static void set_graphemes(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL replace_count,
- ARGMOD(STRING *insert_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*insert_string);
-
PARROT_CANNOT_RETURN_NULL
static STRING * string_from_codepoint(PARROT_INTERP, UINTVAL codepoint)
__attribute__nonnull__(1);
-static void titlecase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* titlecase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
PARROT_CANNOT_RETURN_NULL
-static STRING* to_charset(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+static STRING* to_charset(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
static int u_iscclass(PARROT_INTERP, UINTVAL codepoint, INTVAL flags)
__attribute__nonnull__(1);
-static void upcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* upcase_first(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-static UINTVAL validate(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL validate(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -166,24 +149,16 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_not_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_graphemes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(dest_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_is_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_graphemes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(insert_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_string_from_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_titlecase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -223,34 +198,13 @@
#define UNIMPL EXCEPTION(EXCEPTION_UNIMPLEMENTED, "unimplemented unicode")
-/*
-
-=item C<static void set_graphemes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL replace_count, STRING *insert_string)>
-
-Sets C<replace_count> graphemes in STRING C<source_string> starting at offset
-C<offset>. Gets the graphemes to be replaced from STRING C<insert_string>.
-
-=cut
-
-*/
-
-static void
-set_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL replace_count, ARGMOD(STRING *insert_string))
-{
- ASSERT_ARGS(set_graphemes)
- ENCODING_SET_CODEPOINTS(interp, source_string, offset,
- replace_count, insert_string);
-}
-
/*
-=item C<static STRING * get_graphemes(PARROT_INTERP, STRING *source_string,
-UINTVAL offset, UINTVAL count)>
+=item C<static STRING * get_graphemes(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
-Gets the graphemes from STRING C<source_string> starting at C<offset>. Gets
+Gets the graphemes from STRING C<src> starting at C<offset>. Gets
C<count> graphemes total.
=cut
@@ -259,40 +213,16 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_graphemes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count)
+get_graphemes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_graphemes)
- return ENCODING_GET_CODEPOINTS(interp, source_string, offset, count);
+ return ENCODING_GET_CODEPOINTS(interp, src, offset, count);
}
/*
-=item C<static STRING * get_graphemes_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets C<count> graphemes in place from STRING C<source_string> starting at
-offset C<offset>. Puts them into STRING C<dest_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_graphemes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
- ASSERT_ARGS(get_graphemes_inplace)
- return ENCODING_GET_CODEPOINTS_INPLACE(interp, source_string,
- offset, count, dest_string);
-}
-
-
-/*
-
-=item C<static STRING* to_charset(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING* to_charset(PARROT_INTERP, const STRING *src)>
Converts input STRING C<src> to unicode STRING C<dest>.
@@ -302,7 +232,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_charset)
const charset_converter_t conversion_func =
@@ -310,15 +240,15 @@
Parrot_unicode_charset_ptr);
if (conversion_func)
- return conversion_func(interp, src, dest);
+ return conversion_func(interp, src);
- return Parrot_utf8_encoding_ptr->to_encoding(interp, src, dest);
+ return Parrot_utf8_encoding_ptr->to_encoding(interp, src);
}
/*
-=item C<static STRING* compose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* compose(PARROT_INTERP, const STRING *src)>
If Parrot is built with ICU, composes the STRING C<src>. Attempts to
denormalize the STRING into the ICU default, NFC.
@@ -331,7 +261,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-compose(PARROT_INTERP, ARGIN(STRING *src))
+compose(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(compose)
#if PARROT_HAS_ICU
@@ -381,7 +311,7 @@
/*
-=item C<static STRING* decompose(PARROT_INTERP, STRING *src)>
+=item C<static STRING* decompose(PARROT_INTERP, const STRING *src)>
Decompose function for unicode charset. This function is not yet implemented.
@@ -391,7 +321,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-decompose(PARROT_INTERP, SHIM(STRING *src))
+decompose(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(decompose)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -401,7 +331,7 @@
/*
-=item C<static void upcase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *src)>
Converts the STRING C<src> to all upper-case graphemes, for those characters
which support upper-case versions.
@@ -412,23 +342,25 @@
*/
-static void
-upcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(upcase)
#if PARROT_HAS_ICU
UErrorCode err;
int dest_len, src_len, needed;
+ STRING *res;
#endif
if (src->bufused == src->strlen
&& src->encoding == Parrot_utf8_encoding_ptr) {
- Parrot_ascii_charset_ptr->upcase(interp, src);
- return;
+ return Parrot_ascii_charset_ptr->upcase(interp, src);
}
#if PARROT_HAS_ICU
- src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+ /* to_encoding will allocate new string */
+ res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
/*
U_CAPI int32_t U_EXPORT2
u_strToUpper(UChar *dest, int32_t destCapacity,
@@ -440,8 +372,8 @@
/* use all available space - see below XXX */
/* TODO downcase, titlecase too */
- dest_len = Buffer_buflen(src) / sizeof (UChar);
- src_len = src->bufused / sizeof (UChar);
+ dest_len = Buffer_buflen(res) / sizeof (UChar);
+ src_len = res->bufused / sizeof (UChar);
/*
* XXX troubles:
@@ -460,33 +392,35 @@
* TODO downcase, titlecase
*/
needed = u_strToUpper(NULL, 0,
- (UChar *)src->strstart, src_len,
+ (UChar *)res->strstart, src_len,
NULL, /* locale = default */
&err);
if (needed > dest_len) {
- Parrot_gc_reallocate_string_storage(interp, src, needed * sizeof (UChar));
+ Parrot_gc_reallocate_string_storage(interp, res, needed * sizeof (UChar));
dest_len = needed;
}
err = U_ZERO_ERROR;
- dest_len = u_strToUpper((UChar *)src->strstart, dest_len,
- (UChar *)src->strstart, src_len,
+ dest_len = u_strToUpper((UChar *)res->strstart, dest_len,
+ (UChar *)res->strstart, src_len,
NULL, /* locale = default */
&err);
PARROT_ASSERT(U_SUCCESS(err));
- src->bufused = dest_len * sizeof (UChar);
+ res->bufused = dest_len * sizeof (UChar);
/* downgrade if possible */
if (dest_len == (int)src->strlen)
- src->encoding = Parrot_ucs2_encoding_ptr;
+ res->encoding = Parrot_ucs2_encoding_ptr;
else {
/* string is likely still ucs2 if it was earlier
* but strlen changed due to combining char
*/
- src->strlen = dest_len;
+ res->strlen = dest_len;
}
+ return res;
+
#else
UNUSED(src);
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
@@ -497,7 +431,7 @@
/*
-=item C<static void downcase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *src)>
Converts all graphemes to lower-case, for those graphemes which have cases.
@@ -507,23 +441,25 @@
*/
-static void
-downcase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(downcase)
#if PARROT_HAS_ICU
UErrorCode err;
int dest_len, src_len;
+ STRING *res;
#endif
if (src->bufused == src->strlen
&& src->encoding == Parrot_utf8_encoding_ptr) {
- Parrot_ascii_charset_ptr->downcase(interp, src);
- return;
+ return Parrot_ascii_charset_ptr->downcase(interp, src);
}
#if PARROT_HAS_ICU
- src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+ /* to_encoding will allocate new string */
+ res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
/*
U_CAPI int32_t U_EXPORT2
u_strToLower(UChar *dest, int32_t destCapacity,
@@ -532,26 +468,29 @@
UErrorCode *pErrorCode);
*/
err = U_ZERO_ERROR;
- src_len = src->bufused / sizeof (UChar);
- dest_len = u_strToLower((UChar *)src->strstart, src_len,
- (UChar *)src->strstart, src_len,
+ src_len = res->bufused / sizeof (UChar);
+ dest_len = u_strToLower((UChar *)res->strstart, src_len,
+ (UChar *)res->strstart, src_len,
NULL, /* locale = default */
&err);
- src->bufused = dest_len * sizeof (UChar);
+ res->bufused = dest_len * sizeof (UChar);
if (!U_SUCCESS(err)) {
err = U_ZERO_ERROR;
- Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
- dest_len = u_strToLower((UChar *)src->strstart, dest_len,
- (UChar *)src->strstart, src_len,
+ Parrot_gc_reallocate_string_storage(interp, res, res->bufused);
+ dest_len = u_strToLower((UChar *)res->strstart, dest_len,
+ (UChar *)res->strstart, src_len,
NULL, /* locale = default */
&err);
PARROT_ASSERT(U_SUCCESS(err));
}
/* downgrade if possible */
- if (dest_len == (int)src->strlen)
- src->encoding = Parrot_ucs2_encoding_ptr;
+ if (dest_len == (int)res->strlen)
+ res->encoding = Parrot_ucs2_encoding_ptr;
+
+ return res;
+
#else
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
"no ICU lib loaded");
@@ -561,7 +500,7 @@
/*
-=item C<static void titlecase(PARROT_INTERP, STRING *src)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *src)>
Converts the string to title case, for those characters which support cases.
@@ -571,22 +510,24 @@
*/
-static void
-titlecase(PARROT_INTERP, ARGIN(STRING *src))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(titlecase)
#if PARROT_HAS_ICU
UErrorCode err;
int dest_len, src_len;
+ STRING *res;
if (src->bufused == src->strlen
&& src->encoding == Parrot_utf8_encoding_ptr) {
- Parrot_ascii_charset_ptr->titlecase(interp, src);
- return;
+ return Parrot_ascii_charset_ptr->titlecase(interp, src);
}
- src = Parrot_utf16_encoding_ptr->to_encoding(interp, src, NULL);
+ /* to_encoding will allocate new string */
+ res = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
/*
U_CAPI int32_t U_EXPORT2
@@ -598,27 +539,30 @@
*/
err = U_ZERO_ERROR;
- src_len = src->bufused / sizeof (UChar);
- dest_len = u_strToTitle((UChar *)src->strstart, src_len,
- (UChar *)src->strstart, src_len,
+ src_len = res->bufused / sizeof (UChar);
+ dest_len = u_strToTitle((UChar *)res->strstart, src_len,
+ (UChar *)res->strstart, src_len,
NULL, /* default titleiter */
NULL, /* locale = default */
&err);
- src->bufused = dest_len * sizeof (UChar);
+ res->bufused = dest_len * sizeof (UChar);
if (!U_SUCCESS(err)) {
err = U_ZERO_ERROR;
- Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
- dest_len = u_strToTitle((UChar *)src->strstart, dest_len,
- (UChar *)src->strstart, src_len,
+ Parrot_gc_reallocate_string_storage(interp, res, res->bufused);
+ dest_len = u_strToTitle((UChar *)res->strstart, dest_len,
+ (UChar *)res->strstart, src_len,
NULL, NULL,
&err);
PARROT_ASSERT(U_SUCCESS(err));
}
/* downgrade if possible */
- if (dest_len == (int)src->strlen)
- src->encoding = Parrot_ucs2_encoding_ptr;
+ if (dest_len == (int)res->strlen)
+ res->encoding = Parrot_ucs2_encoding_ptr;
+
+ return res;
+
#else
UNUSED(src);
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
@@ -629,17 +573,18 @@
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *src)>
-Converts the first grapheme in the STRING C<source_string> to uppercase, if the
+Converts the first grapheme in the STRING C<src> to uppercase, if the
grapheme supports it. Not implemented.
=cut
*/
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(upcase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -649,17 +594,18 @@
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING *src)>
-Converts the first grapheme in the STRING C<source_string> to lower-case, if
+Converts the first grapheme in the STRING C<src> to lower-case, if
the grapheme supports it. Not implemented
=cut
*/
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(downcase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -669,17 +615,18 @@
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING *src)>
-Converts the first grapheme in STRING C<source_string> to title case, if the
+Converts the first grapheme in STRING C<src> to title case, if the
string supports it. Not implemented.
=cut
*/
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(titlecase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -735,10 +682,10 @@
/*
-=item C<static INTVAL cs_rindex(PARROT_INTERP, STRING *source_string, STRING
+=item C<static INTVAL cs_rindex(PARROT_INTERP, const STRING *src, const STRING
*search_string, UINTVAL offset)>
-Finds the last index of substring C<search_string> in STRING C<source_string>,
+Finds the last index of substring C<search_string> in STRING C<src>,
starting from C<offset>. Not implemented.
=cut
@@ -746,8 +693,8 @@
*/
static INTVAL
-cs_rindex(PARROT_INTERP, SHIM(STRING *source_string),
- SHIM(STRING *search_string), SHIM(UINTVAL offset))
+cs_rindex(PARROT_INTERP, SHIM(const STRING *src),
+ SHIM(const STRING *search_string), SHIM(UINTVAL offset))
{
ASSERT_ARGS(cs_rindex)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -757,7 +704,7 @@
/*
-=item C<static UINTVAL validate(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL validate(PARROT_INTERP, const STRING *src)>
Returns 1 if the STRING C<src> is a valid unicode string, returns 0 otherwise.
@@ -766,7 +713,7 @@
*/
static UINTVAL
-validate(PARROT_INTERP, ARGIN(STRING *src))
+validate(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(validate)
UINTVAL offset;
@@ -799,6 +746,7 @@
{
ASSERT_ARGS(u_iscclass)
#if PARROT_HAS_ICU
+ UNUSED(interp);
/* XXX which one
return u_charDigitValue(codepoint);
*/
@@ -882,24 +830,23 @@
/*
-=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING
-*source_string, UINTVAL offset)>
+=item C<static INTVAL is_cclass(PARROT_INTERP, INTVAL flags, const STRING *src,
+UINTVAL offset)>
=cut
*/
static INTVAL
-is_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(const STRING *source_string), UINTVAL offset)
+is_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src), UINTVAL offset)
{
ASSERT_ARGS(is_cclass)
UINTVAL codepoint;
- if (offset >= source_string->strlen)
+ if (offset >= src->strlen)
return 0;
- codepoint = ENCODING_GET_CODEPOINT(interp, source_string, offset);
+ codepoint = ENCODING_GET_CODEPOINT(interp, src, offset);
if (codepoint >= 256)
return u_iscclass(interp, codepoint, flags) != 0;
@@ -910,16 +857,15 @@
/*
-=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
*/
static INTVAL
-find_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
+find_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_cclass)
String_iter iter;
@@ -927,11 +873,11 @@
UINTVAL pos = offset;
UINTVAL end = offset + count;
- ENCODING_ITER_INIT(interp, source_string, &iter);
+ ENCODING_ITER_INIT(interp, src, &iter);
iter.set_position(interp, &iter, pos);
- end = source_string->strlen < end ? source_string->strlen : end;
+ end = src->strlen < end ? src->strlen : end;
for (; pos < end; ++pos) {
codepoint = iter.get_and_advance(interp, &iter);
@@ -951,16 +897,16 @@
/*
-=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*source_string, UINTVAL offset, UINTVAL count)>
+=item C<static INTVAL find_not_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*src, UINTVAL offset, UINTVAL count)>
=cut
*/
static INTVAL
-find_not_cclass(PARROT_INTERP, INTVAL flags,
- ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
+find_not_cclass(PARROT_INTERP, INTVAL flags, ARGIN(const STRING *src),
+ UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(find_not_cclass)
String_iter iter;
@@ -969,17 +915,17 @@
UINTVAL end = offset + count;
int bit;
- if (pos > source_string->strlen) {
+ if (pos > src->strlen) {
/* XXX: Throw in this case? */
return offset + count;
}
- ENCODING_ITER_INIT(interp, source_string, &iter);
+ ENCODING_ITER_INIT(interp, src, &iter);
if (pos)
iter.set_position(interp, &iter, pos);
- end = source_string->strlen < end ? source_string->strlen : end;
+ end = src->strlen < end ? src->strlen : end;
if (flags == enum_cclass_any)
return end;
@@ -1064,7 +1010,7 @@
/*
-=item C<const CHARSET * Parrot_charset_unicode_init(PARROT_INTERP)>
+=item C<void Parrot_charset_unicode_init(PARROT_INTERP)>
Initializes the Unicode charset by installing all the necessary function
pointers.
@@ -1073,8 +1019,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_unicode_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_unicode_init)
@@ -1082,8 +1027,6 @@
static const CHARSET base_set = {
"unicode",
get_graphemes,
- get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -1115,7 +1058,8 @@
*/
return_set->preferred_encoding = Parrot_utf8_encoding_ptr;
Parrot_register_charset(interp, "unicode", return_set);
- return return_set;
+
+ return;
}
Modified: branches/ops_pct/src/string/charset/unicode.h
==============================================================================
--- branches/ops_pct/src/string/charset/unicode.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/charset/unicode.h Wed May 5 08:45:29 2010 (r46302)
@@ -21,8 +21,7 @@
/* HEADERIZER BEGIN: src/string/charset/unicode.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-const CHARSET * Parrot_charset_unicode_init(PARROT_INTERP)
+void Parrot_charset_unicode_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_charset_unicode_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/encoding.c
==============================================================================
--- branches/ops_pct/src/string/encoding.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -114,6 +114,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const ENCODING *
@@ -173,6 +174,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_encoding_number(PARROT_INTERP, ARGIN(const STRING *encodingname))
@@ -199,6 +201,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_encoding_number_of_str(SHIM_INTERP, ARGIN(const STRING *src))
@@ -226,6 +229,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
STRING*
@@ -250,6 +254,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const ENCODING*
@@ -275,6 +280,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
const char *
@@ -321,7 +327,7 @@
else
all_encodings->enc = mem_gc_realloc_n_typed_zeroed(interp,
all_encodings->enc, n + 1, n, One_encoding);
- all_encodings->n_encodings++;
+ ++all_encodings->n_encodings;
all_encodings->enc[n].encoding = encoding;
return 1;
@@ -345,7 +351,7 @@
{
ASSERT_ARGS(Parrot_str_internal_register_encoding_names)
int n;
- for (n = 0; n < all_encodings->n_encodings; n++)
+ for (n = 0; n < all_encodings->n_encodings; ++n)
all_encodings->enc[n].name =
Parrot_str_new_constant(interp, all_encodings->enc[n].encoding->name);
}
@@ -428,6 +434,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
const ENCODING *
Modified: branches/ops_pct/src/string/encoding/fixed_8.c
==============================================================================
--- branches/ops_pct/src/string/encoding/fixed_8.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/fixed_8.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -24,24 +24,20 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void become_encoding(PARROT_INTERP, SHIM(STRING *source_string))
- __attribute__nonnull__(1);
-
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *source_string))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL find_cclass(PARROT_INTERP,
- ARGIN(STRING *s),
+static UINTVAL find_cclass(SHIM_INTERP,
+ ARGIN(const STRING *s),
ARGIN(const INTVAL *typetable),
INTVAL flags,
UINTVAL pos,
UINTVAL end)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
@@ -63,37 +59,29 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*iter);
+static size_t fixed_8_hash(SHIM_INTERP,
+ ARGIN(const STRING *s),
+ size_t hashval)
+ __attribute__nonnull__(2);
+
PARROT_WARN_UNUSED_RESULT
-static UINTVAL get_byte(PARROT_INTERP,
- ARGIN(const STRING *source_string),
+static UINTVAL get_byte(SHIM_INTERP,
+ ARGIN(const STRING *src),
UINTVAL offset)
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_bytes(PARROT_INTERP,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *return_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*return_string);
-
-PARROT_WARN_UNUSED_RESULT
static UINTVAL get_codepoint(PARROT_INTERP,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -101,24 +89,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_codepoints(PARROT_INTERP,
- ARGIN(STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *dest_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*dest_string);
-
static void iter_init(SHIM_INTERP,
ARGIN(const STRING *src),
ARGOUT(String_iter *iter))
@@ -127,56 +103,24 @@
FUNC_MODIFIES(*iter);
static void set_byte(PARROT_INTERP,
- ARGIN(const STRING *source_string),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL byte)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void set_bytes(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *new_bytes))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*new_bytes);
-
-static void set_codepoint(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL codepoint)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
- ARGIN(STRING *source_string),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *new_codepoints))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*new_codepoints);
-
PARROT_DOES_NOT_RETURN
PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, SHIM(const STRING *src))
__attribute__nonnull__(1);
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s) \
+ PARROT_ASSERT_ARG(s) \
, PARROT_ASSERT_ARG(typetable))
#define ASSERT_ARGS_fixed8_get_next __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -186,43 +130,25 @@
, PARROT_ASSERT_ARG(iter))
#define ASSERT_ARGS_fixed8_set_position __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(iter))
+#define ASSERT_ARGS_fixed_8_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_get_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(return_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(dest_string))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(iter))
#define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(new_bytes))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(source_string) \
- , PARROT_ASSERT_ARG(new_codepoints))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -233,7 +159,7 @@
/*
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
Converts the string C<src> to this particular encoding. If C<dest> is
provided, it will contain the result. Otherwise this function operates in
@@ -247,7 +173,7 @@
PARROT_DOES_NOT_RETURN
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_encoding(PARROT_INTERP, SHIM(STRING *src), SHIM(STRING *dest))
+to_encoding(PARROT_INTERP, SHIM(const STRING *src))
{
ASSERT_ARGS(to_encoding)
UNIMPL;
@@ -256,8 +182,8 @@
/*
-=item C<static UINTVAL get_codepoint(PARROT_INTERP, const STRING *source_string,
-UINTVAL offset)>
+=item C<static UINTVAL get_codepoint(PARROT_INTERP, const STRING *src, UINTVAL
+offset)>
codepoints are bytes, so delegate
@@ -267,36 +193,17 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-get_codepoint(PARROT_INTERP, ARGIN(const STRING *source_string),
+get_codepoint(PARROT_INTERP, ARGIN(const STRING *src),
UINTVAL offset)
{
ASSERT_ARGS(get_codepoint)
- return get_byte(interp, source_string, offset);
-}
-
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL codepoint)>
-
-This is the same as set byte
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL codepoint)
-{
- ASSERT_ARGS(set_codepoint)
- set_byte(interp, source_string, offset, codepoint);
+ return get_byte(interp, src, offset);
}
/*
-=item C<static UINTVAL find_cclass(PARROT_INTERP, STRING *s, const INTVAL
+=item C<static UINTVAL find_cclass(PARROT_INTERP, const STRING *s, const INTVAL
*typetable, INTVAL flags, UINTVAL pos, UINTVAL end)>
codepoints are bytes, so delegate
@@ -307,11 +214,11 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-find_cclass(PARROT_INTERP, ARGIN(STRING *s), ARGIN(const INTVAL *typetable),
+find_cclass(SHIM_INTERP, ARGIN(const STRING *s), ARGIN(const INTVAL *typetable),
INTVAL flags, UINTVAL pos, UINTVAL end)
{
ASSERT_ARGS(find_cclass)
- unsigned char *contents = (unsigned char *)s->strstart;
+ const unsigned char *contents = (const unsigned char *)s->strstart;
for (; pos < end; ++pos) {
if ((typetable[contents[pos]] & flags) != 0) {
return pos;
@@ -322,8 +229,8 @@
/*
-=item C<static UINTVAL get_byte(PARROT_INTERP, const STRING *source_string,
-UINTVAL offset)>
+=item C<static UINTVAL get_byte(PARROT_INTERP, const STRING *src, UINTVAL
+offset)>
Returns the byte in string C<src> at position C<offset>.
@@ -333,15 +240,15 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-get_byte(PARROT_INTERP, ARGIN(const STRING *source_string), UINTVAL offset)
+get_byte(SHIM_INTERP, ARGIN(const STRING *src), UINTVAL offset)
{
ASSERT_ARGS(get_byte)
- unsigned char *contents = (unsigned char *)source_string->strstart;
+ const unsigned char *contents = (const unsigned char *)src->strstart;
- if (offset >= source_string->bufused) {
+ if (offset >= src->bufused) {
/* Parrot_ex_throw_from_c_args(interp, NULL, 0,
"get_byte past the end of the buffer (%i of %i)",
- offset, source_string->bufused); */
+ offset, src->bufused); */
return 0;
}
@@ -350,8 +257,8 @@
/*
-=item C<static void set_byte(PARROT_INTERP, const STRING *source_string, UINTVAL
-offset, UINTVAL byte)>
+=item C<static void set_byte(PARROT_INTERP, const STRING *src, UINTVAL offset,
+UINTVAL byte)>
Sets, in string C<src> at position C<offset>, the byte C<byte>.
@@ -360,24 +267,23 @@
*/
static void
-set_byte(PARROT_INTERP, ARGIN(const STRING *source_string),
- UINTVAL offset, UINTVAL byte)
+set_byte(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL byte)
{
ASSERT_ARGS(set_byte)
unsigned char *contents;
- if (offset >= source_string->bufused)
+ if (offset >= src->bufused)
Parrot_ex_throw_from_c_args(interp, NULL, 0,
"set_byte past the end of the buffer");
- contents = (unsigned char *)source_string->strstart;
+ contents = (unsigned char *)src->strstart;
contents[offset] = (unsigned char)byte;
}
/*
-=item C<static STRING * get_codepoints(PARROT_INTERP, STRING *source_string,
-UINTVAL offset, UINTVAL count)>
+=item C<static STRING * get_codepoints(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
Returns the codepoints in string C<src> at position C<offset> and length
C<count>. (Delegates to C<get_bytes>.)
@@ -389,19 +295,17 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_codepoints(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count)
+get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_codepoints)
- STRING * const return_string = get_bytes(interp, source_string,
- offset, count);
- return_string->charset = source_string->charset;
+ STRING * const return_string = get_bytes(interp, src, offset, count);
+ return_string->charset = src->charset;
return return_string;
}
/*
-=item C<static STRING * get_bytes(PARROT_INTERP, STRING *source_string, UINTVAL
+=item C<static STRING * get_bytes(PARROT_INTERP, const STRING *src, UINTVAL
offset, UINTVAL count)>
Returns the bytes in string C<src> at position C<offset> and length C<count>.
@@ -413,67 +317,13 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_bytes(PARROT_INTERP, ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
+get_bytes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_bytes)
- STRING * const return_string = Parrot_str_new_COW(interp,
- source_string);
- return_string->encoding = source_string->encoding;
- return_string->charset = source_string->charset;
+ STRING * const return_string = Parrot_str_copy(interp, src);
- return_string->strstart = (char *)return_string->strstart + offset ;
- return_string->bufused = count;
-
- return_string->strlen = count;
- return_string->hashval = 0;
-
- return return_string;
-}
-
-
-/*
-
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING
-*source_string, UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>. (Delegates to C<get_bytes>.)
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *dest_string))
-{
- ASSERT_ARGS(get_codepoints_inplace)
- return get_bytes_inplace(interp, source_string, offset,
- count, dest_string);
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *source_string,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
- ASSERT_ARGS(get_bytes_inplace)
- Parrot_str_reuse_COW(interp, source_string, return_string);
+ return_string->encoding = src->encoding;
+ return_string->charset = src->charset;
return_string->strstart = (char *)return_string->strstart + offset ;
return_string->bufused = count;
@@ -484,66 +334,10 @@
return return_string;
}
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL count, STRING *new_codepoints)>
-
-Delegate to set_bytes
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *new_codepoints))
-{
- ASSERT_ARGS(set_codepoints)
- set_bytes(interp, source_string, offset, count, new_codepoints);
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *source_string, UINTVAL
-offset, UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, ARGIN(STRING *source_string),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *new_bytes))
-{
- ASSERT_ARGS(set_bytes)
- Parrot_str_replace(interp, source_string, offset, count, new_bytes, NULL);
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *source_string)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *source_string))
-{
- ASSERT_ARGS(become_encoding)
- UNIMPL;
-}
-
/*
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
Returns the number of codepoints in string C<src>.
@@ -552,15 +346,15 @@
*/
static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(codepoints)
- return bytes(interp, source_string);
+ return bytes(interp, src);
}
/*
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
Returns the number of bytes in string C<src>.
@@ -569,10 +363,10 @@
*/
static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *source_string))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(bytes)
- return source_string->bufused;
+ return src->bufused;
}
/*
@@ -594,7 +388,7 @@
{
ASSERT_ARGS(fixed8_get_next)
const UINTVAL c = get_byte(interp, iter->str, iter->charpos++);
- iter->bytepos++;
+ ++iter->bytepos;
return c;
}
@@ -615,7 +409,7 @@
{
ASSERT_ARGS(fixed8_set_next)
set_byte(interp, iter->str, iter->charpos++, c);
- iter->bytepos++;
+ ++iter->bytepos;
}
/*
@@ -660,9 +454,37 @@
iter->set_position = fixed8_set_position;
}
+
/*
-=item C<ENCODING * Parrot_encoding_fixed_8_init(PARROT_INTERP)>
+=item C<static size_t fixed_8_hash(PARROT_INTERP, const STRING *s, size_t
+hashval)>
+
+Returns the hashed value of the string, given a seed in hashval.
+
+=cut
+
+*/
+
+static size_t
+fixed_8_hash(SHIM_INTERP, ARGIN(const STRING *s), size_t hashval)
+{
+ ASSERT_ARGS(fixed_8_hash)
+ const unsigned char *pos = (const unsigned char *)s->strstart;
+ UINTVAL len = s->strlen;
+
+ while (len--) {
+ hashval += hashval << 5;
+ hashval += *(pos++);
+ }
+
+ return hashval;
+}
+
+
+/*
+
+=item C<void Parrot_encoding_fixed_8_init(PARROT_INTERP)>
Initializes the fixed-8 encoding.
@@ -670,8 +492,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_fixed_8_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_fixed_8_init)
@@ -682,25 +503,21 @@
1, /* Max bytes per codepoint */
to_encoding,
get_codepoint,
- set_codepoint,
get_byte,
set_byte,
get_codepoints,
- get_codepoints_inplace,
get_bytes,
- get_bytes_inplace,
- set_codepoints,
- set_bytes,
- become_encoding,
codepoints,
bytes,
iter_init,
- find_cclass
-
+ find_cclass,
+ fixed_8_hash
};
+
STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
Parrot_register_encoding(interp, "fixed_8", return_encoding);
- return return_encoding;
+
+ return;
}
Modified: branches/ops_pct/src/string/encoding/fixed_8.h
==============================================================================
--- branches/ops_pct/src/string/encoding/fixed_8.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/fixed_8.h Wed May 5 08:45:29 2010 (r46302)
@@ -16,8 +16,7 @@
/* HEADERIZER BEGIN: src/string/encoding/fixed_8.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_fixed_8_init(PARROT_INTERP)
+void Parrot_encoding_fixed_8_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_encoding_fixed_8_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/encoding/ucs2.c
==============================================================================
--- branches/ops_pct/src/string/encoding/ucs2.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/ucs2.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -36,22 +36,18 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
-static UINTVAL bytes(PARROT_INTERP, ARGIN(STRING *src))
- __attribute__nonnull__(1)
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
static UINTVAL find_cclass(PARROT_INTERP,
- ARGIN(STRING *s),
+ ARGIN(const STRING *s),
ARGIN(const INTVAL *typetable),
INTVAL flags,
UINTVAL pos,
@@ -68,20 +64,11 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_bytes(PARROT_INTERP,
- SHIM(STRING *src),
+ SHIM(const STRING *src),
SHIM(UINTVAL offset),
SHIM(UINTVAL count))
__attribute__nonnull__(1);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *return_string))
- __attribute__nonnull__(1);
-
static UINTVAL get_codepoint(PARROT_INTERP,
ARGIN(const STRING *src),
UINTVAL offset)
@@ -91,21 +78,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_codepoints(PARROT_INTERP,
- ARGIN(STRING *src),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *dest_string))
- __attribute__nonnull__(1);
-
static void iter_init(PARROT_INTERP,
ARGIN(const STRING *src),
ARGOUT(String_iter *iter))
@@ -120,61 +98,36 @@
SHIM(UINTVAL byte))
__attribute__nonnull__(1);
-static void set_bytes(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *new_bytes))
- __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL codepoint)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *new_codepoints))
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGMOD(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
-static UINTVAL ucs2_decode_and_advance(PARROT_INTERP,
- ARGMOD(String_iter *i))
- __attribute__nonnull__(1)
+static UINTVAL ucs2_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
-static void ucs2_encode_and_advance(PARROT_INTERP,
+static void ucs2_encode_and_advance(SHIM_INTERP,
ARGMOD(String_iter *i),
UINTVAL c)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
+static size_t ucs2_hash(PARROT_INTERP,
+ ARGIN(const STRING *s),
+ size_t hashval)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
static void ucs2_set_position(SHIM_INTERP,
ARGMOD(String_iter *i),
UINTVAL n)
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
+ PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -186,39 +139,28 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(iter))
#define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src) \
- , PARROT_ASSERT_ARG(dest))
+ , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_ucs2_decode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(i))
+ PARROT_ASSERT_ARG(i))
#define ASSERT_ARGS_ucs2_encode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(i))
+#define ASSERT_ARGS_ucs2_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(i))
+ , PARROT_ASSERT_ARG(s))
#define ASSERT_ARGS_ucs2_set_position __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(i))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -235,7 +177,7 @@
/*
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
Converts the string C<src> to this particular encoding. If C<dest> is
provided, it will contain the result. Otherwise this function operates in
@@ -248,11 +190,11 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_encoding(PARROT_INTERP, ARGIN(STRING *src), ARGMOD(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_encoding)
STRING * const result =
- Parrot_utf16_encoding_ptr->to_encoding(interp, src, dest);
+ Parrot_utf16_encoding_ptr->to_encoding(interp, src);
/* conversion to utf16 downgrads to ucs-2 if possible - check result */
if (result->encoding == Parrot_utf16_encoding_ptr)
@@ -278,43 +220,20 @@
{
ASSERT_ARGS(get_codepoint)
#if PARROT_HAS_ICU
- UChar * const s = (UChar*) src->strstart;
+ const UChar * const s = (const UChar*) src->strstart;
+ UNUSED(interp);
return s[offset];
#else
- UNUSED(offset)
+ UNUSED(offset);
+ UNUSED(src);
no_ICU_lib(interp);
#endif
}
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
- ASSERT_ARGS(set_codepoint)
-#if PARROT_HAS_ICU
- UChar * const s = (UChar*) src->strstart;
- s[offset] = codepoint;
-#else
- UNUSED(src)
- UNUSED(offset)
- UNUSED(codepoint)
- no_ICU_lib(interp);
-#endif
-}
/*
-=item C<static UINTVAL find_cclass(PARROT_INTERP, STRING *s, const INTVAL
+=item C<static UINTVAL find_cclass(PARROT_INTERP, const STRING *s, const INTVAL
*typetable, INTVAL flags, UINTVAL pos, UINTVAL end)>
Stub, the charset level handles this for unicode strings.
@@ -325,9 +244,15 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-find_cclass(PARROT_INTERP, ARGIN(STRING *s), ARGIN(const INTVAL *typetable),
+find_cclass(PARROT_INTERP, ARGIN(const STRING *s), ARGIN(const INTVAL *typetable),
INTVAL flags, UINTVAL pos, UINTVAL end)
{
+ UNUSED(s);
+ UNUSED(typetable);
+ UNUSED(flags);
+ UNUSED(pos);
+ UNUSED(end);
+
Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_UNIMPLEMENTED,
"No find_cclass support in unicode encoding plugins");
@@ -372,7 +297,7 @@
/*
-=item C<static STRING * get_codepoints(PARROT_INTERP, STRING *src, UINTVAL
+=item C<static STRING * get_codepoints(PARROT_INTERP, const STRING *src, UINTVAL
offset, UINTVAL count)>
Returns the codepoints in string C<src> at position C<offset> and length
@@ -385,10 +310,11 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_codepoints(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL count)
+get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_codepoints)
- STRING * const return_string = Parrot_str_new_COW(interp, src);
+ STRING * const return_string = Parrot_str_copy(interp, src);
+
#if PARROT_HAS_ICU
return_string->strstart = (char*)src->strstart + offset * sizeof (UChar);
return_string->bufused = count * sizeof (UChar);
@@ -412,8 +338,8 @@
/*
-=item C<static STRING * get_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count)>
+=item C<static STRING * get_bytes(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
Returns the bytes in string C<src> at position C<offset> and length C<count>.
@@ -424,7 +350,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_bytes(PARROT_INTERP, SHIM(STRING *src), SHIM(UINTVAL offset),
+get_bytes(PARROT_INTERP, SHIM(const STRING *src), SHIM(UINTVAL offset),
SHIM(UINTVAL count))
{
ASSERT_ARGS(get_bytes)
@@ -434,109 +360,7 @@
/*
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *dest_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *dest_string))
-{
- ASSERT_ARGS(get_codepoints_inplace)
- UNIMPL;
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *return_string))
-{
- ASSERT_ARGS(get_bytes_inplace)
- UNIMPL;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_codepoints))
-{
- ASSERT_ARGS(set_codepoints)
- UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_bytes))
-{
- ASSERT_ARGS(set_bytes)
- UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
- ASSERT_ARGS(become_encoding)
- UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
Returns the number of codepoints in string C<src>.
@@ -546,19 +370,21 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(codepoints)
#if PARROT_HAS_ICU
+ UNUSED(interp);
return src->bufused / sizeof (UChar);
#else
+ UNUSED(src);
no_ICU_lib(interp);
#endif
}
/*
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
Returns the number of bytes in string C<src>.
@@ -568,7 +394,7 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-bytes(PARROT_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(bytes)
return src->bufused;
@@ -585,19 +411,19 @@
*/
static UINTVAL
-ucs2_decode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i))
+ucs2_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
{
ASSERT_ARGS(ucs2_decode_and_advance)
#if PARROT_HAS_ICU
- UChar * const s = (UChar*) i->str->strstart;
+ const UChar * const s = (const UChar*) i->str->strstart;
size_t pos = i->bytepos / sizeof (UChar);
/* TODO either make sure that we don't go past end or use SAFE
* iter versions
*/
const UChar c = s[pos++];
- i->charpos++;
+ ++i->charpos;
i->bytepos = pos * sizeof (UChar);
return c;
#else
@@ -605,6 +431,7 @@
* See TT #557
*/
PARROT_ASSERT(0);
+ UNUSED(i);
return (UINTVAL)0; /* Stop the static analyzers from panicing */
#endif
}
@@ -622,26 +449,63 @@
*/
static void
-ucs2_encode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i), UINTVAL c)
+ucs2_encode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i), UINTVAL c)
{
ASSERT_ARGS(ucs2_encode_and_advance)
#if PARROT_HAS_ICU
- UChar * const s = (UChar*) i->str->strstart;
+ UChar *s = (UChar*) i->str->strstart;
UINTVAL pos = i->bytepos / sizeof (UChar);
- s[pos++] = (UChar)c;
- i->charpos++;
+ s[pos++] = (UChar)c;
+ ++i->charpos;
i->bytepos = pos * sizeof (UChar);
#else
/* This function must never be called if compiled without ICU.
* See TT #557
*/
+ UNUSED(i);
+ UNUSED(c);
PARROT_ASSERT(0);
#endif
}
/*
+=item C<static size_t ucs2_hash(PARROT_INTERP, const STRING *s, size_t hashval)>
+
+Returns the hashed value of the string, given a seed in hashval.
+
+=cut
+
+*/
+
+static size_t
+ucs2_hash(PARROT_INTERP, ARGIN(const STRING *s), size_t hashval)
+{
+ ASSERT_ARGS(ucs2_hash)
+#if PARROT_HAS_ICU
+ const UChar *pos = (const UChar*) s->strstart;
+ UINTVAL len = s->strlen;
+ UNUSED(interp);
+
+ while (len--) {
+ hashval += hashval << 5;
+ hashval += *(pos++);
+ }
+
+ return hashval;
+
+#else
+ UNUSED(s);
+ UNUSED(hashval);
+
+ no_ICU_lib(interp);
+#endif
+}
+
+
+/*
+
=item C<static void ucs2_set_position(PARROT_INTERP, String_iter *i, UINTVAL n)>
Moves the string iterator C<i> to the position C<n> in the string.
@@ -662,6 +526,8 @@
/* This function must never be called if compiled without ICU.
* See TT #557
*/
+ UNUSED(i);
+ UNUSED(n);
PARROT_ASSERT(0);
#endif
}
@@ -683,6 +549,7 @@
{
ASSERT_ARGS(iter_init)
#if PARROT_HAS_ICU
+ UNUSED(interp);
iter->str = src;
iter->bytepos = 0;
iter->charpos = 0;
@@ -690,13 +557,15 @@
iter->set_and_advance = ucs2_encode_and_advance;
iter->set_position = ucs2_set_position;
#else
+ UNUSED(src);
+ UNUSED(iter);
no_ICU_lib(interp);
#endif
}
/*
-=item C<ENCODING * Parrot_encoding_ucs2_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_ucs2_init(PARROT_INTERP)>
Initializes the UCS-2 encoding.
@@ -704,8 +573,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_ucs2_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_ucs2_init)
@@ -716,24 +584,20 @@
2, /* Max bytes per codepoint 0 .. 0x10ffff */
to_encoding,
get_codepoint,
- set_codepoint,
get_byte,
set_byte,
get_codepoints,
- get_codepoints_inplace,
get_bytes,
- get_bytes_inplace,
- set_codepoints,
- set_bytes,
- become_encoding,
codepoints,
bytes,
iter_init,
- find_cclass
+ find_cclass,
+ ucs2_hash
};
STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
Parrot_register_encoding(interp, "ucs2", return_encoding);
- return return_encoding;
+
+ return;
}
/*
Modified: branches/ops_pct/src/string/encoding/ucs2.h
==============================================================================
--- branches/ops_pct/src/string/encoding/ucs2.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/ucs2.h Wed May 5 08:45:29 2010 (r46302)
@@ -16,8 +16,7 @@
/* HEADERIZER BEGIN: src/string/encoding/ucs2.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_ucs2_init(PARROT_INTERP)
+void Parrot_encoding_ucs2_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_encoding_ucs2_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/encoding/utf16.c
==============================================================================
--- branches/ops_pct/src/string/encoding/utf16.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/utf16.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -26,21 +26,18 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
- __attribute__nonnull__(1);
-
PARROT_WARN_UNUSED_RESULT
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *src))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
static UINTVAL find_cclass(PARROT_INTERP,
- ARGIN(STRING *s),
+ ARGIN(const STRING *s),
ARGIN(const INTVAL *typetable),
INTVAL flags,
UINTVAL pos,
@@ -57,23 +54,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_bytes(PARROT_INTERP,
- ARGIN(STRING *src),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL count,
- ARGIN(STRING *return_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5);
-
static UINTVAL get_codepoint(PARROT_INTERP,
ARGIN(const STRING *src),
UINTVAL offset)
@@ -83,24 +69,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING * get_codepoints(PARROT_INTERP,
- ARGIN(STRING *src),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *return_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*return_string);
-
static void iter_init(PARROT_INTERP,
ARGIN(const STRING *src),
ARGOUT(String_iter *iter))
@@ -116,60 +90,29 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void set_bytes(PARROT_INTERP,
- SHIM(STRING *src),
- UINTVAL offset,
- UINTVAL count,
- SHIM(STRING *new_bytes))
- __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL codepoint)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL count,
- ARGIN(STRING *new_codepoints))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5);
-
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
- ARGIN(STRING *src),
- ARGIN_NULLOK(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL utf16_decode_and_advance(PARROT_INTERP,
- ARGMOD(String_iter *i))
- __attribute__nonnull__(1)
+static UINTVAL utf16_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
-static void utf16_encode_and_advance(PARROT_INTERP,
+static void utf16_encode_and_advance(SHIM_INTERP,
ARGMOD(String_iter *i),
UINTVAL c)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
-static void utf16_set_position(PARROT_INTERP,
+static void utf16_set_position(SHIM_INTERP,
ARGMOD(String_iter *i),
UINTVAL n)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
FUNC_MODIFIES(*i);
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -184,20 +127,12 @@
#define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src) \
- , PARROT_ASSERT_ARG(return_string))
#define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src) \
- , PARROT_ASSERT_ARG(return_string))
#define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src) \
@@ -205,27 +140,15 @@
#define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src) \
- , PARROT_ASSERT_ARG(new_codepoints))
#define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_utf16_decode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(i))
+ PARROT_ASSERT_ARG(i))
#define ASSERT_ARGS_utf16_encode_and_advance __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(i))
+ PARROT_ASSERT_ARG(i))
#define ASSERT_ARGS_utf16_set_position __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(i))
+ PARROT_ASSERT_ARG(i))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -242,7 +165,7 @@
/*
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
Converts the string C<src> to this particular encoding. If C<dest> is
provided, it will contain the result. Otherwise this function operates in
@@ -256,7 +179,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_encoding(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_encoding)
#if PARROT_HAS_ICU
@@ -265,45 +188,28 @@
UChar *p;
#endif
int src_len;
- int in_place = dest == NULL;
STRING *result;
if (src->encoding == Parrot_utf16_encoding_ptr ||
src->encoding == Parrot_ucs2_encoding_ptr)
- return in_place ? src : Parrot_str_copy(interp, src);
+ return Parrot_str_clone(interp, src);
+
+ result = Parrot_gc_new_string_header(interp, 0);
+
/*
* TODO adapt string creation functions
*/
src_len = src->strlen;
- if (in_place) {
- result = src;
- }
- else {
- result = dest;
- }
if (!src_len) {
result->charset = Parrot_unicode_charset_ptr;
result->encoding = Parrot_ucs2_encoding_ptr;
result->strlen = result->bufused = 0;
return result;
}
- /*
- u_strFromUTF8(UChar *dest,
- int32_t destCapacity,
- int32_t *pDestLength,
- const char *src,
- int32_t srcLength,
- UErrorCode *pErrorCode);
- */
#if PARROT_HAS_ICU
- if (in_place) {
- /* need intermediate memory */
- p = mem_gc_allocate_n_typed(interp, src_len, UChar);
- }
- else {
- Parrot_gc_reallocate_string_storage(interp, dest, sizeof (UChar) * src_len);
- p = (UChar *)dest->strstart;
- }
+ Parrot_gc_allocate_string_storage(interp, result, sizeof (UChar) * src_len);
+ p = (UChar *)result->strstart;
+
if (src->charset == Parrot_iso_8859_1_charset_ptr ||
src->charset == Parrot_ascii_charset_ptr) {
for (dest_len = 0; dest_len < (int)src->strlen; ++dest_len) {
@@ -318,25 +224,16 @@
/*
* have to resize - required len in UChars is in dest_len
*/
- if (in_place)
- p = mem_gc_realloc_n_typed(interp, p, dest_len, UChar);
- else {
- result->bufused = dest_len * sizeof (UChar);
- Parrot_gc_reallocate_string_storage(interp, dest,
- sizeof (UChar) * dest_len);
- p = (UChar *)dest->strstart;
- }
+ result->bufused = dest_len * sizeof (UChar);
+ Parrot_gc_reallocate_string_storage(interp, result,
+ sizeof (UChar) * dest_len);
+ p = (UChar *)result->strstart;
u_strFromUTF8(p, dest_len,
&dest_len, src->strstart, src->bufused, &err);
PARROT_ASSERT(U_SUCCESS(err));
}
}
result->bufused = dest_len * sizeof (UChar);
- if (in_place) {
- Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
- memcpy(src->strstart, p, src->bufused);
- mem_gc_free(interp, p);
- }
result->charset = Parrot_unicode_charset_ptr;
result->encoding = Parrot_utf16_encoding_ptr;
result->strlen = src_len;
@@ -367,8 +264,9 @@
{
ASSERT_ARGS(get_codepoint)
#if PARROT_HAS_ICU
- UChar * const s = (UChar*) src->strstart;
+ const UChar * const s = (UChar*) src->strstart;
UINTVAL c, pos;
+ UNUSED(interp);
pos = 0;
U16_FWD_N_UNSAFE(s, pos, offset);
@@ -383,31 +281,10 @@
#endif
}
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
- ASSERT_ARGS(set_codepoint)
- UNUSED(interp);
- UNUSED(src);
- UNUSED(offset);
- UNUSED(codepoint);
- UNIMPL;
-}
/*
-=item C<static UINTVAL find_cclass(PARROT_INTERP, STRING *s, const INTVAL
+=item C<static UINTVAL find_cclass(PARROT_INTERP, const STRING *s, const INTVAL
*typetable, INTVAL flags, UINTVAL pos, UINTVAL end)>
Stub, the charset level handles this for unicode strings.
@@ -418,9 +295,15 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-find_cclass(PARROT_INTERP, ARGIN(STRING *s), ARGIN(const INTVAL *typetable),
+find_cclass(PARROT_INTERP, ARGIN(const STRING *s), ARGIN(const INTVAL *typetable),
INTVAL flags, UINTVAL pos, UINTVAL end)
{
+ UNUSED(s);
+ UNUSED(typetable);
+ UNUSED(flags);
+ UNUSED(pos);
+ UNUSED(end);
+
Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_UNIMPLEMENTED,
"No find_cclass support in unicode encoding plugins");
@@ -478,7 +361,7 @@
/*
-=item C<static STRING * get_codepoints(PARROT_INTERP, STRING *src, UINTVAL
+=item C<static STRING * get_codepoints(PARROT_INTERP, const STRING *src, UINTVAL
offset, UINTVAL count)>
Returns the codepoints in string C<src> at position C<offset> and length
@@ -491,12 +374,12 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_codepoints(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL count)
+get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_codepoints)
String_iter iter;
UINTVAL start;
- STRING * const return_string = Parrot_str_new_COW(interp, src);
+ STRING * const return_string = Parrot_str_copy(interp, src);
iter_init(interp, src, &iter);
iter.set_position(interp, &iter, offset);
@@ -512,41 +395,8 @@
/*
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGIN(STRING *src),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
- ASSERT_ARGS(get_codepoints_inplace)
- String_iter iter;
- UINTVAL start;
- Parrot_str_reuse_COW(interp, src, return_string);
- iter_init(interp, src, &iter);
- iter.set_position(interp, &iter, offset);
- start = iter.bytepos;
- return_string->strstart = (char *)return_string->strstart + start ;
- iter.set_position(interp, &iter, offset + count);
- return_string->bufused = iter.bytepos - start;
- return_string->strlen = count;
- return_string->hashval = 0;
- return return_string;
-}
-
-/*
-
-=item C<static STRING * get_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count)>
+=item C<static STRING * get_bytes(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
Returns the bytes in string C<src> at position C<offset> and length C<count>.
@@ -557,7 +407,7 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_bytes(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL count)
+get_bytes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_bytes)
UNUSED(interp);
@@ -569,100 +419,7 @@
/*
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, ARGIN(STRING *src),
- UINTVAL offset, UINTVAL count, ARGIN(STRING *return_string))
-{
- ASSERT_ARGS(get_bytes_inplace)
- UNUSED(interp);
- UNUSED(src);
- UNUSED(offset)
- UNUSED(count);
- UNUSED(return_string);
- UNIMPL;
-}
-
-/*
-
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, ARGIN(STRING *src),
- UINTVAL offset, UINTVAL count, ARGIN(STRING *new_codepoints))
-{
- ASSERT_ARGS(set_codepoints)
- UNUSED(interp);
- UNUSED(src);
- UNUSED(offset)
- UNUSED(count);
- UNUSED(new_codepoints);
- UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
- UINTVAL offset, UINTVAL count, SHIM(STRING *new_bytes))
-{
- ASSERT_ARGS(set_bytes)
- UNUSED(interp);
- UNUSED(offset)
- UNUSED(count);
- UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
- ASSERT_ARGS(become_encoding)
- UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
Returns the number of codepoints in string C<src>.
@@ -672,7 +429,7 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(codepoints)
String_iter iter;
@@ -688,7 +445,7 @@
/*
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
Returns the number of bytes in string C<src>.
@@ -698,7 +455,7 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(bytes)
return src->bufused;
@@ -717,17 +474,18 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-utf16_decode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i))
+utf16_decode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i))
{
ASSERT_ARGS(utf16_decode_and_advance)
- UChar *s = (UChar*) i->str->strstart;
- UINTVAL c, pos;
- pos = i->bytepos / sizeof (UChar);
+ const UChar * const s = (const UChar*) i->str->strstart;
+ UINTVAL pos = i->bytepos / sizeof (UChar);
+ UINTVAL c;
+
/* TODO either make sure that we don't go past end or use SAFE
* iter versions
*/
U16_NEXT_UNSAFE(s, pos, c);
- i->charpos++;
+ ++i->charpos;
i->bytepos = pos * sizeof (UChar);
return c;
}
@@ -745,14 +503,13 @@
*/
static void
-utf16_encode_and_advance(PARROT_INTERP, ARGMOD(String_iter *i), UINTVAL c)
+utf16_encode_and_advance(SHIM_INTERP, ARGMOD(String_iter *i), UINTVAL c)
{
ASSERT_ARGS(utf16_encode_and_advance)
- UChar *s = (UChar*) i->str->strstart;
- UINTVAL pos;
- pos = i->bytepos / sizeof (UChar);
+ UChar * const s = (UChar*) i->str->strstart;
+ UINTVAL pos = i->bytepos / sizeof (UChar);
U16_APPEND_UNSAFE(s, pos, c);
- i->charpos++;
+ ++i->charpos;
i->bytepos = pos * sizeof (UChar);
}
@@ -768,7 +525,7 @@
*/
static void
-utf16_set_position(PARROT_INTERP, ARGMOD(String_iter *i), UINTVAL n)
+utf16_set_position(SHIM_INTERP, ARGMOD(String_iter *i), UINTVAL n)
{
ASSERT_ARGS(utf16_set_position)
UChar * const s = (UChar*) i->str->strstart;
@@ -799,6 +556,7 @@
iter->str = src;
iter->bytepos = iter->charpos = 0;
#if PARROT_HAS_ICU
+ UNUSED(interp);
iter->get_and_advance = utf16_decode_and_advance;
iter->set_and_advance = utf16_encode_and_advance;
iter->set_position = utf16_set_position;
@@ -810,7 +568,7 @@
/*
-=item C<ENCODING * Parrot_encoding_utf16_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_utf16_init(PARROT_INTERP)>
Initializes the UTF-16 encoding.
@@ -818,8 +576,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_utf16_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_utf16_init)
@@ -830,24 +587,20 @@
4, /* Max bytes per codepoint 0 .. 0x10ffff */
to_encoding,
get_codepoint,
- set_codepoint,
get_byte,
set_byte,
get_codepoints,
- get_codepoints_inplace,
get_bytes,
- get_bytes_inplace,
- set_codepoints,
- set_bytes,
- become_encoding,
codepoints,
bytes,
iter_init,
- find_cclass
+ find_cclass,
+ NULL
};
STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
Parrot_register_encoding(interp, "utf16", return_encoding);
- return return_encoding;
+
+ return;
}
/*
Modified: branches/ops_pct/src/string/encoding/utf16.h
==============================================================================
--- branches/ops_pct/src/string/encoding/utf16.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/utf16.h Wed May 5 08:45:29 2010 (r46302)
@@ -16,8 +16,7 @@
/* HEADERIZER BEGIN: src/string/encoding/utf16.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_utf16_init(PARROT_INTERP)
+void Parrot_encoding_utf16_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_encoding_utf16_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/encoding/utf8.c
==============================================================================
--- branches/ops_pct/src/string/encoding/utf8.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/utf8.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -27,28 +27,22 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void become_encoding(PARROT_INTERP, SHIM(STRING *src))
- __attribute__nonnull__(1);
-
PARROT_PURE_FUNCTION
-static UINTVAL bytes(SHIM_INTERP, ARGIN(STRING *src))
+static UINTVAL bytes(SHIM_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(2);
-static UINTVAL codepoints(PARROT_INTERP, ARGMOD(STRING *src))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*src);
+ __attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
static UINTVAL find_cclass(PARROT_INTERP,
- ARGIN(STRING *s),
- ARGIN(const INTVAL *typetable),
- INTVAL flags,
- UINTVAL pos,
- UINTVAL end)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
+ SHIM(const STRING *s),
+ SHIM(const INTVAL *typetable),
+ SHIM(INTVAL flags),
+ SHIM(UINTVAL pos),
+ SHIM(UINTVAL end))
+ __attribute__nonnull__(1);
static UINTVAL get_byte(SHIM_INTERP,
ARGIN(const STRING *src),
@@ -57,20 +51,11 @@
PARROT_CANNOT_RETURN_NULL
static STRING * get_bytes(PARROT_INTERP,
- ARGMOD(STRING *src),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*src);
-
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_bytes_inplace(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *return_string))
- __attribute__nonnull__(1);
+ __attribute__nonnull__(2);
static UINTVAL get_codepoint(PARROT_INTERP,
ARGIN(const STRING *src),
@@ -80,24 +65,12 @@
PARROT_CANNOT_RETURN_NULL
static STRING * get_codepoints(PARROT_INTERP,
- ARGIN(STRING *src),
+ ARGIN(const STRING *src),
UINTVAL offset,
UINTVAL count)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_CANNOT_RETURN_NULL
-static STRING * get_codepoints_inplace(PARROT_INTERP,
- ARGMOD(STRING *src),
- UINTVAL offset,
- UINTVAL count,
- ARGMOD(STRING *return_string))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*src)
- FUNC_MODIFIES(*return_string);
-
static void iter_init(SHIM_INTERP,
ARGIN(const STRING *src),
ARGOUT(String_iter *iter))
@@ -112,35 +85,10 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void set_bytes(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *new_bytes))
- __attribute__nonnull__(1);
-
-static void set_codepoint(PARROT_INTERP,
- ARGIN(STRING *src),
- UINTVAL offset,
- UINTVAL codepoint)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-static void set_codepoints(PARROT_INTERP,
- SHIM(STRING *src),
- SHIM(UINTVAL offset),
- SHIM(UINTVAL count),
- SHIM(STRING *new_codepoints))
- __attribute__nonnull__(1);
-
PARROT_CAN_RETURN_NULL
-static STRING * to_encoding(PARROT_INTERP,
- ARGMOD(STRING *src),
- ARGMOD_NULLOK(STRING *dest))
+static STRING * to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*src)
- FUNC_MODIFIES(*dest);
+ __attribute__nonnull__(2);
static UINTVAL utf8_characters(PARROT_INTERP,
ARGIN(const utf8_t *ptr),
@@ -185,47 +133,30 @@
static const void * utf8_skip_forward(ARGIN(const void *ptr), UINTVAL n)
__attribute__nonnull__(1);
-#define ASSERT_ARGS_become_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(s) \
- , PARROT_ASSERT_ARG(typetable))
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_bytes_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_get_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_get_codepoints_inplace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src) \
- , PARROT_ASSERT_ARG(return_string))
#define ASSERT_ARGS_iter_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(src) \
, PARROT_ASSERT_ARG(iter))
#define ASSERT_ARGS_set_byte __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_set_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
-#define ASSERT_ARGS_set_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_to_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -275,10 +206,6 @@
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6 /* cjk etc. */
};
-#if 0
-typedef unsigned char utf8_t;
-#endif
-
/*
=item C<static UINTVAL utf8_characters(PARROT_INTERP, const utf8_t *ptr, UINTVAL
@@ -286,6 +213,8 @@
Returns the number of characters in the C<byte_len> bytes from C<*ptr>.
+XXX This function is unused.
+
=cut
*/
@@ -300,7 +229,7 @@
while (u8ptr < u8end) {
u8ptr += UTF8SKIP(u8ptr);
- characters++;
+ ++characters;
}
if (u8ptr > u8end)
@@ -332,8 +261,8 @@
UINTVAL count;
c &= UTF8_START_MASK(len);
- for (count = 1; count < len; count++) {
- u8ptr++;
+ for (count = 1; count < len; ++count) {
+ ++u8ptr;
if (!UTF8_IS_CONTINUATION(*u8ptr))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_UTF8,
@@ -421,6 +350,8 @@
Moves C<ptr> C<n> characters back.
+XXX This function is unused.
+
=cut
*/
@@ -434,9 +365,9 @@
const utf8_t *u8ptr = (const utf8_t *)ptr;
while (n-- > 0) {
- u8ptr--;
+ --u8ptr;
while (UTF8_IS_CONTINUATION(*u8ptr))
- u8ptr--;
+ --u8ptr;
}
return u8ptr;
@@ -477,8 +408,8 @@
c &= UTF8_START_MASK(len);
i->bytepos += len;
- for (len--; len; len--) {
- u8ptr++;
+ for (--len; len; --len) {
+ ++u8ptr;
if (!UTF8_IS_CONTINUATION(*u8ptr))
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_UTF8,
@@ -496,10 +427,10 @@
"Malformed UTF-8 string\n");
}
else {
- i->bytepos++;
+ ++i->bytepos;
}
- i->charpos++;
+ ++i->charpos;
return c;
}
@@ -526,7 +457,7 @@
i->bytepos += (new_pos - pos);
/* XXX possible buffer overrun exception? */
PARROT_ASSERT(i->bytepos <= Buffer_buflen(s));
- i->charpos++;
+ ++i->charpos;
}
/*
@@ -566,7 +497,7 @@
/*
-=item C<static STRING * to_encoding(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_encoding(PARROT_INTERP, const STRING *src)>
Converts the string C<src> to this particular encoding. If C<dest> is
provided, it will contain the result. Otherwise this function operates in
@@ -578,24 +509,19 @@
PARROT_CAN_RETURN_NULL
static STRING *
-to_encoding(PARROT_INTERP, ARGMOD(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_encoding(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(to_encoding)
STRING *result;
String_iter src_iter;
UINTVAL offs, dest_len, dest_pos, src_len;
- const int in_place = (dest == NULL);
- unsigned char *new_pos, *pos, *p;
+ unsigned char *p;
if (src->encoding == Parrot_utf8_encoding_ptr)
- return in_place ? src : Parrot_str_copy(interp, src);
+ return Parrot_str_clone(interp, src);
+
+ result = Parrot_gc_new_string_header(interp, 0);
src_len = src->strlen;
- if (in_place) {
- result = src;
- }
- else {
- result = dest;
- }
/* init iter before possilby changing encoding */
ENCODING_ITER_INIT(interp, src, &src_iter);
@@ -604,16 +530,11 @@
result->strlen = src_len;
if (!src->strlen)
- return dest;
+ return result;
+
+ Parrot_gc_allocate_string_storage(interp, result, src_len);
+ p = (unsigned char *)result->strstart;
- if (in_place) {
- /* need intermediate memory */
- p = mem_gc_allocate_n_typed(interp, src_len, unsigned char);
- }
- else {
- Parrot_gc_reallocate_string_storage(interp, dest, src_len);
- p = (unsigned char *)dest->strstart;
- }
if (src->charset == Parrot_ascii_charset_ptr) {
for (dest_len = 0; dest_len < src_len; ++dest_len) {
p[dest_len] = ((unsigned char*)src->strstart)[dest_len];
@@ -625,18 +546,17 @@
dest_pos = 0;
for (offs = 0; offs < src_len; ++offs) {
const UINTVAL c = src_iter.get_and_advance(interp, &src_iter);
+ unsigned char *new_pos;
+ unsigned char *pos;
+
if (dest_len - dest_pos < 6) {
UINTVAL need = (UINTVAL)((src->strlen - offs) * 1.5);
if (need < 16)
need = 16;
dest_len += need;
- if (in_place)
- p = mem_gc_realloc_n_typed(interp, p, dest_len, unsigned char);
- else {
- result->bufused = dest_pos;
- Parrot_gc_reallocate_string_storage(interp, dest, dest_len);
- p = (unsigned char *)dest->strstart;
- }
+ result->bufused = dest_pos;
+ Parrot_gc_reallocate_string_storage(interp, result, dest_len);
+ p = (unsigned char *)result->strstart;
}
pos = p + dest_pos;
@@ -645,11 +565,7 @@
}
result->bufused = dest_pos;
}
- if (in_place) {
- Parrot_gc_reallocate_string_storage(interp, src, src->bufused);
- memcpy(src->strstart, p, src->bufused);
- mem_gc_free(interp, p);
- }
+
return result;
}
@@ -672,33 +588,10 @@
return utf8_decode(interp, start);
}
-/*
-
-=item C<static void set_codepoint(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL codepoint)>
-
-Sets, in string C<src> at position C<offset>, the codepoint C<codepoint>.
-
-=cut
-
-*/
-
-static void
-set_codepoint(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL codepoint)
-{
- ASSERT_ARGS(set_codepoint)
- const void *start;
- void *p;
- DECL_CONST_CAST;
-
- start = utf8_skip_forward(src->strstart, offset);
- p = PARROT_const_cast(void *, start);
- utf8_encode(interp, p, codepoint);
-}
/*
-=item C<static UINTVAL find_cclass(PARROT_INTERP, STRING *s, const INTVAL
+=item C<static UINTVAL find_cclass(PARROT_INTERP, const STRING *s, const INTVAL
*typetable, INTVAL flags, UINTVAL pos, UINTVAL end)>
Stub, the charset level handles this for unicode strings.
@@ -709,8 +602,8 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-find_cclass(PARROT_INTERP, ARGIN(STRING *s), ARGIN(const INTVAL *typetable),
-INTVAL flags, UINTVAL pos, UINTVAL end)
+find_cclass(PARROT_INTERP, SHIM(const STRING *s), SHIM(const INTVAL *typetable),
+SHIM(INTVAL flags), SHIM(UINTVAL pos), SHIM(UINTVAL end))
{
Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_UNIMPLEMENTED,
@@ -770,7 +663,7 @@
/*
-=item C<static STRING * get_codepoints(PARROT_INTERP, STRING *src, UINTVAL
+=item C<static STRING * get_codepoints(PARROT_INTERP, const STRING *src, UINTVAL
offset, UINTVAL count)>
Returns the codepoints in string C<src> at position C<offset> and length
@@ -782,11 +675,11 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_codepoints(PARROT_INTERP, ARGIN(STRING *src), UINTVAL offset, UINTVAL count)
+get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_codepoints)
- STRING * const return_string = Parrot_str_new_COW(interp, src);
+ STRING * const return_string = Parrot_str_copy(interp, src);
String_iter iter;
UINTVAL start;
@@ -810,8 +703,8 @@
/*
-=item C<static STRING * get_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count)>
+=item C<static STRING * get_bytes(PARROT_INTERP, const STRING *src, UINTVAL
+offset, UINTVAL count)>
Returns the bytes in string C<src> at position C<offset> and length C<count>.
@@ -821,13 +714,10 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-get_bytes(PARROT_INTERP, ARGMOD(STRING *src), UINTVAL offset, UINTVAL count)
+get_bytes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_bytes)
- STRING * const return_string = Parrot_str_new_COW(interp, src);
-
- return_string->encoding = src->encoding; /* XXX */
- return_string->charset = src->charset;
+ STRING * const return_string = Parrot_str_copy(interp, src);
return_string->strstart = (char *)return_string->strstart + offset ;
return_string->bufused = count;
@@ -838,125 +728,11 @@
return return_string;
}
-/*
-
-=item C<static STRING * get_codepoints_inplace(PARROT_INTERP, STRING *src,
-UINTVAL offset, UINTVAL count, STRING *return_string)>
-
-Gets from string C<src> at position C<offset> C<count> codepoints and returns
-them in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_codepoints_inplace(PARROT_INTERP, ARGMOD(STRING *src),
- UINTVAL offset, UINTVAL count, ARGMOD(STRING *return_string))
-{
- ASSERT_ARGS(get_codepoints_inplace)
- String_iter iter;
- UINTVAL start;
-
- Parrot_str_reuse_COW(interp, src, return_string);
- iter_init(interp, src, &iter);
- iter.set_position(interp, &iter, offset);
-
- start = iter.bytepos;
-
- return_string->strstart = (char *)return_string->strstart + start;
- iter.set_position(interp, &iter, offset + count);
-
- return_string->bufused = iter.bytepos - start;
- return_string->strlen = count;
- return_string->hashval = 0;
-
- return return_string;
-}
-
-/*
-
-=item C<static STRING * get_bytes_inplace(PARROT_INTERP, STRING *src, UINTVAL
-offset, UINTVAL count, STRING *return_string)>
-Gets from string C<src> at position C<offset> C<count> bytes and returns them
-in C<return_string>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static STRING *
-get_bytes_inplace(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *return_string))
-{
- ASSERT_ARGS(get_bytes_inplace)
- UNIMPL;
-}
/*
-=item C<static void set_codepoints(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_codepoints)>
-
-Replaces in string C<src> at position C<offset> for C<count> codepoints with
-the contents of string C<new_codepoints>.
-
-=cut
-
-*/
-
-static void
-set_codepoints(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_codepoints))
-{
- ASSERT_ARGS(set_codepoints)
- UNIMPL;
-}
-
-/*
-
-=item C<static void set_bytes(PARROT_INTERP, STRING *src, UINTVAL offset,
-UINTVAL count, STRING *new_bytes)>
-
-Replaces in string C<src> at position C<offset> for C<count> bytes with the
-contents of string C<new_bytes>.
-
-=cut
-
-*/
-
-static void
-set_bytes(PARROT_INTERP, SHIM(STRING *src),
- SHIM(UINTVAL offset), SHIM(UINTVAL count), SHIM(STRING *new_bytes))
-{
- ASSERT_ARGS(set_bytes)
- UNIMPL;
-}
-
-/*
-
-=item C<static void become_encoding(PARROT_INTERP, STRING *src)>
-
-Unconditionally makes the string be in this encoding, if that's valid
-
-=cut
-
-*/
-
-static void
-become_encoding(PARROT_INTERP, SHIM(STRING *src))
-{
- ASSERT_ARGS(become_encoding)
- UNIMPL;
-}
-
-
-/*
-
-=item C<static UINTVAL codepoints(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL codepoints(PARROT_INTERP, const STRING *src)>
Returns the number of codepoints in string C<src>.
@@ -965,7 +741,7 @@
*/
static UINTVAL
-codepoints(PARROT_INTERP, ARGMOD(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(codepoints)
String_iter iter;
@@ -981,7 +757,7 @@
/*
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *src)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *src)>
Returns the number of bytes in string C<src>.
@@ -991,7 +767,7 @@
PARROT_PURE_FUNCTION
static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *src))
+bytes(SHIM_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(bytes)
return src->bufused;
@@ -1022,7 +798,7 @@
/*
-=item C<ENCODING * Parrot_encoding_utf8_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_utf8_init(PARROT_INTERP)>
Initializes the UTF-8 encoding.
@@ -1030,8 +806,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_utf8_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_utf8_init)
@@ -1042,24 +817,20 @@
4, /* Max bytes per codepoint 0 .. 0x10ffff */
to_encoding,
get_codepoint,
- set_codepoint,
get_byte,
set_byte,
get_codepoints,
- get_codepoints_inplace,
get_bytes,
- get_bytes_inplace,
- set_codepoints,
- set_bytes,
- become_encoding,
codepoints,
bytes,
iter_init,
- find_cclass
+ find_cclass,
+ NULL
};
STRUCT_COPY_FROM_STRUCT(return_encoding, base_encoding);
Parrot_register_encoding(interp, "utf8", return_encoding);
- return return_encoding;
+
+ return;
}
/*
Modified: branches/ops_pct/src/string/encoding/utf8.h
==============================================================================
--- branches/ops_pct/src/string/encoding/utf8.h Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/encoding/utf8.h Wed May 5 08:45:29 2010 (r46302)
@@ -16,8 +16,7 @@
/* HEADERIZER BEGIN: src/string/encoding/utf8.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-ENCODING * Parrot_encoding_utf8_init(PARROT_INTERP)
+void Parrot_encoding_utf8_init(PARROT_INTERP)
__attribute__nonnull__(1);
#define ASSERT_ARGS_Parrot_encoding_utf8_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
Modified: branches/ops_pct/src/string/primitives.c
==============================================================================
--- branches/ops_pct/src/string/primitives.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/string/primitives.c Wed May 5 08:45:29 2010 (r46302)
@@ -70,8 +70,8 @@
/*
-=item C<Parrot_UInt4 string_unescape_one(PARROT_INTERP, UINTVAL *offset, STRING
-*string)>
+=item C<Parrot_UInt4 string_unescape_one(PARROT_INTERP, UINTVAL *offset, const
+STRING *string)>
Unescape a single character. We assume that we're at the start of a
sequence, right after the \.
@@ -83,7 +83,7 @@
PARROT_EXPORT
Parrot_UInt4
string_unescape_one(PARROT_INTERP, ARGMOD(UINTVAL *offset),
- ARGMOD(STRING *string))
+ ARGIN(const STRING *string))
{
ASSERT_ARGS(string_unescape_one)
UINTVAL workchar = 0;
Modified: branches/ops_pct/src/sub.c
==============================================================================
--- branches/ops_pct/src/sub.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/sub.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -49,60 +49,6 @@
/*
-=item C<PMC * new_ret_continuation_pmc(PARROT_INTERP, opcode_t *address)>
-
-Returns a new C<RetContinuation> PMC, and sets address field to C<address>
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_MALLOC
-PARROT_CANNOT_RETURN_NULL
-PMC *
-new_ret_continuation_pmc(PARROT_INTERP, ARGIN_NULLOK(opcode_t *address))
-{
- ASSERT_ARGS(new_ret_continuation_pmc)
- PMC* const continuation = Parrot_pmc_new(interp, enum_class_RetContinuation);
- VTABLE_set_pointer(interp, continuation, address);
- return continuation;
-}
-
-/*
-
-=item C<void invalidate_retc_context(PARROT_INTERP, PMC *cont)>
-
-Make true Continuations from all RetContinuations up the call chain.
-
-=cut
-
-*/
-
-void
-invalidate_retc_context(PARROT_INTERP, ARGMOD(PMC *cont))
-{
- ASSERT_ARGS(invalidate_retc_context)
-
- PMC *ctx = PARROT_CONTINUATION(cont)->from_ctx;
- cont = Parrot_pcc_get_continuation(interp, ctx);
-
- while (1) {
- /*
- * We stop if we encounter a true continuation, because
- * if one were created, everything up the chain would have been
- * invalidated earlier.
- */
- if (!cont || cont->vtable != interp->vtables[enum_class_RetContinuation])
- break;
- cont->vtable = interp->vtables[enum_class_Continuation];
- ctx = Parrot_pcc_get_caller_ctx(interp, ctx);
- cont = Parrot_pcc_get_continuation(interp, ctx);
- }
-}
-
-/*
-
=item C<STRING* Parrot_full_sub_name(PARROT_INTERP, PMC* sub_pmc)>
Return namespace, name, and location of subroutine.
@@ -235,7 +181,7 @@
if (!debug)
return 0;
- for (i = n = 0; n < sub->seg->base.size; i++) {
+ for (i = n = 0; n < sub->seg->base.size; ++i) {
op_info_t * const op_info = &interp->op_info_table[*pc];
opcode_t var_args = 0;
@@ -287,7 +233,7 @@
base_pc = sub->seg->base.data;
current_annotation = pc - base_pc;
- for (i = op = 0; op < debug_size; i++) {
+ for (i = op = 0; op < debug_size; ++i) {
op_info_t * const op_info = &interp->op_info_table[*base_pc];
opcode_t var_args = 0;
@@ -395,7 +341,7 @@
PMC * const lex_pad = Parrot_pcc_get_lex_pad(interp, ctx);
PMC * outer = Parrot_pcc_get_outer_ctx(interp, ctx);
- if (!outer)
+ if (PMC_IS_NULL(outer))
return lex_pad;
if (!PMC_IS_NULL(lex_pad))
@@ -428,7 +374,7 @@
PMC * const lex_pad = Parrot_pcc_get_lex_pad(interp, ctx);
PMC * caller = Parrot_pcc_get_caller_ctx(interp, ctx);
- if (!caller)
+ if (PMC_IS_NULL(caller))
return lex_pad;
if (!PMC_IS_NULL(lex_pad))
@@ -489,18 +435,6 @@
if (PMC_IS_NULL(sub->outer_sub))
return;
-#if 0
- /* verify that the current sub is sub_pmc's :outer */
- PMC_get_sub(interp, sub->outer_sub, outer_sub);
- if (Parrot_str_not_equal(interp, current_sub->subid,
- outer_sub->subid)) {
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "'%Ss' isn't the :outer of '%Ss'",
- current_sub->name, sub->name);
- return;
- }
-#endif
-
/* set the sub's outer context to the current context */
sub->outer_ctx = ctx;
}
@@ -570,6 +504,7 @@
ASSERT_ARGS(Parrot_continuation_rewind_environment)
PMC * const to_ctx = PARROT_CONTINUATION(pmc)->to_ctx;
+ PMC * const sig = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
/* debug print before context is switched */
if (Interp_trace_TEST(interp, PARROT_TRACE_SUB_CALL_FLAG)) {
@@ -582,6 +517,7 @@
/* set context */
CURRENT_CONTEXT(interp) = to_ctx;
+ Parrot_pcc_set_signature(interp, to_ctx, sig);
}
@@ -601,10 +537,11 @@
void *
Parrot_get_sub_pmc_from_subclass(PARROT_INTERP, ARGIN(PMC *subclass)) {
ASSERT_ARGS(Parrot_get_sub_pmc_from_subclass)
- PMC *key, *sub_pmc;
/* Ensure we really do have a subclass of sub. */
if (VTABLE_isa(interp, subclass, CONST_STRING(interp, "Sub"))) {
+ PMC *key, *sub_pmc;
+
/* If it's actually a PMC still, probably does the same structure
* underneath. */
if (!PObj_is_object_TEST(subclass)) {
@@ -631,10 +568,6 @@
F<include/parrot/sub.h>.
-=head1 HISTORY
-
-Initial version by Melvin on 2002/06/6.
-
=cut
*/
Modified: branches/ops_pct/src/thread.c
==============================================================================
--- branches/ops_pct/src/thread.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/thread.c Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -20,6 +20,7 @@
#include "parrot/parrot.h"
#include "parrot/atomic.h"
+#include "parrot/runcore_api.h"
#include "pmc/pmc_sub.h"
#include "pmc/pmc_parrotinterpreter.h"
@@ -30,8 +31,7 @@
static Parrot_Interp detach(UINTVAL tid);
PARROT_CAN_RETURN_NULL
-static Shared_gc_info * get_pool(PARROT_INTERP)
- __attribute__nonnull__(1);
+static Shared_gc_info * get_pool(void);
PARROT_WARN_UNUSED_RESULT
static int is_suspended_for_gc(PARROT_INTERP)
@@ -59,17 +59,13 @@
static Parrot_Interp pt_check_tid(UINTVAL tid, ARGIN(const char *from))
__attribute__nonnull__(2);
-static int pt_gc_count_threads(PARROT_INTERP)
- __attribute__nonnull__(1);
-
+static int pt_gc_count_threads(void);
static void pt_gc_wait_for_stage(PARROT_INTERP,
thread_gc_stage_enum from_stage,
thread_gc_stage_enum to_stage)
__attribute__nonnull__(1);
-static void pt_gc_wakeup_check(PARROT_INTERP)
- __attribute__nonnull__(1);
-
+static void pt_gc_wakeup_check(void);
static void pt_ns_clone(PARROT_INTERP,
ARGOUT(Parrot_Interp d),
ARGOUT(PMC *dest_ns),
@@ -89,7 +85,7 @@
static void pt_suspend_one_for_gc(PARROT_INTERP)
__attribute__nonnull__(1);
-static void pt_thread_signal(NOTNULL(Parrot_Interp self), PARROT_INTERP)
+static void pt_thread_signal(ARGIN(Parrot_Interp self), PARROT_INTERP)
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -100,8 +96,7 @@
static void* thread_func(ARGIN_NULLOK(void *arg));
#define ASSERT_ARGS_detach __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_get_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_get_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_is_suspended_for_gc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_make_local_args_copy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -115,12 +110,10 @@
PARROT_ASSERT_ARG(arg))
#define ASSERT_ARGS_pt_check_tid __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(from))
-#define ASSERT_ARGS_pt_gc_count_threads __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_gc_count_threads __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_pt_gc_wait_for_stage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_pt_gc_wakeup_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_gc_wakeup_check __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_pt_ns_clone __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(d) \
@@ -215,7 +208,7 @@
/*
-=item C<static Shared_gc_info * get_pool(PARROT_INTERP)>
+=item C<static Shared_gc_info * get_pool(void)>
Gets the shared gc information. For now this is global data; ideally it will
become something other than a static variable. If everything uses this
@@ -227,7 +220,7 @@
PARROT_CAN_RETURN_NULL
static Shared_gc_info *
-get_pool(PARROT_INTERP)
+get_pool(void)
{
ASSERT_ARGS(get_pool)
return shared_gc_info;
@@ -346,8 +339,6 @@
if (is_ro)
pmc->vtable = pmc->vtable->ro_variant_vtable;
- Parrot_gc_add_pmc_sync(interp, pmc);
-
PObj_is_PMC_shared_SET(pmc);
/* make sure metadata doesn't go away unexpectedly */
@@ -368,7 +359,7 @@
*/
static void
-pt_thread_signal(NOTNULL(Parrot_Interp self), PARROT_INTERP)
+pt_thread_signal(ARGIN(Parrot_Interp self), PARROT_INTERP)
{
ASSERT_ARGS(pt_thread_signal)
COND_SIGNAL(interp->thread_data->interp_cond);
@@ -549,7 +540,7 @@
}
/* make sure we don't block a GC run */
- pt_gc_wakeup_check(interp);
+ pt_gc_wakeup_check();
PARROT_ASSERT(interp->thread_data->state & THREAD_STATE_FINISHED);
UNLOCK(interpreter_array_mutex);
@@ -712,156 +703,91 @@
/*
-=item C<int pt_thread_run(PARROT_INTERP, PMC *dest_interp, PMC *sub, PMC *arg)>
+=item C<PMC * pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)>
-Runs the C<*sub> PMC in a separate thread using the interpreter in
-C<*dest_interp>.
-
-C<arg> should be an array of arguments for the subroutine.
+create a pt_thread
=cut
*/
-int
-pt_thread_run(PARROT_INTERP, ARGOUT(PMC *dest_interp), ARGIN(PMC *sub), ARGIN_NULLOK(PMC *arg))
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PMC *
+pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)
{
- ASSERT_ARGS(pt_thread_run)
- PMC *old_dest_interp;
- PMC *parent;
- Interp * const interpreter = (Parrot_Interp)VTABLE_get_pointer(interp,
- dest_interp);
-
- Parrot_block_GC_sweep(interpreter);
- Parrot_block_GC_mark(interpreter);
- Parrot_block_GC_sweep(interp);
- Parrot_block_GC_mark(interp);
-
- /* make a copy of the ParrotThread PMC so we can use it
- * to hold parameters to the new thread without it being
- * garbage collected or otherwise changed by the parent thread.
- * Also so the new thread's getinterp doesn't return an object
- * owned by the wrong interpreter -- which would be very bad
- * if the parent is destroyed before the child.
- * XXX FIXME move this elsewhere? at least the set_pmc_keyed_int
- */
- old_dest_interp = dest_interp;
- dest_interp = Parrot_pmc_new_noinit(interpreter, enum_class_ParrotThread);
-
- /* so it's not accidentally deleted */
- VTABLE_set_pointer(interp, old_dest_interp, NULL);
- VTABLE_set_pointer(interp, dest_interp, interpreter);
-
- VTABLE_set_pmc_keyed_int(interpreter, interpreter->iglobals,
- (INTVAL) IGLOBALS_INTERPRETER, dest_interp);
+ ASSERT_ARGS(pt_thread_create)
+ PMC * const new_interp_pmc = pmc_new(interp, type);
+ Interp * const new_interp = (Interp *)VTABLE_get_pointer(interp, new_interp_pmc);
- parent = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
- IGLOBALS_INTERPRETER);
-
- /*
- * TODO check if thread flags are consistent
- */
- if (interp->flags & PARROT_THR_COPY_INTERP)
- clone_interpreter(interpreter,
- (Parrot_Interp)VTABLE_get_pointer(interp, parent),
- PARROT_CLONE_DEFAULT);
- /*
- * TODO thread pools
- */
-
- pt_thread_prepare_for_run(interpreter, interp);
-
- SETATTR_ParrotInterpreter_sub(interp, dest_interp,
- pt_transfer_sub(interpreter, interp, sub));
- VTABLE_set_pmc(interp, dest_interp,
- make_local_args_copy(interpreter, interp, arg));
-
- /*
- * set regs according to pdd03
- */
- interpreter->current_object = dest_interp;
- /*
- * create a joinable thread
- */
- interpreter->thread_data->state = THREAD_STATE_JOINABLE;
+ clone_interpreter(new_interp, interp, clone_flags);
+ pt_thread_prepare_for_run(new_interp, interp);
- Parrot_unblock_GC_mark(interpreter);
- Parrot_unblock_GC_sweep(interpreter);
- Parrot_unblock_GC_mark(interp);
- Parrot_unblock_GC_sweep(interp);
-
- THREAD_CREATE_JOINABLE(interpreter->thread_data->thread,
- thread_func, dest_interp);
-
- /* check for pending GC */
- LOCK(interpreter_array_mutex);
- if (interp->thread_data->state & THREAD_STATE_SUSPEND_GC_REQUESTED)
- pt_suspend_one_for_gc(interpreter);
-
- UNLOCK(interpreter_array_mutex);
- return 0;
+ return new_interp_pmc;
}
/*
-=item C<int pt_thread_run_1(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
+=item C<int pt_thread_run(PARROT_INTERP, PMC *thread_interp_pmc, PMC *sub, PMC
*arg)>
-Runs a thread that shares nothing and does not communicate with the other
-interpreter.
+run a pt_thread
=cut
*/
int
-pt_thread_run_1(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
+pt_thread_run(PARROT_INTERP, ARGMOD(PMC *thread_interp_pmc), ARGIN(PMC *sub),
+ ARGIN_NULLOK(PMC *arg))
{
- ASSERT_ARGS(pt_thread_run_1)
- interp->flags |= PARROT_THR_TYPE_1;
- return pt_thread_run(interp, dest_interp, sub, arg);
-}
+ ASSERT_ARGS(pt_thread_run)
+ Interp * const thread_interp = (Interp *)VTABLE_get_pointer(interp, thread_interp_pmc);
-/*
+ SETATTR_ParrotInterpreter_sub(interp,
+ thread_interp_pmc, pt_transfer_sub(thread_interp, interp, sub));
+ VTABLE_set_pmc(interp, thread_interp_pmc, make_local_args_copy(thread_interp, interp, arg));
+ thread_interp->thread_data->state = THREAD_STATE_JOINABLE;
-=item C<int pt_thread_run_2(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
-*arg)>
+ THREAD_CREATE_JOINABLE(thread_interp->thread_data->thread, thread_func, thread_interp_pmc);
-Runs an interpreter in a thread with no shared variables, but which
-communicates by sending messages.
+ /* check for pending GC */
+ /*
+ * can't do multi-threaded GC yet
+ * XXX a quick hack to pass the few tests
-=cut
+ LOCK(interpreter_array_mutex);
+ if (interp->thread_data->state & THREAD_STATE_SUSPEND_GC_REQUESTED)
+ pt_suspend_one_for_gc(new_interp);
+ UNLOCK(interpreter_array_mutex);
-*/
+ */
-int
-pt_thread_run_2(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
-{
- ASSERT_ARGS(pt_thread_run_2)
- interp->flags |= PARROT_THR_TYPE_2;
- return pt_thread_run(interp, dest_interp, sub, arg);
+ return thread_interp->thread_data->tid;
}
/*
-=item C<int pt_thread_run_3(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
-*arg)>
+=item C<int pt_thread_create_run(PARROT_INTERP, INTVAL type, INTVAL clone_flags,
+PMC *sub, PMC *arg)>
-Runs an interpreter in a thread, allowing shared variables and using a thread
-pool.
+create a pt_thread run
=cut
*/
int
-pt_thread_run_3(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
+pt_thread_create_run(PARROT_INTERP,
+ INTVAL type, INTVAL clone_flags, ARGIN(PMC *sub), ARGIN_NULLOK(PMC *arg))
{
- ASSERT_ARGS(pt_thread_run_3)
- interp->flags |= PARROT_THR_TYPE_3;
- return pt_thread_run(interp, dest_interp, sub, arg);
+ ASSERT_ARGS(pt_thread_create_run)
+ PMC *thread_interp_pmc = pt_thread_create(interp, type, clone_flags);
+ return pt_thread_run(interp, thread_interp_pmc, sub, arg);
}
+
/*
=item C<void pt_thread_yield(void)>
@@ -957,7 +883,7 @@
/*
-=item C<static int pt_gc_count_threads(PARROT_INTERP)>
+=item C<static int pt_gc_count_threads(void)>
Returns the number of active threads in the system (running or suspended). Be
sure to hold C<interpreter_array_mutex>.
@@ -967,7 +893,7 @@
*/
static int
-pt_gc_count_threads(PARROT_INTERP)
+pt_gc_count_threads(void)
{
ASSERT_ARGS(pt_gc_count_threads)
UINTVAL i;
@@ -1014,7 +940,7 @@
LOCK(interpreter_array_mutex);
DEBUG_ONLY(fprintf(stderr, "%p: got lock\n", interp));
- thread_count = pt_gc_count_threads(interp);
+ thread_count = pt_gc_count_threads();
PARROT_ASSERT(info->gc_stage == from_stage);
PARROT_ASSERT(!(interp->thread_data->state & THREAD_STATE_NOT_STARTED));
@@ -1045,7 +971,7 @@
/*
-=item C<static void pt_gc_wakeup_check(PARROT_INTERP)>
+=item C<static void pt_gc_wakeup_check(void)>
Checks if it's necessary to wake threads to perform garbage collection. This
is called after thread death. Be sure to hold C<interpreter_array_mutex>.
@@ -1055,7 +981,7 @@
*/
static void
-pt_gc_wakeup_check(PARROT_INTERP)
+pt_gc_wakeup_check(void)
{
ASSERT_ARGS(pt_gc_wakeup_check)
Shared_gc_info * const info = shared_gc_info;
@@ -1064,7 +990,7 @@
if (!info)
return;
- thread_count = pt_gc_count_threads(interp);
+ thread_count = pt_gc_count_threads();
if (info->num_reached == thread_count) {
PARROT_ASSERT(info->gc_stage == THREAD_GC_STAGE_NONE);
@@ -1136,32 +1062,6 @@
return;
}
-#if 0
- for (i = 0; i < n_interpreters; ++i) {
- Parrot_Interp other_interp;
- other_interp = interpreter_array[i];
- if (!other_interp)
- continue;
-
- if (is_suspended_for_gc(other_interp) &&
- other_interp != interp &&
- (other_interp->thread_data->state & THREAD_STATE_SUSPENDED_GC))
- {
- PMC *successp;
- /* this means that someone else already got this far,
- * so we have a suspend event in our queue to ignore
- */
- /* XXX still reachable? */
- DEBUG_ONLY(fprintf(stderr, "apparently someone else is doing it [%p]\n", other_interp));
- fprintf(stderr, "??? found later (%p)\n", other_interp);
- successp = Parrot_cx_delete_suspend_for_gc(interp);
- PARROT_ASSERT(successp);
- UNLOCK(interpreter_array_mutex);
- return;
- }
- }
-#endif
-
/* now send all the non-suspended threads to suspend for GC */
for (i = 0; i < n_interpreters; ++i) {
Parrot_Interp other_interp = interpreter_array[i];
@@ -1240,7 +1140,7 @@
PARROT_CAN_RETURN_NULL
PMC*
-pt_thread_join(NOTNULL(Parrot_Interp parent), UINTVAL tid)
+pt_thread_join(ARGIN(Parrot_Interp parent), UINTVAL tid)
{
ASSERT_ARGS(pt_thread_join)
int state;
@@ -1310,7 +1210,7 @@
retval = PMCNULL;
}
interpreter_array[tid] = NULL;
- running_threads--;
+ --running_threads;
DEBUG_ONLY(fprintf(stderr, "destroying an interpreter [join]\n"));
if (Interp_debug_TEST(parent, PARROT_THREAD_DEBUG_FLAG))
@@ -1519,7 +1419,7 @@
new_interp->thread_data = mem_internal_allocate_zeroed_typed(Thread_data);
INTERPRETER_LOCK_INIT(new_interp);
- running_threads++;
+ ++running_threads;
if (Interp_debug_TEST(interp, PARROT_THREAD_DEBUG_FLAG))
fprintf(stderr, "running threads %d\n", running_threads);
@@ -1581,7 +1481,7 @@
if (!running_threads)
return;
- info = get_pool(interp);
+ info = get_pool();
PARROT_ATOMIC_INT_GET(block_level, info->gc_block_level);
DEBUG_ONLY(fprintf(stderr, "start threaded mark\n"));
@@ -1718,7 +1618,7 @@
Parrot_shared_gc_block(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_shared_gc_block)
- Shared_gc_info * const info = get_pool(interp);
+ Shared_gc_info * const info = get_pool();
if (info) {
int level;
@@ -1742,7 +1642,7 @@
Parrot_shared_gc_unblock(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_shared_gc_unblock)
- Shared_gc_info * const info = get_pool(interp);
+ Shared_gc_info * const info = get_pool();
if (info) {
int level;
PARROT_ATOMIC_INT_DEC(level, info->gc_block_level);
Modified: branches/ops_pct/src/utils.c
==============================================================================
--- branches/ops_pct/src/utils.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/utils.c Wed May 5 08:45:29 2010 (r46302)
@@ -120,6 +120,7 @@
*/
PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
INTVAL
intval_mod(INTVAL i2, INTVAL i3)
{
@@ -167,6 +168,7 @@
*/
PARROT_CONST_FUNCTION
+PARROT_WARN_UNUSED_RESULT
FLOATVAL
floatval_mod(FLOATVAL n2, FLOATVAL n3)
{
@@ -422,6 +424,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
FLOATVAL
Parrot_float_rand(INTVAL how_random)
{
@@ -444,6 +447,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_uint_rand(INTVAL how_random)
{
@@ -466,6 +470,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_int_rand(INTVAL how_random)
{
@@ -488,6 +493,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_range_rand(INTVAL from, INTVAL to, INTVAL how_random)
{
@@ -582,6 +588,7 @@
*/
PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
INTVAL
Parrot_byte_index(SHIM_INTERP, ARGIN(const STRING *base),
ARGIN(const STRING *search), UINTVAL start_offset)
@@ -637,7 +644,7 @@
{
ASSERT_ARGS(Parrot_byte_rindex)
const INTVAL searchlen = search->strlen;
- const char * const search_start = (const char *)Buffer_bufstart(search);
+ const char * const search_start = (const char *)(search->strstart);
UINTVAL max_possible_offset = (base->strlen - search->strlen);
INTVAL current_offset;
@@ -646,7 +653,7 @@
for (current_offset = max_possible_offset; current_offset >= 0;
current_offset--) {
- const char * const base_start = (char *)Buffer_bufstart(base) + current_offset;
+ const char * const base_start = (char *)(base->strstart) + current_offset;
if (memcmp(base_start, search_start, searchlen) == 0) {
return current_offset;
}
@@ -838,7 +845,7 @@
c.temp_reg = temp_reg;
/* compute max_reg, the max reg number + 1 */
- for (i = 0; i < n_regs; i++) {
+ for (i = 0; i < n_regs; ++i) {
if (src_regs[i] > max_reg)
max_reg = src_regs[i];
if (dest_regs[i] > max_reg)
@@ -854,26 +861,26 @@
c.reg_to_index = reg_to_index = mem_gc_allocate_n_zeroed_typed(interp, max_reg, int);
/* init backup array */
- for (i = 0; i < n_regs; i++)
+ for (i = 0; i < n_regs; ++i)
backup[i] = -1;
/* fill in the conversion array between a register number and its index */
- for (i = 0; i < max_reg; i++)
+ for (i = 0; i < max_reg; ++i)
reg_to_index[i] = -1;
- for (i = 0; i < n_regs; i++) {
+ for (i = 0; i < n_regs; ++i) {
const int index = dest_regs[i];
if (index != src_regs[i]) /* get rid of self-assignment */
reg_to_index[index] = i;
}
/* count the nb of successors for each reg index */
- for (i = 0; i < n_regs; i++) {
+ for (i = 0; i < n_regs; ++i) {
const int index = reg_to_index[ src_regs[i] ];
if (index >= 0) /* not interested in the wells that have no preds */
- nb_succ[ index ]++;
+ ++nb_succ[index];
}
/* process each well if any */
- for (i = 0; i < n_regs; i++) {
+ for (i = 0; i < n_regs; ++i) {
if (0 == nb_succ[i]) { /* a well */
rec_climb_back_and_mark(i, &c);
}
@@ -881,7 +888,7 @@
/* process remaining dest registers not processed */
/* remaining nodes are members of cycles without exits */
- for (i = 0; i < n_regs; i++) {
+ for (i = 0; i < n_regs; ++i) {
if (0 < nb_succ[i] && 0 > backup[i]) { /* not a well nor visited*/
process_cycle_without_exit(i, &c);
}
@@ -990,12 +997,6 @@
=back
-=head1 HISTORY
-
-Initial version by leo 2003.09.09.
-
-=cut
-
*/
Modified: branches/ops_pct/src/vtables.c
==============================================================================
--- branches/ops_pct/src/vtables.c Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/src/vtables.c Wed May 5 08:45:29 2010 (r46302)
@@ -91,14 +91,14 @@
PARROT_EXPORT
void
-Parrot_destroy_vtable(PARROT_INTERP, ARGMOD(VTABLE *vtable))
+Parrot_destroy_vtable(PARROT_INTERP, ARGFREE_NOTNULL(VTABLE *vtable))
{
ASSERT_ARGS(Parrot_destroy_vtable)
/* We sometimes get a type number allocated without any corresponding
* vtable. E.g. if you load perl_group, perlscalar is this way. */
if (vtable->ro_variant_vtable) {
- VTABLE *ro_vtable = vtable->ro_variant_vtable;
+ VTABLE * const ro_vtable = vtable->ro_variant_vtable;
if (ro_vtable->isa_hash) {
parrot_hash_destroy(interp, ro_vtable->isa_hash);
@@ -184,7 +184,7 @@
ASSERT_ARGS(parrot_free_vtables)
int i;
- for (i = 0; i < interp->n_vtable_max; i++)
+ for (i = 0; i < interp->n_vtable_max; ++i)
Parrot_destroy_vtable(interp, interp->vtables[i]);
mem_internal_free(interp->vtables);
@@ -206,7 +206,7 @@
ASSERT_ARGS(mark_vtables)
INTVAL i;
- for (i = 1; i < interp->n_vtable_max; i++) {
+ for (i = 1; i < interp->n_vtable_max; ++i) {
const VTABLE * const vtable = interp->vtables[i];
/* XXX dynpmc groups have empty slots for abstract objects */
Modified: branches/ops_pct/t/codingstd/c_function_docs.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_function_docs.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/codingstd/c_function_docs.t Wed May 5 08:45:29 2010 (r46302)
@@ -91,8 +91,6 @@
}
__DATA__
-compilers/imcc/instructions.c
-compilers/imcc/optimizer.c
compilers/imcc/parser_util.c
compilers/imcc/pbc.c
compilers/imcc/pcc.c
Modified: branches/ops_pct/t/codingstd/c_parens.t
==============================================================================
--- branches/ops_pct/t/codingstd/c_parens.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/codingstd/c_parens.t Wed May 5 08:45:29 2010 (r46302)
@@ -33,7 +33,7 @@
=cut
-my $keywords = join '|' => sort { length $a cmp length $b } qw/
+my $keywords = join '|' => sort { length $a <=> length $b } qw/
auto double int struct INTVAL
break else long switch UINTVAL
case enum register typedef FLOATVAL
Modified: branches/ops_pct/t/codingstd/pdd_format.t
==============================================================================
--- branches/ops_pct/t/codingstd/pdd_format.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/codingstd/pdd_format.t Wed May 5 08:45:29 2010 (r46302)
@@ -7,22 +7,20 @@
use Test::More tests => 1;
use Carp;
-use Cwd;
use Tie::File;
-my $cwd = cwd();
-my @pdddirs = (
- qq{$cwd/docs/pdds},
- qq{$cwd/docs/pdds/draft},
+my @pdddirs = qw(
+ ./docs/pdds
+ ./docs/pdds/draft
);
my @pddfiles = ();
foreach my $dir (@pdddirs) {
- opendir my $DIRH, $dir
- or croak "Unable to open directory handle: $!";
- my @pdds = map { qq|$dir/$_| } grep { m/^pdd\d{2,}_.*\.pod$/ }
- readdir $DIRH;
- closedir $DIRH or croak "Unable to close directory handle: $!";
+ die "Directory '$dir' is not found, or not a directory" if not -d $dir;
+
+ my @pdds = glob "$dir/pdd*.pod"
+ or warn "No PDD files found in directory '$dir'";
+
push @pddfiles, @pdds;
}
@@ -34,20 +32,14 @@
}
}
-my $errmsg = q{};
-if ( @diagnostics ) {
- $errmsg = join ("\n" => @diagnostics) . "\n";
+for my $msg (@diagnostics) {
+ diag($msg);
}
-
-$errmsg ? fail( qq{\n$errmsg} )
- : pass( q{All PDDs are formatted correctly} );
+cmp_ok( scalar(@diagnostics), '==', 0, 'PDDs are formatted correctly' );
sub check_pdd_formatting {
my $pdd = shift;
- my $base = $pdd;
- if ($pdd =~ m{((draft/)?[^/]+)$}) {
- $base = $1;
- }
+
my $diag = q{};
my @toolong = ();
my @sections_needed = qw(
@@ -57,7 +49,7 @@
Implementation
References
);
- my %sections_seen = map { $_, 0 } @sections_needed;
+ my %sections_seen;
my @lines;
tie @lines, 'Tie::File', $pdd
or croak "Unable to tie to $pdd: $!";
@@ -69,20 +61,20 @@
) {
push @toolong, ($i + 1);
}
- foreach my $need ( @sections_needed ) {
- $sections_seen{$need}++ if $lines[$i] =~ m{^=head2\s+$need};
+ if ( $lines[$i] =~ m{^=head2\s+(.+?)\s*$} ) {
+ $sections_seen{$1}++;
}
}
untie @lines or croak "Unable to untie from $pdd: $!";
if ( @toolong ) {
$diag .=
- qq{$base has } .
+ qq{$pdd has } .
scalar(@toolong) .
qq{ lines > 78 chars: @toolong\n};
}
- foreach my $need ( keys %sections_seen ) {
+ foreach my $need (@sections_needed) {
if ( ! $sections_seen{$need} ) {
- $diag .= qq{$base lacks 'head2' $need section\n};
+ $diag .= qq{$pdd lacks 'head2' $need section\n};
}
}
return $diag;
Copied: branches/ops_pct/t/compilers/data_json/from_parrot.t (from r46301, trunk/t/compilers/data_json/from_parrot.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/compilers/data_json/from_parrot.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/compilers/data_json/from_parrot.t)
@@ -0,0 +1,441 @@
+#!./parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/compilers/data_json/from_parrot.t - test parrot to JSON conversion.
+
+=head1 SYNOPSIS
+
+ % prove t/compilers/data_json/from_parrot.t
+
+=head1 DESCRIPTION
+
+Tests JSON->Parrot conversions.
+
+=cut
+
+.sub main :main
+ .include 'test_more.pir'
+ plan(39)
+
+ load_bytecode 'JSON.pbc'
+ test_create_json_of_an_empty_string()
+ test_create_json_of_a_non_empty_string()
+ test_create_json_of_a_string_with_simple_escapes()
+ test_create_json_of_some_integers()
+ test_create_json_of_some_numbers()
+ test_create_json_of_various_scalars_with_pretty_option()
+ test_create_json_of_an_array()
+ test_create_pretty_json_of_an_array()
+ test_create_json_of_array_keep_element_ordering()
+ test_create_json_of_a_mixed_array()
+ test_create_json_of_hash()
+ test_create_non_pretty_json_of_hash()
+ test_create_json_of_nested_structure_including_resizablepmcarray_and_empties()
+ test_create_non_pretty_json_of_nested_structure()
+ test_create_json_of_string_pmcs()
+ test_create_json_of_integer_pmcs()
+ test_create_json_of_boolean_pmcs()
+ test_create_json_of_null_and_undef()
+.end
+
+
+# no. 1
+.sub test_create_json_of_an_empty_string
+ .local string s
+ s = ''
+
+ $S0 = _json( s, 0 )
+ is($S0, '""', 'Create JSON of an empty string')
+.end
+
+
+# no. 2
+.sub test_create_json_of_a_non_empty_string
+ .local string s
+ s = 'abcdeABCDE01234$%^&*'
+
+ $S0 = _json( s, 0 )
+ is($S0, '"abcdeABCDE01234$%^&*"', 'Create JSON of a non-empty string')
+.end
+
+
+# no. 3
+.sub test_create_json_of_a_string_with_simple_escapes
+ .local string s
+ s = "abcde\\ABCDE\"01234\n$%^&*"
+ # XXX more escapes need to be tested; see http://www.json.org/
+ $S0 = _json( s, 0 )
+ is($S0, '"abcde\\ABCDE\"01234\n$%^&*"', 'Create JSON of a string with simple escapes')
+.end
+
+
+# no. 4..8
+.sub test_create_json_of_some_integers
+ .local int i
+ i = 0
+ $S0 = _json( i, 0 )
+ is($S0, 0, 'Create JSON of some integers (0)')
+ i = 35
+ $S0 = _json( i, 0 )
+ is($S0, 35, 'Create JSON of some integers (35)')
+ i = -42
+ $S0 = _json( i, 0 )
+ is($S0, -42, 'Create JSON of some integers (-42)')
+ i = 2147483647
+ $S0 = _json( i, 0 )
+ is($S0, 2147483647, 'Create JSON of some integers (2147483647)')
+ i = -2147483648
+ $S0 = _json( i, 0 )
+ is($S0, -2147483648, 'Create JSON of some integers (-2147483648)')
+.end
+
+
+# no. 9..12
+.sub test_create_json_of_some_numbers
+ .local num n
+ n = 0.0
+ $S0 = _json( n )
+ is($S0, 0, 'Create JSON of some numbers (0)')
+ n = 2.50
+ $S0 = _json( n )
+ is($S0, 2.5, 'Create JSON of some numbers (2.5)')
+ n = -42.0
+ $S0 = _json( n )
+ is($S0, -42, 'Create JSON of some numbers (-42)')
+ n = 4.5e1
+ $S0 = _json( n )
+ is($S0, 45, 'Create JSON of some numbers (45)')
+.end
+
+
+# no. 13..15
+.sub test_create_json_of_various_scalars_with_pretty_option
+ .local string s
+ s = "abcde\\ABCDE\"01234\n$%^&*"
+ $S0 = _json( s, 1 )
+ is($S0, "\"abcde\\\\ABCDE\\\"01234\\n\$\%\^\&\*\"\n", 'Create JSON of various scalars with pretty option (string)')
+
+ .local int i
+ i = -42
+ $S0 = _json( i, 1 )
+ is($S0, "-42\n", 'Create JSON of various scalars with pretty option (integer)')
+
+ .local num n
+ n = 2.50
+ $S0 = _json( n, 1 )
+ is($S0, "2.5\n", 'Create JSON of various scalars with pretty option (number)')
+.end
+
+
+# no. 16
+.sub test_create_json_of_an_array
+ .local pmc array
+
+ new array, 'ResizablePMCArray'
+ array = 10
+ array[0] = 0
+ array[1] = 1
+ array[2] = 2
+ array[3] = 3
+ array[4] = 4
+ array[5] = 5
+ array[6] = 6
+ array[7] = 7
+ array[8] = 8
+ array[9] = 9
+
+ $S0 = _json( array, 0 )
+ is($S0, '[0,1,2,3,4,5,6,7,8,9]', 'Create JSON of an array')
+.end
+
+
+# no. 17
+.sub test_create_pretty_json_of_an_array
+ .local pmc array
+
+ new array, 'ResizablePMCArray'
+ array = 10
+ array[0] = 0
+ array[1] = 1
+ array[2] = 2
+ array[3] = 3
+ array[4] = 4
+ array[5] = 5
+ array[6] = 6
+ array[7] = 7
+ array[8] = 8
+ array[9] = 9
+
+ $S0 = _json( array, 1 )
+ is($S0, <<'OUTPUT', 'Create pretty JSON of an array')
+[
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+]
+OUTPUT
+.end
+
+
+# no. 18
+.sub test_create_json_of_array_keep_element_ordering
+ .local pmc array
+
+ new array, 'ResizablePMCArray'
+ array = 6
+ array[0] = 35
+ array[1] = 1
+ array[2] = -5
+ array[3] = 0
+ array[4] = -2147483648
+ array[5] = 2147483647
+
+ $S0 = _json( array, 1 )
+ is($S0, <<'OUTPUT', 'Create JSON of an array, keep element ordering')
+[
+ 35,
+ 1,
+ -5,
+ 0,
+ -2147483648,
+ 2147483647
+]
+OUTPUT
+.end
+
+
+# no. 19
+.sub test_create_json_of_a_mixed_array
+ .local pmc array
+
+ new array, 'ResizablePMCArray'
+ array = 6
+ array[0] = 0
+ array[1] = 1500e-2
+ array[2] = "JSON"
+ array[3] = -7
+ array[4] = "json"
+ array[5] = 0.0
+
+ $S0 = _json( array, 1 )
+ is($S0, <<'OUTPUT', 'Create JSON of a mixed array')
+[
+ 0,
+ 15,
+ "JSON",
+ -7,
+ "json",
+ 0
+]
+OUTPUT
+.end
+
+
+# no. 20
+.sub test_create_json_of_hash
+ .local pmc hash
+
+ new hash, 'Hash'
+ hash["alpha"] = 29
+ hash["beta"] = "B"
+ hash["gamma"] = 3.1
+ hash["delta"] = "DELTA"
+
+ $S0 = _json( hash, 1 )
+ is($S0, <<'OUTPUT', 'Create JSON of hash')
+{
+ "alpha" : 29,
+ "beta" : "B",
+ "delta" : "DELTA",
+ "gamma" : 3.1
+}
+OUTPUT
+.end
+
+
+# no. 21
+.sub test_create_non_pretty_json_of_hash
+ .local pmc hash
+
+ new hash, 'Hash'
+ hash["alpha"] = 29
+ hash["beta"] = "B"
+ hash["gamma"] = 3.1
+ hash["delta"] = "DELTA"
+
+ $S0 = _json( hash, 0 )
+ is($S0, '{"alpha":29,"beta":"B","delta":"DELTA","gamma":3.1}', 'Create non-pretty JSON of hash')
+.end
+
+
+# no. 22
+.sub test_create_json_of_nested_structure_including_resizablepmcarray_and_empties
+ .local pmc street1, street2, city1, city2, country, world
+
+ street1 = new 'Hash'
+ street1["Perl"] = "Highway"
+ street1["Python"] = "Grove"
+ street1["Ruby"] = "Lane"
+
+ street2 = new 'Hash' # empty
+
+ city1 = new 'ResizablePMCArray'
+ push city1, street1
+ push city1, street2
+
+ city2 = new 'FixedPMCArray' # empty
+
+ country = new 'FixedPMCArray'
+ country = 2
+ country[0] = city1
+ country[1] = city2
+
+ world = new 'Hash'
+ world["population"] = 1234567890
+ world["some_country"] = country
+
+ $S0 = _json( world, 1 )
+ is($S0, <<'OUTPUT', 'Create JSON of nested structure including ResizablePMCArray and empties')
+{
+ "population" : 1234567890,
+ "some_country" : [
+ [
+ {
+ "Perl" : "Highway",
+ "Python" : "Grove",
+ "Ruby" : "Lane"
+ },
+ {
+ }
+ ],
+ [
+ ]
+ ]
+}
+OUTPUT
+.end
+
+
+# no. 23
+.sub test_create_non_pretty_json_of_nested_structure
+ .local pmc street1, street2, city1, city2, country, world
+
+ street1 = new 'Hash'
+ street1["Perl"] = "Highway"
+ street1["Python"] = "Grove"
+ street1["Ruby"] = "Lane"
+
+ street2 = new 'Hash' # empty
+
+ city1 = new 'ResizablePMCArray'
+ push city1, street1
+ push city1, street2
+
+ city2 = new 'FixedPMCArray' # empty
+
+ country = new 'FixedPMCArray'
+ country = 2
+ country[0] = city1
+ country[1] = city2
+
+ world = new 'Hash'
+ world["population"] = 1234567890
+ world["some_country"] = country
+
+ $S0 = _json( world, 0 )
+ is($S0, '{"population":1234567890,"some_country":[[{"Perl":"Highway","Python":"Grove","Ruby":"Lane"},{}],[]]}', 'Create non-pretty JSON of nested structure')
+.end
+
+
+# no. 24..27
+.sub test_create_json_of_string_pmcs
+ .local pmc s
+
+ s = new 'String'
+ s = ''
+ $S0 = _json( s, 0 )
+ is($S0, '""', 'Create JSON of String PMCs')
+ $S0 = _json( s, 1 )
+ is($S0, "\"\"\n", 'Create JSON of String PMCs')
+
+ s = new 'String'
+ s = "12345\"67890"
+ $S0 = _json( s, 0 )
+ is($S0, '"12345\"67890"', 'Create JSON of String PMCs')
+ $S0 = _json( s, 1 )
+ is($S0, "\"12345\\\"67890\"\n", 'Create JSON of String PMCs')
+.end
+
+
+# no. 28..31
+.sub test_create_json_of_integer_pmcs
+ .local pmc i
+
+ i = new 'Integer'
+ i = 0
+ $S0 = _json( i, 0 )
+ is($S0, 0, 'Create JSON of String PMCs')
+ $S0 = _json( i, 1 )
+ is($S0, "0\n", 'Create JSON of String PMCs')
+
+ i = new 'Integer'
+ i = -42
+ $S0 = _json( i, 0 )
+ is($S0, -42, 'Create JSON of String PMCs')
+ $S0 = _json( i, 1 )
+ is($S0, "-42\n", 'Create JSON of String PMCs')
+.end
+
+
+# no. 32..35
+.sub test_create_json_of_boolean_pmcs
+ .local pmc b
+
+ b = new 'Boolean'
+ b = 0
+ $S0 = _json( b, 0 )
+ is($S0, 'false', 'Create JSON of Boolean PMCs')
+ $S0 = _json( b, 1 )
+ is($S0, "false\n", 'Create JSON of Boolean PMCs')
+
+ b = new 'Boolean'
+ b = 1
+ $S0 = _json( b, 0 )
+ is($S0, 'true', 'Create JSON of Boolean PMCs')
+ $S0 = _json( b, 1 )
+ is($S0, "true\n", 'Create JSON of Boolean PMCs')
+.end
+
+
+# no. 36..39
+.sub test_create_json_of_null_and_undef
+ .local pmc n
+ null n
+
+ $S0 = _json( n, 0 )
+ is($S0, 'null', 'Create JSON of null and .Undef')
+ $S0 = _json( n, 1 )
+ is($S0, "null\n", 'Create JSON of null and .Undef')
+
+ n = new 'Undef'
+ $S0 = _json( n, 0 )
+ is($S0, 'null', 'Create JSON of null and .Undef')
+ $S0 = _json( n, 1 )
+ is($S0, "null\n", 'Create JSON of null and .Undef')
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/t/compilers/data_json/to_parrot.t (from r46301, trunk/t/compilers/data_json/to_parrot.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/compilers/data_json/to_parrot.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/compilers/data_json/to_parrot.t)
@@ -0,0 +1,731 @@
+#!perl
+# Copyright (C) 2001-2008, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( t . lib ../lib ../../lib );
+
+use Test::More;
+use Parrot::Test tests => 60;
+
+=head1 NAME
+
+t/compilers/data_json/to_parrot.t - test JSON to parrot conversions
+
+=head1 SYNOPSIS
+
+ % prove t/compilers/data_json/to_parrot.t
+
+=head1 DESCRIPTION
+
+Tests JSON->Parrot conversions.
+
+=cut
+
+json_dump_is( <<'JSON', <<'OUT', 'empty string' );
+""
+JSON
+"JSON" => ""
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string' );
+"json"
+JSON
+"JSON" => "json"
+OUT
+
+json_isnt( 'a', 'strings need quotes' );
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash "' );
+"\"json\""
+JSON
+"JSON" => "\"json\""
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash \\' );
+"\\json\\"
+JSON
+"JSON" => "\\json\\"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with /' );
+"\/json\/"
+JSON
+"JSON" => "/json/"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash b' );
+"\bjson\b"
+JSON
+"JSON" => "\bjson\b"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash f' );
+"\fjson\f"
+JSON
+"JSON" => "\fjson\f"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash n' );
+"\njson\n"
+JSON
+"JSON" => "\njson\n"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash r' );
+"\rjson\r"
+JSON
+"JSON" => "\rjson\r"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'string with backslash t' );
+"\tjson\t"
+JSON
+"JSON" => "\tjson\t"
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int' );
+1
+JSON
+"JSON" => 1
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int minus' );
+-1
+JSON
+"JSON" => -1
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int frac' );
+3.14
+JSON
+"JSON" => 3.14
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int frac minus' );
+-3.14
+JSON
+"JSON" => -3.14
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int exp' );
+1e+11
+JSON
+"JSON" => 100000000000
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int exp' );
+2e-12
+JSON
+"JSON" => 2e-12
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int exp minus' );
+-1e+11
+JSON
+"JSON" => -100000000000
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int exp minus' );
+-2e-12
+JSON
+"JSON" => -2e-12
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int frac exp' );
+3.14e+10
+JSON
+"JSON" => 31400000000
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'number int frac exp minus' );
+-3.14e+10
+JSON
+"JSON" => -31400000000
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'null' );
+null
+JSON
+"JSON" => null
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'true' );
+true
+JSON
+"JSON" => 1
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'false' );
+false
+JSON
+"JSON" => 0
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'empty array' );
+[]
+JSON
+"JSON" => ResizablePMCArray (size:0) [
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'simple array' );
+[1,2,3]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'simple array (check white spaces)' );
+[ 1 , 2 , 3 ]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of empty arrays' );
+[[],[],[]]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ ResizablePMCArray (size:0) [
+ ],
+ ResizablePMCArray (size:0) [
+ ],
+ ResizablePMCArray (size:0) [
+ ]
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of empty arrays (check white spaces)' );
+[ [] , [] , [] ]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ ResizablePMCArray (size:0) [
+ ],
+ ResizablePMCArray (size:0) [
+ ],
+ ResizablePMCArray (size:0) [
+ ]
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of arrays of integers' );
+[[1,2,3],[1,2,3],[1,2,3]]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ],
+ ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ],
+ ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ]
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of empty strings' );
+["","",""]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ "",
+ "",
+ ""
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of strings' );
+["string a","string b","string c"]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ "string a",
+ "string b",
+ "string c"
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of empty objects' );
+[{},{},{}]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ Hash {
+ },
+ Hash {
+ },
+ Hash {
+ }
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of empty objects (check white spaces)' );
+[ {} , {} , {} ]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ Hash {
+ },
+ Hash {
+ },
+ Hash {
+ }
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of objects with one element' );
+[{"one":1},{"two":2},{"three":3}]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ Hash {
+ "one" => 1
+ },
+ Hash {
+ "two" => 2
+ },
+ Hash {
+ "three" => 3
+ }
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of objects with one element (white space check)' );
+[ { "one" : 1 } , { "two" : 2 } , {"three" : 3} ]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ Hash {
+ "one" => 1
+ },
+ Hash {
+ "two" => 2
+ },
+ Hash {
+ "three" => 3
+ }
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'array of objects with multiple elements' );
+[{"one":1,"two":2,"three":3},{"one":1,"two":2,"three":3},{"one":1,"two":2,"three":3}]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ },
+ Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ },
+ Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ }
+]
+OUT
+
+json_dump_is(
+ <<'JSON', <<'OUT', 'array of boolean objects' );
+[false,true,null]
+JSON
+"JSON" => ResizablePMCArray (size:3) [
+ 0,
+ 1,
+ null
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'empty object' );
+{}
+JSON
+"JSON" => Hash {
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with one element' );
+{"one":1}
+JSON
+"JSON" => Hash {
+ "one" => 1
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with numbers' );
+{"one":1,"two":2,"three":3}
+JSON
+"JSON" => Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with strings' );
+{"one":"string a","two":"string b","three":"string c"}
+JSON
+"JSON" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with strings (white space check)' );
+{ "one" : "string a" , "two" : "string b" , "three" : "string c" }
+JSON
+"JSON" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with one empty object' );
+{"one":{}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with one object with one element' );
+{"one":{"one":1}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => 1
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with one object of various element with integers' );
+{"one":{"one":1,"two":2,"three":3}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with one object of various element with strings' );
+{"one":{"one":"string a","two":"string b","three":"string c"}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+ }
+}
+OUT
+
+json_dump_is(
+ <<'JSON', <<'OUT', 'object with one object of various element with strings (check white spaces)' );
+{ "one" : { "one" : "string a" , "two" : "string b" , "three" : "string c" } }
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with more than one empty object' );
+{"one":{},"two":{},"three":{}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ },
+ "three" => Hash {
+ },
+ "two" => Hash {
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with more than one object with one integer element' );
+{"one":{"one":1},"two":{"two":2},"three":{"three":3}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => 1
+ },
+ "three" => Hash {
+ "three" => 3
+ },
+ "two" => Hash {
+ "two" => 2
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with more than one object with various integer elements' );
+{"one":{"one":1,"two":2,"three":3},"two":{"one":1,"two":2,"three":3},"three":{"one":1,"two":2,"three":3}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ },
+ "three" => Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ },
+ "two" => Hash {
+ "one" => 1,
+ "three" => 3,
+ "two" => 2
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with more than one object with one string element' );
+{"one":{"one":"string a"},"two":{"two":"string b"},"three":{"three":"string c"}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => "string a"
+ },
+ "three" => Hash {
+ "three" => "string c"
+ },
+ "two" => Hash {
+ "two" => "string b"
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with more than one object with various integer elements' );
+{"one":{"one":"string a","two":"string b","three":"string c"},"two":{"one":"string a","two":"string b","three":"string c"},"three":{"one":"string a","two":"string b","three":"string c"}}
+JSON
+"JSON" => Hash {
+ "one" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+ },
+ "three" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+ },
+ "two" => Hash {
+ "one" => "string a",
+ "three" => "string c",
+ "two" => "string b"
+ }
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with empty array' );
+{"one":[]}
+JSON
+"JSON" => Hash {
+ "one" => ResizablePMCArray (size:0) [
+ ]
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with array' );
+{"one":[1,2,3]}
+JSON
+"JSON" => Hash {
+ "one" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ]
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with various arrays' );
+{"one":[1,2,3],"two":[1,2,3],"three":[1,2,3]}
+JSON
+"JSON" => Hash {
+ "one" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ],
+ "three" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ],
+ "two" => ResizablePMCArray (size:3) [
+ 1,
+ 2,
+ 3
+ ]
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'object with boolean values' );
+{"one":true,"two":false,"three":null}
+JSON
+"JSON" => Hash {
+ "one" => 1,
+ "three" => null,
+ "two" => 0
+}
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'example taken from the RFC' );
+{"Image":{"Width":800,"Height":600,"Title":"View from 15th Floor","Thumbnail":{"Url":"http://www.example.com/image/481989943","Height":125,"Width":"100"},"IDs":[116, 943, 234, 38793]}}
+JSON
+"JSON" => Hash {
+ "Image" => Hash {
+ "Height" => 600,
+ "IDs" => ResizablePMCArray (size:4) [
+ 116,
+ 943,
+ 234,
+ 38793
+ ],
+ "Thumbnail" => Hash {
+ "Height" => 125,
+ "Url" => "http://www.example.com/image/481989943",
+ "Width" => "100"
+ },
+ "Title" => "View from 15th Floor",
+ "Width" => 800
+ }
+}
+OUT
+
+json_dump_is(
+ <<'JSON', <<'OUT', 'another example taken from the RFC', todo => 'check number precision' );
+[{"precision":"zip","Latitude":37.7668,"Longitude":-122.3959,"Address":"","City":"SAN FRANCISCO","State":"CA","Zip":"94107","Country":"US"},{"precision":"zip","Latitude":37.371991,"Longitude":-122.026020,"Address":"","City":"SUNNYVALE", "State":"CA", "Zip":"94085", "Country":"US"}]
+JSON
+"JSON" => ResizablePMCArray (size:2) [
+ Hash {
+ "Address" => "",
+ "City" => "SAN FRANCISCO",
+ "Country" => "US",
+ "Latitude" => 37.7668,
+ "Longitude" => -122.3959,
+ "State" => "CA",
+ "Zip" => "94107",
+ "precision" => "zip"
+ },
+ Hash {
+ "Address" => "",
+ "City" => "SUNNYVALE",
+ "Country" => "US",
+ "Latitude" => 37.371991,
+ "Longitude" => -122.026020,
+ "State" => "CA",
+ "Zip" => "94085",
+ "precision" => "zip"
+ }
+]
+OUT
+
+json_dump_is( <<'JSON', <<'OUT', 'random object/array example' );
+[[],[{},{}],{"str":true},{"a":"1","b":{},"c":"2"},[true],false,{"e":[],"d":3}]
+JSON
+"JSON" => ResizablePMCArray (size:7) [
+ ResizablePMCArray (size:0) [
+ ],
+ ResizablePMCArray (size:2) [
+ Hash {
+ },
+ Hash {
+ }
+ ],
+ Hash {
+ "str" => 1
+ },
+ Hash {
+ "a" => "1",
+ "b" => Hash {
+ },
+ "c" => "2"
+ },
+ ResizablePMCArray (size:1) [
+ 1
+ ],
+ 0,
+ Hash {
+ "d" => 3,
+ "e" => ResizablePMCArray (size:0) [
+ ]
+ }
+]
+OUT
+
+# TT #1226 Need many more tests, exercising all aspects of http://www.json.org/
+
+sub json_dump_is {
+ my ( $code, $dumped, $reason, %args ) = @_;
+
+ chomp $code;
+ $code =~ s{("|\\)}{\\$1}g;
+ $code =~ s{\n}{\\n}g;
+
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+ return pir_output_is( <<"END_PIR", $dumped, $reason, %args );
+
+.sub test :main
+ load_language 'data_json'
+ load_bytecode 'dumper.pbc'
+
+ .local pmc JSON, eval, result
+ JSON = compreg 'data_json'
+ eval = JSON.'compile'("$code")
+ result = eval()
+ _dumper(result, "JSON")
+.end
+END_PIR
+
+}
+
+sub json_isnt {
+ my ( $code, $reason, %args ) = @_;
+
+ $code =~ s{("|\\)}{\\$1}g;
+ $code =~ s{\n}{\\n}g;
+
+ return pir_error_output_like( <<"END_PIR", qr/not a valid JSON value/, $reason, %args );
+
+.sub test :main
+ load_language 'data_json'
+
+ .local pmc JSON, eval, result
+
+ JSON = compreg 'data_json'
+ eval = JSON.'compile'("$code")
+ result = eval()
+.end
+END_PIR
+
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/compilers/imcc/imcpasm/optc.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/imcpasm/optc.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/imcpasm/optc.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!perl
-# Copyright (C) 2005, Parrot Foundation.
+# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
use strict;
@@ -242,8 +242,8 @@
@pcc_sub_call_\d:
set_args
set_p_pc (P\d+), foo
- get_results
invokecc \2
+ get_results
noop
end
foo:
@@ -424,4 +424,3 @@
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4:
-
Modified: branches/ops_pct/t/compilers/imcc/reg/spill.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/reg/spill.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/reg/spill.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/imcc/syn/file.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/file.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/file.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
use strict;
@@ -400,7 +400,7 @@
$err_msg =~ s/\r//g if $^O =~ /^(MSWin32|msys)$/i;
is( $err_msg, << "OUT", 'including a non-existent file' );
error:imcc:$enoent_err_msg
-\tin file '$temp_pir' line 2
+\tin file '$temp_pir' line 1
OUT
}
Modified: branches/ops_pct/t/compilers/imcc/syn/labels.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/labels.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/labels.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/imcc/syn/objects.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/objects.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/objects.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/imcc/syn/op.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/op.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/op.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/regressions.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/regressions.t Wed May 5 08:45:29 2010 (r46302)
@@ -6,7 +6,7 @@
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 20;
+use Parrot::Test tests => 21;
pir_error_output_like( <<'CODE', <<'OUT', 'invalid get_results syntax');
.sub main :main
@@ -228,6 +228,14 @@
CODE
OUT
+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: branches/ops_pct/t/compilers/imcc/syn/scope.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/scope.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/scope.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/imcc/syn/subflags.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/subflags.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/subflags.t Wed May 5 08:45:29 2010 (r46302)
@@ -69,7 +69,7 @@
isa_ok($P30, 'Sub', ":method sub found w/.const")
$P0 = get_global 'method1'
$I0 = isnull $P0
- todo($I0, ":method sub not found in namespace")
+ ok($I0, ":method sub not found in namespace")
## :subid subs
.const 'Sub' $P40 = 'subid1'
Modified: branches/ops_pct/t/compilers/imcc/syn/tail.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/tail.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/tail.t Wed May 5 08:45:29 2010 (r46302)
@@ -23,8 +23,8 @@
.const 'Sub' f = "_floor"
.const 'Sub' c = "_funcall"
set_args "0,0,0", f, $P1, $P2
- get_results "0,0", $P3, $P4
invokecc c
+ get_results "0,0", $P3, $P4
print "_floor returned "
print 2 # TODO argcP
print " values, "
@@ -34,8 +34,8 @@
print ".\n"
.const 'Sub' s = "_fib_step"
set_args "0,0,0", s, $P1, $P2
- get_results "0,0,0", $P3, $P4, $P5
invokecc c
+ get_results "0,0,0", $P3, $P4, $P5
print "_fib_step returned "
print 3 # TODO argcP
print " values, "
Modified: branches/ops_pct/t/compilers/imcc/syn/veracity.t
==============================================================================
--- branches/ops_pct/t/compilers/imcc/syn/veracity.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/imcc/syn/veracity.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/pct/complete_workflow.t
==============================================================================
--- branches/ops_pct/t/compilers/pct/complete_workflow.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pct/complete_workflow.t Wed May 5 08:45:29 2010 (r46302)
@@ -94,7 +94,7 @@
# thingy() is executed before TOP.
# So setting $?MY_OUR_VAR here won't affect the generated PAST
our $?MY_OUR_VAR := 'was set in method TOP';
- make $( $<thingy> );
+ make $<thingy>.ast;
}
method thingy($/) {
@@ -126,7 +126,7 @@
method TOP($/) {
our $?MY_OUR_VAR;
- my $past := $( $<thingy> ); # $?MY_OUR_VAR has been set in thingy()
+ my $past := $<thingy>.ast; # $?MY_OUR_VAR has been set in thingy()
$past[0][0].value( 'our var ' ~ $?MY_OUR_VAR );
make $past;
@@ -181,18 +181,18 @@
method TOP($/) {
my $past := PAST::Stmts.new();
- $past.push( $( $<scope_a> ) );
- $past.push( $( $<scope_b> ) );
+ $past.push( $<scope_a>.ast );
+ $past.push( $<scope_b>.ast );
make $past;
}
method scope_a($/) {
- make $( $<thingy> );
+ make $<thingy>.ast;
}
method scope_b($/) {
- make $( $<thingy> );
+ make $<thingy>.ast;
}
method INIT_SCOPE_A($/) {
@@ -244,7 +244,7 @@
method TOP($/) {
my $past := PAST::Stmts.new();
for $<thingy_or_stuff> {
- $past.push( $( $_ ) );
+ $past.push( $_.ast );
}
our $?MY_OUR_VAR;
@@ -254,7 +254,7 @@
}
method thingy_or_stuff($/,$key) {
- make $( $/{$key} );
+ make $/{$key}.ast;
}
method THINGY($/) {
@@ -310,7 +310,7 @@
my $PARROT = "$BUILD_DIR/parrot$PConfig{exe}";
my $PGE_LIBRARY = "$BUILD_DIR/runtime/parrot/library/PGE";
my $PERL6GRAMMAR = "$PGE_LIBRARY/Perl6Grammar.pbc";
- my $NQP = "$BUILD_DIR/compilers/nqp/nqp.pbc";
+ my $NQP = "$BUILD_DIR/parrot-nqp.pbc";
my $tempfile_opts = {
DIR => $TEST_DIR,
Modified: branches/ops_pct/t/compilers/pge/02-match.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/02-match.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/02-match.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/pge/03-optable.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/03-optable.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/03-optable.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/pge/04-compile.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/04-compile.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/04-compile.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2007-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/pge/p5regex/p5rx.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/p5regex/p5rx.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/p5regex/p5rx.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!./parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
# vi: ft=pir
@@ -696,7 +696,7 @@
# NOTE: there can be multiple tabs between entries, so skip until
# we have something.
# remove the trailing newline from record
- chopn test_line, 1
+ test_line = chopn test_line, 1
$P1 = split "\t", test_line
@@ -825,27 +825,27 @@
target1:
$I0 = index target, '\n'
if $I0 == -1 goto target2
- substr target, $I0, 2, "\n"
+ target = replace target, $I0, 2, "\n"
goto target1
target2:
$I0 = index target, '\r'
if $I0 == -1 goto target3
- substr target, $I0, 2, "\r"
+ target = replace target, $I0, 2, "\r"
goto target2
target3:
$I0 = index target, '\e'
if $I0 == -1 goto target4
- substr target, $I0, 2, "\e"
+ target = replace target, $I0, 2, "\e"
goto target3
target4:
$I0 = index target, '\t'
if $I0 == -1 goto target5
- substr target, $I0, 2, "\t"
+ target = replace target, $I0, 2, "\t"
goto target4
target5:
$I0 = index target, '\f'
if $I0 == -1 goto target6
- substr target, $I0, 2, "\f"
+ target = replace target, $I0, 2, "\f"
goto target5
target6:
# handle \xHH, hex escape.
@@ -859,7 +859,7 @@
if $I2 > $I1 goto target7
$S0 = substr target, $I2, 2
$S1 = hex_chr($S0)
- substr target, $I0, 4, $S1
+ target = replace target, $I0, 4, $S1
inc x_pos
goto target6
Modified: branches/ops_pct/t/compilers/pge/perl6regex/01-regex.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/perl6regex/01-regex.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/perl6regex/01-regex.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!./parrot
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -237,8 +237,8 @@
# remove /'s
$S0 = substr result, 0, 1
if $S0 != "/" goto bad_line
- substr result, 0, 1, ''
- substr result, -1, 1, ''
+ result = replace result, 0, 1, ''
+ result = replace result, -1, 1, ''
$I0 = index $S1, result
if $I0 == -1 goto is_nok
@@ -276,12 +276,13 @@
.local string message
get_results '0', exception
message = exception
+ print '# '
say message
# remove /'s
$S0 = substr result, 0, 1
if $S0 != "/" goto bad_error
- substr result, 0, 1, ''
- substr result, -1, 1, ''
+ result = replace result, 0, 1, ''
+ result = replace result, -1, 1, ''
$I0 = index message, result
if $I0 == -1 goto bad_error
ok = 1
@@ -313,7 +314,7 @@
# NOTE: there can be multiple tabs between entries, so skip until
# we have something.
# remove the trailing newline from record
- chopn test_line, 1
+ test_line = chopn test_line, 1
$P1 = split "\t", test_line
$I0 = elements $P1 # length of array
@@ -441,27 +442,27 @@
target1:
$I0 = index target, '\n'
if $I0 == -1 goto target2
- substr target, $I0, 2, "\n"
+ target = replace target, $I0, 2, "\n"
goto target1
target2:
$I0 = index target, '\r'
if $I0 == -1 goto target3
- substr target, $I0, 2, "\r"
+ target = replace target, $I0, 2, "\r"
goto target2
target3:
$I0 = index target, '\e'
if $I0 == -1 goto target4
- substr target, $I0, 2, "\e"
+ target = replace target, $I0, 2, "\e"
goto target3
target4:
$I0 = index target, '\t'
if $I0 == -1 goto target5
- substr target, $I0, 2, "\t"
+ target = replace target, $I0, 2, "\t"
goto target4
target5:
$I0 = index target, '\f'
if $I0 == -1 goto target6
- substr target, $I0, 2, "\f"
+ target = replace target, $I0, 2, "\f"
goto target5
target6:
# handle \xHH, hex escape.
@@ -474,7 +475,7 @@
($S0, $I2) = $P0(target, 'x', $I1)
$S3 = substr target, $I1, $I2
$I2 += 2
- substr target, $I0, $I2, $S0
+ target = replace target, $I0, $I2, $S0
goto target6
target7:
.return (target)
Modified: branches/ops_pct/t/compilers/pge/pge-hs.t
==============================================================================
--- branches/ops_pct/t/compilers/pge/pge-hs.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/pge/pge-hs.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/tge/basic.t
==============================================================================
--- branches/ops_pct/t/compilers/tge/basic.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/tge/basic.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/compilers/tge/parser.t
==============================================================================
--- branches/ops_pct/t/compilers/tge/parser.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/compilers/tge/parser.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/configure/testlib/adefectivefoobar
==============================================================================
--- branches/ops_pct/t/configure/testlib/adefectivefoobar Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/configure/testlib/adefectivefoobar Wed May 5 08:45:29 2010 (r46302)
@@ -40,7 +40,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/t/configure/testlib/bdefectivefoobar
==============================================================================
--- branches/ops_pct/t/configure/testlib/bdefectivefoobar Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/configure/testlib/bdefectivefoobar Wed May 5 08:45:29 2010 (r46302)
@@ -50,7 +50,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/t/configure/testlib/cdefectivefoobar
==============================================================================
--- branches/ops_pct/t/configure/testlib/cdefectivefoobar Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/configure/testlib/cdefectivefoobar Wed May 5 08:45:29 2010 (r46302)
@@ -51,7 +51,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/t/configure/testlib/ddefectivefoobar
==============================================================================
--- branches/ops_pct/t/configure/testlib/ddefectivefoobar Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/configure/testlib/ddefectivefoobar Wed May 5 08:45:29 2010 (r46302)
@@ -42,7 +42,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/t/configure/testlib/verbosefoobar
==============================================================================
--- branches/ops_pct/t/configure/testlib/verbosefoobar Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/configure/testlib/verbosefoobar Wed May 5 08:45:29 2010 (r46302)
@@ -44,7 +44,6 @@
auto::jit
auto::cpu
auto::funcptr
-auto::cgoto
auto::inline
auto::gc
auto::memalign
Modified: branches/ops_pct/t/distro/file_metadata.t
==============================================================================
--- branches/ops_pct/t/distro/file_metadata.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/distro/file_metadata.t Wed May 5 08:45:29 2010 (r46302)
@@ -32,7 +32,15 @@
=cut
-my $cmd = -d '.svn' ? 'svn' : 'svk';
+BEGIN {
+ unless ( -e 'DEVELOPING' ) {
+ plan skip_all => "Don't bother running these in a tarball.";
+ exit(0);
+ }
+}
+
+
+my $cmd = 'svn';
my @git_svn_metadata; # set in BEGIN block
# how many files to check at a time. May have to lower this when we run
@@ -237,7 +245,7 @@
plan skip_all => q{git svn file metadata not retained};
}
}
- elsif ( !( (-d '.svn' && `svn info .`) or `svk info .` ) ) {
+ elsif ( ! (-d '.svn' && `svn info .`) ) {
plan skip_all => 'not a working copy';
}
else { plan tests => 5 }
@@ -245,7 +253,7 @@
#
# Given a list, a count, and a sub, process that list count elements
-# at a time. (do this to speed up execution for the svn/svk commands)
+# at a time. (do this to speed up execution for the svn commands)
#
sub at_a_time {
Deleted: branches/ops_pct/t/distro/meta_yml.t
==============================================================================
--- branches/ops_pct/t/distro/meta_yml.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,39 +0,0 @@
-#! perl
-# Copyright (C) 2008-2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/distro/meta_yml.t - check sanity of the META.yml file
-
-=head1 SYNOPSIS
-
- % prove t/distro/meta_yml.t
-
-=head1 DESCRIPTION
-
-Checks the sanitiy of the file META.yml, which gives information
-on a CPAN distribution.
-
-=cut
-
-use strict;
-use warnings;
-use 5.008;
-
-use Test::More;
-
-# Test::CPAN::Meta complains about 'artistic2' license.
-# So let's wait for version 0.08
-# See http://rt.cpan.org/Public/Bug/Display.html?id=34130
-eval "use Test::CPAN::Meta 0.08";
-plan skip_all => "Test::CPAN::Meta 0.08 required for testing META.yml" if $@;
-
-meta_yaml_ok();
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/dynoplibs/math.t
==============================================================================
--- branches/ops_pct/t/dynoplibs/math.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynoplibs/math.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/dynoplibs/obscure.t
==============================================================================
--- branches/ops_pct/t/dynoplibs/obscure.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynoplibs/obscure.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Copied: branches/ops_pct/t/dynpmc/file.t (from r46301, trunk/t/dynpmc/file.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/dynpmc/file.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/dynpmc/file.t)
@@ -0,0 +1,338 @@
+#! perl
+# Copyright (C) 2001-2006, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+
+use Test::More;
+use Parrot::Test tests => 9;
+
+use Parrot::Config;
+
+use Cwd;
+use File::Temp;
+use File::Spec::Functions;
+
+my $tempdir = File::Temp::tempdir( CLEANUP => 1 );
+
+our ( $MSWin32, $cygwin );
+$MSWin32 = 1 if $^O =~ m!MSWin32!;
+$cygwin = 1 if $^O =~ m!cygwin!;
+
+=head1 NAME
+
+t/pmc/file.t - Files functions
+
+=head1 SYNOPSIS
+
+ % prove t/pmc/file.t
+
+=head1 DESCRIPTION
+
+Tests the C<File> PMC.
+
+=cut
+
+my $xpto = catdir( $tempdir, 'xpto' );
+mkdir $xpto unless -d $xpto;
+
+my $otpx = catfile( $xpto, 'otpx' );
+
+open my $fh, '>', $otpx or die $!;
+print $fh 'xpto';
+close $fh;
+
+# test is_dir
+pir_output_is( <<"CODE", <<"OUT", "Test is_dir" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ \$S1 = '$xpto'
+ \$I1 = \$P1."is_dir"(\$S1)
+
+ if \$I1 goto ok1
+ print "not "
+
+ok1:
+ print "ok 1\\n"
+
+ \$S1 = '$otpx'
+ \$I1 = \$P1."is_dir"(\$S1)
+ \$I1 = !\$I1
+
+ if \$I1 goto ok2
+ print "not "
+
+ok2:
+ print "ok 2\\n"
+
+ end
+.end
+CODE
+ok 1
+ok 2
+OUT
+
+# test is_dir
+pir_error_output_like( <<"CODE", <<"OUT", "Test is_dir error" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ #make a filename that's long enough to cause lstat to fail
+ \$I0 = 1000
+loop:
+ \$S0 = concat \$S0, "1234567890"
+ \$I0 = \$I0 - 1
+ if \$I0 goto loop
+
+ \$I1 = \$P1."is_dir"(\$S0)
+
+ end
+.end
+CODE
+/^[\\w \t\r\n]+current instr\.:/
+OUT
+
+# test is_file
+pir_output_is( <<"CODE", <<"OUT", "Test is_file" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ \$S1 = '$xpto'
+ \$I1 = \$P1."is_file"(\$S1)
+ \$I1 = !\$I1
+
+ if \$I1 goto ok1
+ print "not "
+
+ok1:
+ print "ok 1\\n"
+
+ \$S1 = '$otpx'
+ \$I1 = \$P1."is_file"(\$S1)
+
+ if \$I1 goto ok2
+ print "not "
+
+ok2:
+ print "ok 2\\n"
+
+ end
+.end
+CODE
+ok 1
+ok 2
+OUT
+
+# test is_file
+pir_error_output_like( <<"CODE", <<"OUT", "Test is_file error" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ #make a filename that's long enough to cause lstat to fail
+ \$I0 = 1000
+loop:
+ \$S0 = concat \$S0, "1234567890"
+ \$I0 = \$I0 - 1
+ if \$I0 goto loop
+
+ \$I1 = \$P1."is_file"(\$S0)
+
+ end
+.end
+CODE
+/^[\\w \t\r\n]+current instr\.:/
+OUT
+
+SKIP: {
+ skip "Links not available under Windows", 1 if $MSWin32;
+
+ my $lotpx = catfile( $xpto, 'lotpx' );
+ symlink $otpx, $lotpx;
+
+ # test is_link
+ pir_output_is( <<"CODE", <<"OUT", "Test is_link with links to files" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ \$S1 = '$lotpx'
+ \$I1 = \$P1."is_link"(\$S1)
+
+ if \$I1 goto ok1
+ print "not "
+ok1:
+ print "ok 1\\n"
+
+ \$S1 = '$otpx'
+ \$I1 = \$P1."is_link"(\$S1)
+ \$I1 = !\$I1
+ if \$I1 goto ok2
+ print "not "
+ok2:
+ print "ok 2\\n"
+ end
+.end
+CODE
+ok 1
+ok 2
+OUT
+
+}
+
+SKIP: {
+ skip "Links not available under Windows", 1 if $MSWin32;
+
+ my $xptol = catdir( $xpto, 'xptol' );
+ symlink $xpto, $xptol;
+
+ # test is_link
+ pir_output_is( <<"CODE", <<"OUT", "Test is_link with links to directories" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+
+ \$S1 = '$xptol'
+ \$I1 = \$P1."is_link"(\$S1)
+
+ if \$I1 goto ok1
+ print "not "
+ok1:
+ print "ok 1\\n"
+
+ \$S1 = '$xpto'
+ \$I1 = \$P1."is_link"(\$S1)
+ \$I1 = !\$I1
+ if \$I1 goto ok2
+ print "not "
+ok2:
+ print "ok 2\\n"
+ end
+.end
+CODE
+ok 1
+ok 2
+OUT
+}
+
+my $otpxcopy = catdir( $xpto, 'otpxcopy' );
+
+# test copy
+pir_output_is( <<"CODE", <<"OUT", "Test copy for files" );
+.sub main :main
+ \$S1 = '$otpx'
+ \$S2 = '$otpxcopy'
+
+ \$P0 = loadlib 'file'
+ \$P0 = loadlib 'os'
+ \$P1 = new ['File']
+ \$P2 = new ['OS']
+
+ \$P1."copy"(\$S1,\$S2)
+ print "ok\\n"
+
+ \$P3 = \$P2."stat"(\$S1)
+ \$P4 = \$P2."stat"(\$S2)
+
+ \$I1 = \$P3[7]
+ \$I2 = \$P4[7]
+
+ if \$I1 == \$I2 goto ok
+ print "not "
+ok:
+ print "ok\\n"
+
+ end
+.end
+CODE
+ok
+ok
+OUT
+
+# test rename
+SKIP: {
+ skip 'file exists', 1 if $MSWin32;
+
+ pir_output_is( <<"CODE", <<"OUT", "Test rename for files" );
+.sub main :main
+ \$S1 = '$otpx'
+ \$S2 = '$otpxcopy'
+
+ \$P0 = loadlib 'file'
+ \$P0 = loadlib 'os'
+ \$P1 = new ['File']
+ \$P2 = new ['OS']
+
+ \$P3 = \$P2."stat"(\$S1)
+ \$I1 = \$P3[7]
+
+ \$P1."rename"(\$S1,\$S2)
+ print "ok\\n"
+
+ \$P4 = \$P2."stat"(\$S2)
+ \$I2 = \$P4[7]
+
+ if \$I1 == \$I2 goto ok
+ print "not "
+ok:
+ print "ok\\n"
+
+ end
+.end
+CODE
+ok
+ok
+OUT
+}
+
+my $bad_file = catfile( $xpto, 'not a file' );
+
+# test exists
+pir_output_is( <<"CODE", <<"OUT", "Test rename for files" );
+.sub main :main
+ \$P0 = loadlib 'file'
+ \$P1 = new ['File']
+ \$I1 = \$P1.'exists'( '$otpxcopy' )
+
+ if \$I1 goto file_exists
+ print "not "
+
+ file_exists:
+ print "ok 1 - file exists\\n"
+
+ \$I1 = \$P1.'exists'( '$xpto' )
+
+ if \$I1 goto dir_exists
+ print "not "
+
+ dir_exists:
+ print "ok 2 - directory exists\\n"
+
+ \$I1 = \$P1.'exists'( '$bad_file' )
+
+ if \$I1 == 0 goto file_does_not_exist
+ print "not "
+
+ file_does_not_exist:
+ print "ok 3 - file does not exist\\n"
+
+ end
+.end
+CODE
+ok 1 - file exists
+ok 2 - directory exists
+ok 3 - file does not exist
+OUT
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/dynpmc/foo2.t
==============================================================================
--- branches/ops_pct/t/dynpmc/foo2.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynpmc/foo2.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Deleted: branches/ops_pct/t/dynpmc/gdbmhash.t
==============================================================================
--- branches/ops_pct/t/dynpmc/gdbmhash.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,441 +0,0 @@
-#! parrot
-# Copyright (C) 2005-2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/dynpmc/gdbmhash.t - test the GDBMHash PMC
-
-=head1 SYNOPSIS
-
- % parrot t/dynpmc/gdbmhash.t
-
-=head1 DESCRIPTION
-
-Tests the C<GDBMHash> PMC.
-
-=cut
-
-.sub main
- .include 'test_more.pir'
- .include 'iglobals.pasm'
- .local pmc config_hash, interp
-
- plan(48)
- interp = getinterp
- config_hash = interp[.IGLOBALS_CONFIG_HASH]
- $S0 = config_hash['has_gdbm']
- unless $S0 goto no_gdbm
-
- test_typeof()
- test_interface()
- test_get_integer()
- test_get_bool()
- test_modify_an_entry()
- test_exists_keyed()
- test_set_string_with_string_key()
- test_set_string_with_pmc_key()
- test_set_pmc_with_string_key()
- test_set_pmc_with_pmc_key()
- test_set_intval_with_string_key()
- test_set_floatval_with_pmc_key()
- test_delete_keyed()
- .return()
- no_gdbm:
- skip(48, 'No gdbm library available')
-.end
-
-.sub unlink
- .param string filename
- new $P0, 'OS'
- push_eh _handler
- $P0.'rm'(filename)
- .return ()
- _handler:
- .local pmc e
- .get_results (e)
- printerr "# Cannot unlink "
- printerr filename
- printerr " ("
- printerr e
- printerr ")\n"
-.end
-
-.sub test_typeof
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- .local string type
- type = typeof hash_1
- is(type, 'GDBMHash', 'typeof')
-.end
-
-.sub test_interface
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- .local int bool1
- does bool1, hash_1, "scalar"
- is(bool1, 0, 'check whether interface is done')
- does bool1, hash_1, "hash"
- is(bool1, 1, 'check whether interface is done')
- does bool1, hash_1, "no_interface"
- is(bool1, 0, 'check whether interface is done')
-.end
-
-.sub test_get_integer
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- .local int hash_size
- hash_size = hash_1
- is(hash_size, 0, 'An unitialized GDBMHash has size 0')
-
- hash_1 = "gdbm_hash_1"
- hash_size = hash_1
- is(hash_size, 0, 'An GDBMHash for a new file has size 0')
-
- hash_1["key1"] = "val1"
- hash_size = hash_1
- is(hash_size, 1, 'After one assignment GDBMHash has size 1')
-
- hash_1["key2"] = "val2"
- hash_size = hash_1
- is(hash_size, 2, 'After two assignments GDBMHash has size 2')
-
- hash_1["key3"] = "val3"
- hash_1["key4"] = "val4"
- hash_1["key5"] = "val5"
- hash_1["key6"] = "val6"
- hash_1["key7"] = "val7"
- hash_1["key8"] = "val8"
- hash_1["key9"] = "val9"
- hash_1["key10"] = "val10"
- hash_1["key11"] = "val11"
- hash_1["key12"] = "val12"
- hash_1["key13"] = "val13"
- hash_1["key14"] = "val14"
- hash_1["key15"] = "val15"
- hash_size = hash_1
- is(hash_size, 15, 'After 15 assignments GDBMHash has size 15')
-
- delete hash_1["key7"]
- delete hash_1["key9"]
-
- hash_size = hash_1
- is(hash_size, 13, 'After 15 assignments and 2 deletes GDBMHash has size 13')
-
- hash_1."close"()
- unlink('gdbm_hash_1')
-.end
-
-.sub test_get_bool
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- if hash_1 goto HASH1_IS_1
- ok(1, 'An uninitialized GDBMHash is not')
-HASH1_IS_1:
-
- hash_1 = "gdbm_hash_2"
- if hash_1 goto HASH1_IS_2
- ok(1, 'A GDBMHash for a new file is not')
-HASH1_IS_2:
-
- hash_1["key1"] = "val1"
- if hash_1 goto HASH1_IS_3
- ok(0, 'After one insert the GDBMHash is not')
-HASH1_IS_3:
- ok(1, 'After one insert the GDBMHash is')
-
- hash_1."close"()
- unlink('gdbm_hash_2')
-.end
-
-# The value is a STRING, with umlaut
-# The key used for insertion is a STRING.
-.sub test_modify_an_entry
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_3"
-
- .local pmc val_pmc
-
- hash_1["Schluessel"] = "Wert urspruenglich"
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert urspruenglich', 'modify an entry')
- hash_1["Schluessel"] = "Wert geaendert"
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert geaendert', 'modify an entry')
- hash_1["Schluessel"] = "Wert nocheinmal geaendert"
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert nocheinmal geaendert', 'modify an entry')
- hash_1["Schluessel"] = "Wert urspruenglich"
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert urspruenglich', 'modify an entry')
-
- hash_1."close"()
- unlink('gdbm_hash_3')
-.end
-
-# The value is a STRING.
-# The key used for insertion is a STRING.
-.sub test_exists_keyed
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_4"
-
- hash_1["Schluessel"] = "Wert"
-
- .local int exist_flag
- exist_flag = exists hash_1["a"]
- is(exist_flag, 0, 'exists keyed')
- exist_flag = exists hash_1["Schluessel"]
- is(exist_flag, 1, 'exists keyed')
-
- .local pmc key_out
- key_out = new 'String'
- key_out = "b"
- exist_flag = exists hash_1[key_out]
- is(exist_flag, 0, 'exists keyed')
- key_out = "Schluessel"
- exist_flag = exists hash_1[key_out]
- is(exist_flag, 1, 'exists keyed')
-
- hash_1."close"()
- unlink('gdbm_hash_4')
-.end
-
-# The value is a STRING.
-# The key used for insertion is a STRING.
-.sub test_set_string_with_string_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_5"
-
- hash_1["Schluessel"] = "Wert"
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, 'Wert', 'set string with string key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert', 'set string with string key')
- .local pmc key_out
- key_out = new 'String'
- key_out = "Schluessel"
- val_string = hash_1[key_out]
- is(val_string, 'Wert', 'set string with string key')
- val_pmc = hash_1[key_out]
- is(val_pmc, 'Wert', 'set string with string key')
-
- hash_1."close"()
- unlink('gdbm_hash_5')
-.end
-
-# The value is a STRING.
-# The key used for insertion is a PMC.
-.sub test_set_string_with_pmc_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_6"
-
- .local pmc key_pmc
- key_pmc = new 'String'
- key_pmc = "Schluessel"
- hash_1[key_pmc] = "Wert"
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, 'Wert', 'set string with pmc key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert', 'set string with pmc key')
- .local pmc key2
- key2 = new 'String'
- key2 = "Schluessel"
- val_string = hash_1[key2]
- is(val_string, 'Wert', 'set string with pmc key')
- val_pmc = hash_1[key2]
- is(val_pmc, 'Wert', 'set string with pmc key')
-
- hash_1."close"()
- unlink('gdbm_hash_6')
-.end
-
-# The value is a PMC.
-# The key used for insertion is a STRING.
-.sub test_set_pmc_with_string_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_7"
-
- .local pmc val
- val = new 'String'
- val = "Wert"
- hash_1["Schluessel"] = val
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, 'Wert', 'set pmc with string key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert', 'set pmc with string key')
- .local pmc key_out
- key_out = new 'String'
- key_out = "Schluessel"
- val_string = hash_1[key_out]
- is(val_string, 'Wert', 'set pmc with string key')
- val_pmc = hash_1[key_out]
- is(val_pmc, 'Wert', 'set pmc with string key')
-
- hash_1."close"()
- unlink('gdbm_hash_7')
-.end
-
-# The value is a PMC.
-# The key used for insertion is a PMC.
-.sub test_set_pmc_with_pmc_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_8"
-
- .local pmc val
- val = new 'String'
- val = "Wert"
- .local pmc key_pmc
- key_pmc = new 'String'
- key_pmc = "Schluessel"
- hash_1[key_pmc] = val
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, 'Wert', 'set pmc with pmc key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, 'Wert', 'set pmc with pmc key')
- .local pmc key2
- key2 = new 'String'
- key2 = "Schluessel"
- val_string = hash_1[key2]
- is(val_string, 'Wert', 'set pmc with pmc key')
- val_pmc = hash_1[key2]
- is(val_pmc, 'Wert', 'set pmc with pmc key')
-
- hash_1."close"()
- unlink('gdbm_hash_8')
-.end
-
-# The value is an INTVAL
-# The key used for insertion is a STRING.
-.sub test_set_intval_with_string_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_9"
-
- hash_1["Schluessel"] = -11012005
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, -11012005, 'set intval with a string key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, -11012005, 'set intval with a string key')
- .local pmc key_out
- key_out = new 'String'
- key_out = "Schluessel"
- val_string = hash_1[key_out]
- is(val_string, -11012005, 'set intval with a string key')
- val_pmc = hash_1[key_out]
- is(val_pmc, -11012005, 'set intval with a string key')
-
- hash_1."close"()
- unlink('gdbm_hash_9')
-.end
-
-# The value is a FLOATVAL.
-# The key used for insertion is a PMC.
-.sub test_set_floatval_with_pmc_key
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_10"
-
- .local pmc key_pmc
- key_pmc = new 'String'
- key_pmc = "Schluessel"
- hash_1[key_pmc] = -1101.2005
-
- .local pmc val_pmc
- .local string val_string
-
- val_string = hash_1["Schluessel"]
- is(val_string, -1101.2005, 'set float with a pmc key')
- val_pmc = hash_1["Schluessel"]
- is(val_pmc, -1101.2005, 'set float with a pmc key')
- .local pmc key2
- key2 = new 'String'
- key2 = "Schluessel"
- val_string = hash_1[key2]
- is(val_string, -1101.2005, 'set float with a pmc key')
- val_pmc = hash_1[key2]
- is(val_pmc, -1101.2005, 'set float with a pmc key')
-
- hash_1."close"()
- unlink('gdbm_hash_10')
-.end
-
-.sub test_delete_keyed
- .local pmc gdbmhash_lib
- gdbmhash_lib = loadlib "gdbmhash"
- .local pmc hash_1
- hash_1 = new "GDBMHash"
- hash_1 = "gdbm_hash_11"
-
- .local int exist_flag
- .local int hash_size
-
- exist_flag = exists hash_1["a"]
- is(exist_flag, 0, 'delete keyed')
-
- hash_1["a"] = "A"
- exist_flag = exists hash_1["a"]
- is(exist_flag, 1, 'delete keyed')
-
- delete hash_1["a"]
- exist_flag = exists hash_1["a"]
- is(exist_flag, 0, 'delete keyed')
-
- hash_1."close"()
- unlink('gdbm_hash_11')
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/t/dynpmc/gziphandle.t (from r46301, trunk/t/dynpmc/gziphandle.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/dynpmc/gziphandle.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/dynpmc/gziphandle.t)
@@ -0,0 +1,66 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/dynpmc/gziphandle.t - test the GzipHandle PMC
+
+=head1 SYNOPSIS
+
+ % parrot t/dynpmc/gziphandle.t
+
+=head1 DESCRIPTION
+
+Tests the C<GzipHandle> PMC, a zlib wrapper.
+
+=cut
+
+.sub 'main' :main
+ .include 'test_more.pir'
+ .include 'iglobals.pasm'
+ .local pmc config_hash, interp
+ .local int num_tests
+
+ num_tests = 3
+ plan(num_tests)
+ interp = getinterp
+ config_hash = interp[.IGLOBALS_CONFIG_HASH]
+ $S0 = config_hash['has_zlib']
+ unless $S0 goto no_zlib
+
+ $P0 = loadlib 'gziphandle'
+ test_handle()
+ test_version()
+ .return()
+
+ no_zlib:
+ skip(num_tests, 'No zlib library available')
+ .return()
+.end
+
+
+.sub 'test_handle'
+ $P0 = new 'GzipHandle'
+ $S0 = typeof $P0
+ is($S0, 'GzipHandle', 'GzipHandle typeof')
+ $I0 = does $P0, 'Handle'
+ ok($I0, 'does Handle')
+.end
+
+.sub 'test_version'
+ $P0 = new 'GzipHandle'
+ $S0 =$P0.'version'()
+ diag($S0)
+ $I0 = index $S0, '1.'
+ is($I0, 0, 'zlib version')
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
+
+
Copied: branches/ops_pct/t/dynpmc/os.t (from r46301, trunk/t/dynpmc/os.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/dynpmc/os.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/dynpmc/os.t)
@@ -0,0 +1,463 @@
+#! perl
+# Copyright (C) 2001-2009, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test tests => 16;
+use Parrot::Config;
+use Cwd;
+use File::Spec;
+
+my $MSWin32 = $^O =~ m!MSWin32!;
+my $cygwin = $^O =~ m!cygwin!;
+my $solaris = $^O =~ m!solaris!;
+my $MSVC = $PConfig{cc} =~ m/\bcl(?:\.exe)?/i;
+
+=head1 NAME
+
+t/pmc/os.t - Files and Dirs
+
+=head1 SYNOPSIS
+
+ % prove t/pmc/os.t
+
+=head1 DESCRIPTION
+
+Tests the C<OS> PMC.
+
+=cut
+
+END {
+ # Clean up environment on exit
+ rmdir "xpto" if -d "xpto";
+ unlink "xpto" if -f "xpto";
+}
+
+# test 'cwd'
+my $cwd = File::Spec->canonpath(getcwd);
+if (File::Spec->case_tolerant(substr($cwd,0,2))) {
+ $cwd = lc($cwd);
+ pir_output_is( <<'CODE', <<"OUT", 'Test cwd' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $S1 = $P1."cwd"()
+ $S2 = downcase $S1
+ print $S2
+ print "\n"
+ end
+.end
+CODE
+$cwd
+OUT
+}
+else {
+ pir_output_is( <<'CODE', <<"OUT", 'Test cwd' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $S1 = $P1."cwd"()
+ print $S1
+ print "\n"
+ end
+.end
+CODE
+$cwd
+OUT
+}
+
+# TEST chdir
+chdir "src";
+my $upcwd = File::Spec->canonpath(getcwd);
+chdir '..';
+
+if (File::Spec->case_tolerant(substr($cwd,0,2))) {
+ $cwd = lc($cwd);
+ $upcwd = lc($upcwd);
+
+ pir_output_is( <<'CODE', <<"OUT", 'Test chdir' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "src"
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ $S2 = downcase $S1
+ say $S2
+
+ $S1 = ".."
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ $S2 = downcase $S1
+ say $S2
+
+ end
+.end
+CODE
+$upcwd
+$cwd
+OUT
+}
+else {
+ pir_output_is( <<'CODE', <<"OUT", 'Test chdir' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "src"
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ say $S1
+
+ $S1 = ".."
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ say $S1
+
+ end
+.end
+CODE
+$upcwd
+$cwd
+OUT
+}
+
+# Test mkdir
+
+my $xpto = $upcwd;
+$xpto =~ s/src([\/\\]?)$/xpto$1/;
+
+if (File::Spec->case_tolerant(substr($cwd,0,2))) {
+
+ pir_output_is( <<'CODE', <<"OUT", 'Test mkdir' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $I1 = 0o555
+ $P1."mkdir"($S1,$I1)
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ $S2 = downcase $S1
+ say $S2
+
+ $S1 = ".."
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ $S2 = downcase $S1
+ say $S2
+
+ end
+.end
+CODE
+$xpto
+$cwd
+OUT
+}
+else {
+ pir_output_is( <<'CODE', <<"OUT", 'Test mkdir' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $I1 = 0o555
+ $P1."mkdir"($S1,$I1)
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ say $S1
+
+ $S1 = ".."
+ $P1."chdir"($S1)
+
+ $S1 = $P1."cwd"()
+ say $S1
+
+ end
+.end
+CODE
+$xpto
+$cwd
+OUT
+}
+
+# Test remove on a directory
+mkdir "xpto" unless -d "xpto";
+
+pir_output_is( <<'CODE', <<'OUT', 'Test rm call in a directory' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $P1."rm"($S1)
+
+ print "ok\n"
+
+ end
+.end
+CODE
+ok
+OUT
+
+ok( !-d $xpto, "Test that rm removed the directory" );
+rmdir $xpto if -d $xpto; # this way next test doesn't fail if this one does
+
+# test stat
+
+open my $X, '>', "xpto";
+print $X "xpto";
+close $X;
+
+my $stat;
+
+my $count = $MSWin32 ? 11 : 13;
+my @s = stat('xpto');
+if ( $cygwin ) {
+ # Mask inode number (fudge it)
+ $s[1] &= 0xffffffff;
+}
+
+if ( $MSWin32 ) {
+ $stat = sprintf("0x%08x\n" x 11, @s);
+ pir_output_is( <<'CODE', $stat, 'Test OS.stat' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $S1 = "xpto"
+ $P2 = $P1."stat"($S1)
+
+ $S1 = repeat "0x%08x\n", 11
+ $S2 = sprintf $S1, $P2
+ print $S2
+done:
+ end
+.end
+CODE
+}
+else {
+ SKIP: {
+ skip 'broken test TT #457', 1 if $solaris;
+
+ $stat = sprintf("0x%08x\n" x 13, @s);
+ pir_output_is( <<'CODE', $stat, 'Test OS.stat' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $S1 = "xpto"
+ $P2 = $P1."stat"($S1)
+
+ $S1 = repeat "0x%08x\n", 13
+ $S2 = sprintf $S1, $P2
+ print $S2
+done:
+ end
+.end
+CODE
+}
+}
+
+# test readdir
+SKIP: {
+ skip 'not implemented on windows yet', 1 if ( $MSWin32 && $MSVC );
+
+ opendir my $IN, 'docs';
+ my @entries = readdir $IN;
+ closedir $IN;
+ my $entries = join( ' ', @entries ) . "\n";
+ pir_output_is( <<'CODE', $entries, 'Test OS.readdir' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $P2 = $P1.'readdir'('docs')
+
+ $S0 = join ' ', $P2
+ print $S0
+ print "\n"
+.end
+CODE
+}
+
+# test rename
+SKIP: {
+ open my $FILE, ">", "____some_test_file";
+ close $FILE;
+ pir_output_is( <<'CODE', <<"OUT", 'Test OS.rename' );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $P1.'rename'('____some_test_file', '___some_other_file')
+ $I0 = stat '___some_other_file', 0
+ print $I0
+ print "\n"
+ $P1.'rm'('___some_other_file')
+.end
+CODE
+1
+OUT
+}
+
+# test lstat
+
+my $lstat;
+
+SKIP: {
+ skip 'lstat not on Win32', 1 if $MSWin32;
+ skip 'broken test TT #457', 1 if $solaris;
+
+ my @s = lstat('xpto');
+ if ($cygwin) {
+ # Mask inode number (fudge it)
+ $s[1] &= 0xffffffff;
+ }
+ $lstat = sprintf( "0x%08x\n" x 13, @s );
+ pir_output_is( <<'CODE', $lstat, "Test OS.lstat" );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+ $S1 = "xpto"
+ $P2 = $P1."lstat"($S1)
+
+ $S1 = repeat "0x%08x\n", 13
+ $S2 = sprintf $S1, $P2
+ print $S2
+
+ end
+.end
+CODE
+}
+
+# Test remove on a file
+pir_output_is( <<'CODE', <<"OUT", "Test rm call in a file" );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $P1."rm"($S1)
+
+ print "ok\n"
+
+ end
+.end
+CODE
+ok
+OUT
+
+ok( !-f $xpto, "Test that rm removed file" );
+rmdir $xpto if -f $xpto; # this way next test doesn't fail if this one does
+
+# Test symlink
+SKIP: {
+ skip "Symlinks not available under Windows", 2 if $MSWin32;
+
+ pir_output_is( <<'CODE', <<"OUT", "Test symlink" );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $S2 = "MANIFEST"
+ $P1."symlink"($S2, $S1)
+
+ print "ok\n"
+
+ end
+.end
+CODE
+ok
+OUT
+
+ ok( -l "xpto", "symlink was really created" );
+ unlink "xpto" if -f "xpto";
+}
+
+# Test link to file. May require root permissions
+SKIP: {
+ skip "Hardlinks to files not possible on Windows", 2 if $MSWin32 or $cygwin;
+
+ pir_output_is( <<'CODE', <<"OUT", "Test link" );
+.sub main :main
+ $P0 = loadlib 'os'
+ $P1 = new ['OS']
+
+ $S1 = "xpto"
+ $S2 = "myconfig"
+ $P1."link"($S2, $S1)
+
+ print "ok\n"
+
+ end
+.end
+CODE
+ok
+OUT
+
+ my $nl = [ stat("myconfig") ]->[3];
+ ok( $nl > 1, "hard link to file was really created" );
+ unlink "xpto" if -f "xpto";
+}
+
+SKIP: {
+ skip "Hardlinks to files not possible on Windows", 1 if $MSWin32 or $cygwin;
+
+ my $prevnl = [ stat("tools") ]->[3];
+ pir_output_like( <<"CODE", <<"OUT", "Test dirlink" );
+.sub main :main
+ .local pmc os
+ .local string xpto, tools
+ \$P0 = loadlib 'os'
+ os = new ['OS']
+ xpto = "xpto"
+ tools = "tools"
+
+ push_eh no_root_perms
+ os."link"(tools, xpto)
+ pop_eh
+
+ .local pmc statvals
+ statvals = os.'stat'(tools)
+
+ # nlink
+ .local int nlink
+ nlink = statvals[3]
+
+ gt nlink, $prevnl, is_okay
+ end
+
+ no_root_perms:
+ .local pmc e
+ .local string message
+ .get_results( e )
+ pop_eh
+ message = e['message']
+ say message
+ end
+
+ is_okay:
+ say "ok"
+ end
+.end
+CODE
+/link.* failed for OS PMC:/
+OUT
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/dynpmc/rational.t
==============================================================================
--- branches/ops_pct/t/dynpmc/rational.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynpmc/rational.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,15 +1,7 @@
-#! perl
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-
-use Test::More;
-use Parrot::Test;
-use Parrot::Config;
-
=head1 NAME
t/dynpmc/rational.t - Rational PMC
@@ -24,210 +16,153 @@
=cut
-if ( $PConfig{gmp} ) { # If GMP is available, we check all functions.
- plan tests => 32;
-}
-else { # If GMP is not available, we only test the constructor and the
- plan tests => 2; # version-method that is used to detect presence of GMP at runtime.
-}
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Initialization");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
- say "ok"
- .end
-CODE
-ok
-OUTPUT
-
-if (! $PConfig{gmp}) { # If GMP is not available, this is the last test:
-pir_output_is(<<'CODE', <<'OUTPUT', "version-method");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
- $S1 = $P1.'version'()
- say $S1
- .end
-CODE
-0.0.0
-OUTPUT
-exit;
-}
-
-# These tests are only run, if GMP is available.
-pir_output_is(<<'CODE', <<'OUTPUT', "version-method");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
- $S1 = $P1.'version'()
- say "ok"
- .end
-CODE
-ok
-OUTPUT
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get native integer");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
-
- $I1 = 42
- $P1 = $I1
- $I2 = $P1
-
- say $I2
- .end
-CODE
-42
-OUTPUT
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get native float");
- .sub main :main
- loadlib $P0, 'rational'
- new $P0, 'Rational'
+.sub main :main
+ .include 'test_more.pir'
+ .include 'iglobals.pasm'
+ .local pmc config_hash, interp
+
+ interp = getinterp
+ config_hash = interp[.IGLOBALS_CONFIG_HASH]
+ $S0 = config_hash['gmp']
+
+ unless $S0 goto no_gmp
+ plan(56)
+ goto gmp_tests
+
+ no_gmp:
+ # seems like plan(0) is not supported currently
+ plan(1)
+ ok(1,'GMP not found, skipping Rational tests')
+ .return()
+
+ # The following tests only run if GMP is installed
+ gmp_tests:
+ loadlib $P1, 'rational'
+ test_init()
+ test_version()
+ test_set_get_native_int()
+ test_set_get_native_float()
+ test_set_get_native_string()
+
+ test_set_get_int()
+ test_set_get_float()
+ test_set_get_string()
+
+ test_inc_dec()
+ test_add_int_inplace()
+ test_add_float_inplace()
+
+ test_add_int_pmc_inplace()
+ test_add_float_pmc_inplace()
+ test_add_rats_inplace()
+
+ test_subtract_int()
+ test_subtract_float()
+ test_subtract_int_pmc()
+ test_subtract_rats()
+
+ test_multiply_int()
+ test_multiply_float()
+ test_multiply_int_pmc()
+ test_multiply_float_pmc()
+ test_multiply_rats()
+
+ test_divide_int()
+ test_divide_float()
+ test_divide_int_pmc()
+ test_divide_float_pmc()
+ test_divide_rats()
+
+ test_neg()
+ test_abs()
+ test_cmp()
+ test_equal_tt1517()
+.end
- $N0 = 11.1
- $P0 = $N0
- $N1 = $P0
+.sub test_neg
+ new $P2, 'Rational'
+ new $P3, 'Rational'
- say $N1
- .end
-CODE
-11.1
-OUTPUT
+ $P2 = "-3/2"
+ $P3 = -$P2
+ $P2 = -$P2
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get native string");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
+ is($P2,'3/2','neg')
+ is($P3,'3/2','neg')
+.end
- $S1 = "7/4"
- $P1 = $S1
- $S2 = $P1
-
- say $S2
- .end
-CODE
-7/4
-OUTPUT
+.sub test_abs
+ new $P2, 'Rational'
+ new $P3, 'Rational'
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get Integer");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
+ $P2 = "-3/2"
+ $P3 = abs $P2
+ abs $P2
+ is($P2,'3/2','abs')
+ is($P3,'3/2','abs')
+.end
- new $P2, 'Integer'
+.sub test_equal_tt1517
+ new $P2, 'Rational'
new $P3, 'Integer'
+ $P2 = "2/1"
+ $P3 = 2
+ if $P2 == $P3 goto pass
+ ok(0,'== on Rational and Integer PMC')
+ .return()
+ pass:
+ ok(1,'== on Rational and Integer PMC')
+.end
- $P2 = 7
- $P1 = $P2
- $P3 = $P1
-
- say $P3
- .end
-CODE
-7
-OUTPUT
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get Float");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
-
- new $P2, 'Float'
- new $P3, 'Float'
-
- $P2 = 7.110000
- $P1 = $P2
- $P3 = $P1
-
- say $P3
- .end
-CODE
-7.11
-OUTPUT
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Set and get String");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
-
- new $P2, 'String'
- new $P3, 'String'
-
- $P2 = "7/4"
- $P1 = $P2
- $P3 = $P1
-
- say $P3
- .end
-CODE
-7/4
-OUTPUT
+.sub test_cmp
+ new $P2, 'Rational'
+ new $P3, 'Rational'
-pir_output_is(<<'CODE', <<'OUTPUT', "Increment and decrement");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
+ $P2 = "3/2"
+ $P3 = "6/4"
- $P1 = "7/4"
- inc $P1
- print $P1
- print "\n"
+ if $P2 == $P3 goto EQ
+ goto NE
+ EQ:
+ ok(1,'== on Rational PMC')
+ goto END_EQ
+ NE:
+ ok(0,'== on Rational PMC')
+ END_EQ:
- dec $P1
- dec $P1
- say $P1
- .end
-CODE
-11/4
-3/4
-OUTPUT
+ $P3 = "7/4"
+ cmp $I1, $P2, $P3
+ cmp $I2, $P3, $P2
+ is($I1,-1,'cmp on Rational PMC')
+ is($I2,1,'cmp on Rational PMC')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Adding integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_divide_int
new $P1, 'Rational'
new $P2, 'Rational'
$I1 = 7
$P1 = "3/2"
- $P2 = $P1 + $I1
- $P1 = $P1 + $I1
- $P1 = $P1 + $I1
-
- say $P1
- say $P2
- .end
-CODE
-31/2
-17/2
-OUTPUT
+ $P2 = $P1 / $I1
+ $P1 = $P1 / $I1
+ is($P1,'3/14','divide int')
+ is($P2,'3/14','divide int')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Adding floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_divide_float
new $P1, 'Rational'
new $P2, 'Rational'
$N1 = 7.
$P1 = "3/2"
- $P2 = $P1 + $N1
- $P1 = $P1 + $N1
- $P1 = $P1 + $N1
+ $P2 = $P1 / $N1
+ $P1 = $P1 / $N1
+ is($P1,'3/14','divide float')
+ is($P2,'3/14','divide float')
- say $P1
- say $P2
- .end
-CODE
-31/2
-17/2
-OUTPUT
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Adding Integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_divide_int_pmc
new $P2, 'Rational'
new $P3, 'Rational'
new $P4, 'Integer'
@@ -235,20 +170,13 @@
$P4 = 7
$P2 = "3/2"
- $P3 = $P2 + $P4
- $P2 = $P2 + $P4
-
- say $P2
- say $P3
- .end
-CODE
-17/2
-17/2
-OUTPUT
+ $P3 = $P2 / $P4
+ $P2 = $P2 / $P4
+ is($P2,'3/14','divide Integer PMC')
+ is($P3,'3/14','divide Integer PMC')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Adding Floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_divide_float_pmc
new $P2, 'Rational'
new $P3, 'Rational'
new $P4, 'Float'
@@ -256,20 +184,13 @@
$P4 = 7.
$P2 = "3/2"
- $P3 = $P2 + $P4
- $P2 = $P2 + $P4
-
- say $P2
- say $P3
- .end
-CODE
-17/2
-17/2
-OUTPUT
+ $P3 = $P2 / $P4
+ $P2 = $P2 / $P4
+ is($P2,'3/14','divide Float PMC')
+ is($P3,'3/14','divide Float PMC')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Adding Rationals (+inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_divide_rats
new $P1, 'Rational'
new $P2, 'Rational'
new $P3, 'Rational'
@@ -277,60 +198,37 @@
$P2 = "3/2"
$P3 = "5/2"
- $P1 = $P2 + $P3
- $P2 = $P2 + $P3
-
- say $P1
- say $P2
- .end
-CODE
-4
-4
-OUTPUT
+ $P1 = $P2 / $P3
+ $P2 = $P2 / $P3
+ is($P1,'3/5','divide Rational PMC')
+ is($P2,'3/5','divide Rational PMC')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Subtracting integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_multiply_int
new $P1, 'Rational'
new $P2, 'Rational'
$I1 = 7
$P1 = "3/2"
- $P2 = $P1 - $I1
- $P1 = $P1 - $I1
- $P1 = $P1 - $I1
-
- say $P1
- say $P2
- .end
-CODE
--25/2
--11/2
-OUTPUT
+ $P2 = $P1 * $I1
+ $P1 = $P1 * $I1
+ is($P1,'21/2','multiply int')
+ is($P2,'21/2','multiply int')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Subtracting floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_multiply_float
new $P1, 'Rational'
new $P2, 'Rational'
$N1 = 7.
$P1 = "3/2"
- $P2 = $P1 - $N1
- $P1 = $P1 - $N1
- $P1 = $P1 - $N1
-
- say $P1
- say $P2
- .end
-CODE
--25/2
--11/2
-OUTPUT
+ $P2 = $P1 * $N1
+ $P1 = $P1 * $N1
+ is($P1,'21/2','multiply float')
+ is($P2,'21/2','multiply float')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Subtracting Integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_multiply_int_pmc
new $P2, 'Rational'
new $P3, 'Rational'
new $P4, 'Integer'
@@ -338,20 +236,13 @@
$P4 = 7
$P2 = "3/2"
- $P3 = $P2 - $P4
- $P2 = $P2 - $P4
-
- say $P2
- say $P3
- .end
-CODE
--11/2
--11/2
-OUTPUT
+ $P3 = $P2 * $P4
+ $P2 = $P2 * $P4
+ is($P2,'21/2','multiply Integer PMC')
+ is($P3,'21/2','multiply Integer PMC')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Subtracting Floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_multiply_float_pmc
new $P2, 'Rational'
new $P3, 'Rational'
new $P4, 'Float'
@@ -359,20 +250,28 @@
$P4 = 7.
$P2 = "3/2"
- $P3 = $P2 - $P4
- $P2 = $P2 - $P4
+ $P3 = $P2 * $P4
+ $P2 = $P2 * $P4
+ is($P2,'21/2','multiply Float PMC')
+ is($P3,'21/2','multiply Float PMC')
- say $P2
- say $P3
- .end
-CODE
--11/2
--11/2
-OUTPUT
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Subtracting Rationals (+inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_multiply_rats
+ new $P1, 'Rational'
+ new $P2, 'Rational'
+ new $P3, 'Rational'
+
+ $P2 = "3/2"
+ $P3 = "5/2"
+
+ $P1 = $P2 * $P3
+ $P2 = $P2 * $P3
+ is($P1,'15/4','multiply Rational PMC')
+ is($P2,'15/4','multiply Rational PMC')
+.end
+
+.sub test_subtract_rats
new $P1, 'Rational'
new $P2, 'Rational'
new $P3, 'Rational'
@@ -382,56 +281,38 @@
$P1 = $P2 - $P3
$P2 = $P2 - $P3
+ is($P1,-1,'subtract Rational inplace')
+ is($P2,-1,'subtract Rational inplace')
- say $P1
- say $P2
- .end
-CODE
--1
--1
-OUTPUT
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Multiplying integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_subtract_int
new $P1, 'Rational'
new $P2, 'Rational'
$I1 = 7
$P1 = "3/2"
- $P2 = $P1 * $I1
- $P1 = $P1 * $I1
-
- say $P1
- say $P2
- .end
-CODE
-21/2
-21/2
-OUTPUT
+ $P2 = $P1 - $I1
+ $P1 = $P1 - $I1
+ $P1 = $P1 - $I1
+ is($P1,'-25/2','subtract int inplace')
+ is($P2,'-11/2','subtract int inplace')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Multiplying floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_subtract_float
new $P1, 'Rational'
new $P2, 'Rational'
$N1 = 7.
$P1 = "3/2"
- $P2 = $P1 * $N1
- $P1 = $P1 * $N1
-
- say $P1
- say $P2
- .end
-CODE
-21/2
-21/2
-OUTPUT
+ $P2 = $P1 - $N1
+ $P1 = $P1 - $N1
+ $P1 = $P1 - $N1
+ is($P1,'-25/2','subtract float inplace')
+ is($P2,'-11/2','subtract float inplace')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Multiplying Integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_subtract_int_pmc
new $P2, 'Rational'
new $P3, 'Rational'
new $P4, 'Integer'
@@ -439,229 +320,166 @@
$P4 = 7
$P2 = "3/2"
- $P3 = $P2 * $P4
- $P2 = $P2 * $P4
-
- say $P2
- say $P3
- .end
-CODE
-21/2
-21/2
-OUTPUT
+ $P3 = $P2 - $P4
+ $P2 = $P2 - $P4
+ is($P2,'-11/2','subtract Integer PMC inplace')
+ is($P3,'-11/2','subtract Integer PMC inplace')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Multiplying Floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_add_rats_inplace
+ new $P1, 'Rational'
new $P2, 'Rational'
new $P3, 'Rational'
- new $P4, 'Float'
-
- $P4 = 7.
$P2 = "3/2"
- $P3 = $P2 * $P4
- $P2 = $P2 * $P4
+ $P3 = "5/2"
- say $P2
- say $P3
- .end
-CODE
-21/2
-21/2
-OUTPUT
+ $P1 = $P2 + $P3
+ $P2 = $P2 + $P3
+ is($P1,4,'adding rationals inplace')
+ is($P2,4,'adding rationals inplace')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Multiplying Rationals (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
- new $P1, 'Rational'
+.sub test_add_int_pmc_inplace
new $P2, 'Rational'
new $P3, 'Rational'
+ new $P4, 'Integer'
+
+ $P4 = 7
$P2 = "3/2"
- $P3 = "5/2"
+ $P3 = $P2 + $P4
+ $P2 = $P2 + $P4
+ is($P2,'17/2','add Integer PMCs inplace')
+ is($P3,'17/2','add Integer PMCs inplace')
+.end
- $P1 = $P2 * $P3
- $P2 = $P2 * $P3
+.sub test_add_float_pmc_inplace
+ new $P2, 'Rational'
+ new $P3, 'Rational'
+ new $P4, 'Float'
- say $P1
- say $P2
- .end
-CODE
-15/4
-15/4
-OUTPUT
+ $P4 = 7.
-pir_output_is(<<'CODE', <<'OUTPUT', "Dividing integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+ $P2 = "3/2"
+ $P3 = $P2 + $P4
+ $P2 = $P2 + $P4
+ is($P2,'17/2','add Float PMCs inplace')
+ is($P3,'17/2','add Float PMCs inplace')
+.end
+
+.sub test_add_int_inplace
new $P1, 'Rational'
new $P2, 'Rational'
$I1 = 7
$P1 = "3/2"
- $P2 = $P1 / $I1
- $P1 = $P1 / $I1
-
- say $P1
- say $P2
- .end
-CODE
-3/14
-3/14
-OUTPUT
+ $P2 = $P1 + $I1
+ $P1 = $P1 + $I1
+ $P1 = $P1 + $I1
+ is($P1,'31/2','add integers inplace')
+ is($P2,'17/2','add integers inplace')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Dividing floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_add_float_inplace
new $P1, 'Rational'
new $P2, 'Rational'
$N1 = 7.
$P1 = "3/2"
- $P2 = $P1 / $N1
- $P1 = $P1 / $N1
-
- say $P1
- say $P2
- .end
-CODE
-3/14
-3/14
-OUTPUT
-
-pir_output_is(<<'CODE', <<'OUTPUT', "Dividing Integers (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
- new $P4, 'Integer'
-
- $P4 = 7
-
- $P2 = "3/2"
- $P3 = $P2 / $P4
- $P2 = $P2 / $P4
+ $P2 = $P1 + $N1
+ $P1 = $P1 + $N1
+ $P1 = $P1 + $N1
+ is($P1,'31/2','add floats inplace')
+ is($P2,'17/2','add floats inplace')
+.end
- say $P2
- say $P3
- .end
-CODE
-3/14
-3/14
-OUTPUT
-pir_output_is(<<'CODE', <<'OUTPUT', "Dividing Floats (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
- new $P4, 'Float'
+.sub test_init
+ new $P1, 'Rational'
+ ok($P1,'initialization')
+.end
- $P4 = 7.
+.sub test_version
+ new $P1, 'Rational'
+ $S1 = $P1.'version'()
+ ok($S1,'can get version number')
+.end
- $P2 = "3/2"
- $P3 = $P2 / $P4
- $P2 = $P2 / $P4
+.sub test_set_get_native_int
+ new $P1, 'Rational'
- say $P2
- say $P3
- .end
-CODE
-3/14
-3/14
-OUTPUT
+ $I1 = 42
+ $P1 = $I1
+ $I2 = $P1
+ is($I2,42,'set and get native int')
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Dividing Rationals (+ inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
+.sub test_set_get_int
new $P1, 'Rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
-
- $P2 = "3/2"
- $P3 = "5/2"
+ new $P2, 'Integer'
+ new $P3, 'Integer'
- $P1 = $P2 / $P3
- $P2 = $P2 / $P3
+ $P2 = 7
+ $P1 = $P2
+ $P3 = $P1
+ is($P3,7,'set and get int')
+.end
- say $P1
- say $P2
- .end
-CODE
-3/5
-3/5
-OUTPUT
-pir_output_is(<<'CODE', <<'OUTPUT', "Negating (+inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
+.sub test_set_get_float
+ new $P1, 'Rational'
- $P2 = "-3/2"
- $P3 = -$P2
- $P2 = -$P2
+ new $P2, 'Float'
+ new $P3, 'Float'
- say $P2
- say $P3
- .end
-CODE
-3/2
-3/2
-OUTPUT
+ $P2 = 7.110000
+ $P1 = $P2
+ $P3 = $P1
+ is($P3,7.11,'set and set float',0.0001)
+.end
-pir_output_is(<<'CODE', <<'OUTPUT', "Absolute value (+inplace operation)");
- .sub main :main
- loadlib $P1, 'rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
+.sub test_inc_dec
+ new $P1, 'Rational'
- $P2 = "-3/2"
- $P3 = abs $P2
- abs $P2
+ $P1 = "7/4"
+ inc $P1
+ is($P1,'11/4','increment a rational')
+ dec $P1
+ dec $P1
+ is($P1,'3/4','decrement a rational')
+.end
- say $P2
- say $P3
- .end
-CODE
-3/2
-3/2
-OUTPUT
+.sub test_set_get_string
+ new $P1, 'Rational'
+ new $P2, 'String'
+ new $P3, 'String'
-pir_output_is(<<'CODE', <<'OUTPUT', "Comparing rationals to rationals");
- .sub main :main
- loadlib $P1, 'rational'
- new $P2, 'Rational'
- new $P3, 'Rational'
+ $P2 = "7/4"
+ $P1 = $P2
+ $P3 = $P1
+ is($P3,"7/4",'set and get string')
+.end
- $P2 = "3/2"
- $P3 = "6/4"
+.sub test_set_get_native_float
+ new $P0, 'Rational'
- if $P2 == $P3 goto EQ
- goto NE
- EQ:
- say "1"
- goto END_EQ
- NE:
- say "0"
- END_EQ:
+ $N0 = 11.1
+ $P0 = $N0
+ $N1 = $P0
+ is($N1,11.1,'set and get a native float')
+.end
- $P3 = "7/4"
- cmp $I1, $P2, $P3
- cmp $I2, $P3, $P2
+.sub test_set_get_native_string
+ new $P1, 'Rational'
- say $I1
- say $I2
- .end
-CODE
-1
--1
-1
-OUTPUT
+ $S1 = "7/4"
+ $P1 = $S1
+ $S2 = $P1
+ is($S2,'7/4','set and get native string')
+.end
# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
+# mode: pir
# fill-column: 100
# End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/dynpmc/rotest.t
==============================================================================
--- branches/ops_pct/t/dynpmc/rotest.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynpmc/rotest.t Wed May 5 08:45:29 2010 (r46302)
@@ -49,7 +49,7 @@
my %tests = (
# these first two tests would test overriding of the default
- # read-onlyness notion of vtable methods
+ # read-onlyness notion of vtables
q{value = 42} => [ 1, 0 ],
q{$I0 = value} => [ 0, 0 ],
Modified: branches/ops_pct/t/dynpmc/subproxy.t
==============================================================================
--- branches/ops_pct/t/dynpmc/subproxy.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/dynpmc/subproxy.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/examples/shootout.t
==============================================================================
--- branches/ops_pct/t/examples/shootout.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/examples/shootout.t Wed May 5 08:45:29 2010 (r46302)
@@ -35,7 +35,7 @@
To add a new test, you do not have to modify this script:
1. add your script (toto.pir) to examples/shootout
- 2. put parrot options in the first line (e.g "#!./parrot -Oc -R cgp-jit")
+ 2. put parrot options in the first line (e.g "#!./parrot -Oc")
3. make sure you have default argument values
4. put the expected output as a file : toto.pir_output
5. if you need an input file (to be read from stdin), call it toto.pir_input
@@ -74,15 +74,13 @@
$args =~ s/-j/-C/;
$args =~ s/-Cj/-C/;
}
- unless ( $PConfig{cg_flag} =~ /HAVE/ ) {
- $args =~ s/-Cj/-j/;
+ $args =~ s/-Cj/-j/;
- # Remove any plain -C option.
- $args =~ s/(^|\s)-C(\s|$)/$1$2/;
+ # Remove any plain -C option.
+ $args =~ s/(^|\s)-C(\s|$)/$1$2/;
- # Remove any extra Cs still floating around
- $args =~ s/C//;
- }
+ # Remove any extra Cs still floating around
+ $args =~ s/C//;
# look for input files
my $input = "$file$INPUT_EXT";
Modified: branches/ops_pct/t/examples/tutorial.t
==============================================================================
--- branches/ops_pct/t/examples/tutorial.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/examples/tutorial.t Wed May 5 08:45:29 2010 (r46302)
@@ -97,8 +97,8 @@
bc
bc
abcde
-bc
aXYZde
+abcde
END_EXPECTED
'24_string_ops_clone.pir' => << 'END_EXPECTED',
@@ -220,7 +220,7 @@
ok 1 - first test
ok 2 - second test
ok 3 #skip skipped test
-ok 4 # TODO 42
+ok 4 # TODO todo test
END_EXPECTED
);
Modified: branches/ops_pct/t/harness
==============================================================================
--- branches/ops_pct/t/harness Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/harness Wed May 5 08:45:29 2010 (r46302)
@@ -81,7 +81,7 @@
archive => 'parrot_test_run.tar.gz',
merge => 1,
extra_properties => \%env_data,
- extra_files => [ 'myconfig', 'config_lib.pasm' ],
+ extra_files => [ 'myconfig', 'config_lib.pir' ],
}
);
$harness->runtests(@tests);
@@ -134,10 +134,6 @@
Turn warnings on.
-=item C<-g>
-
-Run the C<CGoto> core.
-
=item C<-G>
Run the C<GCDebug> core.
@@ -146,14 +142,6 @@
Alias for running with the fast core.
-=item C<-C>
-
-Run the C<CGP> core.
-
-=item C<-S>
-
-Run Switched.
-
=item C<-b>
Run bounds checking enabled.
Copied: branches/ops_pct/t/harness.pir (from r46301, trunk/t/harness.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/harness.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/harness.pir)
@@ -0,0 +1,390 @@
+#!parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+.sub 'main' :main
+ .param pmc argv
+ $S0 = shift argv
+ .local int argc
+ argc = elements argv
+ if argc > 0 goto L1
+ help()
+ end
+ L1:
+ .local pmc opts
+ opts = _parse_opts(argv)
+ $I0 = exists opts['help']
+ unless $I0 goto L2
+ help()
+ end
+ L2:
+ .tailcall do(opts, argv)
+.end
+
+.sub 'help' :anon
+ say <<"HELP"
+parrot t/harness.pir [options] [testfiles]
+ --core-tests
+ --runcore-tests
+ --code-tests
+ --archive ... create a TAP archive of the test run
+ --send-to-smolder ... send the TAP archive to the Parrot Smolder server
+HELP
+.end
+
+.sub '_parse_opts' :anon
+ .param pmc argv
+ load_bytecode 'Getopt/Obj.pbc'
+ $P0 = new ['Getopt';'Obj']
+ $P0.'notOptStop'(1)
+ push $P0, 'gc-debug'
+ push $P0, 'core-tests'
+ push $P0, 'runcore-tests'
+ push $P0, 'code-tests'
+ push $P0, 'run-exec'
+ push $P0, 'archive'
+ push $P0, 'send-to-smolder'
+ push $P0, 'help|h'
+ $P1 = $P0.'get_options'(argv)
+ .return ($P1)
+.end
+
+.sub 'do' :anon
+ .param pmc opts
+ .param pmc files
+ set_test_prog_args(opts)
+ load_bytecode 'TAP/Harness.pbc'
+ .local pmc options, env, harness, aggregate
+ options = new 'Hash'
+ env = new 'Env'
+ $I0 = exists env['HARNESS_VERBOSE']
+ unless $I0 goto L1
+ $S0 = env['HARNESS_VERBOSE']
+ options['verbosity'] = $S0
+ L1:
+ $I0 = exists opts['archive']
+ if $I0 goto L2
+ harness = new ['TAP';'Harness']
+ options['directives'] = 1
+ goto L3
+ L2:
+ harness = new ['TAP';'Harness';'Archive']
+ harness.'archive'('parrot_test_run.tar.gz')
+ options['merge'] = 1
+ .local pmc env_data
+ env_data = collect_test_environment_data()
+ harness.'extra_props'(env_data)
+ $P0 = split ' ', 'myconfig config_lib.pir'
+ harness.'extra_files'($P0)
+ L3:
+ harness.'process_args'(options)
+ $P0 = _get_tests(opts, files)
+ aggregate = harness.'runtests'($P0)
+ $I0 = exists opts['send-to-smolder']
+ unless $I0 goto L4
+ .tailcall send_archive_to_smolder(env_data)
+ L4:
+ $I0 = aggregate.'all_passed'()
+ $I0 = not $I0
+ exit $I0
+.end
+
+.sub 'set_test_prog_args' :anon
+ .param pmc opts
+ $S0 = ''
+ $I0 = exists opts['gc-debug']
+ unless $I0 goto L1
+ $S0 .= ' --gc-debug'
+ L1:
+ $I0 = exists opts['run-exec']
+ unless $I0 goto L2
+ $S0 .= ' --run-exec'
+ L2:
+ $S0 = substr $S0, 1
+ $P0 = new 'Env'
+ $P0['TEST_PROG_ARGS'] = $S0
+.end
+
+.sub '_get_tests' :anon
+ .param pmc opts
+ .param pmc files
+ .local int nb
+ $I0 = opts['code-tests']
+ unless $I0 goto L1
+ .const string developing_tests = 't/distro/file_metadata.t t/codingstd/*.t'
+ files = glob(developing_tests)
+ goto L2
+ L1:
+ nb = elements files
+ unless nb == 0 goto L2
+ files = _get_common_tests(opts)
+ L2:
+ nb = elements files
+ # currently, FixedStringArray hasn't the method sort.
+ # see TT #1356
+ $P0 = new 'FixedPMCArray'
+ set $P0, nb
+ $I0 = 0
+ $P1 = iter files
+ L3:
+ unless $P1 goto L4
+ $S0 = shift $P1
+ $P2 = split "\\", $S0
+ $S0 = join "/", $P2
+ $P2 = box $S0
+ $P0[$I0] = $P2
+ inc $I0
+ goto L3
+ L4:
+ $P0.'sort'()
+ .return ($P0)
+.end
+
+.sub '_get_common_tests' :anon
+ .param pmc opts
+ .const string runcore_tests = <<'TEST'
+t/compilers/imcc/*/*.t
+t/op/*.t
+t/pmc/*.t
+t/oo/*.t
+t/native_pbc/*.t
+t/dynpmc/*.t
+t/dynoplibs/*.t
+TEST
+ .const string core_tests = <<'TEST'
+t/src/*.t
+t/run/*.t
+t/perl/*.t
+TEST
+ .const string library_tests = <<'TEST'
+t/compilers/pct/*.t
+t/compilers/pge/*.t
+t/compilers/pge/p5regex/*.t
+t/compilers/pge/perl6regex/*.t
+t/compilers/tge/*.t
+t/library/*.t
+t/tools/*.t
+t/profiling/*.t
+TEST
+ .const string configure_tests = <<'TEST'
+t/configure/*.t
+t/steps/*.t
+t/postconfigure/*.t
+TEST
+ $S0 = runcore_tests
+ $I0 = exists opts['runcore-tests']
+ if $I0 goto L1
+ $S0 .= core_tests
+ $I0 = exists opts['core-tests']
+ if $I0 goto L1
+ $S0 .= library_tests
+ $S0 .= configure_tests
+ L1:
+ $P0 = split "\n", $S0
+ $S0 = join ' ', $P0
+ $P0 = glob($S0)
+ .return ($P0)
+.end
+
+.include 'iglobals.pasm'
+
+.sub 'collect_test_environment_data' :anon
+ .local pmc config, env
+ $P0 = getinterp
+ config = $P0[.IGLOBALS_CONFIG_HASH]
+ env = new 'Env'
+ $P0 = new 'Hash'
+ .local string arch
+ arch = config['cpuarch']
+ $P0['Architecture'] = arch
+ $S0 = _get_compiler_version(config)
+ $P0['Compiler'] = $S0
+ .local string devel
+ devel = config['DEVEL']
+ $P0['DEVEL'] = devel
+ .local string optimize
+ optimize = 'none'
+ $I0 = exists config['optimize']
+ unless $I0 goto L1
+ optimize = config['optimize']
+ L1:
+ $P0['Optimize'] = optimize
+ .local string osname
+ osname = config['osname']
+ $P0['Platform'] = osname
+ .local string version
+ version = config['VERSION']
+ $P0['Version'] = version
+ .local string submitter
+ submitter = _get_submitter(config, env)
+ $P0['Submitter'] = submitter
+ _add_subversion_info($P0)
+ .return ($P0)
+.end
+
+.sub '_get_compiler_version' :anon
+ .param pmc config
+ $S0 = config['cc']
+ $I0 = index $S0, 'gcc'
+ unless $I0 >= 0 goto L1
+ $I0 = exists config['gccversion']
+ unless $I0 goto L1
+ $S0 .= ' '
+ $S1 = config['gccversion']
+ $S0 .= $S1
+ .return ($S0)
+ L1:
+ $I0 = index $S0, 'cl'
+ unless $I0 >= 0 goto L2
+ $I0 = exists config['msvcversion']
+ unless $I0 goto L2
+ $S0 .= ' '
+ $S1 = config['msvcversion']
+ $S0 .= $S1
+ .return ($S0)
+ L2:
+ $I0 = exists config['gccversion']
+ unless $I0 goto L3
+ $S0 .= ' (gcc '
+ $S1 = config['gccversion']
+ $S0 .= $S1
+ $S0 .= ')'
+ .return ($S0)
+ L3:
+ $I0 = exists config['msvcversion']
+ unless $I0 goto L4
+ $S0 .= ' (msvc '
+ $S1 = config['msvcversion']
+ $S0 .= $S1
+ $S0 .= ')'
+ .return ($S0)
+ L4:
+ .return ($S0)
+.end
+
+.sub '_get_submitter' :anon
+ .param pmc config
+ .param pmc env
+ $I0 = exists env['SMOLDER_SUBMITTER']
+ unless $I0 goto L1
+ $S0 = env['SMOLDER_SUBMITTER']
+ .return ($S0)
+ L1:
+ .local string me
+ $I0 = exists config['win32']
+ unless $I0 goto L2
+ me = env['USERNAME']
+ goto L3
+ L2:
+ me = env['LOGNAME']
+ L3:
+ $S0 = me . '@unknown'
+ .return ($S0)
+.end
+
+.include 'cclass.pasm'
+
+.sub '_add_subversion_info' :anon
+ .param pmc hash
+ $I0 = file_exists('.svn')
+ unless $I0 goto L1
+ $P0 = new 'FileHandle'
+ $P0.'open'('svn info', 'pr')
+ $S0 = $P0.'readall'()
+ $P0.'close'()
+ $I0 = length $S0
+ $S1 = 'trunk'
+ $I1 = index $S0, '/branches/'
+ unless $I1 >= 0 goto L2
+ $I1 += 10
+ $I2 = find_not_cclass .CCLASS_WHITESPACE, $S0, $I1, $I0
+ $I3 = $I2 - $I1
+ $S1 = substr $S0, $I1, $I3
+ L2:
+ hash['Branch'] = $S1
+ $P0.'open'('svn status', 'pr')
+ $P1 = new 'ResizableStringArray'
+ L3:
+ $S0 = readline $P0
+ if $S0 == '' goto L4
+ $I0 = index $S0, 'M'
+ unless $I0 == 0 goto L3
+ $S0 = chomp($S0)
+ $I0 = length $S0
+ $I0 = find_not_cclass .CCLASS_WHITESPACE, $S0, 2, $I0
+ $S0 = substr $S0, $I0
+ push $P1, $S0
+ goto L3
+ L4:
+ $P0.'close'()
+ $I0 = elements $P1
+ unless $I0 != 0 goto L1
+ $S0 = hash['DEVEL']
+ $S0 .= ' '
+ $S1 = $I0
+ $S0 .= $S1
+ $S0 .= ' mods'
+ hash['DEVEL'] = $S0
+ $S0 = join ' ', $P1
+ hash['Modifications'] = $S0
+ L1:
+ .return (hash)
+.end
+
+.sub 'send_archive_to_smolder' :anon
+ .param pmc env_data
+ load_bytecode 'osutils.pbc'
+ .const string archive = 'parrot_test_run.tar.gz'
+ .const string smolder_url = 'http://smolder.plusthree.com/app/projects/process_add_report/8'
+ .const string username = 'parrot-autobot'
+ .const string password = 'squ at wk'
+ .local pmc config
+ $P0 = getinterp
+ config = $P0[.IGLOBALS_CONFIG_HASH]
+ .local string cmd
+ cmd = "curl -F architecture="
+ $S0 = config['cpuarch']
+ cmd .= $S0
+ cmd .= " -F platform="
+ $S0 = config['osname']
+ cmd .= $S0
+ cmd .= " -F revision="
+ $S0 = config['revision']
+ cmd .= $S0
+ cmd .= " -F tags=\""
+ $S0 = _get_tags(env_data)
+ cmd .= $S0
+ cmd .= "\""
+ cmd .= " -F username="
+ cmd .= username
+ cmd .= " -F password="
+ cmd .= password
+ cmd .= " -F comments=\"EXPERIMENTAL t/harness.pir\""
+ cmd .= " -F report_file=@"
+ cmd .= archive
+ cmd .= " "
+ cmd .= smolder_url
+ .tailcall system(cmd, 1 :named('verbose'))
+.end
+
+.sub '_get_tags' :anon
+ .param pmc env_data
+ $P0 = split ' ', 'Architecture Compiler Platform Version'
+ $P1 = new 'ResizableStringArray'
+ L1:
+ unless $P0 goto L2
+ $S0 = shift $P0
+ $S1 = env_data[$S0]
+ push $P1, $S1
+ goto L1
+ L2:
+ $S0 = join ', ', $P1
+ .return ($S0)
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/include/fp_equality.t
==============================================================================
--- branches/ops_pct/t/include/fp_equality.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/include/fp_equality.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009, Parrot Foundation.
# $Id$
Copied: branches/ops_pct/t/library/archive_tar.t (from r46301, trunk/t/library/archive_tar.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/library/archive_tar.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/library/archive_tar.t)
@@ -0,0 +1,77 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/archive_tar.t
+
+=head1 DESCRIPTION
+
+Test the Archive/Tar library
+
+=head1 SYNOPSIS
+
+ % prove t/library/archive_tar.t
+
+=cut
+
+.sub 'main' :main
+ .include 'test_more.pir'
+
+ load_bytecode 'Archive/Tar.pir'
+
+ plan(12)
+ test_new()
+ test_tar()
+.end
+
+.sub 'test_new'
+ $P0 = new ['Archive';'Tar']
+ $I0 = isa $P0, ['Archive';'Tar']
+ ok($I0, "new ['Archive';'Tar']")
+ $P0 = new ['Archive';'Tar';'File']
+ $I0 = isa $P0, ['Archive';'Tar';'File']
+ ok($I0, "new ['Archive';'Tar';'File']")
+.end
+
+.sub 'test_tar'
+ .local pmc archive, entry
+ archive = new ['Archive';'Tar']
+ $I0 = isa archive, ['Archive';'Tar']
+ ok($I0, "test_tar")
+ entry = archive.'add_data'('msg.txt', "some data")
+ $I0 = isa entry, ['Archive';'Tar';'File']
+ ok($I0, "entry is an ['Archive';'Tar';'File']")
+ $S0 = entry.'data'()
+ is($S0, "some data", "data")
+ $S0 = entry.'full_path'()
+ is($S0, 'msg.txt', "full_path")
+ .local string header
+ header = entry.'_format_tar_entry'()
+ $I0 = length header
+ is($I0, 512, "length header")
+ $I0 = index header, 'msg.txt'
+ is($I0, 0, "header starts by filename")
+ $I0 = index header, 'ustar'
+ is($I0, 257, "magic at 257")
+
+ .local pmc fh
+ fh = new 'StringHandle'
+ fh.'open'('in_memory', 'wb')
+ archive.'write'(fh)
+ $S0 = fh.'readall'()
+ fh.'close'()
+ $I0 = length $S0
+ is($I0, 2048, "size")
+ $I0 = index $S0, 'msg.txt'
+ is($I0, 0, 'filename')
+ $I0 = index $S0, 'some data'
+ is($I0, 512, 'data')
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/library/configure.t
==============================================================================
--- branches/ops_pct/t/library/configure.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/configure.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/getopt_obj.t
==============================================================================
--- branches/ops_pct/t/library/getopt_obj.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/getopt_obj.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,14 +1,7 @@
-#!perl
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
-use strict;
-use warnings;
-use lib qw( t . lib ../lib ../../lib );
-
-use Test::More;
-use Parrot::Test tests => 15;
-
=head1 NAME
t/library/getopt_obj.t - testing the PIR module Getopt::Obj
@@ -24,10 +17,30 @@
=cut
-# 1
-pir_output_is( <<'CODE', <<'OUT', 'basic long options' );
-
.sub main :main
+ .include 'test_more.pir'
+ load_bytecode "Getopt/Obj.pbc"
+ plan(48)
+
+ test_basic_long_options()
+ test_basic_short_options()
+ test_simple_array()
+ test_mixing_long_and_short_with_array()
+ test_hash()
+ test_bundling_short_options()
+ test_ignored_options()
+ test_double_dash_stop()
+ test_notOptStop()
+ test_optarg()
+ test_pass_through()
+ test_lone_dash()
+ test_push_interface()
+ test_missing_spec()
+ test_missing_argument()
+.end
+
+# 1
+.sub test_basic_long_options
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo=bar'
@@ -35,7 +48,6 @@
push argv, '--bax=3'
push argv, '--baz'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -57,36 +69,20 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'basic long options')
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, 3.14, 'basic long options')
$S0 = $P1["bax"]
- print "bax is "
- print $S0
- print "\n"
+ is($S0, 3, 'basic long options')
$S0 = $P1["baz"]
- print "baz is "
- print $S0
- print "\n"
+ is($S0, 1, 'basic long options')
.end
-CODE
-foo is bar
-bar is 3.14
-bax is 3
-baz is 1
-OUT
-
# 2
-pir_output_is( <<'CODE', <<'OUT', "basic short options" );
-.sub main :main
+.sub test_basic_short_options
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '-f'
@@ -94,7 +90,6 @@
push argv, '-Abc'
push argv, '-c'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -112,35 +107,22 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["f"]
- print "f is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'basic short options')
$S0 = $P1["A"]
- print "A is "
- print $S0
- print "\n"
+ is($S0, 'bc', 'basic short options')
$S0 = $P1["c"]
- print "c is "
- print $S0
- print "\n"
+ is($S0, '1', 'basic short options')
.end
-CODE
-f is bar
-A is bc
-c is 1
-OUT
# 3
-pir_output_is( <<'CODE', <<'OUT', "simple array" );
-.sub main :main
+.sub test_simple_array
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '-Iinca'
push argv, '-Iincb'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -151,30 +133,20 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["I";0]
- print "0 is "
- print $S0
- print "\n"
+ is($S0, 'inca', 'simple array')
$S0 = $P1["I";1]
- print "1 is "
- print $S0
- print "\n"
+ is($S0, 'incb', 'simple array')
.end
-CODE
-0 is inca
-1 is incb
-OUT
# 4
-pir_output_is( <<'CODE', <<'OUT', "mixing long and short with array" );
-.sub main :main
+.sub test_mixing_long_and_short_with_array
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '-Iinca'
push argv, '--include=incb'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -186,31 +158,21 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["include";0]
- print "0 is "
- print $S0
- print "\n"
+ is($S0, 'inca', 'mixing long and short with array')
$S0 = $P1["include";1]
- print "1 is "
- print $S0
- print "\n"
+ is($S0, 'incb', 'mixing long and short with array')
.end
-CODE
-0 is inca
-1 is incb
-OUT
# 5
-pir_output_is( <<'CODE', <<'OUT', "hash" );
-.sub main :main
+.sub test_hash
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '-Dfoo=bar'
push argv, '--define=bax=baz'
push argv, '-Dfoobar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -222,35 +184,22 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["define";"foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'hash')
$S0 = $P1["define";"bax"]
- print "bax is "
- print $S0
- print "\n"
+ is($S0, 'baz', 'hash')
$S0 = $P1["define";"foobar"]
- print "foobar is "
- print $S0
- print "\n"
+ is($S0, 1, 'hash')
.end
-CODE
-foo is bar
-bax is baz
-foobar is 1
-OUT
# 6
-pir_output_is( <<'CODE', <<'OUT', "bundling short options" );
-.sub main :main
+.sub test_bundling_short_options
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '-abc'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -264,36 +213,23 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["a"]
- print "a is "
- print $S0
- print "\n"
+ is($S0, 1, 'bundling short options')
$S0 = $P1["b"]
- print "b is "
- print $S0
- print "\n"
+ is($S0, 1, 'bundling short options')
$S0 = $P1["c"]
- print "c is "
- print $S0
- print "\n"
+ is($S0, 1, 'bundling short options')
.end
-CODE
-a is 1
-b is 1
-c is 1
-OUT
# 7
-pir_output_is( <<'CODE', <<'OUT', "ignored options" );
-.sub main :main
+.sub test_ignored_options
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--ignore'
push argv, '--foo'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
getopts."notOptStop"(1)
@@ -304,31 +240,21 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, '1', 'ignored options')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, '--ignore', 'ignored options')
.end
-CODE
-foo is 1
-argv[0] is --ignore
-OUT
# 8
-pir_output_is( <<'CODE', <<'OUT', "double dash stop" );
-.sub main :main
+.sub test_double_dash_stop
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo'
push argv, '--'
push argv, '--bar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -340,38 +266,25 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 1, 'double dash stop')
# Hash sets an nonexistant value to ''
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, '', 'double dash stop')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, '--bar', 'double dash stop')
.end
-CODE
-foo is 1
-bar is
-argv[0] is --bar
-OUT
# 9
-pir_output_is( <<'CODE', <<'OUT', "notOptStop" );
-.sub main :main
+.sub test_notOptStop
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo'
push argv, 'foo'
push argv, '--bar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
getopts."notOptStop"(1)
@@ -384,43 +297,27 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 1, 'notOptStop')
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, '', 'notOptStop')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, 'foo', 'notOptStop')
$S0 = argv[1]
- print "argv[1] is "
- print $S0
- print "\n"
+ is($S0, '--bar', 'notOptStop')
.end
-CODE
-foo is 1
-bar is
-argv[0] is foo
-argv[1] is --bar
-OUT
# 10
-pir_output_is( <<'CODE', <<'OUT', "optarg" );
-.sub main :main
+.sub test_optarg
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo'
push argv, '-f'
push argv, '-bbar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
getopts."notOptStop"(1)
@@ -443,30 +340,18 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, '', 'optarg')
$S0 = $P1["f"]
- print "f is "
- print $S0
- print "\n"
+ is($S0, '', 'optarg')
$S0 = $P1["b"]
- print "b is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'optarg')
.end
-CODE
-foo is
-f is
-b is bar
-OUT
# 11
-pir_output_is( <<'CODE', <<'OUT', "pass through" );
-.sub main :main
+.sub test_pass_through
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo'
@@ -474,7 +359,6 @@
push argv, '--bar'
push argv, 'bar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -486,43 +370,27 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 1, 'pass through')
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, 1, 'pass through')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, 'foo', 'pass through')
$S0 = argv[1]
- print "argv[1] is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'pass through')
.end
-CODE
-foo is 1
-bar is 1
-argv[0] is foo
-argv[1] is bar
-OUT
# 12
-pir_output_is( <<'CODE', <<'OUT', "lone dash" );
-.sub main :main
+.sub test_lone_dash
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo'
push argv, '-'
push argv, '--bar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -534,30 +402,18 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 1, 'lone dash')
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, 1, 'lone dash')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, '-', 'lone dash')
.end
-CODE
-foo is 1
-bar is 1
-argv[0] is -
-OUT
# 13
-pir_output_is( <<'CODE', <<'OUT', "push interface" );
-.sub main :main
+.sub test_push_interface
.local pmc argv
argv = new 'ResizablePMCArray'
push argv, '--foo=file'
@@ -574,7 +430,6 @@
push argv, '--define=bax=baz'
push argv, '-Dfoobar'
- load_bytecode "Getopt/Obj.pbc"
.local pmc getopts
getopts = new ['Getopt';'Obj']
@@ -588,71 +443,40 @@
$P1 = getopts."get_options"(argv)
$S0 = $P1["foo"]
- print "foo is "
- print $S0
- print "\n"
+ is($S0, 'file', 'push interface')
$S0 = $P1["bar"]
- print "bar is "
- print $S0
- print "\n"
+ is($S0, 'file.txt', 'push interface')
$S0 = $P1["bax"]
- print "bax is "
- print $S0
- print "\n"
+ is($S0, 'file.t', 'push interface')
$S0 = $P1["baz"]
- print "baz is "
- print $S0
- print "\n"
+ is($S0, '', 'push interface')
$S0 = $P1["I";0]
- print "I[0] is "
- print $S0
- print "\n"
+ is($S0, 'texta', 'push interface')
$S0 = $P1["I";1]
- print "I[1] is "
- print $S0
- print "\n"
+ is($S0, 'textb', 'push interface')
$S0 = $P1["define";"foo"]
- print "define[foo] is "
- print $S0
- print "\n"
+ is($S0, 'bar', 'push interface')
$S0 = $P1["define";"bax"]
- print "define[bax] is "
- print $S0
- print "\n"
+ is($S0, 'baz', 'push interface')
$S0 = $P1["define";"foobar"]
- print "define[foobar] is "
- print $S0
- print "\n"
+ is($S0, 1, 'push interface')
$S0 = argv[0]
- print "argv[0] is "
- print $S0
- print "\n"
+ is($S0, 'text', 'push interface')
.end
-CODE
-foo is file
-bar is file.txt
-bax is file.t
-baz is
-I[0] is texta
-I[1] is textb
-define[foo] is bar
-define[bax] is baz
-define[foobar] is 1
-argv[0] is text
-OUT
# 14
-pir_error_output_like( <<'CODE', <<'OUT', "missing spec" );
+.sub test_missing_spec
+ dies_ok(<<'CODE', 'missing_spec')
.sub main :main
.local pmc argv
argv = new 'ResizablePMCArray'
@@ -671,11 +495,11 @@
print "\n"
.end
CODE
-/Option 'foo' not in specs/
-OUT
+.end
# 15
-pir_error_output_like( <<'CODE', <<'OUT', "missing argument" );
+.sub test_missing_argument
+ dies_ok(<<'CODE', "missing argument")
.sub main :main
.local pmc argv
argv = new 'ResizablePMCArray'
@@ -697,8 +521,7 @@
print "\n"
.end
CODE
-/Missing a required argument for option 'bar'/
-OUT
+.end
=head1 AUTHOR
@@ -711,8 +534,7 @@
=cut
# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
+# mode: pir
# fill-column: 100
# End:
-# vim: expandtab shiftwidth=4:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/library/hllmacros.t
==============================================================================
--- branches/ops_pct/t/library/hllmacros.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/hllmacros.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/md5.t
==============================================================================
--- branches/ops_pct/t/library/md5.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/md5.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/mime_base64.t
==============================================================================
--- branches/ops_pct/t/library/mime_base64.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/mime_base64.t Wed May 5 08:45:29 2010 (r46302)
@@ -23,7 +23,7 @@
load_bytecode 'MIME/Base64.pbc'
load_bytecode 'PGE.pbc'
load_bytecode 'PGE/Util.pbc'
- load_bytecode 'compilers/json/JSON.pbc'
+ load_language 'data_json'
.local pmc plan, is, ok
plan = get_hll_global [ 'Test'; 'More' ], 'plan'
@@ -32,11 +32,11 @@
plan(550)
- .local pmc JSON
- JSON = compreg "JSON"
+ .local pmc json
+ json = compreg 'data_json'
.local pmc encode_decode_tests, decode_tests
- encode_decode_tests = JSON( <<'END_JSON' )
+ encode_decode_tests = json.'compile'( <<'END_JSON' )
[ ["Hello, World!\n","SGVsbG8sIFdvcmxkIQo="],
["\u0000","AA=="],
["\u0001","AQ=="],
@@ -310,7 +310,7 @@
]
END_JSON
- decode_tests = JSON( <<'END_JSON' )
+ decode_tests = json.'compile'( <<'END_JSON' )
[ ["YWE=","aa"],
[" YWE=","aa"],
["Y WE=","aa"],
@@ -333,6 +333,7 @@
.local pmc test_iterator, test_case
.local string plain, base64, comment, comment_cnt
+ encode_decode_tests = encode_decode_tests()
test_iterator = iter encode_decode_tests
enc_dec_loop:
unless test_iterator goto enc_dec_loop_end
@@ -351,6 +352,7 @@
goto enc_dec_loop
enc_dec_loop_end:
+ decode_tests = decode_tests()
test_iterator = iter decode_tests
dec_loop:
unless test_iterator goto dec_loop_end
Copied: branches/ops_pct/t/library/osutils.t (from r46301, trunk/t/library/osutils.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/library/osutils.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/library/osutils.t)
@@ -0,0 +1,69 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/osutils.t
+
+=head1 DESCRIPTION
+
+Test the osutils library
+
+=head1 SYNOPSIS
+
+ % prove t/library/osutils.t
+
+=cut
+
+.sub 'main' :main
+ .include 'test_more.pir'
+
+ load_bytecode 'osutils.pir'
+
+ plan(11)
+ test_basename()
+ test_dirname()
+ test_catfile()
+ test_splitpath()
+.end
+
+.sub 'test_basename'
+ $S0 = 'foo/bar/baz.txt'
+ $S0 = basename($S0)
+ is( $S0, 'baz.txt', "basename" )
+.end
+
+.sub 'test_dirname'
+ $S0 = 'foo/bar/baz.txt'
+ $S0 = dirname($S0)
+ is( $S0, 'foo/bar', "dirname" )
+ $S0 = dirname($S0)
+ is( $S0, 'foo', "dirname" )
+ $S0 = dirname($S0)
+ is( $S0, '.', "dirname" )
+.end
+
+.sub 'test_catfile'
+ $S0 = catfile('abc', 'def', 'ghi')
+ is($S0, 'abc/def/ghi', "catfile")
+.end
+
+.sub 'test_splitpath'
+ .local string volume, directories, file
+ (volume, directories, file) = splitpath('abc/def/ghi.txt')
+ is(volume, '', "splitpath vol")
+ is(directories, 'abc/def', "splitpath dirs")
+ is(file, 'ghi.txt', "splitpath file")
+
+ (volume, directories, file) = splitpath('c:/abc/def/ghi.txt')
+ is(volume, 'c:', "splitpath vol")
+ is(directories, '/abc/def', "splitpath dirs")
+ is(file, 'ghi.txt', "splitpath file")
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/library/p6object.t
==============================================================================
--- branches/ops_pct/t/library/p6object.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/p6object.t Wed May 5 08:45:29 2010 (r46302)
@@ -437,7 +437,7 @@
.namespace ['ABC']
-.sub 'foo' :method
+.sub 'foo' :method :nsentry('foo')
.return ('ABC::foo')
.end
Modified: branches/ops_pct/t/library/parrotlib.t
==============================================================================
--- branches/ops_pct/t/library/parrotlib.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/parrotlib.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/pcre.t
==============================================================================
--- branches/ops_pct/t/library/pcre.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/pcre.t Wed May 5 08:45:29 2010 (r46302)
@@ -26,7 +26,7 @@
# if we keep pcre, we need a config test
my $cmd = ( $^O =~ /MSWin32/ ) ? "pcregrep --version" : "pcre-config --version";
-my $has_pcre = !Parrot::Test::run_command( $cmd, STDERR => File::Spec->devnull, );
+my $has_pcre = !Parrot::Test::run_command( $cmd, STDOUT => File::Spec->devnull ,STDERR => File::Spec->devnull, );
my $pcre_libpath = '';
# It's possible that libpcre is installed in some non-standard path...
Modified: branches/ops_pct/t/library/protoobject.t
==============================================================================
--- branches/ops_pct/t/library/protoobject.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/protoobject.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/rand.t
==============================================================================
--- branches/ops_pct/t/library/rand.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/rand.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/range.t
==============================================================================
--- branches/ops_pct/t/library/range.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/range.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
Copied: branches/ops_pct/t/library/tap_parser.t (from r46301, trunk/t/library/tap_parser.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/library/tap_parser.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/library/tap_parser.t)
@@ -0,0 +1,674 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/tap_parser.t
+
+=head1 DESCRIPTION
+
+Test the TAP/Parser library
+
+=head1 SYNOPSIS
+
+ % prove t/library/tap_parser.t
+
+=cut
+
+.sub 'main' :main
+ .include 'test_more.pir'
+
+ load_bytecode 'TAP/Parser.pir'
+
+ plan(203)
+ test_grammar_plan()
+ test_grammar_bailout()
+ test_grammar_comment()
+ test_grammar_tests()
+ test_grammar_version()
+ test_tap()
+ test_tap_with_blank_lines()
+ test_tap_has_problem()
+ test_tap_version_wrong_place()
+ test_tap_trailing_plan()
+ test_aggregator()
+.end
+
+.sub 'test_grammar_plan'
+ .local pmc grammar, token
+ grammar = new ['TAP';'Parser';'Grammar']
+ token = grammar.'tokenize'("1..42")
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "1..42")
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..42")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 42, "tests_planned")
+
+ token = grammar.'tokenize'("1..0 # SKIP why not?")
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "1..0 # SKIP why not?")
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..0")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 0, "tests_planned")
+ $P0 = getattribute token, 'directive'
+ is($P0, 'SKIP', "directive")
+ $P0 = getattribute token, 'explanation'
+ is($P0, 'why not?', "explanation")
+
+ token = grammar.'tokenize'("1..0")
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "1..0")
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..0")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 0, "tests_planned")
+ $P0 = getattribute token, 'directive'
+ is($P0, 'SKIP', "directive")
+.end
+
+.sub 'test_grammar_bailout'
+ .local pmc grammar, token
+ grammar = new ['TAP';'Parser';'Grammar']
+ token = grammar.'tokenize'("Bail out!")
+ $P0 = get_class ['TAP';'Parser';'Result';'Bailout']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "Bail out!")
+ $P0 = getattribute token, 'explanation'
+ is($P0, '', "no explanation")
+
+ token = grammar.'tokenize'("Bail out! some explanation")
+ $P0 = get_class ['TAP';'Parser';'Result';'Bailout']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "Bail out! some explanation")
+ $P0 = getattribute token, 'explanation'
+ is($P0, "some explanation", "explanation")
+.end
+
+.sub 'test_grammar_comment'
+ .local pmc grammar, token
+ grammar = new ['TAP';'Parser';'Grammar']
+ token = grammar.'tokenize'("# this is a comment")
+ $P0 = get_class ['TAP';'Parser';'Result';'Comment']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "# this is a comment")
+ $P0 = getattribute token, 'comment'
+ is($P0, 'this is a comment', "comment")
+.end
+
+.sub 'test_grammar_tests'
+ .local pmc grammar, token
+ grammar = new ['TAP';'Parser';'Grammar']
+ token = grammar.'tokenize'("ok 1 this is a test")
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "ok 1 this is a test")
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 1, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, 'this is a test', "description")
+
+ token = grammar.'tokenize'("not ok 2 this is a test # TODO whee!")
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "not ok 2 this is a test # TODO whee!")
+ $P0 = getattribute token, 'ok'
+ is($P0, 'not ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 2, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, 'this is a test', "description")
+ $P0 = getattribute token, 'directive'
+ is($P0, 'TODO', "directive")
+ $P0 = getattribute token, 'explanation'
+ is($P0, 'whee!', "explanation")
+
+ token = grammar.'tokenize'("ok 22 this is a test \\# TODO whee!")
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "ok 22 this is a test \\# TODO whee!")
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 22, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, 'this is a test \# TODO whee!', "description")
+
+ token = grammar.'tokenize'("not ok")
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "not ok")
+ $P0 = getattribute token, 'ok'
+ is($P0, 'not ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ null $P1
+ is($P0, $P1, "test_num")
+ $P0 = getattribute token, 'description'
+ null $P1
+ is($P0, $P1, "description")
+
+ token = grammar.'tokenize'("ok 42")
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "ok 42")
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 42, "test_num")
+ $P0 = getattribute token, 'description'
+ null $P1
+ is($P0, $P1, "description")
+.end
+
+.sub 'test_grammar_version'
+ .local pmc grammar, token
+ grammar = new ['TAP';'Parser';'Grammar']
+ token = grammar.'tokenize'("TAP version 12")
+ $P0 = get_class ['TAP';'Parser';'Result';'Version']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, "TAP version 12")
+ $P0 = getattribute token, 'version'
+ is($P0, 12, "version")
+.end
+
+.sub '_get_results'
+ .param pmc parser
+ .local pmc result
+ result = new 'ResizablePMCArray'
+ $P0 = get_hll_global ['TAP';'Parser'], 'next'
+ .local pmc coro
+ coro = newclosure $P0
+ L1:
+ $P0 = coro(parser)
+ if null $P0 goto L2
+ push result, $P0
+ goto L1
+ L2:
+ .return (result)
+.end
+
+.sub 'test_tap'
+ .local pmc parser, result, token
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+TAP version 13
+1..7
+ok 1 - input file opened
+... this is junk
+not ok first line of the input valid # todo some data
+# this is a comment
+ok 3 - read the rest of the file
+not ok 4 - this is a real failure
+ok 5 # skip we have no description
+ok 6 - you shall not pass! # TODO should have failed
+not ok 7 - Gandalf wins. Game over. # TODO 'bout time!
+END_TAP
+ result = _get_results(parser)
+ $I0 = elements result
+ is($I0, 11, "elements")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Version']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'version'
+ is($P0, 13, "version")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..7", "plan")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 7, "tests_planned")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 1, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- input file opened', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Unknown']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, '... this is junk', "raw")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'not ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 2, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, 'first line of the input valid', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ nok($I0)
+ $I0 = token.'has_todo'()
+ ok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+ $P0 = getattribute token, 'explanation'
+ is($P0, 'some data', "explanation")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Comment']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'comment'
+ is($P0, 'this is a comment', "comment")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 3, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- read the rest of the file', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'not ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 4, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- this is a real failure', "description")
+ $I0 = token.'is_ok'()
+ nok($I0)
+ $I0 = token.'is_actual_ok'()
+ nok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 5, "test_num")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ ok($I0)
+ $P0 = getattribute token, 'explanation'
+ is($P0, 'we have no description', "explanation")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 6, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- you shall not pass!', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ ok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+ $P0 = getattribute token, 'explanation'
+ is($P0, 'should have failed', "explanation")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'not ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 7, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- Gandalf wins. Game over.', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ nok($I0)
+ $I0 = token.'has_todo'()
+ ok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+ $P0 = getattribute token, 'explanation'
+ is($P0, "'bout time!", "explanation")
+
+ $P0 = getattribute parser, 'passed'
+ $S0 = join ', ', $P0
+ is($S0, "1, 2, 3, 5, 6, 7", "passed")
+ $P0 = getattribute parser, 'failed'
+ $S0 = join ', ', $P0
+ is($S0, "4", "failed")
+ $P0 = getattribute parser, 'actual_passed'
+ $S0 = join ', ', $P0
+ is($S0, "1, 3, 5, 6", "actual_passed")
+ $P0 = getattribute parser, 'actual_failed'
+ $S0 = join ', ', $P0
+ is($S0, "2, 4, 7", "actual_failed")
+ $P0 = getattribute parser, 'todo'
+ $S0 = join ', ', $P0
+ is($S0, "2, 6, 7", "todo")
+ $P0 = getattribute parser, 'skipped'
+ $S0 = join ', ', $P0
+ is($S0, "5", "skipped")
+ $P0 = getattribute parser, 'todo_passed'
+ $S0 = join ', ', $P0
+ is($S0, "6", "todo_passed")
+
+ $P0 = getattribute parser, 'plan'
+ is($P0, "1..7", "plan")
+ $P0 = getattribute parser, 'tests_planned'
+ is($P0, 7, "tests_planned")
+.end
+
+.sub 'test_tap_with_blank_lines'
+ .local pmc parser, result, token
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+1..2
+ok 1 - input file opened
+
+
+ok 2 - read the rest of the file
+END_TAP
+ result = _get_results(parser)
+ $I0 = elements result
+ is($I0, 5, "elements")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..2", "plan")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 2, "tests_planned")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 1, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- input file opened', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Unknown']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, '', "raw")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Unknown']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'raw'
+ is($P0, '', "raw")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 2, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- read the rest of the file', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'has_todo'()
+ nok($I0)
+ $I0 = token.'has_skip'()
+ nok($I0)
+.end
+
+.sub 'test_tap_has_problem'
+ .local pmc parser
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+TAP version 13
+1..2
+ok 1 - input file opened
+ok 2 - Gandalf wins. Game over. # TODO 'bout time!
+END_TAP
+ parser.'run'()
+ $I0 = parser.'failed'()
+ is($I0, 0, "not failed")
+ $I0 = parser.'todo_passed'()
+ is($I0, 1, "todo_passed")
+ $I0 = parser.'has_problems'()
+ nok($I0, "has not problem")
+
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+TAP version 13
+1..2
+SMACK
+END_TAP
+ parser.'run'()
+ $I0 = parser.'failed'()
+ is($I0, 0, "not failed")
+ $I0 = parser.'todo_passed'()
+ is($I0, 0, "todo_passed")
+ $I0 = parser.'parse_errors'()
+ is($I0, 2, "parse_errors")
+ $I0 = parser.'has_problems'()
+ ok($I0, "has_problems")
+.end
+
+.sub 'test_tap_version_wrong_place'
+ .local pmc parser
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+1..2
+ok 1 - input file opened
+TAP version 12
+ok 2 - Gandalf wins
+END_TAP
+ parser.'run'()
+ $I0 = parser.'failed'()
+ is($I0, 0, "not failed")
+ $I0 = parser.'parse_errors'()
+ is($I0, 1, "parse_errors")
+ $P0 = getattribute parser, 'parse_errors'
+ $S0 = shift $P0
+ is($S0, "If TAP version is present it must be the first line of output")
+.end
+
+.sub 'test_tap_trailing_plan'
+ .local pmc parser, result, token
+ parser = new ['TAP';'Parser']
+ parser.'tap'(<<'END_TAP')
+ok 1 - input file opened
+ok 2 - Gandalf wins
+1..2
+END_TAP
+ result = _get_results(parser)
+ $I0 = elements result
+ is($I0, 3, "elements")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 1, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- input file opened', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'is_unplanned'()
+ nok($I0, "unplanned")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Test']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'ok'
+ is($P0, 'ok', "ok")
+ $P0 = getattribute token, 'test_num'
+ is($P0, 2, "test_num")
+ $P0 = getattribute token, 'description'
+ is($P0, '- Gandalf wins', "description")
+ $I0 = token.'is_ok'()
+ ok($I0)
+ $I0 = token.'is_actual_ok'()
+ ok($I0)
+ $I0 = token.'is_unplanned'()
+ nok($I0, "unplanned")
+
+ token = shift result
+ $P0 = get_class ['TAP';'Parser';'Result';'Plan']
+ isa_ok(token, $P0)
+ $P0 = getattribute token, 'plan'
+ is($P0, "1..2", "plan")
+ $P0 = getattribute token, 'tests_planned'
+ is($P0, 2, "tests_planned")
+
+ $I0 = parser.'passed'()
+ is($I0, 2, "passed")
+ $I0 = parser.'failed'()
+ is($I0, 0, "failed")
+ $I0 = parser.'parse_errors'()
+ is($I0, 0, "parse_errors")
+ $I0 = parser.'has_problems'()
+ is($I0, 0, "has_problems")
+
+ $P0 = getattribute parser, 'plan'
+ is($P0, "1..2", "plan")
+ $P0 = getattribute parser, 'tests_planned'
+ is($P0, 2, "tests_planned")
+.end
+
+.sub 'test_aggregator'
+ .local pmc parser1, parser2, agg
+ parser1 = new ['TAP';'Parser']
+ parser1.'tap'(<<'END_TAP')
+1..5
+ok 1 - input file opened
+... this is junk
+not ok first line of the input valid # todo some data
+# this is a comment
+ok 3 - read the rest of the file
+not ok 4 - this is a real failure
+ok 5 # skip we have no description
+END_TAP
+ parser1.'run'()
+
+ parser2 = new ['TAP';'Parser']
+ parser2.'tap'(<<'END_TAP')
+1..7
+ok 1 - gentlemen, start your engines
+not ok first line of the input valid # todo some data
+# this is a comment
+ok 3 - read the rest of the file
+not ok 4 - this is a real failure
+ok 5
+ok 6 - you shall not pass! # TODO should have failed
+not ok 7 - Gandalf wins. Game over. # TODO 'bout time!
+END_TAP
+ parser2.'run'()
+
+ agg = new ['TAP';'Parser';'Aggregator']
+ agg.'add'('tap1', parser1)
+ agg.'add'('tap2', parser2)
+
+ $P0 = agg.'descriptions'()
+ $I0 = elements $P0
+ is($I0, 2, "descriptions")
+
+ $P0 = getattribute agg, 'passed'
+ is($P0, 10, "passed")
+ $P0 = getattribute agg, 'failed'
+ is($P0, 2, "failed")
+ $P0 = getattribute agg, 'todo'
+ is($P0, 4, "todo")
+ $P0 = getattribute agg, 'skipped'
+ is($P0, 1, "skipped")
+ $P0 = getattribute agg, 'parse_errors'
+ is($P0, 1, "parse_errors")
+ $P0 = getattribute agg, 'todo_passed'
+ is($P0, 1, "todo_passed")
+ $P0 = getattribute agg, 'total'
+ is($P0, 12, "total")
+ $P0 = getattribute agg, 'planned'
+ is($P0, 12, "planned")
+
+ $I0 = agg.'has_problems'()
+ ok($I0, "has_problems")
+ $I0 = agg.'has_errors'()
+ ok($I0, "has_errors")
+ $S0 = agg.'get_status'()
+ is($S0, 'FAIL', "status")
+ $I0 = agg.'all_passed'()
+ nok($I0, "all_passed")
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/library/test_builder_tester.t
==============================================================================
--- branches/ops_pct/t/library/test_builder_tester.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/test_builder_tester.t Wed May 5 08:45:29 2010 (r46302)
@@ -59,12 +59,12 @@
test.'skip'( 3, 'three skips' )
test_test( 'multiple skips' )
- test_out( 'not ok 9 # TODO some todo test' )
+ test_out( "not ok 9 # TODO \n\tFailed (TODO) test 'some todo test'" )
test.'todo'( 0, 'some todo test' )
test_test( 'failing todo test' )
- test_out( 'ok 10 # TODO another todo test' )
- test.'todo'( 1, 'another todo test' )
+ test_out( "ok 10 # TODO another todo test" )
+ test.'todo'( 1, 'reason', 'another todo test' )
test_test( 'passing todo test' )
test_pass()
Modified: branches/ops_pct/t/library/test_class.t
==============================================================================
--- branches/ops_pct/t/library/test_class.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/test_class.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/library/test_more.t
==============================================================================
--- branches/ops_pct/t/library/test_more.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/test_more.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2005-2010, Parrot Foundation.
# $Id$
@@ -797,23 +797,23 @@
.local pmc test
test = new [ 'Test'; 'Builder' ]
- test_out( 'ok 8 # TODO passing test' )
+ test_out( 'ok 8 # TODO todo reason' )
test.'todo'( 1, 'passing test', 'todo reason' )
test_test( 'todo test should pass, marked as TODO' )
- test_out( 'not ok 9 # TODO failing test' )
+ test_out( "not ok 9 # TODO todo reason\n\tFailed (TODO) test 'failing test'" )
test.'todo'( 0, 'failing test', 'todo reason' )
test_test( 'todo test should fail, marked as TODO' )
- test_out( 'ok 10 # TODO passing test' )
+ test_out( 'ok 10 # TODO todo reason' )
todo( 1, 'passing test', 'todo reason' )
test_test( 'todo test should pass, marked as TODO' )
- test_out( 'not ok 11 # TODO failing test' )
+ test_out( "not ok 11 # TODO todo reason\n\tFailed (TODO) test 'failing test'" )
todo( 0, 'failing test', 'todo reason' )
test_test( 'todo test should fail, marked as TODO' )
- test_out( 'not ok 12 # TODO' )
+ test_out( "not ok 12 # TODO \n\tFailed (TODO) test ''" )
todo( 0 )
test_test( 'todo test with no description or reason' )
Modified: branches/ops_pct/t/library/uuid.t
==============================================================================
--- branches/ops_pct/t/library/uuid.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/library/uuid.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/native_pbc/annotations.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/integer_4.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/number_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/number_4.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/string_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/native_pbc/string_4.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/ops_pct/t/oo/attributes.t
==============================================================================
--- branches/ops_pct/t/oo/attributes.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/attributes.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/composition.t
==============================================================================
--- branches/ops_pct/t/oo/composition.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/composition.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
@@ -34,16 +34,16 @@
multi_composition()
.end
-.sub badger :method
+.sub badger :method :nsentry('badger')
.return('Badger!')
.end
-.sub badger2 :method
+.sub badger2 :method :nsentry('badger2')
.return('Second Badger!')
.end
-.sub mushroom :method
+.sub mushroom :method :nsentry('mushroom')
.return('Mushroom!')
.end
-.sub snake :method
+.sub snake :method :nsentry('snake')
.return('Snake!')
.end
.sub fire
Modified: branches/ops_pct/t/oo/inheritance.t
==============================================================================
--- branches/ops_pct/t/oo/inheritance.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/inheritance.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/isa.t
==============================================================================
--- branches/ops_pct/t/oo/isa.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/isa.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/metamodel.t
==============================================================================
--- branches/ops_pct/t/oo/metamodel.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/metamodel.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/methods.t
==============================================================================
--- branches/ops_pct/t/oo/methods.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/methods.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
@@ -21,12 +21,14 @@
create_library()
- plan(5)
+ plan(6)
loading_methods_from_file()
loading_methods_from_eval()
overridden_find_method()
+ overridden_core_pmc()
+
delete_library()
.end
@@ -52,6 +54,7 @@
.sub delete_library
.local pmc os
+ $P0 = loadlib 'os'
os = new 'OS'
$S0 = "method_library.pir"
os.'rm'($S0)
@@ -126,6 +129,20 @@
.namespace []
+.sub 'overridden_core_pmc'
+ .local string msg
+ msg = "able to invoke overridden method on core PMC (TT #1596)"
+ $P0 = new 'ResizablePMCArray'
+ $I0 = $P0.'foo'()
+ is($I0, 1, msg)
+ .return()
+.end
+
+.namespace ['ResizablePMCArray']
+.sub 'foo' :method
+ .return(1)
+.end
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_pct/t/oo/mro-c3.t
==============================================================================
--- branches/ops_pct/t/oo/mro-c3.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/mro-c3.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
@@ -28,19 +28,19 @@
merge_two_pairs()
.end
-.sub method_A :method
+.sub method_A :method :nsentry('method_A')
.return('Method from A')
.end
-.sub method_B :method
+.sub method_B :method :nsentry('method_B')
.return('Method from B')
.end
-.sub method_C :method
+.sub method_C :method :nsentry('method_C')
.return('Method from C')
.end
-.sub method_D :method
+.sub method_D :method :nsentry('method_D')
.return('Method from D')
.end
Modified: branches/ops_pct/t/oo/names.t
==============================================================================
--- branches/ops_pct/t/oo/names.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/names.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/new.t
==============================================================================
--- branches/ops_pct/t/oo/new.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/new.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/ops.t
==============================================================================
--- branches/ops_pct/t/oo/ops.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/ops.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
@@ -20,7 +20,7 @@
.include 'except_types.pasm'
.include 'test_more.pir'
- plan(18)
+ plan(20)
op_addrole_p_p()
op_inspect_p_p()
@@ -89,6 +89,10 @@
$P3 = $P2.'inspect'('name')
is ($P3, 'Monkey', 'got name of found class')
+ null $S0
+ $P5 = get_class $S0
+ $I2 = isnull $P5
+ is ($I2, 1, 'null p gives null p')
.end
.sub op_get_class_p_p
@@ -113,6 +117,11 @@
$I1 = isa $P2 , 'Class'
ok ($I1, 'get_class with a namespace found a class')
is ($P3, 'Monkey', 'got name of found class')
+
+ null $P5
+ $P6 = get_class $P5
+ $I2 = isnull $P6
+ is ($I2, 1, 'null s gives null p')
.end
.sub op_addattribute_p_s
Modified: branches/ops_pct/t/oo/proxy.t
==============================================================================
--- branches/ops_pct/t/oo/proxy.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/proxy.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007, Parrot Foundation.
# $Id$
@@ -93,7 +93,7 @@
.end
.namespace ['Complex']
-.sub 'Complex' :method
+.sub 'Complex' :method :nsentry('Complex')
.return (self)
.end
Modified: branches/ops_pct/t/oo/root_new.t
==============================================================================
--- branches/ops_pct/t/oo/root_new.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/root_new.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/subclass.t
==============================================================================
--- branches/ops_pct/t/oo/subclass.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/subclass.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/oo/vtableoverride.t
==============================================================================
--- branches/ops_pct/t/oo/vtableoverride.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/oo/vtableoverride.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2009, Parrot Foundation.
# $Id$
@@ -18,12 +18,23 @@
.sub main :main
.include 'test_more.pir'
- plan(13)
+ plan(14)
newclass_tests()
subclass_tests()
vtable_implies_self_tests()
anon_vtable_tests()
+ invalid_vtable()
+.end
+
+.sub invalid_vtable
+ throws_substring(<<'CODE',' but was used with ', 'invalid :vtable throws an exception')
+ .namespace [ "Test" ]
+ .sub monkey :method :vtable("not_in_the_vtable")
+ .param int key
+ .return("monkey")
+ .end
+CODE
.end
.sub 'newclass_tests'
Modified: branches/ops_pct/t/op/00ff-dos.t
==============================================================================
--- branches/ops_pct/t/op/00ff-dos.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/00ff-dos.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/00ff-unix.t
==============================================================================
--- branches/ops_pct/t/op/00ff-unix.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/00ff-unix.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -26,7 +26,7 @@
.sub test_fileformat_unix
lives_ok( <<'CODE', 'fileformat unix' )
.sub main
- print "testing\n"
+ print "# testing\n"
.end
CODE
.end
Modified: branches/ops_pct/t/op/64bit.t
==============================================================================
--- branches/ops_pct/t/op/64bit.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/64bit.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/annotate-old.t
==============================================================================
--- branches/ops_pct/t/op/annotate-old.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/annotate-old.t Wed May 5 08:45:29 2010 (r46302)
@@ -24,8 +24,8 @@
=cut
TODO: {
- local $TODO = q|fails in fast and cgoto runcores - TT #1135|
- if $ENV{TEST_PROG_ARGS} =~ /--runcore=(fast|cgoto)/;
+ local $TODO = q|fails in fast runcore - TT #1135|
+ if ($ENV{TEST_PROG_ARGS} || '') =~ /--runcore=fast/;
pir_error_output_like( <<CODE, <<OUTPUT, 'unhandled exception from loaded function');
.sub main :main
Modified: branches/ops_pct/t/op/annotate.t
==============================================================================
--- branches/ops_pct/t/op/annotate.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/annotate.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/arithmetics.t
==============================================================================
--- branches/ops_pct/t/op/arithmetics.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/arithmetics.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/arithmetics_pmc.t
==============================================================================
--- branches/ops_pct/t/op/arithmetics_pmc.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/arithmetics_pmc.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/box.t
==============================================================================
--- branches/ops_pct/t/op/box.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/box.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2008-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/calling.t
==============================================================================
--- branches/ops_pct/t/op/calling.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/calling.t Wed May 5 08:45:29 2010 (r46302)
@@ -39,11 +39,12 @@
.pcc_sub main:
print "Ok 1\n"
set_args "0, 0", P0, I0
- get_results "0", I0
find_name P1, "foo"
print "Ok 2\n"
invokecc P1
print "Ok 5\n"
+ get_results "0", I0
+ print "Ok 6\n"
end
.pcc_sub foo:
get_params "0, 0", P0, I0
@@ -57,6 +58,7 @@
Ok 3
Ok 4
Ok 5
+Ok 6
OUTPUT
pasm_output_is( <<'CODE', <<'OUTPUT', "call - i, ic" );
@@ -84,9 +86,9 @@
.pcc_sub main:
set I16, 77
set_args "0, 0", 42, I16
- get_results "0, 0", I16, I17
find_name P1, "foo"
invokecc P1
+ get_results "0, 0", I16, I17
print I16
print "\n"
print I17
@@ -113,9 +115,9 @@
.pcc_sub main:
set I16, 77
set_args "0, 0", 42, I16
- get_results "0, 0", I16, I17
find_name P1, "foo"
invokecc P1
+ get_results "0, 0", I16, I17
print I16
print "\n"
print I17
@@ -146,9 +148,9 @@
new P16, 'Integer'
set P16, 101
set_args "0, 0, 0, 0, 0, 0, 0", 42, I16, 4.5, N16, S16, "ok 2\n", P16
- get_results "0, 0, 0, 0", I16, N16, S16, P16
find_name P1, "foo"
invokecc P1
+ get_results "0, 0, 0, 0", I16, N16, S16, P16
print I16
print "\n"
print N16
@@ -578,9 +580,9 @@
.pcc_sub main:
set I16, 77
set_args "0, 0", 42, I16
- get_results "0, 0", I16, I17
find_name P1, "foo"
invokecc P1
+ get_results "0, 0", I16, I17
print I16
print "\n"
print I17
@@ -608,8 +610,8 @@
.sub main :main
.const 'Sub' f = "foo"
print "main\n"
- get_results "0", $S0
invokecc f
+ get_results "0", $S0
print $S0
.end
.sub foo
@@ -633,8 +635,8 @@
.sub main :main
.const 'Sub' f = "foo"
print "main\n"
- get_results "0", $S0
invokecc f
+ get_results "0", $S0
print $S0
.end
.sub foo
@@ -662,8 +664,8 @@
.sub main :main
.const 'Sub' f = "foo"
print "main\n"
- get_results "0", $S0
invokecc f
+ get_results "0", $S0
print $S0
.end
.sub foo
@@ -991,13 +993,13 @@
f(o, "ok 4\n")
.end
.namespace ["Foo"]
-.sub bar :method
+.sub bar :method :nsentry('bar')
.param string s
print self
print " "
print s
.end
-.sub baz :method
+.sub baz :method :nsentry('baz')
.param string s
print self
print " "
@@ -1456,7 +1458,13 @@
pir_output_is( <<'CODE', <<'OUTPUT', "result_info op" );
.sub main :main
test()
+ $P0 = new 'FixedIntegerArray'
+ set_result_info $P0
+ $P0 = 1
$I0 = test()
+ $P0 = new 'FixedIntegerArray'
+ $P0 = 3
+ set_result_info $P0
($I1, $I2, $I3) = test()
.end
@@ -1485,8 +1493,18 @@
TESTSUB
$P0 = compreg "PIR"
$P1 = $P0($S0)
+ $P0 = new 'FixedIntegerArray'
+ set_result_info $P0
test()
+
+ $P0 = new 'FixedIntegerArray'
+ $P0 = 1
+ set_result_info $P0
$I0 = test()
+
+ $P0 = new 'FixedIntegerArray'
+ $P0 = 3
+ set_result_info $P0
($I1, $I2, $I3) = test()
.end
CODE
@@ -1716,9 +1734,9 @@
pasm_output_is( <<'CODE', <<'OUTPUT', "named - 1" );
.pcc_sub main:
set_args "0x200, 0, 0x200, 0", "b", 10, "a", 20
- get_results ""
find_name P1, "foo"
invokecc P1
+ get_results ""
print "ok\n"
end
.pcc_sub foo:
@@ -1739,9 +1757,9 @@
set P0['a'], 20
set P0['b'], 10
set_args "0x220", P0 # :flatten :named
- get_results ""
find_name P1, "foo"
invokecc P1
+ get_results ""
print "ok\n"
end
.pcc_sub foo:
@@ -1789,9 +1807,9 @@
pasm_output_is( <<'CODE', <<'OUTPUT', "named - 3 slurpy hash" );
.pcc_sub main:
set_args "0x200, 0, 0x200, 0,0x200, 0", "a", 10, "b", 20, 'c', 30
- get_results ""
find_name P1, "foo"
invokecc P1
+ get_results ""
print "ok\n"
end
.pcc_sub foo:
@@ -1820,9 +1838,9 @@
pasm_output_is( <<'CODE', <<'OUTPUT', "named - 4 positional -> named" );
.pcc_sub main:
set_args "0, 0, 0", 10, 20, 30
- get_results ""
find_name P1, "foo"
invokecc P1
+ get_results ""
print "ok\n"
end
.pcc_sub foo:
Modified: branches/ops_pct/t/op/cc_params.t
==============================================================================
--- branches/ops_pct/t/op/cc_params.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/cc_params.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/cmp-nonbranch.t
==============================================================================
--- branches/ops_pct/t/op/cmp-nonbranch.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/cmp-nonbranch.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/comp.t
==============================================================================
--- branches/ops_pct/t/op/comp.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/comp.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/copy.t
==============================================================================
--- branches/ops_pct/t/op/copy.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/copy.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/debuginfo.t
==============================================================================
--- branches/ops_pct/t/op/debuginfo.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/debuginfo.t Wed May 5 08:45:29 2010 (r46302)
@@ -24,11 +24,11 @@
=cut
$ENV{TEST_PROG_ARGS} ||= '';
-my $nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=(fast|cgoto)/
+my $nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=fast/
? "\\(unknown file\\)\n-1" : "debuginfo_\\d+\\.pasm\n\\d";
#SKIP: {
-#skip "disabled on fast-core",1 if $ENV{TEST_PROG_ARGS} =~ /--runcore=(fast|cgoto)/;
+#skip "disabled on fast-core",1 if $ENV{TEST_PROG_ARGS} =~ /--runcore=fast/;
pasm_output_like( <<'CODE', <<"OUTPUT", "getline, getfile" );
.pcc_sub main:
@@ -158,7 +158,7 @@
called from Sub 'main' pc (\d+|-1) \(.*?:(\d+|-1)\)$/
OUTPUT
-$nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=(fast|cgoto)/
+$nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=fast/
? '\(\(unknown file\):-1\)' : '\(xyz.pir:126\)';
pir_error_output_like( <<'CODE', <<"OUTPUT", "setfile and setline" );
@@ -173,7 +173,7 @@
/$nolineno/
OUTPUT
-$nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=(fast|cgoto)/
+$nolineno = $ENV{TEST_PROG_ARGS} =~ /--runcore=fast/
? '\(\(unknown file\):-1\)' : '\(foo.p6:128\)';
pir_error_output_like( <<'CODE', <<"OUTPUT", "setfile and setline" );
.sub main :main
Modified: branches/ops_pct/t/op/errorson.t
==============================================================================
--- branches/ops_pct/t/op/errorson.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/errorson.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/exceptions.t
==============================================================================
--- branches/ops_pct/t/op/exceptions.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/exceptions.t Wed May 5 08:45:29 2010 (r46302)
@@ -378,7 +378,7 @@
done.
OUTPUT
-# stringification is handled by a vtable method, which runs in a second
+# stringification is handled by a vtable, which runs in a second
# runloop. when an error in the method tries to go to a Error_Handler defined
# outside it, it winds up going to the inner runloop, giving strange results.
pir_output_is( <<'CODE', <<'OUTPUT', 'pop_eh out of context (2)', todo => 'runloop shenanigans' );
@@ -427,6 +427,14 @@
my @todo = $ENV{TEST_PROG_ARGS} =~ /--run-pbc/
? ( todo => '.tailcall and lexical maps not thawed from PBC, TT #1172' )
: ();
+#
+# this test is hanging in testr since pcc_hackathon_6Mar10 branch merge at r45108
+# converting to skip at the moment
+#
+
+SKIP: {
+ skip ".tailcall and lexical maps not thawed from PBC - hangs", 1 if @todo;
+
pir_output_is( <<'CODE', <<'OUTPUT', "exit_handler via exit exception", @todo );
.sub main :main
.local pmc a
@@ -451,6 +459,8 @@
a = 42
OUTPUT
+}
+
## Regression test for r14697. This probably won't be needed when PDD23 is
## fully implemented.
pir_error_output_like( <<'CODE', <<'OUTPUT', "invoke handler in calling sub" );
Modified: branches/ops_pct/t/op/fetch.t
==============================================================================
--- branches/ops_pct/t/op/fetch.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/fetch.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -28,7 +28,6 @@
.end
.sub 'test_fetch_keyed_int'
- diag( 'test_fetch_keyed_int' )
$P0 = new [ 'Hash' ]
$P1 = box 111
$P0[1] = $P1
@@ -48,7 +47,6 @@
.end
.sub 'test_fetch_keyed_str'
- diag( 'test_fetch_keyed_str' )
$P0 = new [ 'Hash' ]
$P1 = box 111
$P0['one'] = $P1
@@ -68,7 +66,6 @@
.end
.sub 'test_fetch_keyed_pmc'
- diag( 'test_fetch_keyed_pmc' )
$P0 = new [ 'Hash' ]
$P1 = box 111
Modified: branches/ops_pct/t/op/gc-leaky.t
==============================================================================
--- branches/ops_pct/t/op/gc-leaky.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/gc-leaky.t Wed May 5 08:45:29 2010 (r46302)
@@ -48,7 +48,7 @@
if counter > 1e6 goto done
goto loop
done:
- say ""
+ diag("")
$I1 = interpinfo.INTERPINFO_GC_COLLECT_RUNS
$I2 = interpinfo.INTERPINFO_GC_MARK_RUNS
Modified: branches/ops_pct/t/op/gc.t
==============================================================================
--- branches/ops_pct/t/op/gc.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/gc.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -508,7 +508,6 @@
# coro context and invalid return continuations
# this is a stripped down version of imcc/t/syn/pcc_16
-# s. also src/pmc/retcontinuation.pmc
.sub coro_context_ret_continuation
.const 'Sub' $P0 = "co1"
Modified: branches/ops_pct/t/op/globals.t
==============================================================================
--- branches/ops_pct/t/op/globals.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/globals.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/ifunless.t
==============================================================================
--- branches/ops_pct/t/op/ifunless.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/ifunless.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2005, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/inf_nan.t
==============================================================================
--- branches/ops_pct/t/op/inf_nan.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/inf_nan.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/integer.t
==============================================================================
--- branches/ops_pct/t/op/integer.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/integer.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/interp.t
==============================================================================
--- branches/ops_pct/t/op/interp.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/interp.t Wed May 5 08:45:29 2010 (r46302)
@@ -81,8 +81,8 @@
end
CODE
/^ok\s1\n
-(?:\s+8.*)?\n
-(?:\s+10.*)?\n
+(?:0+8.*)?\n
+(?:0+a.*)?\n
ok\s2\n$/x
OUTPUT
@@ -154,9 +154,6 @@
$I0 = interpinfo .INTERPINFO_CURRENT_RUNCORE
if $I0 == .PARROT_FUNCTION_CORE goto ok1
if $I0 == .PARROT_FAST_CORE goto ok1
- if $I0 == .PARROT_SWITCH_CORE goto ok1
- if $I0 == .PARROT_CGOTO_CORE goto ok1
- if $I0 == .PARROT_CGP_CORE goto ok1
if $I0 == .PARROT_EXEC_CORE goto ok1
if $I0 == .PARROT_GC_DEBUG_CORE goto ok1
print 'not '
Modified: branches/ops_pct/t/op/io.t
==============================================================================
--- branches/ops_pct/t/op/io.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/io.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2008, Parrot Foundation.
# $Id$
@@ -16,19 +16,41 @@
=cut
-.const int TESTS = 4
+.const int TESTS = 5
.sub 'main' :main
.include 'test_more.pir'
plan(TESTS)
+ open_delegates_to_filehandle_pmc()
open_null_filename()
open_null_mode()
open_pipe_for_reading()
open_pipe_for_writing()
.end
+.sub open_delegates_to_filehandle_pmc
+ load_bytecode 'P6object.pbc'
+
+ .local pmc p6meta, interp, classes, classid
+ p6meta = get_root_global ["parrot"], "P6metaclass"
+ p6meta.'new_class'('Testing')
+
+ interp = getinterp
+ classes = interp[0]
+ classid = classes['Testing']
+ $I0 = classes['FileHandle']
+ set classes['FileHandle'], classid
+
+ $P1 = open '/foo'
+ is($P1,42,'open opcode delegates to the open method on the FileHandle PMC')
+
+ # replace the original, so we don't break other tests
+ set classes['FileHandle'], $I0
+
+.end
+
.sub 'open_null_filename'
push_eh open_null_filename_failed
null $S0
@@ -127,7 +149,8 @@
.local pmc pipe
pipe = open command, 'wp'
unless pipe goto open_pipe_for_writing_failed
- pipe.'puts'("ok - open pipe for writing\n")
+
+ pipe.'puts'("ok 5 - open pipe for writing\n")
close pipe
.return ()
@@ -140,6 +163,14 @@
.end
+.namespace ["Testing"]
+
+.sub open :method
+ .param pmc args :slurpy
+ .return(42)
+.end
+
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_pct/t/op/literal.t
==============================================================================
--- branches/ops_pct/t/op/literal.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/literal.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/number.t
==============================================================================
--- branches/ops_pct/t/op/number.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/number.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Deleted: branches/ops_pct/t/op/pushaction.t
==============================================================================
--- branches/ops_pct/t/op/pushaction.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,176 +0,0 @@
-#! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use lib qw( . lib ../lib ../../lib );
-
-use Test::More;
-use Parrot::Test tests => 7;
-
-=head1 NAME
-
-t/op/pushaction.t - Test the C<pushaction> Instruction
-
-=head1 SYNOPSIS
-
- % prove t/pmc/pushaction.t
-
-=head1 DESCRIPTION
-
-Tests the C<pushaction> instruction.
-
-=cut
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "pushmark" );
- pushmark 10
- print "ok 1\n"
- popmark 10
- print "ok 2\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "pushmark nested" );
- pushmark 10
- pushmark 11
- print "ok 1\n"
- popmark 11
- popmark 10
- print "ok 2\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_error_output_like( <<'CODE', <<'OUTPUT', "pushmark - pop wrong one" );
- pushmark 10
- print "ok 1\n"
- popmark 500
- print "never\n"
- end
-CODE
-/Mark 500 not found/
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "pushaction" );
- pushmark 10
- print "ok 1\n"
- .const 'Sub' P10 = "action"
- pushaction P10
- print "ok 2\n"
- popmark 10
- print "ok 3\n"
- end
-.pcc_sub action:
- get_params "0", I5
- print "in action I5 = "
- print I5
- print "\n"
- returncc
-CODE
-ok 1
-ok 2
-in action I5 = 0
-ok 3
-OUTPUT
-
-pir_output_is( <<'CODE', <<'OUTPUT', "pushaction - end in main" );
-.sub main :main
- print "main\n"
- .const 'Sub' at_exit = "exit_handler"
- pushaction at_exit
- # IMCC inserts end here, because it is :main
-.end
-
-.sub exit_handler
- .param int flag
- print "at_exit, flag = "
- say flag
-.end
-CODE
-main
-OUTPUT
-
-$ENV{TEST_PROG_ARGS} ||= '';
-my @todo = $ENV{TEST_PROG_ARGS} =~ /--run-pbc/
- ? ( todo => 'lexicals not thawed properly from PBC, TT #1171' )
- : ();
-pir_output_is( <<'CODE', <<'OUTPUT', "pushaction as closure", @todo );
-.sub main :main
- .local pmc a
- .lex 'a', a
- pushmark 10
- a = new 'Integer'
- a = 42
- print "main\n"
- .const 'Sub' at_exit = "exit_handler"
- pushaction at_exit
-
- popmark 10
- .return()
-.end
-
-.sub exit_handler :outer(main)
- .param int flag
- print "at popmark, flag = "
- say flag
- .local pmc a
- a = find_lex 'a'
- print 'a = '
- say a
-.end
-CODE
-main
-at popmark, flag = 0
-a = 42
-OUTPUT
-
-# This test is entirely irrelevant under the new implementation of
-# continuations free from the stack. Leave it for now, to see whether there
-# is some other aspect of the stack, runloops, and exceptions that can be
-# tested.
-# exception handlers are still run in an inferior runloop, which messes up
-# nonlocal exit from within handlers.
-pir_output_like(
- <<'CODE', <<'OUTPUT', "pushaction: error while handling error", todo => 'runloop shenanigans' );
-.sub main :main
- push_eh h
- print "main\n"
- .const 'Sub' at_exit = "exit_handler"
- pushaction at_exit
- $P1 = new 'Exception'
- throw $P1
- print "never 1\n"
-h:
- ## this is never actually reached, because exit_handler throws an unhandled
- ## exception before the handler is entered.
- print "in outer handler\n"
-.end
-
-.sub exit_handler :outer(main)
- .param int flag
- print "at_exit, flag = "
- say flag
- $P2 = new 'Exception'
- throw $P2
- print "never 2\n"
-.end
-CODE
-/^main
-at_exit, flag = 1
-No exception handler/
-OUTPUT
-
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/op/sprintf.t
==============================================================================
--- branches/ops_pct/t/op/sprintf.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/sprintf.t Wed May 5 08:45:29 2010 (r46302)
@@ -202,8 +202,8 @@
# remove /'s
$S0 = substr expected, 0, 1
if $S0 != "/" goto eh_bad_line
- substr expected, 0, 1, ''
- substr expected, -1, 1, ''
+ expected = replace expected, 0, 1, ''
+ expected = replace expected, -1, 1, ''
$I0 = index $S1, expected
if $I0 == -1 goto is_nok
@@ -411,7 +411,7 @@
# NOTE: there can be multiple tabs between entries, so skip until
# we have something.
# remove the trailing newline from record
- chopn record, 1
+ record = chopn record, 1
$P1 = split "\t", record
$I0 = elements $P1 # length of array
.local int tab_number
Modified: branches/ops_pct/t/op/sprintf2.t
==============================================================================
--- branches/ops_pct/t/op/sprintf2.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/sprintf2.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/string.t
==============================================================================
--- branches/ops_pct/t/op/string.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/string.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -19,7 +19,7 @@
.sub main :main
.include 'test_more.pir'
- plan(412)
+ plan(369)
set_s_s_sc()
test_clone()
@@ -27,7 +27,6 @@
test_length_i_s()
zero_length_substr()
chopn_with_clone()
- chopn_with_set()
chopn_oob_values()
three_argument_chopn()
three_argument_chopn__oob_values()
@@ -37,18 +36,19 @@
exception_substr_oob()
len_greater_than_strlen()
len_greater_than_strlen_neg_offset()
- five_arg_substr_w_rep_eq_length()
- five_arg_substr_w_replacement_gt_length()
- five_arg_substr_w_replacement_lt_length()
- five_arg_substr__offset_at_end_of_string()
- exception_five_arg_substr__offset_past_end_of_string()
- five_arg_substr_neg_offset_repl_eq_length()
- five_arg_substr_neg_offset_repl_gt_length()
- five_arg_substr_neg_offset_repl_lt_length()
- exception_five_arg_substr_neg_offset_out_of_string()
- five_arg_substr_length_gt_strlen()
- five_arg_substr_length_gt_strlen_neg_offset()
- four_arg_replacement_only_substr()
+ replace_w_rep_eq_length()
+ replace_w_replacement_gt_length()
+ replace_w_replacement_lt_length()
+ replace_vs_hash()
+ replace__offset_at_end_of_string()
+ exception_replace__offset_past_end_of_string()
+ replace_neg_offset_repl_eq_length()
+ replace_neg_offset_repl_gt_length()
+ replace_neg_offset_repl_lt_length()
+ exception_replace_neg_offset_out_of_string()
+ replace_length_gt_strlen()
+ replace_length_gt_strlen_neg_offset()
+ replace_only_substr()
three_arg_substr()
exception_substr__pos_offset_zero_length_string()
substr_offset_zero_zero_length_string()
@@ -57,7 +57,7 @@
zero_length_substr_zero_length_string()
zero_length_substr_zero_length_string()
three_arg_substr_zero_length_string()
- five_arg_substr_zero_length_string()
+ replace_zero_length_string()
four_arg_substr_replace_zero_length_string()
concat_s_s_sc_null_onto_null()
concat_s_sc_repeated_two_arg_concats()
@@ -122,10 +122,8 @@
correct_precision_for_sprintf_x()
test_exchange()
test_find_encoding()
- test_string_encoding()
test_assign()
assign_and_globber()
- assign_and_globber_2()
bands_null_string()
bands_2()
bands_3()
@@ -141,8 +139,6 @@
bnots_null_string()
bnots_2()
bnots_cow()
- transcode_to_utf8()
- string_chartype()
split_on_empty_string()
split_on_non_empty_string()
test_join()
@@ -197,9 +193,6 @@
clone $S1, "Bar1"
is( $S1, "Bar1", '' )
-
- chopn $S1, 1
- is( $S1, "Bar", 'the contents of $S1 are no longer constant' )
.end
.sub clone_null
@@ -228,42 +221,28 @@
set $S5, "japhXYZW"
clone $S3, $S4
set $I1, 4
- chopn $S4, 3
- chopn $S4, 1
- chopn $S5, $I1
+ $S4 = chopn $S4, 3
+ $S4 = chopn $S4, 1
+ $S5 = chopn $S5, $I1
is( $S4, "JAPH", '' )
is( $S5, "japh", '' )
is( $S3, "JAPHxyzw", '' )
.end
-.sub chopn_with_set
- set $S4, "JAPHxyzw"
- set $S5, "japhXYZW"
- set $S3, $S4
- set $I1, 4
- chopn $S4, 3
- chopn $S4, 1
- chopn $S5, $I1
-
- is( $S4, "JAPH", '' )
- is( $S5, "japh", '' )
- is( $S3, "JAPH", '' )
-.end
-
.sub chopn_oob_values
set $S1, "A string of length 21"
- chopn $S1, 0
+ $S1 = chopn $S1, 0
is( $S1, "A string of length 21", '' )
- chopn $S1, 4
+ $S1 = chopn $S1, 4
is( $S1, "A string of lengt", '' )
# -length cuts now
- chopn $S1, -4
+ $S1 = chopn $S1, -4
is( $S1, "A st", '' )
- chopn $S1, 1000
+ $S1 = chopn $S1, 1000
is( $S1, "", '' )
.end
@@ -292,10 +271,6 @@
set $S3, $S1
chopn $S2, $S1, 3
is( $S3, "Parrot", '' )
-
- set $S3, $S1
- chopn $S1, 3
- is( $S3, "Par", '' )
.end
#
.sub three_argument_chopn__oob_values
@@ -391,113 +366,106 @@
is( $S1, "length 21", '' )
.end
-.sub five_arg_substr_w_rep_eq_length
+.sub replace_w_rep_eq_length
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, 4, 3, $S1
- is( $S0, "abcdxyzhijk", '' )
- is( $S1, "xyz", '' )
- is( $S2, "efg", '' )
+ replace $S2, $S0, 4, 3, $S1
+ is( $S2, "abcdxyzhijk", '' )
.end
-.sub five_arg_substr_w_replacement_gt_length
+.sub replace_w_replacement_gt_length
set $S0, "abcdefghijk"
set $S1, "xyz0123"
- substr $S2, $S0, 4, 3, $S1
- is( $S0, "abcdxyz0123hijk", '' )
- is( $S1, "xyz0123", '' )
- is( $S2, "efg", '' )
+ $S2 = replace $S0, 4, 3, $S1
+ is( $S2, "abcdxyz0123hijk", '' )
.end
-.sub five_arg_substr_w_replacement_lt_length
+.sub replace_w_replacement_lt_length
set $S0, "abcdefghijk"
set $S1, "x"
- substr $S2, $S0, 4, 3, $S1
- is( $S0, "abcdxhijk", '' )
- is( $S1, "x", '' )
- is( $S2, "efg", '' )
+ $S2 = replace $S0, 4, 3, $S1
+ is( $S2, "abcdxhijk", '' )
.end
-.sub five_arg_substr__offset_at_end_of_string
- set $S0, "abcdefghijk"
- set $S1, "xyz"
- substr $S2, $S0, 11, 3, $S1
- is( $S0, "abcdefghijkxyz", '' )
- is( $S1, "xyz", '' )
- is( $S2, "", '' )
+.sub replace__offset_at_end_of_string
+ set $S0, "abcdefghijk"
+ set $S1, "xyz"
+ $S2 = replace $S0, 11, 3, $S1
+ is( $S2, "abcdefghijkxyz", '' )
+.end
+
+.sub replace_vs_hash
+ # Check that string hashval properly updated.
+ .local pmc hash
+ hash = new ['Hash']
+ $S0 = "fooo"
+ hash[$S0] = 1
+ hash["foo"] = 42
+ $S0 = replace $S0, 1, 1, ''
+ $S1 = hash[$S0]
+ is( $S1, '42', 'replace behave it self')
.end
-.sub exception_five_arg_substr__offset_past_end_of_string
+.sub exception_replace__offset_past_end_of_string
set $S0, "abcdefghijk"
set $S1, "xyz"
push_eh handler
- substr $S2, $S0, 12, 3, $S1
+ $S2 = replace $S0, 12, 3, $S1
ok(0,"no exception")
handler:
.exception_is( "Can only replace inside string or index after end of string" )
.end
-.sub five_arg_substr_neg_offset_repl_eq_length
+.sub replace_neg_offset_repl_eq_length
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, -3, 3, $S1
- is( $S0, "abcdefghxyz", '' )
- is( $S1, "xyz", '' )
- is( $S2, "ijk", '' )
+ $S2 = replace $S0, -3, 3, $S1
+ is( $S2, "abcdefghxyz", '' )
.end
-.sub five_arg_substr_neg_offset_repl_gt_length
+.sub replace_neg_offset_repl_gt_length
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, -6, 2, $S1
- is( $S0, "abcdexyzhijk", '' )
- is( $S1, "xyz", '' )
- is( $S2, "fg", '' )
+ $S2 = replace $S0, -6, 2, $S1
+ is( $S2, "abcdexyzhijk", '' )
.end
-.sub five_arg_substr_neg_offset_repl_lt_length
+.sub replace_neg_offset_repl_lt_length
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, -6, 4, $S1
- is( $S0, "abcdexyzjk", '' )
- is( $S1, "xyz", '' )
- is( $S2, "fghi", '' )
+ $S2 = replace $S0, -6, 4, $S1
+ is( $S2, "abcdexyzjk", '' )
.end
-.sub exception_five_arg_substr_neg_offset_out_of_string
+.sub exception_replace_neg_offset_out_of_string
set $S0, "abcdefghijk"
set $S1, "xyz"
push_eh handler
- substr $S2, $S0, -12, 4, $S1
+ $S2 = replace $S0, -12, 4, $S1
ok(0,"no exception")
handler:
.exception_is( "Can only replace inside string or index after end of string" )
.end
-.sub five_arg_substr_length_gt_strlen
+.sub replace_length_gt_strlen
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, 3, 11, $S1
- is( $S0, "abcxyz", '' )
- is( $S1, "xyz", '' )
- is( $S2, "defghijk", '' )
+ $S2 = replace $S0, 3, 11, $S1
+ is( $S2, "abcxyz", '' )
.end
-.sub five_arg_substr_length_gt_strlen_neg_offset
+.sub replace_length_gt_strlen_neg_offset
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S2, $S0, -3, 11, $S1
- is( $S0, "abcdefghxyz", '' )
- is( $S1, "xyz", '' )
- is( $S2, "ijk", '' )
+ $S2 = replace $S0, -3, 11, $S1
+ is( $S2, "abcdefghxyz", '' )
.end
-.sub four_arg_replacement_only_substr
+.sub replace_only_substr
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S0, 3, 3, $S1
- is( $S0, "abcxyzghijk", '' )
- is( $S1, "xyz", '' )
+ $S2 = replace $S0, 3, 3, $S1
+ is( $S2, "abcxyzghijk", '' )
.end
.sub three_arg_substr
@@ -556,34 +524,28 @@
is( $S1, "", '' )
.end
-.sub five_arg_substr_zero_length_string
+.sub replace_zero_length_string
set $S0, ""
set $S1, "xyz"
- substr $S2, $S0, 0, 3, $S1
- is( $S0, "xyz", '' )
- is( $S1, "xyz", '' )
- is( $S2, "", '' )
+ $S2 = replace $S0, 0, 3, $S1
+ is( $S2, "xyz", '' )
set $S3, ""
set $S4, "abcde"
- substr $S5, $S3, 0, 0, $S4
- is( $S3, "abcde", '' )
- is( $S4, "abcde", '' )
- is( $S5, "", '' )
+ $S5 = replace $S3, 0, 0, $S4
+ is( $S5, "abcde", '' )
.end
.sub four_arg_substr_replace_zero_length_string
set $S0, ""
set $S1, "xyz"
- substr $S0, 0, 3, $S1
+ $S0 = replace $S0, 0, 3, $S1
is( $S0, "xyz", '' )
- is( $S1, "xyz", '' )
set $S2, ""
set $S3, "abcde"
- substr $S2, 0, 0, $S3
+ $S2 = replace $S2, 0, 0, $S3
is( $S2, "abcde", '' )
- is( $S3, "abcde", '' )
.end
.sub concat_s_s_sc_null_onto_null
@@ -638,8 +600,8 @@
set $S2, "JAPH"
concat $S0, $S2, ""
concat $S1, "", $S2
- chopn $S0, 1
- chopn $S1, 1
+ $S0 = chopn $S0, 1
+ $S1 = chopn $S1, 1
is( $S2, "JAPH", '' )
.end
@@ -733,7 +695,7 @@
ord $I0,$S0
ok( 0, 'no exception: 2-param ord, empty string register' )
handler:
- .exception_is( 'Cannot get character of empty string' )
+ .exception_is( 'Cannot get character of NULL string' )
.end
.sub exception_three_param_ord_empty_string
@@ -749,7 +711,7 @@
ord $I0,$S0,0
ok( 0, 'no exception: 3-param ord, empty string register' )
handler:
- .exception_is( 'Cannot get character of empty string' )
+ .exception_is( 'Cannot get character of NULL string' )
.end
.sub two_param_ord_one_character_string
@@ -1195,7 +1157,7 @@
.sub cow_with_chopn_leaving_original_untouched
set $S0, "ABCD"
clone $S1, $S0
- chopn $S0, 1
+ $S0 = chopn $S0, 1
is( $S0, "ABC", 'COW with chopn leaving original untouched' )
is( $S1, "ABCD", 'COW with chopn leaving original untouched' )
.end
@@ -1477,34 +1439,6 @@
# is( $I0, "3", 'find_encoding' )
.end
-.sub test_string_encoding
- skip(4, "no more visible encoding" )
- # set $I0, 0
- # new $S0, 0, $I0
- # string_encoding $I1, $S0
- # eq $I0, $I1, OK1
- # print "not "
- # OK1: print "ok 1\n"
- # set $I0, 1
- # new $S0, 0, $I0
- # string_encoding $I1, $S0
- # eq $I0, $I1, OK2
- # print "not "
- # OK2: print "ok 2\n"
- # set $I0, 2
- # new $S0, 0, $I0
- # string_encoding $I1, $S0
- # eq $I0, $I1, OK3
- # print "not "
- # OK3: print "ok 3\n"
- # set $I0, 3
- # new $S0, 0, $I0
- # string_encoding $I1, $S0
- # eq $I0, $I1, OK4
- # print "not "
- # OK4: print "ok 4\n"
-.end
-
.sub test_assign
set $S4, "JAPH"
assign $S5, $S4
@@ -1520,40 +1454,32 @@
is( $S5, "JAPH", 'assign & globber' )
.end
-.sub assign_and_globber_2
- set $S4, "JAPH"
- set $S5, $S4
- assign $S4, "Parrot"
- is( $S4, "Parrot", 'assign & globber 2' )
- is( $S5, "Parrot", 'assign & globber 2' )
-.end
-
.sub bands_null_string
null $S1
set $S2, "abc"
- bands $S1, $S2
+ $S1 = bands $S1, $S2
null $S3
is( $S1, $S3, 'ok1' )
set $S1, ""
- bands $S1, $S2
+ $S1 = bands $S1, $S2
nok( $S1, 'ok2' )
null $S2
set $S1, "abc"
- bands $S1, $S2
+ $S1 = bands $S1, $S2
null $S3
is( $S1, $S3, 'ok3' )
set $S2, ""
- bands $S1, $S2
+ $S1 = bands $S1, $S2
nok( $S1, 'ok4' )
.end
.sub bands_2
set $S1, "abc"
set $S2, "EE"
- bands $S1, $S2
+ $S1 = bands $S1, $S2
is( $S1, "A@", 'bands 2' )
is( $S2, "EE", 'bands 2' )
.end
@@ -1570,33 +1496,33 @@
.sub bands_cow
set $S1, "foo"
substr $S2, $S1, 0, 3
- bands $S1, "bar"
+ $S1 = bands $S1, "bar"
is( $S2, "foo", 'bands COW' )
.end
.sub bors_null_string
null $S1
null $S2
- bors $S1, $S2
+ $S1 = bors $S1, $S2
null $S3
is( $S1, $S3, 'bors NULL string' )
null $S1
set $S2, ""
- bors $S1, $S2
+ $S1 = bors $S1, $S2
null $S3
is( $S1, $S3, 'bors NULL string' )
- bors $S2, $S1
+ $S2 = bors $S2, $S1
is( $S2, $S3, 'bors NULL string' )
null $S1
set $S2, "def"
- bors $S1, $S2
+ $S1 = bors $S1, $S2
is( $S1, "def", 'bors NULL string' )
null $S2
- bors $S1, $S2
+ $S1 = bors $S1, $S2
is( $S1, "def", 'bors NULL string' )
null $S1
@@ -1623,7 +1549,7 @@
.sub bors_2
set $S1, "abc"
set $S2, "EE"
- bors $S1, $S2
+ $S1 = bors $S1, $S2
is( $S1, "egc", 'bors 2' )
is( $S2, "EE", 'bors 2' )
.end
@@ -1640,33 +1566,33 @@
.sub bors_cow
set $S1, "foo"
substr $S2, $S1, 0, 3
- bors $S1, "bar"
+ $S1 = bors $S1, "bar"
is( $S2, "foo", 'bors COW' )
.end
.sub bxors_null_string
null $S1
null $S2
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
null $S3
is( $S1, $S3, 'bxors NULL string' )
null $S1
set $S2, ""
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
null $S3
is( $S1, $S3, 'bxors NULL string' )
- bxors $S2, $S1
+ $S2 = bxors $S2, $S1
is( $S2, $S3, 'bxors NULL string' )
null $S1
set $S2, "abc"
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
is( $S1, "abc", 'bxors NULL string' )
null $S2
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
is( $S1, "abc", 'bxors NULL string' )
null $S1
@@ -1693,13 +1619,13 @@
.sub bxors_2
set $S1, "a2c"
set $S2, "Dw"
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
is( $S1, "%Ec", 'bxors 2' )
is( $S2, "Dw", 'bxors 2' )
set $S1, "abc"
set $S2, " X"
- bxors $S1, $S2
+ $S1 = bxors $S1, $S2
is( $S1, "ABCX", 'bxors 2' )
is( $S2, " X", 'bxors 2' )
.end
@@ -1723,7 +1649,7 @@
.sub bxors_cow
set $S1, "foo"
substr $S2, $S1, 0, 3
- bxors $S1, "bar"
+ $S1 = bxors $S1, "bar"
is( $S2, "foo", 'bxors COW' )
.end
@@ -1768,25 +1694,6 @@
is( $S2, "foo", 'bnots COW' )
.end
-.sub transcode_to_utf8
- skip( 2, "no more transcode" )
- # set $S1, "ASCII is the same as UTF8\n"
- # find_encoding $I1, "utf8"
- # transcode $S2, $S1, $I1
- # is( $S1, "ASCII is the same as UTF8", 'transcode to utf8' )
- # is( $S2, "ASCII is the same as UTF8", 'transcode to utf8' )
-.end
-
-.sub string_chartype
- skip( 1, "no more chartype" )
-
- # set $S0, "Test String"
- # find_chartype $I0, "usascii"
- # set_chartype $S0, $I0
- # string_chartype $I1, $S0
- # is( $I0, $I1, 'string_chartype' )
-.end
-
.sub split_on_empty_string
split $P1, "", ""
set $I1, $P1
@@ -1865,19 +1772,6 @@
OK1:
ok($I99, 'eq_addr/ne_addr')
- set $S1, "Test"
- set $I99, 0
- eq_addr $S1, $S0, BAD2
- set $I99, 1
- BAD2:
- ok($I99, 'eq_addr/ne_addr')
-
- set $I99, 1
- ne_addr $S1, $S0, OK3
- set $I99, 0
- OK3:
- ok($I99, 'eq_addr/ne_addr')
-
set $S0, $S1
set $I99, 0
ne_addr $S1, $S0, BAD4
@@ -1907,9 +1801,6 @@
upcase $S1, $S0
is( $S1, "ABCD012YZ", 'upcase' )
- upcase $S0
- is( $S0, "ABCD012YZ", 'upcase inplace' )
-
push_eh catch1
null $S9
null $S0
@@ -1926,7 +1817,7 @@
push_eh catch2
null $S9
null $S0
- upcase $S0
+ $S0 = upcase $S0
pop_eh
goto null2
catch2:
@@ -1942,9 +1833,6 @@
downcase $S1, $S0
is( $S1, "abcd012yz", 'downcase' )
- downcase $S0
- is( $S0, "abcd012yz", 'downcase inplace' )
-
push_eh catch1
null $S9
null $S0
@@ -1961,7 +1849,7 @@
push_eh catch2
null $S9
null $S0
- downcase $S0
+ $S0 = downcase $S0
pop_eh
goto null2
catch2:
@@ -1977,9 +1865,6 @@
titlecase $S1, $S0
is( $S1, "Abcd012yz", 'titlecase' )
- titlecase $S0
- is( $S0, "Abcd012yz", 'titlecase inplace' )
-
push_eh catch1
null $S9
null $S0
@@ -1996,7 +1881,7 @@
push_eh catch2
null $S9
null $S0
- titlecase $S0
+ $S0 = titlecase $S0
pop_eh
goto null2
catch2:
@@ -2114,7 +1999,7 @@
.param string s
$I0 = index s, '::'
is( s, "Foo::Bar", 'bug 60030' )
- substr s, $I0, 2, "/"
+ s = replace s, $I0, 2, "/"
is( s, "Foo/Bar", 'bug 60030' )
collect
is( s, "Foo/Bar", 'bug 60030' )
Modified: branches/ops_pct/t/op/string_cmp.t
==============================================================================
--- branches/ops_pct/t/op/string_cmp.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/string_cmp.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/string_cs.t
==============================================================================
--- branches/ops_pct/t/op/string_cs.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/string_cs.t Wed May 5 08:45:29 2010 (r46302)
@@ -6,7 +6,7 @@
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 52;
+use Parrot::Test tests => 47;
use Parrot::Config;
=head1 NAME
@@ -263,48 +263,16 @@
iso-8859-1
OUTPUT
-pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_i" );
- set S1, "abc"
- find_charset I0, "iso-8859-1"
- trans_charset S1, I0
- print S1
- print "\n"
- charset I0, S1
- charsetname S2, I0
- print S2
- print "\n"
- end
-CODE
-abc
-iso-8859-1
-OUTPUT
-
-pasm_error_output_like( <<'CODE', <<OUTPUT, "trans_charset_s_i - lossy" );
+pasm_error_output_like( <<'CODE', <<OUTPUT, "trans_charset_s_s_i - lossy" );
set S1, iso-8859-1:"abcä"
find_charset I0, "ascii"
- trans_charset S1, I0
+ trans_charset S2, S1, I0
print "never\n"
end
CODE
/lossy conversion to ascii/
OUTPUT
-pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_i - same" );
- set S1, ascii:"abc"
- find_charset I0, "ascii"
- trans_charset S1, I0
- print S1
- print "\n"
- charset I0, S1
- charsetname S2, I0
- print S2
- print "\n"
- end
-CODE
-abc
-ascii
-OUTPUT
-
pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_s_i iso-8859-1 to binary" );
set S0, iso-8859-1:"abc"
find_charset I0, "binary"
@@ -321,22 +289,6 @@
binary
OUTPUT
-pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_i iso-8859-1 to binary" );
- set S1, iso-8859-1:"abc"
- find_charset I0, "binary"
- trans_charset S1, I0
- print S1
- print "\n"
- charset I0, S1
- charsetname S2, I0
- print S2
- print "\n"
- end
-CODE
-abc
-binary
-OUTPUT
-
pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_s_i ascii to binary" );
set S0, ascii:"abc"
find_charset I0, "binary"
@@ -353,22 +305,6 @@
binary
OUTPUT
-pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_i ascii to binary" );
- set S1, ascii:"abc"
- find_charset I0, "binary"
- trans_charset S1, I0
- print S1
- print "\n"
- charset I0, S1
- charsetname S2, I0
- print S2
- print "\n"
- end
-CODE
-abc
-binary
-OUTPUT
-
pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_s_i ascii to iso-8859-1" );
set S0, ascii:"abc"
find_charset I0, "iso-8859-1"
@@ -385,22 +321,6 @@
iso-8859-1
OUTPUT
-pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_i ascii to iso-8859-1" );
- set S1, ascii:"abc"
- find_charset I0, "iso-8859-1"
- trans_charset S1, I0
- print S1
- print "\n"
- charset I0, S1
- charsetname S2, I0
- print S2
- print "\n"
- end
-CODE
-abc
-iso-8859-1
-OUTPUT
-
pasm_output_is( <<'CODE', <<OUTPUT, "trans_charset_s_s_i iso-8859-1 to unicode" );
set S0, iso-8859-1:"abc_ä_"
find_charset I0, "unicode"
@@ -495,7 +415,7 @@
set $S0, iso-8859-1:"TÖTSCH"
find_charset $I0, "unicode"
trans_charset $S1, $S0, $I0
- downcase $S1
+ $S1 = downcase $S1
getstdout $P0 # need to convert back to utf8
$P0.'encoding'("utf8") # set utf8 output
print $S1
@@ -506,13 +426,13 @@
t\xc3\xb6tsch
OUTPUT
- pasm_output_is( <<'CODE', <<"OUTPUT", "unicode downcase, trans_charset_s_i" );
+ pasm_output_is( <<'CODE', <<"OUTPUT", "unicode downcase, trans_charset_s_s_i" );
set S0, iso-8859-1:"TÖTSCH"
find_charset I0, "unicode"
trans_charset S1, S0, I0
- downcase S1
+ downcase S1, S1
find_charset I0, "iso-8859-1"
- trans_charset S1, I0
+ trans_charset S1, S1, I0
print S1
print "\n"
end
@@ -531,7 +451,7 @@
set S0, iso-8859-1:"TÖTSCH"
find_charset I0, "unicode"
trans_charset S1, S0, I0
- downcase S1
+ downcase S1, S1
find_encoding I0, "utf8"
trans_encoding S2, S1, I0
print S2
@@ -568,7 +488,7 @@
set S0, iso-8859-1:"TTÖÖ"
find_charset I0, "unicode"
trans_charset S1, S0, I0
- chopn S1, 2
+ chopn S1, S1, 2
print S1
print ' '
length I0, S1
@@ -653,7 +573,8 @@
trans_charset S1, S0, I0
find_encoding I0, "utf16"
trans_encoding S1, S1, I0
- substr S2, S1, 1, 1, "oe"
+ substr S2, S1, 1, 1
+ replace S1, S1, 1, 1, "oe"
find_encoding I0, "utf8"
trans_encoding S2, S2, I0
trans_encoding S1, S1, I0
@@ -671,7 +592,7 @@
set S0, iso-8859-1:"TÖTSCH"
find_charset I0, "unicode"
trans_charset S1, S0, I0
- downcase S1
+ downcase S1, S1
set S2, iso-8859-1:"öt"
index I0, S1, S2
print I0
@@ -685,7 +606,7 @@
set S0, iso-8859-1:"TÖTSCH"
find_charset I0, "unicode"
trans_charset S1, S0, I0
- downcase S1
+ downcase S1, S1
set S2, iso-8859-1:"öt"
index I0, S1, S2
print I0
@@ -705,7 +626,7 @@
set $S0, iso-8859-1:"tötsch"
find_charset $I0, "unicode"
trans_charset $S1, $S0, $I0
- upcase $S1
+ upcase $S1, $S1
getstdout $P0 # need to convert back to utf8
$P0.'encoding'("utf8") # set utf8 output
print $S1
@@ -719,7 +640,7 @@
pir_output_is( <<'CODE', <<"OUTPUT", "unicode upcase to combined char" );
.sub main :main
set $S1, unicode:"hacek j \u01f0"
- upcase $S1
+ upcase $S1, $S1
getstdout $P0 # need to convert back to utf8
$P0.'encoding'("utf8") # set utf8 output
print $S1
@@ -749,7 +670,7 @@
pir_output_is( <<'CODE', <<"OUTPUT", "unicode upcase to combined char 3.2 bug?" );
.sub main :main
set $S1, unicode:"___\u01f0123"
- upcase $S1
+ upcase $S1, $S1
getstdout $P0 # need to convert back to utf8
$P0.'encoding'("utf8") # set utf8 output
print $S1
@@ -765,7 +686,7 @@
set $S0, iso-8859-1:"tötsch leo"
find_charset $I0, "unicode"
trans_charset $S1, $S0, $I0
- titlecase $S1
+ titlecase $S1, $S1
getstdout $P0 # need to convert back to utf8
$P0.'encoding'("utf8") # set utf8 output
print $S1
@@ -780,9 +701,9 @@
.sub main :main
set $S1, unicode:"___\u01f0___"
length $I0, $S1
- upcase $S1 # decompose J+hacek
+ upcase $S1, $S1 # decompose J+hacek
length $I1, $S1 # 1 longer
- downcase $S1 # j+hacek
+ downcase $S1, $S1 # j+hacek
length $I2, $S1
compose $S1, $S1
length $I3, $S1 # back at original string
Modified: branches/ops_pct/t/op/stringu.t
==============================================================================
--- branches/ops_pct/t/op/stringu.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/stringu.t Wed May 5 08:45:29 2010 (r46302)
@@ -256,7 +256,7 @@
set S0, "AAAAAAAAAA\\u666"
set I0, 0x666
chr S1, I0
- substr S0, 10, 5, S1
+ replace S0, S0, 10, 5, S1
print S0
print "\n"
end
Modified: branches/ops_pct/t/op/time.t
==============================================================================
--- branches/ops_pct/t/op/time.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/time.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/trans.t
==============================================================================
--- branches/ops_pct/t/op/trans.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/trans.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/op/vivify.t
==============================================================================
--- branches/ops_pct/t/op/vivify.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/op/vivify.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -28,7 +28,6 @@
.end
.sub 'test_vivify_keyed_int'
- diag( 'test_vivify_keyed_int' )
$P0 = new [ 'Hash' ]
$P1 = box 111
$P0[1] = $P1
@@ -56,7 +55,6 @@
.end
.sub 'test_vivify_keyed_str'
- diag( 'test_vivify_keyed_str' )
$P0 = new [ 'Hash' ]
$P1 = box 111
$P0['one'] = $P1
@@ -84,7 +82,6 @@
.end
.sub 'test_vivify_keyed_pmc'
- diag( 'test_vivify_keyed_pmc' )
$P0 = new [ 'Hash' ]
$P1 = box 111
Modified: branches/ops_pct/t/pharness/02-get_test_prog_args.t
==============================================================================
--- branches/ops_pct/t/pharness/02-get_test_prog_args.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pharness/02-get_test_prog_args.t Wed May 5 08:45:29 2010 (r46302)
@@ -13,7 +13,7 @@
};
plan( skip_all => 't/harness only runs once configuration has completed' )
if $@;
-plan( tests => 16 );
+plan( tests => 12 );
use Carp;
use Parrot::Harness::Options qw( get_test_prog_args );
@@ -28,7 +28,6 @@
($gc_debug, $run_exec) = (0,0);
$args = get_test_prog_args($optsref, $gc_debug, $run_exec);
like($args, qr/-d/, "Got expected option");
-like($args, qr/--runcore=cgoto/, "Got expected option");
like($args, qr/-D40/, "Got expected option");
$optsref = {
@@ -40,7 +39,6 @@
($gc_debug, $run_exec) = (0,0);
$args = get_test_prog_args($optsref, $gc_debug, $run_exec);
like($args, qr/-d/, "Got expected option");
-like($args, qr/--runcore=cgoto/, "Got expected option");
like($args, qr/-D40/, "Got expected option");
like($args, qr/-O2/, "Got expected option");
@@ -52,7 +50,6 @@
($gc_debug, $run_exec) = (1,0);
$args = get_test_prog_args($optsref, $gc_debug, $run_exec);
like($args, qr/-d/, "Got expected option");
-like($args, qr/--runcore=cgoto/, "Got expected option");
like($args, qr/-D40/, "Got expected option");
like($args, qr/\s--gc-debug/, "Got expected option");
@@ -64,7 +61,6 @@
($gc_debug, $run_exec) = (0,1);
$args = get_test_prog_args($optsref, $gc_debug, $run_exec);
like($args, qr/-d/, "Got expected option");
-like($args, qr/--runcore=cgoto/, "Got expected option");
like($args, qr/-D40/, "Got expected option");
like($args, qr/\s--run-exec/, "Got expected option");
Modified: branches/ops_pct/t/pir/macro.t
==============================================================================
--- branches/ops_pct/t/pir/macro.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pir/macro.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pir/registernames.t
==============================================================================
--- branches/ops_pct/t/pir/registernames.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pir/registernames.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/addrregistry.t
==============================================================================
--- branches/ops_pct/t/pmc/addrregistry.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/addrregistry.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/arrayiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/arrayiterator.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/arrayiterator.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/bigint.t
==============================================================================
--- branches/ops_pct/t/pmc/bigint.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/bigint.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -51,7 +51,7 @@
$P2 = $P1['gmp']
$I1 = isnull $P2
if $I1, NoLibGMP
- say 'This Parrot uses GMP'
+ say '# This Parrot uses GMP'
# check version is >= 4.1.4
$P0 = new ['BigInt']
@@ -70,20 +70,16 @@
lt $I2, 4, OldLibGMP
Config2:
- print 'Suitable GMP version ['
- print $S3
- say '] available'
+ diag( 'Suitable GMP version [', $S3, '] available' )
goto ret
NoLibGMP:
- say 'No BigInt Lib configured'
+ diag( 'No BigInt Lib configured' )
skip(34)
exit 0
OldLibGMP:
- print 'Buggy GMP version ['
- print $S3
- say '] with huge digit multiply - please upgrade'
+ diag( 'Buggy GMP version [', $S3, '] with huge digit multiply - please upgrade' )
skip(34)
exit 0
@@ -567,7 +563,7 @@
goto esz
esz:
- print 'Using '
+ print '# Using '
$I0 = mul $I0, 8
print $I0
print '-bit Integers ['
Modified: branches/ops_pct/t/pmc/boolean.t
==============================================================================
--- branches/ops_pct/t/pmc/boolean.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/boolean.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2007, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/callcontext.t
==============================================================================
--- branches/ops_pct/t/pmc/callcontext.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/callcontext.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
-#! parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+#!./parrot
+# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -19,15 +19,14 @@
.sub 'main' :main
.include 'test_more.pir'
- plan(66)
+ plan(42)
test_instantiate()
test_get_set_attrs()
- test_push_pop_indexed_access()
- test_shift_unshift_indexed_access()
test_indexed_access()
test_indexed_boxing()
test_keyed_access()
+ test_shift_access()
test_exists()
test_clone()
.end
@@ -54,85 +53,6 @@
is($P5,'cheese', 'got arg_flags attribute')
.end
-.sub 'test_push_pop_indexed_access'
- $P0 = new [ 'CallContext' ]
- $P1 = new [ 'Integer' ]
- $P1 = 100
-
- push $P0, $P1
- $I0 = elements $P0
- is( $I0, 1, 'elements after push' )
-
- $P2 = $P0[0]
- is( $P2, 100, 'push_pmc/get_pmc_keyed_int pair' )
- $P2 = pop $P0
- is( $P2, 100, 'push_pmc/pop_pmc pair' )
-
- $I0 = elements $P0
- is( $I0, 0, 'elements after pop' )
-
- push $P0, 200
- $I0 = $P0[0]
- is( $I0, 200, 'push_integer/get_integer_keyed_int pair' )
- $I0 = pop $P0
- is( $I0, 200, 'push_integer/pop_integer pair' )
-
- push $P0, 3.03
- $N0 = $P0[0]
- is( $N0, 3.03, 'push_number/get_number_keyed_int pair' )
- $N0 = pop $P0
- is( $N0, 3.03, 'push_number/pop_number pair' )
-
- push $P0, 'hello'
- $S0 = $P0[0]
- is( $S0, 'hello', 'push_string/get_string_keyed_int pair' )
- $S0 = pop $P0
- is( $S0, 'hello', 'push_string/pop_string pair' )
-
- $I0 = elements $P0
- is( $I0, 0, 'elements after push/pop' )
-.end
-
-.sub 'test_shift_unshift_indexed_access'
- $P0 = new [ 'CallContext' ]
- $P1 = new [ 'Integer' ]
- $P1 = 100
-
- unshift $P0, $P1
-
- $I0 = elements $P0
- is( $I0, 1, 'elements after unshift' )
-
- $P2 = $P0[0]
- is( $P2, 100, 'unshift_pmc/get_pmc_keyed_int pair' )
- $P2 = shift $P0
- is( $P2, 100, 'unshift_pmc/shift_pmc pair' )
-
- $I0 = elements $P0
- is( $I0, 0, 'elements after unshift/shift' )
-
- unshift $P0, 200
- $I0 = $P0[0]
- is( $I0, 200, 'unshift_integer/get_integer_keyed_int pair' )
- $I0 = shift $P0
- is( $I0, 200, 'unshift_integer/shift_integer pair' )
-
- unshift $P0, 3.03
- $N0 = $P0[0]
- is( $N0, 3.03, 'unshift_number/get_number_keyed_int pair' )
- $N0 = shift $P0
- is( $N0, 3.03, 'unshift_number/shift_number pair' )
-
- unshift $P0, 'hello'
- $S0 = $P0[0]
- is( $S0, 'hello', 'unshift_string/get_string_keyed_int pair' )
- $S0 = shift $P0
- is( $S0, 'hello', 'unshift_string/shift_string pair' )
-
- $I0 = elements $P0
- is( $I0, 0, 'elements after unshift/shift' )
-.end
-
.sub 'test_indexed_access'
$P0 = new [ 'CallContext' ]
$P0[0] = 100
@@ -170,26 +90,6 @@
$P1 = $P0[3]
is( $P1, 3.33, 'set_pmc_keyed_int/get_pmc_keyed_int pair' )
- $I1 = shift $P0
- is( $I1, 100, 'set_integer_keyed_int/shift_integer pair' )
-
- $N1 = $P0[0]
- is( $N1, 1.11, 'shift_* should remove elements from array' )
-
- $N1 = shift $P0
- is( $N1, 1.11, 'set_number_keyed_int/shift_number pair' )
-
- $S1 = $P0[0]
- is( $S1, '2.22', 'shift_* should remove elements from array' )
-
- $S1 = shift $P0
- is( $S1, '2.22', 'set_string_keyed_int/shift_string pair' )
-
- $P1 = $P0[0]
- is( $P1, 3.33, 'shift_* should remove elements from array' )
-
- $P1 = shift $P0
- is( $P1, 3.33, 'set_pmc_keyed_int/shift_pmc pair' )
.end
.sub 'test_indexed_boxing'
@@ -296,6 +196,35 @@
is($N2, 3.14159, 'clone - named number cloned')
.end
+.sub 'test_shift_access'
+ $P0 = new ['CallContext']
+ $P1 = new [ 'String' ]
+ $P1 = 'derF'
+
+ unshift $P0, $P1
+
+ $S1 = shift $P0
+ is($S1, 'derF', 'shift should convert to proper type (PMC -> STRING)')
+
+ unshift $P0, $P1
+ $P2 = shift $P0
+
+ is($P2, 'derF', '... but not convert when unneccesary')
+ $I0 = issame $P1, $P2
+ ok($I0, '... returning the same item' )
+
+ # no unshift_string for now
+ $P0[0] = 'Fred'
+
+ $P2 = shift $P0
+ is($P2, 'Fred', 'shift should convert to proper type (STRING -> PMC)')
+
+ $P0[0] = 'Fred'
+ $S2 = shift $P0
+
+ is($S2, 'Fred', '... but not convert when unnecessary')
+.end
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_pct/t/pmc/capture.t
==============================================================================
--- branches/ops_pct/t/pmc/capture.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/capture.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/class.t
==============================================================================
--- branches/ops_pct/t/pmc/class.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/class.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
@@ -17,7 +17,7 @@
=cut
-.const int TESTS = 63
+.const int TESTS = 73
.sub 'main' :main
@@ -46,6 +46,7 @@
'does'()
'more does'()
'anon_inherit'()
+ 'method_cache_tt1497'()
.end
@@ -458,7 +459,7 @@
is(result, 42, 'new() added method returns expected value')
.end
-.sub add :method
+.sub add :method :nsentry('add')
$P0 = getattribute self, "x"
$P1 = getattribute self, "y"
$P2 = new ['Integer']
@@ -602,6 +603,88 @@
ok(1, 'inheritance of two different anonymous classes works')
.end
+.sub 'method_cache_tt1497'
+ $P0 = new ["tt1497_Object"]
+
+ $P1 = find_method $P0, "foo"
+ $I0 = isnull $P1
+ is($I0, 0, "can find foo. Sanity")
+ $I0 = $P0.$P1()
+ is($I0, 1, "found the correct foo")
+
+ $P9 = box 2
+ setattribute $P0, "state", $P9
+
+ $P1 = find_method $P0, "foo"
+ $I0 = isnull $P1
+ is($I0, 0, "can find foo. Sanity")
+ $I0 = $P0.$P1()
+ is($I0, 1, "we've cached the old foo")
+
+ $P2 = get_class "tt1497_Object"
+ $P2.'clear_method_cache'()
+
+ $P1 = find_method $P0, "foo"
+ $I0 = isnull $P1
+ is($I0, 0, "can find foo. Sanity")
+ $I0 = $P0.$P1()
+ is($I0, 2, "cleared cache, can find the next foo")
+
+ $P3 = $P2.'get_method_cache'()
+ $P1 = $P3["foo"]
+ $I0 = isnull $P1
+ is($I0, 0, "can find foo in method cache")
+ $I0 = $P0.$P1()
+ is($I0, 2, "cleared cache, can find the next foo")
+
+ $P9 = box 1
+ setattribute $P0, "state", $P9
+
+ $P3 = $P2.'get_method_cache'()
+ $P1 = $P3["foo"]
+ $I0 = isnull $P1
+ is($I0, 0, "can find foo in method cache")
+ $I0 = $P0.$P1()
+ is($I0, 2, "cleared cache, can find the next foo")
+.end
+
+.namespace ["tt1497_Object"]
+
+.sub '__tt1497_init' :anon :load :init
+ $P0 = newclass "tt1497_Object"
+ addattribute $P0, "state"
+.end
+
+.sub 'foo1'
+ .return(1)
+.end
+
+.sub 'foo2'
+ .return(2)
+.end
+
+.sub 'find_method' :vtable
+ .param string name
+ $P0 = getattribute self, "state"
+ unless null $P0 goto have_state
+ $P0 = box 1
+ setattribute self, "state", $P0
+ have_state:
+ if $P0 == 1 goto getfoo1
+ if $P0 == 2 goto getfoo2
+ $P0 = null
+ goto return_meth
+ getfoo1:
+ .const 'Sub' foo1 = "foo1"
+ $P0 = foo1
+ goto return_meth
+ getfoo2:
+ .const 'Sub' foo2 = "foo2"
+ $P0 = foo2
+ return_meth:
+ .return($P0)
+.end
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_pct/t/pmc/codestring.t
==============================================================================
--- branches/ops_pct/t/pmc/codestring.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/codestring.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/complex.t
==============================================================================
--- branches/ops_pct/t/pmc/complex.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/complex.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/config.t
==============================================================================
--- branches/ops_pct/t/pmc/config.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/config.t Wed May 5 08:45:29 2010 (r46302)
@@ -49,7 +49,7 @@
cfg = _config()
$S1 = cfg['osname']
if $S1 != 'MSWin32' goto sayit
- downcase $S0
+ $S0 = downcase $S0
sayit:
print $S0
.end
Modified: branches/ops_pct/t/pmc/context.t
==============================================================================
--- branches/ops_pct/t/pmc/context.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/context.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009, Parrot Foundation.
# $Id$
@@ -48,7 +48,7 @@
$P0 = newclass 'Foo'
.end
-.sub 'test_inspect' :method :outer('load')
+.sub 'test_inspect' :method :nsentry('test_inspect') :outer('load')
.include 'test_more.pir'
.local pmc ctx
Modified: branches/ops_pct/t/pmc/continuation.t
==============================================================================
--- branches/ops_pct/t/pmc/continuation.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/continuation.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
@@ -18,10 +18,12 @@
.sub main :main
.include 'test_more.pir'
- plan(2)
+ plan(4)
test_new()
invoke_with_init()
+ returns_tt1511()
+ returns_tt1528()
.end
.sub test_new
@@ -41,6 +43,104 @@
end:
.end
+.sub 'choose'
+ .param int do_tailcall
+ .param pmc options :slurpy
+ .local pmc cc
+ .local pmc chosen
+ .local pmc paths
+
+ if options goto got_options
+ 'fail'()
+ got_options:
+ chosen = shift options
+
+ cc = new 'Continuation'
+ set_addr cc, recurse
+ paths = get_global '!paths'
+ push paths, cc
+
+ $P0 = get_global '!results'
+ push $P0, chosen
+ .return (chosen)
+
+ recurse:
+ if do_tailcall goto tail
+ $P0 = 'choose'(do_tailcall, options :flat)
+ .return($P0)
+ tail:
+ .tailcall 'choose'(do_tailcall, options :flat)
+.end
+
+.sub 'fail'
+ .local pmc cc
+ .local pmc paths
+
+ paths = get_global '!paths'
+
+ if paths goto got_paths
+ cc = get_global '!topcc'
+ goto call_cc
+ got_paths:
+ cc = shift paths
+
+ call_cc:
+ cc()
+.end
+
+.sub 'blob'
+ .param int do_tailcall
+
+ .local pmc city
+ .local pmc store
+ .local pmc bx
+ .local pmc paths
+
+ paths = new 'ResizablePMCArray'
+ set_global '!paths', paths
+
+ city = 'choose'(do_tailcall, "la", "ny", "bos")
+ $P0 = get_global '!results'
+ push $P0, city
+ push $P0, ' '
+
+ 'fail'()
+.end
+
+.sub 'returns_tt1511'
+ .local pmc cc
+
+ # Install top-level cc in global.
+ cc = new 'Continuation'
+ set_addr cc, final_failure
+ set_global '!topcc', cc
+
+ $P0 = new 'ResizableStringArray'
+ set_global '!results', $P0
+
+ 'blob'(1)
+ final_failure:
+ $S0 = join '', $P0
+ is('lala nyny bosbos ', $S0, 'Results processed correctly')
+.end
+
+.sub 'returns_tt1528'
+ .local pmc cc
+
+ # Install top-level cc in global.
+ cc = new 'Continuation'
+ set_addr cc, final_failure
+ set_global '!topcc', cc
+
+ $P0 = new 'ResizableStringArray'
+ set_global '!results', $P0
+
+ 'blob'(0)
+ final_failure:
+ $S0 = join '', $P0
+ is('lala nyny bosbos ', $S0, 'Results processed correctly - without .tailcall')
+.end
+
# end of tests.
# Local Variables:
Deleted: branches/ops_pct/t/pmc/cpointer.t
==============================================================================
--- branches/ops_pct/t/pmc/cpointer.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,37 +0,0 @@
-#! parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/cpointer.t - test CPointer PMC
-
-=head1 SYNOPSIS
-
- % prove t/pmc/cpointer.t
-
-=head1 DESCRIPTION
-
-Tests the CPointer PMC.
-
-=cut
-
-.sub main :main
- .include 'test_more.pir'
-
- plan(1)
-
- instantiate()
-.end
-
-
-.sub instantiate
- $P0 = new ['CPointer']
- ok(1, 'Instantiated CPointer')
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/pmc/default.t
==============================================================================
--- branches/ops_pct/t/pmc/default.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/default.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/env.t
==============================================================================
--- branches/ops_pct/t/pmc/env.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/env.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/eval.t
==============================================================================
--- branches/ops_pct/t/pmc/eval.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/eval.t Wed May 5 08:45:29 2010 (r46302)
@@ -28,8 +28,8 @@
pasm_output_is( <<'CODE', <<'OUTPUT', "eval_sc" );
compreg P1, "PASM" # get compiler
set_args "0", "print \"in eval\\n\"\nset_returns \"()\"\nreturncc\n"
- get_results "0", P0
invokecc P1 # compile
+ get_results "0", P0
invokecc P0 # eval code P0
print "back again\n"
end
@@ -329,6 +329,7 @@
print io, \$S0
close io
load_bytecode "$temp_pbc"
+ \$P0 = loadlib 'os'
os = new ['OS']
os.'rm'("$temp_pbc")
f2 = compi("foo_2", "hello from foo_2")
Modified: branches/ops_pct/t/pmc/eventhandler.t
==============================================================================
--- branches/ops_pct/t/pmc/eventhandler.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/eventhandler.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/exception-old.t
==============================================================================
--- branches/ops_pct/t/pmc/exception-old.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/exception-old.t Wed May 5 08:45:29 2010 (r46302)
@@ -6,7 +6,7 @@
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 27;
+use Parrot::Test tests => 22;
=head1 NAME
@@ -325,41 +325,7 @@
OUTPUT
1;
-pasm_output_is( <<'CODE', <<'OUTPUT', "pushmark" );
- pushmark 10
- print "ok 1\n"
- popmark 10
- print "ok 2\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "pushmark nested" );
- pushmark 10
- pushmark 11
- print "ok 1\n"
- popmark 11
- popmark 10
- print "ok 2\n"
- end
-CODE
-ok 1
-ok 2
-OUTPUT
-
-pasm_error_output_like( <<'CODE', <<'OUTPUT', "pushmark - pop wrong one" );
- pushmark 10
- print "ok 1\n"
- popmark 500
- print "never\n"
- end
-CODE
-/Mark 500 not found/
-OUTPUT
-
-# stringification is handled by a vtable method, which runs in a second
+# stringification is handled by a vtable, which runs in a second
# runloop. when an error in the method tries to go to a Error_Handler defined
# outside it, it winds up going to the inner runloop, giving strange results.
pir_output_is( <<'CODE', <<'OUTPUT', 'pop_eh out of context (2)', todo => 'runloop shenanigans' );
@@ -392,62 +358,18 @@
caught
OUTPUT
-pir_error_output_like( <<'CODE', <<'OUTPUT', "pushaction - throw in main" );
-.sub main :main
- print "main\n"
- .const 'Sub' at_exit = "exit_handler"
- pushaction at_exit
- $P0 = new ['Exception']
- throw $P0
- .return()
-.end
-
-.sub exit_handler
- .param int flag
- print "at_exit, flag = "
- say flag
-.end
-CODE
-/^main
-No exception handler/
-OUTPUT
-
-# exception handlers are still run in an inferior runloop, which messes up
-# nonlocal exit from within handlers.
-pir_output_like(
- <<'CODE', <<'OUTPUT', "pushaction: error while handling error", todo => 'runloop shenanigans' );
-.sub main :main
- push_eh h
- print "main\n"
- .const 'Sub' at_exit = "exit_handler"
- pushaction at_exit
- $P1 = new ['Exception']
- throw $P1
- print "never 1\n"
-h:
- ## this is never actually reached, because exit_handler throws an unhandled
- ## exception before the handler is entered.
- print "in outer handler\n"
-.end
-
-.sub exit_handler :outer(main)
- .param int flag
- print "at_exit, flag = "
- say flag
- $P2 = new ['Exception']
- throw $P2
- print "never 2\n"
-.end
-CODE
-/^main
-at_exit, flag = 1
-No exception handler/
-OUTPUT
-
$ENV{TEST_PROG_ARGS} ||= '';
my @todo = $ENV{TEST_PROG_ARGS} =~ /--run-pbc/
? ( todo => '.tailcall and lexical maps not thawed from PBC, TT #1172' )
: ();
+#
+# this test is hanging in testr since pcc_hackathon_6Mar10 branch merge at r45108
+# converting to skip at the moment
+#
+
+SKIP: {
+ skip ".tailcall and lexical maps not thawed from PBC - hangs", 1 if @todo;
+
pir_output_is( <<'CODE', <<'OUTPUT', "exit_handler via exit exception", @todo );
.sub main :main
.local pmc a
@@ -472,6 +394,8 @@
a = 42
OUTPUT
+}
+
## Regression test for r14697. This probably won't be needed when PDD23 is
## fully implemented.
pir_error_output_like( <<'CODE', <<'OUTPUT', "invoke handler in calling sub", todo => "deprecate rethrow" );
Modified: branches/ops_pct/t/pmc/exception.t
==============================================================================
--- branches/ops_pct/t/pmc/exception.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/exception.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/exceptionhandler.t
==============================================================================
--- branches/ops_pct/t/pmc/exceptionhandler.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/exceptionhandler.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Deleted: branches/ops_pct/t/pmc/file.t
==============================================================================
--- branches/ops_pct/t/pmc/file.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,327 +0,0 @@
-#! perl
-# Copyright (C) 2001-2006, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-
-use Test::More;
-use Parrot::Test tests => 9;
-
-use Parrot::Config;
-
-use Cwd;
-use File::Temp;
-use File::Spec::Functions;
-
-my $tempdir = File::Temp::tempdir( CLEANUP => 1 );
-
-our ( $MSWin32, $cygwin );
-$MSWin32 = 1 if $^O =~ m!MSWin32!;
-$cygwin = 1 if $^O =~ m!cygwin!;
-
-=head1 NAME
-
-t/pmc/file.t - Files functions
-
-=head1 SYNOPSIS
-
- % prove t/pmc/file.t
-
-=head1 DESCRIPTION
-
-Tests the C<File> PMC.
-
-=cut
-
-my $xpto = catdir( $tempdir, 'xpto' );
-mkdir $xpto unless -d $xpto;
-
-my $otpx = catfile( $xpto, 'otpx' );
-
-open my $fh, '>', $otpx or die $!;
-print $fh 'xpto';
-close $fh;
-
-# test is_dir
-pir_output_is( <<"CODE", <<"OUT", "Test is_dir" );
-.sub main :main
- \$P1 = new ['File']
-
- \$S1 = '$xpto'
- \$I1 = \$P1."is_dir"(\$S1)
-
- if \$I1 goto ok1
- print "not "
-
-ok1:
- print "ok 1\\n"
-
- \$S1 = '$otpx'
- \$I1 = \$P1."is_dir"(\$S1)
- \$I1 = !\$I1
-
- if \$I1 goto ok2
- print "not "
-
-ok2:
- print "ok 2\\n"
-
- end
-.end
-CODE
-ok 1
-ok 2
-OUT
-
-# test is_dir
-pir_error_output_like( <<"CODE", <<"OUT", "Test is_dir error" );
-.sub main :main
- \$P1 = new ['File']
-
- #make a filename that's long enough to cause lstat to fail
- \$I0 = 1000
-loop:
- \$S0 = concat \$S0, "1234567890"
- \$I0 = \$I0 - 1
- if \$I0 goto loop
-
- \$I1 = \$P1."is_dir"(\$S0)
-
- end
-.end
-CODE
-/^[\\w \t\r\n]+current instr\.:/
-OUT
-
-# test is_file
-pir_output_is( <<"CODE", <<"OUT", "Test is_file" );
-.sub main :main
- \$P1 = new ['File']
-
- \$S1 = '$xpto'
- \$I1 = \$P1."is_file"(\$S1)
- \$I1 = !\$I1
-
- if \$I1 goto ok1
- print "not "
-
-ok1:
- print "ok 1\\n"
-
- \$S1 = '$otpx'
- \$I1 = \$P1."is_file"(\$S1)
-
- if \$I1 goto ok2
- print "not "
-
-ok2:
- print "ok 2\\n"
-
- end
-.end
-CODE
-ok 1
-ok 2
-OUT
-
-# test is_file
-pir_error_output_like( <<"CODE", <<"OUT", "Test is_file error" );
-.sub main :main
- \$P1 = new ['File']
-
- #make a filename that's long enough to cause lstat to fail
- \$I0 = 1000
-loop:
- \$S0 = concat \$S0, "1234567890"
- \$I0 = \$I0 - 1
- if \$I0 goto loop
-
- \$I1 = \$P1."is_file"(\$S0)
-
- end
-.end
-CODE
-/^[\\w \t\r\n]+current instr\.:/
-OUT
-
-SKIP: {
- skip "Links not available under Windows", 1 if $MSWin32;
-
- my $lotpx = catfile( $xpto, 'lotpx' );
- symlink $otpx, $lotpx;
-
- # test is_link
- pir_output_is( <<"CODE", <<"OUT", "Test is_link with links to files" );
-.sub main :main
- \$P1 = new ['File']
-
- \$S1 = '$lotpx'
- \$I1 = \$P1."is_link"(\$S1)
-
- if \$I1 goto ok1
- print "not "
-ok1:
- print "ok 1\\n"
-
- \$S1 = '$otpx'
- \$I1 = \$P1."is_link"(\$S1)
- \$I1 = !\$I1
- if \$I1 goto ok2
- print "not "
-ok2:
- print "ok 2\\n"
- end
-.end
-CODE
-ok 1
-ok 2
-OUT
-
-}
-
-SKIP: {
- skip "Links not available under Windows", 1 if $MSWin32;
-
- my $xptol = catdir( $xpto, 'xptol' );
- symlink $xpto, $xptol;
-
- # test is_link
- pir_output_is( <<"CODE", <<"OUT", "Test is_link with links to directories" );
-.sub main :main
- \$P1 = new ['File']
-
- \$S1 = '$xptol'
- \$I1 = \$P1."is_link"(\$S1)
-
- if \$I1 goto ok1
- print "not "
-ok1:
- print "ok 1\\n"
-
- \$S1 = '$xpto'
- \$I1 = \$P1."is_link"(\$S1)
- \$I1 = !\$I1
- if \$I1 goto ok2
- print "not "
-ok2:
- print "ok 2\\n"
- end
-.end
-CODE
-ok 1
-ok 2
-OUT
-}
-
-my $otpxcopy = catdir( $xpto, 'otpxcopy' );
-
-# test copy
-pir_output_is( <<"CODE", <<"OUT", "Test copy for files" );
-.sub main :main
- \$S1 = '$otpx'
- \$S2 = '$otpxcopy'
-
- \$P1 = new ['File']
- \$P2 = new ['OS']
-
- \$P1."copy"(\$S1,\$S2)
- print "ok\\n"
-
- \$P3 = \$P2."stat"(\$S1)
- \$P4 = \$P2."stat"(\$S2)
-
- \$I1 = \$P3[7]
- \$I2 = \$P4[7]
-
- if \$I1 == \$I2 goto ok
- print "not "
-ok:
- print "ok\\n"
-
- end
-.end
-CODE
-ok
-ok
-OUT
-
-# test rename
-SKIP: {
- skip 'file exists', 1 if $MSWin32;
-
- pir_output_is( <<"CODE", <<"OUT", "Test rename for files" );
-.sub main :main
- \$S1 = '$otpx'
- \$S2 = '$otpxcopy'
-
- \$P1 = new ['File']
- \$P2 = new ['OS']
-
- \$P3 = \$P2."stat"(\$S1)
- \$I1 = \$P3[7]
-
- \$P1."rename"(\$S1,\$S2)
- print "ok\\n"
-
- \$P4 = \$P2."stat"(\$S2)
- \$I2 = \$P4[7]
-
- if \$I1 == \$I2 goto ok
- print "not "
-ok:
- print "ok\\n"
-
- end
-.end
-CODE
-ok
-ok
-OUT
-}
-
-my $bad_file = catfile( $xpto, 'not a file' );
-
-# test exists
-pir_output_is( <<"CODE", <<"OUT", "Test rename for files" );
-.sub main :main
- \$P1 = new ['File']
- \$I1 = \$P1.'exists'( '$otpxcopy' )
-
- if \$I1 goto file_exists
- print "not "
-
- file_exists:
- print "ok 1 - file exists\\n"
-
- \$I1 = \$P1.'exists'( '$xpto' )
-
- if \$I1 goto dir_exists
- print "not "
-
- dir_exists:
- print "ok 2 - directory exists\\n"
-
- \$I1 = \$P1.'exists'( '$bad_file' )
-
- if \$I1 == 0 goto file_does_not_exist
- print "not "
-
- file_does_not_exist:
- print "ok 3 - file does not exist\\n"
-
- end
-.end
-CODE
-ok 1 - file exists
-ok 2 - directory exists
-ok 3 - file does not exist
-OUT
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/pmc/fixedbooleanarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedbooleanarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/fixedbooleanarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/fixedfloatarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedfloatarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/fixedfloatarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/fixedintegerarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedintegerarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/fixedintegerarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/fixedpmcarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedpmcarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/fixedpmcarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -19,7 +19,7 @@
.sub main :main
.include 'test_more.pir'
- plan(82)
+ plan(83)
test_setting_array_size()
test_assign_from_another()
test_assign_self()
@@ -678,6 +678,11 @@
$I0 = $P0
is($I0, 10, "New style init creates the correct # of elements for a key constant")
+
+ $P1 = new 'Integer'
+ $P0[9] = $P1
+ $P2 = $P0[9]
+ is($P2, $P1, 'New style init creates the array')
.end
.sub test_invalid_init_tt1509
Modified: branches/ops_pct/t/pmc/fixedstringarray.t
==============================================================================
--- branches/ops_pct/t/pmc/fixedstringarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/fixedstringarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/float.t
==============================================================================
--- branches/ops_pct/t/pmc/float.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/float.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/freeze.t
==============================================================================
--- branches/ops_pct/t/pmc/freeze.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/freeze.t Wed May 5 08:45:29 2010 (r46302)
@@ -52,9 +52,19 @@
print " "
print P10
print "\n"
+
+ null S1
+ new P1, ['String']
+ set P1, S1
+ freeze S0, P1
+ thaw P10, S0
+ set S10, P10
+ isnull I0, S10
+ say I0
end
CODE
String foo
+1
OUTPUT
pasm_output_is( <<'CODE', <<'OUTPUT', "freeze/thaw a Float" );
Modified: branches/ops_pct/t/pmc/handle.t
==============================================================================
--- branches/ops_pct/t/pmc/handle.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/handle.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -20,14 +20,36 @@
.sub main :main
.include 'test_more.pir'
- plan(1)
+ plan(2)
+ 'test_create'()
+ 'test_does_tt_1473'()
+.end
+
+.sub 'test_create'
push_eh cant_instantiate
$P0 = new 'Handle'
- print "not "
+ ok(0, "Can instantiate an abstract type")
+ pop_eh
+ goto create_end
cant_instantiate:
- say "ok 1"
+ ok(1, "Cannot instantiate an abstract type")
+ pop_eh
+ create_end:
.end
+.sub 'test_does_tt_1473'
+ push_eh cant_do_does
+ $P0 = get_class 'Handle'
+ $I0 = does $P0, 'Handle'
+ ok($I0, "Handle does Handle")
+ goto does_end
+ cant_do_does:
+ ok(0, "Does throws an exception")
+ does_end:
+ pop_eh
+.end
+
+
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/ops_pct/t/pmc/hash.t
==============================================================================
--- branches/ops_pct/t/pmc/hash.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/hash.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/hashiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/hashiterator.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/hashiterator.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/imageio.t
==============================================================================
--- branches/ops_pct/t/pmc/imageio.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/imageio.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/imageiosize.t
==============================================================================
--- branches/ops_pct/t/pmc/imageiosize.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/imageiosize.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2010, Parrot Foundation.
# $Id$
Copied: branches/ops_pct/t/pmc/imageiostrings.t (from r46301, trunk/t/pmc/imageiostrings.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/pmc/imageiostrings.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/pmc/imageiostrings.t)
@@ -0,0 +1,47 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/imageiostrings.t - test ImageIOStrings PMC
+
+=head1 SYNOPSIS
+
+ % prove t/pmc/imageiostrings.t
+
+=head1 DESCRIPTION
+
+Tests the ImageIOStringsPMC.
+
+=cut
+
+.sub main :main
+ .include 'test_more.pir'
+
+ plan(3)
+
+ .local pmc iios
+ iios = new ['ImageIOStrings']
+ ok(1, 'instantiated ImageIOStrings')
+
+ .local pmc test_pmc
+ test_pmc = null
+ iios = new ['ImageIOStrings']
+ setref iios, test_pmc
+ $P0 = deref iios
+ $I0 = $P0
+ nok( $I0, 'no strings in null pmc' )
+
+ test_pmc = split ' ', 'spam sausage spam spam bacon spam tomato and spam'
+ iios = new ['ImageIOStrings']
+ setref iios, test_pmc
+ $P0 = deref iios
+ is_deeply( $P0, test_pmc, 'correctly manages RSA' )
+.end
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/pmc/integer.t
==============================================================================
--- branches/ops_pct/t/pmc/integer.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/integer.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/io.t
==============================================================================
--- branches/ops_pct/t/pmc/io.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/io.t Wed May 5 08:45:29 2010 (r46302)
@@ -407,7 +407,7 @@
LINE:
\$S1 = readline \$P1
unless \$S1 goto SUCCESS
- chopn \$S1, 1
+ \$S1 = chopn \$S1, 1
NEXT_NR:
\$I1 = length \$S1
@@ -415,7 +415,7 @@
\$S2 = ""
SPLIT:
\$S3 = substr \$S1, 0, 1
- \$S1 = substr 0, 1, ""
+ \$S1 = replace \$S1, 0, 1, ""
if \$S3 == " " goto GOT_NR
\$S2 = concat \$S2, \$S3
goto SPLIT
@@ -615,7 +615,7 @@
# Extract part of the read in file
.local string head_from_file
- substr head_from_file, from_file, 0, 5, ''
+ head_from_file = substr from_file, 0, 5
say head_from_file
end
@@ -646,23 +646,20 @@
.local string sub_3
sub_3 = ''
substr sub_1, line, 0, 3
- substr sub_2, line, 0, 3, ''
- substr sub_3, line, 0, 3, ''
+ substr sub_2, line, 3, 3
+ line = replace line, 0, 6, ''
print "line: "
print line
print "sub_1: "
say sub_1
print "sub_2: "
say sub_2
- print "sub_3: "
- say sub_3
end
.end
CODE
line: 6789ABCDEFGHIJKLMNOPQRSTUVWXYZ
sub_1: 012
-sub_2: 012
-sub_3: 345
+sub_2: 345
OUTPUT
pir_error_output_like( <<'CODE', <<'OUT', 'read on null PMC throws exception');
Modified: branches/ops_pct/t/pmc/key.t
==============================================================================
--- branches/ops_pct/t/pmc/key.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/key.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
@@ -129,7 +129,7 @@
loop:
unless iterator goto end
elem = shift iterator
- $S0 = substr elem, 0, 1, ''
+ $S0 = replace elem, 0, 1, ''
goto loop
end:
.return('')
Modified: branches/ops_pct/t/pmc/lexinfo.t
==============================================================================
--- branches/ops_pct/t/pmc/lexinfo.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/lexinfo.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/lexpad.t
==============================================================================
--- branches/ops_pct/t/pmc/lexpad.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/lexpad.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/managedstruct.t
==============================================================================
--- branches/ops_pct/t/pmc/managedstruct.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/managedstruct.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/multidispatch.t
==============================================================================
--- branches/ops_pct/t/pmc/multidispatch.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/multidispatch.t Wed May 5 08:45:29 2010 (r46302)
@@ -9,7 +9,7 @@
use Test::More;
use Parrot::Test::Util 'create_tempfile';
-use Parrot::Test tests => 46;
+use Parrot::Test tests => 47;
=head1 NAME
@@ -1516,6 +1516,30 @@
1
OUTPUT
+pir_output_is( <<'CODE', <<'OUTPUT', 'int autoboxes to scalar - TT #1133' );
+ .sub 'foo' :multi(['scalar'])
+ .param pmc x
+ say "Scalar!"
+ .end
+
+ .sub 'foo' :multi()
+ .param pmc x
+ $I0 = isa x, 'scalar'
+ print "Scalar? "
+ say $I0
+ .end
+
+ .sub 'main' :main
+ 'foo'(1)
+ $P0 = box 1
+ 'foo'($P0)
+ .end
+CODE
+Scalar!
+Scalar!
+OUTPUT
+
+
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
Modified: branches/ops_pct/t/pmc/namespace-old.t
==============================================================================
--- branches/ops_pct/t/pmc/namespace-old.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/namespace-old.t Wed May 5 08:45:29 2010 (r46302)
@@ -284,7 +284,7 @@
CODE
/^a_foo
b_foo
-Could not find non-existent sub b_foo/
+Could not find sub b_foo/
OUTPUT
@@ -1248,7 +1248,7 @@
CODE
/
ok 1
-Could not find non-existent sub nok/
+Could not find sub nok/
OUT
Copied: branches/ops_pct/t/pmc/namespace-subs.t (from r46301, trunk/t/pmc/namespace-subs.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/pmc/namespace-subs.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/pmc/namespace-subs.t)
@@ -0,0 +1,166 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/namepspace-subs.t - test NameSpace PMC
+
+=head1 SYNOPSIS
+
+ % prove t/pmc/namespace-subs.t
+
+=head1 DESCRIPTION
+
+Tests subroutines stored in the NameSpace PMC, specifically focusing on the
+specified behavior for :method, :vtable, :nsentry, and :anon.
+
+=cut
+
+.namespace []
+
+.sub 'main' :main
+ .include 'test_more.pir'
+ plan(17)
+ anon_sub_and_method()
+ anon_vtable()
+ store_method()
+ store_nsentry()
+ store_multisub()
+.end
+
+
+# Subs marked with :anon should not be stored in the namespace. Methods marked
+# with :anon should not be stored in the class.
+
+.sub 'anon_sub_and_method'
+ $P2 = get_hll_global ['AnonTest'], 'anonsub'
+ is_null($P2, "Anon sub not stored in namespace")
+
+ $P0 = newclass 'AnonTest'
+ $P1 = new 'AnonTest'
+
+ push_eh method_not_in_namespace
+ $I1 = $P1.'anonmethod'()
+ ok(0, "Anon method not stored in class")
+ pop_eh
+ goto failed
+ method_not_in_namespace:
+ ok(1, "Anon method not stored in class")
+ failed:
+
+ $P2 = get_hll_global ['AnonTest'], 'anonmethod'
+ is_null($P2, "Anon method not stored in namespace")
+
+.end
+
+# Vtable overrides marked with :anon should be stored in the class anyway. See
+# RT #44471
+.sub 'anon_vtable'
+ $P1 = new 'AnonTest'
+
+ $I0 = $P1
+ is($I0, 414, "Anon vtable override stored in class")
+.end
+
+
+# Methods should not be stored in the namespace. See TT #389.
+.sub 'store_method'
+ $P0 = newclass 'MethodTest'
+ $P1 = new 'MethodTest'
+
+ $I1 = $P1.'methodtest'()
+ is($I1, 75, "Invoked stored method")
+
+ $P2 = get_hll_global ['MethodTest'], 'methodtest'
+ is_null($P2, "Method not stored in namespace")
+.end
+
+.sub 'store_nsentry'
+ $P0 = newclass 'NsentryTest'
+ $P1 = new 'NsentryTest'
+
+ $I1 = $P1.'nsentrymethodtest'()
+ is($I1, 63, "Invoked nsentry method")
+
+ $P2 = get_hll_global ['NsentryTest'], 'renamedmethod'
+ isa_ok($P2, "Sub", "Nsentry method stored in namespace")
+
+ $I2 = $P1.$P2()
+ is($I2, 63, "Invoked nsentry method from namespace")
+
+ $P3 = get_hll_global ['NsentryTest'], 'renamedsub'
+ isa_ok($P3, "Sub", "Nsentry sub stored in namespace")
+
+ $I3 = $P3()
+ is($I3, 36, "Invoked nsentry sub from namespace")
+
+ $P4 = get_hll_global ['NsentryTest'], 'renamedvtable'
+ isa_ok($P4, "Sub", "Nsentry vtable stored in namespace")
+
+ $I4 = $P4()
+ is($I4, 363, "Invoked nsentry vtable from namespace")
+.end
+
+.sub 'store_multisub'
+ $P1 = get_hll_global ['MultiSubTest'], 'multisubtest'
+ isa_ok($P1, "MultiSub", "Multi sub stored in namespace")
+
+ $S1 = $P1(7)
+ is($S1, "called int variant", "Multi sub int stored in namespace")
+
+ $S2 = $P1('foo')
+ is($S2, "called string variant", "Multi sub string stored in namespace")
+
+ $S3 = $P1(5.5)
+ is($S3, "called num variant", "Anon multi sub num stored in namespace")
+
+.end
+
+.namespace ['AnonTest']
+.sub 'anonsub' :anon
+ .return(14)
+.end
+
+.sub 'anonmethod' :anon :method
+ .return(41)
+.end
+
+.sub 'get_integer' :anon :vtable
+ .return(414)
+.end
+
+
+.namespace ['MethodTest']
+.sub 'methodtest' :method
+ .return(75)
+.end
+
+.namespace ['NsentryTest']
+.sub 'nsentrymethodtest' :method :nsentry('renamedmethod')
+ .return(63)
+.end
+.sub 'nsentrysubtest' :nsentry('renamedsub')
+ .return(36)
+.end
+.sub 'nsentryvtabletest' :nsentry('renamedvtable')
+ .return(363)
+.end
+
+.namespace ['MultiSubTest']
+.sub 'multisubtest' :multi(int)
+ .return("called int variant")
+.end
+.sub 'multisubtest' :multi(string)
+ .return("called string variant")
+.end
+.sub 'multisubtest' :anon :multi(num)
+ .return("called num variant")
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/pmc/namespace.t
==============================================================================
--- branches/ops_pct/t/pmc/namespace.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/namespace.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
@@ -282,7 +282,6 @@
$I0 = isnull $P0
is($I0, 0, "Find Sub in an ISO-8859-1 NameSpace looked up by a Unicode name")
$S0 = $P0()
- say $S0
is($S0, iso-8859-1:"Fran\x{E7}ois", "ISO-8859 NameSpace with Unicode name")
goto end_test8
eh8:
Modified: branches/ops_pct/t/pmc/nci.t
==============================================================================
--- branches/ops_pct/t/pmc/nci.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/nci.t Wed May 5 08:45:29 2010 (r46302)
@@ -453,8 +453,8 @@
dlfunc P0, P1, "nci_dd", "dd"
print "dlfunced\n"
set_args "0", 4.0
- get_results "0", N5
invokecc P0
+ get_results "0", N5
ne N5, 8.0, nok_1
print "ok 1\n"
end
@@ -524,8 +524,8 @@
set N5, 12.0
set N6, 3.0
set_args "0,0", N5, N6
- get_results "0", N5
invokecc P0
+ get_results "0", N5
ne N5, 4.0, nok_1
print "ok 1\n"
end
@@ -547,8 +547,8 @@
set I5, 2
set I6, 3
set_args "0,0", I5, I6
- get_results "0", I5
invokecc P0
+ get_results "0", I5
ne I5, 6, nok_1
print "ok 1\n"
end
@@ -570,8 +570,8 @@
set I5, -2
set I6, 3
set_args "0,0", I5, I6
- get_results "0", I5
invokecc P0
+ get_results "0", I5
ne I5, -6, nok_1
print "ok 1\n"
end
@@ -593,8 +593,8 @@
set I5, 6
set I6, 7
set_args "0,0", I5, I6
- get_results "0", I5
invokecc P0
+ get_results "0", I5
ne I5, 42, nok_1
print "ok 1\n"
end
@@ -615,8 +615,8 @@
printerr "dlfunced\n"
set S5, "ko\n"
set_args "0", S5
- get_results "0", I5
invokecc P0
+ get_results "0", I5
ne I5, 2, nok_1
printerr "ok 2\n"
end
@@ -670,8 +670,8 @@
print "dlfunced\n"
set S5, "ko\n"
set_args "0", S5
- get_results "0", S5
invokecc P0
+ get_results "0", S5
print S5
end
nok_1: print "nok 1\n"
@@ -695,8 +695,8 @@
dlfunc P0, P1, "nci_dd", "dd"
set N5, 77.0
set_args "0", 4.0
- get_results "0", N5
invokecc P0
+ get_results "0", N5
ne N5, 8.0, nok_1
dec I10
gt I10, 0, loop
@@ -722,13 +722,13 @@
clone P2, P0
print "ok 1\n"
set_args "0", 4.0
- get_results "0", N5
invokecc P0
+ get_results "0", N5
ne N5, 8.0, nok_1
print "ok 2\n"
set_args "0", 4.0
- get_results "0", N5
invokecc P2
+ get_results "0", N5
ne N5, 8.0, nok_1
end
nok_1: print "nok 1\n"
@@ -749,8 +749,8 @@
set I6, 20
set I7, 30
set_args "0,0,0", I5,I6,I7
- get_results "0", I5
invokecc P0
+ get_results "0", I5
print I5
print "\n"
end
@@ -766,8 +766,8 @@
set P5, -6
set I5, -7
set_args "0,0", P5,I5
- get_results "0", I5
invokecc P0
+ get_results "0", I5
print I5
print "\n"
end
@@ -785,8 +785,8 @@
set P5, -7
set_args "0,0", I5,P5
- get_results "0", I5
invokecc P0
+ get_results "0", I5
print I5
print "\n"
@@ -803,8 +803,8 @@
dlfunc P0, P1, "nci_tb", "tb"
set S5, "ko\n"
set_args "0", S5
- get_results "0", S5
invokecc P0
+ get_results "0", S5
print S5
end
CODE
@@ -816,8 +816,8 @@
dlfunc P0, P1, "nci_tB", "tB"
set S5, "ko\n"
set_args "0", S5
- get_results "0", S5
invokecc P0
+ get_results "0", S5
print S5
end
CODE
@@ -830,8 +830,8 @@
# this test function returns a struct { int[2]; char }
set I5, 0
set_args "0", I5
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P2, ['ResizablePMCArray']
.include "datatypes.pasm"
push P2, .DATATYPE_INT
@@ -862,8 +862,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { float[2]; double }
set_args "0", 1
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P2, ['ResizablePMCArray']
.include "datatypes.pasm"
push P2, .DATATYPE_FLOAT
@@ -894,8 +894,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { char; int }
set_args "0", 2
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P2, ['ResizablePMCArray']
.include "datatypes.pasm"
push P2, .DATATYPE_CHAR
@@ -928,8 +928,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { char*; int }
set_args "0", 3
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P2, ['ResizablePMCArray']
.include "datatypes.pasm"
push P2, .DATATYPE_CSTR
@@ -956,8 +956,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { char; x->{int, double} }
set_args "0", 4
- get_results "0", P5
invokecc P0
+ get_results "0", P5
.include "datatypes.pasm"
# the contained structure
new P3, ['ResizablePMCArray']
@@ -1010,8 +1010,8 @@
loadlib P1, "libnci_test"
dlfunc P0, P1, "nci_pi", "pi"
set_args "0", 8
- get_results "0", P5
invokecc P0
+ get_results "0", P5
.include "datatypes.pasm"
# the contained structure pointer
new P6, 'OrderedHash'
@@ -1081,8 +1081,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { int (*f)(char *) }
set_args "0", 5
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P2, ['ResizablePMCArray']
.include "datatypes.pasm"
push P2, .DATATYPE_FUNC_PTR
@@ -1097,8 +1097,8 @@
# now we get a callable NCI PMC
set P0, P5[0]
set_args "0", "hello call_back"
- get_results "0", I5
invokecc P0
+ get_results "0", I5
print I5
print "\n"
end
@@ -1112,8 +1112,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { int; {int; int} int }
set_args "0", 6
- get_results "0", P5
invokecc P0
+ get_results "0", P5
.include "datatypes.pasm"
# the nested structure
new P3, ['ResizablePMCArray']
@@ -1167,8 +1167,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { char; {char; int} char }
set_args "0", 7
- get_results "0", P5
invokecc P0
+ get_results "0", P5
.include "datatypes.pasm"
# the nested structure
new P3, ['ResizablePMCArray']
@@ -1222,8 +1222,8 @@
dlfunc P0, P1, "nci_pi", "pi"
# this test function returns a struct { char; {char; int} char }
set_args "0", 7
- get_results "0", P5
invokecc P0
+ get_results "0", P5
.include "datatypes.pasm"
# the nested structure
new P3, ['OrderedHash']
@@ -1346,8 +1346,8 @@
set P5[3], "hello from Parrot\x0"
set I5, 1
set_args "0", P5
- get_results "0", I5
invokecc P0
+ get_results "0", I5
print I5
print "\n"
end
@@ -2141,9 +2141,9 @@
loadlib P1, "libnci_test"
set_args "0,0", P2, P3
- get_results "0", I5
dlfunc P0, P1, "nci_i33", "i33"
invokecc P0
+ get_results "0", I5
print "Double: "
print P2
@@ -2223,8 +2223,8 @@
loadlib P1, "libnci_test"
dlfunc P0, P1, "nci_piiii", "piiii"
set_args "0,0,0,0", 100,200,400,800
- get_results "0", P5
invokecc P0
+ get_results "0", P5
new P6, 'OrderedHash'
set P6[ 'count' ], .DATATYPE_INT
Modified: branches/ops_pct/t/pmc/null.t
==============================================================================
--- branches/ops_pct/t/pmc/null.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/null.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/object.t
==============================================================================
--- branches/ops_pct/t/pmc/object.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/object.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/objects.t
==============================================================================
--- branches/ops_pct/t/pmc/objects.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/objects.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -1377,11 +1377,11 @@
$P1 = new 'Foo41'
$S1 = $P1
- is( $S1, 'Hello world', 'get_string method' )
+ is( $S1, 'Hello world', 'get_string :vtable :method' )
$P1 = new 'Bar41'
$S1 = $P1
- is( $S1, 'Hello world', 'vtable method get_string' )
+ is( $S1, 'Hello world', 'get_string :method :vtable' )
.end
.namespace [ 'Foo41' ]
@@ -1713,57 +1713,52 @@
new $P5, ['String'] # set attribute values
set $P5, "i" # attribute slots have reference semantics
set_args "0,0,0", $P5, "Foo56", "i"
- get_results ""
callmethodcc $P2, "set"
new $P5, ['String']
set $P5, "j"
set_args "0,0,0", $P5, "Foo56", "j"
- get_results ""
callmethodcc $P2, "set"
new $P5, ['String']
set $P5, "k"
set_args "0,0,0", $P5, "Bar56", "k"
- get_results ""
callmethodcc $P2, "set"
new $P5, ['String']
set $P5, "l"
set_args "0,0,0", $P5, "Bar56", "l"
- get_results ""
callmethodcc $P2, "set"
new $P5, ['String']
set $P5, "m"
set_args "0,0,0", $P5, "Bar56", "m"
- get_results ""
callmethodcc $P2, "set"
# now retrieve attributes
set_args "0,0", "Foo56", "i"
- get_results "0", $P5
callmethodcc $P2, "get"
+ get_results "0", $P5
is( $P5, 'i', 'got attrib i from subclass through parent method' )
set_args "0,0", "Foo56", "j"
- get_results "0", $P5
callmethodcc $P2, "get"
+ get_results "0", $P5
is( $P5, "j", 'got attrib i from subclass through parent method' )
set_args "0,0", "Bar56", "k"
- get_results "0", $P5
callmethodcc $P2, "get"
+ get_results "0", $P5
is( $P5, "k", 'got attrib i from subclass through parent method' )
set_args "0,0", "Bar56", "l"
- get_results "0", $P5
callmethodcc $P2, "get"
+ get_results "0", $P5
is( $P5, "l", 'got attrib i from subclass through parent method' )
set_args "0,0", "Bar56", "m"
- get_results "0", $P5
callmethodcc $P2, "get"
+ get_results "0", $P5
is( $P5, "m", 'got attrib i from subclass through parent method' )
.end
Modified: branches/ops_pct/t/pmc/opcode.t
==============================================================================
--- branches/ops_pct/t/pmc/opcode.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/opcode.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/oplib.t
==============================================================================
--- branches/ops_pct/t/pmc/oplib.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/oplib.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Deleted: branches/ops_pct/t/pmc/os.t
==============================================================================
--- branches/ops_pct/t/pmc/os.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,447 +0,0 @@
-#! perl
-# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test tests => 16;
-use Parrot::Config;
-use Cwd;
-use File::Spec;
-
-my $MSWin32 = $^O =~ m!MSWin32!;
-my $cygwin = $^O =~ m!cygwin!;
-my $solaris = $^O =~ m!solaris!;
-my $MSVC = $PConfig{cc} =~ m/\bcl(?:\.exe)?/i;
-
-=head1 NAME
-
-t/pmc/os.t - Files and Dirs
-
-=head1 SYNOPSIS
-
- % prove t/pmc/os.t
-
-=head1 DESCRIPTION
-
-Tests the C<OS> PMC.
-
-=cut
-
-END {
- # Clean up environment on exit
- rmdir "xpto" if -d "xpto";
- unlink "xpto" if -f "xpto";
-}
-
-# test 'cwd'
-my $cwd = File::Spec->canonpath(getcwd);
-if (File::Spec->case_tolerant(substr($cwd,0,2))) {
- $cwd = lc($cwd);
- pir_output_is( <<'CODE', <<"OUT", 'Test cwd' );
-.sub main :main
- $P1 = new ['OS']
- $S1 = $P1."cwd"()
- $S2 = downcase $S1
- print $S2
- print "\n"
- end
-.end
-CODE
-$cwd
-OUT
-}
-else {
- pir_output_is( <<'CODE', <<"OUT", 'Test cwd' );
-.sub main :main
- $P1 = new ['OS']
- $S1 = $P1."cwd"()
- print $S1
- print "\n"
- end
-.end
-CODE
-$cwd
-OUT
-}
-
-# TEST chdir
-chdir "src";
-my $upcwd = File::Spec->canonpath(getcwd);
-chdir '..';
-
-if (File::Spec->case_tolerant(substr($cwd,0,2))) {
- $cwd = lc($cwd);
- $upcwd = lc($upcwd);
-
- pir_output_is( <<'CODE', <<"OUT", 'Test chdir' );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "src"
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- $S2 = downcase $S1
- say $S2
-
- $S1 = ".."
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- $S2 = downcase $S1
- say $S2
-
- end
-.end
-CODE
-$upcwd
-$cwd
-OUT
-}
-else {
- pir_output_is( <<'CODE', <<"OUT", 'Test chdir' );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "src"
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- say $S1
-
- $S1 = ".."
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- say $S1
-
- end
-.end
-CODE
-$upcwd
-$cwd
-OUT
-}
-
-# Test mkdir
-
-my $xpto = $upcwd;
-$xpto =~ s/src([\/\\]?)$/xpto$1/;
-
-if (File::Spec->case_tolerant(substr($cwd,0,2))) {
-
- pir_output_is( <<'CODE', <<"OUT", 'Test mkdir' );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $I1 = 0o555
- $P1."mkdir"($S1,$I1)
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- $S2 = downcase $S1
- say $S2
-
- $S1 = ".."
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- $S2 = downcase $S1
- say $S2
-
- end
-.end
-CODE
-$xpto
-$cwd
-OUT
-}
-else {
- pir_output_is( <<'CODE', <<"OUT", 'Test mkdir' );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $I1 = 0o555
- $P1."mkdir"($S1,$I1)
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- say $S1
-
- $S1 = ".."
- $P1."chdir"($S1)
-
- $S1 = $P1."cwd"()
- say $S1
-
- end
-.end
-CODE
-$xpto
-$cwd
-OUT
-}
-
-# Test remove on a directory
-mkdir "xpto" unless -d "xpto";
-
-pir_output_is( <<'CODE', <<'OUT', 'Test rm call in a directory' );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $P1."rm"($S1)
-
- print "ok\n"
-
- end
-.end
-CODE
-ok
-OUT
-
-ok( !-d $xpto, "Test that rm removed the directory" );
-rmdir $xpto if -d $xpto; # this way next test doesn't fail if this one does
-
-# test stat
-
-open my $X, '>', "xpto";
-print $X "xpto";
-close $X;
-
-my $stat;
-
-my $count = $MSWin32 ? 11 : 13;
-my @s = stat('xpto');
-if ( $cygwin ) {
- # Mask inode number (fudge it)
- $s[1] &= 0xffffffff;
-}
-
-if ( $MSWin32 ) {
- $stat = sprintf("0x%08x\n" x 11, @s);
- pir_output_is( <<'CODE', $stat, 'Test OS.stat' );
-.sub main :main
- $P1 = new ['OS']
- $S1 = "xpto"
- $P2 = $P1."stat"($S1)
-
- $S1 = repeat "0x%08x\n", 11
- $S2 = sprintf $S1, $P2
- print $S2
-done:
- end
-.end
-CODE
-}
-else {
- SKIP: {
- skip 'broken test TT #457', 1 if $solaris;
-
- $stat = sprintf("0x%08x\n" x 13, @s);
- pir_output_is( <<'CODE', $stat, 'Test OS.stat' );
-.sub main :main
- $P1 = new ['OS']
- $S1 = "xpto"
- $P2 = $P1."stat"($S1)
-
- $S1 = repeat "0x%08x\n", 13
- $S2 = sprintf $S1, $P2
- print $S2
-done:
- end
-.end
-CODE
-}
-}
-
-# test readdir
-SKIP: {
- skip 'not implemented on windows yet', 1 if ( $MSWin32 && $MSVC );
-
- opendir my $IN, 'docs';
- my @entries = readdir $IN;
- closedir $IN;
- my $entries = join( ' ', @entries ) . "\n";
- pir_output_is( <<'CODE', $entries, 'Test OS.readdir' );
-.sub main :main
- $P1 = new ['OS']
- $P2 = $P1.'readdir'('docs')
-
- $S0 = join ' ', $P2
- print $S0
- print "\n"
-.end
-CODE
-}
-
-# test rename
-SKIP: {
- open my $FILE, ">", "____some_test_file";
- close $FILE;
- pir_output_is( <<'CODE', <<"OUT", 'Test OS.rename' );
-.sub main :main
- $P1 = new ['OS']
- $P1.'rename'('____some_test_file', '___some_other_file')
- $I0 = stat '___some_other_file', 0
- print $I0
- print "\n"
- $P1.'rm'('___some_other_file')
-.end
-CODE
-1
-OUT
-}
-
-# test lstat
-
-my $lstat;
-
-SKIP: {
- skip 'lstat not on Win32', 1 if $MSWin32;
- skip 'broken test TT #457', 1 if $solaris;
-
- my @s = lstat('xpto');
- if ($cygwin) {
- # Mask inode number (fudge it)
- $s[1] &= 0xffffffff;
- }
- $lstat = sprintf( "0x%08x\n" x 13, @s );
- pir_output_is( <<'CODE', $lstat, "Test OS.lstat" );
-.sub main :main
- $P1 = new ['OS']
- $S1 = "xpto"
- $P2 = $P1."lstat"($S1)
-
- $S1 = repeat "0x%08x\n", 13
- $S2 = sprintf $S1, $P2
- print $S2
-
- end
-.end
-CODE
-}
-
-# Test remove on a file
-pir_output_is( <<'CODE', <<"OUT", "Test rm call in a file" );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $P1."rm"($S1)
-
- print "ok\n"
-
- end
-.end
-CODE
-ok
-OUT
-
-ok( !-f $xpto, "Test that rm removed file" );
-rmdir $xpto if -f $xpto; # this way next test doesn't fail if this one does
-
-# Test symlink
-SKIP: {
- skip "Symlinks not available under Windows", 2 if $MSWin32;
-
- pir_output_is( <<'CODE', <<"OUT", "Test symlink" );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $S2 = "MANIFEST"
- $P1."symlink"($S2, $S1)
-
- print "ok\n"
-
- end
-.end
-CODE
-ok
-OUT
-
- ok( -l "xpto", "symlink was really created" );
- unlink "xpto" if -f "xpto";
-}
-
-# Test link to file. May require root permissions
-SKIP: {
- skip "Hardlinks to files not possible on Windows", 2 if $MSWin32 or $cygwin;
-
- pir_output_is( <<'CODE', <<"OUT", "Test link" );
-.sub main :main
- $P1 = new ['OS']
-
- $S1 = "xpto"
- $S2 = "myconfig"
- $P1."link"($S2, $S1)
-
- print "ok\n"
-
- end
-.end
-CODE
-ok
-OUT
-
- my $nl = [ stat("myconfig") ]->[3];
- ok( $nl > 1, "hard link to file was really created" );
- unlink "xpto" if -f "xpto";
-}
-
-SKIP: {
- skip "Hardlinks to files not possible on Windows", 1 if $MSWin32 or $cygwin;
-
- my $prevnl = [ stat("tools") ]->[3];
- pir_output_like( <<"CODE", <<"OUT", "Test dirlink" );
-.sub main :main
- .local pmc os
- .local string xpto, tools
- os = new ['OS']
- xpto = "xpto"
- tools = "tools"
-
- push_eh no_root_perms
- os."link"(tools, xpto)
- pop_eh
-
- .local pmc statvals
- statvals = os.'stat'(tools)
-
- # nlink
- .local int nlink
- nlink = statvals[3]
-
- gt nlink, $prevnl, is_okay
- end
-
- no_root_perms:
- .local pmc e
- .local string message
- .get_results( e )
- pop_eh
- message = e['message']
- say message
- end
-
- is_okay:
- say "ok"
- end
-.end
-CODE
-/link.* failed for OS PMC:/
-OUT
-}
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/pmc/packfile.t
==============================================================================
--- branches/ops_pct/t/pmc/packfile.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfile.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
@@ -22,7 +22,7 @@
.sub main :main
.include 'test_more.pir'
- plan(34)
+ plan(36)
'test_new'()
'test_get_string'()
'test_set_string'()
@@ -32,8 +32,10 @@
'test_load'()
'test_pack_fresh_packfile'()
'test_pack'()
- # This test will crash on many platforms. See TT #545.
- #'test_synonyms'()
+
+ skip(2, "test_synonyms crash on many platforms. See TT #545")
+ # 'test_synonyms'()
+
.end
@@ -43,11 +45,10 @@
pf = new ['Packfile']
$I0 = defined pf
ok($I0, 'new')
- _check_header(pf)
+ .tailcall _check_header(pf)
.end
-# Packfile.get_integer_keyed_str
.sub 'test_get_string'
.local pmc pf
pf = new ['Packfile']
@@ -66,7 +67,6 @@
.return ()
.end
-# Packfile.get_integer_keyed_str
.sub 'test_set_string'
.local pmc pf
pf = new ['Packfile']
@@ -95,12 +95,11 @@
.end
-
-
-# Packfile.set_string_native, Packfile.get_integer_keyed_str
.sub 'test_get_integer'
.local pmc pf
+ push_eh load_error
pf = _pbc()
+ pop_eh
$I0 = pf["version_major"]
ok(1, "get_integer_keyed_str(version_major)")
@@ -120,14 +119,23 @@
pop_eh
ok(1, "get_integer_keyed_str handle unknown key properly")
.return ()
-
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "get_integer_keyed_str(version_major)")
+ report_load_error($P0, "get_integer_keyed_str(version_minor)")
+ report_load_error($P0, "get_integer_keyed_str(version_patch)")
+ report_load_error($P0, "get_integer_keyed_str unknown key")
+ .return()
.end
# Packfile.set_integer_keyed_str
.sub 'test_set_integer'
.local pmc pf
+ push_eh load_error
pf = _pbc()
+ pop_eh
$S1 = 'version_major'
$I0 = pf[$S1]
$I1 = $I0
@@ -137,6 +145,12 @@
$I3 = cmp $I0, $I2
$I3 = cmp $I3, 0
ok($I3, 'set_integer_keyed_str version bumped')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'set_integer_keyed_str version bumped')
+ .return()
.end
# Packfile.get_directory
@@ -151,12 +165,20 @@
# PackfileSegment.pack (via subclass PackfileDirectory)
.sub 'test_get_directory'
.local pmc pf, pfdir
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
$S0 = pfdir.'pack'()
$I0 = length $S0
$I1 = cmp $I0, 0
ok($I1, 'get_directory')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'get_directory')
+ .return()
.end
@@ -164,9 +186,18 @@
# Check that packfile was loaded properly and set various attributes
.sub 'test_load'
.local pmc pf
+ push_eh load_error
pf = _pbc()
+ pop_eh
- _check_header(pf)
+ .tailcall _check_header(pf)
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "Wordsize set")
+ report_load_error($P0, "version_major set")
+ report_load_error($P0, "bytecode_major set")
+ .return()
.end
# Helper sub to check fields in Packfile header
@@ -265,6 +296,7 @@
# Check that unpack-pack produce correct result.
.sub 'test_pack'
.local string filename, first
+ push_eh load_error
$S0 = '_filename'()
$P0 = open $S0, 'r'
@@ -273,6 +305,7 @@
.local pmc packfile
packfile = new 'Packfile'
packfile = first
+ pop_eh
# Packed file should be exactly the same as loaded
.local string second
@@ -282,12 +315,20 @@
$I0 = cmp first, second
$I0 = not $I0
todo($I0, 'pack produced same result twice')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'pack produced same result twice')
+ .return()
.end
# Test pack/set_string unpack/get_string equivalency
.sub 'test_synonyms'
.local pmc pf
+ push_eh load_error
pf = '_pbc'()
+ pop_eh
$S0 = pf
$S1 = pf.'pack'()
@@ -304,6 +345,13 @@
$S1 = $P1
$I0 = cmp $S0, $S1
is($I0, 0, "unpack and set_string are synonyms")
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "pack and get_string are synonyms")
+ report_load_error($P0, "unpack and set_string are synonyms")
+ .return()
.end
Modified: branches/ops_pct/t/pmc/packfileannotation.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileannotation.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfileannotation.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/packfileannotations.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileannotations.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfileannotations.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
@@ -40,11 +40,20 @@
.sub 'test_unpack'
.local pmc pf
+ push_eh load_error
$P0 = open 't/native_pbc/annotations.pbc'
+ $P0.'encoding'('binary')
$S0 = $P0.'readall'()
pf = new 'Packfile'
pf = $S0
+ pop_eh
.tailcall '!test_unpack'(pf)
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "PackfileAnnotations unpack failed to load test file")
+ skip(7, "PackfileAnnotations unpack tests failed")
+ .return()
.end
# Programatically create PBC same as t/native_pbc/annotations.pbc and check unpack of it.
@@ -146,7 +155,7 @@
fail:
nok(1, "PackfileAnnotations wasn't found in Directory")
# BAIL_OUT
- skip(9, "PackfileAnnotations tests failed")
+ skip(7, "PackfileAnnotations tests failed")
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/packfileconstanttable.t
==============================================================================
--- branches/ops_pct/t/pmc/packfileconstanttable.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfileconstanttable.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -36,14 +36,21 @@
.end
-
# sanity check we have a PackfileConstantTable
.sub 'test_sanity'
.local pmc pbc, pftable
.local string name
+ push_eh load_error
pbc = _pbc()
+ pop_eh
pftable = _get_consttable(pbc)
isa_ok(pftable, "PackfileConstantTable")
+ .return ()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "PackfileConstantTable")
+ .return()
.end
@@ -51,10 +58,18 @@
.sub 'test_elements'
.local pmc pf, pftable
.local int size
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_consttable(pf)
size = elements pftable
ok(size, "PackfileConstantTable.elements returns non-zero")
+ .return ()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "PackfileConstantTable.elements returns non-zero")
+ .return()
.end
@@ -62,7 +77,9 @@
.sub 'test_get'
.local pmc pf, pftable
.local int size, this, type
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_consttable(pf)
size = elements pftable
this = 0
@@ -103,6 +120,11 @@
bad:
ok(0, 'Unknown constant type')
.return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'PackfileConstantTable.get_*_int works')
+ .return()
.end
# Test setting constants into PackfileConstantTable
Modified: branches/ops_pct/t/pmc/packfiledirectory.t
==============================================================================
--- branches/ops_pct/t/pmc/packfiledirectory.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfiledirectory.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -30,6 +30,7 @@
'test_set_pmc_keyed_str'()
.end
+
# Test creation of fresh directory
.sub 'test_create'
.local pmc dir, seg
@@ -62,10 +63,18 @@
# PackfileDirectory.elements
.sub 'test_elements'
.local pmc pf, pfdir
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
$I0 = elements pfdir
is($I0, 4, 'PackfileDirectory.elements')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'PackfileDirectory.elements')
+ .return()
.end
@@ -80,7 +89,9 @@
expected["FIXUP"] = 1
expected["CONSTANT"] = 1
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
$I0 = elements pfdir
it = iter pfdir
@@ -105,12 +116,20 @@
goto loop
done:
.return ()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "can't run get_iter tests")
+ skip(11, "can't run get_iter tests")
+ .return()
.end
## PackfileDirectory.set_pmc_keyed_str
.sub 'test_set_pmc_keyed_str'
.local pmc pf, pfdir, seg
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
seg = new [ 'PackfileRawSegment' ]
@@ -140,6 +159,13 @@
done:
.return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "Segment with old name was added")
+ report_load_error($P0, "New segment added")
+ report_load_error($P0, "segment deleted")
+ .return()
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/packfilefixupentry.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilefixupentry.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfilefixupentry.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -35,9 +35,17 @@
.sub 'test_sanity'
.local pmc pf, pftable
.local string name
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_fixup_table(pf)
isa_ok(pftable, 'PackfileFixupTable')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'PackfileFixupTable')
+ .return()
.end
@@ -45,10 +53,18 @@
.sub 'test_sanity_entry'
.local pmc pf, pftable, pfentry
.local string name
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_fixup_table(pf)
pfentry = pftable[0]
isa_ok(pfentry, 'PackfileFixupEntry')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'PackfileFixupEntry')
+ .return()
.end
@@ -57,7 +73,9 @@
.local pmc pf, pftable, pfentry
.local int size, this, data
.local string name, label
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_fixup_table(pf)
size = elements pftable
this = 0
@@ -79,6 +97,12 @@
gt size, 0, done
done:
ok(1, "Got entries")
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "Got entries")
+ .return()
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/packfilefixuptable.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilefixuptable.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfilefixuptable.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -28,12 +28,27 @@
test_unpack()
.end
+
+# Report no ok for loading packfile failures
+.sub report_load_error
+ .param pmc except
+ .param string desc
+ .local string msg, aux
+ msg = concat desc, ' - error loading packfile: '
+ aux = except['message']
+ msg = concat msg, aux
+ ok(0, msg)
+.end
+
+
# Check unpackging FixupTable
.sub 'test_unpack'
.local pmc pf, pfdir, pftable, pfentry
.local int size, this, data
.local string name
+ push_eh load_error
pf = _pbc()
+ pop_eh
pftable = _get_fixup_table(pf)
isa_ok(pftable, 'PackfileFixupTable')
@@ -59,6 +74,13 @@
gt size, 0, done
done:
ok(1, "All elements of Table are Entries")
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "All elements of Table are Entries")
+ skip(2, "All elements of Table are Entries")
+ .return()
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/packfilerawsegment.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilerawsegment.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfilerawsegment.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
@@ -35,17 +35,27 @@
# PackfileRawSegment.elements
.sub 'test_elements'
.local pmc pf, pfdir, pfseg
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
$I0 = elements pfseg
ok($I0, 'PackfileRawSegment contains some data')
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, 'PackfileRawSegment contains some data')
+ .return()
.end
# PackfileRawSegment.get_integer_keyed_int
.sub 'test_get_integer'
.local pmc pf, pfdir, pfseg
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
@@ -61,6 +71,12 @@
$I1 = pfseg[4]
$I0 = $I0 + $I1
ok($I0, "PackfileRawSegment.get_integer_keyed_int returns some data")
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "PackfileRawSegment.get_integer_keyed_int returns some data")
+ .return()
.end
# PackfileRawSegment.push_integer
@@ -79,7 +95,9 @@
# PackfileRawSegment.type
.sub 'test_type'
.local pmc pf, pfdir, pfseg, hash, it
+ push_eh load_error
pf = _pbc()
+ pop_eh
pfdir = pf.'get_directory'()
hash = new ['Hash']
# annotations.pbc contains all available segments. -1 for directory and unknown.
@@ -105,7 +123,13 @@
$P0.'type'(.PF_DEBUG_SEG)
$I0 = $P0.'type'()
is($I0, .PF_DEBUG_SEG, "Type successfully changed")
-
+ .return()
+load_error:
+ .get_results($P0)
+ pop_eh
+ report_load_error($P0, "can't run test_type tests")
+ skip(2, "can't run test_type tests")
+ .return()
.end
Modified: branches/ops_pct/t/pmc/packfilesegment.t
==============================================================================
--- branches/ops_pct/t/pmc/packfilesegment.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/packfilesegment.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/parrotclass.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotclass.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/parrotclass.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/parrotinterpreter.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotinterpreter.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/parrotinterpreter.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#!parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/parrotlibrary.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotlibrary.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/parrotlibrary.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/parrotobject.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotobject.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/parrotobject.t Wed May 5 08:45:29 2010 (r46302)
@@ -84,7 +84,7 @@
.return("monkey")
.end
CODE
-/'not_in_the_vtable' is not a v-table method, but was used with :vtable/
+/'not_in_the_vtable' is not a vtable, but was used with :vtable/
OUT
# '
Deleted: branches/ops_pct/t/pmc/parrotrunningthread.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotrunningthread.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,56 +0,0 @@
-#! parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/parrotrunningthread.t - test the ParrotRunningThread PMC
-
-=head1 SYNOPSIS
-
- % prove t/pmc/parrotrunningthread.t
-
-=head1 DESCRIPTION
-
-Tests the ParrotRunningThread PMC.
-
-=cut
-
-.sub 'main' :main
- .include 'test_more.pir'
-
- plan(2)
-
- new $P0, ['ParrotRunningThread']
- ok(1, 'Instantiated .ParrotRunningThread')
-
- test_set_integer_native($P0)
-.end
-
-.sub 'test_set_integer_native'
- .param pmc thread
-
- .local string desc
- desc = 'setting invalid thread id should throw exception'
-
- push_eh invalid_thread_id_handler
- thread = -1
- pop_eh
-
- ok(0, desc)
-
- invalid_thread_id_handler:
- .local pmc e, c
- .get_results( e )
-
- .local string message
- message = e
-
- is( message, 'Attempt to set invalid thread id -1', desc )
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/pmc/parrotthread.t
==============================================================================
--- branches/ops_pct/t/pmc/parrotthread.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/parrotthread.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
@@ -16,13 +16,14 @@
=cut
-.sub main :main
+.sub 'main' :main
.include 'test_more.pir'
plan(1)
new $P0, ['ParrotThread']
ok(1, 'Instantiated a ParrotThread PMC')
+
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/pmcproxy.t
==============================================================================
--- branches/ops_pct/t/pmc/pmcproxy.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/pmcproxy.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
@@ -144,10 +144,10 @@
addparent $P0, $P1
ok(1, "added Class's PMCProxy as a parent of the PDD15 class")
- #We will override the add_role vtable method.
+ #We will override the add_role vtable
$P2 = get_global 'no_add_role'
$P0.'add_vtable_override'('add_role', $P2)
- ok(1, 'overrode a vtable method')
+ ok(1, 'overrode a vtable')
$P2 = $P0.'new'()
ok(1, 'instantiated the class')
@@ -178,7 +178,7 @@
addparent $P0, $P1
ok(1, "added Class's PMCProxy as a parent of the PDD15 class")
- #We will override the inspect_str vtable method.
+ #We will override the inspect_str vtable
$P2 = get_global 'always42'
$P0.'add_vtable_override'('inspect_str', $P2)
ok(1, 'overrode inspect_str method')
@@ -188,9 +188,9 @@
$P3 = $P2.'inspect'('methods')
is($P3, 42, "the magic overriding sub was called")
- ok(1, 'Called non-overridden method, which called overridden vtable method')
+ ok(1, 'Called non-overridden method, which called overridden vtable')
.end
-.sub always42 :method
+.sub always42 :method :nsentry('always42')
.param string what
$P0 = new ['Integer']
$P0 = 42
Modified: branches/ops_pct/t/pmc/pointer.t
==============================================================================
--- branches/ops_pct/t/pmc/pointer.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/pointer.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/prop.t
==============================================================================
--- branches/ops_pct/t/pmc/prop.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/prop.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/resizablebooleanarray.t
==============================================================================
--- branches/ops_pct/t/pmc/resizablebooleanarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/resizablebooleanarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2007, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/resizablefloatarray.t
==============================================================================
--- branches/ops_pct/t/pmc/resizablefloatarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/resizablefloatarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/resizableintegerarray.t
==============================================================================
--- branches/ops_pct/t/pmc/resizableintegerarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/resizableintegerarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/resizablepmcarray.t
==============================================================================
--- branches/ops_pct/t/pmc/resizablepmcarray.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/resizablepmcarray.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Deleted: branches/ops_pct/t/pmc/retcontinuation.t
==============================================================================
--- branches/ops_pct/t/pmc/retcontinuation.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,32 +0,0 @@
-#! parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/retcontinuation.t - test the RetContinuation PMC
-
-=head1 SYNOPSIS
-
- % prove t/pmc/retcontinuation.t
-
-=head1 DESCRIPTION
-
-Tests the RetContinuation PMC.
-
-=cut
-
-.sub main :main
- .include 'test_more.pir'
-
- plan(1)
-
- new $P0, ['RetContinuation']
- ok(1, 'Instantiated a RetContinuation PMC')
-.end
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/ops_pct/t/pmc/ro.t
==============================================================================
--- branches/ops_pct/t/pmc/ro.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/ro.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
@@ -39,7 +39,7 @@
.sub main :main
.include 'test_more.pir'
- plan(12)
+ plan(13)
integer_set_read_only_is_not_writable() # 1 test
integer_set_read_only_can_be_read() # 6 tests
@@ -48,7 +48,7 @@
complex_i_add() # 1 test
resizablepmcarray_non_recursive_part() # 1 test
objects() # 1 test
-# resizablepmcarray_recursive() #
+ resizablepmcarray_recursive() # 1 test
.end
.sub integer_set_read_only_is_not_writable
@@ -66,13 +66,14 @@
foo = 43
pop_eh
ok( 0, "integer_set_read_only_is_not_writable" )
- end
+ goto end
-eh_label:
+ eh_label:
.local string message
.get_results($P0)
message = $P0['message']
is( message, "set_integer_native() in read-only instance of 'Integer'", "integer_set_read_only_is_not_writable" )
+ end:
.end
.sub integer_set_read_only_can_be_read
@@ -127,12 +128,14 @@
pop_eh
ok(0, 'integer_add')
+ goto end
-eh_label:
+ eh_label:
.local string message
.get_results($P0)
message = $P0['message']
is( message, "i_add_int() in read-only instance of 'Integer'", 'integer_add' )
+ end:
.end
.sub complex_i_add
@@ -151,13 +154,14 @@
add foo, 4
pop_eh
ok( 0, 'complex_i_add')
+ goto end
-eh_label:
+ eh_label:
.local string message
.get_results($P0)
message = $P0['message']
is( message, "i_add_int() in read-only instance of 'Complex'", 'complex_i_add' )
-
+ end:
.end
.sub resizablepmcarray_non_recursive_part
@@ -184,12 +188,14 @@
pop_eh
ok(0, 'resizablepmcarray_non_recursive_part')
+ goto end
-eh_label:
+ eh_label:
.local string message
.get_results($P0)
message = $P0['message']
is( message, "set_pmc_keyed_int() in read-only instance of 'ResizablePMCArray'", 'resizablepmcarray_non_recursive_part' )
+ end:
.end
.sub objects
@@ -202,7 +208,6 @@
eh.'handle_types'(.EXCEPTION_WRITE_TO_CONSTCLASS)
set_addr eh, eh_label
-
fooclass = newclass 'Foo'
addattribute fooclass, 'bar'
foo = new ['Foo']
@@ -215,22 +220,20 @@
pop_eh
ok( 0, 'objects')
+ goto end
-eh_label:
+ eh_label:
.local string message
.get_results($P0)
message = $P0['message']
is( message, "set_attr_str() in read-only instance of 'Foo'", 'objects' )
+ end:
.end
-=pod
-
-TT #1036: should this work?
-
.sub resizablepmcarray_recursive
.local pmc foo
.local pmc three
- .local pmc tmp
+ .local pmc four
foo = new ['ResizablePMCArray']
three = new ['Integer']
@@ -239,19 +242,14 @@
foo = 1
foo[0] = three
- print "before make_readonly\n"
make_readonly(foo)
- print "after\n"
- # three = 4 # should fail -- is that what we want
- tmp = foo[0]
- tmp = 4
- print "NOT OKAY\n"
- tmp = foo[0]
- print tmp
+ four = foo[0]
+ four = 4
+ four = foo[0]
+ is(four, 4, 'TT #1036 - readonly should be shallow')
.end
-=cut
# Local Variables:
Modified: branches/ops_pct/t/pmc/role.t
==============================================================================
--- branches/ops_pct/t/pmc/role.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/role.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/scalar.t
==============================================================================
--- branches/ops_pct/t/pmc/scalar.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/scalar.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/scheduler.t
==============================================================================
--- branches/ops_pct/t/pmc/scheduler.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/scheduler.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/schedulermessage.t
==============================================================================
--- branches/ops_pct/t/pmc/schedulermessage.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/schedulermessage.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/sockaddr.t
==============================================================================
--- branches/ops_pct/t/pmc/sockaddr.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/sockaddr.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/socket.t
==============================================================================
--- branches/ops_pct/t/pmc/socket.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/socket.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/string.t
==============================================================================
--- branches/ops_pct/t/pmc/string.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/string.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
@@ -20,15 +20,13 @@
.sub main :main
.include 'test_more.pir'
- plan(171)
+ plan(166)
set_or_get_strings()
setting_integers()
setting_numbers()
ensure_that_concat_ppp_copies_strings()
ensure_that_concat_pps_copies_strings()
- setting_string_references()
- assigning_string_copies()
test_repeat()
test_repeat_without_creating_dest_pmc()
test_repeat_int()
@@ -51,7 +49,6 @@
bnots_null_string()
test_eq_str()
test_ne_str()
- set_const_and_chop()
check_whether_interface_is_done()
test_clone()
test_set_px_i()
@@ -59,7 +56,6 @@
test_string_replace()
set_i0__p0__string_to_int()
test_string_trans()
- reverse_p0__reverse_string()
is_integer__check_integer()
instantiate_str()
get_string_returns_cow_string()
@@ -102,6 +98,12 @@
set $P0, "0xFFFFFF"
set $S0, $P0
is( $S0, "0xFFFFFF", 'String obj set with literal hex string' )
+
+ null $S0
+ set $P0, $S0
+ set $S1, $P0
+ isnull $I0, $S1
+ ok( $I0, 'String obj is null-in null-out' )
.end
.sub setting_integers
@@ -197,26 +199,6 @@
is( $P0, 'fnarghGrunties', 'concat success' )
.end
-.sub setting_string_references
- new $P0, ['String']
- set $S0, "C2H5OH + 10H20"
- set $P0, $S0
- chopn $S0, 8
-
- is( $S0, 'C2H5OH', 'removed last 8 from string' )
- is( $P0, 'C2H5OH', '...and the PMC still reference $S0' )
-.end
-
-.sub assigning_string_copies
- new $P0, ['String']
- set $S0, "C2H5OH + 10H20"
- assign $P0, $S0
- chopn $S0, 8
-
- is( $S0, 'C2H5OH', 'removed the last 8 from string' )
- is( $P0, 'C2H5OH + 10H20', '...and the assigned PMC is a copy' )
-.end
-
.sub test_repeat
new $P0, ['String']
set $P0, "x"
@@ -763,15 +745,6 @@
OK4: ok( $I0, 'ne_str "0(Integer), "ABC" -> true' )
.end
-.sub set_const_and_chop
- new $P0, ['String']
- set $P0, "str"
- set $S0, $P0
- chopn $S0, 2
- is( $P0, 'str', 'original not touched' )
- is( $S0, 's', 'string chopn' )
-.end
-
.sub check_whether_interface_is_done
.local pmc pmc1
pmc1 = new ['String']
@@ -866,13 +839,6 @@
.return(tr_array)
.end
-.sub reverse_p0__reverse_string
- $S0 = 'torrap'
- $P0 = new ['String']
- $P0.'reverse'($S0)
- is( $S0, "parrot", 'reverse string' )
-.end
-
.sub is_integer__check_integer
$P0 = new ['String']
@@ -905,7 +871,7 @@
$P0 = "Foo44"
$S0 = $P0
- substr $S0, 0, 1, "B"
+ $S0 = replace $S0, 0, 1, "B"
is( $S0, "Boo44", 'substr replace' )
is( $P0, "Foo44", '... no change to original' )
.end
@@ -1036,6 +1002,7 @@
# Set
s = new ['String']
+ s = ''
$S0 = 'f'
s[0] = $S0
@@ -1049,6 +1016,16 @@
$P0 = 'o'
s[2] = $P0
is(s, 'foo', 'Set PMC keyed')
+
+ push_eh null_replace
+ s = new ['String']
+ s[0] = 'f'
+ nok('Replace on null string throws')
+ goto done_null_replace
+
+ null_replace:
+ ok(1, 'Replace on null string throws')
+ done_null_replace:
.end
# Local Variables:
Modified: branches/ops_pct/t/pmc/stringiterator.t
==============================================================================
--- branches/ops_pct/t/pmc/stringiterator.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/stringiterator.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/testlib/packfile_common.pir
==============================================================================
--- branches/ops_pct/t/pmc/testlib/packfile_common.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/testlib/packfile_common.pir Wed May 5 08:45:29 2010 (r46302)
@@ -70,6 +70,17 @@
.end
+# Report no ok for loading packfile failures
+.sub report_load_error
+ .param pmc except
+ .param string desc
+ .local string msg, aux
+ msg = concat desc, ' - error loading packfile: '
+ aux = except['message']
+ msg = concat msg, aux
+ ok(0, msg)
+.end
+
# Local Variables:
# mode: pir
Modified: branches/ops_pct/t/pmc/threads.t
==============================================================================
--- branches/ops_pct/t/pmc/threads.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/threads.t Wed May 5 08:45:29 2010 (r46302)
@@ -47,7 +47,7 @@
ok1:
print "ok 1\n"
new P4, ['ParrotThread']
- ne P4, P2, ok2
+ ne P2, P4, ok2
print "not"
ok2:
print "ok 2\n"
@@ -57,8 +57,6 @@
ok 2
OUTPUT
-# TT #1249: rework tests since we don't really have thread types?
-
SKIP: {
skip 'busted on win32' => 2 if $^O eq 'MSWin32';
@@ -184,7 +182,7 @@
CODE
ok 1
hello from thread
-ParrotThread tid 1
+ThreadInterpreter tid 1
from 10 interp
OUTPUT
@@ -217,7 +215,7 @@
branch lp
.end
CODE
-start 1
+start -1
in thread
done
OUTPUT
Modified: branches/ops_pct/t/pmc/undef.t
==============================================================================
--- branches/ops_pct/t/pmc/undef.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/undef.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2001-2009, Parrot Foundation.
# $Id$
Modified: branches/ops_pct/t/pmc/unmanagedstruct.t
==============================================================================
--- branches/ops_pct/t/pmc/unmanagedstruct.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/pmc/unmanagedstruct.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,4 +1,4 @@
-#! parrot
+#!./parrot
# Copyright (C) 2006-2008, Parrot Foundation.
# $Id$
Copied: branches/ops_pct/t/profiling/profiling.t (from r46301, trunk/t/profiling/profiling.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/profiling/profiling.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/profiling/profiling.t)
@@ -0,0 +1,194 @@
+#!./parrot-nqp
+
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+INIT {
+ pir::load_bytecode('ProfTest.pbc');
+}
+
+
+plan(12);
+
+my $pir_code :=
+'.sub main
+ say "what"
+.end';
+
+my $prof := ProfTest::PIRProfile.new($pir_code);
+
+
+ok(1, "profile creation didn't explode");
+
+#Does the profile have a version string?
+my $matcher := ProfTest::Matcher.new(
+ version()
+);
+
+ok( $matcher.matches($prof), "profile has a version number");
+
+#Does the profile have a CLI invocation?
+$matcher := ProfTest::Matcher.new(
+ cli()
+);
+
+ok( $matcher.matches($prof), "profile contains a CLI string");
+
+#Does the profile have a 'say' op somewhere?
+$matcher := ProfTest::Matcher.new(
+ op('say')
+);
+
+ok( $matcher.matches($prof), "profile has a say op");
+
+#Does the profile have expected timing values?
+$matcher := ProfTest::Matcher.new(
+ op('say', :time(1))
+);
+
+ok( $matcher.matches($prof), "profile has canonical timing information");
+
+#Does the matcher fail to find the non-existent 'lollercoaster' opcode?
+$matcher := ProfTest::Matcher.new(
+ op('lollercoaster')
+);
+
+ok( !$matcher.matches($prof), "matcher didn't find non-existent opcode");
+
+#Does the profile show a 'say' op inside the 'main' sub?
+$matcher := ProfTest::Matcher.new(
+ cs(:ns('main')),
+ any(:except('cs')),
+ op('say'),
+);
+
+ok( $matcher.matches($prof), "profile shows 'say' inside main sub");
+
+
+$pir_code :=
+".sub first :main
+ .local int i
+ i = 0
+ 'second'()
+ inc i
+.end
+
+.sub second
+ .local pmc p
+ p = new ['Interger']
+ p = 1
+.end";
+
+$prof := ProfTest::PIRProfile.new($pir_code);
+
+$matcher := ProfTest::Matcher.new(
+ cs(:ns('parrot;first'), :slurp_until('cs')),
+ cs(:ns('parrot;second'), :slurp_until('cs')),
+ cs(:ns('parrot;first')),
+);
+
+ok( $matcher.matches($prof), "profile properly reflects normal control flow (simple)");
+
+
+$pir_code :=
+".sub first :main
+ .local int i
+ i = 0
+ 'second'()
+ inc i
+.end
+
+.sub second
+ .local pmc p
+ p = new ['Interger']
+ 'third'()
+ p = 1
+.end
+
+.sub third
+ say 'in third'
+.end";
+
+$prof := ProfTest::PIRProfile.new($pir_code);
+
+$matcher := ProfTest::Matcher.new(
+ cs(:ns('parrot;first'), :slurp_until('cs')),
+ cs(:ns('parrot;second'), :slurp_until('cs')),
+ cs(:ns('parrot;third'), :slurp_until('cs')),
+ cs(:ns('parrot;second'), :slurp_until('cs')),
+ cs(:ns('parrot;first')),
+);
+
+ok( $matcher.matches($prof), "profile properly reflects normal control flow (slightly less simple)");
+
+
+#test: main calls foo, foo tailcalls bar, bar returns to main
+$pir_code :=
+".sub first :main
+ .local int i
+ i = 'foo'(9)
+ say i
+.end
+
+.sub foo
+ .param int i
+ i = i * i
+ .tailcall bar(i)
+.end
+
+.sub bar
+ .param int i
+ i = i + 2
+ .return (i)
+.end";
+
+$prof := ProfTest::PIRProfile.new($pir_code);
+
+$matcher := ProfTest::Matcher.new(
+ cs(:ns('parrot;first'), :slurp_until('cs')),
+ cs(:ns('parrot;foo'), :slurp_until('cs')),
+ cs(:ns('parrot;bar'), :slurp_until('cs')),
+ cs(:ns('parrot;first')),
+);
+
+ok( $matcher.matches($prof), "profile properly reflects tailcall control flow");
+
+
+#Does the profile show a 'say' op on line 2?
+$matcher := ProfTest::Matcher.new(
+ op('say', :line('3')),
+);
+
+ok( $matcher.matches($prof), "profile shows say on the correct line");
+
+
+my $nqp_code :=
+'main();
+sub main() {
+ pir::say("nqp");
+}';
+
+$prof := ProfTest::NQPProfile.new($nqp_code);
+
+$matcher := ProfTest::Matcher.new(
+ cs(:ns('parrot;main') ),
+ any(:except('cs')),
+ op('say'),
+);
+
+ok( $matcher.matches($prof), "profile shows 'say' inside nqp sub");
+
+#convenience subs to avoid repetitive typing and visual noise
+
+sub version(*@p, *%n) { ProfTest::Want::Version.new(|@p, |%n) }
+sub cli(*@p, *%n) { ProfTest::Want::CLI.new(|@p, |%n) }
+sub eor(*@p, *%n) { ProfTest::Want::EndOfRunloop.new(|@p, |%n) }
+sub op(*@p, *%n) { ProfTest::Want::Op.new(|@p, |%n) }
+sub cs(*@p, *%n) { ProfTest::Want::CS.new(|@p, |%n) }
+sub any(*@p, *%n) { ProfTest::Want::Any.new(|@p, |%n) }
+
+# Local Variables:
+# mode: perl6
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=perl6
Modified: branches/ops_pct/t/run/exit.t
==============================================================================
--- branches/ops_pct/t/run/exit.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/run/exit.t Wed May 5 08:45:29 2010 (r46302)
@@ -74,7 +74,7 @@
my $pirfile = IO::File->new(">$pirfn");
$pirfile->print("Parse error.\n");
$pirfile->close();
-my $rv = system("$PARROT -o $pbcfn $pirfn") >> 8;
+my $rv = system(qq|$PARROT -o $pbcfn $pirfn $redir > $redir 2> $redir|) >> 8;
isnt($rv, 0, "parrot returns error on parse failure\n");
ok(! -e $pbcfn, "parrot doesn't create outfile on parse failure\n");
Modified: branches/ops_pct/t/src/basic.t
==============================================================================
--- branches/ops_pct/t/src/basic.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/src/basic.t Wed May 5 08:45:29 2010 (r46302)
@@ -27,7 +27,7 @@
#include <stdlib.h>
int
- main(int argc, char* argv[])
+ main(int argc, const char* argv[])
{
printf("Hello, World!\n");
exit(0);
@@ -41,7 +41,7 @@
#include <parrot/exceptions.h>
int
- main(int argc, char* argv[])
+ main(int argc, const char* argv[])
{
exit_fatal(0, "Blow'd Up(tm)"); /* ' */
}
@@ -59,7 +59,7 @@
static opcode_t *the_test(Parrot_Interp, opcode_t *, opcode_t *);
int
-main(int argc, char* argv[])
+main(int argc, const char* argv[])
{
Interp *interp;
Modified: branches/ops_pct/t/src/embed.t
==============================================================================
--- branches/ops_pct/t/src/embed.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/src/embed.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#! perl
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
use strict;
@@ -8,7 +8,7 @@
use Test::More;
use Parrot::Test;
-plan tests => 6;
+plan tests => 7;
=head1 NAME
@@ -24,7 +24,15 @@
=cut
-c_output_is( <<'CODE', <<'OUTPUT', "Minimal embed, using just the embed.h header" );
+sub linedirective
+{
+ # Provide a #line directive for the C code in the heredoc
+ # starting immediately after where this sub is called.
+ my $linenum = shift() + 1;
+ return "#line " . $linenum . ' "' . __FILE__ . '"' . "\n";
+}
+
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Minimal embed, using just the embed.h header" );
#include <stdio.h>
#include <stdlib.h>
@@ -39,7 +47,7 @@
exit(EXIT_FAILURE);
}
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
{
Parrot_Interp interp;
interp = Parrot_new(NULL);
@@ -54,7 +62,44 @@
Done
OUTPUT
-c_output_is( <<'CODE', <<'OUTPUT', "Hello world from main" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when an opcode is given improper arguments');
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "parrot/embed.h"
+#include "parrot/extend.h"
+
+void fail(const char *msg);
+
+void fail(const char *msg)
+{
+ fprintf(stderr, "failed: %s\n", msg);
+ exit(EXIT_FAILURE);
+}
+
+
+int main(int argc, const char **argv)
+{
+ Parrot_Interp interp;
+ Parrot_String err, lang;
+ Parrot_PMC func_pmc;
+ char *str;
+
+ interp = Parrot_new(NULL);
+ if (! interp)
+ fail("Cannot create parrot interpreter");
+ lang = Parrot_new_string(interp, "PIR", 3, (const char*)NULL, 0);
+
+ func_pmc = Parrot_compile_string(interp, lang, ".sub foo\n copy\n.end", &err);
+ Parrot_printf(interp, "%Ss\n", err);
+ Parrot_destroy(interp);
+ return 0;
+}
+CODE
+The opcode 'copy' (copy<0>) was not found. Check the type and number of the arguments
+OUTPUT
+
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from main" );
#include <stdio.h>
#include <stdlib.h>
@@ -103,7 +148,7 @@
Hello, pir
OUTPUT
-c_output_is( <<'CODE', <<'OUTPUT', "Hello world from a sub" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from a sub" );
#include <stdio.h>
#include <stdlib.h>
@@ -169,7 +214,7 @@
Hello, sub
OUTPUT
-c_output_is( <<'CODE', <<'OUTPUT', "External sub" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "External sub" );
#include <stdio.h>
#include <stdlib.h>
@@ -225,7 +270,7 @@
Hello from C
OUTPUT
-c_output_is( <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
#include <stdio.h>
#include <stdlib.h>
@@ -308,20 +353,20 @@
#include "parrot/embed.h"
static opcode_t *
-run(PARROT_INTERP, int argc, char *argv[])
+run(PARROT_INTERP, int argc, cosnt char *argv[])
{
const char *c_src = ".sub main :main\n" " print \"ok\\n\"\n" ".end\n";
- STRING *src, *smain;
+ Parrot_String *src, *smain;
PMC *prog, *entry;
opcode_t *dest;
- STRING *error;
+ Parrot_String *error;
/* get PIR compiler - TODO API */
PMC *compreg = Parrot_PMC_get_pmc_keyed_int(interp,
interp->iglobals,
IGLOBALS_COMPREG_HASH);
- STRING *pir = Parrot_str_new_constant(interp, "PIR");
+ Parrot_String *pir = Parrot_str_new_constant(interp, "PIR");
PMC *comp = Parrot_PMC_get_pmc_keyed_str(interp, compreg, pir);
if (PMC_IS_NULL(comp) || !Parrot_PMC_defined(interp, comp)) {
@@ -357,7 +402,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -388,12 +433,12 @@
#include "parrot/embed.h"
static void
-compile_run(PARROT_INTERP, const char *src, STRING *type, int argc,
- char *argv[])
+compile_run(PARROT_INTERP, const char *src, Parrot_String *type, int argc,
+ const char *argv[])
{
- STRING *smain;
+ Parrot_String *smain;
PMC *entry;
- STRING *error;
+ Parrot_String *error;
opcode_t *dest;
PMC *prog = Parrot_compile_string(interp, type, src, &error);
@@ -421,20 +466,20 @@
}
static opcode_t *
-run(PARROT_INTERP, int argc, char *argv[])
+run(PARROT_INTERP, int argc, const char *argv[])
{
const char *c_src = ".sub main :main\n" " print \"ok\\n\"\n" ".end\n";
const char *c2_src =
".sub main :main\n" " print \"hola\\n\"\n" ".end\n";
- STRING *src, *smain;
+ Parrot_String *src, *smain;
/* get PIR compiler - TODO API */
PMC *compreg = Parrot_PMC_get_pmc_keyed_int(interp,
interp->iglobals,
IGLOBALS_COMPREG_HASH);
- STRING *pir = Parrot_str_new_constant(interp, "PIR");
+ Parrot_String *pir = Parrot_str_new_constant(interp, "PIR");
PMC *comp = Parrot_PMC_get_pmc_keyed_str(interp, compreg, pir);
if (PMC_IS_NULL(comp) || !Parrot_PMC_defined(interp, comp)) {
@@ -447,7 +492,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -479,12 +524,12 @@
#include "parrot/embed.h"
static void
-compile_run(PARROT_INTERP, const char *src, STRING *type, int argc,
- char *argv[])
+compile_run(PARROT_INTERP, const char *src, Parrot_String *type, int argc,
+ const char *argv[])
{
- STRING *smain;
+ Parrot_String *smain;
PMC *entry;
- STRING *error;
+ Parrot_String *error;
opcode_t *dest;
PMC *prog = Parrot_compile_string(interp, type, src, &error);
@@ -512,20 +557,20 @@
}
static opcode_t *
-run(PARROT_INTERP, int argc, char *argv[])
+run(PARROT_INTERP, int argc, const char *argv[])
{
const char *c_src = ".sub main :main\n" " print ok\\n\"\n" ".end\n";
const char *c2_src =
".sub main :main\n" " print \"hola\\n\"\n" ".end\n";
- STRING *src, *smain;
+ Parrot_String *src, *smain;
/* get PIR compiler - TODO API */
PMC *compreg = Parrot_PMC_get_pmc_keyed_int(interp,
interp->iglobals,
IGLOBALS_COMPREG_HASH);
- STRING *pir = Parrot_str_new_constant(interp, "PIR");
+ Parrot_String *pir = Parrot_str_new_constant(interp, "PIR");
PMC *comp = Parrot_PMC_get_pmc_keyed_str(interp, compreg, pir);
if (PMC_IS_NULL(comp) || !Parrot_PMC_defined(interp, comp)) {
@@ -538,12 +583,12 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
int argc = 1;
- char *argv[] = { "test", NULL };
+ const char *argv[] = { "test", NULL };
PackFile_Segment *seg;
@@ -570,12 +615,12 @@
#include "parrot/embed.h"
static void
-compile_run(PARROT_INTERP, const char *src, STRING *type, int argc,
- char *argv[])
+compile_run(PARROT_INTERP, const char *src, Parrot_String *type, int argc,
+ const char *argv[])
{
- STRING *smain;
+ Parrot_String *smain;
PMC *entry;
- STRING *error;
+ Parrot_String *error;
opcode_t *dest;
PMC *prog = Parrot_compile_string(interp, type, src, &error);
@@ -603,19 +648,19 @@
}
static opcode_t *
-run(PARROT_INTERP, int argc, char *argv[])
+run(PARROT_INTERP, int argc, const char *argv[])
{
const char *c_src = ".sub main :main\n" " print ok\\n\"\n" ".end\n";
const char *c2_src =
".sub main :main\n" " print \"hola\\n\"\n" ".end\n";
- STRING *src, *smain;
+ Parrot_String *src, *smain;
/* get PIR compiler - TODO API */
PMC *compreg = Parrot_PMC_get_pmc_keyed_int(interp,
interp->iglobals,
IGLOBALS_COMPREG_HASH);
- STRING *pir = Parrot_str_new_constant(interp, "PIR");
+ Parrot_String *pir = Parrot_str_new_constant(interp, "PIR");
PMC *comp = Parrot_PMC_get_pmc_keyed_str(interp, compreg, pir);
if (PMC_IS_NULL(comp) || !Parrot_PMC_defined(interp, comp)) {
@@ -628,7 +673,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -660,12 +705,12 @@
#include "parrot/embed.h"
static void
-compile_run(PARROT_INTERP, const char *src, STRING *type, int argc,
- char *argv[])
+compile_run(PARROT_INTERP, const char *src, Parrot_String *type, int argc,
+ const char *argv[])
{
- STRING *smain;
+ Parrot_String *smain;
PMC *entry;
- STRING *error;
+ Parrot_String *error;
opcode_t *dest;
PMC *prog = Parrot_compile_string(interp, type, src, &error);
@@ -693,18 +738,18 @@
}
static opcode_t *
-run(PARROT_INTERP, int argc, char *argv[])
+run(PARROT_INTERP, int argc, const char *argv[])
{
const char *c_src = ".sub main :main\n" " print ok\\n\"\n" ".end\n";
const char *c2_src = ".sub main :main\n" " print hola\\n\"\n" ".end\n";
- STRING *src, *smain;
+ Parrot_String *src, *smain;
/* get PIR compiler - TODO API */
PMC *compreg = Parrot_PMC_get_pmc_keyed_int(interp,
interp->iglobals,
IGLOBALS_COMPREG_HASH);
- STRING *pir = Parrot_str_new_constant(interp, "PIR");
+ Parrot_String *pir = Parrot_str_new_constant(interp, "PIR");
PMC *comp = Parrot_PMC_get_pmc_keyed_str(interp, compreg, pir);
if (PMC_IS_NULL(comp) || !Parrot_PMC_defined(interp, comp)) {
@@ -717,7 +762,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
Modified: branches/ops_pct/t/src/extend.t
==============================================================================
--- branches/ops_pct/t/src/extend.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/src/extend.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#!perl
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
use strict;
@@ -35,7 +35,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int parrot_reg = 0;
Parrot_Int value = 42;
@@ -65,7 +66,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int parrot_reg = 1;
Parrot_Float value = 2.5;
@@ -95,7 +97,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_String output;
@@ -121,7 +124,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int parrot_reg = 2;
Parrot_String value, new_value;
@@ -151,7 +155,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int value = 101010;
Parrot_PMC testpmc;
@@ -201,7 +206,8 @@
}
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
/* Interpreter set-up */
@@ -223,7 +229,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int value = -123;
Parrot_Int parrot_reg = 31;
@@ -261,7 +268,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Float value = 3.1415927;
Parrot_Int type;
@@ -294,7 +302,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int type;
Parrot_String value, new_value;
@@ -327,7 +336,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int type;
Parrot_PMC testpmc;
@@ -361,7 +371,8 @@
#include "parrot/extend.h"
int
-main(int argc, char* argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp = Parrot_new(NULL);
Parrot_Int length = 6;
Parrot_Int type;
@@ -422,7 +433,7 @@
static opcode_t *the_test(Parrot_Interp, opcode_t *, opcode_t *);
int
-main(int argc, char *argv[])
+main(int argc, const char *argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
if (!interp)
@@ -440,9 +451,9 @@
static opcode_t*
the_test(PARROT_INTERP, opcode_t *cur_op, opcode_t *start)
{
- PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
- STRING *name = Parrot_str_new_constant(interp, "_sub1");
- PMC *sub, *arg;
+ PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
+ Parrot_String name = Parrot_str_new_constant(interp, "_sub1");
+ PMC *sub, *arg;
Parrot_pbc_load(interp, pf);
sub = Parrot_find_global_cur(interp, name);
@@ -480,7 +491,7 @@
static opcode_t *the_test(Parrot_Interp, opcode_t *, opcode_t *);
int
-main(int argc, char *argv[])
+main(int argc, const char *argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
if (!interp)
@@ -498,9 +509,9 @@
static opcode_t*
the_test(PARROT_INTERP, opcode_t *cur_op, opcode_t *start)
{
- PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
- STRING *name = Parrot_str_new_constant(interp, "_sub1");
- PMC *sub, *arg;
+ PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
+ Parrot_String name = Parrot_str_new_constant(interp, "_sub1");
+ PMC *sub, *arg;
Parrot_pbc_load(interp, pf);
sub = Parrot_find_global_cur(interp, name);
@@ -556,7 +567,7 @@
static opcode_t *the_test(Parrot_Interp, opcode_t *, opcode_t *);
int
-main(int argc, char *argv[])
+main(int argc, const char *argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
if (!interp)
@@ -574,10 +585,10 @@
static opcode_t*
the_test(PARROT_INTERP, opcode_t *cur_op, opcode_t *start)
{
- PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
- STRING *name = Parrot_str_new_constant(interp, "foo");
- PMC *sub, *arg;
- Parrot_Int result;
+ PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
+ Parrot_String name = Parrot_str_new_constant(interp, "foo");
+ PMC *sub, *arg;
+ Parrot_Int result;
Parrot_pbc_load(interp, pf);
sub = Parrot_find_global_cur(interp, name);
@@ -623,7 +634,7 @@
the_test(Parrot_Interp, opcode_t *, opcode_t *);
int
-main(int argc, char *argv[])
+main(int argc, const char *argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
if (!interp)
@@ -641,9 +652,9 @@
static opcode_t*
the_test(PARROT_INTERP, opcode_t *cur_op, opcode_t *start)
{
- PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
- STRING *name = Parrot_str_new_constant(interp, "_sub1");
- PMC *sub;
+ PackFile *pf = Parrot_pbc_read(interp, "$temp_pbc", 0);
+ Parrot_String name = Parrot_str_new_constant(interp, "_sub1");
+ PMC *sub;
Parrot_runloop jump_point;
Parrot_pbc_load(interp, pf);
@@ -718,10 +729,10 @@
#include <parrot/embed.h>
int
-main(int argc, char* argv[])
+main(int argc, const char *argv[])
{
Parrot_PackFile packfile;
- char * code[] = { ".sub foo\\nsay \\"Hello from foo!\\"\\n.end\\n" };
+ const char * code[] = { ".sub foo\\nsay \\"Hello from foo!\\"\\n.end\\n" };
Parrot_Interp interp = Parrot_new(NULL);
if (!interp) {
@@ -755,15 +766,13 @@
#include <parrot/extend.h>
int
-main(int argc, char* argv[])
+main(int argc, const char *argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
const char *code = ".sub foo\nprint\"Hello from foo!\\n\"\n.end\n";
Parrot_PMC retval;
Parrot_PMC sub;
- STRING *code_type;
- STRING *error;
- STRING *foo_name;
+ Parrot_String code_type, error, foo_name;
if (!interp) {
printf( "Hiss\n" );
@@ -796,7 +805,7 @@
#include <parrot/extend.h>
int
-main(int argc, char* argv[])
+main(int argc, const char *argv[])
{
Parrot_Int result;
Parrot_PMC sub;
@@ -828,7 +837,7 @@
#include <parrot/extend.h>
int
-main(int argc, char* argv[])
+main(int argc, const char *argv[])
{
Parrot_Int result;
Parrot_PMC sub;
@@ -881,7 +890,8 @@
}
int
-main(int argc, char *argv[]) {
+main(int argc, const char *argv[])
+{
Parrot_Interp interp;
int i, niter = 2;
Modified: branches/ops_pct/t/src/warnings.t
==============================================================================
--- branches/ops_pct/t/src/warnings.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/src/warnings.t Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#! perl
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
use strict;
@@ -34,7 +34,7 @@
#include <parrot/embed.h>
int
-main(int argc, char* argv[])
+main(int argc, const char* argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
int error_val;
@@ -57,7 +57,7 @@
#include <parrot/embed.h>
int
-main(int argc, char* argv[])
+main(int argc, const char* argv[])
{
Parrot_Interp interp = Parrot_new(NULL);
int error_val;
Modified: branches/ops_pct/t/steps/auto/arch-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/arch-01.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/steps/auto/arch-01.t Wed May 5 08:45:29 2010 (r46302)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-use Test::More tests => 81;
+use Test::More tests => 83;
use Carp;
use lib qw( lib t/configure/testlib );
use_ok('config::auto::arch');
@@ -16,8 +16,6 @@
);
use IO::CaptureOutput qw| capture |;
-########## Darwin special case ##########
-
my ($args, $step_list_ref) = process_options( {
argv => [ ],
mode => q{configure},
@@ -33,6 +31,9 @@
$conf->add_steps($pkg);
$conf->options->set( %{$args} );
my $step = test_step_constructor_and_description($conf);
+my $ret = $step->runstep($conf);
+ok( $ret, "runstep() returned true value" );
+is($step->result(), q{}, "Result was empty string as expected");
$conf->replenish($serialized);
@@ -74,7 +75,7 @@
$step = test_step_constructor_and_description($conf);
my $pseudoarch = q{foobar};
$conf->data->set('archname' => $pseudoarch);
-my $ret = $step->runstep($conf);
+$ret = $step->runstep($conf);
ok( $ret, "runstep() returned true value: $pseudoarch" );
is($step->result(), q{}, "Result was empty string as expected");
is($conf->data->get('cpuarch'), q{},
@@ -94,21 +95,20 @@
$conf->add_steps($pkg);
$conf->options->set( %{$args} );
$step = test_step_constructor_and_description($conf);
+$step->{unamep} = 'powerpc';
$pseudoarch = q{darwin-thread-multi-2level};
$conf->data->set('archname' => $pseudoarch);
-my $pseudobyteorder = 1234;
-$conf->data->set('byteorder' => $pseudobyteorder);
$ret = $step->runstep($conf);
ok( $ret, "runstep() returned true value: $pseudoarch" );
is($step->result(), q{}, "Result was empty string as expected");
-is($conf->data->get('cpuarch'), q{i386},
+is($conf->data->get('cpuarch'), q{ppc},
"'cpuarch' was set as expected");
is($conf->data->get('osname'), q{darwin},
"'osname' was set as expected");
$conf->replenish($serialized);
-########## mock darwin ##########
+######### mock darwin ##########
($args, $step_list_ref) = process_options( {
argv => [ ],
@@ -118,14 +118,13 @@
$conf->add_steps($pkg);
$conf->options->set( %{$args} );
$step = test_step_constructor_and_description($conf);
+$step->{unamep} = 'i386';
$pseudoarch = q{darwin-thread-multi-2level};
$conf->data->set('archname' => $pseudoarch);
-$pseudobyteorder = 4321;
-$conf->data->set('byteorder' => $pseudobyteorder);
$ret = $step->runstep($conf);
ok( $ret, "runstep() returned true value: $pseudoarch" );
is($step->result(), q{}, "Result was empty string as expected");
-is($conf->data->get('cpuarch'), q{ppc},
+is($conf->data->get('cpuarch'), q{i386},
"'cpuarch' was set as expected");
is($conf->data->get('osname'), q{darwin},
"'osname' was set as expected");
Deleted: branches/ops_pct/t/steps/auto/cgoto-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/cgoto-01.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,139 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# auto/cgoto-01.t
-
-use strict;
-use warnings;
-use Test::More tests => 25;
-use Carp;
-use lib qw( lib t/configure/testlib );
-use_ok('config::auto::cgoto');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
- test_step_constructor_and_description
-);
-use IO::CaptureOutput qw( capture );
-
-
-########### regular ###########
-
-my ($args, $step_list_ref) = process_options( {
- argv => [ ],
- mode => q{configure},
-} );
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $serialized = $conf->pcfreeze();
-
-my $pkg = q{auto::cgoto};
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
-ok(defined($step->result()), "A result was defined");
-ok(defined($conf->data->get('cg_flag')), "An attribute has been defined");
-
-$conf->replenish($serialized);
-
-########### _probe_for_cgoto() ###########
-
-($args, $step_list_ref) = process_options( {
- argv => [ ],
- mode => q{configure},
-} );
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-$conf->options->set(cgoto => 1);
-is(auto::cgoto::_probe_for_cgoto($conf), 1,
- "Got expected return value");
-$conf->options->set(cgoto => 0);
-is(auto::cgoto::_probe_for_cgoto($conf), 0,
- "Got expected return value");
-$conf->options->set(cgoto => undef);
-ok(defined(auto::cgoto::_probe_for_cgoto($conf)),
- "Probe returned a defined value");
-
-########### _evaluate_cgoto() ###########
-
-$step->_evaluate_cgoto($conf, 1);
-ok($conf->data->get('cg_flag'), "An attribute was set to true value");
-is($step->result(), q{yes}, "Expected result was set");
-
-$step->_evaluate_cgoto($conf, 0);
-is($conf->data->get('cg_flag'), q{}, "An attribute was set to empty string");
-is($step->result(), q{no}, "Expected result was set");
-
-$conf->replenish($serialized);
-
-($args, $step_list_ref) = process_options( {
- argv => [ ],
- mode => q{configure},
-} );
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
- my $stdout;
- capture(
- sub { $step->_evaluate_cgoto($conf, 1) },
- \$stdout
- );
- ok($conf->data->get('cg_flag'), "An attribute was set to true value");
- is($step->result(), q{yes}, "Expected result was set");
-}
-
-{
- my $stdout;
- capture(
- sub { $step->_evaluate_cgoto($conf, 0) },
- \$stdout
- );
- is($conf->data->get('cg_flag'), q{},
- "An attribute was set to empty string");
- is($step->result(), q{no}, "Expected result was set");
-}
-
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-auto/cgoto-01.t - test auto::cgoto
-
-=head1 SYNOPSIS
-
- % prove t/steps/auto/cgoto-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test auto::cgoto.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-config::auto::cgoto, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/t/steps/auto/crypto-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/crypto-01.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,176 +0,0 @@
-#! perl
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use Test::More tests => 24;
-use Carp;
-use lib qw( lib t/configure/testlib );
-use_ok('config::auto::crypto');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
- test_step_constructor_and_description
-);
-use IO::CaptureOutput qw( capture );
-
-########## --without-crypto ##########
-
-my ($args, $step_list_ref) = process_options(
- {
- argv => [ q{--without-crypto} ],
- mode => q{configure},
- }
-);
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $pkg = q{auto::crypto};
-
-$conf->add_steps($pkg);
-
-my $serialized = $conf->pcfreeze();
-
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
-is($conf->data->get('has_crypto'), 0,
- "Got expected value for 'has_crypto'");
-is($step->result(), q{no}, "Expected result was set");
-
-$conf->replenish($serialized);
-
-########## _select_lib() ##########
-
-($args, $step_list_ref) = process_options( {
- argv => [ ],
- mode => q{configure},
-} );
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-# Mock different OS/compiler combinations.
-my ($osname, $cc, $initial_libs);
-$initial_libs = $conf->data->get('libs');
-$osname = 'mswin32';
-$cc = 'gcc';
-is($step->_select_lib( {
- conf => $conf,
- osname => $osname,
- cc => $cc,
- win32_nongcc => 'libcrypto.lib',
- default => '-lcrypto',
-} ),
- '-lcrypto',
- "_select_lib() returned expected value");
-
-$osname = 'mswin32';
-$cc = 'cc';
-is($step->_select_lib( {
- conf => $conf,
- osname => $osname,
- cc => $cc,
- win32_nongcc => 'libcrypto.lib',
- default => '-lcrypto',
-} ),
- 'libcrypto.lib',
- "_select_lib() returned expected value");
-
-$osname = 'foobar';
-$cc = 'cc';
-is($step->_select_lib( {
- conf => $conf,
- osname => $osname,
- cc => $cc,
- win32_nongcc => 'libcrypto.lib',
- default => '-lcrypto',
-} ),
- '-lcrypto',
- "_select_lib() returned expected value");
-
-my $verbose = undef;
-
-$conf->replenish($serialized);
-
-########## --without-crypto; _evaluate_cc_run() ##########
-
-($args, $step_list_ref) = process_options( {
- argv => [ q{--without-crypto} ],
- mode => q{configure},
-} );
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my ($test, $has_crypto);
-$test = qq{OpenSSL 0.9.9z\n};
-$has_crypto = 0;
-$verbose = undef;
-$has_crypto = $step->_evaluate_cc_run($conf, $test, $has_crypto, $verbose);
-is($has_crypto, 1, "'has_crypto' set as expected");
-is($step->result(), 'yes, 0.9.9z', "Expected result was set");
-# Prepare for next test
-$step->set_result(undef);
-
-$test = qq{foobar};
-$has_crypto = 0;
-$verbose = undef;
-$has_crypto = $step->_evaluate_cc_run($conf, $test, $has_crypto, $verbose);
-is($has_crypto, 0, "'has_crypto' set as expected");
-ok(! defined $step->result(), "Result is undefined, as expected");
-
-{
- my $stdout;
- $test = qq{OpenSSL 0.9.9z\n};
- $has_crypto = 0;
- $verbose = 1;
- capture(
- sub { $has_crypto =
- $step->_evaluate_cc_run($conf, $test, $has_crypto, $verbose); },
- \$stdout,
- );
- is($has_crypto, 1, "'has_crypto' set as expected");
- is($step->result(), 'yes, 0.9.9z', "Expected result was set");
- like($stdout, qr/\(yes\)/, "Got expected verbose output");
- # Prepare for next test
- $step->set_result(undef);
-}
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-auto/crypto-01.t - test auto::crypto
-
-=head1 SYNOPSIS
-
- % prove t/steps/auto/crypto-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test auto::crypto.
-
-=head1 HISTORY
-
-Mostly taken from F<t/steps/auto/gdbm-01.t>.
-
-=head1 AUTHOR
-
-Francois Perrad
-
-=head1 SEE ALSO
-
-config::auto::crypto, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Deleted: branches/ops_pct/t/steps/auto/gdbm-01.t
==============================================================================
--- branches/ops_pct/t/steps/auto/gdbm-01.t Wed May 5 08:45:29 2010 (r46301)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,175 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# auto/gdbm-01.t
-
-use strict;
-use warnings;
-use Test::More tests => 29;
-use Carp;
-use Cwd;
-use File::Spec;
-use File::Temp qw( tempdir );
-use lib qw( lib t/configure/testlib );
-use_ok('config::auto::gdbm');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
- test_step_constructor_and_description
-);
-use IO::CaptureOutput qw| capture |;
-
-=for hints_for_testing The documentation for this package is skimpy;
-please try to improve it, e.g., by providing a short description of what
-the 'gdbm' is. Some branches are compiler- or OS-specific. As noted in
-a comment in the module, please consider the issues raised in
-http://rt.perl.org/rt3/Ticket/Display.html?id=43134.
-
-=cut
-
-########## --without-gdbm ##########
-
-my ($args, $step_list_ref) = process_options( {
- argv => [ q{--without-gdbm} ],
- mode => q{configure},
-} );
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $serialized = $conf->pcfreeze();
-
-my $pkg = q{auto::gdbm};
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my $ret = $step->runstep($conf);
-ok( $ret, "runstep() returned true value" );
-is($conf->data->get('has_gdbm'), 0,
- "Got expected value for 'has_gdbm'");
-is($step->result(), q{no}, "Expected result was set");
-
-$conf->replenish($serialized);
-
-########## --without-gdbm ##########
-
-($args, $step_list_ref) = process_options( {
- argv => [ q{--without-gdbm} ],
- mode => q{configure},
-} );
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my $osname;
-my ($flagsbefore, $flagsafter);
-$osname = 'foobar';
-my $cwd = cwd();
-{
- my $tdir = tempdir( CLEANUP => 1 );
- ok(chdir $tdir, "Able to change to temporary directory");
- ok( (mkdir 'lib'), "Able to make lib directory");
- ok( (mkdir 'include'), "Able to make include directory");
- my $libdir = File::Spec->catdir( $tdir, 'lib' );
- my $includedir = File::Spec->catdir( $tdir, 'include' );
- $conf->data->set('fink_lib_dir' => $libdir);
- $conf->data->set('fink_include_dir' => $includedir);
-
- ok(chdir $cwd, "Able to change back to original directory after testing");
-}
-{
- my $tdir2 = tempdir( CLEANUP => 1 );
- ok(chdir $tdir2, "Able to change to temporary directory");
- ok( (mkdir 'lib'), "Able to make lib directory");
- ok( (mkdir 'include'), "Able to make include directory");
- my $libdir = File::Spec->catdir( $tdir2, 'lib' );
- my $includedir = File::Spec->catdir( $tdir2, 'include' );
- $conf->data->set('fink_lib_dir' => $libdir);
- $conf->data->set('fink_include_dir' => $includedir);
- my $foo = File::Spec->catfile( $includedir, 'gdbm.h' );
- open my $FH, ">", $foo or croak "Could not open for writing";
- print $FH "Hello world\n";
- close $FH or croak "Could not close after writing";
-
- ok(chdir $cwd, "Able to change back to original directory after testing");
-}
-
-$conf->replenish($serialized);
-
-########## --without-gdbm; _evaluate_cc_run() ##########
-
-($args, $step_list_ref) = process_options( {
- argv => [ q{--without-gdbm} ],
- mode => q{configure},
-} );
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my ($test, $has_gdbm, $verbose);
-$test = qq{gdbm is working.\n};
-$has_gdbm = 0;
-$verbose = undef;
-$has_gdbm = $step->_evaluate_cc_run($test, $has_gdbm, $verbose);
-is($has_gdbm, 1, "'has_gdbm' set as expected");
-is($step->result(), 'yes', "Expected result was set");
-# Prepare for next test
-$step->set_result(undef);
-$test = qq{foobar};
-$has_gdbm = 0;
-$verbose = undef;
-$has_gdbm = $step->_evaluate_cc_run($test, $has_gdbm, $verbose);
-is($has_gdbm, 0, "'has_gdbm' set as expected");
-ok(! defined $step->result(), "Result is undefined, as expected");
-{
- my $stdout;
- $test = qq{gdbm is working.\n};
- $has_gdbm = 0;
- $verbose = 1;
- capture(
- sub { $has_gdbm =
- $step->_evaluate_cc_run($test, $has_gdbm, $verbose); },
- \$stdout,
- );
- is($has_gdbm, 1, "'has_gdbm' set as expected");
- is($step->result(), 'yes', "Expected result was set");
- like($stdout, qr/\(yes\)/, "Got expected verbose output");
- # Prepare for next test
- $step->set_result(undef);
-}
-
-$conf->replenish($serialized);
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-auto/gdbm-01.t - test auto::gdbm
-
-=head1 SYNOPSIS
-
- % prove t/steps/auto/gdbm-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test auto::gdbm.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-config::auto::gdbm, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Copied: branches/ops_pct/t/steps/auto/zlib-01.t (from r46301, trunk/t/steps/auto/zlib-01.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/t/steps/auto/zlib-01.t Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/t/steps/auto/zlib-01.t)
@@ -0,0 +1,176 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use Test::More tests => 24;
+use Carp;
+use lib qw( lib t/configure/testlib );
+use_ok('config::auto::zlib');
+use Parrot::Configure::Options qw( process_options );
+use Parrot::Configure::Step::Test;
+use Parrot::Configure::Test qw(
+ test_step_constructor_and_description
+);
+use IO::CaptureOutput qw( capture );
+
+########## --without-zlib ##########
+
+my ($args, $step_list_ref) = process_options(
+ {
+ argv => [ q{--without-zlib} ],
+ mode => q{configure},
+ }
+);
+
+my $conf = Parrot::Configure::Step::Test->new;
+$conf->include_config_results( $args );
+
+my $pkg = q{auto::zlib};
+
+$conf->add_steps($pkg);
+
+my $serialized = $conf->pcfreeze();
+
+$conf->options->set( %{$args} );
+my $step = test_step_constructor_and_description($conf);
+my $ret = $step->runstep($conf);
+ok( $ret, "runstep() returned true value" );
+is($conf->data->get('has_zlib'), 0,
+ "Got expected value for 'has_zlib'");
+is($step->result(), q{no}, "Expected result was set");
+
+$conf->replenish($serialized);
+
+########## _select_lib() ##########
+
+($args, $step_list_ref) = process_options( {
+ argv => [ ],
+ mode => q{configure},
+} );
+$conf->options->set( %{$args} );
+$step = test_step_constructor_and_description($conf);
+# Mock different OS/compiler combinations.
+my ($osname, $cc, $initial_libs);
+$initial_libs = $conf->data->get('libs');
+$osname = 'mswin32';
+$cc = 'gcc';
+is($step->_select_lib( {
+ conf => $conf,
+ osname => $osname,
+ cc => $cc,
+ win32_nongcc => 'zlib.lib',
+ default => '-lz',
+} ),
+ '-lz',
+ "_select_lib() returned expected value");
+
+$osname = 'mswin32';
+$cc = 'cc';
+is($step->_select_lib( {
+ conf => $conf,
+ osname => $osname,
+ cc => $cc,
+ win32_nongcc => 'zlib.lib',
+ default => '-lz',
+} ),
+ 'zlib.lib',
+ "_select_lib() returned expected value");
+
+$osname = 'foobar';
+$cc = 'cc';
+is($step->_select_lib( {
+ conf => $conf,
+ osname => $osname,
+ cc => $cc,
+ win32_nongcc => 'zlib.lib',
+ default => '-lz',
+} ),
+ '-lz',
+ "_select_lib() returned expected value");
+
+my $verbose = undef;
+
+$conf->replenish($serialized);
+
+########## --without-zlib; _evaluate_cc_run() ##########
+
+($args, $step_list_ref) = process_options( {
+ argv => [ q{--without-zlib} ],
+ mode => q{configure},
+} );
+$conf->options->set( %{$args} );
+$step = test_step_constructor_and_description($conf);
+my ($test, $has_zlib);
+$test = qq{1.2.3\n};
+$has_zlib = 0;
+$verbose = undef;
+$has_zlib = $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+is($has_zlib, 1, "'has_zlib' set as expected");
+is($step->result(), 'yes, 1.2.3', "Expected result was set");
+# Prepare for next test
+$step->set_result(undef);
+
+$test = qq{foobar};
+$has_zlib = 0;
+$verbose = undef;
+$has_zlib = $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose);
+is($has_zlib, 0, "'has_zlib' set as expected");
+ok(! defined $step->result(), "Result is undefined, as expected");
+
+{
+ my $stdout;
+ $test = qq{1.2.3\n};
+ $has_zlib = 0;
+ $verbose = 1;
+ capture(
+ sub { $has_zlib =
+ $step->_evaluate_cc_run($conf, $test, $has_zlib, $verbose); },
+ \$stdout,
+ );
+ is($has_zlib, 1, "'has_zlib' set as expected");
+ is($step->result(), 'yes, 1.2.3', "Expected result was set");
+ like($stdout, qr/\(yes\)/, "Got expected verbose output");
+ # Prepare for next test
+ $step->set_result(undef);
+}
+
+pass("Completed all tests in $0");
+
+################### DOCUMENTATION ###################
+
+=head1 NAME
+
+auto/zlib-01.t - test auto::zlib
+
+=head1 SYNOPSIS
+
+ % prove t/steps/auto/zlib-01.t
+
+=head1 DESCRIPTION
+
+The files in this directory test functionality used by F<Configure.pl>.
+
+The tests in this file test auto::zlib.
+
+=head1 HISTORY
+
+Mostly taken from F<t/steps/auto/gdbm-01.t>.
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=head1 SEE ALSO
+
+config::auto::zlib, F<Configure.pl>.
+
+=cut
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/t/steps/gen/platform-01.t
==============================================================================
--- branches/ops_pct/t/steps/gen/platform-01.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/steps/gen/platform-01.t Wed May 5 08:45:29 2010 (r46302)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-use Test::More tests => 13;
+use Test::More tests => 12;
use Carp;
use Cwd;
use File::Copy;
@@ -39,9 +39,6 @@
$conf->options->set( %{$args} );
my $step = test_step_constructor_and_description($conf);
-ok(-f $step->{platform_interface},
- "Located required platform interface header");
-
my $platform_orig = $conf->data->get('osname');
my $archname_orig = $conf->data->get('archname');
$conf->data->set( archname => 'foo-bar' );
Modified: branches/ops_pct/t/steps/init/defaults-01.t
==============================================================================
--- branches/ops_pct/t/steps/init/defaults-01.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/steps/init/defaults-01.t Wed May 5 08:45:29 2010 (r46302)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-use Test::More tests => 39;
+use Test::More tests => 37;
use Carp;
use Cwd;
use File::Copy;
@@ -85,7 +85,6 @@
$conf->data->set( archname => 'x86_64' );
$conf->data->set( cc => 'cc' );
-$conf->data->set( cxx => 'c++' );
$conf->data->set( link => 'cc' );
$conf->data->set( ld => 'env cc' );
$conf->data->set( ld_load_flags => '-bundle -L/usr/local/lib64' );
@@ -96,7 +95,6 @@
"_64_bit_adjustments() returned true");
is($conf->data->get( 'archname' ), 'i386', "Got expected value for 'archname'");
is($conf->data->get( 'cc' ), 'cc -m32', "Got expected value for 'cc'");
-is($conf->data->get( 'cxx' ), 'c++ -m32', "Got expected value for 'cxx'");
is($conf->data->get( 'link' ), 'cc -m32', "Got expected value for 'link'");
is($conf->data->get( 'ld' ), 'env cc -m32', "Got expected value for 'ld'");
is($conf->data->get( 'ld_load_flags' ), '-bundle -L/usr/local/lib',
@@ -124,7 +122,6 @@
$conf->data->set( archname => 'x86_64' );
$conf->data->set( cc => 'cc' );
-$conf->data->set( cxx => 'c++' );
$conf->data->set( link => 'cc' );
$conf->data->set( ld => 'env cc' );
$conf->data->set( ld_load_flags => '-bundle -L/usr/local/lib64' );
@@ -135,7 +132,6 @@
"_64_bit_adjustments() returned true");
is($conf->data->get( 'archname' ), 'x86_64', "Got expected value for 'archname'");
is($conf->data->get( 'cc' ), 'cc', "Got expected value for 'cc'");
-is($conf->data->get( 'cxx' ), 'c++', "Got expected value for 'cxx'");
is($conf->data->get( 'link' ), 'cc', "Got expected value for 'link'");
is($conf->data->get( 'ld' ), 'env cc', "Got expected value for 'ld'");
is($conf->data->get( 'ld_load_flags' ), '-bundle -L/usr/local/lib64',
Modified: branches/ops_pct/t/steps/inter/progs-04.t
==============================================================================
--- branches/ops_pct/t/steps/inter/progs-04.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/steps/inter/progs-04.t Wed May 5 08:45:29 2010 (r46302)
@@ -56,7 +56,6 @@
linkflags
ldflags
libs
- cxx
|
)
{
Modified: branches/ops_pct/t/tools/install/testlib/README
==============================================================================
--- branches/ops_pct/t/tools/install/testlib/README Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/install/testlib/README Wed May 5 08:45:29 2010 (r46302)
@@ -104,14 +104,6 @@
perldoc -F docs/intro.pod
-NOTES
------
-
-On some older computers with little RAM, the computed-goto dispatch core
-(ops/core_ops_cg.c) may take a while to compile or may fail to compile at all.
-You can pass a flag to Configure.pl (--cgoto=0) to disable the computed-goto
-core, at a slight cost in runtime speed.
-
CHANGES
-------
Modified: branches/ops_pct/t/tools/ops2cutils/01-new.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/01-new.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/01-new.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 19;
+use Test::More tests => 15;
use Carp;
use Cwd;
use File::Copy;
@@ -87,19 +87,15 @@
"Constructor correctly returned undef due to bad class name command-line argument" );
like(
$stderr,
- qr/Parrot::Ops2c::Utils::new\(\) requires C, CGoto, CGP, CSwitch and\/or CPrederef/,
+ qr/Parrot::Ops2c::Utils::new\(\) requires C/,
"Got correct error message"
);
}
test_single_trans(q{C});
- test_single_trans(q{CGoto});
- test_single_trans(q{CGP});
- test_single_trans(q{CSwitch});
- test_single_trans(q{CPrederef});
{
- local @ARGV = qw( C CGoto CGP CSwitch CPrederef );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{ argv => [@ARGV], flag => { core => 1 } }
);
@@ -107,7 +103,7 @@
}
{
- local @ARGV = qw( C CGoto CGP CSwitch CPrederef );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{
argv => [@ARGV],
@@ -146,7 +142,7 @@
sub test_single_trans {
my $trans = shift;
- my %available = map { $_, 1 } qw( C CGoto CGP CSwitch CPrederef );
+ my %available = map { $_, 1 } qw( C );
croak "Bad argument $trans to test_single_trans()"
unless $available{$trans};
Modified: branches/ops_pct/t/tools/ops2cutils/03-print_c_header_file.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/03-print_c_header_file.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/03-print_c_header_file.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 24;
+use Test::More tests => 12;
use Carp;
use Cwd;
use File::Copy;
@@ -47,13 +47,9 @@
require Parrot::Ops2c::Utils;
test_single_trans_and_header(q{C});
- test_single_trans_and_header(q{CGoto});
- test_single_trans_and_header(q{CGP});
- test_single_trans_and_header(q{CSwitch});
- test_single_trans_and_header(q{CPrederef});
{
- local @ARGV = qw( C CGoto CGP CSwitch CPrederef );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{
argv => [@ARGV],
@@ -73,7 +69,7 @@
sub test_single_trans_and_header {
my $trans = shift;
- my %available = map { $_, 1 } qw( C CGoto CGP CSwitch CPrederef );
+ my %available = map { $_, 1 } qw( C );
croak "Bad argument $trans to test_single_trans()"
unless $available{$trans};
Modified: branches/ops_pct/t/tools/ops2cutils/04-print_c_source_top.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/04-print_c_source_top.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/04-print_c_source_top.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 26;
+use Test::More tests => 10;
use Carp;
use Cwd;
use File::Copy;
@@ -47,10 +47,6 @@
require Parrot::Ops2c::Utils;
test_print_c_source_top( [qw( C )] );
- test_print_c_source_top( [qw( CGoto )] );
- test_print_c_source_top( [qw( CGP )] );
- test_print_c_source_top( [qw( CSwitch )] );
- test_print_c_source_top( [qw( C CGoto CGP CSwitch CPrederef )] );
ok( chdir($cwd), "returned to starting directory" );
}
Modified: branches/ops_pct/t/tools/ops2cutils/05-print_c_source_bottom.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/05-print_c_source_bottom.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/05-print_c_source_bottom.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 26;
+use Test::More tests => 10;
use Carp;
use Cwd;
use File::Copy;
@@ -48,10 +48,6 @@
require Parrot::Ops2c::Utils;
test_print_c_source_bottom( [qw( C )] );
- test_print_c_source_bottom( [qw( CGoto )] );
- test_print_c_source_bottom( [qw( CGP )] );
- test_print_c_source_bottom( [qw( CSwitch )] );
- test_print_c_source_bottom( [qw( C CGoto CGP CSwitch CPrederef )] );
ok( chdir($cwd), "returned to starting directory" );
}
Modified: branches/ops_pct/t/tools/ops2cutils/06-dynamic.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/06-dynamic.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/06-dynamic.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 27;
+use Test::More tests => 15;
use Carp;
use Cwd;
use File::Copy;
@@ -55,16 +55,13 @@
}
chdir "src/dynoplibs" or croak "Unable to change to src/dynoplibs: $!";
- test_dynops( [qw( CGoto obscure.ops )] );
- test_dynops( [qw( CGP obscure.ops )] );
- test_dynops( [qw( C obscure.ops )] );
- test_dynops( [qw( CSwitch obscure.ops )] );
+ test_dynops( [qw( C obscure.ops )] );
{
my ($self, $stdout, $stderr);
capture(
sub { $self = Parrot::Ops2c::Utils->new( {
- argv => [qw( CSwitch obscure.ops obscure.ops )],
+ argv => [qw( C obscure.ops obscure.ops )],
flag => { dynamic => 1 },
} ); },
\$stdout,
Modified: branches/ops_pct/t/tools/ops2cutils/07-make_incdir.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/07-make_incdir.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/07-make_incdir.t Wed May 5 08:45:29 2010 (r46302)
@@ -81,7 +81,7 @@
require Parrot::Ops2c::Utils;
{
- local @ARGV = qw( C CGoto CGP CSwitch CPrederef );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{
argv => [@ARGV],
@@ -98,7 +98,7 @@
sub test_single_trans {
my $trans = shift;
- my %available = map { $_, 1 } qw( C CGoto CGP CSwitch CPrederef );
+ my %available = map { $_, 1 } qw( C );
croak "Bad argument $trans to test_single_trans()"
unless $available{$trans};
Modified: branches/ops_pct/t/tools/ops2cutils/08-nolines.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/08-nolines.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/08-nolines.t Wed May 5 08:45:29 2010 (r46302)
@@ -47,7 +47,7 @@
require Parrot::Ops2c::Utils;
{
- local @ARGV = qw( C CGoto CGP CSwitch CPrederef );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{
argv => [@ARGV],
Modified: branches/ops_pct/t/tools/ops2cutils/09-dynamic_nolines.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/09-dynamic_nolines.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/09-dynamic_nolines.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 22;
+use Test::More tests => 10;
use Carp;
use Cwd;
use File::Copy;
@@ -52,10 +52,7 @@
}
chdir "src/dynoplibs" or croak "Unable to change to src/dynoplibs: $!";
- test_dynops_nolines( [qw( CGoto obscure.ops )] );
- test_dynops_nolines( [qw( CGP obscure.ops )] );
test_dynops_nolines( [qw( C obscure.ops )] );
- test_dynops_nolines( [qw( CSwitch obscure.ops )] );
ok( chdir($cwd), "returned to starting directory" );
}
Modified: branches/ops_pct/t/tools/ops2cutils/10-print_c_source_file.t
==============================================================================
--- branches/ops_pct/t/tools/ops2cutils/10-print_c_source_file.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2cutils/10-print_c_source_file.t Wed May 5 08:45:29 2010 (r46302)
@@ -19,7 +19,7 @@
}
unshift @INC, qq{$topdir/lib};
}
-use Test::More tests => 21;
+use Test::More tests => 12;
use Carp;
use Cwd;
use File::Copy;
@@ -47,12 +47,9 @@
require Parrot::Ops2c::Utils;
test_single_trans_and_source(q{C});
- test_single_trans_and_source(q{CGoto});
- test_single_trans_and_source(q{CGP});
- test_single_trans_and_source(q{CSwitch});
{
- local @ARGV = qw( C CGoto CGP CSwitch );
+ local @ARGV = qw( C );
my $self = Parrot::Ops2c::Utils->new(
{
argv => [@ARGV],
@@ -72,7 +69,7 @@
sub test_single_trans_and_source {
my $trans = shift;
- my %available = map { $_, 1 } qw( C CGoto CGP CSwitch CPrederef );
+ my %available = map { $_, 1 } qw( C );
croak "Bad argument $trans to test_single_trans()"
unless $available{$trans};
Modified: branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t
==============================================================================
--- branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/t/tools/ops2pm/05-renum_op_map_file.t Wed May 5 08:45:29 2010 (r46302)
@@ -33,6 +33,8 @@
chdir $tdir or croak "Unable to change to testing directory: $!";
my $opsdir = File::Spec->catdir ( $tdir, 'src', 'ops' );
mkpath( [ $opsdir ], 0, 0755 ) or croak "Unable to make testing directory";
+ my $incpardir = File::Spec->catdir ( $tdir, 'include', 'parrot' );
+ mkpath( [ $incpardir ], 0, 0755 ) or croak "Unable to make testing directory";
##### Stage 1: Generate ops.num de novo #####
Modified: branches/ops_pct/tools/build/headerizer.pl
==============================================================================
--- branches/ops_pct/tools/build/headerizer.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/build/headerizer.pl Wed May 5 08:45:29 2010 (r46302)
@@ -1,12 +1,7 @@
#! perl
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
-use strict;
-use warnings;
-use Carp qw( confess );
-
-
=head1 NAME
tools/build/headerizer.pl - Generates the function header parts of .h
@@ -59,6 +54,9 @@
=cut
+use strict;
+use warnings;
+
use Getopt::Long;
use lib qw( lib );
use Parrot::Config;
@@ -66,93 +64,10 @@
my $headerizer = Parrot::Headerizer->new;
-my %warnings;
-my %opt;
-
-my %valid_macros = map { ( $_, 1 ) } qw(
- PARROT_EXPORT
- PARROT_INLINE
- PARROT_CAN_RETURN_NULL
- PARROT_CANNOT_RETURN_NULL
- PARROT_IGNORABLE_RESULT
- PARROT_WARN_UNUSED_RESULT
- PARROT_PURE_FUNCTION
- PARROT_CONST_FUNCTION
- PARROT_DOES_NOT_RETURN
- PARROT_DOES_NOT_RETURN_WHEN_FALSE
- PARROT_MALLOC
- PARROT_OBSERVER
-);
-
main();
=head1 FUNCTIONS
-=head2 extract_function_declarations( $source_file_text )
-
-Rips apart a C file to get the function declarations.
-
-=cut
-
-sub extract_function_declarations {
- my $text = shift;
-
- # Only check the YACC C code if we find what looks like YACC file
- $text =~ s[%\{(.*)%\}.*][$1]sm;
-
- # Drop all text after HEADERIZER STOP
- $text =~ s[/\*\s*HEADERIZER STOP.+][]s;
-
- # Strip blocks of comments
- $text =~ s[^/\*.*?\*/][]mxsg;
-
- # Strip # compiler directives (Thanks, Audrey!)
- $text =~ s[^#(\\\n|.)*][]mg;
-
- # Strip code blocks
- $text =~ s[^{.+?^}][]msg;
-
- # Split on paragraphs
- my @funcs = split /\n{2,}/, $text;
-
- # If it doesn't start in the left column, it's not a func
- @funcs = grep /^\S/, @funcs;
-
- # Typedefs, enums and externs are no good
- @funcs = grep { !/^(typedef|enum|extern)\b/ } @funcs;
-
- # Structs are OK if they're not alone on the line
- @funcs = grep { !/^struct.+;\n/ } @funcs;
-
- # Structs are OK if they're not being defined
- @funcs = grep { !/^(static\s+)?struct.+{\n/ } @funcs;
-
- # Ignore magic function name YY_DECL
- @funcs = grep { !/YY_DECL/ } @funcs;
-
- # Ignore anything with magic words HEADERIZER SKIP
- @funcs = grep !m{/\*\s*HEADERIZER SKIP\s*\*/}, @funcs;
-
- # Variables are of no use to us
- @funcs = grep !/=/, @funcs;
-
- # Get rid of any blocks at the end
- s/\s*{.*//s for @funcs;
-
- # Toast anything non-whitespace
- @funcs = grep /\S/, @funcs;
-
- # If it's got a semicolon, it's not a function header
- @funcs = grep !/;/, @funcs;
-
- # remove any remaining }'s
- @funcs = grep {! /^}/} @funcs;
-
- chomp @funcs;
-
- return @funcs;
-}
-
=head2 extract_function_declaration_and_update_source( $cfile_name )
Extract all the function declarations from the C file specified by
@@ -167,9 +82,9 @@
my $text = join( '', <$fhin> );
close $fhin;
- my @func_declarations = extract_function_declarations( $text );
+ my @func_declarations = $headerizer->extract_function_declarations( $text );
for my $decl ( @func_declarations ) {
- my $specs = function_components_from_declaration( $cfile_name, $decl );
+ my $specs = $headerizer->function_components_from_declaration( $cfile_name, $decl );
my $name = $specs->{name};
my $heading = $headerizer->generate_documentation_signature($decl);
@@ -184,95 +99,6 @@
return @func_declarations;
}
-=head2 function_components_from_declaration( $file, $proto )
-
-Takes a declaration of a function and returns an ad-hoc hashref of
-properties for use elsewhere.
-
-=cut
-
-sub function_components_from_declaration {
- my $file = shift;
- my $proto = shift;
-
- my @lines = split( /\n/, $proto );
- chomp @lines;
-
- my @macros;
- my $parrot_api;
- my $parrot_inline;
-
- while ( @lines && ( $lines[0] =~ /^PARROT_/ ) ) {
- my $macro = shift @lines;
- if ( $macro eq 'PARROT_EXPORT' ) {
- $parrot_api = 1;
- }
- elsif ( $macro eq 'PARROT_INLINE' ) {
- $parrot_inline = 1;
- }
- push( @macros, $macro );
- }
-
- my $return_type = shift @lines;
- my $args = join( ' ', @lines );
-
- $args =~ s/\s+/ /g;
- $args =~ s{([^(]+)\s*\((.+)\);?}{$2}
- or die qq{Couldn't handle "$proto"};
-
- my $name = $1;
- $args = $2;
-
- die "Can't have both PARROT_EXPORT and PARROT_INLINE on $name\n" if $parrot_inline && $parrot_api;
-
- my @args = split( /\s*,\s*/, $args );
- for (@args) {
- /\S+\s+\S+/
- || ( $_ eq '...' )
- || ( $_ eq 'void' )
- || ( $_ =~ /(PARROT|NULLOK|SHIM)_INTERP/ )
- or die "Bad args in $proto";
- }
-
- my $is_ignorable = 0;
- my $is_static = 0;
- $is_static = $2 if $return_type =~ s/^((static)\s+)?//i;
-
- die "$file $name: Impossible to have both static and PARROT_EXPORT" if $parrot_api && $is_static;
-
- my %macros;
- for my $macro (@macros) {
- $macros{$macro} = 1;
- if ( not $valid_macros{$macro} ) {
- squawk( $file, $name, "Invalid macro $macro" );
- }
- if ( $macro eq 'PARROT_IGNORABLE_RESULT' ) {
- $is_ignorable = 1;
- }
- }
- if ( $return_type =~ /\*/ ) {
- if ( !$macros{PARROT_CAN_RETURN_NULL} && !$macros{PARROT_CANNOT_RETURN_NULL} ) {
- squawk( $file, $name,
- "Returns a pointer, but no PARROT_CAN(NOT)_RETURN_NULL macro found." );
- }
- elsif ( $macros{PARROT_CAN_RETURN_NULL} && $macros{PARROT_CANNOT_RETURN_NULL} ) {
- squawk( $file, $name,
- "Can't have both PARROT_CAN_RETURN_NULL and PARROT_CANNOT_RETURN_NULL together." );
- }
- }
-
- return {
- file => $file,
- name => $name,
- args => \@args,
- macros => \@macros,
- is_static => $is_static,
- is_inline => $parrot_inline,
- is_api => $parrot_api,
- is_ignorable => $is_ignorable,
- return_type => $return_type,
- };
-}
sub attrs_from_args {
my $func = shift;
@@ -296,14 +122,14 @@
}
push( @mods, "FUNC_MODIFIES($modified)" );
}
- if ( $arg =~ m{(ARGIN|ARGOUT|ARGMOD|NOTNULL)\(} || $arg eq 'PARROT_INTERP' ) {
+ if ( $arg =~ m{(ARGIN|ARGOUT|ARGMOD|ARGFREE_NOTNULL|NOTNULL)\(} || $arg eq 'PARROT_INTERP' ) {
push( @attrs, "__attribute__nonnull__($n)" );
}
- if ( ( $arg =~ m{\*} ) && ( $arg !~ /\b(SHIM|((ARGIN|ARGOUT|ARGMOD)(_NULLOK)?)|ARGFREE)\b/ ) ) {
- squawk( $file, $name, qq{"$arg" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE} );
+ if ( ( $arg =~ m{\*} ) && ( $arg !~ /\b(SHIM|((ARGIN|ARGOUT|ARGMOD)(_NULLOK)?)|ARGFREE(_NOTNULL)?)\b/ ) ) {
+ $headerizer->squawk( $file, $name, qq{"$arg" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE} );
}
if ( ($arg =~ /\bconst\b/) && ($arg =~ /\*/) && ($arg !~ /\*\*/) && ($arg =~ /\b(ARG(MOD|OUT))\b/) ) {
- squawk( $file, $name, qq{"$arg" is const, but that $1 conflicts with const} );
+ $headerizer->squawk( $file, $name, qq{"$arg" is const, but that $1 conflicts with const} );
}
}
@@ -315,7 +141,7 @@
my @asserts;
for my $arg (@args) {
- if ( $arg =~ m{(ARGIN|ARGOUT|ARGMOD|NOTNULL)\((.+)\)} ) {
+ if ( $arg =~ m{(ARGIN|ARGOUT|ARGMOD|ARGFREE_NOTNULL|NOTNULL)\((.+)\)} ) {
my $var = $2;
if($var =~ /\(*\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\)\s*\(/) {
# argument is a function pointer
@@ -347,7 +173,11 @@
my $return = $func->{return_type};
my $alt_void = ' ';
- if ( $func->{is_ignorable} && ($return ne 'void') && ($return !~ /\*/) ) {
+
+ # Splint can't handle /*@alt void@*/ on pointers, although this page
+ # http://www.mail-archive.com/lclint-interest@virginia.edu/msg00139.html
+ # seems to say that we can.
+ if ( $func->{is_ignorable} && ($return !~ /\*/) ) {
$alt_void = " /*\@alt void@*/\n";
}
@@ -420,14 +250,6 @@
return @decls;
}
-sub squawk {
- my $file = shift;
- my $func = shift;
- my $error = shift;
-
- push( @{ $warnings{$file}->{$func} }, $error );
-}
-
sub read_file {
my $filename = shift;
@@ -449,12 +271,12 @@
sub replace_headerized_declarations {
my $source_code = shift;
- my $cfile = shift;
+ my $sourcefile = shift;
my $hfile = shift;
my @funcs = @_;
# Allow a way to not headerize statics
- if ( $source_code =~ m{/\*\s*HEADERIZER NONE:\s*$cfile\s*\*/} ) {
+ if ( $source_code =~ m{/\*\s*HEADERIZER NONE:\s*$sourcefile\s*\*/} ) {
return $source_code;
}
@@ -463,14 +285,14 @@
my @function_decls = make_function_decls(@funcs);
my $function_decls = join( "\n", @function_decls );
- my $STARTMARKER = qr#/\* HEADERIZER BEGIN: $cfile \*/\n#;
- my $ENDMARKER = qr#/\* HEADERIZER END: $cfile \*/\n?#;
+ my $STARTMARKER = qr{/\* HEADERIZER BEGIN: $sourcefile \*/\n};
+ my $ENDMARKER = qr{/\* HEADERIZER END: $sourcefile \*/\n?};
my $DO_NOT_TOUCH = q{/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */};
$source_code =~
s{($STARTMARKER)(?:.*?)($ENDMARKER)}
{$1$DO_NOT_TOUCH\n\n$function_decls\n$DO_NOT_TOUCH\n$2}s
- or die "Need begin/end HEADERIZER markers for $cfile in $hfile\n";
+ or die "Need begin/end HEADERIZER markers for $sourcefile in $hfile\n";
return $source_code;
}
@@ -486,15 +308,15 @@
'macro=s' => \$macro_match,
) or exit(1);
- die "No files specified.\n" unless @ARGV;
+ die 'No files specified.' unless @ARGV;
my %ofiles;
++$ofiles{$_} for @ARGV;
my @ofiles = sort keys %ofiles;
for (@ofiles) {
print "$_ is specified more than once.\n" if $ofiles{$_} > 1;
}
- my %cfiles;
- my %cfiles_with_statics;
+ my %sourcefiles;
+ my %sourcefiles_with_statics;
my %api;
# Walk the object files and find corresponding source (either .c or .pmc)
@@ -517,31 +339,35 @@
my $pmcfile = $ofile;
$pmcfile =~ s/\Q$PConfig{o}\E$/.pmc/;
- my $csource = read_file($cfile);
- die "can't find HEADERIZER HFILE directive in '$cfile'"
- unless $csource =~
+ my $from_pmc = -f $pmcfile && !$is_yacc;
+
+ my $sourcefile = $from_pmc ? $pmcfile : $cfile;
+
+ my $source_code = read_file( $sourcefile );
+ die qq{can't find HEADERIZER HFILE directive in "$sourcefile"}
+ unless $source_code =~
m{ /\* \s+ HEADERIZER\ HFILE: \s+ ([^*]+?) \s+ \*/ }sx;
my $hfile = $1;
if ( ( $hfile ne 'none' ) && ( not -f $hfile ) ) {
- die "'$hfile' not found (referenced from '$cfile')";
+ die qq{"$hfile" not found (referenced from "$sourcefile")};
}
my @decls;
- if ( $macro_match || (-f $pmcfile && !$is_yacc) ) {
- @decls = extract_function_declarations( $csource );
+ if ( $macro_match ) {
+ @decls = $headerizer->extract_function_declarations( $source_code );
}
else {
- @decls = extract_function_declarations_and_update_source( $cfile );
+ @decls = extract_function_declarations_and_update_source( $sourcefile );
}
for my $decl (@decls) {
- my $components = function_components_from_declaration( $cfile, $decl );
- push( @{ $cfiles{$hfile}->{$cfile} }, $components ) unless $hfile eq 'none';
- push( @{ $cfiles_with_statics{$cfile} }, $components ) if $components->{is_static};
+ my $components = $headerizer->function_components_from_declaration( $sourcefile, $decl );
+ push( @{ $sourcefiles{$hfile}->{$sourcefile} }, $components ) unless $hfile eq 'none';
+ push( @{ $sourcefiles_with_statics{$sourcefile} }, $components ) if $components->{is_static};
if ( $macro_match ) {
if ( grep { $_ eq $macro_match } @{$components->{macros}} ) {
- push( @{ $api{$cfile} }, $components );
+ push( @{ $api{$sourcefile} }, $components );
}
}
}
@@ -562,13 +388,13 @@
}
else { # Normal headerization and updating
# Update all the .h files
- for my $hfile ( sort keys %cfiles ) {
- my $cfiles = $cfiles{$hfile};
+ for my $hfile ( sort keys %sourcefiles ) {
+ my $sourcefiles = $sourcefiles{$hfile};
my $header = read_file($hfile);
- for my $cfile ( sort keys %{$cfiles} ) {
- my @funcs = @{ $cfiles->{$cfile} };
+ for my $cfile ( sort keys %{$sourcefiles} ) {
+ my @funcs = @{ $sourcefiles->{$cfile} };
@funcs = grep { not $_->{is_static} } @funcs; # skip statics
$header = replace_headerized_declarations( $header, $cfile, $hfile, @funcs );
@@ -578,8 +404,8 @@
}
# Update all the .c files in place
- for my $cfile ( sort keys %cfiles_with_statics ) {
- my @funcs = @{ $cfiles_with_statics{$cfile} };
+ for my $cfile ( sort keys %sourcefiles_with_statics ) {
+ my @funcs = @{ $sourcefiles_with_statics{$cfile} };
@funcs = grep { $_->{is_static} } @funcs;
my $source = read_file($cfile);
@@ -590,6 +416,7 @@
print "Headerization complete.\n";
}
+ my %warnings = %{$headerizer->{warnings}};
if ( keys %warnings ) {
my $nwarnings = 0;
my $nwarningfuncs = 0;
Modified: branches/ops_pct/tools/build/ops2c.pl
==============================================================================
--- branches/ops_pct/tools/build/ops2c.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/build/ops2c.pl Wed May 5 08:45:29 2010 (r46302)
@@ -47,7 +47,7 @@
% perl tools/build/ops2c.pl trans [--help] [--no-lines] [--dynamic]
[--core | input.ops [input2.ops ...]]
- trans := C | CGoto | CGP | CSwitch | CPrederef
+ trans := C
For example:
@@ -75,22 +75,6 @@
Create the function-based (slow or fast core) run loop.
-=item C<CGoto>
-
-Create the C<goto> run loop.
-
-=item C<CGP>
-
-Create the C<goto> and predereferenced run loop.
-
-=item C<CSwitch>
-
-Create the C<switch>ed and predereferenced run loop.
-
-=item C<CPrederef>
-
-Create the predereferenced run loop.
-
=back
=head2 Options
@@ -153,14 +137,6 @@
=item C<Parrot::OpTrans::C>
-=item C<Parrot::OpTrans::CGoto>
-
-=item C<Parrot::OpTrans::CGP>
-
-=item C<Parrot::OpTrans::CSwitch>
-
-=item C<Parrot::OpTrans::CPrederef>
-
=item C<Parrot::Ops2c::Utils>
=item C<Parrot::Ops2c::Auxiliary>
Modified: branches/ops_pct/tools/dev/branch_status.pl
==============================================================================
--- branches/ops_pct/tools/dev/branch_status.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/branch_status.pl Wed May 5 08:45:29 2010 (r46302)
@@ -10,9 +10,10 @@
Generate a report to help developers determine status of repository branches.
-This program uses modules that are not intended to be parrot requirements.
+Defaults to generating wiki-friendly output. Override to human readable
+output with C<-H>.
-Prerequisites: Perl 5.10; XML::Twig; Perl6::Form.
+This program uses modules that are not intended to be parrot requirements.
Assumes that you have a command line svn in your path, but doesn't have
to be run in a working copy.
@@ -23,13 +24,28 @@
use strict;
use warnings;
-use XML::Twig;
use Perl6::Form;
+use Time::Format qw(%time);
+use XML::Twig;
+
+my $human;
+$human = 1 if @ARGV && $ARGV[0] eq '-H';
+
+my $time_format = 'dd Mon yyyy - hh:mm:ss';
my $repo = 'https://svn.parrot.org/parrot/';
my @branches = map {chomp; chop; $_} `svn ls $repo/branches`;
+if (!$human) {
+ print '||';
+ say join ('||', map { "'''$_'''" } qw (
+ Branch Revisions Creator Authors Created
+ Updated Components Commits LastMergeRev
+ ));
+}
+
+
foreach my $branch (@branches) {
my $t = XML::Twig->new();
my $xml = `svn log --stop-on-copy --xml -v $repo/branches/$branch`;
@@ -39,39 +55,50 @@
my $oldest = $t->root->last_child('logentry');
my $creator = $oldest->first_child('author')->xml_text;
- my (%authors,%components);
- my $merge_log;
+ my (%authors, %components, $merge_log, $merge_rev, $author_txt);
+
foreach my $entry ($t->root->children('logentry')) {
- $authors{$entry->first_child('author')->xml_text}++;
- my $msg = $entry->first_child('msg')->xml_text;
- $msg =~ s/\s+$//;
- $msg =~ s/^\s+//;
- if (!defined($merge_log) && $msg =~ /merge/i) {
- $merge_log = $msg;
- }
- while ($msg =~ m/\[(.+?)\]/g) {
- my $component = $1;
- $component =~ s/\s+$//;
- $component =~ s/^\s+//;
- if ($component ne '') {
- $components{$1} = undef;
- }
- }
+ $authors{$entry->first_child('author')->xml_text}++;
+ my $msg = $entry->first_child('msg')->xml_text;
+ $msg =~ s/\s+$//;
+ $msg =~ s/^\s+//;
+ if (!defined($merge_log) && $msg =~ /merge/i) {
+ $merge_log = $msg;
+ $merge_rev = 'r' . $entry->atts->{revision};
+ }
+ while ($msg =~ m/\[(.+?)\]/g) {
+ my $component = $1;
+ $component =~ s/\s+$//;
+ $component =~ s/^\s+//;
+ if ($component ne '') {
+ $components{$1} = undef;
+ }
+ }
}
$merge_log //= 'N/A';
+ $merge_rev //= 'N/A';
+
+ my $first = $oldest->atts->{revision};
+ my $last = $newest->atts->{revision};
+
+ my $revisions_human = "r$first:$last";
+ my $revisions_wiki = "r$first-r$last";
- my $revisions = 'r' .$oldest->atts->{revision} . ':' .
- $newest->atts->{revision};
my $created_date = $oldest->first_child('date')->xml_text;
+ $created_date =~ s/Z//; # workaround Time::Format bug
+ $created_date = $time{$time_format, $created_date};
my $updated_date = $newest->first_child('date')->xml_text;
- my $author_txt = '';
+ $updated_date =~ s/Z//; # workaround Time::Format bug
+ $updated_date = $time{$time_format, $updated_date};
+
if (scalar keys %authors != 1) {
my @counts;
foreach my $author (sort {$authors{$b} <=> $authors{$a}} keys %authors) {
- push @counts, "$author [$authors{$author}]";
+ push @counts, $author . "($authors{$author})";
}
- $author_txt = join (', ', @counts);
+ $author_txt = join ($human ? ', ' : '[[BR]]', @counts);
}
+ $author_txt //='';
my $components = join (', ', sort {lc $a cmp lc $b} keys %components);
my $number_commits = scalar $t->root->children('logentry');
my $initial_log = $oldest->first_child('msg')->xml_text;
@@ -80,13 +107,13 @@
$merge_log =~ s/\n/ /g;
$initial_log =~ s/\n/ /g;
-
- print form
+ if ($human) {
+ print form
'+====================================================================+',
'| branch: {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} |',
$branch,
'| revisions: {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} |',
- $revisions,
+ $revisions_human,
'| creator: {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} |',
$creator,
($author_txt ne '') ?
@@ -108,9 +135,17 @@
{bullet => 'last merge log:'},
'|last merge log: {[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[} |',
$merge_log;
+ }
+ else {
+ say join('||','',
+ "[source:/branches/$branch $branch]", $revisions_wiki, $creator,
+ $author_txt, $created_date, $updated_date, $components,
+ "[log:/branches/$branch $number_commits]", $merge_rev
+ );
+ }
}
-say '+', '=' x 68, '+';
+say '+', '=' x 68, '+' if $human;
# Local Variables:
# mode: cperl
Modified: branches/ops_pct/tools/dev/checkdepend.pl
==============================================================================
--- branches/ops_pct/tools/dev/checkdepend.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/checkdepend.pl Wed May 5 08:45:29 2010 (r46302)
@@ -49,7 +49,7 @@
foreach my $file (sort grep /\.[hc]$/, @incfiles) {
# For now, skip any files that have generated dependencies
- next if $file =~ m{src/(ops|dynoplibs|dynpmc|pmc)/};
+ next if $file =~ m{src/(ops|dynoplibs|pmc)/};
next if $file =~ m{src/string/(charset|encoding)/};
open my $fh, '<', $file;
@@ -85,6 +85,11 @@
diag "couldn't find $include, included from $file";
}
+ # always require an explicit .o -> .c dep. This is lazy and not always
+ # needed. However, missing it when it is needed causes pain.
+ if ($file =~ /\.c$/) {
+ push @{$deps{$file}}, $file;
+ }
}
foreach my $file (sort grep /\.pir$/, @incfiles) {
@@ -267,7 +272,7 @@
$rule_deps = join "\n", sort split /\s+/, $rule_deps;
my $expected_deps = join "\n", sort (get_deps($file));
- eq_or_diff_text($rule_deps, $expected_deps, "$file has correct dependencies $extra_info.", {context => 0});
+ eq_or_diff_text($rule_deps, $expected_deps, "$file $extra_info.", {context => 0});
}
}
Copied: branches/ops_pct/tools/dev/faces.pl (from r46301, trunk/tools/dev/faces.pl)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/tools/dev/faces.pl Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/tools/dev/faces.pl)
@@ -0,0 +1,47 @@
+#! perl
+# $Id$
+# Copyright (C) 2010, Parrot Foundation.
+
+use strict;
+use warnings;
+
+use Gravatar::URL;
+
+=for usage
+
+use to generate source for http://trac.parrot.org/parrot/wiki/ParrotFaces
+
+=cut
+
+open my $fh, '<', 'CREDITS';
+
+my %urls;
+while(<$fh>) {
+ next unless /^E: (.*)/;
+ my $email = lc $1;
+ next if $email eq 'svn at perl.org' or
+ $email eq 'cvs at perl.org';
+ if (!exists $urls{$email}) {
+ $urls{$email} = gravatar_url(
+ email => $email,
+ rating => 'r',
+ size => 80,
+ default => 'wavatar',
+ );
+ }
+ else {
+ warn "duplicated email address in CREDITS: $email\n";
+ }
+}
+
+foreach my $email (sort keys %urls) {
+ print "[[Image($urls{$email},title=$email)]]\n";
+}
+print "[[BR]]''Generated by $0''\n";
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/tools/dev/gen_charset_tables.pl
==============================================================================
--- branches/ops_pct/tools/dev/gen_charset_tables.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/gen_charset_tables.pl Wed May 5 08:45:29 2010 (r46302)
@@ -38,15 +38,13 @@
# charset tables to create
#
my %table = (
- "en_US.iso88591" => "Parrot_iso_8859_1_typetable",
-
- # "en_US.iso885915" => "Parrot_iso_8859_15_typetable",
- "POSIX" => "Parrot_ascii_typetable",
+ 'en_US.iso88591' => 'Parrot_iso_8859_1_typetable',
+ 'POSIX' => 'Parrot_ascii_typetable',
);
my $header = <<"HEADER";
/* $fileid
- * Copyright (C) 2005-2007, Parrot Foundation.
+ * Copyright (C) 2005-2010, Parrot Foundation.
*
* DO NOT EDIT THIS FILE DIRECTLY!
* please update the $0 script instead.
@@ -54,10 +52,6 @@
* Created by $svnid
* Overview:
* This file contains various charset tables.
- * Data Structure and Algorithms:
- * History:
- * Notes:
- * References:
*/
/* HEADERIZER HFILE: none */
Modified: branches/ops_pct/tools/dev/install_files.pl
==============================================================================
--- branches/ops_pct/tools/dev/install_files.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/install_files.pl Wed May 5 08:45:29 2010 (r46302)
@@ -159,9 +159,11 @@
my($filehash) = @_;
# For the time being this is hardcoded as being installed under
# libdir as it is typically done with automake installed packages.
- # If there is a use case to make this configurable we'll add a
- # seperate --pkgconfigdir option.
+ # If the --pkgconfigdir option is used, then the default value will
+ # be overwritten with the specified subdirectory under libdir.
$filehash->{DestDirs} = ['pkgconfig', $parrotdir];
+ $filehash->{DestDirs} = [$options{pkgconfigdir}]
+ if $options{pkgconfigdir};
return($filehash);
},
},
Modified: branches/ops_pct/tools/dev/mk_inno.pl
==============================================================================
--- branches/ops_pct/tools/dev/mk_inno.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/mk_inno.pl Wed May 5 08:45:29 2010 (r46302)
@@ -34,7 +34,6 @@
} if ($PConfig{has_icu});
my %dll = (
- has_gdbm => [ 'gdbm3.dll' ],
HAS_GETTEXT => [ 'libintl3.dll', 'libiconv2.dll' ],
HAS_PCRE => [ 'pcre3.dll' ],
HAS_READLINE => [ 'readline5.dll' ],
Modified: branches/ops_pct/tools/dev/mk_manifest_and_skip.pl
==============================================================================
--- branches/ops_pct/tools/dev/mk_manifest_and_skip.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/mk_manifest_and_skip.pl Wed May 5 08:45:29 2010 (r46302)
@@ -1,6 +1,6 @@
-##! perl
+#! perl
# $Id$
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
use strict;
use warnings;
@@ -38,10 +38,12 @@
=head1 DESCRIPTION
-Recreates MANIFEST and MANIFEST.SKIP from the subversion properties
-and the output of C<svn status>. .
-So far tested with svn 1.2.0 and svn 1.4.2. This also worked with svk 1.08,
-but to keep our tasks manageable, we only guarantee support for Subversion.
+Recreates MANIFEST and MANIFEST.SKIP from the output of C<svn status> and the subversion properties. Run this script after SVN has been told about new or deleted files and before you commit to the repository. So far tested with svn 1.2.0, 1.4.2 and 1.6.6.
+
+ svn add PATH...
+ svn delete PATH...
+ perl tools/dev/mk_manifest_and_skip.pl
+ svn commit -m ... [PATH...]
This won't work for git-svn.
Modified: branches/ops_pct/tools/dev/mk_native_pbc
==============================================================================
--- branches/ops_pct/tools/dev/mk_native_pbc Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/mk_native_pbc Wed May 5 08:45:29 2010 (r46302)
@@ -177,4 +177,4 @@
echo ""
echo "cd t/native_pbc"
-echo svn commit -m'native_pbc platform updates'
+echo "svn commit -m 'native_pbc platform updates'"
Modified: branches/ops_pct/tools/dev/nci_thunk_gen.pir
==============================================================================
--- branches/ops_pct/tools/dev/nci_thunk_gen.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/nci_thunk_gen.pir Wed May 5 08:45:29 2010 (r46302)
@@ -381,8 +381,7 @@
$S0 = 'get_loader_decl'(sigs)
$S1 = 'get_loader_body'(sigs)
- $S2 = 'sprintf'(<<'LOADER', $S0, $S0, $S1)
-%s;
+ $S2 = 'sprintf'(<<'LOADER', $S0, $S1)
%s {
%s
}
@@ -406,8 +405,7 @@
$S0 = 'get_dynext_loader_decl'(sigs)
$S1 = 'get_loader_body'(sigs)
- $S2 = 'sprintf'(<<'LOADER', $S0, $S0, $S1)
-%s;
+ $S2 = 'sprintf'(<<'LOADER', $S0, $S1)
%s {
%s
}
@@ -431,15 +429,13 @@
.param pmc sigs
.local string code
code = 'sprintf'(<<'HEADER', $S0, $S1)
- PMC *iglobals;
+ PMC * const iglobals = interp->iglobals;
PMC *nci_funcs;
PMC *temp_pmc;
- iglobals = interp->iglobals;
PARROT_ASSERT(!(PMC_IS_NULL(iglobals)));
- nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals,
- IGLOBALS_NCI_FUNCS);
+ nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
PARROT_ASSERT(!(PMC_IS_NULL(nci_funcs)));
HEADER
@@ -561,7 +557,7 @@
.local string call
call = 'sprintf'(<<'TEMPLATE', return_assign, ret_cast, call_params)
- GETATTR_NCI_orig_func(interp, self, orig_func);
+ GETATTR_NCI_orig_func(interp, nci, orig_func);
fn_pointer = (func_t)D2FPTR(orig_func);
%s %s(*fn_pointer)(%s);
TEMPLATE
@@ -640,10 +636,12 @@
typedef %s(* func_t)(%s);
func_t fn_pointer;
void *orig_func;
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ctx = CURRENT_CONTEXT(interp);
+ PMC * const call_object = Parrot_pcc_get_signature(interp, ctx);
+ PMC * ret_object = PMCNULL;
%s
%s;
+ UNUSED(return_data); /* Potentially unused, at least */
TEMPLATE
.return (var_decls)
@@ -656,7 +654,7 @@
fn_name = 'sig_to_fn_name'(sig :flat)
fn_decl = 'sprintf'(<<'TEMPLATE', storage_class, fn_name)
%s void
-%s(PARROT_INTERP, PMC *self)
+%s(PARROT_INTERP, PMC *nci, SHIM(PMC *self))
TEMPLATE
.return (fn_decl)
.end
@@ -778,7 +776,7 @@
inner_whitespace_loop:
$I0 = index line, $S0
if $I0 < 0 goto end_inner_whitespace_loop
- substr line, $I0, 1, ' '
+ line = replace line, $I0, 1, ' '
goto inner_whitespace_loop
end_inner_whitespace_loop:
@@ -789,14 +787,16 @@
multispace_loop:
$I0 = index line, ' '
if $I0 < 0 goto end_multispace_loop
- $S0 = substr line, $I0, 2, ' '
+ $S0 = substr line, $I0, 2
+ line = replace line, $I0, 2, ' '
goto multispace_loop
end_multispace_loop:
# remove leading whitespace
$S0 = substr line, 0, 1
unless $S0 == ' ' goto end_leading
- $S0 = substr line, 0, 1, ''
+ $S0 = substr line, 0, 1
+ line = replace line, 0, 1, ' '
end_leading:
# handle empty (or whitespace only) lines
@@ -806,7 +806,8 @@
# remove trailing whitespace
$S0 = substr line, -1, 1
unless $S0 == ' ' goto end_trailing
- $S0 = substr line, -1, 1, ''
+ $S0 = substr line, -1, 1
+ line = replace line, -1, 1, ''
end_trailing:
# read the signature
@@ -835,7 +836,7 @@
final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
VTABLE_set_pointer(interp, final_destination, return_data);
}
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"P\", final_destination);" },
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, \"P\", final_destination);" },
"i": { "as_proto": "int", "sig_char": "I",
"return_type": "INTVAL" },
"l": { "as_proto": "long", "sig_char": "I", "return_type": "INTVAL" },
@@ -846,7 +847,7 @@
"t": { "as_proto": "char *",
"final_dest": "STRING *final_destination;",
"ret_assign": "final_destination = Parrot_str_new(interp, return_data, 0);
- Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"S\", final_destination);",
+ ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, \"S\", final_destination);",
"sig_char": "S",
"temp_tmpl": "char *t_%i; STRING *ts_%i",
"fill_params_tmpl": ", &ts_%i",
@@ -884,7 +885,7 @@
"2": { "as_proto": "short *",
"sig_char": "P",
"return_type": "short",
- "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+ "ret_assign": "ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, \"I\", return_data);",
"temp_tmpl": "PMC *t_%i; short i_%i",
"preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
"call_param_tmpl": "&i_%i",
@@ -892,7 +893,7 @@
"3": { "as_proto": "int *",
"sig_char": "P",
"return_type": "int",
- "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+ "ret_assign": "ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, \"I\", return_data);",
"temp_tmpl": "PMC *t_%i; int i_%i",
"preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
"call_param_tmpl": "&i_%i",
@@ -900,7 +901,7 @@
"4": { "as_proto": "long *",
"sig_char": "P",
"return_type": "long",
- "ret_assign": "Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"I\", return_data);",
+ "ret_assign": "ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, \"I\", return_data);",
"temp_tmpl": "PMC *t_%i; long i_%i",
"preamble_tmpl": "i_%i = VTABLE_get_integer(interp, t_%i);",
"call_param_tmpl": "&i_%i",
@@ -920,7 +921,7 @@
# decode table
.local pmc compiler
- load_bytecode 'data_json.pbc'
+ load_language 'data_json'
compiler = compreg 'data_json'
.local pmc table
@@ -960,7 +961,7 @@
$I1 = !$I1
$I0 = $I0 || $I1 # not (not exists v[ret_assign] and exists v[sig_char])
if $I0 goto has_ret_assign
- $S0 = 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "'
+ $S0 = 'ret_object = Parrot_pcc_build_call_from_c_args(interp, call_object, "'
$S1 = v['sig_char']
$S0 = concat $S0, $S1
$S0 = concat $S0, '", return_data);'
@@ -1113,7 +1114,7 @@
$S1 = substr file, $I1, $I0
unless $S1 == $S0 goto extn_loop
extn = $S1
- substr file, $I1, $I0, ''
+ file = replace file, $I1, $I0, ''
end_extn_loop:
.return (dir, file, extn)
Modified: branches/ops_pct/tools/dev/parrot-fuzzer
==============================================================================
--- branches/ops_pct/tools/dev/parrot-fuzzer Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/parrot-fuzzer Wed May 5 08:45:29 2010 (r46302)
@@ -62,7 +62,7 @@
Specify which runcore to use when running Parrot. The default is the C<slow>
core. This option corresponds directly to Parrot's C<--runcore> option. Other
-runcores include C<fast>, C<jit>, C<cgoto>, C<cgp>, C<cgp-jit>, and C<switch>.
+runcores include C<fast>.
See Parrot's help for more details.
=item C<--ignore_blacklist>
Modified: branches/ops_pct/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/ops_pct/tools/dev/pbc_to_exe.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/dev/pbc_to_exe.pir Wed May 5 08:45:29 2010 (r46302)
@@ -1,5 +1,5 @@
#! parrot
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -32,7 +32,7 @@
.local string objfile
.local string exefile
- (infile, cfile, objfile, exefile) = 'handle_args'(argv)
+ (infile :optional, cfile :optional, objfile :optional, exefile :optional) = 'handle_args'(argv)
unless infile > '' goto err_infile
.local string code_type
@@ -66,7 +66,7 @@
print outfh, codestring
print outfh, <<'MAIN'
- int main(int argc, char *argv[])
+ int main(int argc, const char *argv[])
{
PackFile *pf;
Parrot_Interp interp;
@@ -155,8 +155,8 @@
check_install:
.local string infile, install
- $P0 = shift args
- infile = shift args
+ $P0 = shift args
+ infile = shift args
install = shift args
if install == '--install' goto proper_install
.return ()
@@ -217,9 +217,12 @@
.local pmc ifh
ifh = open infile, 'r'
unless ifh goto err_infile
- .local string codestring
+
+ .local pmc codestring
.local int size
- codestring = "const Parrot_UInt1 program_code[] = {"
+
+ codestring = new [ 'ResizableStringArray' ]
+ push codestring, "const Parrot_UInt1 program_code[] = {"
size = 0
read_loop:
@@ -236,33 +239,37 @@
unless pos < pbclength goto code_done
$I0 = ord pbcstring, pos
$S0 = $I0
- codestring .= $S0
- codestring .= ','
+ push codestring, $S0
+ push codestring, ','
inc pos
inc size
$I0 = size % 32
unless $I0 == 0 goto code_loop
- codestring .= "\n"
+ push codestring, "\n"
goto code_loop
code_done:
+ # Join current strings to avoid storing too much
+ $S0 = join '', codestring
+ codestring = 0
+ push codestring, $S0
goto read_loop
read_done:
close ifh
- codestring .= "\n};\n\n"
- codestring .= "const int bytecode_size = "
+ push codestring, "\n};\n\nconst int bytecode_size = "
$S0 = size
- codestring .= $S0
- codestring .= ";\n"
- codestring .= <<'END_OF_FUNCTION'
+ push codestring, $S0
+ push codestring, ";\n"
+ push codestring, <<'END_OF_FUNCTION'
const void * get_program_code(void)
{
return program_code;
}
END_OF_FUNCTION
- .return (codestring)
+ $S0 = join '', codestring
+ .return ($S0)
err_infile:
die "cannot open infile"
@@ -307,10 +314,13 @@
.local pmc encoding_table
encoding_table = 'generate_encoding_table'()
- .local string codestring
+ .local pmc codestring
.local int size
- codestring = "const char * program_code =\n"
- codestring .= '"'
+
+ codestring = new ['ResizableStringArray']
+
+ push codestring, "const char * program_code =\n"
+ push codestring, '"'
size = 0
read_loop:
@@ -327,36 +337,41 @@
unless pos < pbclength goto code_done
$I0 = ord pbcstring, pos
$S0 = encoding_table[$I0]
- codestring .= $S0
+ push codestring, $S0
inc pos
inc size
$I0 = size % 32
unless $I0 == 0 goto code_loop
- codestring .= '"'
- codestring .= "\n"
- codestring .= '"'
+ push codestring, '"'
+ push codestring, "\n"
+ push codestring, '"'
goto code_loop
code_done:
+ # Join current strings to avoid storing too much
+ $S0 = join '', codestring
+ codestring = 0
+ push codestring, $S0
goto read_loop
read_done:
close ifh
- codestring .= '"'
- codestring .= "\n;\n\n"
- codestring .= "const int bytecode_size = "
+ push codestring, '"'
+ push codestring, "\n;\n\n"
+ push codestring, "const int bytecode_size = "
$S0 = size
- codestring .= $S0
- codestring .= ";\n"
+ push codestring, $S0
+ push codestring, ";\n"
- codestring .= <<'END_OF_FUNCTION'
+ push codestring, <<'END_OF_FUNCTION'
const void * get_program_code(void)
{
return program_code;
}
END_OF_FUNCTION
- .return (codestring)
+ $S0 = join '', codestring
+ .return ($S0)
err_infile:
die "cannot open infile"
@@ -371,11 +386,10 @@
.param string new_extension
$S0 = substr pbc_path, -4
- downcase $S0
+ $S0 = downcase $S0
if $S0 != '.pbc' goto err_pbc_path_not_pbc
.local string base_path
- base_path = substr pbc_path, 0
- substr base_path, -4, 4, ''
+ base_path = replace pbc_path, -4, 4, ''
.local string new_path
new_path = substr base_path, 0
@@ -432,22 +446,22 @@
.local int pbc_size
+ $P0 = loadlib 'os'
$P1 = new ['OS']
$P2 = $P1.'stat'(pbc_path)
pbc_size = $P2[7]
- .local string codestring
- codestring = ''
- codestring .= '#include <windows.h>'
- codestring .= "\n"
- codestring .= rc_constant_defines
- codestring .= "const unsigned int bytecode_size = "
+ .local pmc codestring
+ codestring = new [ 'ResizableStringArray' ]
+ push codestring, "#include <windows.h>\n"
+ push codestring, rc_constant_defines
+ push codestring, "const unsigned int bytecode_size = "
$S0 = pbc_size
- codestring .= $S0
- codestring .= ";\n"
+ push codestring, $S0
+ push codestring, ";\n"
- codestring .= <<'END_OF_FUNCTION'
+ push codestring, <<'END_OF_FUNCTION'
const void * get_program_code(void)
{
HRSRC hResource;
@@ -489,9 +503,10 @@
unless status goto rc_ok
die "RC command failed"
- rc_ok:
- .return (codestring)
+ rc_ok:
+ $S0 = join '', codestring
+ .return ($S0)
err_h_open:
die "cannot open .h file"
@@ -654,6 +669,7 @@
check_manifest:
# Check if there is a MSVC app manifest
.local pmc file
+ $P0 = loadlib 'file'
file = new 'File'
.local string manifest_file_name
manifest_file_name = clone exefile
@@ -687,19 +703,14 @@
.sub 'prepend_installable'
.param string file
- $P0 = '_config'()
-
- .local string slash
- slash = $P0['slash']
-
.local pmc path
- path = split slash, file
+ path = split '/', file
file = path[-1]
file = concat 'installable_', file
path[-1] = file
- file = join slash, path
+ file = join '/', path
.return( file )
.end
Copied: branches/ops_pct/tools/dev/tapir.pir (from r46301, trunk/tools/dev/tapir.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/tools/dev/tapir.pir Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/tools/dev/tapir.pir)
@@ -0,0 +1,236 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+Tapir
+
+=head1 DESCRIPTION
+
+Tapir is a PIR-based TAP (Test Anything Protocol) Harness
+
+It eats test output (i.e. is a TAP consumer) and tells humans if the
+test suite passed, and if not, which kind of pretty colors of smoke
+came out. It is mostly equivalent to 'prove' from Perl 5.
+
+=head1 SYNOPSIS
+
+ ./tapir t/*.t
+
+=head2 OPTIONS
+
+Usage:
+
+ tapir [OPTIONS] <files>
+
+=head3 Boolean options
+
+ -v, --verbose Print all test lines.
+ -s, --shuffle Run the tests in random order.
+ -f, --failures Show failed tests.
+ -o, --comments Show comments.
+ --ignore-exit Ignore exit status from test scripts.
+ -m, --merge Merge test scripts' STDERR with their STDOUT.
+ --reverse Run the tests in reverse order.
+ -q, --quiet Suppress some test output while running tests.
+ -Q, --QUIET Only print summary results.
+ --directives Only show results with TODO or SKIP directives.
+ --normalize Normalize TAP output in verbose output
+ -h, --help Display this help
+ -V, --version Display the version
+
+=head3 Options that take arguments
+
+ -e, --exec Interpreter to run the tests ('' for compiled
+ tests.)
+ -a, --archive Store the resulting TAP in an archive file.
+
+=cut
+
+
+.sub 'main' :main
+ .param pmc argv
+ $S0 = shift argv
+ .local int argc
+ argc = elements argv
+ if argc > 0 goto L1
+ help()
+ end
+ L1:
+ .local pmc opts
+ opts = _parse_opts(argv)
+ $S0 = opts['help']
+ unless $S0 goto L2
+ help()
+ end
+ L2:
+ $S0 = opts['version']
+ unless $S0 goto L3
+ version()
+ end
+ L3:
+ .tailcall do(opts, argv)
+.end
+
+.sub 'version' :anon
+ say "Tapir 0.1.0"
+.end
+
+.sub 'help' :anon
+ say <<"HELP"
+
+ tapir [options] [files]
+
+Boolean options:
+
+ -v, --verbose Print all test lines.
+ -s, --shuffle Run the tests in random order.
+ -f, --failures Show failed tests.
+ -o, --comments Show comments.
+ --ignore-exit Ignore exit status from test scripts.
+ -m, --merge Merge test scripts' STDERR with their STDOUT.
+ --reverse Run the tests in reverse order.
+ -q, --quiet Suppress some test output while running tests.
+ -Q, --QUIET Only print summary results.
+ --directives Only show results with TODO or SKIP directives.
+ --normalize Normalize TAP output in verbose output
+ -h, --help Display this help
+ -V, --version Display the version
+
+Options that take arguments:
+
+ -e, --exec Interpreter to run the tests ('' for compiled
+ tests.)
+ -a, --archive Store the resulting TAP in an archive file.
+HELP
+.end
+
+.sub '_parse_opts' :anon
+ .param pmc argv
+ load_bytecode 'Getopt/Obj.pbc'
+ $P0 = new ['Getopt';'Obj']
+ $P0.'notOptStop'(1)
+ push $P0, 'exec|e:s'
+ push $P0, 'archive|a:s'
+ push $P0, 'verbose|v'
+ push $P0, 'quiet|q'
+ push $P0, 'QUIET|Q'
+ push $P0, 'normalize'
+ push $P0, 'failures|f'
+ push $P0, 'comments|o'
+ push $P0, 'directives'
+ push $P0, 'ignore-exit'
+ push $P0, 'reverse'
+ push $P0, 'merge|m'
+ push $P0, 'shuffle|s'
+ push $P0, 'version|V'
+ push $P0, 'help|h'
+ $P1 = $P0.'get_options'(argv)
+ .return ($P1)
+.end
+
+.sub 'do' :anon
+ .param pmc opts
+ .param pmc files
+ load_bytecode 'TAP/Harness.pbc'
+ .local pmc harness, aggregate
+ $I0 = exists opts['archive']
+ if $I0 goto L1
+ harness = new ['TAP';'Harness']
+ goto L2
+ L1:
+ harness = new ['TAP';'Harness';'Archive']
+ $S0 = opts['archive']
+ harness.'archive'($S0)
+ L2:
+ harness.'process_args'(opts)
+ $P0 = _get_tests(opts, files)
+ aggregate = harness.'runtests'($P0)
+ $I0 = aggregate.'has_errors'()
+ exit $I0
+.end
+
+.sub '_get_tests' :anon
+ .param pmc opts
+ .param pmc files
+ .local int nb
+ nb = elements files
+ # currently, FixedStringArray hasn't the method sort.
+ # see TT #1356
+ $P0 = new 'FixedPMCArray'
+ set $P0, nb
+ $I0 = 0
+ $P1 = iter files
+ L1:
+ unless $P1 goto L2
+ $S0 = shift $P1
+ $P2 = split "\\", $S0
+ $S0 = join "/", $P2
+ $P2 = box $S0
+ $P0[$I0] = $P2
+ inc $I0
+ goto L1
+ L2:
+ $I0 = exists opts['shuffle']
+ unless $I0 goto L3
+ $P0 = _shuffle($P0)
+ goto L4
+ L3:
+ $P0.'sort'()
+ $I0 = exists opts['reverse']
+ unless $I0 goto L4
+ $P0 = _reverse($P0)
+ L4:
+ .return ($P0)
+.end
+
+.sub '_reverse' :anon
+ .param pmc array
+ .local int nb
+ nb = elements array
+ $P0 = new 'FixedPMCArray'
+ set $P0, nb
+ $I0 = 0
+ $I1 = nb - 1
+ L1:
+ unless $I0 < nb goto L2
+ $P1 = array[$I0]
+ $P0[$I1] = $P1
+ inc $I0
+ dec $I1
+ goto L1
+ L2:
+ .return ($P0)
+.end
+
+.sub '_shuffle' :anon
+ .param pmc array
+ load_bytecode 'Math/Rand.pbc'
+ .local pmc rand
+ rand = get_global [ 'Math'; 'Rand' ], 'rand'
+ .local pmc srand
+ srand = get_global [ 'Math'; 'Rand' ], 'srand'
+ $I0 = time
+ srand($I0)
+ .local int i, j
+ i = elements array
+ L1:
+ unless i > 0 goto L2
+ $I0 = rand()
+ j = $I0 % i
+ dec i
+ $P1 = array[i]
+ $P2 = array[j]
+ array[i] = $P2
+ array[j] = $P1
+ goto L1
+ L2:
+ .return (array)
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Copied: branches/ops_pct/tools/docs/filename_and_chapter.pl (from r46301, trunk/tools/docs/filename_and_chapter.pl)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/ops_pct/tools/docs/filename_and_chapter.pl Wed May 5 08:45:29 2010 (r46302, copy of r46301, trunk/tools/docs/filename_and_chapter.pl)
@@ -0,0 +1,90 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+#
+# perl script that writes modified POD files to the directory
+# 'build/modified_pod'. Then this script generates a latex file from
+# this POD.
+#
+
+use strict;
+use warnings;
+
+use Getopt::Long ();
+use Pod::PseudoPod::LaTeX;
+
+my $item_list_ref = [ ['intro.pod', 'Introduction to Parrot'],
+ ['overview.pod', 'Overview'],
+ ['submissions.pod', 'Submitting bug reports and patches'],
+ ];
+
+my $lang = @$item_list_ref - 1;
+my $MOD_BUILD_PATH='build/modified_pod/';
+
+my ( $result, $give_out );
+
+$result = Getopt::Long::GetOptions (
+ "print" => \$give_out,
+);
+
+if ($give_out) {
+ for my $i ( 0.. $lang )
+ { print $item_list_ref->[$i][0], "\n" }
+ exit;
+};
+
+
+for my $i ( 0..$lang ) {
+ write_mod( $i );
+}
+
+
+open my $TEX_FH, '>', 'build/parrot-book.tex';
+
+print $TEX_FH <<'HEADER';
+\documentclass[11pt,a4paper,oneside]{report}
+\usepackage{graphics,graphicx}
+\usepackage{colortbl}
+
+\begin{document}
+\tableofcontents
+HEADER
+
+for my $i ( 0..$lang ) {
+ my $parser = Pod::PseudoPod::LaTeX->new();
+ $parser->output_fh( $TEX_FH );
+ $parser->parse_file( "${MOD_BUILD_PATH}$item_list_ref->[$i][0]" );
+}
+
+print $TEX_FH <<'FOOTER';
+\end{document}
+FOOTER
+
+close( $TEX_FH );
+
+
+sub write_mod {
+ my $icnt;
+
+ open( my $IN_FH, '<', $item_list_ref->[$_[0]][0] ) or
+ die "$0: can't open $item_list_ref->[$_[0]][0] for reading ($!)\n";
+ open( my $OUT_FH, '>', "${MOD_BUILD_PATH}$item_list_ref->[$_[0]][0]" ) or
+ die "$0: can't open ${MOD_BUILD_PATH}$item_list_ref->[$_[0]][0]: $!\n";
+
+ # do the same as: sed -e '4,6c\=head0 $item_list_ref->[$i][1]'
+ while( <$IN_FH> ) {
+ if ( $icnt = (4..6) ) {
+ if ( $icnt =~ /E0$/ ) {
+ print $OUT_FH "=head0 $item_list_ref->[$_[0]][1]\n";
+ }
+ }
+ else { print $OUT_FH $_ }
+ }
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/ops_pct/tools/install/smoke.pl
==============================================================================
--- branches/ops_pct/tools/install/smoke.pl Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/install/smoke.pl Wed May 5 08:45:29 2010 (r46302)
@@ -9,7 +9,7 @@
use Getopt::Long;
use File::Spec::Functions;
-use Test::More tests => 8;
+use Test::More tests => 7;
=head1 NAME
@@ -146,16 +146,6 @@
ok($out =~ /^\n\.sub '_ROOT_past'/, "check TGE");
unlink($filename);
-# compilers/nqp is typically not installed
-$filename = 'test.nqp';
-open $FH, '>', $filename
- or die "Can't open $filename ($!).\n";
-print $FH "say('hello world!');\n";
-close $FH;
-$out = `$parrot $compdir/nqp/nqp.pbc $filename`;
-ok($out eq "hello world!\n", "check nqp");
-unlink($filename);
-
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
Modified: branches/ops_pct/tools/util/parrot-config.pir
==============================================================================
--- branches/ops_pct/tools/util/parrot-config.pir Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/util/parrot-config.pir Wed May 5 08:45:29 2010 (r46302)
@@ -46,18 +46,32 @@
if key == '--help' goto usage
if key == '--dump' goto dump
$I0 = defined conf_hash[key]
- if $I0 goto ok2
- print " no such key: '"
- print key
- print "'\n"
- end
-ok2:
+ unless $I0 goto failkey
+ dec argc
+ if i < argc goto dumpsome
$S0 = conf_hash[key]
print $S0
inc i
if i < argc goto loop
print "\n"
end
+dumpsome:
+ key = argv[i]
+ $I0 = defined conf_hash[key]
+ unless $I0 goto failkey
+ print key
+ print " => '"
+ $S1 = conf_hash[key]
+ print $S1
+ say "'"
+ inc i
+ if i <= argc goto dumpsome
+ end
+failkey:
+ print " no such key: '"
+ print key
+ print "'\n"
+ end
dump:
.local pmc iterator
iterator = iter conf_hash
Modified: branches/ops_pct/tools/util/pgegrep
==============================================================================
--- branches/ops_pct/tools/util/pgegrep Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/util/pgegrep Wed May 5 08:45:29 2010 (r46302)
@@ -130,7 +130,9 @@
filecount = files
# define with-filename if there's more than one file
.If(filecount >= 2, { opts['with-filename'] = 1 })
+ $P0 = loadlib 'file'
File = new 'File'
+ $P0 = loadlib 'os'
OS = new 'OS'
# This must be here, or else it'll get filled with junk data we use stdin...
i = 0
Modified: branches/ops_pct/tools/util/release.json
==============================================================================
--- branches/ops_pct/tools/util/release.json Wed May 5 08:26:03 2010 (r46301)
+++ branches/ops_pct/tools/util/release.json Wed May 5 08:45:29 2010 (r46302)
@@ -1,9 +1,9 @@
{
- "release.version" : "2.0.0",
- "release.name" : "Inevitable",
+ "release.version" : "2.3.0",
+ "release.name" : "Samoan Lory",
"release.day" : "Tuesday",
- "release.date" : "16 Februuary 2010",
- "release.nextdate" : "16 March 2010",
+ "release.date" : "20 April 2010",
+ "release.nextdate" : "18 May 2010",
"web.root" : "http://parrot.org/",
"web.source" : "download",
@@ -11,13 +11,13 @@
"web.repository" : "https://svn.parrot.org/parrot/trunk/",
"bugday.day" : "Saturday",
- "bugday.date" : "13 March 2010",
+ "bugday.date" : "17 April 2010",
"wiki.root" : "https://trac.parrot.org/parrot/wiki/",
- "wiki.bugday" : "bug_day_2010_03_13",
+ "wiki.bugday" : "bug_day_2010_04_17",
"cpan.search" : "http://search.cpan.org/dist/parrot",
- "ftp.path" : "ftp://ftp.parrot.org/pub/parrot/devel/stable/2.1.0/",
- "subversion.root" : "http://subversion.tigris.org/",
+ "ftp.path" : "ftp://ftp.parrot.org/pub/parrot/releases/stable/2.3.0/",
+ "subversion.root" : "http://subversion.apache.org/",
"svk.root" : "http://svk.bestpractical.com/"
}
More information about the parrot-commits
mailing list