[svn:parrot] r45876 - in branches/include_dynpmc_makefile: . compilers/data_json compilers/data_json/data_json compilers/imcc compilers/json compilers/json/JSON compilers/ncigen compilers/ncigen/src compilers/nqp compilers/nqp/bootstrap compilers/nqp/src 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/pirc/t compilers/tge compilers/tge/TGE config/auto config/auto/attributes config/auto/crypto config/auto/gdbm config/auto/sizes config/gen 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 docs/book/draft docs/book/pct docs/dev docs/ops docs/pdds docs/pdds/draft docs/pmc docs/project editor examples/embed examples/languages/abc examples/languages/abc/src examples/languages/abc/t examples/languages/ squaak examples/languages/squaak/src examples/mops examples/nci examples/pasm examples/pge examples/pir/befunge examples/tutorial ext ext/Parrot-Embed ext/Parrot-Embed/lib/Parrot ext/Parrot-Embed/t ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot include/parrot/oplib include/pmc lib lib/Parrot lib/Parrot/Config lib/Parrot/Configure/Options lib/Parrot/Configure/Options/Test lib/Parrot/Configure/Step lib/Parrot/Harness lib/Parrot/OpTrans lib/Parrot/Ops2c lib/Parrot/Pmc2c lib/Parrot/Pmc2c/PMC ports/cpan ports/cygwin ports/debian ports/fedora ports/fedora/2.3.0 ports/mandriva ports/suse ports/suse/2.2.0 ports/ubuntu runtime/parrot/dynext runtime/parrot/include runtime/parrot/languages runtime/parrot/library runtime/parrot/library/CGI runtime/parrot/library/Config runtime/parrot/library/Configure runtime/parrot/library/Data runtime/parrot/library/Data/Dumper runtime/parrot/library/Digest runtime/parrot/library/Getopt runtime/parrot/library/HTTP runtime/parrot/library/MIME runtime/ parrot/library/Math runtime/parrot/library/NCI runtime/parrot/library/OpenGL runtime/parrot/library/PCT runtime/parrot/library/PGE runtime/parrot/library/Parrot runtime/parrot/library/ProfTest runtime/parrot/library/Stream runtime/parrot/library/String runtime/parrot/library/TAP runtime/parrot/library/Tcl runtime/parrot/library/Test runtime/parrot/library/Test/Builder runtime/parrot/library/YAML runtime/parrot/library/YAML/Dumper runtime/parrot/library/YAML/Parser src src/atomic 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/benchmark t/codingstd t/compilers/imcc 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/distro t/dynoplibs t/dynpmc t/examples t/library t/native_pbc t/oo t/op t/perl t/pmc t/profiling t/src t/steps/auto t/s teps/gen t/steps/init t/steps/init/hints t/steps/inter t/stress t/tools tools/build tools/dev tools/docs tools/util
darbelo at svn.parrot.org
darbelo at svn.parrot.org
Wed Apr 21 23:41:11 UTC 2010
Author: darbelo
Date: Wed Apr 21 23:40:50 2010
New Revision: 45876
URL: https://trac.parrot.org/parrot/changeset/45876
Log:
Sync branch with trunk.
Added:
branches/include_dynpmc_makefile/.gitignore
- copied unchanged from r45870, trunk/.gitignore
branches/include_dynpmc_makefile/compilers/data_json/.gitignore
- copied unchanged from r45870, trunk/compilers/data_json/.gitignore
branches/include_dynpmc_makefile/compilers/data_json/data_json/.gitignore
- copied unchanged from r45870, trunk/compilers/data_json/data_json/.gitignore
branches/include_dynpmc_makefile/compilers/imcc/.gitignore
- copied unchanged from r45870, trunk/compilers/imcc/.gitignore
branches/include_dynpmc_makefile/compilers/json/.gitignore
- copied unchanged from r45870, trunk/compilers/json/.gitignore
branches/include_dynpmc_makefile/compilers/json/JSON/.gitignore
- copied unchanged from r45870, trunk/compilers/json/JSON/.gitignore
branches/include_dynpmc_makefile/compilers/ncigen/.gitignore
- copied unchanged from r45870, trunk/compilers/ncigen/.gitignore
branches/include_dynpmc_makefile/compilers/ncigen/src/.gitignore
- copied unchanged from r45870, trunk/compilers/ncigen/src/.gitignore
branches/include_dynpmc_makefile/compilers/nqp/.gitignore
- copied unchanged from r45870, trunk/compilers/nqp/.gitignore
branches/include_dynpmc_makefile/compilers/nqp/bootstrap/.gitignore
- copied unchanged from r45870, trunk/compilers/nqp/bootstrap/.gitignore
branches/include_dynpmc_makefile/compilers/nqp/src/.gitignore
- copied unchanged from r45870, trunk/compilers/nqp/src/.gitignore
branches/include_dynpmc_makefile/compilers/pct/src/PAST/.gitignore
- copied unchanged from r45870, trunk/compilers/pct/src/PAST/.gitignore
branches/include_dynpmc_makefile/compilers/pct/src/PCT/.gitignore
- copied unchanged from r45870, trunk/compilers/pct/src/PCT/.gitignore
branches/include_dynpmc_makefile/compilers/pct/src/POST/.gitignore
- copied unchanged from r45870, trunk/compilers/pct/src/POST/.gitignore
branches/include_dynpmc_makefile/compilers/pge/.gitignore
- copied unchanged from r45870, trunk/compilers/pge/.gitignore
branches/include_dynpmc_makefile/compilers/pge/PGE/.gitignore
- copied unchanged from r45870, trunk/compilers/pge/PGE/.gitignore
branches/include_dynpmc_makefile/compilers/pirc/.gitignore
- copied unchanged from r45870, trunk/compilers/pirc/.gitignore
branches/include_dynpmc_makefile/compilers/pirc/t/.gitignore
- copied unchanged from r45870, trunk/compilers/pirc/t/.gitignore
branches/include_dynpmc_makefile/compilers/tge/.gitignore
- copied unchanged from r45870, trunk/compilers/tge/.gitignore
branches/include_dynpmc_makefile/compilers/tge/TGE/.gitignore
- copied unchanged from r45870, trunk/compilers/tge/TGE/.gitignore
branches/include_dynpmc_makefile/config/gen/config_pm/config_lib_pir.in
- copied unchanged from r45870, trunk/config/gen/config_pm/config_lib_pir.in
branches/include_dynpmc_makefile/docs/.gitignore
- copied unchanged from r45870, trunk/docs/.gitignore
branches/include_dynpmc_makefile/docs/book/.gitignore
- copied unchanged from r45870, trunk/docs/book/.gitignore
branches/include_dynpmc_makefile/docs/ops/.gitignore
- copied unchanged from r45870, trunk/docs/ops/.gitignore
branches/include_dynpmc_makefile/editor/.gitignore
- copied unchanged from r45870, trunk/editor/.gitignore
branches/include_dynpmc_makefile/examples/languages/abc/.gitignore
- copied unchanged from r45870, trunk/examples/languages/abc/.gitignore
branches/include_dynpmc_makefile/examples/languages/abc/src/.gitignore
- copied unchanged from r45870, trunk/examples/languages/abc/src/.gitignore
branches/include_dynpmc_makefile/examples/languages/abc/t/.gitignore
- copied unchanged from r45870, trunk/examples/languages/abc/t/.gitignore
branches/include_dynpmc_makefile/examples/languages/squaak/.gitignore
- copied unchanged from r45870, trunk/examples/languages/squaak/.gitignore
branches/include_dynpmc_makefile/examples/languages/squaak/src/.gitignore
- copied unchanged from r45870, trunk/examples/languages/squaak/src/.gitignore
branches/include_dynpmc_makefile/examples/mops/.gitignore
- copied unchanged from r45870, trunk/examples/mops/.gitignore
branches/include_dynpmc_makefile/examples/nci/.gitignore
- copied unchanged from r45870, trunk/examples/nci/.gitignore
branches/include_dynpmc_makefile/examples/pasm/.gitignore
- copied unchanged from r45870, trunk/examples/pasm/.gitignore
branches/include_dynpmc_makefile/examples/pir/befunge/.gitignore
- copied unchanged from r45870, trunk/examples/pir/befunge/.gitignore
branches/include_dynpmc_makefile/ext/.gitignore
- copied unchanged from r45870, trunk/ext/.gitignore
branches/include_dynpmc_makefile/ext/Parrot-Embed/.gitignore
- copied unchanged from r45870, trunk/ext/Parrot-Embed/.gitignore
branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/.gitignore
- copied unchanged from r45870, trunk/ext/Parrot-Embed/lib/Parrot/.gitignore
branches/include_dynpmc_makefile/ext/Parrot-Embed/t/.gitignore
- copied unchanged from r45870, trunk/ext/Parrot-Embed/t/.gitignore
branches/include_dynpmc_makefile/include/parrot/.gitignore
- copied unchanged from r45870, trunk/include/parrot/.gitignore
branches/include_dynpmc_makefile/include/parrot/oplib/.gitignore
- copied unchanged from r45870, trunk/include/parrot/oplib/.gitignore
branches/include_dynpmc_makefile/include/parrot/platform_interface.h
- copied unchanged from r45870, trunk/include/parrot/platform_interface.h
branches/include_dynpmc_makefile/include/pmc/.gitignore
- copied unchanged from r45870, trunk/include/pmc/.gitignore
branches/include_dynpmc_makefile/lib/.gitignore
- copied unchanged from r45870, trunk/lib/.gitignore
branches/include_dynpmc_makefile/lib/Parrot/.gitignore
- copied unchanged from r45870, trunk/lib/Parrot/.gitignore
branches/include_dynpmc_makefile/lib/Parrot/Config/.gitignore
- copied unchanged from r45870, trunk/lib/Parrot/Config/.gitignore
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/.gitignore
- copied unchanged from r45870, trunk/lib/Parrot/Pmc2c/.gitignore
branches/include_dynpmc_makefile/ports/debian/.gitignore
- copied unchanged from r45870, trunk/ports/debian/.gitignore
branches/include_dynpmc_makefile/ports/fedora/2.3.0/
- copied from r45870, trunk/ports/fedora/2.3.0/
branches/include_dynpmc_makefile/ports/suse/2.2.0/
- copied from r45870, trunk/ports/suse/2.2.0/
branches/include_dynpmc_makefile/runtime/parrot/dynext/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/dynext/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/include/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/include/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/CGI/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/CGI/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Config/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Config/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Configure/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Configure/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Data/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Data/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Data/Dumper/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Data/Dumper/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Digest/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Digest/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Getopt/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/MIME/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/MIME/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Math/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Math/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/NCI/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/NCI/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/OpenGL/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/OpenGL/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/PCT/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/PCT/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/PGE/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/PGE/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Parrot/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Parrot/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/ (props changed)
- copied from r45870, trunk/runtime/parrot/library/ProfTest/
branches/include_dynpmc_makefile/runtime/parrot/library/Stream/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Stream/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/String/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/String/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/TAP/ (props changed)
- copied from r45870, trunk/runtime/parrot/library/TAP/
branches/include_dynpmc_makefile/runtime/parrot/library/Tcl/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Tcl/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Test/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Test/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/Test/Builder/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/YAML/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/YAML/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Dumper/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/YAML/Dumper/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Parser/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/YAML/Parser/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/osutils.pir
- copied unchanged from r45870, trunk/runtime/parrot/library/osutils.pir
branches/include_dynpmc_makefile/src/.gitignore
- copied unchanged from r45870, trunk/src/.gitignore
branches/include_dynpmc_makefile/src/atomic/.gitignore
- copied unchanged from r45870, trunk/src/atomic/.gitignore
branches/include_dynpmc_makefile/src/call/.gitignore
- copied unchanged from r45870, trunk/src/call/.gitignore
branches/include_dynpmc_makefile/src/dynoplibs/.gitignore
- copied unchanged from r45870, trunk/src/dynoplibs/.gitignore
branches/include_dynpmc_makefile/src/dynpmc/.gitignore
- copied unchanged from r45870, trunk/src/dynpmc/.gitignore
branches/include_dynpmc_makefile/src/gc/.gitignore
- copied unchanged from r45870, trunk/src/gc/.gitignore
branches/include_dynpmc_makefile/src/interp/.gitignore
- copied unchanged from r45870, trunk/src/interp/.gitignore
branches/include_dynpmc_makefile/src/io/.gitignore
- copied unchanged from r45870, trunk/src/io/.gitignore
branches/include_dynpmc_makefile/src/nci/.gitignore
- copied unchanged from r45870, trunk/src/nci/.gitignore
branches/include_dynpmc_makefile/src/ops/.gitignore
- copied unchanged from r45870, trunk/src/ops/.gitignore
branches/include_dynpmc_makefile/src/packfile/.gitignore
- copied unchanged from r45870, trunk/src/packfile/.gitignore
branches/include_dynpmc_makefile/src/pmc/.gitignore
- copied unchanged from r45870, trunk/src/pmc/.gitignore
branches/include_dynpmc_makefile/src/runcore/.gitignore
- copied unchanged from r45870, trunk/src/runcore/.gitignore
branches/include_dynpmc_makefile/src/string/.gitignore
- copied unchanged from r45870, trunk/src/string/.gitignore
branches/include_dynpmc_makefile/src/string/charset/.gitignore
- copied unchanged from r45870, trunk/src/string/charset/.gitignore
branches/include_dynpmc_makefile/src/string/encoding/.gitignore
- copied unchanged from r45870, trunk/src/string/encoding/.gitignore
branches/include_dynpmc_makefile/t/benchmark/.gitignore
- copied unchanged from r45870, trunk/t/benchmark/.gitignore
branches/include_dynpmc_makefile/t/compilers/imcc/.gitignore
- copied unchanged from r45870, trunk/t/compilers/imcc/.gitignore
branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/.gitignore
- copied unchanged from r45870, trunk/t/compilers/imcc/imcpasm/.gitignore
branches/include_dynpmc_makefile/t/compilers/imcc/reg/.gitignore
- copied unchanged from r45870, trunk/t/compilers/imcc/reg/.gitignore
branches/include_dynpmc_makefile/t/compilers/imcc/syn/.gitignore
- copied unchanged from r45870, trunk/t/compilers/imcc/syn/.gitignore
branches/include_dynpmc_makefile/t/compilers/json/.gitignore
- copied unchanged from r45870, trunk/t/compilers/json/.gitignore
branches/include_dynpmc_makefile/t/compilers/pct/.gitignore
- copied unchanged from r45870, trunk/t/compilers/pct/.gitignore
branches/include_dynpmc_makefile/t/compilers/pge/.gitignore
- copied unchanged from r45870, trunk/t/compilers/pge/.gitignore
branches/include_dynpmc_makefile/t/compilers/pge/p5regex/.gitignore
- copied unchanged from r45870, trunk/t/compilers/pge/p5regex/.gitignore
branches/include_dynpmc_makefile/t/compilers/pge/perl6regex/.gitignore
- copied unchanged from r45870, trunk/t/compilers/pge/perl6regex/.gitignore
branches/include_dynpmc_makefile/t/compilers/tge/.gitignore
- copied unchanged from r45870, trunk/t/compilers/tge/.gitignore
branches/include_dynpmc_makefile/t/dynoplibs/.gitignore
- copied unchanged from r45870, trunk/t/dynoplibs/.gitignore
branches/include_dynpmc_makefile/t/dynpmc/.gitignore
- copied unchanged from r45870, trunk/t/dynpmc/.gitignore
branches/include_dynpmc_makefile/t/examples/.gitignore
- copied unchanged from r45870, trunk/t/examples/.gitignore
branches/include_dynpmc_makefile/t/harness.pir
- copied unchanged from r45870, trunk/t/harness.pir
branches/include_dynpmc_makefile/t/library/.gitignore
- copied unchanged from r45870, trunk/t/library/.gitignore
branches/include_dynpmc_makefile/t/library/osutils.t
- copied unchanged from r45870, trunk/t/library/osutils.t
branches/include_dynpmc_makefile/t/library/tap_parser.t
- copied unchanged from r45870, trunk/t/library/tap_parser.t
branches/include_dynpmc_makefile/t/native_pbc/.gitignore
- copied unchanged from r45870, trunk/t/native_pbc/.gitignore
branches/include_dynpmc_makefile/t/oo/.gitignore
- copied unchanged from r45870, trunk/t/oo/.gitignore
branches/include_dynpmc_makefile/t/op/.gitignore
- copied unchanged from r45870, trunk/t/op/.gitignore
branches/include_dynpmc_makefile/t/perl/.gitignore
- copied unchanged from r45870, trunk/t/perl/.gitignore
branches/include_dynpmc_makefile/t/pmc/.gitignore
- copied unchanged from r45870, trunk/t/pmc/.gitignore
branches/include_dynpmc_makefile/t/pmc/namespace-subs.t
- copied unchanged from r45870, trunk/t/pmc/namespace-subs.t
branches/include_dynpmc_makefile/t/profiling/
- copied from r45870, trunk/t/profiling/
branches/include_dynpmc_makefile/t/src/.gitignore
- copied unchanged from r45870, trunk/t/src/.gitignore
branches/include_dynpmc_makefile/t/stress/.gitignore
- copied unchanged from r45870, trunk/t/stress/.gitignore
branches/include_dynpmc_makefile/t/tools/.gitignore
- copied unchanged from r45870, trunk/t/tools/.gitignore
branches/include_dynpmc_makefile/tools/dev/tapir.pir
- copied unchanged from r45870, trunk/tools/dev/tapir.pir
branches/include_dynpmc_makefile/tools/docs/book-to-latex.pl
- copied unchanged from r45870, trunk/tools/docs/book-to-latex.pl
branches/include_dynpmc_makefile/tools/docs/filename_and_chapter.pl
- copied unchanged from r45870, trunk/tools/docs/filename_and_chapter.pl
Replaced:
branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.desk.in.tar.gz
- copied unchanged from r45870, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz
branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.patch
- copied unchanged from r45870, trunk/ports/fedora/2.3.0/parrot.patch
branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.spec
- copied unchanged from r45870, trunk/ports/fedora/2.3.0/parrot.spec
branches/include_dynpmc_makefile/ports/suse/2.2.0/parrot.diff
- copied unchanged from r45870, trunk/ports/suse/2.2.0/parrot.diff
branches/include_dynpmc_makefile/ports/suse/2.2.0/parrot.spec
- copied unchanged from r45870, trunk/ports/suse/2.2.0/parrot.spec
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/ProfTest/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Matcher.nqp
- copied unchanged from r45870, trunk/runtime/parrot/library/ProfTest/Matcher.nqp
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/NQPProfile.nqp
- copied unchanged from r45870, trunk/runtime/parrot/library/ProfTest/NQPProfile.nqp
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/PIRProfile.nqp
- copied unchanged from r45870, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp
branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Want.nqp
- copied unchanged from r45870, trunk/runtime/parrot/library/ProfTest/Want.nqp
branches/include_dynpmc_makefile/runtime/parrot/library/TAP/.gitignore
- copied unchanged from r45870, trunk/runtime/parrot/library/TAP/.gitignore
branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Formatter.pir
- copied unchanged from r45870, trunk/runtime/parrot/library/TAP/Formatter.pir
branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Harness.pir
- copied unchanged from r45870, trunk/runtime/parrot/library/TAP/Harness.pir
branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Parser.pir
- copied unchanged from r45870, trunk/runtime/parrot/library/TAP/Parser.pir
branches/include_dynpmc_makefile/t/profiling/profiling.t
- copied unchanged from r45870, trunk/t/profiling/profiling.t
Deleted:
branches/include_dynpmc_makefile/config/auto/crypto/
branches/include_dynpmc_makefile/config/auto/crypto.pm
branches/include_dynpmc_makefile/config/auto/gdbm/
branches/include_dynpmc_makefile/config/auto/gdbm.pm
branches/include_dynpmc_makefile/config/gen/config_pm/config_lib_pasm.in
branches/include_dynpmc_makefile/config/gen/crypto/
branches/include_dynpmc_makefile/config/gen/crypto.pm
branches/include_dynpmc_makefile/config/gen/platform/platform_interface.h
branches/include_dynpmc_makefile/ports/fedora/parrot.patch
branches/include_dynpmc_makefile/ports/fedora/parrot.spec.fedora
branches/include_dynpmc_makefile/ports/suse/parrot.spec.suse
branches/include_dynpmc_makefile/src/dynpmc/gdbmhash.pmc
branches/include_dynpmc_makefile/src/pmc/retcontinuation.pmc
branches/include_dynpmc_makefile/t/dynpmc/gdbmhash.t
branches/include_dynpmc_makefile/t/pmc/retcontinuation.t
branches/include_dynpmc_makefile/t/steps/auto/crypto-01.t
branches/include_dynpmc_makefile/t/steps/auto/gdbm-01.t
Modified:
branches/include_dynpmc_makefile/ (props changed)
branches/include_dynpmc_makefile/CREDITS
branches/include_dynpmc_makefile/ChangeLog
branches/include_dynpmc_makefile/Configure.pl
branches/include_dynpmc_makefile/DEPRECATED.pod
branches/include_dynpmc_makefile/MANIFEST
branches/include_dynpmc_makefile/MANIFEST.SKIP
branches/include_dynpmc_makefile/MANIFEST.generated
branches/include_dynpmc_makefile/META.yml
branches/include_dynpmc_makefile/NEWS
branches/include_dynpmc_makefile/PBC_COMPAT
branches/include_dynpmc_makefile/README
branches/include_dynpmc_makefile/README_cygwin.pod
branches/include_dynpmc_makefile/README_win32.pod
branches/include_dynpmc_makefile/RESPONSIBLE_PARTIES
branches/include_dynpmc_makefile/VERSION
branches/include_dynpmc_makefile/compilers/data_json/Rules.mak (props changed)
branches/include_dynpmc_makefile/compilers/imcc/Rules.in (props changed)
branches/include_dynpmc_makefile/compilers/imcc/imcc.l
branches/include_dynpmc_makefile/compilers/imcc/imcc.y
branches/include_dynpmc_makefile/compilers/imcc/imclexer.c
branches/include_dynpmc_makefile/compilers/imcc/imcparser.c
branches/include_dynpmc_makefile/compilers/imcc/imcparser.h
branches/include_dynpmc_makefile/compilers/imcc/instructions.c
branches/include_dynpmc_makefile/compilers/imcc/main.c
branches/include_dynpmc_makefile/compilers/imcc/optimizer.c
branches/include_dynpmc_makefile/compilers/imcc/parser_util.c
branches/include_dynpmc_makefile/compilers/imcc/pbc.c
branches/include_dynpmc_makefile/compilers/imcc/pcc.c
branches/include_dynpmc_makefile/compilers/imcc/symreg.h
branches/include_dynpmc_makefile/compilers/imcc/unit.h
branches/include_dynpmc_makefile/compilers/json/Rules.mak (props changed)
branches/include_dynpmc_makefile/compilers/nqp/Rules.mak (props changed)
branches/include_dynpmc_makefile/compilers/pct/Rules.mak (props changed)
branches/include_dynpmc_makefile/compilers/pct/src/PCT/HLLCompiler.pir
branches/include_dynpmc_makefile/compilers/pct/src/POST/Node.pir
branches/include_dynpmc_makefile/compilers/pge/PGE/Exp.pir
branches/include_dynpmc_makefile/compilers/pge/PGE/Regex.pir
branches/include_dynpmc_makefile/compilers/pge/Rules.mak (props changed)
branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.c
branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.h
branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.c
branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.h
branches/include_dynpmc_makefile/compilers/pirc/src/pirlexer.h
branches/include_dynpmc_makefile/compilers/pirc/src/pirparser.c
branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.c
branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.h
branches/include_dynpmc_makefile/compilers/tge/Rules.mak (props changed)
branches/include_dynpmc_makefile/config/auto/arch.pm
branches/include_dynpmc_makefile/config/auto/attributes.pm
branches/include_dynpmc_makefile/config/auto/attributes/test_c.in
branches/include_dynpmc_makefile/config/auto/sizes/intval_maxmin_c.in (props changed)
branches/include_dynpmc_makefile/config/auto/warnings.pm
branches/include_dynpmc_makefile/config/gen/config_pm.pm
branches/include_dynpmc_makefile/config/gen/config_pm/config_pir.in
branches/include_dynpmc_makefile/config/gen/core_pmcs.pm
branches/include_dynpmc_makefile/config/gen/makefiles/docs.in
branches/include_dynpmc_makefile/config/gen/makefiles/root.in
branches/include_dynpmc_makefile/config/gen/opengl.pm
branches/include_dynpmc_makefile/config/gen/platform.pm
branches/include_dynpmc_makefile/config/gen/platform/ansi/dl.c
branches/include_dynpmc_makefile/config/gen/platform/generic/dl.c
branches/include_dynpmc_makefile/config/gen/platform/generic/env.c
branches/include_dynpmc_makefile/config/gen/platform/win32/dl.c
branches/include_dynpmc_makefile/config/init/defaults.pm
branches/include_dynpmc_makefile/config/init/hints/cygwin.pm
branches/include_dynpmc_makefile/config/init/hints/irix.pm
branches/include_dynpmc_makefile/config/inter/progs.pm
branches/include_dynpmc_makefile/docs/book/draft/README (props changed)
branches/include_dynpmc_makefile/docs/book/draft/appa_glossary.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/appb_patch_submission.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/appc_command_line_options.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/appd_build_options.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/appe_source_code.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch01_introduction.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch02_getting_started.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch07_dynpmcs.pod (contents, props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch08_dynops.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch10_opcode_reference.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch11_directive_reference.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/ch12_operator_reference.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/chXX_hlls.pod (contents, props changed)
branches/include_dynpmc_makefile/docs/book/draft/chXX_library.pod (props changed)
branches/include_dynpmc_makefile/docs/book/draft/chXX_testing_and_debugging.pod (props changed)
branches/include_dynpmc_makefile/docs/book/pct/ch01_introduction.pod (props changed)
branches/include_dynpmc_makefile/docs/book/pct/ch02_getting_started.pod (props changed)
branches/include_dynpmc_makefile/docs/book/pct/ch03_compiler_tools.pod (props changed)
branches/include_dynpmc_makefile/docs/book/pct/ch04_pge.pod (props changed)
branches/include_dynpmc_makefile/docs/book/pct/ch05_nqp.pod (props changed)
branches/include_dynpmc_makefile/docs/dev/c_functions.pod (props changed)
branches/include_dynpmc_makefile/docs/dev/infant.pod
branches/include_dynpmc_makefile/docs/dev/pccmethods.pod
branches/include_dynpmc_makefile/docs/dev/pmc_freeze.pod
branches/include_dynpmc_makefile/docs/dev/pmc_obj_design_meeting_notes.pod
branches/include_dynpmc_makefile/docs/embed.pod
branches/include_dynpmc_makefile/docs/intro.pod
branches/include_dynpmc_makefile/docs/parrothist.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd01_overview.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd05_opfunc.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd06_pasm.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd08_keys.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd10_embedding.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd11_extending.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd14_numbers.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd16_native_call.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd29_compiler_tools.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll.pod
branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll_interop.pod
branches/include_dynpmc_makefile/docs/pdds/pdd00_pdd.pod
branches/include_dynpmc_makefile/docs/pdds/pdd03_calling_conventions.pod
branches/include_dynpmc_makefile/docs/pdds/pdd07_codingstd.pod
branches/include_dynpmc_makefile/docs/pdds/pdd09_gc.pod
branches/include_dynpmc_makefile/docs/pdds/pdd15_objects.pod
branches/include_dynpmc_makefile/docs/pdds/pdd17_pmc.pod
branches/include_dynpmc_makefile/docs/pdds/pdd18_security.pod
branches/include_dynpmc_makefile/docs/pdds/pdd19_pir.pod
branches/include_dynpmc_makefile/docs/pdds/pdd20_lexical_vars.pod
branches/include_dynpmc_makefile/docs/pdds/pdd21_namespaces.pod
branches/include_dynpmc_makefile/docs/pdds/pdd22_io.pod
branches/include_dynpmc_makefile/docs/pdds/pdd23_exceptions.pod
branches/include_dynpmc_makefile/docs/pdds/pdd24_events.pod
branches/include_dynpmc_makefile/docs/pdds/pdd25_concurrency.pod
branches/include_dynpmc_makefile/docs/pdds/pdd26_ast.pod
branches/include_dynpmc_makefile/docs/pdds/pdd27_multiple_dispatch.pod
branches/include_dynpmc_makefile/docs/pdds/pdd28_strings.pod
branches/include_dynpmc_makefile/docs/pdds/pdd30_install.pod (contents, props changed)
branches/include_dynpmc_makefile/docs/pdds/pdd_template.pod
branches/include_dynpmc_makefile/docs/pmc.pod
branches/include_dynpmc_makefile/docs/pmc/documentation.pod
branches/include_dynpmc_makefile/docs/pmc2c.pod
branches/include_dynpmc_makefile/docs/project/release_manager_guide.pod
branches/include_dynpmc_makefile/docs/running.pod
branches/include_dynpmc_makefile/examples/embed/cotorra.c (props changed)
branches/include_dynpmc_makefile/examples/languages/abc/ (props changed)
branches/include_dynpmc_makefile/examples/languages/abc/setup.pir
branches/include_dynpmc_makefile/examples/languages/squaak/ (props changed)
branches/include_dynpmc_makefile/examples/pge/demo.pir (props changed)
branches/include_dynpmc_makefile/examples/pir/befunge/setup.pir
branches/include_dynpmc_makefile/examples/tutorial/56_defined.pir
branches/include_dynpmc_makefile/ext/Parrot-Embed/Build.PL
branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/Embed.xs
branches/include_dynpmc_makefile/ext/Parrot-Embed/t/interp.t
branches/include_dynpmc_makefile/ext/nqp-rx/Rules.mak (props changed)
branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/HLL-s0.pir
branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/NQP-s0.pir
branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/P6Regex-s0.pir
branches/include_dynpmc_makefile/include/parrot/ (props changed)
branches/include_dynpmc_makefile/include/parrot/call.h (contents, props changed)
branches/include_dynpmc_makefile/include/parrot/charset.h
branches/include_dynpmc_makefile/include/parrot/compiler.h
branches/include_dynpmc_makefile/include/parrot/context.h
branches/include_dynpmc_makefile/include/parrot/dynext.h
branches/include_dynpmc_makefile/include/parrot/embed.h
branches/include_dynpmc_makefile/include/parrot/encoding.h
branches/include_dynpmc_makefile/include/parrot/exceptions.h
branches/include_dynpmc_makefile/include/parrot/exit.h
branches/include_dynpmc_makefile/include/parrot/extend.h
branches/include_dynpmc_makefile/include/parrot/gc_api.h (contents, props changed)
branches/include_dynpmc_makefile/include/parrot/global_setup.h
branches/include_dynpmc_makefile/include/parrot/hash.h
branches/include_dynpmc_makefile/include/parrot/imcc.h
branches/include_dynpmc_makefile/include/parrot/interpreter.h
branches/include_dynpmc_makefile/include/parrot/io.h
branches/include_dynpmc_makefile/include/parrot/io_unix.h
branches/include_dynpmc_makefile/include/parrot/key.h
branches/include_dynpmc_makefile/include/parrot/misc.h
branches/include_dynpmc_makefile/include/parrot/nci.h
branches/include_dynpmc_makefile/include/parrot/oo.h
branches/include_dynpmc_makefile/include/parrot/packfile.h
branches/include_dynpmc_makefile/include/parrot/pmc.h
branches/include_dynpmc_makefile/include/parrot/runcore_api.h (contents, props changed)
branches/include_dynpmc_makefile/include/parrot/runcore_profiling.h (props changed)
branches/include_dynpmc_makefile/include/parrot/runcore_trace.h (props changed)
branches/include_dynpmc_makefile/include/parrot/string_funcs.h
branches/include_dynpmc_makefile/include/parrot/string_primitives.h
branches/include_dynpmc_makefile/include/parrot/sub.h
branches/include_dynpmc_makefile/include/parrot/thread.h
branches/include_dynpmc_makefile/include/parrot/vtables.h
branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Conf.pm
branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Test/Prepare.pm
branches/include_dynpmc_makefile/lib/Parrot/Configure/Step/List.pm
branches/include_dynpmc_makefile/lib/Parrot/Configure/Step/Test.pm (props changed)
branches/include_dynpmc_makefile/lib/Parrot/Distribution.pm
branches/include_dynpmc_makefile/lib/Parrot/H2inc.pm (contents, props changed)
branches/include_dynpmc_makefile/lib/Parrot/Harness/DefaultTests.pm
branches/include_dynpmc_makefile/lib/Parrot/Harness/Smoke.pm
branches/include_dynpmc_makefile/lib/Parrot/Headerizer.pm
branches/include_dynpmc_makefile/lib/Parrot/Manifest.pm
branches/include_dynpmc_makefile/lib/Parrot/OpTrans/C.pm
branches/include_dynpmc_makefile/lib/Parrot/Ops2c/Utils.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Attribute.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Dumper.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Emitter.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Library.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/MethodEmitter.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Object.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PCCMETHOD.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Null.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Object.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/ParrotClass.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/default.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMCEmitter.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Parser.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Pmc2cMain.pm
branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/UtilFunctions.pm
branches/include_dynpmc_makefile/lib/Parrot/Vtable.pm
branches/include_dynpmc_makefile/ports/cpan/pause_guide.pod (props changed)
branches/include_dynpmc_makefile/ports/cygwin/parrot-1.0.0-1.cygport (props changed)
branches/include_dynpmc_makefile/ports/debian/control.in
branches/include_dynpmc_makefile/ports/debian/libparrot-dev.install.in (props changed)
branches/include_dynpmc_makefile/ports/debian/libparrot.install.in (props changed)
branches/include_dynpmc_makefile/ports/debian/parrot-doc.install.in (props changed)
branches/include_dynpmc_makefile/ports/debian/parrot.install.in (props changed)
branches/include_dynpmc_makefile/ports/mandriva/parrot.spec.mandriva (props changed)
branches/include_dynpmc_makefile/ports/ubuntu/control.in
branches/include_dynpmc_makefile/runtime/parrot/languages/ (props changed)
branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/Obj.pir
branches/include_dynpmc_makefile/runtime/parrot/library/HTTP/Daemon.pir
branches/include_dynpmc_makefile/runtime/parrot/library/Math/Rand.pir (props changed)
branches/include_dynpmc_makefile/runtime/parrot/library/P6object.pir
branches/include_dynpmc_makefile/runtime/parrot/library/Rules.mak (props changed)
branches/include_dynpmc_makefile/runtime/parrot/library/Stream/Base.pir
branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/Test.pir
branches/include_dynpmc_makefile/runtime/parrot/library/distutils.pir
branches/include_dynpmc_makefile/runtime/parrot/library/pcore.pir
branches/include_dynpmc_makefile/src/byteorder.c
branches/include_dynpmc_makefile/src/call/args.c
branches/include_dynpmc_makefile/src/call/context.c
branches/include_dynpmc_makefile/src/call/context_accessors.c
branches/include_dynpmc_makefile/src/call/ops.c (contents, props changed)
branches/include_dynpmc_makefile/src/call/pcc.c (contents, props changed)
branches/include_dynpmc_makefile/src/debug.c
branches/include_dynpmc_makefile/src/dynext.c
branches/include_dynpmc_makefile/src/dynpmc/rational.pmc
branches/include_dynpmc_makefile/src/embed.c
branches/include_dynpmc_makefile/src/exceptions.c
branches/include_dynpmc_makefile/src/exit.c
branches/include_dynpmc_makefile/src/extend.c
branches/include_dynpmc_makefile/src/gc/alloc_memory.c (props changed)
branches/include_dynpmc_makefile/src/gc/alloc_resources.c (contents, props changed)
branches/include_dynpmc_makefile/src/gc/api.c (contents, props changed)
branches/include_dynpmc_makefile/src/gc/gc_inf.c
branches/include_dynpmc_makefile/src/gc/gc_ms.c
branches/include_dynpmc_makefile/src/gc/gc_private.h
branches/include_dynpmc_makefile/src/gc/malloc.c (props changed)
branches/include_dynpmc_makefile/src/gc/malloc_trace.c (props changed)
branches/include_dynpmc_makefile/src/gc/mark_sweep.c (contents, props changed)
branches/include_dynpmc_makefile/src/gc/system.c (contents, props changed)
branches/include_dynpmc_makefile/src/global.c
branches/include_dynpmc_makefile/src/global_setup.c
branches/include_dynpmc_makefile/src/hash.c
branches/include_dynpmc_makefile/src/hll.c
branches/include_dynpmc_makefile/src/interp/inter_cb.c (props changed)
branches/include_dynpmc_makefile/src/interp/inter_create.c (contents, props changed)
branches/include_dynpmc_makefile/src/interp/inter_misc.c (contents, props changed)
branches/include_dynpmc_makefile/src/io/api.c
branches/include_dynpmc_makefile/src/io/buffer.c
branches/include_dynpmc_makefile/src/io/filehandle.c
branches/include_dynpmc_makefile/src/io/unix.c
branches/include_dynpmc_makefile/src/io/utf8.c
branches/include_dynpmc_makefile/src/io/win32.c
branches/include_dynpmc_makefile/src/key.c
branches/include_dynpmc_makefile/src/library.c
branches/include_dynpmc_makefile/src/main.c
branches/include_dynpmc_makefile/src/misc.c
branches/include_dynpmc_makefile/src/multidispatch.c
branches/include_dynpmc_makefile/src/nci/api.c
branches/include_dynpmc_makefile/src/nci/core_thunks.c
branches/include_dynpmc_makefile/src/nci/extra_thunks.c
branches/include_dynpmc_makefile/src/oo.c
branches/include_dynpmc_makefile/src/ops/bit.ops
branches/include_dynpmc_makefile/src/ops/cmp.ops
branches/include_dynpmc_makefile/src/ops/core.ops
branches/include_dynpmc_makefile/src/ops/object.ops
branches/include_dynpmc_makefile/src/ops/ops.num
branches/include_dynpmc_makefile/src/ops/pmc.ops
branches/include_dynpmc_makefile/src/ops/set.ops
branches/include_dynpmc_makefile/src/ops/string.ops
branches/include_dynpmc_makefile/src/ops/var.ops
branches/include_dynpmc_makefile/src/packdump.c
branches/include_dynpmc_makefile/src/packfile.c
branches/include_dynpmc_makefile/src/packfile/pf_items.c
branches/include_dynpmc_makefile/src/parrot_debugger.c
branches/include_dynpmc_makefile/src/pbc_dump.c
branches/include_dynpmc_makefile/src/pbc_merge.c
branches/include_dynpmc_makefile/src/pmc.c
branches/include_dynpmc_makefile/src/pmc/addrregistry.pmc
branches/include_dynpmc_makefile/src/pmc/arrayiterator.pmc
branches/include_dynpmc_makefile/src/pmc/bigint.pmc
branches/include_dynpmc_makefile/src/pmc/bignum.pmc
branches/include_dynpmc_makefile/src/pmc/boolean.pmc
branches/include_dynpmc_makefile/src/pmc/callcontext.pmc
branches/include_dynpmc_makefile/src/pmc/capture.pmc
branches/include_dynpmc_makefile/src/pmc/class.pmc
branches/include_dynpmc_makefile/src/pmc/codestring.pmc
branches/include_dynpmc_makefile/src/pmc/complex.pmc
branches/include_dynpmc_makefile/src/pmc/continuation.pmc
branches/include_dynpmc_makefile/src/pmc/coroutine.pmc
branches/include_dynpmc_makefile/src/pmc/default.pmc
branches/include_dynpmc_makefile/src/pmc/env.pmc
branches/include_dynpmc_makefile/src/pmc/eval.pmc
branches/include_dynpmc_makefile/src/pmc/eventhandler.pmc
branches/include_dynpmc_makefile/src/pmc/exception.pmc
branches/include_dynpmc_makefile/src/pmc/exceptionhandler.pmc
branches/include_dynpmc_makefile/src/pmc/exporter.pmc
branches/include_dynpmc_makefile/src/pmc/file.pmc
branches/include_dynpmc_makefile/src/pmc/filehandle.pmc
branches/include_dynpmc_makefile/src/pmc/fixedbooleanarray.pmc
branches/include_dynpmc_makefile/src/pmc/fixedfloatarray.pmc
branches/include_dynpmc_makefile/src/pmc/fixedintegerarray.pmc
branches/include_dynpmc_makefile/src/pmc/fixedpmcarray.pmc
branches/include_dynpmc_makefile/src/pmc/fixedstringarray.pmc
branches/include_dynpmc_makefile/src/pmc/float.pmc
branches/include_dynpmc_makefile/src/pmc/handle.pmc
branches/include_dynpmc_makefile/src/pmc/hash.pmc
branches/include_dynpmc_makefile/src/pmc/hashiterator.pmc
branches/include_dynpmc_makefile/src/pmc/hashiteratorkey.pmc
branches/include_dynpmc_makefile/src/pmc/imageio.pmc
branches/include_dynpmc_makefile/src/pmc/imageiosize.pmc
branches/include_dynpmc_makefile/src/pmc/integer.pmc
branches/include_dynpmc_makefile/src/pmc/iterator.pmc
branches/include_dynpmc_makefile/src/pmc/key.pmc
branches/include_dynpmc_makefile/src/pmc/lexinfo.pmc
branches/include_dynpmc_makefile/src/pmc/lexpad.pmc
branches/include_dynpmc_makefile/src/pmc/managedstruct.pmc
branches/include_dynpmc_makefile/src/pmc/multisub.pmc
branches/include_dynpmc_makefile/src/pmc/namespace.pmc
branches/include_dynpmc_makefile/src/pmc/nci.pmc
branches/include_dynpmc_makefile/src/pmc/null.pmc
branches/include_dynpmc_makefile/src/pmc/object.pmc
branches/include_dynpmc_makefile/src/pmc/opcode.pmc
branches/include_dynpmc_makefile/src/pmc/oplib.pmc
branches/include_dynpmc_makefile/src/pmc/orderedhash.pmc
branches/include_dynpmc_makefile/src/pmc/orderedhashiterator.pmc
branches/include_dynpmc_makefile/src/pmc/os.pmc
branches/include_dynpmc_makefile/src/pmc/packfile.pmc
branches/include_dynpmc_makefile/src/pmc/packfileannotation.pmc
branches/include_dynpmc_makefile/src/pmc/packfileannotations.pmc
branches/include_dynpmc_makefile/src/pmc/packfileconstanttable.pmc
branches/include_dynpmc_makefile/src/pmc/packfiledirectory.pmc
branches/include_dynpmc_makefile/src/pmc/packfilefixupentry.pmc
branches/include_dynpmc_makefile/src/pmc/packfilefixuptable.pmc
branches/include_dynpmc_makefile/src/pmc/packfilerawsegment.pmc
branches/include_dynpmc_makefile/src/pmc/packfilesegment.pmc
branches/include_dynpmc_makefile/src/pmc/parrotinterpreter.pmc
branches/include_dynpmc_makefile/src/pmc/parrotlibrary.pmc
branches/include_dynpmc_makefile/src/pmc/parrotrunningthread.pmc
branches/include_dynpmc_makefile/src/pmc/parrotthread.pmc
branches/include_dynpmc_makefile/src/pmc/pmcproxy.pmc
branches/include_dynpmc_makefile/src/pmc/pointer.pmc
branches/include_dynpmc_makefile/src/pmc/resizablebooleanarray.pmc
branches/include_dynpmc_makefile/src/pmc/resizablefloatarray.pmc
branches/include_dynpmc_makefile/src/pmc/resizableintegerarray.pmc
branches/include_dynpmc_makefile/src/pmc/resizablepmcarray.pmc
branches/include_dynpmc_makefile/src/pmc/resizablestringarray.pmc
branches/include_dynpmc_makefile/src/pmc/role.pmc
branches/include_dynpmc_makefile/src/pmc/scalar.pmc
branches/include_dynpmc_makefile/src/pmc/scheduler.pmc
branches/include_dynpmc_makefile/src/pmc/schedulermessage.pmc
branches/include_dynpmc_makefile/src/pmc/sockaddr.pmc
branches/include_dynpmc_makefile/src/pmc/socket.pmc
branches/include_dynpmc_makefile/src/pmc/string.pmc
branches/include_dynpmc_makefile/src/pmc/stringhandle.pmc
branches/include_dynpmc_makefile/src/pmc/stringiterator.pmc
branches/include_dynpmc_makefile/src/pmc/sub.pmc
branches/include_dynpmc_makefile/src/pmc/task.pmc
branches/include_dynpmc_makefile/src/pmc/timer.pmc
branches/include_dynpmc_makefile/src/pmc/undef.pmc
branches/include_dynpmc_makefile/src/pmc/unmanagedstruct.pmc
branches/include_dynpmc_makefile/src/pmc_freeze.c
branches/include_dynpmc_makefile/src/runcore/cores.c (contents, props changed)
branches/include_dynpmc_makefile/src/runcore/main.c (contents, props changed)
branches/include_dynpmc_makefile/src/runcore/profiling.c (contents, props changed)
branches/include_dynpmc_makefile/src/runcore/trace.c (contents, props changed)
branches/include_dynpmc_makefile/src/scheduler.c
branches/include_dynpmc_makefile/src/spf_render.c
branches/include_dynpmc_makefile/src/spf_vtable.c
branches/include_dynpmc_makefile/src/string/api.c
branches/include_dynpmc_makefile/src/string/charset.c
branches/include_dynpmc_makefile/src/string/charset/ascii.c
branches/include_dynpmc_makefile/src/string/charset/ascii.h
branches/include_dynpmc_makefile/src/string/charset/binary.c
branches/include_dynpmc_makefile/src/string/charset/binary.h
branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.c
branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.h
branches/include_dynpmc_makefile/src/string/charset/unicode.c
branches/include_dynpmc_makefile/src/string/charset/unicode.h
branches/include_dynpmc_makefile/src/string/encoding.c
branches/include_dynpmc_makefile/src/string/encoding/fixed_8.c
branches/include_dynpmc_makefile/src/string/encoding/fixed_8.h
branches/include_dynpmc_makefile/src/string/encoding/ucs2.c
branches/include_dynpmc_makefile/src/string/encoding/ucs2.h
branches/include_dynpmc_makefile/src/string/encoding/utf16.c
branches/include_dynpmc_makefile/src/string/encoding/utf16.h
branches/include_dynpmc_makefile/src/string/encoding/utf8.c
branches/include_dynpmc_makefile/src/string/encoding/utf8.h
branches/include_dynpmc_makefile/src/string/primitives.c
branches/include_dynpmc_makefile/src/sub.c
branches/include_dynpmc_makefile/src/thread.c
branches/include_dynpmc_makefile/src/utils.c
branches/include_dynpmc_makefile/src/vtables.c
branches/include_dynpmc_makefile/t/codingstd/c_function_docs.t
branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/optc.t
branches/include_dynpmc_makefile/t/compilers/imcc/syn/file.t
branches/include_dynpmc_makefile/t/compilers/imcc/syn/regressions.t
branches/include_dynpmc_makefile/t/compilers/imcc/syn/subflags.t
branches/include_dynpmc_makefile/t/compilers/imcc/syn/tail.t
branches/include_dynpmc_makefile/t/compilers/tge/NoneGrammar.tg (props changed)
branches/include_dynpmc_makefile/t/distro/file_metadata.t
branches/include_dynpmc_makefile/t/dynpmc/rational.t
branches/include_dynpmc_makefile/t/dynpmc/rotest.t
branches/include_dynpmc_makefile/t/examples/tutorial.t
branches/include_dynpmc_makefile/t/harness
branches/include_dynpmc_makefile/t/library/getopt_obj.t
branches/include_dynpmc_makefile/t/library/p6object.t
branches/include_dynpmc_makefile/t/library/test_builder_tester.t
branches/include_dynpmc_makefile/t/library/test_more.t
branches/include_dynpmc_makefile/t/native_pbc/annotations.pbc
branches/include_dynpmc_makefile/t/native_pbc/integer_1.pbc
branches/include_dynpmc_makefile/t/native_pbc/number_1.pbc
branches/include_dynpmc_makefile/t/native_pbc/string_1.pbc
branches/include_dynpmc_makefile/t/oo/composition.t
branches/include_dynpmc_makefile/t/oo/mro-c3.t
branches/include_dynpmc_makefile/t/oo/proxy.t
branches/include_dynpmc_makefile/t/oo/root_new.t (props changed)
branches/include_dynpmc_makefile/t/op/calling.t
branches/include_dynpmc_makefile/t/op/exceptions.t
branches/include_dynpmc_makefile/t/op/gc.t
branches/include_dynpmc_makefile/t/op/interp.t
branches/include_dynpmc_makefile/t/op/string.t
branches/include_dynpmc_makefile/t/op/vivify.t
branches/include_dynpmc_makefile/t/pmc/callcontext.t
branches/include_dynpmc_makefile/t/pmc/class.t
branches/include_dynpmc_makefile/t/pmc/context.t
branches/include_dynpmc_makefile/t/pmc/continuation.t
branches/include_dynpmc_makefile/t/pmc/eval.t
branches/include_dynpmc_makefile/t/pmc/exception-old.t
branches/include_dynpmc_makefile/t/pmc/fixedpmcarray.t
branches/include_dynpmc_makefile/t/pmc/freeze.t
branches/include_dynpmc_makefile/t/pmc/handle.t
branches/include_dynpmc_makefile/t/pmc/multidispatch.t
branches/include_dynpmc_makefile/t/pmc/namespace-old.t (contents, props changed)
branches/include_dynpmc_makefile/t/pmc/nci.t
branches/include_dynpmc_makefile/t/pmc/objects.t
branches/include_dynpmc_makefile/t/pmc/parrotobject.t
branches/include_dynpmc_makefile/t/pmc/pmcproxy.t
branches/include_dynpmc_makefile/t/pmc/ro.t
branches/include_dynpmc_makefile/t/pmc/string.t
branches/include_dynpmc_makefile/t/pmc/threads.t
branches/include_dynpmc_makefile/t/src/basic.t
branches/include_dynpmc_makefile/t/src/embed.t (contents, props changed)
branches/include_dynpmc_makefile/t/src/extend.t
branches/include_dynpmc_makefile/t/src/warnings.t
branches/include_dynpmc_makefile/t/steps/auto/arch-01.t
branches/include_dynpmc_makefile/t/steps/gen/platform-01.t
branches/include_dynpmc_makefile/t/steps/init/defaults-01.t
branches/include_dynpmc_makefile/t/steps/init/hints/linux-01.t (props changed)
branches/include_dynpmc_makefile/t/steps/inter/progs-04.t
branches/include_dynpmc_makefile/tools/build/h2inc.pl (props changed)
branches/include_dynpmc_makefile/tools/build/headerizer.pl
branches/include_dynpmc_makefile/tools/dev/fetch_languages.pl (props changed)
branches/include_dynpmc_makefile/tools/dev/mk_gitignore.pl (props changed)
branches/include_dynpmc_makefile/tools/dev/mk_inno.pl
branches/include_dynpmc_makefile/tools/dev/mk_manifest_and_skip.pl
branches/include_dynpmc_makefile/tools/dev/nci_thunk_gen.pir
branches/include_dynpmc_makefile/tools/dev/pbc_to_exe.pir
branches/include_dynpmc_makefile/tools/util/perlcritic-cage.conf (props changed)
branches/include_dynpmc_makefile/tools/util/release.json
Copied: branches/include_dynpmc_makefile/.gitignore (from r45870, trunk/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/.gitignore)
@@ -0,0 +1,72 @@
+/*.patch
+/*.tmp
+/*.vcproj*
+/*.sln
+/*.ncb
+/*.suo
+/*.sto
+/CFLAGS
+/MANIFEST.configure.generated
+/Makefile
+/TAGS
+/all_cstring.str
+/blib
+/config_lib.pir
+/install_config.fpmc
+/libparrot.def
+/libparrot.dll
+/miniparrot
+/myconfig
+/parrot
+/parrot_config
+/parrot_config.c
+/parrot_config.pbc
+/parrot_nci_thunk_gen
+/parrot_nci_thunk_gen.c
+/parrot_nci_thunk_gen.pbc
+/parrot-nqp
+/parrot-nqp.c
+/parrot-nqp.pbc
+/parrot.ilk
+/parrot.pdb
+/parrot.pc
+/parrot_test_run.tar.gz
+/pbc_disassemble
+/pbc_info
+/pbc_merge
+/pbc_dump
+/tags
+/temp.file
+/test
+/test.c
+/test.cco
+/test.err
+/test.ilk
+/test.ldo
+/test.out
+/test.pdb
+/vc60.pdb
+/vc70.pdb
+/vtable.dump
+/installable*
+/*.exe
+/*.core
+/*.pdb
+/*.ilk
+/*.def
+/*.lib
+/*.obj
+/*.o
+/*.exp
+/*.manifest
+/parrot.iss
+/cover_db
+/pbc_to_exe
+/pbc_to_exe.*
+/perl6
+/.parrot_current_rev
+/.git
+/parrot_debugger
+/pirc
+/tapir
+/tapir.*
Modified: branches/include_dynpmc_makefile/CREDITS
==============================================================================
--- branches/include_dynpmc_makefile/CREDITS Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/CREDITS Wed Apr 21 23:40:50 2010 (r45876)
@@ -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.
Modified: branches/include_dynpmc_makefile/ChangeLog
==============================================================================
--- branches/include_dynpmc_makefile/ChangeLog Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ChangeLog Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,9 @@
#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.
Modified: branches/include_dynpmc_makefile/Configure.pl
==============================================================================
--- branches/include_dynpmc_makefile/Configure.pl Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/Configure.pl Wed Apr 21 23:40:50 2010 (r45876)
@@ -632,10 +632,8 @@
auto::env
auto::gmp
auto::readline
- auto::gdbm
auto::pcre
auto::opengl
- auto::crypto
auto::gettext
auto::snprintf
# auto::perldoc
@@ -644,7 +642,6 @@
auto::icu
gen::config_h
gen::core_pmcs
- gen::crypto
gen::opengl
gen::makefiles
gen::platform
Modified: branches/include_dynpmc_makefile/DEPRECATED.pod
==============================================================================
--- branches/include_dynpmc_makefile/DEPRECATED.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/DEPRECATED.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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]>.
@@ -66,21 +66,64 @@
L<https://trac.parrot.org/parrot/ticket/103>
-=item Digest dynpmcs [eligible in 2.4]
+=item NCI without signature ("raw" pointers) [eligible in 2.4]
-The digest dynpmcs are, since the posting of this notice, available on
-http://gitorious.org/digest-dynpmcs and will no longer be distributed
-with parrot after 2.3.
+No equivalent functionality is promised. You shouldn't be using this. Here be
+segfaults.
-L<https://trac.parrot.org/parrot/ticket/1467>
+L<https://trac.parrot.org/parrot/ticket/1549>
-=item gdbmhash dynpmc [eligible in 2.4]
+=item UnManagedStruct handling nested structure [eligible in 2.4]
-The gdbmhash dynpmc is, since the posting of this notice, available on
-http://gitorious.org/dbm-dynpmcs and will no longer be distributed
-with parrot after 2.3.
+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/1469>
+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.
+
+L<https://trac.parrot.org/parrot/ticket/1554>
+
+=item Auto-vivification of nested aggregates [eligible in 2.4]
+
+Auto-vivifation of nested aggregated is deprecated.
+
+E.g.
+
+ $P0 = new ['Hash']
+ $S1 = $P0['foo';'bar';'baz']
+
+will not auto-vivify nested hashes and return PMCNULL early.
+
+L<https://trac.parrot.org/parrot/ticket/1561>
+
+=item PMC must use manual_attrs or auto_attrs flag [eligible in 2.4]
+
+PMCs must no longer use default value for manual/auto attribute allocation,
+manual_attrs or auto_attrs must be specified.
+
+L<http://trac.parrot.org/parrot/ticket/1506>
=back
@@ -122,10 +165,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 +174,74 @@
Ability to get the string name of the current GC core from the interpinfo_s_i.
See r43900 and r43904 for details.
+=item NCI_FB_CB and NCI_FB_UD in iglobals [experimental]
+
+Hooks allowing a runtime-loadable dynamic frame builder.
+
+=item loadlib_p_s_p [experimental]
+
+Ability to use non-default dynamic loading behaviour.
+
+=item pushaction, pushmark, popmark [eligible in 2.4]
+
+L<https://trac.parrot.org/parrot/ticket/876>
+
+=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 substr_s_i_i_s [eligible in 2.4]
+
+This op will be replaced with replace_s_s_i_i_s op to clearly indicate
+semantic. Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
+=item substr_s_s_i_i_s [eligible in 2.4]
+
+This op is deprecated. Use replace_s_s_i_i_s or substr_s_s_i_i (or both)
+instead. Part of COW removal.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
+=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 Runcores
+
+=over 4
+
+=item Unused Runcores [eligible in 2.4]
+
+The following Runcores do not appear to be used. Accordingly they will
+be eligible for removal.
+
+CGoto
+CGP
+Switch
+
+L<https://trac.parrot.org/parrot/ticket/1563>
+
=back
=head1 Bytecode
@@ -185,14 +292,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
@@ -222,6 +321,31 @@
rename Parrot_string_cstring to Parrot_str_cstring
+=item STRING COW [eligible in 2.4]
+
+COW strings are to be removed. All "inplace" string modification
+functions and all "inplace" string ops are deprecated.
+
+L<https://trac.parrot.org/parrot/ticket/1540>
+
+=item Parrot_PMC_* in src/extend.c [eligible in 2.4]
+
+These are duplicates of functions in src/extend_vtable.c. Exceptions:
+
+ Parrot_PMC_new
+ Parrot_PMC_typenum
+ Parrot_PMC_null
+ Parrot_PMC_set_vtable
+ Parrot_PMC_newclass
+
+=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.
+
=back
=head1 Compiler tools
@@ -327,7 +451,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/include_dynpmc_makefile/MANIFEST
==============================================================================
--- branches/include_dynpmc_makefile/MANIFEST Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/MANIFEST Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Fri Mar 19 12:06:56 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 21 09:32:21 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -235,8 +235,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 []
@@ -250,8 +248,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 []
@@ -309,15 +305,13 @@
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 []
@@ -359,7 +353,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 []
@@ -1043,6 +1036,7 @@
include/parrot/oplib.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
@@ -1238,6 +1232,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]
@@ -1267,6 +1265,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]
@@ -1285,6 +1286,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]
@@ -1310,19 +1312,16 @@
src/dynoplibs/Rules.in []
src/dynoplibs/math.ops []
src/dynoplibs/obscure.ops []
-src/dynpmc/Defines.in []
src/dynpmc/README.pod []doc
-src/dynpmc/Rules.in []
-src/dynpmc/dynlexpad.pmc [devel]src
+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/foo.pmc []
+src/dynpmc/foo2.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/pccmethod_test.pmc []
+src/dynpmc/rational.pmc []
+src/dynpmc/rotest.pmc []
+src/dynpmc/subproxy.pmc []
src/embed.c []
src/exceptions.c []
src/exit.c []
@@ -1396,91 +1395,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/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/file.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/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/os.pmc []
+src/pmc/packfile.pmc []
+src/pmc/packfileannotation.pmc []
+src/pmc/packfileannotations.pmc []
+src/pmc/packfileconstanttable.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/parrotrunningthread.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/timer.pmc []
+src/pmc/undef.pmc []
+src/pmc/unmanagedstruct.pmc []
src/pmc_freeze.c []
src/runcore/cores.c []
src/runcore/main.c []
@@ -1695,7 +1693,6 @@
t/dynpmc/dynlexpad.t [test]
t/dynpmc/foo.t [test]
t/dynpmc/foo2.t [test]
-t/dynpmc/gdbmhash.t [test]
t/dynpmc/pccmethod_test.t [test]
t/dynpmc/rational.t [test]
t/dynpmc/rotest.t [test]
@@ -1714,6 +1711,7 @@
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/cgi_query_hash.t [test]
t/library/configure.t [test]
@@ -1724,6 +1722,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]
@@ -1734,6 +1733,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]
@@ -1910,6 +1910,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]
@@ -1947,7 +1948,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]
@@ -1971,6 +1971,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]
@@ -1987,14 +1988,12 @@
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]
@@ -2190,10 +2189,13 @@
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/book-to-latex.pl []
+tools/docs/filename_and_chapter.pl []
tools/docs/mk_chm.pl []
tools/docs/ops_summary.pl []
tools/docs/write_docs.pl []
Modified: branches/include_dynpmc_makefile/MANIFEST.SKIP
==============================================================================
--- branches/include_dynpmc_makefile/MANIFEST.SKIP Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/MANIFEST.SKIP Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 Wed Apr 21 10:28:38 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$
@@ -464,6 +468,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$
@@ -599,12 +605,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/
Modified: branches/include_dynpmc_makefile/MANIFEST.generated
==============================================================================
--- branches/include_dynpmc_makefile/MANIFEST.generated Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/MANIFEST.generated Wed Apr 21 23:40:50 2010 (r45876)
@@ -2,10 +2,10 @@
# See tools/dev/install_files.pl for documentation on the
# format of this file.
# Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.2.2.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.2.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]
@@ -44,7 +44,6 @@
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 +66,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
@@ -118,6 +119,7 @@
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]
@@ -172,6 +174,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]
@@ -204,6 +207,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]
Modified: branches/include_dynpmc_makefile/META.yml
==============================================================================
--- branches/include_dynpmc_makefile/META.yml Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/META.yml Wed Apr 21 23:40:50 2010 (r45876)
@@ -4,7 +4,7 @@
# See http://module-build.sourceforge.net/META-spec-current.html for details.
---
name: parrot
-version: 2.2.0
+version: 2.3.0
author: parrot-dev at lists.parrot.org
abstract: a virtual machine designed for dynamic languages
license: artistic2
Modified: branches/include_dynpmc_makefile/NEWS
==============================================================================
--- branches/include_dynpmc_makefile/NEWS Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/NEWS Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,18 +1,25 @@
# $Id$
New in 2.3.0
-- Features
- Core
-- Compilers
-- Deprecations
-- API
+ + 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
-- Bugfix
-- Tests
+ + Cygwin packages will be updated again with Parrot releases
+ + Fedora packages add desktop files
+ + gzip and bzip2 compressed tar files for releases
- Tools
-- Documentation
+ + 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
Modified: branches/include_dynpmc_makefile/PBC_COMPAT
==============================================================================
--- branches/include_dynpmc_makefile/PBC_COMPAT Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/PBC_COMPAT Wed Apr 21 23:40:50 2010 (r45876)
@@ -27,6 +27,8 @@
# please insert tab separated entries at the top of the list
+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/include_dynpmc_makefile/README
==============================================================================
--- branches/include_dynpmc_makefile/README Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/README Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.2.0
+This is Parrot, version 2.3.0
------------------------------
Parrot is Copyright (C) 2001-2010, Parrot Foundation.
Modified: branches/include_dynpmc_makefile/README_cygwin.pod
==============================================================================
--- branches/include_dynpmc_makefile/README_cygwin.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/README_cygwin.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/README_win32.pod
==============================================================================
--- branches/include_dynpmc_makefile/README_win32.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/README_win32.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/RESPONSIBLE_PARTIES
==============================================================================
--- branches/include_dynpmc_makefile/RESPONSIBLE_PARTIES Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/RESPONSIBLE_PARTIES Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/VERSION
==============================================================================
--- branches/include_dynpmc_makefile/VERSION Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/VERSION Wed Apr 21 23:40:50 2010 (r45876)
@@ -1 +1 @@
-2.2.0
+2.3.0
Copied: branches/include_dynpmc_makefile/compilers/data_json/.gitignore (from r45870, trunk/compilers/data_json/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/data_json/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/data_json/.gitignore)
@@ -0,0 +1 @@
+/data_json.pbc
Copied: branches/include_dynpmc_makefile/compilers/data_json/data_json/.gitignore (from r45870, trunk/compilers/data_json/data_json/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/data_json/data_json/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/data_json/data_json/.gitignore)
@@ -0,0 +1,2 @@
+/*.pir
+/*.pbc
Copied: branches/include_dynpmc_makefile/compilers/imcc/.gitignore (from r45870, trunk/compilers/imcc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/imcc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/imcc/.gitignore)
@@ -0,0 +1,10 @@
+/*.flag
+/*.o
+/*.tmp
+/imcc
+/imclexer.c
+/imcparser.c
+/imcparser.h
+/imcparser.output
+/*.obj
+/Rules.mak
Modified: branches/include_dynpmc_makefile/compilers/imcc/imcc.l
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/imcc.l Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/imcc.l Wed Apr 21 23:40:50 2010 (r45876)
@@ -87,6 +87,8 @@
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')
@@ -133,7 +135,7 @@
STRINGCONSTANT {SQ_STRING}|{DQ_STRING}
SQ_STRING \'[^'\n]*\'
RANKSPEC \[[,]*\]
-EOL \r?\n
+EOL \r?\n
WS [\t\f\r\x1a ]
SP [ ]
@@ -167,7 +169,10 @@
return 0;
}
+<*>^{WS}* { IMCC_INFO(interp)->line++; }
+
<heredoc1>.*{EOL} {
+ IMCC_INFO(interp)->line++;
IMCC_INFO(interp)->frames->heredoc_rest = mem_sys_strdup(yytext);
BEGIN(heredoc2);
}
@@ -177,7 +182,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 +191,7 @@
}
<heredoc2>.* {
+ IMCC_INFO(interp)->line++;
/* Are we at the end of the heredoc? */
if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
/* End of the heredoc. */
@@ -209,7 +214,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;
}
@@ -252,7 +257,6 @@
<cmt4>.*{EOL} {
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
<INITIAL,emit>{EOL} {
@@ -260,7 +264,6 @@
BEGIN(INITIAL);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
@@ -276,7 +279,6 @@
yy_pop_state(yyscanner);
IMCC_INFO(interp)->expect_pasm = 0;
- IMCC_INFO(interp)->line++;
return '\n';
}
@@ -288,19 +290,20 @@
}
<INITIAL,emit,macro>^"=" {
+ IMCC_INFO(interp)->line++;
IMCC_INFO(interp)->in_pod = 1;
yy_push_state(pod, yyscanner);
}
<pod>^"=cut"{EOL} {
+ IMCC_INFO(interp)->line++;
IMCC_INFO(interp)->in_pod = 0;
yy_pop_state(yyscanner);
- IMCC_INFO(interp)->line++;
}
-<pod>.* { /*ignore*/ }
+<pod>.* { IMCC_INFO(interp)->line++; }
-<pod>{EOL} { IMCC_INFO(interp)->line++; }
+<pod>{EOL} { /* ignore */ }
<*>".line" return TK_LINE;
<*>".file" return TK_FILE;
@@ -337,7 +340,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 +450,8 @@
}
<emit,INITIAL>".macro" {
+ /* the initial whitespace catcher misses this one */
+ IMCC_INFO(interp)->line++;
return read_macro(valp, interp, yyscanner);
}
@@ -485,7 +490,6 @@
}
<emit,INITIAL>{ID}"$" {
-
if (valp) {
char *label;
size_t len;
@@ -635,34 +639,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 +662,13 @@
<INITIAL><<EOF>> yyterminate();
-<macro>".endm" DUP_AND_RET(valp, ENDM);
+<macro>".endm" {
+ /* the initial whitespace catcher misses this one */
+ IMCC_INFO(interp)->line++;
+ DUP_AND_RET(valp, ENDM);
+}
<macro>{WS}*{EOL} {
- IMCC_INFO(interp)->line++;
DUP_AND_RET(valp, '\n');
}
@@ -745,7 +726,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 +794,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 +1052,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 +1212,6 @@
}
}
- /* let the normal EOF rules match line numbers */
- IMCC_INFO(interp)->line = m->line - 1;
scan_string(frame, m->expansion, yyscanner);
return 1;
@@ -1288,7 +1266,8 @@
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);
@@ -1469,6 +1448,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/include_dynpmc_makefile/compilers/imcc/imcc.y
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/imcc.y Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/imcc.y Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/imclexer.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/imclexer.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/imclexer.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -385,125 +385,127 @@
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[1090] =
{ 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,
+ 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, 15, 135,
+ 135, 136, 136, 136, 136, 134, 1, 1, 15, 147,
+ 142, 138, 142, 147, 147, 147, 147, 147, 120, 120,
+ 147, 145, 145, 145, 1, 1, 15, 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, 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,
- 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,
+ 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, 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, 4, 4, 4, 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, 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,
+ 0, 0, 0, 0, 0, 0, 0, 108, 107, 84,
- 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,
+ 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,
- 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
+ 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
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -549,283 +551,287 @@
10, 10, 10, 1, 1
} ;
-static yyconst flex_int16_t yy_base[1213] =
+static yyconst flex_int16_t yy_base[1241] =
{ 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, 4564, 7041, 693, 7041, 697, 4538, 63, 7041,
+ 385, 4537, 56, 4549, 58, 686, 7041, 696, 703, 60,
+ 750, 780, 785, 72, 83, 124, 703, 797, 767, 825,
+ 765, 759, 769, 833, 63, 766, 848, 856, 837, 422,
+ 864, 863, 862, 846, 4536, 848, 803, 872, 4515, 7041,
+ 887, 7041, 924, 84, 897, 4546, 919, 924, 0, 930,
+ 4533, 405, 946, 908, 953, 975, 4512, 0, 7041, 4552,
+ 689, 4542, 964, 968, 1003, 964, 4528, 1065, 1130, 990,
+
+ 994, 4507, 7041, 989, 1008, 1076, 4527, 87, 1000, 0,
+ 0, 791, 1031, 1065, 1179, 1002, 4525, 1241, 1306, 1012,
+ 815, 426, 7041, 820, 1110, 899, 1104, 1159, 1369, 1128,
+ 1031, 1431, 1496, 1056, 1097, 919, 7041, 969, 1162, 1009,
+ 1217, 1275, 1559, 1299, 1148, 1621, 1686, 1156, 1181, 1040,
+ 7041, 1059, 1184, 1115, 1265, 1336, 1749, 1305, 1208, 1811,
+ 1876, 1224, 1258, 0, 7041, 4545, 897, 4535, 1253, 1355,
+ 1925, 1368, 4522, 1987, 2052, 1212, 1286, 1296, 1345, 7041,
+ 7041, 902, 7041, 0, 0, 1343, 1359, 1373, 1397, 7041,
+ 7041, 7041, 4533, 7041, 7041, 1405, 1442, 7041, 7041, 1447,
+
+ 7041, 0, 4510, 4490, 4496, 1050, 4488, 4490, 658, 4482,
+ 1143, 105, 851, 874, 4488, 727, 4491, 4482, 4504, 7041,
+ 1504, 1154, 1459, 7041, 1184, 0, 4463, 4465, 4455, 1178,
+ 907, 1291, 685, 946, 4451, 22, 4451, 4444, 1108, 7041,
+ 7041, 7041, 7041, 1251, 4479, 4478, 1405, 4493, 1524, 1532,
+ 1442, 1542, 1548, 1543, 1559, 1594, 1561, 7041, 7041, 7041,
+ 7041, 1513, 4439, 1364, 4444, 4444, 1436, 4451, 4450, 4447,
+ 1240, 4432, 4429, 1228, 1380, 1604, 7041, 1638, 4394, 1633,
+ 0, 0, 4363, 4365, 932, 828, 4407, 1643, 1468, 1665,
+ 1669, 0, 7041, 1264, 0, 0, 4401, 1656, 1697, 1703,
+
+ 4362, 4361, 1715, 1283, 1743, 0, 1518, 2099, 1389, 2146,
+ 2211, 2276, 1448, 4350, 4359, 4358, 1822, 1424, 1527, 0,
+ 1482, 0, 1660, 1828, 1754, 4357, 4356, 1884, 1390, 1777,
+ 0, 1553, 2323, 1480, 2370, 2435, 2500, 1581, 1550, 7041,
+ 1593, 1737, 1798, 1611, 1616, 1645, 1703, 1850, 2563, 1904,
+ 1680, 1717, 2003, 1735, 1917, 1725, 1892, 2607, 1945, 2654,
+ 2719, 2784, 1804, 1828, 1743, 7041, 1777, 1857, 1925, 1783,
+ 1786, 1906, 1963, 2015, 2847, 2025, 1959, 1966, 2069, 2011,
+ 2081, 1862, 2090, 2891, 1969, 2938, 3003, 3068, 1980, 2036,
+ 1974, 7041, 2017, 2127, 2133, 2039, 2076, 2101, 2120, 2162,
+
+ 3131, 2292, 2083, 2135, 2304, 2171, 2173, 2078, 2300, 3175,
+ 2193, 3222, 3287, 3352, 2199, 2204, 0, 7041, 1320, 0,
+ 0, 4393, 2308, 2381, 2386, 4354, 4353, 2500, 2087, 2340,
+ 0, 2159, 3399, 1604, 3446, 3511, 3576, 2313, 2344, 2370,
+ 2398, 2402, 2409, 2513, 0, 4368, 4348, 4352, 4348, 4345,
+ 4352, 4345, 4336, 4339, 786, 4330, 4338, 1067, 4346, 4330,
+ 4336, 4337, 4329, 4341, 4325, 4324, 4339, 4331, 4330, 7041,
+ 2517, 2106, 2522, 2529, 2312, 0, 4321, 4323, 4331, 4318,
+ 2248, 4286, 4305, 4296, 4286, 4293, 4291, 4296, 4282, 4281,
+ 4281, 4278, 4291, 4283, 4290, 1509, 4319, 7041, 7041, 4305,
+
+ 7041, 1597, 4302, 2545, 2546, 2563, 2565, 2578, 2580, 2583,
+ 2582, 2598, 4265, 4279, 4280, 4271, 4297, 7041, 2619, 0,
+ 0, 4274, 4267, 4274, 4263, 2596, 2667, 4264, 4261, 2654,
+ 2179, 2556, 2603, 2393, 3623, 1787, 4301, 1833, 3670, 3735,
+ 4253, 4191, 4188, 2505, 2676, 4189, 4186, 2784, 2317, 2682,
+ 2686, 2690, 3782, 2601, 3829, 3894, 2812, 2567, 2808, 2816,
+ 2836, 2838, 2867, 2871, 3957, 2814, 2841, 2869, 4004, 4069,
+ 2954, 2642, 2875, 3084, 2879, 2881, 2903, 2911, 4132, 3106,
+ 2893, 3114, 4179, 4244, 2963, 2914, 3086, 3137, 2968, 2977,
+ 3165, 3169, 4307, 3122, 2988, 3140, 4354, 4419, 3192, 4187,
+
+ 4184, 3077, 2338, 2693, 3179, 2974, 4466, 1852, 4224, 1920,
+ 4513, 4578, 3222, 3230, 0, 4181, 4184, 4182, 4174, 4190,
+ 4184, 4188, 4185, 4176, 4172, 0, 4179, 4179, 4181, 4165,
+ 4172, 4174, 4177, 4175, 4175, 4155, 4173, 0, 4162, 4161,
+ 4158, 4159, 4150, 4162, 4148, 4147, 4147, 7041, 4155, 4146,
+ 4149, 4136, 4127, 4119, 829, 4125, 4111, 4112, 4118, 4111,
+ 4123, 1946, 7041, 0, 4153, 7041, 2010, 7041, 0, 4141,
+ 4156, 3115, 3193, 3363, 3364, 3372, 3373, 2360, 0, 4107,
+ 4112, 4111, 4110, 1031, 3099, 3234, 3238, 4109, 4104, 2128,
+ 0, 0, 4137, 2550, 0, 0, 4643, 4141, 4708, 4097,
+
+ 2422, 4100, 4099, 1169, 1544, 3244, 3248, 4098, 4097, 3163,
+ 0, 4773, 4135, 4838, 4091, 3380, 3387, 2819, 2923, 3390,
+ 3433, 2713, 2956, 3108, 3133, 3474, 3606, 2986, 3097, 4903,
+ 3268, 4968, 4090, 3463, 3471, 3419, 3430, 3608, 3614, 3160,
+ 3178, 3270, 3273, 3616, 3621, 3188, 3275, 5033, 3277, 5098,
+ 4089, 3476, 3484, 3592, 3601, 3623, 3698, 3400, 3435, 3496,
+ 3594, 3810, 3816, 3498, 3604, 5163, 3629, 5228, 4088, 3638,
+ 3670, 4091, 4021, 2608, 0, 0, 4054, 2840, 0, 0,
+ 5293, 4058, 5358, 4014, 4004, 4009, 0, 4001, 3405, 0,
+ 4002, 4016, 3997, 4012, 0, 4004, 4003, 3999, 4011, 3993,
+
+ 4006, 3997, 3990, 3990, 2628, 4002, 4000, 7041, 4002, 7041,
+ 3997, 7041, 3999, 3996, 7041, 7041, 3985, 3987, 3991, 3976,
+ 3987, 3979, 3975, 3982, 3968, 3951, 3934, 3938, 3850, 3972,
+ 3842, 3799, 7041, 3889, 0, 0, 3835, 0, 3681, 3382,
+ 0, 0, 5423, 1124, 7041, 3877, 7041, 7041, 940, 1719,
+ 0, 0, 5488, 1292, 3646, 3695, 3656, 1096, 3705, 3708,
+ 3663, 1230, 3712, 3714, 3669, 1652, 0, 0, 3671, 2567,
+ 3822, 3821, 0, 3803, 3790, 3771, 3772, 3765, 3688, 3661,
+ 3623, 0, 3623, 3618, 3584, 3592, 0, 3571, 3576, 3565,
+ 3568, 3553, 3537, 0, 3451, 3457, 3441, 3447, 3387, 7041,
+
+ 7041, 3369, 3373, 3362, 7041, 3358, 3347, 7041, 3339, 3328,
+ 3974, 4015, 3851, 3852, 3721, 3946, 3947, 1662, 1905, 1489,
+ 1546, 1957, 2246, 1424, 1710, 1817, 1869, 2062, 2779, 2858,
+ 3678, 3312, 3819, 3317, 3224, 3215, 3157, 3166, 3161, 3118,
+ 3117, 3111, 3100, 3086, 3068, 3073, 0, 2953, 2927, 2908,
+ 2878, 2866, 2821, 2808, 2774, 7041, 2750, 2758, 2657, 2630,
+ 7041, 2561, 7041, 3959, 3975, 3725, 2381, 3079, 1349, 1753,
+ 772, 1912, 1975, 2063, 804, 1805, 1893, 2305, 3188, 3587,
+ 3650, 3681, 2549, 2531, 2507, 2495, 2480, 2456, 2456, 2373,
+ 2355, 0, 2340, 0, 2323, 2296, 2295, 2254, 0, 0,
+
+ 2219, 2163, 2137, 2114, 2090, 2076, 2037, 7041, 2035, 2023,
+ 1993, 1975, 1653, 1985, 2553, 1969, 2626, 1953, 3802, 3867,
+ 3874, 3880, 3884, 3962, 3169, 1852, 0, 1795, 1723, 1702,
+ 0, 1593, 1545, 1505, 1475, 0, 1407, 1378, 1374, 0,
+ 1356, 1291, 0, 7041, 1279, 1245, 7041, 7041, 7041, 7041,
+ 1211, 7041, 0, 3845, 3968, 3970, 0, 1197, 1163, 1156,
+ 1115, 0, 1069, 1045, 1036, 0, 0, 1015, 0, 7041,
+ 912, 900, 0, 776, 675, 0, 367, 356, 61, 0,
+ 7041, 7041, 23, 0, 0, 0, 0, 0, 7041, 5553,
+ 5559, 5569, 5577, 5581, 5589, 5596, 5607, 5618, 5629, 5640,
+
+ 5647, 5658, 5669, 5680, 5691, 5702, 5713, 5724, 5735, 5746,
+ 5757, 5768, 5779, 5790, 5801, 5812, 5823, 5834, 5845, 5856,
+ 5862, 5872, 5878, 5884, 5889, 5897, 5906, 5912, 5916, 5922,
+ 5929, 5940, 5951, 5962, 5973, 5984, 5995, 6006, 6017, 6028,
+ 6039, 6050, 6061, 6072, 6083, 6094, 6105, 6116, 6127, 6138,
+ 6149, 6160, 6171, 6182, 6188, 6193, 6199, 6208, 6219, 6230,
+ 6237, 6245, 6251, 6257, 6263, 6270, 6281, 6292, 6303, 6314,
+ 6325, 6332, 6343, 6354, 6365, 6376, 6387, 6398, 6409, 6420,
+ 6431, 6442, 6453, 6464, 6475, 6486, 6497, 6508, 6519, 6530,
+ 6541, 6552, 6563, 6574, 6585, 6591, 6602, 6613, 6624, 6631,
+
+ 6639, 6645, 6651, 6658, 6669, 6680, 6691, 6702, 6713, 6720,
+ 6731, 6742, 6753, 6764, 6775, 6786, 6797, 6808, 6819, 6830,
+ 6841, 6852, 6863, 6874, 6885, 6896, 6907, 6918, 6929, 6940,
+ 6951, 6962, 6973, 6979, 6987, 6993, 7000, 7011, 7018, 7029
} ;
-static yyconst flex_int16_t yy_def[1213] =
+static yyconst flex_int16_t yy_def[1241] =
{ 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
+ 1089, 1, 1, 3, 1089, 5, 1089, 7, 1089, 9,
+ 1089, 11, 9, 9, 1089, 15, 1089, 17, 1089, 19,
+ 1089, 21, 1089, 1089, 1089, 1089, 1089, 1089, 1090, 1089,
+ 1091, 1089, 1089, 1092, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1093, 1093, 1093, 1093,
+ 1093, 1093, 1093, 1093, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 39, 1089, 1089, 1093, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1090, 1094, 1092, 1089, 1095, 41, 1089,
+ 1089, 1096, 1096, 1096, 1089, 1089, 1089, 1097, 1089, 1097,
+ 1098, 1099, 1097, 1097, 1097, 95, 1097, 1100, 1100, 1097,
+
+ 1097, 1097, 1089, 1089, 41, 1089, 1101, 1101, 1089, 1102,
+ 1102, 1103, 1102, 1102, 1102, 115, 1102, 1104, 1104, 1102,
+ 1090, 1105, 1089, 1105, 1106, 1107, 1105, 1105, 1105, 129,
+ 1105, 1108, 1108, 1105, 1105, 1109, 1089, 1109, 1110, 1111,
+ 1109, 1109, 1109, 143, 1109, 1112, 1112, 1109, 1109, 1113,
+ 1089, 1113, 1114, 1115, 1113, 1113, 1113, 157, 1113, 1116,
+ 1116, 1113, 1113, 1117, 1089, 1117, 1118, 1119, 1117, 1117,
+ 1117, 171, 1117, 1120, 1120, 1117, 1117, 1089, 1089, 1089,
+ 1089, 1090, 1089, 1090, 1121, 1121, 1121, 1121, 1121, 1089,
+ 1089, 1089, 1122, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
+ 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1124, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1125, 1126, 1127, 1126, 1126,
+ 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1123, 1123, 1123, 1123, 1123, 1123,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1128, 1128,
+ 1129, 1130, 1130, 1130, 1130, 1131, 1127, 1131, 1131, 1089,
+ 1089, 1132, 1089, 1133, 1132, 1133, 1134, 1132, 1132, 1132,
+
+ 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1135,
+ 1089, 1135, 1132, 1132, 1089, 1089, 1089, 1125, 1089, 1136,
+ 1137, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
+ 1136, 1136, 1136, 1136, 1138, 1089, 1138, 1136, 1139, 1089,
+ 1139, 1140, 1140, 1139, 1140, 1141, 1141, 1139, 1139, 1139,
+ 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1142,
+ 1089, 1142, 1139, 1139, 1143, 1089, 1143, 1144, 1144, 1143,
+ 1144, 1145, 1145, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+ 1143, 1143, 1143, 1143, 1143, 1146, 1089, 1146, 1143, 1143,
+ 1147, 1089, 1147, 1148, 1148, 1147, 1148, 1149, 1149, 1147,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1150, 1089, 1150, 1147, 1147, 1151, 1089, 1152, 1151,
+ 1152, 1153, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+ 1151, 1151, 1151, 1151, 1154, 1089, 1154, 1151, 1089, 1155,
+ 1155, 1155, 1155, 1089, 1156, 1156, 1156, 1156, 1156, 1156,
+ 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
+ 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1157, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1158, 1159, 1089, 1089, 1089,
+
+ 1089, 1160, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+ 1162, 1162, 1089, 1156, 1156, 1089, 1163, 1089, 1163, 1164,
+ 1165, 1165, 1165, 1165, 1165, 1166, 1167, 1167, 1167, 1167,
+ 1167, 1167, 1167, 1167, 1167, 1168, 1169, 1170, 1171, 1089,
+ 1167, 1089, 1089, 1172, 1173, 1173, 1173, 1173, 1173, 1173,
+ 1173, 1173, 1173, 1174, 1175, 1089, 1176, 1176, 1176, 1176,
+ 1176, 1176, 1176, 1176, 1176, 1177, 1178, 1179, 1180, 1089,
+ 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1182,
+ 1183, 1184, 1185, 1089, 1186, 1186, 1186, 1186, 1186, 1186,
+ 1186, 1186, 1186, 1187, 1188, 1189, 1190, 1089, 1191, 1191,
+
+ 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1193, 1194,
+ 1195, 1089, 1089, 1089, 1196, 1196, 1196, 1196, 1196, 1196,
+ 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+ 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1197, 1089, 1197, 1198, 1089, 1199, 1089, 1199, 1200,
+ 1089, 1201, 1201, 1201, 1201, 1201, 1201, 1089, 1202, 1203,
+ 1203, 1203, 1203, 1204, 1204, 1205, 1205, 1205, 1205, 1206,
+ 1205, 1206, 1207, 1208, 1205, 1208, 1209, 1205, 1089, 699,
+
+ 1205, 1089, 1089, 1210, 1210, 1211, 1211, 1211, 1211, 1212,
+ 1211, 1213, 1211, 1089, 714, 1214, 1214, 1214, 1214, 1215,
+ 1215, 1214, 1215, 1216, 1216, 1217, 1217, 1214, 1217, 1218,
+ 1214, 1089, 732, 1219, 1219, 1219, 1219, 1220, 1220, 1219,
+ 1220, 1221, 1221, 1222, 1222, 1219, 1222, 1223, 1219, 1089,
+ 750, 1224, 1224, 1224, 1224, 1225, 1225, 1224, 1225, 1226,
+ 1226, 1227, 1227, 1224, 1227, 1228, 1224, 1089, 768, 1229,
+ 1229, 1229, 1229, 1230, 1229, 1230, 1231, 1232, 1229, 1232,
+ 1233, 1229, 1089, 783, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1235, 1235,
+ 1235, 1235, 1089, 1089, 1236, 1236, 1236, 1236, 1237, 1237,
+ 1238, 1238, 1089, 843, 1089, 1238, 1089, 1089, 1239, 1239,
+ 1240, 1240, 1089, 853, 1214, 1214, 732, 732, 1219, 1219,
+ 750, 750, 1224, 1224, 768, 768, 1229, 1229, 783, 783,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1235, 1235, 1235, 1235, 1236, 1237, 1237, 843, 843, 1239,
+ 1239, 853, 853, 732, 732, 750, 750, 768, 768, 783,
+ 783, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1235, 1235, 1089, 1237, 1237, 843, 843,
+ 1239, 1239, 853, 853, 732, 732, 750, 750, 768, 768,
+ 783, 783, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+
+ 1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1238, 1238, 1240, 1240, 1214, 1214,
+ 1219, 1219, 1224, 1224, 1229, 1229, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1238, 1214, 1219, 1224, 1229, 1234, 1234, 1234,
+ 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1089,
+ 1089, 1089, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234,
+ 1089, 1089, 1234, 1234, 1234, 1234, 1234, 1234, 0, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089
} ;
-static yyconst flex_int16_t yy_nxt[7046] =
+static yyconst flex_int16_t yy_nxt[7107] =
{ 0,
24, 25, 26, 27, 25, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
@@ -833,778 +839,785 @@
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, 492, 68, 67, 1088, 85, 219, 86, 85,
+ 192, 493, 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, 287,
+ 64, 65, 24, 24, 109, 121, 109, 109, 120, 1087,
+ 120, 120, 134, 184, 135, 134, 259, 41, 42, 42,
+ 42, 148, 318, 149, 148, 47, 162, 47, 163, 162,
+ 47, 176, 47, 177, 176, 66, 459, 47, 243, 244,
+ 460, 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, 1086, 109, 109, 186, 121, 187,
+ 246, 188, 189, 264, 1085, 264, 264, 287, 340, 341,
+ 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,
+ 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, 295, 178, 178, 178, 180,
+
+ 178, 178, 196, 453, 197, 197, 197, 197, 454, 179,
+ 198, 245, 196, 179, 197, 197, 197, 197, 246, 1084,
+ 199, 200, 200, 200, 200, 248, 487, 201, 296, 202,
+ 202, 202, 202, 202, 203, 202, 202, 202, 202, 202,
+ 202, 202, 488, 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, 466, 245, 246, 245, 1013, 245, 222, 223,
+ 246, 248, 246, 224, 246, 225, 467, 248, 226, 248,
+ 260, 248, 222, 320, 287, 223, 221, 193, 197, 197,
+
+ 197, 197, 322, 225, 275, 245, 275, 275, 1019, 223,
+ 254, 226, 246, 224, 255, 249, 249, 249, 249, 248,
+ 250, 183, 340, 341, 253, 223, 227, 256, 228, 624,
+ 261, 229, 1083, 245, 230, 231, 232, 233, 234, 235,
+ 246, 245, 236, 246, 237, 238, 625, 248, 246, 262,
+ 287, 262, 262, 360, 184, 248, 245, 262, 180, 262,
+ 262, 241, 242, 246, 179, 264, 180, 264, 264, 821,
+ 248, 251, 179, 275, 180, 275, 275, 252, 822, 196,
+ 263, 197, 197, 197, 197, 257, 1089, 227, 276, 277,
+ 278, 276, 461, 255, 462, 271, 231, 232, 272, 273,
+
+ 235, 340, 347, 420, 202, 265, 238, 202, 183, 202,
+ 344, 266, 267, 268, 269, 463, 270, 464, 202, 202,
+ 202, 366, 367, 246, 202, 276, 277, 278, 276, 280,
+ 287, 280, 281, 280, 280, 196, 421, 197, 197, 197,
+ 197, 184, 200, 200, 200, 200, 221, 1082, 197, 197,
+ 197, 197, 482, 289, 290, 277, 291, 290, 1081, 223,
+ 483, 246, 287, 224, 288, 288, 288, 288, 287, 283,
+ 284, 366, 367, 524, 285, 223, 290, 277, 291, 290,
+ 298, 525, 299, 299, 299, 299, 300, 300, 300, 300,
+ 920, 313, 292, 313, 313, 313, 293, 313, 313, 292,
+
+ 489, 319, 292, 319, 319, 490, 292, 200, 200, 200,
+ 200, 366, 373, 338, 301, 338, 338, 292, 302, 303,
+ 370, 299, 299, 299, 299, 292, 317, 317, 317, 317,
+ 320, 304, 305, 340, 341, 315, 306, 320, 307, 316,
+ 320, 308, 392, 393, 320, 304, 246, 323, 305, 324,
+ 324, 324, 324, 287, 359, 320, 307, 363, 340, 364,
+ 363, 392, 393, 320, 308, 292, 292, 1080, 292, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 839, 292, 292, 325, 325, 325, 325, 311, 292, 292,
+ 292, 449, 221, 1079, 317, 317, 317, 317, 363, 340,
- 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,
+ 364, 363, 1078, 450, 292, 223, 340, 341, 628, 224,
+ 629, 326, 340, 343, 496, 327, 344, 392, 399, 497,
+ 348, 223, 349, 349, 349, 349, 396, 1077, 292, 292,
+ 292, 292, 498, 292, 292, 292, 292, 292, 292, 292,
+ 292, 292, 292, 292, 292, 360, 292, 292, 925, 345,
+ 366, 367, 311, 292, 292, 292, 339, 389, 366, 390,
+ 389, 340, 341, 339, 366, 369, 339, 1076, 370, 292,
+ 339, 385, 472, 472, 310, 312, 919, 350, 350, 350,
+ 350, 339, 389, 366, 390, 389, 392, 395, 456, 339,
+ 396, 287, 457, 292, 292, 328, 458, 324, 324, 324,
+
+ 324, 371, 475, 475, 475, 351, 1075, 329, 330, 352,
+ 392, 393, 331, 438, 332, 438, 438, 333, 849, 366,
+ 367, 329, 1074, 397, 330, 415, 392, 416, 415, 480,
+ 481, 411, 332, 374, 496, 375, 375, 375, 375, 497,
+ 333, 320, 320, 320, 320, 320, 320, 1073, 320, 320,
+ 320, 320, 320, 320, 320, 320, 1072, 320, 320, 415,
+ 392, 416, 415, 336, 320, 320, 320, 392, 393, 423,
+ 295, 424, 424, 424, 424, 499, 500, 366, 367, 386,
+ 320, 400, 927, 401, 401, 401, 401, 438, 418, 438,
+ 438, 480, 516, 376, 376, 376, 376, 178, 1071, 178,
+
+ 178, 531, 531, 296, 320, 320, 320, 320, 320, 320,
+ 320, 320, 179, 320, 320, 320, 320, 320, 320, 320,
+ 320, 377, 320, 320, 1070, 378, 420, 365, 336, 320,
+ 320, 320, 484, 391, 365, 1069, 485, 365, 392, 393,
+ 391, 365, 335, 391, 923, 320, 439, 391, 439, 439,
+ 486, 337, 365, 1015, 402, 402, 402, 402, 391, 421,
+ 365, 440, 440, 440, 440, 264, 391, 264, 264, 320,
+ 320, 340, 341, 425, 425, 425, 425, 441, 441, 441,
+ 441, 275, 403, 275, 275, 353, 404, 349, 349, 349,
+ 349, 442, 442, 442, 442, 536, 417, 354, 355, 310,
+
+ 537, 426, 356, 417, 357, 427, 417, 358, 549, 549,
+ 417, 354, 1068, 245, 355, 443, 443, 443, 443, 1067,
+ 246, 417, 357, 200, 200, 200, 200, 248, 1066, 417,
+ 358, 339, 339, 340, 341, 339, 339, 339, 339, 339,
+ 339, 339, 339, 339, 339, 339, 287, 339, 339, 313,
+ 245, 313, 313, 361, 339, 339, 339, 246, 221, 1065,
+ 197, 197, 197, 197, 248, 200, 200, 200, 200, 975,
+ 339, 223, 473, 360, 473, 224, 444, 474, 474, 474,
+ 474, 456, 544, 246, 320, 457, 496, 223, 193, 515,
+ 287, 554, 444, 322, 339, 339, 339, 339, 340, 341,
- 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,
+ 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
+ 339, 287, 339, 339, 262, 663, 262, 262, 361, 339,
+ 339, 339, 471, 471, 471, 471, 526, 1064, 319, 179,
+ 319, 319, 245, 444, 971, 339, 534, 534, 534, 246,
+ 245, 362, 504, 504, 504, 504, 248, 246, 664, 444,
+ 245, 245, 340, 341, 248, 1063, 245, 246, 246, 339,
+ 339, 366, 367, 246, 248, 248, 287, 245, 287, 245,
+ 248, 552, 552, 552, 246, 379, 246, 375, 375, 375,
+ 375, 248, 338, 248, 338, 338, 509, 380, 381, 1062,
+ 505, 972, 382, 850, 383, 340, 341, 384, 507, 508,
+
+ 506, 380, 245, 668, 381, 276, 277, 278, 276, 246,
+ 608, 512, 383, 340, 341, 609, 248, 510, 340, 343,
+ 384, 365, 365, 366, 367, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 669, 365, 365, 276,
+ 277, 278, 276, 387, 365, 365, 365, 340, 347, 1061,
+ 511, 519, 519, 519, 519, 518, 344, 1013, 246, 1052,
+ 365, 288, 288, 288, 288, 287, 290, 277, 291, 290,
+ 290, 277, 291, 290, 300, 300, 300, 300, 325, 325,
+ 325, 325, 340, 341, 365, 365, 365, 365, 366, 367,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
- 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,
+ 365, 412, 365, 365, 929, 340, 347, 969, 387, 365,
+ 365, 365, 310, 303, 344, 299, 299, 299, 299, 340,
+ 341, 300, 300, 300, 300, 365, 305, 340, 341, 558,
+ 306, 388, 527, 530, 530, 530, 530, 340, 341, 340,
+ 343, 287, 305, 344, 527, 366, 367, 1060, 527, 365,
+ 365, 392, 393, 561, 561, 976, 532, 1016, 532, 360,
+ 527, 533, 533, 533, 533, 405, 559, 401, 401, 401,
+ 401, 921, 325, 325, 325, 325, 345, 406, 407, 366,
+ 367, 1059, 408, 545, 409, 366, 367, 410, 366, 369,
+ 550, 406, 550, 691, 407, 551, 551, 551, 551, 545,
+
+ 340, 343, 409, 310, 344, 363, 340, 364, 363, 1020,
+ 410, 391, 391, 392, 393, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 692, 391, 391, 363,
+ 340, 364, 363, 413, 391, 391, 391, 345, 221, 695,
+ 317, 317, 317, 317, 328, 1058, 324, 324, 324, 324,
+ 391, 223, 340, 341, 360, 224, 1026, 330, 775, 366,
+ 369, 331, 977, 370, 366, 367, 386, 223, 350, 350,
+ 350, 350, 696, 330, 391, 391, 391, 391, 392, 393,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 776, 391, 391, 340, 341, 371, 1021, 413, 391,
+
+ 391, 391, 548, 548, 548, 548, 340, 341, 366, 373,
+ 564, 564, 564, 545, 978, 391, 1014, 370, 386, 340,
+ 341, 414, 350, 350, 350, 350, 779, 366, 369, 545,
+ 562, 370, 562, 557, 287, 563, 563, 563, 563, 391,
+ 391, 428, 386, 424, 424, 424, 424, 340, 341, 557,
+ 970, 566, 663, 429, 430, 310, 567, 1018, 431, 780,
+ 432, 366, 367, 433, 371, 366, 373, 429, 366, 367,
+ 430, 366, 367, 1016, 370, 580, 392, 393, 432, 1017,
+ 581, 389, 366, 390, 389, 664, 433, 417, 417, 1014,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+
+ 417, 417, 973, 417, 417, 340, 341, 335, 572, 436,
+ 417, 417, 417, 366, 367, 573, 668, 366, 367, 392,
+ 393, 560, 560, 560, 560, 335, 417, 366, 367, 575,
+ 575, 1051, 557, 376, 376, 376, 376, 389, 366, 390,
+ 389, 392, 393, 376, 376, 376, 376, 1050, 557, 669,
+ 417, 417, 417, 417, 571, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 1018, 417, 417,
+ 571, 366, 367, 1049, 436, 417, 417, 417, 392, 395,
+ 392, 393, 1048, 366, 367, 392, 393, 574, 574, 574,
+ 574, 417, 366, 367, 576, 1047, 576, 437, 571, 577,
+
+ 577, 577, 577, 392, 399, 603, 603, 979, 578, 578,
+ 578, 412, 396, 335, 571, 417, 417, 535, 535, 535,
+ 535, 1046, 392, 399, 472, 472, 535, 535, 535, 392,
+ 395, 396, 586, 396, 691, 392, 395, 392, 393, 396,
+ 535, 535, 535, 535, 535, 535, 292, 292, 1045, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 292, 1044, 292, 292, 392, 393, 397, 692, 311, 292,
+ 292, 292, 397, 392, 393, 392, 393, 606, 606, 606,
+ 402, 402, 402, 402, 587, 292, 590, 1043, 590, 589,
+ 589, 591, 591, 591, 591, 392, 393, 531, 531, 594,
+ 415, 392, 416, 415, 595, 415, 392, 416, 415, 292,
+ 292, 292, 292, 1042, 292, 292, 292, 538, 292, 292,
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,
+ 292, 292, 292, 292, 292, 292, 292, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 292, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 292, 292, 292, 292, 1041, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 292, 974, 292, 292, 392, 393, 335, 645, 311, 292,
- 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, 392, 393, 1040, 646, 392, 393, 647, 1022,
+ 402, 402, 402, 402, 438, 292, 438, 438, 592, 592,
+ 592, 585, 588, 588, 588, 588, 425, 425, 425, 425,
+ 475, 475, 475, 585, 540, 549, 549, 585, 1039, 292,
+ 292, 553, 553, 553, 553, 439, 1038, 439, 439, 585,
+ 553, 553, 553, 604, 386, 604, 603, 603, 605, 605,
+ 605, 605, 833, 834, 553, 553, 553, 553, 553, 553,
+ 320, 320, 320, 320, 320, 320, 1037, 320, 320, 320,
+ 320, 320, 320, 320, 320, 1013, 320, 320, 440, 440,
+ 440, 440, 336, 320, 320, 320, 246, 428, 1036, 424,
+
+ 424, 424, 424, 287, 425, 425, 425, 425, 1035, 320,
+ 430, 534, 534, 534, 431, 599, 441, 441, 441, 441,
+ 442, 442, 442, 442, 845, 846, 430, 443, 443, 443,
+ 443, 599, 1034, 320, 320, 320, 320, 320, 320, 320,
+ 320, 502, 320, 320, 320, 320, 320, 320, 320, 320,
+ 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
+ 320, 555, 555, 555, 555, 555, 555, 555, 555, 555,
+ 555, 555, 555, 555, 320, 555, 555, 555, 555, 555,
+ 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
+ 555, 555, 555, 555, 555, 555, 555, 555, 320, 320,
- 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,
+ 320, 320, 320, 320, 320, 320, 1033, 320, 320, 320,
+ 320, 320, 320, 320, 320, 1032, 320, 320, 602, 602,
+ 602, 602, 336, 320, 320, 320, 613, 287, 613, 599,
+ 1031, 614, 614, 614, 614, 471, 471, 471, 471, 320,
+ 474, 474, 474, 474, 1030, 599, 444, 474, 474, 474,
+ 474, 704, 1029, 245, 245, 705, 695, 1015, 556, 1053,
+ 246, 246, 444, 320, 320, 340, 341, 248, 248, 340,
+ 341, 245, 1028, 245, 533, 533, 533, 533, 246, 353,
+ 246, 349, 349, 349, 349, 248, 245, 248, 245, 696,
+ 245, 245, 355, 246, 1027, 246, 356, 246, 246, 672,
+
+ 248, 1012, 248, 320, 248, 248, 245, 665, 355, 340,
+ 341, 246, 711, 246, 775, 673, 435, 718, 287, 931,
+ 248, 533, 533, 533, 533, 565, 565, 565, 565, 674,
+ 1017, 676, 1052, 675, 565, 565, 565, 519, 519, 519,
+ 519, 518, 684, 677, 366, 367, 685, 776, 565, 565,
+ 565, 565, 565, 565, 339, 339, 340, 341, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 339, 339, 890,
+ 339, 339, 530, 530, 530, 530, 361, 339, 339, 339,
+ 686, 1011, 686, 527, 891, 687, 687, 687, 687, 706,
+ 892, 706, 736, 339, 707, 707, 707, 707, 1010, 527,
+
+ 551, 551, 551, 551, 551, 551, 551, 551, 552, 552,
+ 552, 605, 605, 605, 605, 340, 341, 339, 339, 339,
+ 339, 340, 341, 339, 339, 568, 339, 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,
+ 339, 339, 339, 339, 339, 569, 569, 569, 569, 569,
+ 569, 569, 569, 569, 569, 569, 569, 569, 339, 569,
+ 569, 569, 569, 569, 569, 569, 569, 569, 569, 569,
+ 569, 569, 569, 569, 569, 569, 569, 569, 569, 569,
+ 569, 569, 339, 339, 339, 339, 340, 341, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 339, 339, 1009,
- 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,
+ 339, 339, 548, 548, 548, 548, 361, 339, 339, 339,
+ 340, 341, 1008, 545, 340, 341, 340, 721, 340, 341,
+ 722, 340, 341, 339, 980, 716, 1007, 716, 412, 545,
+ 717, 717, 717, 717, 560, 560, 560, 560, 340, 341,
+ 340, 341, 570, 340, 725, 557, 779, 339, 339, 366,
+ 367, 1006, 722, 723, 561, 561, 563, 563, 563, 563,
+ 719, 557, 1005, 379, 855, 375, 375, 375, 375, 340,
+ 341, 340, 727, 340, 341, 728, 381, 366, 367, 780,
+ 382, 366, 367, 366, 367, 563, 563, 563, 563, 564,
+ 564, 564, 381, 366, 367, 366, 743, 575, 575, 577,
+
+ 577, 577, 577, 981, 740, 366, 367, 435, 729, 579,
+ 579, 579, 579, 366, 367, 1004, 392, 393, 579, 579,
+ 579, 577, 577, 577, 577, 340, 341, 737, 1003, 578,
+ 578, 578, 579, 579, 579, 579, 579, 579, 365, 365,
+ 366, 367, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 1002, 365, 365, 366, 367, 340, 721,
+ 387, 365, 365, 365, 754, 392, 393, 734, 856, 734,
+ 392, 393, 735, 735, 735, 735, 752, 365, 752, 392,
+ 393, 753, 753, 753, 753, 1001, 589, 589, 340, 341,
+ 392, 761, 606, 606, 606, 591, 591, 591, 591, 758,
- 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,
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
- 300, 300, 166, 1061, 166, 166, 166, 166, 166, 166,
-
- 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,
+ 1000, 365, 365, 365, 365, 366, 367, 365, 365, 582,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 583,
+ 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
+ 583, 583, 365, 583, 583, 583, 583, 583, 583, 583,
+ 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
+ 583, 583, 583, 583, 583, 583, 365, 365, 365, 365,
+ 366, 367, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 1014, 365, 365, 366, 367, 392, 393,
+ 387, 365, 365, 365, 246, 602, 602, 602, 602, 340,
+
+ 727, 287, 574, 574, 574, 574, 599, 365, 366, 739,
+ 340, 725, 740, 571, 246, 999, 366, 745, 998, 722,
+ 746, 287, 599, 245, 392, 757, 584, 997, 758, 571,
+ 246, 365, 365, 392, 393, 340, 725, 248, 755, 392,
+ 393, 996, 392, 763, 722, 741, 764, 405, 840, 401,
+ 401, 401, 401, 747, 995, 588, 588, 588, 588, 994,
+ 407, 759, 366, 367, 408, 320, 585, 392, 393, 665,
+ 993, 392, 393, 1025, 711, 1057, 407, 392, 393, 765,
+ 366, 739, 585, 591, 591, 591, 591, 592, 592, 592,
+ 366, 367, 1023, 593, 593, 593, 593, 605, 605, 605,
+
+ 605, 245, 593, 593, 593, 770, 992, 770, 246, 991,
+ 771, 771, 771, 771, 990, 248, 593, 593, 593, 593,
+ 593, 593, 391, 391, 392, 393, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 412, 391, 391,
+ 614, 614, 614, 614, 413, 391, 391, 391, 614, 614,
+ 614, 614, 687, 687, 687, 687, 687, 687, 687, 687,
+ 989, 391, 707, 707, 707, 707, 707, 707, 707, 707,
+ 340, 341, 366, 743, 568, 366, 743, 366, 745, 366,
+ 367, 740, 988, 582, 740, 391, 391, 391, 391, 392,
+ 393, 391, 391, 596, 391, 391, 391, 391, 391, 391,
+
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 597, 597, 597, 597, 597, 597, 597,
+ 597, 597, 597, 597, 597, 597, 391, 597, 597, 597,
+ 597, 597, 597, 597, 597, 597, 597, 597, 597, 597,
+ 597, 597, 597, 597, 597, 597, 597, 597, 597, 597,
+ 391, 391, 391, 391, 392, 393, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 987, 391, 391,
+ 983, 245, 245, 963, 413, 391, 391, 391, 246, 246,
+ 245, 245, 340, 341, 962, 248, 248, 246, 246, 340,
+ 341, 391, 340, 721, 248, 248, 722, 246, 717, 717,
+
+ 717, 717, 392, 393, 287, 717, 717, 717, 717, 961,
+ 598, 960, 829, 830, 959, 391, 391, 607, 607, 607,
+ 607, 366, 367, 958, 831, 957, 607, 607, 607, 723,
+ 832, 956, 366, 367, 917, 340, 721, 392, 757, 722,
+ 607, 607, 607, 607, 607, 607, 417, 417, 874, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 875, 417, 417, 859, 366, 367, 876, 436, 417,
+ 417, 417, 723, 366, 367, 860, 340, 727, 392, 393,
+ 728, 735, 735, 735, 735, 417, 392, 393, 955, 735,
+ 735, 735, 735, 954, 753, 753, 753, 753, 392, 761,
+
+ 392, 393, 753, 753, 753, 753, 953, 758, 952, 417,
+ 417, 417, 417, 729, 417, 417, 417, 610, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 417, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 417, 417, 417, 417, 951, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 1024, 417, 417, 392, 393, 392, 761, 436, 417,
+
+ 417, 417, 950, 392, 393, 758, 392, 763, 340, 727,
+ 366, 739, 728, 949, 740, 417, 366, 739, 366, 745,
+ 740, 948, 746, 366, 745, 392, 757, 746, 947, 758,
+ 946, 392, 393, 945, 612, 596, 412, 863, 944, 417,
+ 417, 535, 535, 535, 535, 729, 864, 741, 340, 341,
+ 535, 535, 535, 741, 1025, 747, 771, 771, 771, 771,
+ 747, 943, 759, 942, 535, 535, 535, 535, 535, 535,
+ 292, 292, 941, 292, 292, 292, 292, 292, 292, 292,
+ 292, 292, 292, 292, 292, 1026, 292, 292, 771, 771,
+ 771, 771, 698, 292, 292, 292, 246, 340, 341, 435,
+
+ 392, 757, 940, 287, 758, 360, 924, 366, 367, 292,
+ 366, 367, 386, 926, 392, 393, 392, 393, 412, 928,
+ 435, 930, 966, 982, 966, 966, 966, 435, 966, 966,
+ 435, 916, 939, 292, 292, 292, 292, 759, 292, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 310, 292, 292, 310, 310, 310, 310, 311, 292, 292,
+ 292, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+ 310, 310, 310, 310, 292, 310, 310, 310, 310, 310,
+ 310, 699, 310, 310, 310, 700, 310, 310, 310, 310,
+ 310, 310, 310, 310, 310, 310, 310, 310, 292, 292,
+
+ 553, 553, 553, 553, 340, 341, 1019, 245, 1054, 553,
+ 553, 553, 392, 763, 246, 938, 764, 937, 392, 763,
+ 936, 248, 764, 553, 553, 553, 553, 553, 553, 320,
+ 320, 320, 320, 320, 320, 935, 320, 320, 320, 320,
+ 320, 320, 320, 320, 934, 320, 320, 340, 341, 765,
+ 245, 713, 320, 320, 320, 765, 914, 246, 245, 245,
+ 245, 933, 984, 932, 248, 246, 246, 246, 320, 340,
+ 341, 1020, 248, 248, 248, 985, 366, 367, 1021, 845,
+ 1055, 986, 366, 367, 1022, 915, 392, 393, 1023, 913,
+ 1056, 833, 320, 320, 320, 320, 320, 320, 320, 320,
+
+ 911, 320, 320, 320, 320, 320, 320, 320, 320, 335,
+ 320, 320, 335, 335, 335, 335, 336, 320, 320, 320,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 320, 335, 335, 335, 335, 335, 335,
+ 714, 335, 335, 335, 715, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 320, 320, 340,
+ 341, 246, 246, 1013, 392, 393, 1024, 245, 287, 287,
+ 366, 367, 392, 393, 246, 565, 565, 565, 565, 1014,
+ 245, 248, 245, 245, 565, 565, 565, 246, 910, 246,
+ 246, 967, 968, 909, 248, 908, 248, 248, 565, 565,
+
+ 565, 565, 565, 565, 339, 339, 340, 341, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 339, 339, 964,
+ 339, 339, 907, 245, 912, 906, 731, 339, 339, 339,
+ 246, 905, 904, 903, 902, 901, 900, 248, 899, 898,
+ 897, 896, 895, 339, 894, 893, 889, 888, 887, 886,
+ 885, 884, 883, 882, 881, 880, 879, 878, 877, 873,
+ 965, 872, 871, 870, 610, 775, 868, 339, 339, 339,
+ 339, 340, 341, 339, 339, 339, 339, 339, 339, 339,
+ 339, 339, 339, 339, 360, 339, 339, 360, 360, 360,
+ 360, 361, 339, 339, 339, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 360, 339, 360,
+ 360, 360, 360, 360, 360, 732, 360, 360, 360, 733,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 360, 339, 339, 366, 367, 867, 866, 862, 858,
+ 854, 502, 852, 851, 848, 847, 844, 538, 691, 842,
+ 579, 579, 579, 579, 841, 838, 837, 836, 835, 579,
+ 579, 579, 502, 671, 663, 828, 827, 826, 825, 824,
+ 823, 820, 819, 579, 579, 579, 579, 579, 579, 365,
+ 365, 366, 367, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 818, 365, 365, 817, 816, 815,
+
+ 814, 749, 365, 365, 365, 813, 812, 811, 810, 809,
+ 808, 807, 806, 805, 804, 803, 802, 801, 365, 800,
+ 799, 798, 797, 796, 795, 794, 793, 792, 791, 790,
+ 789, 788, 787, 786, 785, 775, 773, 772, 709, 708,
+ 703, 702, 365, 365, 365, 365, 366, 367, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 386,
+ 365, 365, 386, 386, 386, 386, 387, 365, 365, 365,
+ 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+ 386, 386, 386, 365, 386, 386, 386, 386, 386, 386,
+ 750, 386, 386, 386, 751, 386, 386, 386, 386, 386,
+
+ 386, 386, 386, 386, 386, 386, 386, 365, 365, 392,
+ 393, 701, 691, 689, 688, 683, 682, 681, 680, 518,
+ 645, 628, 624, 678, 671, 593, 593, 593, 593, 666,
+ 663, 661, 660, 659, 593, 593, 593, 658, 657, 656,
+ 655, 654, 653, 652, 651, 650, 649, 648, 593, 593,
+ 593, 593, 593, 593, 391, 391, 392, 393, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 644,
+ 391, 391, 643, 642, 641, 640, 767, 391, 391, 391,
+ 639, 638, 637, 636, 635, 634, 633, 632, 631, 630,
+ 627, 626, 623, 391, 622, 621, 620, 619, 618, 617,
+
+ 616, 615, 601, 600, 420, 547, 546, 543, 542, 541,
+ 529, 528, 295, 502, 523, 522, 518, 391, 391, 391,
+ 391, 392, 393, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 412, 391, 391, 412, 412, 412,
+ 412, 413, 391, 391, 391, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 391, 412,
+ 412, 412, 412, 412, 412, 768, 412, 412, 412, 769,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 391, 391, 607, 607, 607, 607, 490, 488,
+ 464, 461, 459, 607, 607, 607, 514, 450, 513, 502,
+
+ 287, 501, 495, 494, 491, 479, 478, 607, 607, 607,
+ 607, 607, 607, 417, 417, 477, 417, 417, 417, 417,
+ 417, 417, 417, 417, 417, 417, 417, 417, 470, 417,
+ 417, 469, 468, 465, 455, 782, 417, 417, 417, 452,
+ 451, 448, 447, 446, 183, 434, 420, 418, 334, 287,
+ 314, 309, 417, 295, 293, 263, 274, 183, 263, 274,
+ 183, 190, 181, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 417, 417, 417, 417,
+ 1089, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 435, 417, 417, 435, 435, 435, 435,
+
+ 436, 417, 417, 417, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 417, 435, 435,
+ 435, 435, 435, 435, 783, 435, 435, 435, 784, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 417, 417, 292, 292, 1089, 292, 292, 292, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 1089, 292,
+ 292, 1089, 1089, 1089, 1089, 698, 292, 292, 292, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 292, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089, 292, 292, 292, 292,
+ 1089, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 292, 292, 292, 310, 292, 292, 310, 310, 310, 310,
+ 311, 292, 292, 292, 310, 310, 310, 310, 310, 310,
+ 310, 310, 310, 310, 310, 310, 310, 292, 310, 310,
+ 310, 310, 310, 310, 310, 310, 310, 843, 310, 310,
+ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+ 310, 292, 292, 320, 320, 320, 320, 320, 320, 1089,
+ 320, 320, 320, 320, 320, 320, 320, 320, 1089, 320,
+ 320, 1089, 1089, 1089, 1089, 713, 320, 320, 320, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 320, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 320, 320, 320, 320,
+ 320, 320, 320, 320, 1089, 320, 320, 320, 320, 320,
+ 320, 320, 320, 335, 320, 320, 335, 335, 335, 335,
+ 336, 320, 320, 320, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 320, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 853, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 320, 320, 339, 339, 340, 341, 339, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 339, 1089, 339,
+ 339, 1089, 1089, 1089, 1089, 731, 339, 339, 339, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 339, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 339, 339, 339, 339,
+ 340, 341, 339, 339, 339, 339, 339, 339, 339, 339,
+ 339, 339, 339, 360, 339, 339, 360, 360, 360, 360,
+ 361, 339, 339, 339, 360, 360, 360, 360, 360, 360,
+
+ 360, 360, 360, 360, 360, 360, 360, 339, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 857, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 339, 339, 365, 365, 366, 367, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 1089, 365,
+ 365, 1089, 1089, 1089, 1089, 749, 365, 365, 365, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 365, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 365, 365, 365, 365,
+
+ 366, 367, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 365, 386, 365, 365, 386, 386, 386, 386,
+ 387, 365, 365, 365, 386, 386, 386, 386, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 365, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 861, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+ 386, 365, 365, 391, 391, 392, 393, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 1089, 391,
+ 391, 1089, 1089, 1089, 1089, 767, 391, 391, 391, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 391, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 391, 391, 391, 391,
+ 392, 393, 391, 391, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 412, 391, 391, 412, 412, 412, 412,
+ 413, 391, 391, 391, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 391, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 865, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 391, 391, 417, 417, 1089, 417, 417, 417, 417,
+
+ 417, 417, 417, 417, 417, 417, 417, 417, 1089, 417,
+ 417, 1089, 1089, 1089, 1089, 782, 417, 417, 417, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 417, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 417, 417, 417, 417,
+ 1089, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 417, 435, 417, 417, 435, 435, 435, 435,
+ 436, 417, 417, 417, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 417, 435, 435,
+
+ 435, 435, 435, 435, 435, 435, 435, 869, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 417, 417, 292, 292, 1089, 292, 292, 292, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 310, 292,
+ 292, 310, 310, 310, 310, 311, 292, 292, 292, 310,
+ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+ 310, 310, 292, 310, 310, 310, 310, 310, 310, 310,
+ 310, 310, 310, 918, 310, 310, 310, 310, 310, 310,
+ 310, 310, 310, 310, 310, 310, 292, 292, 320, 320,
+ 320, 320, 320, 320, 1089, 320, 320, 320, 320, 320,
+
+ 320, 320, 320, 335, 320, 320, 335, 335, 335, 335,
+ 336, 320, 320, 320, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 320, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 922, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 320, 320, 182, 1089, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 185, 1089, 1089, 185, 185, 193,
+ 1089, 193, 193, 193, 193, 193, 193, 193, 193, 193,
+ 247, 247, 247, 247, 247, 247, 247, 247, 279, 279,
+ 279, 279, 282, 1089, 282, 1089, 282, 282, 282, 282,
+
+ 286, 286, 286, 286, 286, 286, 286, 292, 1089, 292,
+ 292, 292, 292, 292, 292, 292, 292, 292, 294, 1089,
+ 294, 294, 294, 294, 294, 294, 294, 294, 294, 297,
+ 1089, 297, 297, 297, 297, 297, 297, 297, 297, 297,
+ 310, 1089, 310, 310, 310, 310, 310, 310, 310, 310,
+ 310, 246, 246, 246, 246, 246, 246, 246, 320, 320,
+ 1089, 320, 320, 320, 320, 320, 320, 320, 320, 321,
+ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
+ 335, 335, 1089, 335, 335, 335, 335, 335, 335, 335,
+ 335, 339, 339, 339, 339, 339, 339, 339, 339, 339,
+
+ 339, 339, 342, 342, 342, 342, 342, 342, 342, 342,
+ 342, 342, 342, 346, 346, 346, 346, 346, 346, 346,
+ 346, 346, 346, 346, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 365, 365, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 368, 368, 368, 368,
+ 368, 368, 368, 368, 368, 368, 368, 372, 372, 372,
+ 372, 372, 372, 372, 372, 372, 372, 372, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 386, 391,
+ 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
+ 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
+
+ 394, 398, 398, 398, 398, 398, 398, 398, 398, 398,
+ 398, 398, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 417, 1089, 417, 417, 417, 417, 417,
+ 417, 417, 417, 417, 419, 1089, 419, 419, 419, 419,
+ 419, 419, 419, 419, 419, 422, 1089, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 435, 1089, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 185, 1089, 1089,
+ 185, 185, 193, 1089, 193, 193, 193, 193, 193, 193,
+ 193, 193, 193, 445, 1089, 1089, 445, 445, 445, 476,
+ 1089, 1089, 476, 246, 246, 246, 246, 246, 246, 246,
+
+ 247, 247, 247, 247, 247, 247, 247, 247, 503, 1089,
+ 1089, 1089, 1089, 503, 503, 503, 503, 517, 517, 517,
+ 517, 517, 517, 520, 520, 520, 520, 521, 1089, 521,
+ 521, 521, 521, 286, 286, 286, 286, 286, 286, 286,
+ 292, 1089, 292, 292, 292, 292, 292, 292, 292, 292,
+ 292, 294, 1089, 294, 294, 294, 294, 294, 294, 294,
+ 294, 294, 297, 1089, 297, 297, 297, 297, 297, 297,
+ 297, 297, 297, 310, 1089, 310, 310, 310, 310, 310,
+ 310, 310, 310, 310, 320, 320, 1089, 320, 320, 320,
+ 320, 320, 320, 320, 320, 321, 321, 321, 321, 321,
+
+ 321, 321, 321, 321, 321, 321, 335, 335, 1089, 335,
+ 335, 335, 335, 335, 335, 335, 335, 339, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 339, 342, 342,
+ 342, 342, 342, 342, 342, 342, 342, 342, 342, 346,
+ 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
+ 360, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 368, 368, 368, 368, 368, 368, 368, 368,
+ 368, 368, 368, 372, 372, 372, 372, 372, 372, 372,
+ 372, 372, 372, 372, 386, 386, 386, 386, 386, 386,
+
+ 386, 386, 386, 386, 386, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 394, 394, 394, 394,
+ 394, 394, 394, 394, 394, 394, 394, 398, 398, 398,
+ 398, 398, 398, 398, 398, 398, 398, 398, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 412, 412, 417,
+ 1089, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 419, 1089, 419, 419, 419, 419, 419, 419, 419, 419,
+ 419, 422, 1089, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 435, 1089, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 185, 1089, 1089, 185, 185, 445, 1089,
+
+ 1089, 445, 445, 445, 476, 1089, 1089, 476, 662, 1089,
+ 662, 662, 662, 662, 662, 662, 662, 662, 662, 665,
+ 1089, 665, 665, 665, 665, 665, 665, 665, 665, 665,
+ 667, 1089, 667, 667, 667, 667, 667, 667, 667, 667,
+ 667, 670, 670, 670, 670, 670, 670, 670, 247, 247,
+ 247, 247, 247, 247, 247, 247, 517, 517, 517, 517,
+ 517, 517, 679, 1089, 679, 679, 679, 679, 521, 1089,
+ 521, 521, 521, 521, 286, 286, 286, 286, 286, 286,
+ 286, 292, 1089, 292, 292, 292, 292, 292, 292, 292,
+ 292, 292, 690, 1089, 690, 690, 690, 690, 690, 690,
+
+ 690, 690, 690, 693, 1089, 693, 693, 693, 693, 693,
+ 693, 693, 693, 693, 694, 1089, 694, 694, 694, 694,
+ 694, 694, 694, 694, 694, 697, 1089, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 246, 246, 246, 246,
+ 246, 246, 246, 320, 320, 1089, 320, 320, 320, 320,
+ 320, 320, 320, 320, 710, 710, 710, 710, 710, 710,
+ 710, 710, 710, 710, 710, 712, 712, 1089, 712, 712,
+ 712, 712, 712, 712, 712, 712, 339, 339, 339, 339,
+ 339, 339, 339, 339, 339, 339, 339, 720, 720, 720,
+ 720, 720, 720, 720, 720, 720, 720, 720, 724, 724,
+
+ 724, 724, 724, 724, 724, 724, 724, 724, 724, 726,
+ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 730,
+ 730, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 738, 738, 738, 738, 738, 738, 738, 738,
+ 738, 738, 738, 742, 742, 742, 742, 742, 742, 742,
+ 742, 742, 742, 742, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 391, 391, 756, 756, 756,
+
+ 756, 756, 756, 756, 756, 756, 756, 756, 760, 760,
+ 760, 760, 760, 760, 760, 760, 760, 760, 760, 762,
+ 762, 762, 762, 762, 762, 762, 762, 762, 762, 762,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
+ 766, 417, 1089, 417, 417, 417, 417, 417, 417, 417,
+ 417, 417, 774, 1089, 774, 774, 774, 774, 774, 774,
+ 774, 774, 774, 777, 1089, 777, 777, 777, 777, 777,
+ 777, 777, 777, 777, 778, 1089, 778, 778, 778, 778,
+ 778, 778, 778, 778, 778, 781, 1089, 781, 781, 781,
+ 781, 781, 781, 781, 781, 781, 445, 1089, 1089, 445,
+
+ 445, 445, 662, 1089, 662, 662, 662, 662, 662, 662,
+ 662, 662, 662, 665, 1089, 665, 665, 665, 665, 665,
+ 665, 665, 665, 665, 667, 1089, 667, 667, 667, 667,
+ 667, 667, 667, 667, 667, 670, 670, 670, 670, 670,
+ 670, 670, 247, 247, 247, 247, 247, 247, 247, 247,
+ 679, 1089, 679, 679, 679, 679, 521, 1089, 521, 521,
+ 521, 521, 286, 286, 286, 286, 286, 286, 286, 292,
+ 1089, 292, 292, 292, 292, 292, 292, 292, 292, 292,
+ 690, 1089, 690, 690, 690, 690, 690, 690, 690, 690,
+ 690, 693, 1089, 693, 693, 693, 693, 693, 693, 693,
+
+ 693, 693, 694, 1089, 694, 694, 694, 694, 694, 694,
+ 694, 694, 694, 697, 1089, 697, 697, 697, 697, 697,
+ 697, 697, 697, 697, 246, 246, 246, 246, 246, 246,
+ 246, 320, 320, 1089, 320, 320, 320, 320, 320, 320,
+ 320, 320, 710, 710, 710, 710, 710, 710, 710, 710,
+ 710, 710, 710, 712, 712, 1089, 712, 712, 712, 712,
+ 712, 712, 712, 712, 339, 339, 339, 339, 339, 339,
+ 339, 339, 339, 339, 339, 720, 720, 720, 720, 720,
+ 720, 720, 720, 720, 720, 720, 724, 724, 724, 724,
+ 724, 724, 724, 724, 724, 724, 724, 726, 726, 726,
- 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,
+ 726, 726, 726, 726, 726, 726, 726, 726, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 730, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
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,
+ 738, 742, 742, 742, 742, 742, 742, 742, 742, 742,
+ 742, 742, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 391, 391, 391, 391, 391, 391,
+ 391, 391, 391, 391, 391, 756, 756, 756, 756, 756,
+ 756, 756, 756, 756, 756, 756, 760, 760, 760, 760,
+
+ 760, 760, 760, 760, 760, 760, 760, 762, 762, 762,
+ 762, 762, 762, 762, 762, 762, 762, 762, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 766, 417,
+ 1089, 417, 417, 417, 417, 417, 417, 417, 417, 417,
+ 774, 1089, 774, 774, 774, 774, 774, 774, 774, 774,
+ 774, 777, 1089, 777, 777, 777, 777, 777, 777, 777,
+ 777, 777, 778, 1089, 778, 778, 778, 778, 778, 778,
+ 778, 778, 778, 781, 1089, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 445, 1089, 1089, 445, 445, 445,
+ 247, 247, 247, 247, 247, 247, 247, 247, 521, 1089,
+
+ 521, 521, 521, 521, 286, 286, 286, 286, 286, 286,
+ 286, 292, 1089, 292, 292, 292, 292, 292, 292, 292,
+ 292, 292, 246, 246, 246, 246, 246, 246, 246, 320,
+ 320, 1089, 320, 320, 320, 320, 320, 320, 320, 320,
+ 23, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
- 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
+ 1089, 1089, 1089, 1089, 1089, 1089
} ;
-static yyconst flex_int16_t yy_chk[7046] =
+static yyconst flex_int16_t yy_chk[7107] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1612,775 +1625,782 @@
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,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 1, 1, 1, 1, 1, 2, 33, 2, 2, 29,
+ 35, 4, 236, 4, 4, 1083, 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, 1079,
+ 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, 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, 1078, 14, 14, 31, 14, 31,
+ 82, 31, 31, 60, 1077, 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, 1075,
+ 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,
- 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,
+ 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, 971, 53, 41, 41,
+ 51, 52, 49, 41, 53, 41, 216, 51, 41, 49,
+ 56, 53, 41, 112, 971, 41, 42, 112, 42, 42,
+
+ 42, 42, 112, 41, 67, 48, 67, 67, 975, 42,
+ 52, 41, 48, 42, 53, 48, 48, 48, 48, 48,
+ 49, 121, 124, 124, 51, 42, 43, 53, 43, 455,
+ 56, 43, 1074, 50, 43, 43, 43, 43, 43, 43,
+ 50, 54, 43, 286, 43, 43, 455, 50, 54, 57,
+ 286, 57, 57, 975, 121, 54, 66, 58, 58, 58,
+ 58, 59, 59, 66, 57, 61, 61, 61, 61, 655,
+ 66, 50, 58, 68, 68, 68, 68, 50, 655, 62,
+ 59, 62, 62, 62, 62, 54, 63, 64, 71, 71,
+ 71, 71, 213, 66, 213, 64, 64, 64, 64, 64,
+
+ 64, 126, 126, 167, 63, 63, 64, 63, 182, 63,
+ 126, 63, 63, 63, 63, 214, 63, 214, 63, 63,
+ 63, 136, 136, 84, 63, 73, 73, 73, 73, 75,
+ 84, 75, 78, 75, 75, 77, 167, 77, 77, 77,
+ 77, 182, 78, 78, 78, 78, 80, 1072, 80, 80,
+ 80, 80, 231, 84, 85, 85, 85, 85, 1071, 80,
+ 231, 83, 849, 80, 83, 83, 83, 83, 83, 78,
+ 78, 138, 138, 285, 78, 80, 86, 86, 86, 86,
+ 93, 285, 93, 93, 93, 93, 94, 94, 94, 94,
+ 849, 100, 96, 100, 100, 101, 101, 101, 101, 96,
+
+ 234, 109, 96, 109, 109, 234, 96, 104, 104, 104,
+ 104, 140, 140, 120, 94, 120, 120, 96, 94, 95,
+ 140, 95, 95, 95, 95, 96, 105, 105, 105, 105,
+ 116, 95, 95, 131, 131, 104, 95, 116, 95, 104,
+ 116, 95, 150, 150, 116, 95, 684, 113, 95, 113,
+ 113, 113, 113, 684, 131, 116, 95, 134, 134, 134,
+ 134, 152, 152, 116, 95, 98, 98, 1068, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
+ 684, 98, 98, 114, 114, 114, 114, 98, 98, 98,
+ 98, 206, 106, 1065, 106, 106, 106, 106, 135, 135,
+
+ 135, 135, 1064, 206, 98, 106, 127, 127, 458, 106,
+ 458, 114, 125, 125, 239, 114, 125, 154, 154, 239,
+ 127, 106, 127, 127, 127, 127, 154, 1063, 98, 98,
+ 99, 99, 239, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 858, 99, 99, 858, 125,
+ 145, 145, 99, 99, 99, 99, 130, 148, 148, 148,
+ 148, 128, 128, 130, 139, 139, 130, 1061, 139, 99,
+ 130, 145, 222, 222, 844, 99, 844, 128, 128, 128,
+ 128, 130, 149, 149, 149, 149, 153, 153, 211, 130,
+ 153, 704, 211, 99, 99, 115, 211, 115, 115, 115,
+
+ 115, 139, 225, 225, 225, 128, 1060, 115, 115, 128,
+ 159, 159, 115, 176, 115, 176, 176, 115, 704, 141,
+ 141, 115, 1059, 153, 115, 162, 162, 162, 162, 230,
+ 230, 159, 115, 141, 274, 141, 141, 141, 141, 274,
+ 115, 118, 118, 118, 118, 118, 118, 1058, 118, 118,
+ 118, 118, 118, 118, 118, 118, 1051, 118, 118, 163,
+ 163, 163, 163, 118, 118, 118, 118, 155, 155, 169,
+ 294, 169, 169, 169, 169, 244, 244, 142, 142, 862,
+ 118, 155, 862, 155, 155, 155, 155, 177, 177, 177,
+ 177, 271, 271, 142, 142, 142, 142, 178, 1046, 178,
+
+ 178, 304, 304, 294, 118, 118, 119, 119, 119, 119,
+ 119, 119, 178, 119, 119, 119, 119, 119, 119, 119,
+ 119, 142, 119, 119, 1045, 142, 419, 144, 119, 119,
+ 119, 119, 232, 158, 144, 1042, 232, 144, 156, 156,
+ 158, 144, 854, 158, 854, 119, 179, 158, 179, 179,
+ 232, 119, 144, 969, 156, 156, 156, 156, 158, 419,
+ 144, 186, 186, 186, 186, 264, 158, 264, 264, 119,
+ 119, 129, 129, 170, 170, 170, 170, 187, 187, 187,
+ 187, 275, 156, 275, 275, 129, 156, 129, 129, 129,
+ 129, 188, 188, 188, 188, 309, 172, 129, 129, 969,
+
+ 309, 170, 129, 172, 129, 170, 172, 129, 329, 329,
+ 172, 129, 1041, 247, 129, 189, 189, 189, 189, 1039,
+ 247, 172, 129, 196, 196, 196, 196, 247, 1038, 172,
+ 129, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 318, 132, 132, 313,
+ 251, 313, 313, 132, 132, 132, 132, 251, 197, 1037,
+ 197, 197, 197, 197, 251, 200, 200, 200, 200, 924,
+ 132, 197, 223, 924, 223, 197, 200, 223, 223, 223,
+ 223, 267, 318, 289, 321, 267, 334, 197, 321, 267,
+ 289, 334, 200, 321, 132, 132, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 920, 133, 133, 262, 496, 262, 262, 133, 133,
+ 133, 133, 221, 221, 221, 221, 289, 1035, 319, 262,
+ 319, 319, 249, 221, 920, 133, 307, 307, 307, 249,
+ 250, 133, 249, 249, 249, 249, 249, 250, 496, 221,
+ 252, 254, 339, 339, 250, 1034, 253, 252, 254, 133,
+ 133, 143, 143, 253, 252, 254, 705, 255, 921, 257,
+ 253, 332, 332, 332, 255, 143, 257, 143, 143, 143,
+ 143, 255, 338, 257, 338, 338, 254, 143, 143, 1033,
+ 250, 921, 143, 705, 143, 341, 341, 143, 253, 253,
+
+ 252, 143, 256, 502, 143, 276, 276, 276, 276, 256,
+ 434, 257, 143, 344, 344, 434, 256, 255, 345, 345,
+ 143, 146, 146, 146, 146, 146, 146, 146, 146, 146,
+ 146, 146, 146, 146, 146, 146, 502, 146, 146, 278,
+ 278, 278, 278, 146, 146, 146, 146, 346, 346, 1032,
+ 256, 280, 280, 280, 280, 280, 346, 1013, 288, 1013,
+ 146, 288, 288, 288, 288, 288, 290, 290, 290, 290,
+ 291, 291, 291, 291, 298, 298, 298, 298, 323, 323,
+ 323, 323, 351, 351, 146, 146, 147, 147, 147, 147,
+ 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
+
+ 147, 866, 147, 147, 866, 347, 347, 918, 147, 147,
+ 147, 147, 918, 299, 347, 299, 299, 299, 299, 352,
+ 352, 300, 300, 300, 300, 147, 299, 356, 356, 351,
+ 299, 147, 300, 303, 303, 303, 303, 354, 354, 342,
+ 342, 850, 299, 342, 303, 365, 365, 1030, 300, 147,
+ 147, 157, 157, 354, 354, 925, 305, 970, 305, 925,
+ 303, 305, 305, 305, 305, 157, 352, 157, 157, 157,
+ 157, 850, 325, 325, 325, 325, 342, 157, 157, 367,
+ 367, 1029, 157, 325, 157, 370, 370, 157, 371, 371,
+ 330, 157, 330, 536, 157, 330, 330, 330, 330, 325,
+
+ 343, 343, 157, 970, 343, 363, 363, 363, 363, 976,
+ 157, 160, 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 160, 160, 160, 160, 160, 536, 160, 160, 364,
+ 364, 364, 364, 160, 160, 160, 160, 343, 317, 538,
+ 317, 317, 317, 317, 324, 1028, 324, 324, 324, 324,
+ 160, 317, 348, 348, 976, 317, 1026, 324, 608, 368,
+ 368, 324, 926, 368, 382, 382, 926, 317, 348, 348,
+ 348, 348, 538, 324, 160, 160, 161, 161, 161, 161,
+ 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
+ 161, 608, 161, 161, 357, 357, 368, 977, 161, 161,
+
+ 161, 161, 328, 328, 328, 328, 350, 350, 372, 372,
+ 357, 357, 357, 328, 927, 161, 972, 372, 927, 355,
+ 355, 161, 350, 350, 350, 350, 610, 369, 369, 328,
+ 355, 369, 355, 350, 972, 355, 355, 355, 355, 161,
+ 161, 171, 977, 171, 171, 171, 171, 359, 359, 350,
+ 919, 359, 662, 171, 171, 919, 359, 1018, 171, 610,
+ 171, 377, 377, 171, 369, 373, 373, 171, 378, 378,
+ 171, 385, 385, 1016, 373, 385, 391, 391, 171, 973,
+ 385, 389, 389, 389, 389, 662, 171, 174, 174, 1014,
+ 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
+
+ 174, 174, 922, 174, 174, 353, 353, 922, 377, 174,
+ 174, 174, 174, 380, 380, 378, 667, 374, 374, 393,
+ 393, 353, 353, 353, 353, 973, 174, 376, 376, 380,
+ 380, 1012, 353, 374, 374, 374, 374, 390, 390, 390,
+ 390, 396, 396, 376, 376, 376, 376, 1011, 353, 667,
+ 174, 174, 175, 175, 376, 175, 175, 175, 175, 175,
+ 175, 175, 175, 175, 175, 175, 175, 974, 175, 175,
+ 376, 379, 379, 1010, 175, 175, 175, 175, 397, 397,
+ 408, 408, 1009, 381, 381, 403, 403, 379, 379, 379,
+ 379, 175, 383, 383, 381, 1007, 381, 175, 379, 381,
+
+ 381, 381, 381, 398, 398, 429, 429, 928, 383, 383,
+ 383, 928, 398, 974, 379, 175, 175, 308, 308, 308,
+ 308, 1006, 399, 399, 472, 472, 308, 308, 308, 394,
+ 394, 399, 403, 394, 690, 395, 395, 404, 404, 395,
+ 308, 308, 308, 308, 308, 308, 310, 310, 1005, 310,
+ 310, 310, 310, 310, 310, 310, 310, 310, 310, 310,
+ 310, 1004, 310, 310, 400, 400, 394, 690, 310, 310,
+ 310, 310, 395, 406, 406, 407, 407, 432, 432, 432,
+ 400, 400, 400, 400, 404, 310, 407, 1003, 407, 406,
+ 406, 407, 407, 407, 407, 411, 411, 531, 531, 411,
+
+ 415, 415, 415, 415, 411, 416, 416, 416, 416, 310,
+ 310, 311, 311, 1002, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 312, 312, 1001, 312,
+ 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
+ 312, 923, 312, 312, 402, 402, 923, 481, 312, 312,
+
+ 312, 312, 409, 409, 998, 481, 405, 405, 481, 978,
+ 402, 402, 402, 402, 438, 312, 438, 438, 409, 409,
+ 409, 402, 405, 405, 405, 405, 423, 423, 423, 423,
+ 475, 475, 475, 405, 312, 549, 549, 402, 997, 312,
+ 312, 333, 333, 333, 333, 439, 996, 439, 439, 405,
+ 333, 333, 333, 430, 978, 430, 603, 603, 430, 430,
+ 430, 430, 678, 678, 333, 333, 333, 333, 333, 333,
+ 335, 335, 335, 335, 335, 335, 995, 335, 335, 335,
+ 335, 335, 335, 335, 335, 967, 335, 335, 440, 440,
+ 440, 440, 335, 335, 335, 335, 967, 424, 993, 424,
+
+ 424, 424, 424, 967, 425, 425, 425, 425, 991, 335,
+ 424, 534, 534, 534, 424, 425, 441, 441, 441, 441,
+ 442, 442, 442, 442, 701, 701, 424, 443, 443, 443,
+ 443, 425, 990, 335, 335, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+ 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
+
+ 337, 337, 337, 337, 337, 337, 989, 337, 337, 337,
+ 337, 337, 337, 337, 337, 988, 337, 337, 428, 428,
+ 428, 428, 337, 337, 337, 337, 444, 544, 444, 428,
+ 987, 444, 444, 444, 444, 471, 471, 471, 471, 337,
+ 473, 473, 473, 473, 986, 428, 471, 474, 474, 474,
+ 474, 544, 985, 504, 505, 544, 694, 1015, 337, 1015,
+ 504, 505, 471, 337, 337, 349, 349, 504, 505, 558,
+ 558, 506, 984, 507, 532, 532, 532, 532, 506, 349,
+ 507, 349, 349, 349, 349, 506, 508, 507, 509, 694,
+ 511, 510, 349, 508, 983, 509, 349, 511, 510, 505,
+
+ 508, 962, 509, 554, 511, 510, 512, 554, 349, 358,
+ 358, 526, 554, 512, 774, 507, 870, 558, 526, 870,
+ 512, 533, 533, 533, 533, 358, 358, 358, 358, 510,
+ 1017, 511, 1017, 510, 358, 358, 358, 519, 519, 519,
+ 519, 519, 526, 512, 572, 572, 526, 774, 358, 358,
+ 358, 358, 358, 358, 360, 360, 360, 360, 360, 360,
+ 360, 360, 360, 360, 360, 360, 360, 360, 360, 805,
+ 360, 360, 530, 530, 530, 530, 360, 360, 360, 360,
+ 527, 960, 527, 530, 805, 527, 527, 527, 527, 545,
+ 805, 545, 572, 360, 545, 545, 545, 545, 959, 530,
+
+ 550, 550, 550, 550, 551, 551, 551, 551, 552, 552,
+ 552, 604, 604, 604, 604, 722, 722, 360, 360, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 362, 362, 362, 362, 362, 362,
+ 362, 362, 362, 362, 362, 362, 362, 362, 362, 958,
+
+ 362, 362, 548, 548, 548, 548, 362, 362, 362, 362,
+ 559, 559, 957, 548, 557, 557, 566, 566, 560, 560,
+ 566, 718, 718, 362, 929, 557, 955, 557, 929, 548,
+ 557, 557, 557, 557, 560, 560, 560, 560, 561, 561,
+ 562, 562, 362, 567, 567, 560, 778, 362, 362, 375,
+ 375, 954, 567, 566, 561, 561, 562, 562, 562, 562,
+ 559, 560, 953, 375, 718, 375, 375, 375, 375, 563,
+ 563, 568, 568, 564, 564, 568, 375, 573, 573, 778,
+ 375, 575, 575, 576, 576, 563, 563, 563, 563, 564,
+ 564, 564, 375, 384, 384, 581, 581, 575, 575, 576,
+
+ 576, 576, 576, 930, 581, 577, 577, 930, 568, 384,
+ 384, 384, 384, 578, 578, 952, 586, 586, 384, 384,
+ 384, 577, 577, 577, 577, 719, 719, 573, 951, 578,
+ 578, 578, 384, 384, 384, 384, 384, 384, 386, 386,
+ 386, 386, 386, 386, 386, 386, 386, 386, 386, 386,
+ 386, 386, 386, 950, 386, 386, 571, 571, 723, 723,
+ 386, 386, 386, 386, 586, 585, 585, 571, 719, 571,
+ 589, 589, 571, 571, 571, 571, 585, 386, 585, 590,
+ 590, 585, 585, 585, 585, 949, 589, 589, 728, 728,
+ 595, 595, 606, 606, 606, 590, 590, 590, 590, 595,
- 364, 364, 364, 364, 364, 364, 364, 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,
+ 948, 386, 386, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
+ 387, 387, 387, 387, 387, 387, 387, 387, 388, 388,
388, 388, 388, 388, 388, 388, 388, 388, 388, 388,
- 388, 389, 389, 389, 389, 389, 389, 389, 389, 389,
+ 388, 388, 388, 968, 388, 388, 574, 574, 587, 587,
+ 388, 388, 388, 388, 968, 602, 602, 602, 602, 729,
- 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,
+ 729, 968, 574, 574, 574, 574, 602, 388, 580, 580,
+ 724, 724, 580, 574, 685, 946, 582, 582, 945, 724,
+ 582, 685, 602, 672, 594, 594, 388, 944, 594, 574,
+ 672, 388, 388, 401, 401, 725, 725, 672, 587, 588,
+ 588, 943, 596, 596, 725, 580, 596, 401, 685, 401,
+ 401, 401, 401, 582, 942, 588, 588, 588, 588, 941,
+ 401, 594, 740, 740, 401, 710, 588, 591, 591, 710,
+ 940, 592, 592, 1025, 710, 1025, 401, 410, 410, 596,
+ 741, 741, 588, 591, 591, 591, 591, 592, 592, 592,
+ 746, 746, 979, 410, 410, 410, 410, 605, 605, 605,
+
+ 605, 673, 410, 410, 410, 599, 939, 599, 673, 938,
+ 599, 599, 599, 599, 937, 673, 410, 410, 410, 410,
+ 410, 410, 412, 412, 412, 412, 412, 412, 412, 412,
+ 412, 412, 412, 412, 412, 412, 412, 979, 412, 412,
+ 613, 613, 613, 613, 412, 412, 412, 412, 614, 614,
+ 614, 614, 686, 686, 686, 686, 687, 687, 687, 687,
+ 936, 412, 706, 706, 706, 706, 707, 707, 707, 707,
+ 731, 731, 742, 742, 731, 743, 743, 747, 747, 749,
+ 749, 742, 935, 749, 743, 412, 412, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
+ 413, 413, 414, 414, 414, 414, 414, 414, 414, 414,
+ 414, 414, 414, 414, 414, 414, 414, 934, 414, 414,
+ 932, 674, 675, 910, 414, 414, 414, 414, 674, 675,
+ 676, 677, 716, 716, 909, 674, 675, 676, 677, 717,
+ 717, 414, 720, 720, 676, 677, 720, 840, 716, 716,
+
+ 716, 716, 758, 758, 840, 717, 717, 717, 717, 907,
+ 414, 906, 674, 675, 904, 414, 414, 433, 433, 433,
+ 433, 736, 736, 903, 676, 902, 433, 433, 433, 720,
+ 677, 899, 737, 737, 840, 721, 721, 759, 759, 721,
+ 433, 433, 433, 433, 433, 433, 435, 435, 789, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 789, 435, 435, 736, 734, 734, 789, 435, 435,
+ 435, 435, 721, 735, 735, 737, 726, 726, 752, 752,
+ 726, 734, 734, 734, 734, 435, 753, 753, 898, 735,
+ 735, 735, 735, 897, 752, 752, 752, 752, 760, 760,
+
+ 764, 764, 753, 753, 753, 753, 896, 760, 895, 435,
+ 435, 436, 436, 726, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 437, 437, 893, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 980, 437, 437, 754, 754, 761, 761, 437, 437,
+
+ 437, 437, 892, 755, 755, 761, 765, 765, 727, 727,
+ 738, 738, 727, 891, 738, 437, 739, 739, 744, 744,
+ 739, 890, 744, 745, 745, 756, 756, 745, 889, 756,
+ 888, 767, 767, 886, 437, 767, 980, 754, 885, 437,
+ 437, 535, 535, 535, 535, 727, 755, 738, 855, 855,
+ 535, 535, 535, 739, 981, 744, 770, 770, 770, 770,
+ 745, 884, 756, 883, 535, 535, 535, 535, 535, 535,
+ 539, 539, 881, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 982, 539, 539, 771, 771,
+ 771, 771, 539, 539, 539, 539, 839, 856, 856, 981,
+
+ 757, 757, 880, 839, 757, 857, 857, 859, 859, 539,
+ 860, 860, 861, 861, 863, 863, 864, 864, 865, 865,
+ 869, 869, 915, 931, 915, 915, 966, 931, 966, 966,
+ 982, 839, 879, 539, 539, 540, 540, 757, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+
+ 553, 553, 553, 553, 1019, 1019, 1019, 832, 1019, 553,
+ 553, 553, 762, 762, 832, 878, 762, 877, 763, 763,
+ 876, 832, 763, 553, 553, 553, 553, 553, 553, 555,
+ 555, 555, 555, 555, 555, 875, 555, 555, 555, 555,
+ 555, 555, 555, 555, 874, 555, 555, 1054, 1054, 762,
+ 831, 555, 555, 555, 555, 763, 832, 831, 829, 913,
+ 914, 872, 933, 871, 831, 829, 913, 914, 555, 1020,
+ 1020, 1020, 829, 913, 914, 933, 1021, 1021, 1021, 846,
+ 1021, 933, 1022, 1022, 1022, 837, 1023, 1023, 1023, 831,
+ 1023, 834, 555, 555, 556, 556, 556, 556, 556, 556,
- 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,
+ 829, 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, 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,
+ 556, 556, 556, 556, 556, 556, 556, 556, 556, 565,
+ 565, 916, 917, 964, 1024, 1024, 1024, 964, 916, 917,
+ 1055, 1055, 1056, 1056, 964, 565, 565, 565, 565, 965,
+ 830, 964, 911, 965, 565, 565, 565, 830, 828, 911,
+ 965, 916, 917, 827, 830, 826, 911, 965, 565, 565,
+
+ 565, 565, 565, 565, 569, 569, 569, 569, 569, 569,
+ 569, 569, 569, 569, 569, 569, 569, 569, 569, 911,
+ 569, 569, 825, 912, 830, 824, 569, 569, 569, 569,
+ 912, 823, 822, 821, 820, 819, 818, 912, 817, 814,
+ 813, 811, 809, 569, 807, 806, 804, 803, 802, 801,
+ 800, 799, 798, 797, 796, 794, 793, 792, 791, 788,
+ 912, 786, 785, 784, 782, 777, 773, 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, 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,
+ 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
+ 570, 570, 570, 570, 579, 579, 772, 769, 751, 733,
+ 715, 713, 709, 708, 703, 702, 700, 698, 693, 689,
+ 579, 579, 579, 579, 688, 683, 682, 681, 680, 579,
+ 579, 579, 671, 670, 665, 661, 660, 659, 658, 657,
+ 656, 654, 653, 579, 579, 579, 579, 579, 579, 583,
+ 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
+ 583, 583, 583, 583, 652, 583, 583, 651, 650, 649,
- 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,
+ 647, 583, 583, 583, 583, 646, 645, 644, 643, 642,
+ 641, 640, 639, 637, 636, 635, 634, 633, 583, 632,
+ 631, 630, 629, 628, 627, 625, 624, 623, 622, 621,
+ 620, 619, 618, 617, 616, 609, 601, 600, 547, 546,
+ 543, 542, 583, 583, 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,
- 0, 0, 0, 0, 669, 669, 669, 669, 0, 0,
+ 584, 584, 584, 584, 584, 584, 584, 584, 584, 593,
+ 593, 541, 537, 529, 528, 525, 524, 523, 522, 517,
+ 516, 515, 514, 513, 503, 593, 593, 593, 593, 500,
+ 497, 495, 494, 493, 593, 593, 593, 492, 491, 490,
+ 489, 488, 487, 486, 485, 484, 483, 482, 593, 593,
+ 593, 593, 593, 593, 597, 597, 597, 597, 597, 597,
+ 597, 597, 597, 597, 597, 597, 597, 597, 597, 480,
+ 597, 597, 479, 478, 477, 469, 597, 597, 597, 597,
+ 468, 467, 466, 465, 464, 463, 462, 461, 460, 459,
+ 457, 456, 454, 597, 453, 452, 451, 450, 449, 448,
+
+ 447, 446, 427, 426, 422, 327, 326, 316, 315, 314,
+ 302, 301, 297, 287, 284, 283, 279, 597, 597, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 598, 607, 607, 607, 607, 273, 272,
+ 270, 269, 268, 607, 607, 607, 266, 265, 263, 248,
+
+ 246, 245, 238, 237, 235, 229, 228, 607, 607, 607,
+ 607, 607, 607, 611, 611, 227, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 219, 611,
+ 611, 218, 217, 215, 210, 611, 611, 611, 611, 208,
+ 207, 205, 204, 203, 193, 173, 168, 166, 117, 107,
+ 102, 97, 611, 92, 90, 87, 81, 76, 69, 65,
+ 34, 32, 28, 23, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 611, 611, 612, 612,
+ 0, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+
+ 612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 612, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 612, 612, 697, 697, 0, 697, 697, 697, 697,
+ 697, 697, 697, 697, 697, 697, 697, 697, 0, 697,
+ 697, 0, 0, 0, 0, 697, 697, 697, 697, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 669, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 697, 0, 0, 0, 0, 0, 0, 0,
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, 697, 697, 699, 699,
+ 0, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
+ 699, 699, 699, 712, 712, 712, 712, 712, 712, 0,
+ 712, 712, 712, 712, 712, 712, 712, 712, 0, 712,
+ 712, 0, 0, 0, 0, 712, 712, 712, 712, 0,
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 702, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 712, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 712, 712, 714, 714,
+ 714, 714, 714, 714, 0, 714, 714, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
- 0, 0, 0, 0, 0, 702, 702, 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,
-
+ 714, 714, 714, 730, 730, 730, 730, 730, 730, 730,
+ 730, 730, 730, 730, 730, 730, 730, 730, 0, 730,
+ 730, 0, 0, 0, 0, 730, 730, 730, 730, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 720, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 730, 0, 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, 730, 730, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+ 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
+ 732, 732, 732, 748, 748, 748, 748, 748, 748, 748,
+ 748, 748, 748, 748, 748, 748, 748, 748, 0, 748,
+ 748, 0, 0, 0, 0, 748, 748, 748, 748, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 738, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 748, 0, 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, 748, 748, 750, 750,
+
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
+ 750, 750, 750, 766, 766, 766, 766, 766, 766, 766,
+ 766, 766, 766, 766, 766, 766, 766, 766, 0, 766,
+ 766, 0, 0, 0, 0, 766, 766, 766, 766, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 753, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 766, 0, 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, 766, 766, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
+ 768, 768, 768, 781, 781, 0, 781, 781, 781, 781,
- 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, 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,
+ 781, 781, 781, 781, 781, 781, 781, 781, 0, 781,
+ 781, 0, 0, 0, 0, 781, 781, 781, 781, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 781, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 781, 781, 783, 783,
+ 0, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
+ 783, 783, 783, 843, 843, 0, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 843, 843,
+ 843, 843, 843, 843, 843, 843, 843, 843, 853, 853,
+ 853, 853, 853, 853, 0, 853, 853, 853, 853, 853,
+
+ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ 853, 853, 853, 1090, 0, 1090, 1090, 1090, 1090, 1090,
+ 1090, 1090, 1090, 1090, 1091, 0, 0, 1091, 1091, 1092,
+ 0, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092,
+ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094,
+ 1094, 1094, 1095, 0, 1095, 0, 1095, 1095, 1095, 1095,
+
+ 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 0, 1097,
+ 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098, 0,
+ 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
+ 0, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+ 1100, 0, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+ 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1102,
+ 0, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
+ 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+ 1104, 1104, 0, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+ 1104, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
+
+ 1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
+ 1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
+ 1107, 1107, 1107, 1107, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109,
+ 1109, 1109, 1109, 1109, 1109, 1109, 1110, 1110, 1110, 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,
- 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,
-
- 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
+ 1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+ 1115, 1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+ 1116, 1116, 1116, 1117, 0, 1117, 1117, 1117, 1117, 1117,
+ 1117, 1117, 1117, 1117, 1118, 0, 1118, 1118, 1118, 1118,
+ 1118, 1118, 1118, 1118, 1118, 1119, 0, 1119, 1119, 1119,
+ 1119, 1119, 1119, 1119, 1119, 1119, 1120, 0, 1120, 1120,
+ 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 0, 0,
+ 1121, 1121, 1122, 0, 1122, 1122, 1122, 1122, 1122, 1122,
+ 1122, 1122, 1122, 1123, 0, 0, 1123, 1123, 1123, 1124,
+ 0, 0, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+
+ 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127, 0,
+ 0, 0, 0, 1127, 1127, 1127, 1127, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1130, 0, 1130,
+ 1130, 1130, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
+ 1132, 0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+ 1132, 1133, 0, 1133, 1133, 1133, 1133, 1133, 1133, 1133,
+ 1133, 1133, 1134, 0, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1135, 0, 1135, 1135, 1135, 1135, 1135,
+ 1135, 1135, 1135, 1135, 1136, 1136, 0, 1136, 1136, 1136,
+ 1136, 1136, 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137,
+
+ 1137, 1137, 1137, 1137, 1137, 1137, 1138, 1138, 0, 1138,
+ 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1139, 1139,
+ 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140,
+ 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141,
+ 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
+ 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
+ 1142, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+ 1143, 1143, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
+ 1144, 1144, 1144, 1145, 1145, 1145, 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,
+ 0, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+ 1152, 0, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
+ 1152, 1153, 0, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1154, 0, 1154, 1154, 1154, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1155, 0, 0, 1155, 1155, 1156, 0,
+
+ 0, 1156, 1156, 1156, 1157, 0, 0, 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, 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1162, 1162, 1163, 1163, 1163, 1163,
+ 1163, 1163, 1164, 0, 1164, 1164, 1164, 1164, 1165, 0,
+ 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166,
+ 1166, 1167, 0, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
+ 1167, 1167, 1168, 0, 1168, 1168, 1168, 1168, 1168, 1168,
+
+ 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, 0, 1173, 1173, 1173, 1173,
+ 1173, 1173, 1173, 1173, 1174, 1174, 1174, 1174, 1174, 1174,
+ 1174, 1174, 1174, 1174, 1174, 1175, 1175, 0, 1175, 1175,
+ 1175, 1175, 1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176,
+ 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, 1177, 1177,
+ 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178,
+
+ 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179,
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+ 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+ 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+ 1182, 1182, 1182, 1183, 1183, 1183, 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, 0, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+ 1191, 1191, 1192, 0, 1192, 1192, 1192, 1192, 1192, 1192,
+ 1192, 1192, 1192, 1193, 0, 1193, 1193, 1193, 1193, 1193,
+ 1193, 1193, 1193, 1193, 1194, 0, 1194, 1194, 1194, 1194,
+ 1194, 1194, 1194, 1194, 1194, 1195, 0, 1195, 1195, 1195,
+ 1195, 1195, 1195, 1195, 1195, 1195, 1196, 0, 0, 1196,
+
+ 1196, 1196, 1197, 0, 1197, 1197, 1197, 1197, 1197, 1197,
+ 1197, 1197, 1197, 1198, 0, 1198, 1198, 1198, 1198, 1198,
+ 1198, 1198, 1198, 1198, 1199, 0, 1199, 1199, 1199, 1199,
+ 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200,
+ 1200, 1200, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
+ 1202, 0, 1202, 1202, 1202, 1202, 1203, 0, 1203, 1203,
+ 1203, 1203, 1204, 1204, 1204, 1204, 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, 0, 1208, 1208, 1208, 1208, 1208, 1208,
+ 1208, 1208, 1208, 1209, 0, 1209, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, 1210, 1210,
+ 1210, 1211, 1211, 0, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
+ 1212, 1212, 1212, 1213, 1213, 0, 1213, 1213, 1213, 1213,
+ 1213, 1213, 1213, 1213, 1214, 1214, 1214, 1214, 1214, 1214,
+ 1214, 1214, 1214, 1214, 1214, 1215, 1215, 1215, 1215, 1215,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1216, 1216, 1216, 1216,
+ 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 1217, 1217,
+
+ 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218,
+ 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219,
+ 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
+ 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+ 1220, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
+ 1221, 1221, 1222, 1222, 1222, 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,
+ 0, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229,
+ 1230, 0, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ 1230, 1231, 0, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+ 1231, 1231, 1232, 0, 1232, 1232, 1232, 1232, 1232, 1232,
+ 1232, 1232, 1232, 1233, 0, 1233, 1233, 1233, 1233, 1233,
+ 1233, 1233, 1233, 1233, 1234, 0, 0, 1234, 1234, 1234,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 0,
+
+ 1236, 1236, 1236, 1236, 1237, 1237, 1237, 1237, 1237, 1237,
+ 1237, 1238, 0, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
+ 1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240,
+ 1240, 0, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+ 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+
+ 1089, 1089, 1089, 1089, 1089, 1089
} ;
/* The intent behind this definition is that it'll catch
@@ -2460,6 +2480,8 @@
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')
@@ -2489,7 +2511,7 @@
-#line 2493 "compilers/imcc/imclexer.c"
+#line 2515 "compilers/imcc/imclexer.c"
#define INITIAL 0
#define emit 1
@@ -2734,7 +2756,7 @@
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 152 "compilers/imcc/imcc.l"
+#line 154 "compilers/imcc/imcc.l"
/* for emacs "*/
if (IMCC_INFO(interp)->expect_pasm == 1 && !IMCC_INFO(interp)->in_pod) {
@@ -2753,7 +2775,7 @@
return 0;
}
-#line 2757 "compilers/imcc/imclexer.c"
+#line 2779 "compilers/imcc/imclexer.c"
if ( !yyg->yy_init )
{
@@ -2807,13 +2829,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 >= 1090 )
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 != 1089 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -2834,24 +2856,29 @@
goto yy_find_action;
case 1:
-/* rule 1 can match eol */
YY_RULE_SETUP
-#line 170 "compilers/imcc/imcc.l"
+#line 172 "compilers/imcc/imcc.l"
+{ IMCC_INFO(interp)->line++; }
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 174 "compilers/imcc/imcc.l"
{
+ IMCC_INFO(interp)->line++;
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 180 "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 +2887,11 @@
strlen(IMCC_INFO(interp)->heredoc_content), yytext);
}
YY_BREAK
-case 3:
+case 4:
YY_RULE_SETUP
-#line 189 "compilers/imcc/imcc.l"
+#line 193 "compilers/imcc/imcc.l"
{
+ IMCC_INFO(interp)->line++;
/* Are we at the end of the heredoc? */
if (STREQ(IMCC_INFO(interp)->heredoc_end, yytext)) {
/* End of the heredoc. */
@@ -2886,7 +2914,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 +2929,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 232 "compilers/imcc/imcc.l"
{
yy_pop_state(yyscanner);
yy_push_state(cmt3, yyscanner);
@@ -2915,27 +2943,27 @@
return FILECOMMENT;
}
YY_BREAK
-case 5:
+case 6:
YY_RULE_SETUP
-#line 237 "compilers/imcc/imcc.l"
+#line 242 "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 247 "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 249 "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 251 "compilers/imcc/imcc.l"
{
IMCC_INFO(interp)->line = atoi(yytext);
yy_pop_state(yyscanner);
@@ -2943,40 +2971,38 @@
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 258 "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 262 "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 271 "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 275 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->expect_pasm == 2)
BEGIN(INITIAL);
@@ -2984,512 +3010,512 @@
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 287 "compilers/imcc/imcc.l"
{
/* this is a stand-alone =cut, but we're not in POD mode, so ignore. */
IMCC_INFO(interp)->line++;
}
YY_BREAK
-case 14:
+case 15:
YY_RULE_SETUP
-#line 290 "compilers/imcc/imcc.l"
+#line 292 "compilers/imcc/imcc.l"
{
+ IMCC_INFO(interp)->line++;
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 298 "compilers/imcc/imcc.l"
{
+ IMCC_INFO(interp)->line++;
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"
+#line 304 "compilers/imcc/imcc.l"
{ IMCC_INFO(interp)->line++; }
YY_BREAK
case 18:
+/* rule 18 can match eol */
YY_RULE_SETUP
-#line 305 "compilers/imcc/imcc.l"
-return TK_LINE;
+#line 306 "compilers/imcc/imcc.l"
+{ /* ignore */ }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 306 "compilers/imcc/imcc.l"
-return TK_FILE;
+#line 308 "compilers/imcc/imcc.l"
+return TK_LINE;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 307 "compilers/imcc/imcc.l"
-return ANNOTATE;
+#line 309 "compilers/imcc/imcc.l"
+return TK_FILE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 308 "compilers/imcc/imcc.l"
-return LEXICAL;
+#line 310 "compilers/imcc/imcc.l"
+return ANNOTATE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 309 "compilers/imcc/imcc.l"
-return ARG;
+#line 311 "compilers/imcc/imcc.l"
+return LEXICAL;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 310 "compilers/imcc/imcc.l"
-return SUB;
+#line 312 "compilers/imcc/imcc.l"
+return ARG;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 311 "compilers/imcc/imcc.l"
-return ESUB;
+#line 313 "compilers/imcc/imcc.l"
+return SUB;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 312 "compilers/imcc/imcc.l"
-return PCC_BEGIN;
+#line 314 "compilers/imcc/imcc.l"
+return ESUB;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 313 "compilers/imcc/imcc.l"
-return PCC_END;
+#line 315 "compilers/imcc/imcc.l"
+return PCC_BEGIN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 314 "compilers/imcc/imcc.l"
-return PCC_CALL;
+#line 316 "compilers/imcc/imcc.l"
+return PCC_END;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 315 "compilers/imcc/imcc.l"
-return NCI_CALL;
+#line 317 "compilers/imcc/imcc.l"
+return PCC_CALL;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 316 "compilers/imcc/imcc.l"
-return METH_CALL;
+#line 318 "compilers/imcc/imcc.l"
+return NCI_CALL;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 317 "compilers/imcc/imcc.l"
-return INVOCANT;
+#line 319 "compilers/imcc/imcc.l"
+return METH_CALL;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 318 "compilers/imcc/imcc.l"
-return PCC_SUB;
+#line 320 "compilers/imcc/imcc.l"
+return INVOCANT;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 319 "compilers/imcc/imcc.l"
-return PCC_BEGIN_RETURN;
+#line 321 "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 322 "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 323 "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 324 "compilers/imcc/imcc.l"
+return PCC_BEGIN_YIELD;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 324 "compilers/imcc/imcc.l"
-return METHOD;
+#line 325 "compilers/imcc/imcc.l"
+return PCC_END_YIELD;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 325 "compilers/imcc/imcc.l"
-return MULTI;
+#line 327 "compilers/imcc/imcc.l"
+return METHOD;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 326 "compilers/imcc/imcc.l"
-return MAIN;
+#line 328 "compilers/imcc/imcc.l"
+return MULTI;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 327 "compilers/imcc/imcc.l"
-return LOAD;
+#line 329 "compilers/imcc/imcc.l"
+return MAIN;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 328 "compilers/imcc/imcc.l"
-return INIT;
+#line 330 "compilers/imcc/imcc.l"
+return LOAD;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 329 "compilers/imcc/imcc.l"
-return IMMEDIATE;
+#line 331 "compilers/imcc/imcc.l"
+return INIT;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 330 "compilers/imcc/imcc.l"
-return POSTCOMP;
+#line 332 "compilers/imcc/imcc.l"
+return IMMEDIATE;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 331 "compilers/imcc/imcc.l"
-return ANON;
+#line 333 "compilers/imcc/imcc.l"
+return POSTCOMP;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 332 "compilers/imcc/imcc.l"
-return OUTER;
+#line 334 "compilers/imcc/imcc.l"
+return ANON;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 333 "compilers/imcc/imcc.l"
-return NEED_LEX;
+#line 335 "compilers/imcc/imcc.l"
+return OUTER;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 334 "compilers/imcc/imcc.l"
-return VTABLE_METHOD;
+#line 336 "compilers/imcc/imcc.l"
+return NEED_LEX;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 335 "compilers/imcc/imcc.l"
-return NS_ENTRY;
+#line 337 "compilers/imcc/imcc.l"
+return VTABLE_METHOD;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 336 "compilers/imcc/imcc.l"
-return UNIQUE_REG;
+#line 338 "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 339 "compilers/imcc/imcc.l"
+return UNIQUE_REG;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 338 "compilers/imcc/imcc.l"
-return SUBID;
+#line 340 "compilers/imcc/imcc.l"
+return SUB_INSTANCE_OF;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 340 "compilers/imcc/imcc.l"
-return RESULT;
+#line 341 "compilers/imcc/imcc.l"
+return SUBID;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 341 "compilers/imcc/imcc.l"
-return GET_RESULTS;
+#line 343 "compilers/imcc/imcc.l"
+return RESULT;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 342 "compilers/imcc/imcc.l"
-return YIELDT;
+#line 344 "compilers/imcc/imcc.l"
+return GET_RESULTS;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 343 "compilers/imcc/imcc.l"
-return SET_YIELD;
+#line 345 "compilers/imcc/imcc.l"
+return YIELDT;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 344 "compilers/imcc/imcc.l"
-return RETURN;
+#line 346 "compilers/imcc/imcc.l"
+return SET_YIELD;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 345 "compilers/imcc/imcc.l"
-return SET_RETURN;
+#line 347 "compilers/imcc/imcc.l"
+return RETURN;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 346 "compilers/imcc/imcc.l"
-return TAILCALL;
+#line 348 "compilers/imcc/imcc.l"
+return SET_RETURN;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 347 "compilers/imcc/imcc.l"
-return LOADLIB;
+#line 349 "compilers/imcc/imcc.l"
+return TAILCALL;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 349 "compilers/imcc/imcc.l"
-return ADV_FLAT;
+#line 350 "compilers/imcc/imcc.l"
+return LOADLIB;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 350 "compilers/imcc/imcc.l"
-return ADV_SLURPY;
+#line 352 "compilers/imcc/imcc.l"
+return ADV_FLAT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 351 "compilers/imcc/imcc.l"
-return ADV_OPTIONAL;
+#line 353 "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 354 "compilers/imcc/imcc.l"
+return ADV_OPTIONAL;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 353 "compilers/imcc/imcc.l"
-return ADV_NAMED;
+#line 355 "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 356 "compilers/imcc/imcc.l"
+return ADV_NAMED;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 355 "compilers/imcc/imcc.l"
-return ADV_INVOCANT;
+#line 357 "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 358 "compilers/imcc/imcc.l"
+return ADV_INVOCANT;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 358 "compilers/imcc/imcc.l"
-return NAMESPACE;
+#line 359 "compilers/imcc/imcc.l"
+return ADV_CALL_SIG;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 359 "compilers/imcc/imcc.l"
-return HLL;
+#line 361 "compilers/imcc/imcc.l"
+return NAMESPACE;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 361 "compilers/imcc/imcc.l"
+#line 362 "compilers/imcc/imcc.l"
+return HLL;
+ YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 364 "compilers/imcc/imcc.l"
return LOCAL;
YY_BREAK
-case 70:
+case 71:
YY_RULE_SETUP
-#line 362 "compilers/imcc/imcc.l"
+#line 365 "compilers/imcc/imcc.l"
return CONST;
YY_BREAK
-case 71:
+case 72:
YY_RULE_SETUP
-#line 363 "compilers/imcc/imcc.l"
+#line 366 "compilers/imcc/imcc.l"
return GLOBAL_CONST;
YY_BREAK
-case 72:
+case 73:
YY_RULE_SETUP
-#line 364 "compilers/imcc/imcc.l"
+#line 367 "compilers/imcc/imcc.l"
return PARAM;
YY_BREAK
-case 73:
+case 74:
YY_RULE_SETUP
-#line 365 "compilers/imcc/imcc.l"
+#line 368 "compilers/imcc/imcc.l"
return GOTO;
YY_BREAK
-case 74:
+case 75:
YY_RULE_SETUP
-#line 366 "compilers/imcc/imcc.l"
+#line 369 "compilers/imcc/imcc.l"
return IF;
YY_BREAK
-case 75:
+case 76:
YY_RULE_SETUP
-#line 367 "compilers/imcc/imcc.l"
+#line 370 "compilers/imcc/imcc.l"
return UNLESS;
YY_BREAK
-case 76:
+case 77:
YY_RULE_SETUP
-#line 368 "compilers/imcc/imcc.l"
+#line 371 "compilers/imcc/imcc.l"
return PNULL;
YY_BREAK
-case 77:
+case 78:
YY_RULE_SETUP
-#line 369 "compilers/imcc/imcc.l"
+#line 372 "compilers/imcc/imcc.l"
return INTV;
YY_BREAK
-case 78:
+case 79:
YY_RULE_SETUP
-#line 370 "compilers/imcc/imcc.l"
+#line 373 "compilers/imcc/imcc.l"
return FLOATV;
YY_BREAK
-case 79:
+case 80:
YY_RULE_SETUP
-#line 372 "compilers/imcc/imcc.l"
+#line 375 "compilers/imcc/imcc.l"
return PMCV;
YY_BREAK
-case 80:
+case 81:
YY_RULE_SETUP
-#line 373 "compilers/imcc/imcc.l"
+#line 376 "compilers/imcc/imcc.l"
return STRINGV;
YY_BREAK
-case 81:
+case 82:
YY_RULE_SETUP
-#line 374 "compilers/imcc/imcc.l"
+#line 377 "compilers/imcc/imcc.l"
return SHIFT_LEFT;
YY_BREAK
-case 82:
+case 83:
YY_RULE_SETUP
-#line 375 "compilers/imcc/imcc.l"
+#line 378 "compilers/imcc/imcc.l"
return SHIFT_RIGHT;
YY_BREAK
-case 83:
+case 84:
YY_RULE_SETUP
-#line 376 "compilers/imcc/imcc.l"
+#line 379 "compilers/imcc/imcc.l"
return SHIFT_RIGHT_U;
YY_BREAK
-case 84:
+case 85:
YY_RULE_SETUP
-#line 377 "compilers/imcc/imcc.l"
+#line 380 "compilers/imcc/imcc.l"
return LOG_AND;
YY_BREAK
-case 85:
+case 86:
YY_RULE_SETUP
-#line 378 "compilers/imcc/imcc.l"
+#line 381 "compilers/imcc/imcc.l"
return LOG_OR;
YY_BREAK
-case 86:
+case 87:
YY_RULE_SETUP
-#line 379 "compilers/imcc/imcc.l"
+#line 382 "compilers/imcc/imcc.l"
return LOG_XOR;
YY_BREAK
-case 87:
+case 88:
YY_RULE_SETUP
-#line 380 "compilers/imcc/imcc.l"
+#line 383 "compilers/imcc/imcc.l"
return RELOP_LT;
YY_BREAK
-case 88:
+case 89:
YY_RULE_SETUP
-#line 381 "compilers/imcc/imcc.l"
+#line 384 "compilers/imcc/imcc.l"
return RELOP_LTE;
YY_BREAK
-case 89:
+case 90:
YY_RULE_SETUP
-#line 382 "compilers/imcc/imcc.l"
+#line 385 "compilers/imcc/imcc.l"
return RELOP_GT;
YY_BREAK
-case 90:
+case 91:
YY_RULE_SETUP
-#line 383 "compilers/imcc/imcc.l"
+#line 386 "compilers/imcc/imcc.l"
return RELOP_GTE;
YY_BREAK
-case 91:
+case 92:
YY_RULE_SETUP
-#line 384 "compilers/imcc/imcc.l"
+#line 387 "compilers/imcc/imcc.l"
return RELOP_EQ;
YY_BREAK
-case 92:
+case 93:
YY_RULE_SETUP
-#line 385 "compilers/imcc/imcc.l"
+#line 388 "compilers/imcc/imcc.l"
return RELOP_NE;
YY_BREAK
-case 93:
+case 94:
YY_RULE_SETUP
-#line 386 "compilers/imcc/imcc.l"
+#line 389 "compilers/imcc/imcc.l"
return POW;
YY_BREAK
-case 94:
+case 95:
YY_RULE_SETUP
-#line 388 "compilers/imcc/imcc.l"
+#line 391 "compilers/imcc/imcc.l"
return CONCAT;
YY_BREAK
-case 95:
+case 96:
YY_RULE_SETUP
-#line 389 "compilers/imcc/imcc.l"
+#line 392 "compilers/imcc/imcc.l"
return DOT;
YY_BREAK
-case 96:
+case 97:
YY_RULE_SETUP
-#line 391 "compilers/imcc/imcc.l"
+#line 394 "compilers/imcc/imcc.l"
return PLUS_ASSIGN;
YY_BREAK
-case 97:
+case 98:
YY_RULE_SETUP
-#line 392 "compilers/imcc/imcc.l"
+#line 395 "compilers/imcc/imcc.l"
return MINUS_ASSIGN;
YY_BREAK
-case 98:
+case 99:
YY_RULE_SETUP
-#line 393 "compilers/imcc/imcc.l"
+#line 396 "compilers/imcc/imcc.l"
return MUL_ASSIGN;
YY_BREAK
-case 99:
+case 100:
YY_RULE_SETUP
-#line 394 "compilers/imcc/imcc.l"
+#line 397 "compilers/imcc/imcc.l"
return DIV_ASSIGN;
YY_BREAK
-case 100:
+case 101:
YY_RULE_SETUP
-#line 395 "compilers/imcc/imcc.l"
+#line 398 "compilers/imcc/imcc.l"
return MOD_ASSIGN;
YY_BREAK
-case 101:
+case 102:
YY_RULE_SETUP
-#line 396 "compilers/imcc/imcc.l"
+#line 399 "compilers/imcc/imcc.l"
return FDIV;
YY_BREAK
-case 102:
+case 103:
YY_RULE_SETUP
-#line 397 "compilers/imcc/imcc.l"
+#line 400 "compilers/imcc/imcc.l"
return FDIV_ASSIGN;
YY_BREAK
-case 103:
+case 104:
YY_RULE_SETUP
-#line 398 "compilers/imcc/imcc.l"
+#line 401 "compilers/imcc/imcc.l"
return BAND_ASSIGN;
YY_BREAK
-case 104:
+case 105:
YY_RULE_SETUP
-#line 399 "compilers/imcc/imcc.l"
+#line 402 "compilers/imcc/imcc.l"
return BOR_ASSIGN;
YY_BREAK
-case 105:
+case 106:
YY_RULE_SETUP
-#line 400 "compilers/imcc/imcc.l"
+#line 403 "compilers/imcc/imcc.l"
return BXOR_ASSIGN;
YY_BREAK
-case 106:
+case 107:
YY_RULE_SETUP
-#line 401 "compilers/imcc/imcc.l"
+#line 404 "compilers/imcc/imcc.l"
return SHR_ASSIGN;
YY_BREAK
-case 107:
+case 108:
YY_RULE_SETUP
-#line 402 "compilers/imcc/imcc.l"
+#line 405 "compilers/imcc/imcc.l"
return SHL_ASSIGN;
YY_BREAK
-case 108:
+case 109:
YY_RULE_SETUP
-#line 403 "compilers/imcc/imcc.l"
+#line 406 "compilers/imcc/imcc.l"
return SHR_U_ASSIGN;
YY_BREAK
-case 109:
+case 110:
YY_RULE_SETUP
-#line 404 "compilers/imcc/imcc.l"
+#line 407 "compilers/imcc/imcc.l"
return CONCAT_ASSIGN;
YY_BREAK
-case 110:
+case 111:
YY_RULE_SETUP
-#line 406 "compilers/imcc/imcc.l"
+#line 409 "compilers/imcc/imcc.l"
{
char *macro_name = NULL;
int start_cond = YY_START;
@@ -3533,16 +3559,18 @@
return MACRO;
}
YY_BREAK
-case 111:
+case 112:
YY_RULE_SETUP
-#line 449 "compilers/imcc/imcc.l"
+#line 452 "compilers/imcc/imcc.l"
{
+ /* the initial whitespace catcher misses this one */
+ IMCC_INFO(interp)->line++;
return read_macro(valp, interp, yyscanner);
}
YY_BREAK
-case 112:
+case 113:
YY_RULE_SETUP
-#line 453 "compilers/imcc/imcc.l"
+#line 458 "compilers/imcc/imcc.l"
{
const int c = yylex(valp,yyscanner,interp);
@@ -3555,9 +3583,9 @@
include_file(interp, yytext + 1, yyscanner);
}
YY_BREAK
-case 113:
+case 114:
YY_RULE_SETUP
-#line 465 "compilers/imcc/imcc.l"
+#line 470 "compilers/imcc/imcc.l"
{
if (valp) {
char *label;
@@ -3580,11 +3608,10 @@
return LABEL;
}
YY_BREAK
-case 114:
+case 115:
YY_RULE_SETUP
-#line 487 "compilers/imcc/imcc.l"
+#line 492 "compilers/imcc/imcc.l"
{
-
if (valp) {
char *label;
size_t len;
@@ -3604,14 +3631,14 @@
return IDENTIFIER;
}
YY_BREAK
-case 115:
+case 116:
YY_RULE_SETUP
-#line 508 "compilers/imcc/imcc.l"
+#line 512 "compilers/imcc/imcc.l"
return COMMA;
YY_BREAK
-case 116:
+case 117:
YY_RULE_SETUP
-#line 510 "compilers/imcc/imcc.l"
+#line 514 "compilers/imcc/imcc.l"
{
/* trim last ':' */
YYCHOP();
@@ -3622,9 +3649,9 @@
return LABEL;
}
YY_BREAK
-case 117:
+case 118:
YY_RULE_SETUP
-#line 520 "compilers/imcc/imcc.l"
+#line 524 "compilers/imcc/imcc.l"
{
char * const macro_name = mem_sys_strdup(yytext + 1);
int failed = expand_macro(interp, macro_name, yyscanner);
@@ -3635,34 +3662,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 536 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, FLOATC);
YY_BREAK
case 120:
YY_RULE_SETUP
-#line 534 "compilers/imcc/imcc.l"
+#line 537 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 121:
YY_RULE_SETUP
-#line 535 "compilers/imcc/imcc.l"
+#line 538 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 122:
YY_RULE_SETUP
-#line 536 "compilers/imcc/imcc.l"
+#line 539 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, INTC);
YY_BREAK
case 123:
YY_RULE_SETUP
-#line 538 "compilers/imcc/imcc.l"
+#line 540 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, INTC);
+ YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 542 "compilers/imcc/imcc.l"
{
valp->s = mem_sys_strdup(yytext);
@@ -3673,18 +3700,18 @@
return STRINGC;
}
YY_BREAK
-case 124:
+case 125:
YY_RULE_SETUP
-#line 548 "compilers/imcc/imcc.l"
+#line 552 "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 558 "compilers/imcc/imcc.l"
{
macro_frame_t *frame;
@@ -3713,9 +3740,9 @@
yy_push_state(heredoc1, yyscanner);
}
YY_BREAK
-case 126:
+case 127:
YY_RULE_SETUP
-#line 582 "compilers/imcc/imcc.l"
+#line 586 "compilers/imcc/imcc.l"
{
/* charset:"..." */
valp->s = mem_sys_strdup(yytext);
@@ -3724,9 +3751,9 @@
return USTRINGC;
}
YY_BREAK
-case 127:
+case 128:
YY_RULE_SETUP
-#line 590 "compilers/imcc/imcc.l"
+#line 594 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3735,9 +3762,9 @@
return IREG;
}
YY_BREAK
-case 128:
+case 129:
YY_RULE_SETUP
-#line 598 "compilers/imcc/imcc.l"
+#line 602 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3746,9 +3773,9 @@
return NREG;
}
YY_BREAK
-case 129:
+case 130:
YY_RULE_SETUP
-#line 606 "compilers/imcc/imcc.l"
+#line 610 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3757,9 +3784,9 @@
return SREG;
}
YY_BREAK
-case 130:
+case 131:
YY_RULE_SETUP
-#line 614 "compilers/imcc/imcc.l"
+#line 618 "compilers/imcc/imcc.l"
{
if (valp) (valp)->s = yytext;
if (IMCC_INFO(interp)->state->pasm_file)
@@ -3768,17 +3795,17 @@
return PREG;
}
YY_BREAK
-case 131:
+case 132:
YY_RULE_SETUP
-#line 622 "compilers/imcc/imcc.l"
+#line 626 "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 631 "compilers/imcc/imcc.l"
{
if (IMCC_INFO(interp)->state->pasm_file == 0)
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3790,52 +3817,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 643 "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 645 "compilers/imcc/imcc.l"
/* skip */;
YY_BREAK
-case 135:
+case 136:
YY_RULE_SETUP
-#line 669 "compilers/imcc/imcc.l"
+#line 647 "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 652 "compilers/imcc/imcc.l"
{
BEGIN(INITIAL);
@@ -3848,31 +3849,34 @@
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 685 "compilers/imcc/imcc.l"
+#line 663 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 687 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, ENDM);
- YY_BREAK
case 137:
-/* rule 137 can match eol */
YY_RULE_SETUP
-#line 689 "compilers/imcc/imcc.l"
+#line 665 "compilers/imcc/imcc.l"
{
+ /* the initial whitespace catcher misses this one */
IMCC_INFO(interp)->line++;
+ DUP_AND_RET(valp, ENDM);
+}
+ YY_BREAK
+case 138:
+/* rule 138 can match eol */
+YY_RULE_SETUP
+#line 671 "compilers/imcc/imcc.l"
+{
DUP_AND_RET(valp, '\n');
}
YY_BREAK
-case 138:
+case 139:
YY_RULE_SETUP
-#line 694 "compilers/imcc/imcc.l"
+#line 675 "compilers/imcc/imcc.l"
return LABEL;
YY_BREAK
-case 139:
+case 140:
YY_RULE_SETUP
-#line 696 "compilers/imcc/imcc.l"
+#line 677 "compilers/imcc/imcc.l"
{
if (yylex(valp,yyscanner,interp) != LABEL)
@@ -3897,9 +3901,9 @@
return LABEL;
}
YY_BREAK
-case 140:
+case 141:
YY_RULE_SETUP
-#line 720 "compilers/imcc/imcc.l"
+#line 701 "compilers/imcc/imcc.l"
{
if (valp) {
if (!IMCC_INFO(interp)->cur_macro_name) {
@@ -3928,51 +3932,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 729 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, ' ');
YY_BREAK
case 143:
YY_RULE_SETUP
-#line 750 "compilers/imcc/imcc.l"
+#line 730 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
case 144:
YY_RULE_SETUP
-#line 751 "compilers/imcc/imcc.l"
+#line 731 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, REG);
YY_BREAK
case 145:
YY_RULE_SETUP
-#line 752 "compilers/imcc/imcc.l"
+#line 732 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, IDENTIFIER);
YY_BREAK
case 146:
YY_RULE_SETUP
-#line 753 "compilers/imcc/imcc.l"
+#line 733 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, MACRO);
YY_BREAK
case 147:
YY_RULE_SETUP
-#line 754 "compilers/imcc/imcc.l"
+#line 734 "compilers/imcc/imcc.l"
DUP_AND_RET(valp, yytext[0]);
YY_BREAK
case YY_STATE_EOF(macro):
-#line 755 "compilers/imcc/imcc.l"
+#line 735 "compilers/imcc/imcc.l"
yyterminate();
YY_BREAK
case 148:
YY_RULE_SETUP
-#line 757 "compilers/imcc/imcc.l"
+#line 737 "compilers/imcc/imcc.l"
ECHO;
YY_BREAK
-#line 3976 "compilers/imcc/imclexer.c"
+#line 3975 "compilers/imcc/imclexer.c"
case YY_STATE_EOF(pod):
case YY_STATE_EOF(cmt1):
case YY_STATE_EOF(cmt2):
@@ -4275,7 +4274,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 >= 1090 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4304,11 +4303,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 >= 1090 )
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 == 1089);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -5174,7 +5173,7 @@
#define YYTABLES_NAME "yytables"
-#line 757 "compilers/imcc/imcc.l"
+#line 737 "compilers/imcc/imcc.l"
@@ -5236,6 +5235,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 +5493,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 +5653,6 @@
}
}
- /* let the normal EOF rules match line numbers */
- IMCC_INFO(interp)->line = m->line - 1;
scan_string(frame, m->expansion, yyscanner);
return 1;
@@ -5710,7 +5707,8 @@
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);
}
@@ -5889,6 +5887,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/include_dynpmc_makefile/compilers/imcc/imcparser.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/imcparser.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/imcparser.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/imcparser.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/imcparser.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/imcparser.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/instructions.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/instructions.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/instructions.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -277,11 +277,7 @@
const int f = ins->flags;
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;
@@ -344,6 +340,7 @@
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/include_dynpmc_makefile/compilers/imcc/main.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/main.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/main.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -462,7 +462,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 +472,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 +692,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 +705,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/include_dynpmc_makefile/compilers/imcc/optimizer.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/optimizer.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/optimizer.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/parser_util.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/parser_util.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/parser_util.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -654,7 +654,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 +708,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 +935,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/include_dynpmc_makefile/compilers/imcc/pbc.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/pbc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/pbc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1064,8 +1064,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) {
@@ -1337,8 +1336,10 @@
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);
@@ -1395,7 +1396,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);
@@ -1404,14 +1405,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;
@@ -1542,7 +1542,7 @@
SymReg *reg;
char s_key[KEYLEN * 10];
- opcode_t key[KEYLEN];
+ opcode_t key[KEYLEN + 1]; /* [0] -> length, [1..] -> keys */
opcode_t size;
int key_length; /* P0["hi;there"; S0; 2] has length 3 */
int k;
Modified: branches/include_dynpmc_makefile/compilers/imcc/pcc.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/pcc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/pcc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/symreg.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/symreg.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/symreg.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/imcc/unit.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/imcc/unit.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/imcc/unit.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/compilers/json/.gitignore (from r45870, trunk/compilers/json/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/json/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/json/.gitignore)
@@ -0,0 +1 @@
+/JSON.pbc
Copied: branches/include_dynpmc_makefile/compilers/json/JSON/.gitignore (from r45870, trunk/compilers/json/JSON/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/json/JSON/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/json/JSON/.gitignore)
@@ -0,0 +1,2 @@
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/compilers/ncigen/.gitignore (from r45870, trunk/compilers/ncigen/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/ncigen/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/ncigen/.gitignore)
@@ -0,0 +1,2 @@
+/Makefile
+/ncigen.pbc
Copied: branches/include_dynpmc_makefile/compilers/ncigen/src/.gitignore (from r45870, trunk/compilers/ncigen/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/ncigen/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/ncigen/src/.gitignore)
@@ -0,0 +1,3 @@
+/gen_actions.pir
+/gen_grammar.pir
+/gen_builtins.pir
Copied: branches/include_dynpmc_makefile/compilers/nqp/.gitignore (from r45870, trunk/compilers/nqp/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/nqp/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/nqp/.gitignore)
@@ -0,0 +1 @@
+/nqp.pbc
Copied: branches/include_dynpmc_makefile/compilers/nqp/bootstrap/.gitignore (from r45870, trunk/compilers/nqp/bootstrap/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/nqp/bootstrap/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/nqp/bootstrap/.gitignore)
@@ -0,0 +1,2 @@
+/nqp.pbc
+/gen_actions.pir
Copied: branches/include_dynpmc_makefile/compilers/nqp/src/.gitignore (from r45870, trunk/compilers/nqp/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/nqp/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/nqp/src/.gitignore)
@@ -0,0 +1 @@
+/Grammar_gen.pir
Copied: branches/include_dynpmc_makefile/compilers/pct/src/PAST/.gitignore (from r45870, trunk/compilers/pct/src/PAST/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pct/src/PAST/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pct/src/PAST/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/compilers/pct/src/PCT/.gitignore (from r45870, trunk/compilers/pct/src/PCT/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pct/src/PCT/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pct/src/PCT/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/compilers/pct/src/PCT/HLLCompiler.pir
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pct/src/PCT/HLLCompiler.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pct/src/PCT/HLLCompiler.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/compilers/pct/src/POST/.gitignore (from r45870, trunk/compilers/pct/src/POST/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pct/src/POST/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pct/src/POST/.gitignore)
@@ -0,0 +1,2 @@
+/Grammar_gen.pir
+/*.pbc
Modified: branches/include_dynpmc_makefile/compilers/pct/src/POST/Node.pir
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pct/src/POST/Node.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pct/src/POST/Node.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -82,7 +82,7 @@
.end
-=item get_string() # vtable method
+=item get_string()
Returns the result of the current node as a string.
Copied: branches/include_dynpmc_makefile/compilers/pge/.gitignore (from r45870, trunk/compilers/pge/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pge/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pge/.gitignore)
@@ -0,0 +1 @@
+/PGE.pbc
Copied: branches/include_dynpmc_makefile/compilers/pge/PGE/.gitignore (from r45870, trunk/compilers/pge/PGE/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pge/PGE/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pge/PGE/.gitignore)
@@ -0,0 +1,2 @@
+/builtins_gen.pir
+/*.dll
Modified: branches/include_dynpmc_makefile/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pge/PGE/Exp.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pge/PGE/Exp.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -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/include_dynpmc_makefile/compilers/pge/PGE/Regex.pir
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pge/PGE/Regex.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pge/PGE/Regex.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/compilers/pirc/.gitignore (from r45870, trunk/compilers/pirc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pirc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pirc/.gitignore)
@@ -0,0 +1,5 @@
+/pirc
+/pirc.exe
+/*.o
+/*.obj
+/*.pbd
Modified: branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pircompiler.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pircompiler.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pircompunit.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pircompunit.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pircompunit.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pirlexer.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pirlexer.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pirlexer.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pirparser.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pirparser.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pirparser.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.c
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.h
==============================================================================
--- branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/compilers/pirc/src/pirsymbol.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/compilers/pirc/t/.gitignore (from r45870, trunk/compilers/pirc/t/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/pirc/t/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/pirc/t/.gitignore)
@@ -0,0 +1,6 @@
+/subflags_?.pir
+/heredoc_?.pir
+/stmts_?.pir
+/basic_?.pir
+/basic_??.pir
+/macro_?.pir
Copied: branches/include_dynpmc_makefile/compilers/tge/.gitignore (from r45870, trunk/compilers/tge/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/tge/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/tge/.gitignore)
@@ -0,0 +1 @@
+/tgc.pbc
Copied: branches/include_dynpmc_makefile/compilers/tge/TGE/.gitignore (from r45870, trunk/compilers/tge/TGE/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/compilers/tge/TGE/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/compilers/tge/TGE/.gitignore)
@@ -0,0 +1 @@
+/Parser.pir
Modified: branches/include_dynpmc_makefile/config/auto/arch.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/arch.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/auto/arch.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/auto/attributes.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/attributes.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/auto/attributes.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/auto/attributes/test_c.in
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/attributes/test_c.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/auto/attributes/test_c.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/auto/crypto.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/crypto.pm Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/config/auto/gdbm.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/gdbm.pm Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/config/auto/warnings.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/auto/warnings.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/auto/warnings.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -247,13 +249,21 @@
-Wwrite-strings
),
# Disable some warnings and notifications that are overly noisy
- '-diag-disable 981', # Operands are evaluated in unspecified order
- '-diag-disable 2259', # Non-pointer conversion from "typeA" to "typeB" may lose significant bits
+ '-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++
@@ -273,6 +283,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"
Modified: branches/include_dynpmc_makefile/config/gen/config_pm.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/config_pm.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/config_pm.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/config_pm/config_lib_pasm.in
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/config_pm/config_lib_pasm.in Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/config/gen/config_pm/config_lib_pir.in (from r45870, trunk/config/gen/config_pm/config_lib_pir.in)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/config/gen/config_pm/config_lib_pir.in Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/config/gen/config_pm/config_pir.in
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/config_pm/config_pir.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/config_pm/config_pir.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/core_pmcs.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/core_pmcs.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/core_pmcs.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/crypto.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/crypto.pm Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/config/gen/makefiles/docs.in
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/makefiles/docs.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/makefiles/docs.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2006, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
# Setup of some commands
@@ -11,6 +11,9 @@
PERLDOC_BIN = @perldoc@
VERSION = @VERSION@@DEVEL@
+# chapters in the generated PDF parrot book
+CHAPTERS = $(PERL) ../tools/docs/filename_and_chapter.pl --b_out
+
# long list of .pod files
POD = @TEMP_pod@
@@ -50,6 +53,21 @@
html: all
$(PERL) -I../lib ../tools/docs/write_docs.pl --silent --version=$(VERSION)
+# The pdf target is to generate a parrot PDF document.
+# It will not work on Windows. It call a script which use a specific Unix
+# command. May be that will be changed.
+pdf: ../tools/docs/book-to-latex.pl ../tools/docs/filename_and_chapter.pl
+ $(MKPATH) build/modified_pod
+ $(PERL) ../tools/docs/filename_and_chapter.pl
+ $(PERL) ../tools/docs/book-to-latex.pl `$(CHAPTERS)` > build/parrot-book.tex
+ 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
Modified: branches/include_dynpmc_makefile/config/gen/makefiles/root.in
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/makefiles/root.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/makefiles/root.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -154,7 +154,6 @@
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 \
@@ -170,23 +169,7 @@
#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 \
@@ -212,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 \
@@ -297,7 +281,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 \
@@ -320,6 +310,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 \
@@ -345,6 +338,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
@@ -529,6 +526,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)
@@ -540,6 +538,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@
@@ -549,7 +548,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@
@@ -580,10 +579,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 $@ $<
@@ -802,16 +799,17 @@
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)
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) \
@@ -831,6 +829,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
@@ -851,7 +855,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 \
@@ -868,9 +872,9 @@
$(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)
@@ -946,6 +950,9 @@
$(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)
+ $(PBC_TO_EXE) tapir.pbc --install
+
#
# Parrot Debugger
#
@@ -1037,6 +1044,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 > $@
+
+
###############################################################################
#
@@ -1087,6 +1134,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 $@
@@ -1562,6 +1612,12 @@
htmlhelp-clean :
$(MAKE) docs htmlhelp-clean
+#UNLESS(win32):pdf:
+#UNLESS(win32): $(MAKE) docs pdf
+
+pdf-clean:
+ $(MAKE) docs pdf-clean
+
###############################################################################
#
# compiler implementation targets:
@@ -1676,6 +1732,7 @@
testS \
src_tests \
run_tests \
+ buildtools_tests \
perl_tests \
library_tests \
nqp_test \
@@ -1823,8 +1880,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) \
@@ -2061,7 +2120,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
@@ -2073,7 +2133,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 \
\
@@ -2095,14 +2155,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 \
@@ -2110,9 +2172,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 \
@@ -2121,63 +2193,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 \
@@ -2196,13 +2249,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
@@ -2211,7 +2278,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'
@@ -2450,7 +2517,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*)
@@ -2467,11 +2534,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:
@@ -2483,6 +2550,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
@@ -2492,6 +2560,7 @@
HEADERIZER_O_FILES = \
$(O_FILES) \
+ src/main$(O) \
src/packdump$(O) \
src/pbc_merge$(O) \
$(PIRC_O_FILES)
Modified: branches/include_dynpmc_makefile/config/gen/opengl.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/opengl.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/opengl.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/platform.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/platform.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/platform/ansi/dl.c
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform/ansi/dl.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/platform/ansi/dl.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/platform/generic/dl.c
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform/generic/dl.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/platform/generic/dl.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/gen/platform/generic/env.c
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform/generic/env.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/platform/generic/env.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Deleted: branches/include_dynpmc_makefile/config/gen/platform/platform_interface.h
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform/platform_interface.h Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/config/gen/platform/win32/dl.c
==============================================================================
--- branches/include_dynpmc_makefile/config/gen/platform/win32/dl.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/gen/platform/win32/dl.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/init/defaults.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/init/defaults.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/init/defaults.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -94,23 +94,14 @@
# Compiler -- used to turn .c files into object files.
# (Usually cc or cl, or something like that.)
cc => $cc_option ? $cc_option : $Config{cc},
- # If we specify a compiler, we can't use existing ccflags and ccwarn.
+ # If we specify a compiler, we can't use existing ccflags.
ccflags => $cc_option ? '' : $Config{ccflags},
- ccwarn => $cc_option ? '' : $Config{ccwarn},
+ 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".
@@ -193,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',
@@ -285,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/include_dynpmc_makefile/config/init/hints/cygwin.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/init/hints/cygwin.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/init/hints/cygwin.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/init/hints/irix.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/init/hints/irix.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/init/hints/irix.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/config/inter/progs.pm
==============================================================================
--- branches/include_dynpmc_makefile/config/inter/progs.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/config/inter/progs.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
}
Copied: branches/include_dynpmc_makefile/docs/.gitignore (from r45870, trunk/docs/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/docs/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/docs/.gitignore)
@@ -0,0 +1,6 @@
+/*.tmp
+/html
+/Makefile
+/packfile-c.pod
+/packfile-perl.pod
+/doc-prep
Copied: branches/include_dynpmc_makefile/docs/book/.gitignore (from r45870, trunk/docs/book/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/docs/book/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/docs/book/.gitignore)
@@ -0,0 +1 @@
+/*.html
Modified: branches/include_dynpmc_makefile/docs/book/draft/ch07_dynpmcs.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/book/draft/ch07_dynpmcs.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/book/draft/ch07_dynpmcs.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/book/draft/chXX_hlls.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/book/draft/chXX_hlls.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/book/draft/chXX_hlls.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/dev/infant.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/dev/infant.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/dev/infant.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/dev/pccmethods.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/dev/pccmethods.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/dev/pccmethods.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/dev/pmc_freeze.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/dev/pmc_freeze.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/dev/pmc_freeze.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/dev/pmc_obj_design_meeting_notes.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/dev/pmc_obj_design_meeting_notes.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/dev/pmc_obj_design_meeting_notes.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/embed.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/embed.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/embed.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -1551,8 +1551,6 @@
=item C<Parrot_store_sub_in_namespace>
-=item C<Parrot_str_append>
-
=item C<Parrot_str_boolean>
=item C<Parrot_str_byte_length>
Modified: branches/include_dynpmc_makefile/docs/intro.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/intro.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/intro.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -391,7 +391,7 @@
=begin PIR_FRAGMENT
- .local pmc result, factorial
+ .local int result
result = factorial($I0)
=end PIR_FRAGMENT
Copied: branches/include_dynpmc_makefile/docs/ops/.gitignore (from r45870, trunk/docs/ops/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/docs/ops/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/docs/ops/.gitignore)
@@ -0,0 +1 @@
+/*.pod
Modified: branches/include_dynpmc_makefile/docs/parrothist.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/parrothist.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/parrothist.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -105,4 +105,6 @@
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/include_dynpmc_makefile/docs/pdds/draft/pdd01_overview.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd01_overview.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd01_overview.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd05_opfunc.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd05_opfunc.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd05_opfunc.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd06_pasm.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd06_pasm.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd08_keys.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd08_keys.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd08_keys.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd10_embedding.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd10_embedding.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd10_embedding.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd11_extending.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd11_extending.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd14_numbers.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd14_numbers.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd14_numbers.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd16_native_call.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd16_native_call.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd16_native_call.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd29_compiler_tools.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd29_compiler_tools.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd29_compiler_tools.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll_interop.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll_interop.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/draft/pdd31_hll_interop.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd00_pdd.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd00_pdd.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd00_pdd.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd03_calling_conventions.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd03_calling_conventions.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd03_calling_conventions.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd07_codingstd.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd07_codingstd.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd07_codingstd.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd09_gc.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd09_gc.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd09_gc.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd15_objects.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd15_objects.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd15_objects.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd17_pmc.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd17_pmc.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd17_pmc.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,
@@ -1656,8 +1656,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 +1809,9 @@
=back
-=head2 Attachments
-
-None.
-
-=head2 Footnotes
-
-None.
-
=head2 References
- docs/pmc2c.pod
+F<docs/pmc2c.pod>
=cut
Modified: branches/include_dynpmc_makefile/docs/pdds/pdd18_security.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd18_security.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd18_security.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd19_pir.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd19_pir.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd19_pir.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd20_lexical_vars.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd20_lexical_vars.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd20_lexical_vars.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd21_namespaces.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd21_namespaces.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd21_namespaces.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd22_io.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd22_io.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd22_io.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd23_exceptions.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd23_exceptions.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd23_exceptions.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd24_events.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd24_events.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd24_events.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd25_concurrency.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd25_concurrency.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd25_concurrency.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd26_ast.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd26_ast.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd26_ast.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd27_multiple_dispatch.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd27_multiple_dispatch.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd27_multiple_dispatch.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd28_strings.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd28_strings.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -826,15 +819,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/include_dynpmc_makefile/docs/pdds/pdd30_install.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd30_install.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd30_install.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -160,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/include_dynpmc_makefile/docs/pdds/pdd_template.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pdds/pdd_template.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pdds/pdd_template.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pmc.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pmc.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pmc.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pmc/documentation.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pmc/documentation.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pmc/documentation.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/pmc2c.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/pmc2c.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/pmc2c.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/docs/project/release_manager_guide.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/project/release_manager_guide.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/project/release_manager_guide.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -213,10 +213,10 @@
$ 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 different compressed tarballs from your machine into the new directory.
@@ -283,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
@@ -294,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
@@ -394,10 +394,11 @@
visible at
L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
- - 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/include_dynpmc_makefile/docs/running.pod
==============================================================================
--- branches/include_dynpmc_makefile/docs/running.pod Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/docs/running.pod Wed Apr 21 23:40:50 2010 (r45876)
@@ -142,6 +142,7 @@
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
Copied: branches/include_dynpmc_makefile/editor/.gitignore (from r45870, trunk/editor/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/editor/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/editor/.gitignore)
@@ -0,0 +1,4 @@
+/Makefile
+/imc.vim
+/imcc.xml
+/pir.vim
Copied: branches/include_dynpmc_makefile/examples/languages/abc/.gitignore (from r45870, trunk/examples/languages/abc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/languages/abc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/languages/abc/.gitignore)
@@ -0,0 +1,10 @@
+/MANIFEST
+/*.pbc
+/*.c
+/*.o
+/*.obj
+/*.exe
+/*.iss
+/abc
+/installable_abc
+/man
Modified: branches/include_dynpmc_makefile/examples/languages/abc/setup.pir
==============================================================================
--- branches/include_dynpmc_makefile/examples/languages/abc/setup.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/examples/languages/abc/setup.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/examples/languages/abc/src/.gitignore (from r45870, trunk/examples/languages/abc/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/languages/abc/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/languages/abc/src/.gitignore)
@@ -0,0 +1,3 @@
+/gen_actions.pir
+/gen_grammar.pir
+/gen_builtins.pir
Copied: branches/include_dynpmc_makefile/examples/languages/abc/t/.gitignore (from r45870, trunk/examples/languages/abc/t/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/languages/abc/t/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/languages/abc/t/.gitignore)
@@ -0,0 +1,2 @@
+/*_*.pir
+/*_*.out
Copied: branches/include_dynpmc_makefile/examples/languages/squaak/.gitignore (from r45870, trunk/examples/languages/squaak/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/languages/squaak/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/languages/squaak/.gitignore)
@@ -0,0 +1,9 @@
+/MANIFEST
+/*.pbc
+/*.c
+/*.o
+/*.obj
+/*.exe
+/*.iss
+/squaak
+/installable_squaak
Copied: branches/include_dynpmc_makefile/examples/languages/squaak/src/.gitignore (from r45870, trunk/examples/languages/squaak/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/languages/squaak/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/languages/squaak/src/.gitignore)
@@ -0,0 +1 @@
+/gen_*.pir
Copied: branches/include_dynpmc_makefile/examples/mops/.gitignore (from r45870, trunk/examples/mops/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/mops/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/mops/.gitignore)
@@ -0,0 +1,2 @@
+/*.o
+/mops
Copied: branches/include_dynpmc_makefile/examples/nci/.gitignore (from r45870, trunk/examples/nci/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/nci/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/nci/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/examples/pasm/.gitignore (from r45870, trunk/examples/pasm/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/pasm/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/pasm/.gitignore)
@@ -0,0 +1,3 @@
+/hello
+/hello.o
+/hello.pbc
Copied: branches/include_dynpmc_makefile/examples/pir/befunge/.gitignore (from r45870, trunk/examples/pir/befunge/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/examples/pir/befunge/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/examples/pir/befunge/.gitignore)
@@ -0,0 +1,9 @@
+/MANIFEST
+/*.pbc
+/*.c
+/*.o
+/*.obj
+/*.exe
+/*.iss
+/befunge
+/installable_befunge
Modified: branches/include_dynpmc_makefile/examples/pir/befunge/setup.pir
==============================================================================
--- branches/include_dynpmc_makefile/examples/pir/befunge/setup.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/examples/pir/befunge/setup.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/examples/tutorial/56_defined.pir
==============================================================================
--- branches/include_dynpmc_makefile/examples/tutorial/56_defined.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/examples/tutorial/56_defined.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/ext/.gitignore (from r45870, trunk/ext/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ext/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/ext/.gitignore)
@@ -0,0 +1 @@
+/Makefile
Copied: branches/include_dynpmc_makefile/ext/Parrot-Embed/.gitignore (from r45870, trunk/ext/Parrot-Embed/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/ext/Parrot-Embed/.gitignore)
@@ -0,0 +1,29 @@
+/*.tmp
+/*.pdb
+/_build
+/blib
+/Build
+/Build.bat
+/Makefile
+/Makefile.PL
+/*.bundle
+/*.c
+/*.dump
+/*.dylib
+/*.h
+/*.so
+/*.o
+/*.exe
+/*.pdb
+/*.ilk
+/*.def
+/*.lib
+/*.obj
+/*.exp
+/*.dll
+/*.manifest
+/*.bs
+/*.old
+/*.xs
+/pm_to_blib
+/dll.base
Modified: branches/include_dynpmc_makefile/ext/Parrot-Embed/Build.PL
==============================================================================
--- branches/include_dynpmc_makefile/ext/Parrot-Embed/Build.PL Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/Build.PL Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 @_;
}
Copied: branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/.gitignore (from r45870, trunk/ext/Parrot-Embed/lib/Parrot/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/ext/Parrot-Embed/lib/Parrot/.gitignore)
@@ -0,0 +1,2 @@
+/*.obj
+/*.c
Modified: branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/Embed.xs
==============================================================================
--- branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/Embed.xs Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/lib/Parrot/Embed.xs Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/ext/Parrot-Embed/t/.gitignore (from r45870, trunk/ext/Parrot-Embed/t/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/t/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/ext/Parrot-Embed/t/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/ext/Parrot-Embed/t/interp.t
==============================================================================
--- branches/include_dynpmc_makefile/ext/Parrot-Embed/t/interp.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/Parrot-Embed/t/interp.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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!',
Modified: branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/HLL-s0.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/HLL-s0.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -854,111 +854,119 @@
### .include 'gen/hllgrammar-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204683.33533")
+.sub "_block11" :anon :subid("10_1271336377.56964")
.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()
+ $P344 = $P14()
.annotate "line", 1
- .return ($P296)
+ .return ($P344)
.end
.namespace []
-.sub "" :load :init :subid("post94") :outer("10_1267204683.33533")
+.sub "" :load :init :subid("post105") :outer("10_1271336377.56964")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204683.33533"
+ .const 'Sub' $P12 = "10_1271336377.56964"
.local pmc block
set block, $P12
- $P297 = get_root_global ["parrot"], "P6metaclass"
- $P297."new_class"("HLL::Grammar", "Regex::Cursor" :named("parent"))
+ $P345 = get_root_global ["parrot"], "P6metaclass"
+ $P345."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_1271336377.56964") :outer("10_1271336377.56964")
.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"
- 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' $P334 = "103_1271336377.56964"
+ capture_lex $P334
+ .const 'Sub' $P327 = "101_1271336377.56964"
+ capture_lex $P327
+ .const 'Sub' $P314 = "98_1271336377.56964"
+ capture_lex $P314
+ .const 'Sub' $P282 = "93_1271336377.56964"
+ capture_lex $P282
+ .const 'Sub' $P276 = "91_1271336377.56964"
+ capture_lex $P276
+ .const 'Sub' $P271 = "89_1271336377.56964"
+ capture_lex $P271
+ .const 'Sub' $P265 = "87_1271336377.56964"
+ capture_lex $P265
+ .const 'Sub' $P259 = "85_1271336377.56964"
+ capture_lex $P259
+ .const 'Sub' $P254 = "83_1271336377.56964"
+ capture_lex $P254
+ .const 'Sub' $P249 = "81_1271336377.56964"
capture_lex $P249
- .const 'Sub' $P244 = "79_1267204683.33533"
+ .const 'Sub' $P244 = "79_1271336377.56964"
capture_lex $P244
- .const 'Sub' $P239 = "77_1267204683.33533"
+ .const 'Sub' $P239 = "77_1271336377.56964"
capture_lex $P239
- .const 'Sub' $P234 = "75_1267204683.33533"
+ .const 'Sub' $P234 = "75_1271336377.56964"
capture_lex $P234
- .const 'Sub' $P229 = "73_1267204683.33533"
+ .const 'Sub' $P229 = "73_1271336377.56964"
capture_lex $P229
- .const 'Sub' $P224 = "71_1267204683.33533"
+ .const 'Sub' $P224 = "71_1271336377.56964"
capture_lex $P224
- .const 'Sub' $P219 = "69_1267204683.33533"
+ .const 'Sub' $P219 = "69_1271336377.56964"
capture_lex $P219
- .const 'Sub' $P208 = "65_1267204683.33533"
+ .const 'Sub' $P208 = "65_1271336377.56964"
capture_lex $P208
- .const 'Sub' $P195 = "63_1267204683.33533"
+ .const 'Sub' $P195 = "63_1271336377.56964"
capture_lex $P195
- .const 'Sub' $P183 = "61_1267204683.33533"
+ .const 'Sub' $P183 = "61_1271336377.56964"
capture_lex $P183
- .const 'Sub' $P176 = "59_1267204683.33533"
+ .const 'Sub' $P176 = "59_1271336377.56964"
capture_lex $P176
- .const 'Sub' $P167 = "57_1267204683.33533"
+ .const 'Sub' $P167 = "57_1271336377.56964"
capture_lex $P167
- .const 'Sub' $P160 = "55_1267204683.33533"
+ .const 'Sub' $P160 = "55_1271336377.56964"
capture_lex $P160
- .const 'Sub' $P151 = "53_1267204683.33533"
+ .const 'Sub' $P151 = "53_1271336377.56964"
capture_lex $P151
- .const 'Sub' $P144 = "51_1267204683.33533"
+ .const 'Sub' $P144 = "51_1271336377.56964"
capture_lex $P144
- .const 'Sub' $P135 = "49_1267204683.33533"
+ .const 'Sub' $P135 = "49_1271336377.56964"
capture_lex $P135
- .const 'Sub' $P128 = "47_1267204683.33533"
+ .const 'Sub' $P128 = "47_1271336377.56964"
capture_lex $P128
- .const 'Sub' $P121 = "45_1267204683.33533"
+ .const 'Sub' $P121 = "45_1271336377.56964"
capture_lex $P121
- .const 'Sub' $P111 = "43_1267204683.33533"
+ .const 'Sub' $P111 = "43_1271336377.56964"
capture_lex $P111
- .const 'Sub' $P103 = "41_1267204683.33533"
+ .const 'Sub' $P103 = "41_1271336377.56964"
capture_lex $P103
- .const 'Sub' $P93 = "40_1267204683.33533"
+ .const 'Sub' $P93 = "40_1271336377.56964"
capture_lex $P93
- .const 'Sub' $P87 = "38_1267204683.33533"
+ .const 'Sub' $P87 = "38_1271336377.56964"
capture_lex $P87
- .const 'Sub' $P82 = "36_1267204683.33533"
+ .const 'Sub' $P82 = "36_1271336377.56964"
capture_lex $P82
- .const 'Sub' $P74 = "34_1267204683.33533"
+ .const 'Sub' $P74 = "34_1271336377.56964"
capture_lex $P74
- .const 'Sub' $P68 = "32_1267204683.33533"
+ .const 'Sub' $P68 = "32_1271336377.56964"
capture_lex $P68
- .const 'Sub' $P62 = "30_1267204683.33533"
+ .const 'Sub' $P62 = "30_1271336377.56964"
capture_lex $P62
- .const 'Sub' $P56 = "28_1267204683.33533"
+ .const 'Sub' $P56 = "28_1271336377.56964"
capture_lex $P56
- .const 'Sub' $P23 = "14_1267204683.33533"
+ .const 'Sub' $P23 = "14_1271336377.56964"
capture_lex $P23
- .const 'Sub' $P15 = "12_1267204683.33533"
+ .const 'Sub' $P15 = "12_1271336377.56964"
capture_lex $P15
.annotate "line", 33
- .const 'Sub' $P286 = "92_1267204683.33533"
- capture_lex $P286
+ .const 'Sub' $P334 = "103_1271336377.56964"
+ capture_lex $P334
.annotate "line", 5
- .return ($P286)
+ .return ($P334)
.end
.namespace ["HLL";"Grammar"]
-.sub "ws" :subid("12_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "ws" :subid("12_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx16_tgt
.local int rx16_pos
@@ -1042,7 +1050,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws" :subid("13_1267204683.33533") :method
+.sub "!PREFIX__ws" :subid("13_1271336377.56964") :method
.annotate "line", 5
new $P18, "ResizablePMCArray"
push $P18, ""
@@ -1051,7 +1059,7 @@
.namespace ["HLL";"Grammar"]
-.sub "termish" :subid("14_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "termish" :subid("14_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx24_tgt
.local int rx24_pos
@@ -1061,7 +1069,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 +1151,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish" :subid("15_1267204683.33533") :method
+.sub "!PREFIX__termish" :subid("15_1271336377.56964") :method
.annotate "line", 5
new $P26, "ResizablePMCArray"
push $P26, ""
@@ -1152,7 +1160,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term" :subid("16_1267204683.33533") :method
+.sub "term" :subid("16_1271336377.56964") :method
.annotate "line", 13
$P33 = self."!protoregex"("term")
.return ($P33)
@@ -1160,7 +1168,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term" :subid("17_1267204683.33533") :method
+.sub "!PREFIX__term" :subid("17_1271336377.56964") :method
.annotate "line", 13
$P35 = self."!PREFIX__!protoregex"("term")
.return ($P35)
@@ -1168,7 +1176,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infix" :subid("18_1267204683.33533") :method
+.sub "infix" :subid("18_1271336377.56964") :method
.annotate "line", 14
$P37 = self."!protoregex"("infix")
.return ($P37)
@@ -1176,7 +1184,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix" :subid("19_1267204683.33533") :method
+.sub "!PREFIX__infix" :subid("19_1271336377.56964") :method
.annotate "line", 14
$P39 = self."!PREFIX__!protoregex"("infix")
.return ($P39)
@@ -1184,7 +1192,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefix" :subid("20_1267204683.33533") :method
+.sub "prefix" :subid("20_1271336377.56964") :method
.annotate "line", 15
$P41 = self."!protoregex"("prefix")
.return ($P41)
@@ -1192,7 +1200,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix" :subid("21_1267204683.33533") :method
+.sub "!PREFIX__prefix" :subid("21_1271336377.56964") :method
.annotate "line", 15
$P43 = self."!PREFIX__!protoregex"("prefix")
.return ($P43)
@@ -1200,7 +1208,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfix" :subid("22_1267204683.33533") :method
+.sub "postfix" :subid("22_1271336377.56964") :method
.annotate "line", 16
$P45 = self."!protoregex"("postfix")
.return ($P45)
@@ -1208,7 +1216,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix" :subid("23_1267204683.33533") :method
+.sub "!PREFIX__postfix" :subid("23_1271336377.56964") :method
.annotate "line", 16
$P47 = self."!PREFIX__!protoregex"("postfix")
.return ($P47)
@@ -1216,7 +1224,7 @@
.namespace ["HLL";"Grammar"]
-.sub "circumfix" :subid("24_1267204683.33533") :method
+.sub "circumfix" :subid("24_1271336377.56964") :method
.annotate "line", 17
$P49 = self."!protoregex"("circumfix")
.return ($P49)
@@ -1224,7 +1232,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix" :subid("25_1267204683.33533") :method
+.sub "!PREFIX__circumfix" :subid("25_1271336377.56964") :method
.annotate "line", 17
$P51 = self."!PREFIX__!protoregex"("circumfix")
.return ($P51)
@@ -1232,7 +1240,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postcircumfix" :subid("26_1267204683.33533") :method
+.sub "postcircumfix" :subid("26_1271336377.56964") :method
.annotate "line", 18
$P53 = self."!protoregex"("postcircumfix")
.return ($P53)
@@ -1240,7 +1248,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix" :subid("27_1267204683.33533") :method
+.sub "!PREFIX__postcircumfix" :subid("27_1271336377.56964") :method
.annotate "line", 18
$P55 = self."!PREFIX__!protoregex"("postcircumfix")
.return ($P55)
@@ -1248,7 +1256,7 @@
.namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>" :subid("28_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "term:sym<circumfix>" :subid("28_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx57_tgt
.local int rx57_pos
@@ -1306,7 +1314,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>" :subid("29_1267204683.33533") :method
+.sub "!PREFIX__term:sym<circumfix>" :subid("29_1271336377.56964") :method
.annotate "line", 5
$P59 = self."!PREFIX__!subrule"("circumfix", "")
new $P60, "ResizablePMCArray"
@@ -1316,7 +1324,7 @@
.namespace ["HLL";"Grammar"]
-.sub "infixish" :subid("30_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "infixish" :subid("30_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx63_tgt
.local int rx63_pos
@@ -1374,7 +1382,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish" :subid("31_1267204683.33533") :method
+.sub "!PREFIX__infixish" :subid("31_1271336377.56964") :method
.annotate "line", 5
$P65 = self."!PREFIX__!subrule"("OPER=infix", "")
new $P66, "ResizablePMCArray"
@@ -1384,7 +1392,7 @@
.namespace ["HLL";"Grammar"]
-.sub "prefixish" :subid("32_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "prefixish" :subid("32_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx69_tgt
.local int rx69_pos
@@ -1447,7 +1455,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish" :subid("33_1267204683.33533") :method
+.sub "!PREFIX__prefixish" :subid("33_1271336377.56964") :method
.annotate "line", 5
$P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
new $P72, "ResizablePMCArray"
@@ -1457,7 +1465,7 @@
.namespace ["HLL";"Grammar"]
-.sub "postfixish" :subid("34_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "postfixish" :subid("34_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx75_tgt
.local int rx75_pos
@@ -1531,7 +1539,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish" :subid("35_1267204683.33533") :method
+.sub "!PREFIX__postfixish" :subid("35_1271336377.56964") :method
.annotate "line", 5
$P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
$P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1543,7 +1551,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm" :subid("36_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nullterm" :subid("36_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx83_tgt
.local int rx83_pos
@@ -1594,7 +1602,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm" :subid("37_1267204683.33533") :method
+.sub "!PREFIX__nullterm" :subid("37_1271336377.56964") :method
.annotate "line", 5
new $P85, "ResizablePMCArray"
push $P85, ""
@@ -1603,7 +1611,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nullterm_alt" :subid("38_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nullterm_alt" :subid("38_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 5
.local string rx88_tgt
.local int rx88_pos
@@ -1661,7 +1669,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt" :subid("39_1267204683.33533") :method
+.sub "!PREFIX__nullterm_alt" :subid("39_1271336377.56964") :method
.annotate "line", 5
$P90 = self."!PREFIX__!subrule"("term", "")
new $P91, "ResizablePMCArray"
@@ -1671,7 +1679,7 @@
.namespace ["HLL";"Grammar"]
-.sub "nulltermish" :subid("40_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "nulltermish" :subid("40_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
new $P95, 'ExceptionHandler'
set_addr $P95, control_94
@@ -1698,7 +1706,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_delimited" :subid("41_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_delimited" :subid("41_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx104_tgt
.local int rx104_pos
@@ -1780,7 +1788,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited" :subid("42_1267204683.33533") :method
+.sub "!PREFIX__quote_delimited" :subid("42_1271336377.56964") :method
.annotate "line", 33
$P106 = self."!PREFIX__!subrule"("starter", "")
new $P107, "ResizablePMCArray"
@@ -1790,7 +1798,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_atom" :subid("43_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_atom" :subid("43_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx112_tgt
.local int rx112_pos
@@ -1881,7 +1889,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom" :subid("44_1267204683.33533") :method
+.sub "!PREFIX__quote_atom" :subid("44_1271336377.56964") :method
.annotate "line", 33
new $P114, "ResizablePMCArray"
push $P114, ""
@@ -1890,7 +1898,7 @@
.namespace ["HLL";"Grammar"]
-.sub "decint" :subid("45_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "decint" :subid("45_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx122_tgt
.local int rx122_pos
@@ -1962,7 +1970,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint" :subid("46_1267204683.33533") :method
+.sub "!PREFIX__decint" :subid("46_1271336377.56964") :method
.annotate "line", 33
new $P124, "ResizablePMCArray"
push $P124, ""
@@ -1971,7 +1979,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexints" :subid("47_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "decints" :subid("47_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx129_tgt
.local int rx129_pos
@@ -1980,7 +1988,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 +2045,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 +2056,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_1271336377.56964") :method
.annotate "line", 33
new $P131, "ResizablePMCArray"
push $P131, ""
@@ -2064,7 +2072,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexint" :subid("49_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "hexint" :subid("49_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx136_tgt
.local int rx136_pos
@@ -2145,7 +2153,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint" :subid("50_1267204683.33533") :method
+.sub "!PREFIX__hexint" :subid("50_1271336377.56964") :method
.annotate "line", 33
new $P138, "ResizablePMCArray"
push $P138, ""
@@ -2154,7 +2162,7 @@
.namespace ["HLL";"Grammar"]
-.sub "hexints" :subid("51_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "hexints" :subid("51_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx145_tgt
.local int rx145_pos
@@ -2238,7 +2246,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints" :subid("52_1267204683.33533") :method
+.sub "!PREFIX__hexints" :subid("52_1271336377.56964") :method
.annotate "line", 33
new $P147, "ResizablePMCArray"
push $P147, ""
@@ -2247,7 +2255,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octint" :subid("53_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "octint" :subid("53_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx152_tgt
.local int rx152_pos
@@ -2328,7 +2336,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint" :subid("54_1267204683.33533") :method
+.sub "!PREFIX__octint" :subid("54_1271336377.56964") :method
.annotate "line", 33
new $P154, "ResizablePMCArray"
push $P154, ""
@@ -2337,7 +2345,7 @@
.namespace ["HLL";"Grammar"]
-.sub "octints" :subid("55_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "octints" :subid("55_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx161_tgt
.local int rx161_pos
@@ -2421,7 +2429,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints" :subid("56_1267204683.33533") :method
+.sub "!PREFIX__octints" :subid("56_1271336377.56964") :method
.annotate "line", 33
new $P163, "ResizablePMCArray"
push $P163, ""
@@ -2430,7 +2438,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binint" :subid("57_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "binint" :subid("57_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx168_tgt
.local int rx168_pos
@@ -2511,7 +2519,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint" :subid("58_1267204683.33533") :method
+.sub "!PREFIX__binint" :subid("58_1271336377.56964") :method
.annotate "line", 33
new $P170, "ResizablePMCArray"
push $P170, ""
@@ -2520,7 +2528,7 @@
.namespace ["HLL";"Grammar"]
-.sub "binints" :subid("59_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "binints" :subid("59_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx177_tgt
.local int rx177_pos
@@ -2604,7 +2612,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints" :subid("60_1267204683.33533") :method
+.sub "!PREFIX__binints" :subid("60_1271336377.56964") :method
.annotate "line", 33
new $P179, "ResizablePMCArray"
push $P179, ""
@@ -2613,7 +2621,7 @@
.namespace ["HLL";"Grammar"]
-.sub "integer" :subid("61_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "integer" :subid("61_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx184_tgt
.local int rx184_pos
@@ -2761,7 +2769,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer" :subid("62_1267204683.33533") :method
+.sub "!PREFIX__integer" :subid("62_1271336377.56964") :method
.annotate "line", 33
$P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
$P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2779,7 +2787,7 @@
.namespace ["HLL";"Grammar"]
-.sub "dec_number" :subid("63_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "dec_number" :subid("63_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx196_tgt
.local int rx196_pos
@@ -2958,7 +2966,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number" :subid("64_1267204683.33533") :method
+.sub "!PREFIX__dec_number" :subid("64_1271336377.56964") :method
.annotate "line", 33
new $P198, "ResizablePMCArray"
push $P198, ""
@@ -2969,7 +2977,7 @@
.namespace ["HLL";"Grammar"]
-.sub "escale" :subid("65_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "escale" :subid("65_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx209_tgt
.local int rx209_pos
@@ -3046,7 +3054,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale" :subid("66_1267204683.33533") :method
+.sub "!PREFIX__escale" :subid("66_1271336377.56964") :method
.annotate "line", 33
new $P211, "ResizablePMCArray"
push $P211, "e"
@@ -3056,7 +3064,7 @@
.namespace ["HLL";"Grammar"]
-.sub "quote_escape" :subid("67_1267204683.33533") :method
+.sub "quote_escape" :subid("67_1271336377.56964") :method
.annotate "line", 79
$P216 = self."!protoregex"("quote_escape")
.return ($P216)
@@ -3064,7 +3072,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape" :subid("68_1267204683.33533") :method
+.sub "!PREFIX__quote_escape" :subid("68_1271336377.56964") :method
.annotate "line", 79
$P218 = self."!PREFIX__!protoregex"("quote_escape")
.return ($P218)
@@ -3072,7 +3080,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx220_tgt
.local int rx220_pos
@@ -3134,7 +3142,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<backslash>" :subid("70_1271336377.56964") :method
.annotate "line", 33
new $P222, "ResizablePMCArray"
push $P222, "\\\\"
@@ -3143,7 +3151,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx225_tgt
.local int rx225_pos
@@ -3212,7 +3220,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<stopper>" :subid("72_1271336377.56964") :method
.annotate "line", 33
new $P227, "ResizablePMCArray"
push $P227, "\\"
@@ -3221,7 +3229,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx230_tgt
.local int rx230_pos
@@ -3283,7 +3291,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<bs>" :subid("74_1271336377.56964") :method
.annotate "line", 33
new $P232, "ResizablePMCArray"
push $P232, "\\b"
@@ -3292,7 +3300,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx235_tgt
.local int rx235_pos
@@ -3354,7 +3362,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<nl>" :subid("76_1271336377.56964") :method
.annotate "line", 33
new $P237, "ResizablePMCArray"
push $P237, "\\n"
@@ -3363,7 +3371,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx240_tgt
.local int rx240_pos
@@ -3425,7 +3433,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<cr>" :subid("78_1271336377.56964") :method
.annotate "line", 33
new $P242, "ResizablePMCArray"
push $P242, "\\r"
@@ -3434,7 +3442,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx245_tgt
.local int rx245_pos
@@ -3496,7 +3504,7 @@
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<tab>" :subid("80_1271336377.56964") :method
.annotate "line", 33
new $P247, "ResizablePMCArray"
push $P247, "\\t"
@@ -3505,7 +3513,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_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
.local string rx250_tgt
.local int rx250_pos
@@ -3514,7 +3522,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 +3544,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,376 +3568,387 @@
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_1271336377.56964") :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<esc>" :subid("83_1271336377.56964") :method :outer("11_1271336377.56964")
.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<esc>")
+ .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", 88
+ # rx literal "\\e"
+ 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, "\\e", 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
+ # rx pass
+ rx255_cur."!cursor_pass"(rx255_pos, "quote_escape:sym<esc>")
+ rx255_cur."!cursor_debug"("PASS ", "quote_escape:sym<esc>", " 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
+ rx255_done:
+ rx255_cur."!cursor_fail"()
+ rx255_cur."!cursor_debug"("FAIL ", "quote_escape:sym<esc>")
+ .return (rx255_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<esc>" :subid("84_1271336377.56964") :method
+.annotate "line", 33
+ new $P257, "ResizablePMCArray"
+ push $P257, "\\e"
+ .return ($P257)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<hex>" :subid("85_1271336377.56964") :method :outer("11_1271336377.56964")
+.annotate "line", 33
+ .local string rx260_tgt
+ .local int rx260_pos
+ .local int rx260_off
+ .local int rx260_eos
+ .local int rx260_rep
+ .local pmc rx260_cur
+ (rx260_cur, rx260_pos, rx260_tgt) = self."!cursor_start"()
+ rx260_cur."!cursor_debug"("START ", "quote_escape:sym<hex>")
+ .lex unicode:"$\x{a2}", rx260_cur
+ .local pmc match
+ .lex "$/", match
+ length rx260_eos, rx260_tgt
+ set rx260_off, 0
+ lt rx260_pos, 2, rx260_start
+ sub rx260_off, rx260_pos, 1
+ substr rx260_tgt, rx260_tgt, rx260_off
+ rx260_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan263_done
+ goto rxscan263_scan
+ rxscan263_loop:
+ ($P10) = rx260_cur."from"()
+ inc $P10
+ set rx260_pos, $P10
+ ge rx260_pos, rx260_eos, rxscan263_done
+ rxscan263_scan:
+ set_addr $I10, rxscan263_loop
+ rx260_cur."!mark_push"(0, rx260_pos, $I10)
+ rxscan263_done:
+.annotate "line", 90
+ # rx literal unicode:"\\x"
+ add $I11, rx260_pos, 2
+ gt $I11, rx260_eos, rx260_fail
+ sub $I11, rx260_pos, rx260_off
+ substr $S10, rx260_tgt, $I11, 2
+ ne $S10, unicode:"\\x", rx260_fail
+ add rx260_pos, 2
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx260_cur."!cursor_pos"(rx260_pos)
+ $P10 = rx260_cur."quotemod_check"("b")
+ unless $P10, rx260_fail
+ alt264_0:
+.annotate "line", 91
+ set_addr $I10, alt264_1
+ rx260_cur."!mark_push"(0, rx260_pos, $I10)
+ # rx subrule "hexint" subtype=capture negate=
+ rx260_cur."!cursor_pos"(rx260_pos)
+ $P10 = rx260_cur."hexint"()
+ unless $P10, rx260_fail
+ rx260_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("hexint")
+ rx260_pos = $P10."pos"()
+ goto alt264_end
+ alt264_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, rx260_pos, 1
+ gt $I11, rx260_eos, rx260_fail
+ sub $I11, rx260_pos, rx260_off
+ substr $S10, rx260_tgt, $I11, 1
+ ne $S10, "[", rx260_fail
+ add rx260_pos, 1
+ # rx subrule "hexints" subtype=capture negate=
+ rx260_cur."!cursor_pos"(rx260_pos)
+ $P10 = rx260_cur."hexints"()
+ unless $P10, rx260_fail
+ rx260_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("hexints")
+ rx260_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, rx260_pos, 1
+ gt $I11, rx260_eos, rx260_fail
+ sub $I11, rx260_pos, rx260_off
+ substr $S10, rx260_tgt, $I11, 1
+ ne $S10, "]", rx260_fail
+ add rx260_pos, 1
+ alt264_end:
+.annotate "line", 89
# 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
+ rx260_cur."!cursor_pass"(rx260_pos, "quote_escape:sym<hex>")
+ rx260_cur."!cursor_debug"("PASS ", "quote_escape:sym<hex>", " at pos=", rx260_pos)
+ .return (rx260_cur)
+ rx260_fail:
+.annotate "line", 33
+ (rx260_rep, rx260_pos, $I10, $P10) = rx260_cur."!mark_fail"(0)
+ lt rx260_pos, -1, rx260_done
+ eq rx260_pos, -1, rx260_fail
jump $I10
- rx256_done:
- rx256_cur."!cursor_fail"()
- rx256_cur."!cursor_debug"("FAIL ", "quote_escape:sym<oct>")
- .return (rx256_cur)
+ rx260_done:
+ rx260_cur."!cursor_fail"()
+ rx260_cur."!cursor_debug"("FAIL ", "quote_escape:sym<hex>")
+ .return (rx260_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>" :subid("84_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<hex>" :subid("86_1271336377.56964") :method
.annotate "line", 33
- new $P258, "ResizablePMCArray"
- push $P258, "\\o"
- .return ($P258)
+ new $P262, "ResizablePMCArray"
+ push $P262, unicode:"\\x"
+ .return ($P262)
.end
.namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>" :subid("85_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<oct>" :subid("87_1271336377.56964") :method :outer("11_1271336377.56964")
.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 rx266_tgt
+ .local int rx266_pos
+ .local int rx266_off
+ .local int rx266_eos
+ .local int rx266_rep
+ .local pmc rx266_cur
+ (rx266_cur, rx266_pos, rx266_tgt) = self."!cursor_start"()
+ rx266_cur."!cursor_debug"("START ", "quote_escape:sym<oct>")
+ .lex unicode:"$\x{a2}", rx266_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 rx266_eos, rx266_tgt
+ set rx266_off, 0
+ lt rx266_pos, 2, rx266_start
+ sub rx266_off, rx266_pos, 1
+ substr rx266_tgt, rx266_tgt, rx266_off
+ rx266_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan265_done
- goto rxscan265_scan
- rxscan265_loop:
- ($P10) = rx262_cur."from"()
+ ne $I10, -1, rxscan269_done
+ goto rxscan269_scan
+ rxscan269_loop:
+ ($P10) = rx266_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 rx266_pos, $P10
+ ge rx266_pos, rx266_eos, rxscan269_done
+ rxscan269_scan:
+ set_addr $I10, rxscan269_loop
+ rx266_cur."!mark_push"(0, rx266_pos, $I10)
+ rxscan269_done:
+.annotate "line", 94
+ # rx literal "\\o"
+ add $I11, rx266_pos, 2
+ gt $I11, rx266_eos, rx266_fail
+ sub $I11, rx266_pos, rx266_off
+ substr $S10, rx266_tgt, $I11, 2
+ ne $S10, "\\o", rx266_fail
+ add rx266_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"()
+ rx266_cur."!cursor_pos"(rx266_pos)
+ $P10 = rx266_cur."quotemod_check"("b")
+ unless $P10, rx266_fail
+ alt270_0:
+.annotate "line", 95
+ set_addr $I10, alt270_1
+ rx266_cur."!mark_push"(0, rx266_pos, $I10)
+ # rx subrule "octint" subtype=capture negate=
+ rx266_cur."!cursor_pos"(rx266_pos)
+ $P10 = rx266_cur."octint"()
+ unless $P10, rx266_fail
+ rx266_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("octint")
+ rx266_pos = $P10."pos"()
+ goto alt270_end
+ alt270_1:
+ # rx literal "["
+ add $I11, rx266_pos, 1
+ gt $I11, rx266_eos, rx266_fail
+ sub $I11, rx266_pos, rx266_off
+ substr $S10, rx266_tgt, $I11, 1
+ ne $S10, "[", rx266_fail
+ add rx266_pos, 1
+ # rx subrule "octints" subtype=capture negate=
+ rx266_cur."!cursor_pos"(rx266_pos)
+ $P10 = rx266_cur."octints"()
+ unless $P10, rx266_fail
+ rx266_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("octints")
+ rx266_pos = $P10."pos"()
+ # rx literal "]"
+ add $I11, rx266_pos, 1
+ gt $I11, rx266_eos, rx266_fail
+ sub $I11, rx266_pos, rx266_off
+ substr $S10, rx266_tgt, $I11, 1
+ ne $S10, "]", rx266_fail
+ add rx266_pos, 1
+ alt270_end:
+.annotate "line", 93
# 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
+ rx266_cur."!cursor_pass"(rx266_pos, "quote_escape:sym<oct>")
+ rx266_cur."!cursor_debug"("PASS ", "quote_escape:sym<oct>", " at pos=", rx266_pos)
+ .return (rx266_cur)
+ rx266_fail:
+.annotate "line", 33
+ (rx266_rep, rx266_pos, $I10, $P10) = rx266_cur."!mark_fail"(0)
+ lt rx266_pos, -1, rx266_done
+ eq rx266_pos, -1, rx266_fail
jump $I10
- rx262_done:
- rx262_cur."!cursor_fail"()
- rx262_cur."!cursor_debug"("FAIL ", "quote_escape:sym<chr>")
- .return (rx262_cur)
+ rx266_done:
+ rx266_cur."!cursor_fail"()
+ rx266_cur."!cursor_debug"("FAIL ", "quote_escape:sym<oct>")
+ .return (rx266_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>" :subid("86_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<oct>" :subid("88_1271336377.56964") :method
.annotate "line", 33
- new $P264, "ResizablePMCArray"
- push $P264, "\\c"
- .return ($P264)
+ new $P268, "ResizablePMCArray"
+ push $P268, "\\o"
+ .return ($P268)
.end
.namespace ["HLL";"Grammar"]
-.sub "charname" :subid("87_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "quote_escape:sym<chr>" :subid("89_1271336377.56964") :method :outer("11_1271336377.56964")
.annotate "line", 33
- .const 'Sub' $P276 = "89_1267204683.33533"
- capture_lex $P276
- .local string rx267_tgt
- .local int rx267_pos
- .local int rx267_off
- .local int rx267_eos
- .local int rx267_rep
- .local pmc rx267_cur
- (rx267_cur, rx267_pos, rx267_tgt) = self."!cursor_start"()
- rx267_cur."!cursor_debug"("START ", "charname")
- .lex unicode:"$\x{a2}", rx267_cur
+ .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<chr>")
+ .lex unicode:"$\x{a2}", rx272_cur
.local pmc match
.lex "$/", match
- length rx267_eos, rx267_tgt
- set rx267_off, 0
- lt rx267_pos, 2, rx267_start
- sub rx267_off, rx267_pos, 1
- substr rx267_tgt, rx267_tgt, rx267_off
- rx267_start:
+ 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, rxscan271_done
- goto rxscan271_scan
- rxscan271_loop:
- ($P10) = rx267_cur."from"()
+ ne $I10, -1, rxscan275_done
+ goto rxscan275_scan
+ rxscan275_loop:
+ ($P10) = rx272_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
- rx267_cur."!mark_push"(0, rx267_pos, $I10)
-.annotate "line", 98
- # rx subrule "integer" subtype=capture negate=
- rx267_cur."!cursor_pos"(rx267_pos)
- $P10 = rx267_cur."integer"()
- 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=
- rx267_cur."!cursor_pos"(rx267_pos)
- .const 'Sub' $P276 = "89_1267204683.33533"
- capture_lex $P276
- $P10 = rx267_cur."before"($P276)
- unless $P10, rx267_fail
- alt272_end:
+ 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 "\\c"
+ add $I11, rx272_pos, 2
+ gt $I11, rx272_eos, rx272_fail
+ sub $I11, rx272_pos, rx272_off
+ substr $S10, rx272_tgt, $I11, 2
+ ne $S10, "\\c", rx272_fail
+ add rx272_pos, 2
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx272_cur."!cursor_pos"(rx272_pos)
+ $P10 = rx272_cur."quotemod_check"("b")
+ unless $P10, rx272_fail
+ # rx subrule "charspec" subtype=capture negate=
+ rx272_cur."!cursor_pos"(rx272_pos)
+ $P10 = rx272_cur."charspec"()
+ unless $P10, rx272_fail
+ rx272_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("charspec")
+ rx272_pos = $P10."pos"()
# rx pass
- rx267_cur."!cursor_pass"(rx267_pos, "charname")
- rx267_cur."!cursor_debug"("PASS ", "charname", " at pos=", rx267_pos)
- .return (rx267_cur)
- rx267_fail:
-.annotate "line", 33
- (rx267_rep, rx267_pos, $I10, $P10) = rx267_cur."!mark_fail"(0)
- lt rx267_pos, -1, rx267_done
- eq rx267_pos, -1, rx267_fail
+ rx272_cur."!cursor_pass"(rx272_pos, "quote_escape:sym<chr>")
+ rx272_cur."!cursor_debug"("PASS ", "quote_escape:sym<chr>", " 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
- rx267_done:
- rx267_cur."!cursor_fail"()
- rx267_cur."!cursor_debug"("FAIL ", "charname")
- .return (rx267_cur)
+ rx272_done:
+ rx272_cur."!cursor_fail"()
+ rx272_cur."!cursor_debug"("FAIL ", "quote_escape:sym<chr>")
+ .return (rx272_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname" :subid("88_1267204683.33533") :method
+.sub "!PREFIX__quote_escape:sym<chr>" :subid("90_1271336377.56964") :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 $P274, "ResizablePMCArray"
+ push $P274, "\\c"
+ .return ($P274)
.end
.namespace ["HLL";"Grammar"]
-.sub "_block275" :anon :subid("89_1267204683.33533") :method :outer("87_1267204683.33533")
-.annotate "line", 100
+.sub "quote_escape:sym<0>" :subid("91_1271336377.56964") :method :outer("11_1271336377.56964")
+.annotate "line", 33
.local string rx277_tgt
.local int rx277_pos
.local int rx277_off
@@ -3973,7 +3956,7 @@
.local int rx277_rep
.local pmc rx277_cur
(rx277_cur, rx277_pos, rx277_tgt) = self."!cursor_start"()
- rx277_cur."!cursor_debug"("START ", "")
+ rx277_cur."!cursor_debug"("START ", "quote_escape:sym<0>")
.lex unicode:"$\x{a2}", rx277_cur
.local pmc match
.lex "$/", match
@@ -3984,404 +3967,914 @@
substr rx277_tgt, rx277_tgt, rx277_off
rx277_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan278_done
- goto rxscan278_scan
- rxscan278_loop:
+ ne $I10, -1, rxscan280_done
+ goto rxscan280_scan
+ rxscan280_loop:
($P10) = rx277_cur."from"()
inc $P10
set rx277_pos, $P10
- ge rx277_pos, rx277_eos, rxscan278_done
- rxscan278_scan:
- set_addr $I10, rxscan278_loop
+ ge rx277_pos, rx277_eos, rxscan280_done
+ rxscan280_scan:
+ set_addr $I10, rxscan280_loop
rx277_cur."!mark_push"(0, rx277_pos, $I10)
- rxscan278_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
- # rx enumcharlist negate=0
- ge rx277_pos, rx277_eos, rx277_fail
- sub $I10, rx277_pos, rx277_off
- substr $S10, rx277_tgt, $I10, 1
- index $I11, "],#", $S10
- lt $I11, 0, rx277_fail
- inc rx277_pos
+ rxscan280_done:
+.annotate "line", 98
+ # rx literal "\\"
+ add $I11, rx277_pos, 1
+ gt $I11, rx277_eos, rx277_fail
+ sub $I11, rx277_pos, rx277_off
+ substr $S10, rx277_tgt, $I11, 1
+ ne $S10, "\\", rx277_fail
+ add rx277_pos, 1
+ # rx subcapture "sym"
+ set_addr $I10, rxcap_281_fail
+ rx277_cur."!mark_push"(0, rx277_pos, $I10)
+ # rx literal "0"
+ add $I11, rx277_pos, 1
+ gt $I11, rx277_eos, rx277_fail
+ sub $I11, rx277_pos, rx277_off
+ substr $S10, rx277_tgt, $I11, 1
+ ne $S10, "0", rx277_fail
+ add rx277_pos, 1
+ set_addr $I10, rxcap_281_fail
+ ($I12, $I11) = rx277_cur."!mark_peek"($I10)
+ rx277_cur."!cursor_pos"($I11)
+ ($P10) = rx277_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx277_pos, "")
+ rx277_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("sym")
+ goto rxcap_281_done
+ rxcap_281_fail:
+ goto rx277_fail
+ rxcap_281_done:
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx277_cur."!cursor_pos"(rx277_pos)
+ $P10 = rx277_cur."quotemod_check"("b")
+ unless $P10, rx277_fail
# rx pass
- rx277_cur."!cursor_pass"(rx277_pos, "")
- rx277_cur."!cursor_debug"("PASS ", "", " at pos=", rx277_pos)
+ rx277_cur."!cursor_pass"(rx277_pos, "quote_escape:sym<0>")
+ rx277_cur."!cursor_debug"("PASS ", "quote_escape:sym<0>", " at pos=", rx277_pos)
.return (rx277_cur)
rx277_fail:
+.annotate "line", 33
(rx277_rep, rx277_pos, $I10, $P10) = rx277_cur."!mark_fail"(0)
lt rx277_pos, -1, rx277_done
eq rx277_pos, -1, rx277_fail
jump $I10
rx277_done:
rx277_cur."!cursor_fail"()
- rx277_cur."!cursor_debug"("FAIL ", "")
+ rx277_cur."!cursor_debug"("FAIL ", "quote_escape:sym<0>")
.return (rx277_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "charnames" :subid("90_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "!PREFIX__quote_escape:sym<0>" :subid("92_1271336377.56964") :method
.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
+ new $P279, "ResizablePMCArray"
+ push $P279, "\\0"
+ .return ($P279)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "quote_escape:sym<misc>" :subid("93_1271336377.56964") :method :outer("11_1271336377.56964")
+.annotate "line", 33
+ .const 'Sub' $P302 = "97_1271336377.56964"
+ capture_lex $P302
+ .const 'Sub' $P295 = "96_1271336377.56964"
+ capture_lex $P295
+ .const 'Sub' $P290 = "95_1271336377.56964"
+ capture_lex $P290
+ .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 ", "quote_escape:sym<misc>")
+ .lex unicode:"$\x{a2}", rx283_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 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, rxscan283_done
- goto rxscan283_scan
- rxscan283_loop:
- ($P10) = rx280_cur."from"()
+ ne $I10, -1, rxscan286_done
+ goto rxscan286_scan
+ rxscan286_loop:
+ ($P10) = rx283_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:
+ 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", 99
+ rx283_cur."!cursor_pos"(rx283_pos)
+ find_lex $P287, unicode:"$\x{a2}"
+ $P288 = $P287."MATCH"()
+ store_lex "$/", $P288
+.annotate "line", 100
+ .const 'Sub' $P290 = "95_1271336377.56964"
+ capture_lex $P290
+ $P291 = $P290()
+ # rx literal "\\"
+ add $I11, rx283_pos, 1
+ gt $I11, rx283_eos, rx283_fail
+ sub $I11, rx283_pos, rx283_off
+ substr $S10, rx283_tgt, $I11, 1
+ ne $S10, "\\", rx283_fail
+ add rx283_pos, 1
+ alt292_0:
+.annotate "line", 101
+ set_addr $I10, alt292_1
+ rx283_cur."!mark_push"(0, rx283_pos, $I10)
.annotate "line", 102
- # rx rxquantr284 ** 1..*
- set_addr $I285, rxquantr284_done
- rx280_cur."!mark_push"(0, -1, $I285)
- rxquantr284_loop:
+ # rx subrule "quotemod_check" subtype=zerowidth negate=
+ rx283_cur."!cursor_pos"(rx283_pos)
+ $P10 = rx283_cur."quotemod_check"("b")
+ unless $P10, rx283_fail
+ alt293_0:
+.annotate "line", 103
+ set_addr $I10, alt293_1
+ rx283_cur."!mark_push"(0, rx283_pos, $I10)
+.annotate "line", 104
+ # rx subrule $P295 subtype=capture negate=
+ rx283_cur."!cursor_pos"(rx283_pos)
+ .const 'Sub' $P295 = "96_1271336377.56964"
+ capture_lex $P295
+ $P10 = rx283_cur.$P295()
+ unless $P10, rx283_fail
+ rx283_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("textqq")
+ rx283_pos = $P10."pos"()
+ goto alt293_end
+ alt293_1:
+.annotate "line", 105
+ # rx subcapture "x"
+ set_addr $I10, rxcap_298_fail
+ rx283_cur."!mark_push"(0, rx283_pos, $I10)
+ # rx charclass w
+ ge rx283_pos, rx283_eos, rx283_fail
+ sub $I10, rx283_pos, rx283_off
+ is_cclass $I11, 8192, rx283_tgt, $I10
+ unless $I11, rx283_fail
+ inc rx283_pos
+ set_addr $I10, rxcap_298_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)
+ $P10."!cursor_names"("x")
+ goto rxcap_298_done
+ rxcap_298_fail:
+ goto rx283_fail
+ rxcap_298_done:
+ rx283_cur."!cursor_pos"(rx283_pos)
+ find_lex $P299, unicode:"$\x{a2}"
+ $P300 = $P299."MATCH"()
+ store_lex "$/", $P300
+ .const 'Sub' $P302 = "97_1271336377.56964"
+ capture_lex $P302
+ $P312 = $P302()
+ alt293_end:
+.annotate "line", 102
+ goto alt292_end
+ alt292_1:
+.annotate "line", 107
+ # rx subcapture "textq"
+ set_addr $I10, rxcap_313_fail
+ rx283_cur."!mark_push"(0, rx283_pos, $I10)
+ # rx charclass .
+ ge rx283_pos, rx283_eos, rx283_fail
+ inc rx283_pos
+ set_addr $I10, rxcap_313_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)
+ $P10."!cursor_names"("textq")
+ goto rxcap_313_done
+ rxcap_313_fail:
+ goto rx283_fail
+ rxcap_313_done:
+ alt292_end:
+.annotate "line", 99
+ # rx pass
+ rx283_cur."!cursor_pass"(rx283_pos, "quote_escape:sym<misc>")
+ rx283_cur."!cursor_debug"("PASS ", "quote_escape:sym<misc>", " at pos=", rx283_pos)
+ .return (rx283_cur)
+ rx283_fail:
+.annotate "line", 33
+ (rx283_rep, rx283_pos, $I10, $P10) = rx283_cur."!mark_fail"(0)
+ lt rx283_pos, -1, rx283_done
+ eq rx283_pos, -1, rx283_fail
+ jump $I10
+ rx283_done:
+ rx283_cur."!cursor_fail"()
+ rx283_cur."!cursor_debug"("FAIL ", "quote_escape:sym<misc>")
+ .return (rx283_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__quote_escape:sym<misc>" :subid("94_1271336377.56964") :method
+.annotate "line", 33
+ new $P285, "ResizablePMCArray"
+ push $P285, ""
+ .return ($P285)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block289" :anon :subid("95_1271336377.56964") :outer("93_1271336377.56964")
+.annotate "line", 100
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block294" :anon :subid("96_1271336377.56964") :method :outer("93_1271336377.56964")
+.annotate "line", 104
+ .local string rx296_tgt
+ .local int rx296_pos
+ .local int rx296_off
+ .local int rx296_eos
+ .local int rx296_rep
+ .local pmc rx296_cur
+ (rx296_cur, rx296_pos, rx296_tgt) = self."!cursor_start"()
+ rx296_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx296_cur
+ .local pmc match
+ .lex "$/", match
+ length rx296_eos, rx296_tgt
+ set rx296_off, 0
+ lt rx296_pos, 2, rx296_start
+ sub rx296_off, rx296_pos, 1
+ substr rx296_tgt, rx296_tgt, rx296_off
+ rx296_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan297_done
+ goto rxscan297_scan
+ rxscan297_loop:
+ ($P10) = rx296_cur."from"()
+ inc $P10
+ set rx296_pos, $P10
+ ge rx296_pos, rx296_eos, rxscan297_done
+ rxscan297_scan:
+ set_addr $I10, rxscan297_loop
+ rx296_cur."!mark_push"(0, rx296_pos, $I10)
+ rxscan297_done:
+ # rx charclass W
+ ge rx296_pos, rx296_eos, rx296_fail
+ sub $I10, rx296_pos, rx296_off
+ is_cclass $I11, 8192, rx296_tgt, $I10
+ if $I11, rx296_fail
+ inc rx296_pos
+ # rx pass
+ rx296_cur."!cursor_pass"(rx296_pos, "")
+ rx296_cur."!cursor_debug"("PASS ", "", " at pos=", rx296_pos)
+ .return (rx296_cur)
+ rx296_fail:
+ (rx296_rep, rx296_pos, $I10, $P10) = rx296_cur."!mark_fail"(0)
+ lt rx296_pos, -1, rx296_done
+ eq rx296_pos, -1, rx296_fail
+ jump $I10
+ rx296_done:
+ rx296_cur."!cursor_fail"()
+ rx296_cur."!cursor_debug"("FAIL ", "")
+ .return (rx296_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block301" :anon :subid("97_1271336377.56964") :outer("93_1271336377.56964")
+.annotate "line", 105
+ find_lex $P303, "$/"
+ $P304 = $P303."CURSOR"()
+ new $P305, "String"
+ assign $P305, "Unrecognized backslash sequence: '\\"
+ find_lex $P306, "$/"
+ unless_null $P306, vivify_106
+ $P306 = root_new ['parrot';'Hash']
+ vivify_106:
+ set $P307, $P306["x"]
+ unless_null $P307, vivify_107
+ new $P307, "Undef"
+ vivify_107:
+ $S308 = $P307."Str"()
+ concat $P309, $P305, $S308
+ concat $P310, $P309, "'"
+ $P311 = $P304."panic"($P310)
+ .return ($P311)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charname" :subid("98_1271336377.56964") :method :outer("11_1271336377.56964")
+.annotate "line", 33
+ .const 'Sub' $P324 = "100_1271336377.56964"
+ capture_lex $P324
+ .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 ", "charname")
+ .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, rxscan319_done
+ goto rxscan319_scan
+ rxscan319_loop:
+ ($P10) = rx315_cur."from"()
+ inc $P10
+ set rx315_pos, $P10
+ ge rx315_pos, rx315_eos, rxscan319_done
+ rxscan319_scan:
+ set_addr $I10, rxscan319_loop
+ rx315_cur."!mark_push"(0, rx315_pos, $I10)
+ rxscan319_done:
+ alt320_0:
+.annotate "line", 111
+ set_addr $I10, alt320_1
+ rx315_cur."!mark_push"(0, rx315_pos, $I10)
+.annotate "line", 112
+ # rx subrule "integer" subtype=capture negate=
+ rx315_cur."!cursor_pos"(rx315_pos)
+ $P10 = rx315_cur."integer"()
+ unless $P10, rx315_fail
+ rx315_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("integer")
+ rx315_pos = $P10."pos"()
+ goto alt320_end
+ alt320_1:
+.annotate "line", 113
+ # rx enumcharlist negate=0
+ ge rx315_pos, rx315_eos, rx315_fail
+ sub $I10, rx315_pos, rx315_off
+ substr $S10, rx315_tgt, $I10, 1
+ index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", $S10
+ lt $I11, 0, rx315_fail
+ inc rx315_pos
+ # rx rxquantf321 ** 0..*
+ set_addr $I10, rxquantf321_loop
+ rx315_cur."!mark_push"(0, rx315_pos, $I10)
+ goto rxquantf321_done
+ rxquantf321_loop:
+ # rx enumcharlist negate=1
+ ge rx315_pos, rx315_eos, rx315_fail
+ sub $I10, rx315_pos, rx315_off
+ substr $S10, rx315_tgt, $I10, 1
+ index $I11, "],#", $S10
+ ge $I11, 0, rx315_fail
+ inc rx315_pos
+ set_addr $I10, rxquantf321_loop
+ rx315_cur."!mark_push"($I322, rx315_pos, $I10)
+ rxquantf321_done:
+ # rx enumcharlist negate=0
+ ge rx315_pos, rx315_eos, rx315_fail
+ sub $I10, rx315_pos, rx315_off
+ substr $S10, rx315_tgt, $I10, 1
+ index $I11, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)", $S10
+ lt $I11, 0, rx315_fail
+ inc rx315_pos
+.annotate "line", 114
+ # rx subrule "before" subtype=zerowidth negate=
+ rx315_cur."!cursor_pos"(rx315_pos)
+ .const 'Sub' $P324 = "100_1271336377.56964"
+ capture_lex $P324
+ $P10 = rx315_cur."before"($P324)
+ unless $P10, rx315_fail
+ alt320_end:
+.annotate "line", 111
+ # rx pass
+ rx315_cur."!cursor_pass"(rx315_pos, "charname")
+ rx315_cur."!cursor_debug"("PASS ", "charname", " at pos=", rx315_pos)
+ .return (rx315_cur)
+ rx315_fail:
+.annotate "line", 33
+ (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
+ rx315_done:
+ rx315_cur."!cursor_fail"()
+ rx315_cur."!cursor_debug"("FAIL ", "charname")
+ .return (rx315_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "!PREFIX__charname" :subid("99_1271336377.56964") :method
+.annotate "line", 33
+ $P317 = self."!PREFIX__!subrule"("integer", "")
+ new $P318, "ResizablePMCArray"
+ push $P318, "Z"
+ push $P318, "Y"
+ push $P318, "X"
+ push $P318, "W"
+ push $P318, "V"
+ push $P318, "U"
+ push $P318, "T"
+ push $P318, "S"
+ push $P318, "R"
+ push $P318, "Q"
+ push $P318, "P"
+ push $P318, "O"
+ push $P318, "N"
+ push $P318, "M"
+ push $P318, "L"
+ push $P318, "K"
+ push $P318, "J"
+ push $P318, "I"
+ push $P318, "H"
+ push $P318, "G"
+ push $P318, "F"
+ push $P318, "E"
+ push $P318, "D"
+ push $P318, "C"
+ push $P318, "B"
+ push $P318, "A"
+ push $P318, "z"
+ push $P318, "y"
+ push $P318, "x"
+ push $P318, "w"
+ push $P318, "v"
+ push $P318, "u"
+ push $P318, "t"
+ push $P318, "s"
+ push $P318, "r"
+ push $P318, "q"
+ push $P318, "p"
+ push $P318, "o"
+ push $P318, "n"
+ push $P318, "m"
+ push $P318, "l"
+ push $P318, "k"
+ push $P318, "j"
+ push $P318, "i"
+ push $P318, "h"
+ push $P318, "g"
+ push $P318, "f"
+ push $P318, "e"
+ push $P318, "d"
+ push $P318, "c"
+ push $P318, "b"
+ push $P318, "a"
+ push $P318, $P317
+ .return ($P318)
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "_block323" :anon :subid("100_1271336377.56964") :method :outer("98_1271336377.56964")
+.annotate "line", 114
+ .local string rx325_tgt
+ .local int rx325_pos
+ .local int rx325_off
+ .local int rx325_eos
+ .local int rx325_rep
+ .local pmc rx325_cur
+ (rx325_cur, rx325_pos, rx325_tgt) = self."!cursor_start"()
+ rx325_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx325_cur
+ .local pmc match
+ .lex "$/", match
+ length rx325_eos, rx325_tgt
+ set rx325_off, 0
+ lt rx325_pos, 2, rx325_start
+ sub rx325_off, rx325_pos, 1
+ substr rx325_tgt, rx325_tgt, rx325_off
+ rx325_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan326_done
+ goto rxscan326_scan
+ rxscan326_loop:
+ ($P10) = rx325_cur."from"()
+ inc $P10
+ set rx325_pos, $P10
+ ge rx325_pos, rx325_eos, rxscan326_done
+ rxscan326_scan:
+ set_addr $I10, rxscan326_loop
+ rx325_cur."!mark_push"(0, rx325_pos, $I10)
+ rxscan326_done:
+ # rx charclass_q s r 0..-1
+ sub $I10, rx325_pos, rx325_off
+ find_not_cclass $I11, 32, rx325_tgt, $I10, rx325_eos
+ add rx325_pos, rx325_off, $I11
+ # rx enumcharlist negate=0
+ ge rx325_pos, rx325_eos, rx325_fail
+ sub $I10, rx325_pos, rx325_off
+ substr $S10, rx325_tgt, $I10, 1
+ index $I11, "],#", $S10
+ lt $I11, 0, rx325_fail
+ inc rx325_pos
+ # rx pass
+ rx325_cur."!cursor_pass"(rx325_pos, "")
+ rx325_cur."!cursor_debug"("PASS ", "", " at pos=", rx325_pos)
+ .return (rx325_cur)
+ rx325_fail:
+ (rx325_rep, rx325_pos, $I10, $P10) = rx325_cur."!mark_fail"(0)
+ lt rx325_pos, -1, rx325_done
+ eq rx325_pos, -1, rx325_fail
+ jump $I10
+ rx325_done:
+ rx325_cur."!cursor_fail"()
+ rx325_cur."!cursor_debug"("FAIL ", "")
+ .return (rx325_cur)
+ .return ()
+.end
+
+
+.namespace ["HLL";"Grammar"]
+.sub "charnames" :subid("101_1271336377.56964") :method :outer("11_1271336377.56964")
+.annotate "line", 33
+ .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 ", "charnames")
+ rx328_cur."!cursor_caparray"("charname")
+ .lex unicode:"$\x{a2}", rx328_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:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan331_done
+ goto rxscan331_scan
+ rxscan331_loop:
+ ($P10) = rx328_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", 116
+ # rx rxquantr332 ** 1..*
+ set_addr $I333, rxquantr332_done
+ rx328_cur."!mark_push"(0, -1, $I333)
+ rxquantr332_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"()
+ rx328_cur."!cursor_pos"(rx328_pos)
+ $P10 = rx328_cur."ws"()
+ unless $P10, rx328_fail
+ rx328_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)
+ rx328_cur."!cursor_pos"(rx328_pos)
+ $P10 = rx328_cur."charname"()
+ unless $P10, rx328_fail
+ rx328_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("charname")
- rx280_pos = $P10."pos"()
+ rx328_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)
+ rx328_cur."!cursor_pos"(rx328_pos)
+ $P10 = rx328_cur."ws"()
+ unless $P10, rx328_fail
+ rx328_pos = $P10."pos"()
+ (rx328_rep) = rx328_cur."!mark_commit"($I333)
+ rx328_cur."!mark_push"(rx328_rep, rx328_pos, $I333)
# 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, rx328_pos, 1
+ gt $I11, rx328_eos, rx328_fail
+ sub $I11, rx328_pos, rx328_off
+ substr $S10, rx328_tgt, $I11, 1
+ ne $S10, ",", rx328_fail
+ add rx328_pos, 1
+ goto rxquantr332_loop
+ rxquantr332_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
+ rx328_cur."!cursor_pass"(rx328_pos, "charnames")
+ rx328_cur."!cursor_debug"("PASS ", "charnames", " at pos=", rx328_pos)
+ .return (rx328_cur)
+ rx328_fail:
+.annotate "line", 33
+ (rx328_rep, rx328_pos, $I10, $P10) = rx328_cur."!mark_fail"(0)
+ lt rx328_pos, -1, rx328_done
+ eq rx328_pos, -1, rx328_fail
jump $I10
- rx280_done:
- rx280_cur."!cursor_fail"()
- rx280_cur."!cursor_debug"("FAIL ", "charnames")
- .return (rx280_cur)
+ rx328_done:
+ rx328_cur."!cursor_fail"()
+ rx328_cur."!cursor_debug"("FAIL ", "charnames")
+ .return (rx328_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames" :subid("91_1267204683.33533") :method
+.sub "!PREFIX__charnames" :subid("102_1271336377.56964") :method
.annotate "line", 33
- new $P282, "ResizablePMCArray"
- push $P282, ""
- .return ($P282)
+ new $P330, "ResizablePMCArray"
+ push $P330, ""
+ .return ($P330)
.end
.namespace ["HLL";"Grammar"]
-.sub "charspec" :subid("92_1267204683.33533") :method :outer("11_1267204683.33533")
+.sub "charspec" :subid("103_1271336377.56964") :method :outer("11_1271336377.56964")
.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 rx335_tgt
+ .local int rx335_pos
+ .local int rx335_off
+ .local int rx335_eos
+ .local int rx335_rep
+ .local pmc rx335_cur
+ (rx335_cur, rx335_pos, rx335_tgt) = self."!cursor_start"()
+ rx335_cur."!cursor_debug"("START ", "charspec")
+ .lex unicode:"$\x{a2}", rx335_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 rx335_eos, rx335_tgt
+ set rx335_off, 0
+ lt rx335_pos, 2, rx335_start
+ sub rx335_off, rx335_pos, 1
+ substr rx335_tgt, rx335_tgt, rx335_off
+ rx335_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan292_done
- goto rxscan292_scan
- rxscan292_loop:
- ($P10) = rx287_cur."from"()
+ ne $I10, -1, rxscan340_done
+ goto rxscan340_scan
+ rxscan340_loop:
+ ($P10) = rx335_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 rx335_pos, $P10
+ ge rx335_pos, rx335_eos, rxscan340_done
+ rxscan340_scan:
+ set_addr $I10, rxscan340_loop
+ rx335_cur."!mark_push"(0, rx335_pos, $I10)
+ rxscan340_done:
+ alt341_0:
+.annotate "line", 118
+ set_addr $I10, alt341_1
+ rx335_cur."!mark_push"(0, rx335_pos, $I10)
+.annotate "line", 119
# 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, rx335_pos, 1
+ gt $I11, rx335_eos, rx335_fail
+ sub $I11, rx335_pos, rx335_off
+ substr $S10, rx335_tgt, $I11, 1
+ ne $S10, "[", rx335_fail
+ add rx335_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)
+ rx335_cur."!cursor_pos"(rx335_pos)
+ $P10 = rx335_cur."charnames"()
+ unless $P10, rx335_fail
+ rx335_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("charnames")
- rx287_pos = $P10."pos"()
+ rx335_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, rx335_pos, 1
+ gt $I11, rx335_eos, rx335_fail
+ sub $I11, rx335_pos, rx335_off
+ substr $S10, rx335_tgt, $I11, 1
+ ne $S10, "]", rx335_fail
+ add rx335_pos, 1
+ goto alt341_end
+ alt341_1:
+ set_addr $I10, alt341_2
+ rx335_cur."!mark_push"(0, rx335_pos, $I10)
+.annotate "line", 120
# 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, rx335_pos, rx335_off
+ find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_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, rx335_fail
+ add rx335_pos, rx335_off, $I11
+ # rx rxquantr342 ** 0..*
+ set_addr $I343, rxquantr342_done
+ rx335_cur."!mark_push"(0, rx335_pos, $I343)
+ rxquantr342_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, rx335_pos, 1
+ gt $I11, rx335_eos, rx335_fail
+ sub $I11, rx335_pos, rx335_off
+ substr $S10, rx335_tgt, $I11, 1
+ ne $S10, "_", rx335_fail
+ add rx335_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, rx335_pos, rx335_off
+ find_not_cclass $I11, 8, rx335_tgt, $I10, rx335_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, rx335_fail
+ add rx335_pos, rx335_off, $I11
+ (rx335_rep) = rx335_cur."!mark_commit"($I343)
+ rx335_cur."!mark_push"(rx335_rep, rx335_pos, $I343)
+ goto rxquantr342_loop
+ rxquantr342_done:
+ goto alt341_end
+ alt341_2:
+ set_addr $I10, alt341_3
+ rx335_cur."!mark_push"(0, rx335_pos, $I10)
+.annotate "line", 121
# rx enumcharlist negate=0
- ge rx287_pos, rx287_eos, rx287_fail
- sub $I10, rx287_pos, rx287_off
- substr $S10, rx287_tgt, $I10, 1
+ ge rx335_pos, rx335_eos, rx335_fail
+ sub $I10, rx335_pos, rx335_off
+ substr $S10, rx335_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, rx335_fail
+ inc rx335_pos
+ goto alt341_end
+ alt341_3:
+.annotate "line", 122
# 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
+ rx335_cur."!cursor_pos"(rx335_pos)
+ $P10 = rx335_cur."panic"("Unrecognized \\c character")
+ unless $P10, rx335_fail
+ rx335_pos = $P10."pos"()
+ alt341_end:
+.annotate "line", 117
# 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
+ rx335_cur."!cursor_pass"(rx335_pos, "charspec")
+ rx335_cur."!cursor_debug"("PASS ", "charspec", " at pos=", rx335_pos)
+ .return (rx335_cur)
+ rx335_fail:
+.annotate "line", 33
+ (rx335_rep, rx335_pos, $I10, $P10) = rx335_cur."!mark_fail"(0)
+ lt rx335_pos, -1, rx335_done
+ eq rx335_pos, -1, rx335_fail
jump $I10
- rx287_done:
- rx287_cur."!cursor_fail"()
- rx287_cur."!cursor_debug"("FAIL ", "charspec")
- .return (rx287_cur)
+ rx335_done:
+ rx335_cur."!cursor_fail"()
+ rx335_cur."!cursor_debug"("FAIL ", "charspec")
+ .return (rx335_cur)
.return ()
.end
.namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec" :subid("93_1267204683.33533") :method
+.sub "!PREFIX__charspec" :subid("104_1271336377.56964") :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)
+ $P337 = self."!PREFIX__!subrule"("", "")
+ $P338 = self."!PREFIX__!subrule"("charnames", "[")
+ new $P339, "ResizablePMCArray"
+ push $P339, $P337
+ push $P339, "Z"
+ push $P339, "Y"
+ push $P339, "X"
+ push $P339, "W"
+ push $P339, "V"
+ push $P339, "U"
+ push $P339, "T"
+ push $P339, "S"
+ push $P339, "R"
+ push $P339, "Q"
+ push $P339, "P"
+ push $P339, "O"
+ push $P339, "N"
+ push $P339, "M"
+ push $P339, "L"
+ push $P339, "K"
+ push $P339, "J"
+ push $P339, "I"
+ push $P339, "H"
+ push $P339, "G"
+ push $P339, "F"
+ push $P339, "E"
+ push $P339, "D"
+ push $P339, "C"
+ push $P339, "B"
+ push $P339, "A"
+ push $P339, "@"
+ push $P339, "?"
+ push $P339, ""
+ push $P339, $P338
+ .return ($P339)
.end
### .include 'gen/hllgrammar-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204685.44293")
+.sub "_block11" :anon :subid("10_1271336380.06238")
.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()
+ $P578 = $P14()
.annotate "line", 1
- .return ($P538)
+ .return ($P578)
.end
.namespace []
-.sub "" :load :init :subid("post46") :outer("10_1267204685.44293")
+.sub "" :load :init :subid("post50") :outer("10_1271336380.06238")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204685.44293"
+ .const 'Sub' $P12 = "10_1271336380.06238"
.local pmc block
set block, $P12
- $P539 = get_root_global ["parrot"], "P6metaclass"
- $P539."new_class"("HLL::Actions")
+ $P579 = get_root_global ["parrot"], "P6metaclass"
+ $P579."new_class"("HLL::Actions")
.end
.namespace ["HLL";"Actions"]
-.sub "_block13" :subid("11_1267204685.44293") :outer("10_1267204685.44293")
+.sub "_block13" :subid("11_1271336380.06238") :outer("10_1271336380.06238")
.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' $P561 = "49_1271336380.06238"
+ capture_lex $P561
+ .const 'Sub' $P536 = "47_1271336380.06238"
+ capture_lex $P536
+ .const 'Sub' $P505 = "46_1271336380.06238"
+ capture_lex $P505
+ .const 'Sub' $P486 = "45_1271336380.06238"
+ capture_lex $P486
+ .const 'Sub' $P479 = "44_1271336380.06238"
+ capture_lex $P479
+ .const 'Sub' $P469 = "43_1271336380.06238"
+ capture_lex $P469
+ .const 'Sub' $P452 = "42_1271336380.06238"
+ capture_lex $P452
+ .const 'Sub' $P435 = "41_1271336380.06238"
+ capture_lex $P435
+ .const 'Sub' $P428 = "40_1271336380.06238"
+ capture_lex $P428
+ .const 'Sub' $P421 = "39_1271336380.06238"
capture_lex $P421
- .const 'Sub' $P414 = "38_1267204685.44293"
+ .const 'Sub' $P414 = "38_1271336380.06238"
capture_lex $P414
- .const 'Sub' $P407 = "37_1267204685.44293"
+ .const 'Sub' $P407 = "37_1271336380.06238"
capture_lex $P407
- .const 'Sub' $P400 = "36_1267204685.44293"
+ .const 'Sub' $P400 = "36_1271336380.06238"
capture_lex $P400
- .const 'Sub' $P393 = "35_1267204685.44293"
+ .const 'Sub' $P393 = "35_1271336380.06238"
capture_lex $P393
- .const 'Sub' $P383 = "34_1267204685.44293"
+ .const 'Sub' $P383 = "34_1271336380.06238"
capture_lex $P383
- .const 'Sub' $P376 = "33_1267204685.44293"
+ .const 'Sub' $P376 = "33_1271336380.06238"
capture_lex $P376
- .const 'Sub' $P360 = "32_1267204685.44293"
+ .const 'Sub' $P360 = "32_1271336380.06238"
capture_lex $P360
- .const 'Sub' $P285 = "30_1267204685.44293"
+ .const 'Sub' $P285 = "30_1271336380.06238"
capture_lex $P285
- .const 'Sub' $P222 = "27_1267204685.44293"
+ .const 'Sub' $P222 = "27_1271336380.06238"
capture_lex $P222
- .const 'Sub' $P213 = "26_1267204685.44293"
+ .const 'Sub' $P213 = "26_1271336380.06238"
capture_lex $P213
- .const 'Sub' $P204 = "25_1267204685.44293"
+ .const 'Sub' $P204 = "25_1271336380.06238"
capture_lex $P204
- .const 'Sub' $P195 = "24_1267204685.44293"
+ .const 'Sub' $P195 = "24_1271336380.06238"
capture_lex $P195
- .const 'Sub' $P186 = "23_1267204685.44293"
+ .const 'Sub' $P186 = "23_1271336380.06238"
capture_lex $P186
- .const 'Sub' $P177 = "22_1267204685.44293"
+ .const 'Sub' $P177 = "22_1271336380.06238"
capture_lex $P177
- .const 'Sub' $P167 = "21_1267204685.44293"
+ .const 'Sub' $P167 = "21_1271336380.06238"
capture_lex $P167
- .const 'Sub' $P157 = "20_1267204685.44293"
+ .const 'Sub' $P157 = "20_1271336380.06238"
capture_lex $P157
- .const 'Sub' $P149 = "19_1267204685.44293"
+ .const 'Sub' $P149 = "19_1271336380.06238"
capture_lex $P149
- .const 'Sub' $P139 = "18_1267204685.44293"
+ .const 'Sub' $P139 = "18_1271336380.06238"
capture_lex $P139
- .const 'Sub' $P129 = "17_1267204685.44293"
+ .const 'Sub' $P129 = "17_1271336380.06238"
capture_lex $P129
- .const 'Sub' $P28 = "14_1267204685.44293"
+ .const 'Sub' $P28 = "14_1271336380.06238"
capture_lex $P28
- .const 'Sub' $P22 = "13_1267204685.44293"
+ .const 'Sub' $P22 = "13_1271336380.06238"
capture_lex $P22
- .const 'Sub' $P15 = "12_1267204685.44293"
+ .const 'Sub' $P15 = "12_1271336380.06238"
capture_lex $P15
-.annotate "line", 188
- .const 'Sub' $P521 = "45_1267204685.44293"
- capture_lex $P521
+.annotate "line", 198
+ .const 'Sub' $P561 = "49_1271336380.06238"
+ capture_lex $P561
.annotate "line", 3
- .return ($P521)
+ .return ($P561)
.end
.namespace ["HLL";"Actions"]
-.sub "string_to_int" :subid("12_1267204685.44293") :outer("11_1267204685.44293")
+.sub "string_to_int" :subid("12_1271336380.06238") :outer("11_1271336380.06238")
.param pmc param_18
.param pmc param_19
.annotate "line", 3
@@ -4434,7 +4927,7 @@
.namespace ["HLL";"Actions"]
-.sub "ints_to_string" :subid("13_1267204685.44293") :outer("11_1267204685.44293")
+.sub "ints_to_string" :subid("13_1271336380.06238") :outer("11_1271336380.06238")
.param pmc param_25
.annotate "line", 37
new $P24, 'ExceptionHandler'
@@ -4475,14 +4968,14 @@
.namespace ["HLL";"Actions"]
-.sub "EXPR" :subid("14_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "EXPR" :subid("14_1271336380.06238") :method :outer("11_1271336380.06238")
.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_1271336380.06238"
capture_lex $P111
- .const 'Sub' $P78 = "15_1267204685.44293"
+ .const 'Sub' $P78 = "15_1271336380.06238"
capture_lex $P78
new $P30, 'ExceptionHandler'
set_addr $P30, control_29
@@ -4490,10 +4983,10 @@
push_eh $P30
.lex "self", self
.lex "$/", param_31
- if has_param_32, optparam_47
+ if has_param_32, optparam_51
new $P33, "Undef"
set param_32, $P33
- optparam_47:
+ optparam_51:
.lex "$key", param_32
.annotate "line", 64
new $P34, "Undef"
@@ -4515,13 +5008,13 @@
defined $I43, $P39
if $I43, default_42
find_lex $P44, "$/"
- unless_null $P44, vivify_48
+ unless_null $P44, vivify_52
$P44 = root_new ['parrot';'Hash']
- vivify_48:
+ vivify_52:
set $P45, $P44["OPER"]
- unless_null $P45, vivify_49
+ unless_null $P45, vivify_53
new $P45, "Undef"
- vivify_49:
+ vivify_53:
$P46 = $P45."ast"()
set $P39, $P46
default_42:
@@ -4536,57 +5029,57 @@
store_lex "$past", $P51
.annotate "line", 67
find_lex $P53, "$/"
- unless_null $P53, vivify_50
+ unless_null $P53, vivify_54
$P53 = root_new ['parrot';'Hash']
- vivify_50:
+ vivify_54:
set $P54, $P53["OPER"]
- unless_null $P54, vivify_51
+ unless_null $P54, vivify_55
$P54 = root_new ['parrot';'Hash']
- vivify_51:
+ vivify_55:
set $P55, $P54["O"]
- unless_null $P55, vivify_52
+ unless_null $P55, vivify_56
$P55 = root_new ['parrot';'Hash']
- vivify_52:
+ vivify_56:
set $P56, $P55["pasttype"]
- unless_null $P56, vivify_53
+ unless_null $P56, vivify_57
new $P56, "Undef"
- vivify_53:
+ vivify_57:
if $P56, if_52
.annotate "line", 68
find_lex $P64, "$/"
- unless_null $P64, vivify_54
+ unless_null $P64, vivify_58
$P64 = root_new ['parrot';'Hash']
- vivify_54:
+ vivify_58:
set $P65, $P64["OPER"]
- unless_null $P65, vivify_55
+ unless_null $P65, vivify_59
$P65 = root_new ['parrot';'Hash']
- vivify_55:
+ vivify_59:
set $P66, $P65["O"]
- unless_null $P66, vivify_56
+ unless_null $P66, vivify_60
$P66 = root_new ['parrot';'Hash']
- vivify_56:
+ vivify_60:
set $P67, $P66["pirop"]
- unless_null $P67, vivify_57
+ unless_null $P67, vivify_61
new $P67, "Undef"
- vivify_57:
+ vivify_61:
unless $P67, if_63_end
find_lex $P68, "$past"
find_lex $P69, "$/"
- unless_null $P69, vivify_58
+ unless_null $P69, vivify_62
$P69 = root_new ['parrot';'Hash']
- vivify_58:
+ vivify_62:
set $P70, $P69["OPER"]
- unless_null $P70, vivify_59
+ unless_null $P70, vivify_63
$P70 = root_new ['parrot';'Hash']
- vivify_59:
+ vivify_63:
set $P71, $P70["O"]
- unless_null $P71, vivify_60
+ unless_null $P71, vivify_64
$P71 = root_new ['parrot';'Hash']
- vivify_60:
+ vivify_64:
set $P72, $P71["pirop"]
- unless_null $P72, vivify_61
+ unless_null $P72, vivify_65
new $P72, "Undef"
- vivify_61:
+ vivify_65:
set $S73, $P72
$P68."pirop"($S73)
if_63_end:
@@ -4595,21 +5088,21 @@
.annotate "line", 67
find_lex $P57, "$past"
find_lex $P58, "$/"
- unless_null $P58, vivify_62
+ unless_null $P58, vivify_66
$P58 = root_new ['parrot';'Hash']
- vivify_62:
+ vivify_66:
set $P59, $P58["OPER"]
- unless_null $P59, vivify_63
+ unless_null $P59, vivify_67
$P59 = root_new ['parrot';'Hash']
- vivify_63:
+ vivify_67:
set $P60, $P59["O"]
- unless_null $P60, vivify_64
+ unless_null $P60, vivify_68
$P60 = root_new ['parrot';'Hash']
- vivify_64:
+ vivify_68:
set $P61, $P60["pasttype"]
- unless_null $P61, vivify_65
+ unless_null $P61, vivify_69
new $P61, "Undef"
- vivify_65:
+ vivify_69:
set $S62, $P61
$P57."pasttype"($S62)
if_52_end:
@@ -4617,7 +5110,7 @@
find_lex $P75, "$past"
$P76 = $P75."name"()
if $P76, unless_74_end
- .const 'Sub' $P78 = "15_1267204685.44293"
+ .const 'Sub' $P78 = "15_1271336380.06238"
capture_lex $P78
$P78()
unless_74_end:
@@ -4631,7 +5124,7 @@
find_lex $P106, "$/"
$P107 = $P106."list"()
defined $I108, $P107
- unless $I108, for_undef_69
+ unless $I108, for_undef_73
iter $P105, $P107
new $P123, 'ExceptionHandler'
set_addr $P123, loop122_handler
@@ -4641,7 +5134,7 @@
unless $P105, loop122_done
shift $P109, $P105
loop122_redo:
- .const 'Sub' $P111 = "16_1267204685.44293"
+ .const 'Sub' $P111 = "16_1271336380.06238"
capture_lex $P111
$P111($P109)
loop122_next:
@@ -4654,20 +5147,20 @@
eq $P124, 67, loop122_redo
loop122_done:
pop_eh
- for_undef_69:
+ for_undef_73:
.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_74
$P102 = root_new ['parrot';'ResizablePMCArray']
- vivify_70:
+ vivify_74:
set $P103, $P102[0]
- unless_null $P103, vivify_71
+ unless_null $P103, vivify_75
new $P103, "Undef"
- vivify_71:
+ vivify_75:
$P104 = $P103."ast"()
$P101."unshift"($P104)
if_97_end:
@@ -4686,7 +5179,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block77" :anon :subid("15_1267204685.44293") :outer("14_1267204685.44293")
+.sub "_block77" :anon :subid("15_1271336380.06238") :outer("14_1271336380.06238")
.annotate "line", 71
new $P79, "Undef"
.lex "$name", $P79
@@ -4709,17 +5202,17 @@
concat $P86, $P85, ":<"
.annotate "line", 76
find_lex $P87, "$/"
- unless_null $P87, vivify_66
+ unless_null $P87, vivify_70
$P87 = root_new ['parrot';'Hash']
- vivify_66:
+ vivify_70:
set $P88, $P87["OPER"]
- unless_null $P88, vivify_67
+ unless_null $P88, vivify_71
$P88 = root_new ['parrot';'Hash']
- vivify_67:
+ vivify_71:
set $P89, $P88["sym"]
- unless_null $P89, vivify_68
+ unless_null $P89, vivify_72
new $P89, "Undef"
- vivify_68:
+ vivify_72:
concat $P90, $P86, $P89
concat $P91, $P90, ">"
store_lex "$name", $P91
@@ -4736,7 +5229,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block110" :anon :subid("16_1267204685.44293") :outer("14_1267204685.44293")
+.sub "_block110" :anon :subid("16_1271336380.06238") :outer("14_1271336380.06238")
.param pmc param_112
.annotate "line", 82
.lex "$_", param_112
@@ -4759,7 +5252,7 @@
.namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>" :subid("17_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "term:sym<circumfix>" :subid("17_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_132
.annotate "line", 87
new $P131, 'ExceptionHandler'
@@ -4770,13 +5263,13 @@
.lex "$/", param_132
find_lex $P133, "$/"
find_lex $P134, "$/"
- unless_null $P134, vivify_72
+ unless_null $P134, vivify_76
$P134 = root_new ['parrot';'Hash']
- vivify_72:
+ vivify_76:
set $P135, $P134["circumfix"]
- unless_null $P135, vivify_73
+ unless_null $P135, vivify_77
new $P135, "Undef"
- vivify_73:
+ vivify_77:
$P136 = $P135."ast"()
$P137 = $P133."!make"($P136)
.return ($P137)
@@ -4789,7 +5282,7 @@
.namespace ["HLL";"Actions"]
-.sub "termish" :subid("18_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "termish" :subid("18_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_142
.annotate "line", 89
new $P141, 'ExceptionHandler'
@@ -4800,13 +5293,13 @@
.lex "$/", param_142
find_lex $P143, "$/"
find_lex $P144, "$/"
- unless_null $P144, vivify_74
+ unless_null $P144, vivify_78
$P144 = root_new ['parrot';'Hash']
- vivify_74:
+ vivify_78:
set $P145, $P144["term"]
- unless_null $P145, vivify_75
+ unless_null $P145, vivify_79
new $P145, "Undef"
- vivify_75:
+ vivify_79:
$P146 = $P145."ast"()
$P147 = $P143."!make"($P146)
.return ($P147)
@@ -4819,7 +5312,7 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm" :subid("19_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "nullterm" :subid("19_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_152
.annotate "line", 90
new $P151, 'ExceptionHandler'
@@ -4841,7 +5334,7 @@
.namespace ["HLL";"Actions"]
-.sub "nullterm_alt" :subid("20_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "nullterm_alt" :subid("20_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_160
.annotate "line", 91
new $P159, 'ExceptionHandler'
@@ -4852,13 +5345,13 @@
.lex "$/", param_160
find_lex $P161, "$/"
find_lex $P162, "$/"
- unless_null $P162, vivify_76
+ unless_null $P162, vivify_80
$P162 = root_new ['parrot';'Hash']
- vivify_76:
+ vivify_80:
set $P163, $P162["term"]
- unless_null $P163, vivify_77
+ unless_null $P163, vivify_81
new $P163, "Undef"
- vivify_77:
+ vivify_81:
$P164 = $P163."ast"()
$P165 = $P161."!make"($P164)
.return ($P165)
@@ -4871,7 +5364,7 @@
.namespace ["HLL";"Actions"]
-.sub "integer" :subid("21_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "integer" :subid("21_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_170
.annotate "line", 93
new $P169, 'ExceptionHandler'
@@ -4882,13 +5375,13 @@
.lex "$/", param_170
find_lex $P171, "$/"
find_lex $P172, "$/"
- unless_null $P172, vivify_78
+ unless_null $P172, vivify_82
$P172 = root_new ['parrot';'Hash']
- vivify_78:
+ vivify_82:
set $P173, $P172["VALUE"]
- unless_null $P173, vivify_79
+ unless_null $P173, vivify_83
new $P173, "Undef"
- vivify_79:
+ vivify_83:
$P174 = $P173."ast"()
$P175 = $P171."!make"($P174)
.return ($P175)
@@ -4901,7 +5394,7 @@
.namespace ["HLL";"Actions"]
-.sub "dec_number" :subid("22_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "dec_number" :subid("22_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_180
.annotate "line", 95
new $P179, 'ExceptionHandler'
@@ -4924,7 +5417,7 @@
.namespace ["HLL";"Actions"]
-.sub "decint" :subid("23_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "decint" :subid("23_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_189
.annotate "line", 97
new $P188, 'ExceptionHandler'
@@ -4947,7 +5440,7 @@
.namespace ["HLL";"Actions"]
-.sub "hexint" :subid("24_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "hexint" :subid("24_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_198
.annotate "line", 98
new $P197, 'ExceptionHandler'
@@ -4970,7 +5463,7 @@
.namespace ["HLL";"Actions"]
-.sub "octint" :subid("25_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "octint" :subid("25_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_207
.annotate "line", 99
new $P206, 'ExceptionHandler'
@@ -4993,7 +5486,7 @@
.namespace ["HLL";"Actions"]
-.sub "binint" :subid("26_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "binint" :subid("26_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_216
.annotate "line", 100
new $P215, 'ExceptionHandler'
@@ -5016,10 +5509,10 @@
.namespace ["HLL";"Actions"]
-.sub "quote_EXPR" :subid("27_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_EXPR" :subid("27_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_225
.annotate "line", 102
- .const 'Sub' $P241 = "28_1267204685.44293"
+ .const 'Sub' $P241 = "28_1271336380.06238"
capture_lex $P241
new $P224, 'ExceptionHandler'
set_addr $P224, control_223
@@ -5031,19 +5524,19 @@
new $P226, "Undef"
.lex "$past", $P226
find_lex $P227, "$/"
- unless_null $P227, vivify_80
+ unless_null $P227, vivify_84
$P227 = root_new ['parrot';'Hash']
- vivify_80:
+ vivify_84:
set $P228, $P227["quote_delimited"]
- unless_null $P228, vivify_81
+ unless_null $P228, vivify_85
new $P228, "Undef"
- vivify_81:
+ vivify_85:
$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 +5544,7 @@
$P237 = $P235."ACCEPTS"($P236)
if $P237, if_234
.annotate "line", 108
- .const 'Sub' $P241 = "28_1267204685.44293"
+ .const 'Sub' $P241 = "28_1271336380.06238"
capture_lex $P241
$P241()
goto if_234_end
@@ -5090,9 +5583,9 @@
.namespace ["HLL";"Actions"]
-.sub "_block240" :anon :subid("28_1267204685.44293") :outer("27_1267204685.44293")
+.sub "_block240" :anon :subid("28_1271336380.06238") :outer("27_1271336380.06238")
.annotate "line", 108
- .const 'Sub' $P260 = "29_1267204685.44293"
+ .const 'Sub' $P260 = "29_1271336380.06238"
capture_lex $P260
.annotate "line", 109
$P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5109,13 +5602,13 @@
if $I251, if_248
.annotate "line", 115
find_lex $P268, "@words"
- unless_null $P268, vivify_82
+ unless_null $P268, vivify_86
$P268 = root_new ['parrot';'ResizablePMCArray']
- vivify_82:
+ vivify_86:
set $P269, $P268[0]
- unless_null $P269, vivify_83
+ unless_null $P269, vivify_87
new $P269, "Undef"
- vivify_83:
+ vivify_87:
set $S270, $P269
new $P271, 'String'
set $P271, $S270
@@ -5133,7 +5626,7 @@
.annotate "line", 112
find_lex $P256, "@words"
defined $I257, $P256
- unless $I257, for_undef_84
+ unless $I257, for_undef_88
iter $P255, $P256
new $P266, 'ExceptionHandler'
set_addr $P266, loop265_handler
@@ -5143,7 +5636,7 @@
unless $P255, loop265_done
shift $P258, $P255
loop265_redo:
- .const 'Sub' $P260 = "29_1267204685.44293"
+ .const 'Sub' $P260 = "29_1271336380.06238"
capture_lex $P260
$P260($P258)
loop265_next:
@@ -5156,7 +5649,7 @@
eq $P267, 67, loop265_redo
loop265_done:
pop_eh
- for_undef_84:
+ for_undef_88:
.annotate "line", 110
set $P247, $P255
if_248_end:
@@ -5166,7 +5659,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block259" :anon :subid("29_1267204685.44293") :outer("28_1267204685.44293")
+.sub "_block259" :anon :subid("29_1271336380.06238") :outer("28_1271336380.06238")
.param pmc param_261
.annotate "line", 112
.lex "$_", param_261
@@ -5178,10 +5671,10 @@
.namespace ["HLL";"Actions"]
-.sub "quote_delimited" :subid("30_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_delimited" :subid("30_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_288
.annotate "line", 125
- .const 'Sub' $P300 = "31_1267204685.44293"
+ .const 'Sub' $P300 = "31_1271336380.06238"
capture_lex $P300
new $P287, 'ExceptionHandler'
set_addr $P287, control_286
@@ -5206,15 +5699,15 @@
store_lex "$lastlit", $P293
.annotate "line", 128
find_lex $P295, "$/"
- unless_null $P295, vivify_85
+ unless_null $P295, vivify_89
$P295 = root_new ['parrot';'Hash']
- vivify_85:
+ vivify_89:
set $P296, $P295["quote_atom"]
- unless_null $P296, vivify_86
+ unless_null $P296, vivify_90
new $P296, "Undef"
- vivify_86:
+ vivify_90:
defined $I297, $P296
- unless $I297, for_undef_87
+ unless $I297, for_undef_91
iter $P294, $P296
new $P333, 'ExceptionHandler'
set_addr $P333, loop332_handler
@@ -5224,7 +5717,7 @@
unless $P294, loop332_done
shift $P298, $P294
loop332_redo:
- .const 'Sub' $P300 = "31_1267204685.44293"
+ .const 'Sub' $P300 = "31_1271336380.06238"
capture_lex $P300
$P300($P298)
loop332_next:
@@ -5237,7 +5730,7 @@
eq $P334, 67, loop332_redo
loop332_done:
pop_eh
- for_undef_87:
+ for_undef_91:
.annotate "line", 142
find_lex $P336, "$lastlit"
set $S337, $P336
@@ -5302,7 +5795,7 @@
.namespace ["HLL";"Actions"]
-.sub "_block299" :anon :subid("31_1267204685.44293") :outer("30_1267204685.44293")
+.sub "_block299" :anon :subid("31_1271336380.06238") :outer("30_1271336380.06238")
.param pmc param_302
.annotate "line", 129
new $P301, "Undef"
@@ -5371,7 +5864,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_atom" :subid("32_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_atom" :subid("32_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_363
.annotate "line", 150
new $P362, 'ExceptionHandler'
@@ -5383,13 +5876,13 @@
.annotate "line", 151
find_lex $P364, "$/"
find_lex $P367, "$/"
- unless_null $P367, vivify_88
+ unless_null $P367, vivify_92
$P367 = root_new ['parrot';'Hash']
- vivify_88:
+ vivify_92:
set $P368, $P367["quote_escape"]
- unless_null $P368, vivify_89
+ unless_null $P368, vivify_93
new $P368, "Undef"
- vivify_89:
+ vivify_93:
if $P368, if_366
find_lex $P372, "$/"
set $S373, $P372
@@ -5398,13 +5891,13 @@
goto if_366_end
if_366:
find_lex $P369, "$/"
- unless_null $P369, vivify_90
+ unless_null $P369, vivify_94
$P369 = root_new ['parrot';'Hash']
- vivify_90:
+ vivify_94:
set $P370, $P369["quote_escape"]
- unless_null $P370, vivify_91
+ unless_null $P370, vivify_95
new $P370, "Undef"
- vivify_91:
+ vivify_95:
$P371 = $P370."ast"()
set $P365, $P371
if_366_end:
@@ -5420,7 +5913,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>" :subid("33_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<backslash>" :subid("33_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_379
.annotate "line", 154
new $P378, 'ExceptionHandler'
@@ -5441,7 +5934,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>" :subid("34_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<stopper>" :subid("34_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_386
.annotate "line", 155
new $P385, 'ExceptionHandler'
@@ -5452,13 +5945,13 @@
.lex "$/", param_386
find_lex $P387, "$/"
find_lex $P388, "$/"
- unless_null $P388, vivify_92
+ unless_null $P388, vivify_96
$P388 = root_new ['parrot';'Hash']
- vivify_92:
+ vivify_96:
set $P389, $P388["stopper"]
- unless_null $P389, vivify_93
+ unless_null $P389, vivify_97
new $P389, "Undef"
- vivify_93:
+ vivify_97:
set $S390, $P389
$P391 = $P387."!make"($S390)
.return ($P391)
@@ -5471,7 +5964,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>" :subid("35_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<bs>" :subid("35_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_396
.annotate "line", 157
new $P395, 'ExceptionHandler'
@@ -5492,7 +5985,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>" :subid("36_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<nl>" :subid("36_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_403
.annotate "line", 158
new $P402, 'ExceptionHandler'
@@ -5513,7 +6006,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>" :subid("37_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<cr>" :subid("37_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_410
.annotate "line", 159
new $P409, 'ExceptionHandler'
@@ -5534,7 +6027,7 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>" :subid("38_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<tab>" :subid("38_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_417
.annotate "line", 160
new $P416, 'ExceptionHandler'
@@ -5555,359 +6048,482 @@
.namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>" :subid("39_1267204685.44293") :method :outer("11_1267204685.44293")
+.sub "quote_escape:sym<ff>" :subid("39_1271336380.06238") :method :outer("11_1271336380.06238")
.param pmc param_424
-.annotate "line", 162
+.annotate "line", 161
new $P423, 'ExceptionHandler'
set_addr $P423, control_422
$P423."handle_types"(58)
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
- find_lex $P432, "$/"
- unless_null $P432, vivify_96
- $P432 = root_new ['parrot';'Hash']
- vivify_96:
- set $P433, $P432["hexints"]
- unless_null $P433, vivify_97
- $P433 = root_new ['parrot';'Hash']
- vivify_97:
- set $P434, $P433["hexint"]
- unless_null $P434, vivify_98
- new $P434, "Undef"
- vivify_98:
- set $P426, $P434
- goto if_427_end
- if_427:
- find_lex $P430, "$/"
- unless_null $P430, vivify_99
- $P430 = root_new ['parrot';'Hash']
- vivify_99:
- set $P431, $P430["hexint"]
- unless_null $P431, vivify_100
- new $P431, "Undef"
- vivify_100:
- set $P426, $P431
- if_427_end:
- $P435 = "ints_to_string"($P426)
- $P436 = $P425."!make"($P435)
-.annotate "line", 162
- .return ($P436)
+ $P426 = $P425."!make"("\f")
+ .return ($P426)
control_422:
.local pmc exception
.get_results (exception)
- getattribute $P437, exception, "payload"
- .return ($P437)
+ getattribute $P427, exception, "payload"
+ .return ($P427)
.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
+.sub "quote_escape:sym<esc>" :subid("40_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_431
+.annotate "line", 162
+ new $P430, 'ExceptionHandler'
+ set_addr $P430, control_429
+ $P430."handle_types"(58)
+ push_eh $P430
.lex "self", self
- .lex "$/", param_441
-.annotate "line", 167
+ .lex "$/", param_431
+ find_lex $P432, "$/"
+ $P433 = $P432."!make"("\e")
+ .return ($P433)
+ control_429:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P434, exception, "payload"
+ .return ($P434)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<hex>" :subid("41_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_438
+.annotate "line", 164
+ new $P437, 'ExceptionHandler'
+ set_addr $P437, control_436
+ $P437."handle_types"(58)
+ push_eh $P437
+ .lex "self", self
+ .lex "$/", param_438
+.annotate "line", 165
+ find_lex $P439, "$/"
find_lex $P442, "$/"
- find_lex $P445, "$/"
- unless_null $P445, vivify_101
- $P445 = root_new ['parrot';'Hash']
+ unless_null $P442, vivify_98
+ $P442 = root_new ['parrot';'Hash']
+ vivify_98:
+ set $P443, $P442["hexint"]
+ unless_null $P443, vivify_99
+ new $P443, "Undef"
+ vivify_99:
+ if $P443, if_441
+ find_lex $P446, "$/"
+ unless_null $P446, vivify_100
+ $P446 = root_new ['parrot';'Hash']
+ vivify_100:
+ set $P447, $P446["hexints"]
+ unless_null $P447, vivify_101
+ $P447 = root_new ['parrot';'Hash']
vivify_101:
- set $P446, $P445["octint"]
- unless_null $P446, vivify_102
- new $P446, "Undef"
+ set $P448, $P447["hexint"]
+ unless_null $P448, vivify_102
+ new $P448, "Undef"
vivify_102:
- if $P446, if_444
- find_lex $P449, "$/"
- unless_null $P449, vivify_103
- $P449 = root_new ['parrot';'Hash']
+ set $P440, $P448
+ goto if_441_end
+ if_441:
+ find_lex $P444, "$/"
+ unless_null $P444, vivify_103
+ $P444 = root_new ['parrot';'Hash']
vivify_103:
- set $P450, $P449["octints"]
- unless_null $P450, vivify_104
- $P450 = root_new ['parrot';'Hash']
+ set $P445, $P444["hexint"]
+ unless_null $P445, vivify_104
+ new $P445, "Undef"
vivify_104:
- set $P451, $P450["octint"]
- unless_null $P451, vivify_105
- new $P451, "Undef"
- vivify_105:
- set $P443, $P451
- goto if_444_end
- if_444:
- find_lex $P447, "$/"
- unless_null $P447, vivify_106
- $P447 = root_new ['parrot';'Hash']
- vivify_106:
- set $P448, $P447["octint"]
- unless_null $P448, vivify_107
- new $P448, "Undef"
- vivify_107:
- set $P443, $P448
- if_444_end:
- $P452 = "ints_to_string"($P443)
- $P453 = $P442."!make"($P452)
-.annotate "line", 166
- .return ($P453)
- control_439:
+ set $P440, $P445
+ if_441_end:
+ $P449 = "ints_to_string"($P440)
+ $P450 = $P439."!make"($P449)
+.annotate "line", 164
+ .return ($P450)
+ control_436:
.local pmc exception
.get_results (exception)
- getattribute $P454, exception, "payload"
- .return ($P454)
+ getattribute $P451, exception, "payload"
+ .return ($P451)
.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<oct>" :subid("42_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_455
+.annotate "line", 168
+ new $P454, 'ExceptionHandler'
+ set_addr $P454, control_453
+ $P454."handle_types"(58)
+ push_eh $P454
.lex "self", self
- .lex "$/", param_458
-.annotate "line", 171
+ .lex "$/", param_455
+.annotate "line", 169
+ find_lex $P456, "$/"
find_lex $P459, "$/"
- find_lex $P460, "$/"
- unless_null $P460, vivify_108
- $P460 = root_new ['parrot';'Hash']
+ unless_null $P459, vivify_105
+ $P459 = root_new ['parrot';'Hash']
+ vivify_105:
+ set $P460, $P459["octint"]
+ unless_null $P460, vivify_106
+ new $P460, "Undef"
+ vivify_106:
+ if $P460, if_458
+ find_lex $P463, "$/"
+ unless_null $P463, vivify_107
+ $P463 = root_new ['parrot';'Hash']
+ vivify_107:
+ set $P464, $P463["octints"]
+ unless_null $P464, vivify_108
+ $P464 = root_new ['parrot';'Hash']
vivify_108:
- set $P461, $P460["charspec"]
- unless_null $P461, vivify_109
- new $P461, "Undef"
+ set $P465, $P464["octint"]
+ unless_null $P465, vivify_109
+ new $P465, "Undef"
vivify_109:
- $P462 = $P461."ast"()
- $P463 = $P459."!make"($P462)
-.annotate "line", 170
- .return ($P463)
- control_456:
+ set $P457, $P465
+ goto if_458_end
+ if_458:
+ find_lex $P461, "$/"
+ unless_null $P461, vivify_110
+ $P461 = root_new ['parrot';'Hash']
+ vivify_110:
+ set $P462, $P461["octint"]
+ unless_null $P462, vivify_111
+ new $P462, "Undef"
+ vivify_111:
+ set $P457, $P462
+ if_458_end:
+ $P466 = "ints_to_string"($P457)
+ $P467 = $P456."!make"($P466)
+.annotate "line", 168
+ .return ($P467)
+ control_453:
.local pmc exception
.get_results (exception)
- getattribute $P464, exception, "payload"
- .return ($P464)
+ getattribute $P468, exception, "payload"
+ .return ($P468)
.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
+.sub "quote_escape:sym<chr>" :subid("43_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_472
+.annotate "line", 172
+ new $P471, 'ExceptionHandler'
+ set_addr $P471, control_470
+ $P471."handle_types"(58)
+ push_eh $P471
.lex "self", self
- .lex "$/", param_468
-.annotate "line", 175
- new $P469, "Undef"
- .lex "$codepoint", $P469
-.annotate "line", 176
- find_lex $P472, "$/"
- unless_null $P472, vivify_110
- $P472 = root_new ['parrot';'Hash']
- vivify_110:
- set $P473, $P472["integer"]
- unless_null $P473, vivify_111
- new $P473, "Undef"
- vivify_111:
- if $P473, if_471
-.annotate "line", 177
- $P477 = new ['CodeString']
- find_lex $P478, "$/"
- set $S479, $P478
- $P480 = $P477."charname_to_ord"($S479)
- set $P470, $P480
-.annotate "line", 176
- goto if_471_end
- if_471:
+ .lex "$/", param_472
+.annotate "line", 173
+ find_lex $P473, "$/"
find_lex $P474, "$/"
unless_null $P474, vivify_112
$P474 = root_new ['parrot';'Hash']
vivify_112:
- set $P475, $P474["integer"]
+ set $P475, $P474["charspec"]
unless_null $P475, vivify_113
new $P475, "Undef"
vivify_113:
$P476 = $P475."ast"()
- set $P470, $P476
- if_471_end:
- store_lex "$codepoint", $P470
-.annotate "line", 178
- find_lex $P482, "$codepoint"
- set $N483, $P482
- islt $I484, $N483, 0.0
- unless $I484, if_481_end
- find_lex $P485, "$/"
- $P486 = $P485."CURSOR"()
- new $P487, 'String'
- set $P487, "Unrecognized character name "
- find_lex $P488, "$/"
- concat $P489, $P487, $P488
- $P486."panic"($P489)
- if_481_end:
-.annotate "line", 179
- find_lex $P490, "$/"
- find_lex $P491, "$codepoint"
- set $I492, $P491
- chr $S493, $I492
- $P494 = $P490."!make"($S493)
-.annotate "line", 174
- .return ($P494)
- control_466:
+ $P477 = $P473."!make"($P476)
+.annotate "line", 172
+ .return ($P477)
+ control_470:
.local pmc exception
.get_results (exception)
- getattribute $P495, exception, "payload"
- .return ($P495)
+ getattribute $P478, exception, "payload"
+ .return ($P478)
.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
+.sub "quote_escape:sym<0>" :subid("44_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_482
+.annotate "line", 176
+ new $P481, 'ExceptionHandler'
+ set_addr $P481, control_480
+ $P481."handle_types"(58)
+ push_eh $P481
.lex "self", self
- .lex "$/", param_499
-.annotate "line", 183
- new $P500, "Undef"
- .lex "$str", $P500
- new $P501, "String"
- assign $P501, ""
- store_lex "$str", $P501
-.annotate "line", 184
- find_lex $P503, "$/"
- unless_null $P503, vivify_114
- $P503 = root_new ['parrot';'Hash']
- vivify_114:
- set $P504, $P503["charname"]
- unless_null $P504, vivify_115
- new $P504, "Undef"
- vivify_115:
- defined $I505, $P504
- unless $I505, for_undef_116
- iter $P502, $P504
- new $P515, 'ExceptionHandler'
- set_addr $P515, loop514_handler
- $P515."handle_types"(65, 67, 66)
- push_eh $P515
- loop514_test:
- unless $P502, loop514_done
- shift $P506, $P502
- loop514_redo:
- .const 'Sub' $P508 = "44_1267204685.44293"
- capture_lex $P508
- $P508($P506)
- loop514_next:
- goto loop514_test
- loop514_handler:
- .local pmc exception
- .get_results (exception)
- getattribute $P516, exception, 'type'
- eq $P516, 65, loop514_next
- eq $P516, 67, loop514_redo
- loop514_done:
- pop_eh
- for_undef_116:
-.annotate "line", 185
- find_lex $P517, "$/"
- find_lex $P518, "$str"
- $P519 = $P517."!make"($P518)
-.annotate "line", 182
- .return ($P519)
- control_497:
+ .lex "$/", param_482
+.annotate "line", 177
+ find_lex $P483, "$/"
+ $P484 = $P483."!make"(unicode:"\x{0}")
+.annotate "line", 176
+ .return ($P484)
+ control_480:
.local pmc exception
.get_results (exception)
- getattribute $P520, exception, "payload"
- .return ($P520)
+ getattribute $P485, exception, "payload"
+ .return ($P485)
.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 "quote_escape:sym<misc>" :subid("45_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_489
+.annotate "line", 180
+ new $P488, 'ExceptionHandler'
+ set_addr $P488, control_487
+ $P488."handle_types"(58)
+ push_eh $P488
+ .lex "self", self
+ .lex "$/", param_489
+.annotate "line", 181
+ find_lex $P490, "$/"
+ find_lex $P493, "$/"
+ unless_null $P493, vivify_114
+ $P493 = root_new ['parrot';'Hash']
+ vivify_114:
+ set $P494, $P493["textq"]
+ unless_null $P494, vivify_115
+ new $P494, "Undef"
+ vivify_115:
+ if $P494, if_492
+ find_lex $P500, "$/"
+ unless_null $P500, vivify_116
+ $P500 = root_new ['parrot';'Hash']
+ vivify_116:
+ set $P501, $P500["textqq"]
+ unless_null $P501, vivify_117
+ new $P501, "Undef"
+ vivify_117:
+ $P502 = $P501."Str"()
+ set $P491, $P502
+ goto if_492_end
+ if_492:
+ new $P495, "String"
+ assign $P495, "\\"
+ find_lex $P496, "$/"
+ unless_null $P496, vivify_118
+ $P496 = root_new ['parrot';'Hash']
+ vivify_118:
+ set $P497, $P496["textq"]
+ unless_null $P497, vivify_119
+ new $P497, "Undef"
+ vivify_119:
+ $S498 = $P497."Str"()
+ concat $P499, $P495, $S498
+ set $P491, $P499
+ if_492_end:
+ $P503 = $P490."!make"($P491)
+.annotate "line", 180
+ .return ($P503)
+ control_487:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P504, exception, "payload"
+ .return ($P504)
.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 "charname" :subid("46_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_508
+.annotate "line", 184
+ new $P507, 'ExceptionHandler'
+ set_addr $P507, control_506
+ $P507."handle_types"(58)
+ push_eh $P507
.lex "self", self
- .lex "$/", param_524
-.annotate "line", 189
+ .lex "$/", param_508
+.annotate "line", 185
+ new $P509, "Undef"
+ .lex "$codepoint", $P509
+.annotate "line", 186
+ find_lex $P512, "$/"
+ unless_null $P512, vivify_120
+ $P512 = root_new ['parrot';'Hash']
+ vivify_120:
+ set $P513, $P512["integer"]
+ unless_null $P513, vivify_121
+ new $P513, "Undef"
+ vivify_121:
+ if $P513, if_511
+.annotate "line", 187
+ $P517 = new ['CodeString']
+ find_lex $P518, "$/"
+ set $S519, $P518
+ $P520 = $P517."charname_to_ord"($S519)
+ set $P510, $P520
+.annotate "line", 186
+ goto if_511_end
+ if_511:
+ find_lex $P514, "$/"
+ unless_null $P514, vivify_122
+ $P514 = root_new ['parrot';'Hash']
+ vivify_122:
+ set $P515, $P514["integer"]
+ unless_null $P515, vivify_123
+ new $P515, "Undef"
+ vivify_123:
+ $P516 = $P515."ast"()
+ set $P510, $P516
+ if_511_end:
+ store_lex "$codepoint", $P510
+.annotate "line", 188
+ find_lex $P522, "$codepoint"
+ set $N523, $P522
+ islt $I524, $N523, 0.0
+ unless $I524, if_521_end
find_lex $P525, "$/"
+ $P526 = $P525."CURSOR"()
+ new $P527, 'String'
+ set $P527, "Unrecognized character name "
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:
+ concat $P529, $P527, $P528
+ $P526."panic"($P529)
+ if_521_end:
+.annotate "line", 189
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:
+ find_lex $P531, "$codepoint"
+ set $I532, $P531
+ chr $S533, $I532
+ $P534 = $P530."!make"($S533)
+.annotate "line", 184
+ .return ($P534)
+ control_506:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P535, exception, "payload"
+ .return ($P535)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charnames" :subid("47_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_539
+.annotate "line", 192
+ .const 'Sub' $P548 = "48_1271336380.06238"
+ capture_lex $P548
+ new $P538, 'ExceptionHandler'
+ set_addr $P538, control_537
+ $P538."handle_types"(58)
+ push_eh $P538
+ .lex "self", self
+ .lex "$/", param_539
+.annotate "line", 193
+ new $P540, "Undef"
+ .lex "$str", $P540
+ new $P541, "String"
+ assign $P541, ""
+ store_lex "$str", $P541
+.annotate "line", 194
+ find_lex $P543, "$/"
+ unless_null $P543, vivify_124
+ $P543 = root_new ['parrot';'Hash']
+ vivify_124:
+ set $P544, $P543["charname"]
+ unless_null $P544, vivify_125
+ new $P544, "Undef"
+ vivify_125:
+ defined $I545, $P544
+ unless $I545, for_undef_126
+ iter $P542, $P544
+ new $P555, 'ExceptionHandler'
+ set_addr $P555, loop554_handler
+ $P555."handle_types"(65, 67, 66)
+ push_eh $P555
+ loop554_test:
+ unless $P542, loop554_done
+ shift $P546, $P542
+ loop554_redo:
+ .const 'Sub' $P548 = "48_1271336380.06238"
+ capture_lex $P548
+ $P548($P546)
+ loop554_next:
+ goto loop554_test
+ loop554_handler:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P556, exception, 'type'
+ eq $P556, 65, loop554_next
+ eq $P556, 67, loop554_redo
+ loop554_done:
+ pop_eh
+ for_undef_126:
+.annotate "line", 195
+ find_lex $P557, "$/"
+ find_lex $P558, "$str"
+ $P559 = $P557."!make"($P558)
+.annotate "line", 192
+ .return ($P559)
+ control_537:
+ .local pmc exception
+ .get_results (exception)
+ getattribute $P560, exception, "payload"
+ .return ($P560)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block547" :anon :subid("48_1271336380.06238") :outer("47_1271336380.06238")
+ .param pmc param_549
+.annotate "line", 194
+ .lex "$_", param_549
+ find_lex $P550, "$str"
+ find_lex $P551, "$_"
+ $S552 = $P551."ast"()
+ concat $P553, $P550, $S552
+ store_lex "$str", $P553
+ .return ($P553)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charspec" :subid("49_1271336380.06238") :method :outer("11_1271336380.06238")
+ .param pmc param_564
+.annotate "line", 198
+ new $P563, 'ExceptionHandler'
+ set_addr $P563, control_562
+ $P563."handle_types"(58)
+ push_eh $P563
+ .lex "self", self
+ .lex "$/", param_564
+.annotate "line", 199
+ find_lex $P565, "$/"
+ find_lex $P568, "$/"
+ unless_null $P568, vivify_127
+ $P568 = root_new ['parrot';'Hash']
+ vivify_127:
+ set $P569, $P568["charnames"]
+ unless_null $P569, vivify_128
+ new $P569, "Undef"
+ vivify_128:
+ if $P569, if_567
+ find_lex $P573, "$/"
+ $I574 = "string_to_int"($P573, 10)
+ chr $S575, $I574
+ new $P566, 'String'
+ set $P566, $S575
+ goto if_567_end
+ if_567:
+ find_lex $P570, "$/"
+ unless_null $P570, vivify_129
+ $P570 = root_new ['parrot';'Hash']
+ vivify_129:
+ set $P571, $P570["charnames"]
+ unless_null $P571, vivify_130
+ new $P571, "Undef"
+ vivify_130:
+ $P572 = $P571."ast"()
+ set $P566, $P572
+ if_567_end:
+ $P576 = $P565."!make"($P566)
+.annotate "line", 198
+ .return ($P576)
+ control_562:
.local pmc exception
.get_results (exception)
- getattribute $P537, exception, "payload"
- .return ($P537)
+ getattribute $P577, exception, "payload"
+ .return ($P577)
.end
### .include 'gen/hllcompiler.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204686.55407")
+.sub "_block11" :anon :subid("10_1271336381.18625")
.annotate "line", 0
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
capture_lex $P14
@@ -5921,9 +6537,9 @@
.namespace []
-.sub "" :load :init :subid("post25") :outer("10_1267204686.55407")
+.sub "" :load :init :subid("post25") :outer("10_1271336381.18625")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204686.55407"
+ .const 'Sub' $P12 = "10_1271336381.18625"
.local pmc block
set block, $P12
.annotate "line", 2
@@ -5937,28 +6553,28 @@
.namespace ["HLL";"Compiler"]
-.sub "_block13" :subid("11_1267204686.55407") :outer("10_1267204686.55407")
+.sub "_block13" :subid("11_1271336381.18625") :outer("10_1271336381.18625")
.annotate "line", 6
- .const 'Sub' $P187 = "20_1267204686.55407"
+ .const 'Sub' $P187 = "20_1271336381.18625"
capture_lex $P187
- .const 'Sub' $P152 = "18_1267204686.55407"
+ .const 'Sub' $P152 = "18_1271336381.18625"
capture_lex $P152
- .const 'Sub' $P137 = "17_1267204686.55407"
+ .const 'Sub' $P137 = "17_1271336381.18625"
capture_lex $P137
- .const 'Sub' $P121 = "16_1267204686.55407"
+ .const 'Sub' $P121 = "16_1271336381.18625"
capture_lex $P121
- .const 'Sub' $P32 = "13_1267204686.55407"
+ .const 'Sub' $P32 = "13_1271336381.18625"
capture_lex $P32
- .const 'Sub' $P15 = "12_1267204686.55407"
+ .const 'Sub' $P15 = "12_1271336381.18625"
capture_lex $P15
.annotate "line", 14
- .const 'Sub' $P15 = "12_1267204686.55407"
+ .const 'Sub' $P15 = "12_1271336381.18625"
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_1271336381.18625"
capture_lex $P187
.annotate "line", 6
.return ($P187)
@@ -5966,7 +6582,7 @@
.namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1267204686.55407")
+.sub "" :load :init :subid("post26") :outer("11_1271336381.18625")
.annotate "line", 6
get_hll_global $P14, ["HLL";"Compiler"], "_block13"
.local pmc block
@@ -5978,7 +6594,7 @@
.namespace ["HLL";"Compiler"]
-.sub "value_type" :subid("12_1267204686.55407") :outer("11_1267204686.55407")
+.sub "value_type" :subid("12_1271336381.18625") :outer("11_1271336381.18625")
.param pmc param_18
.annotate "line", 14
new $P17, 'ExceptionHandler'
@@ -6022,15 +6638,15 @@
.namespace ["HLL";"Compiler"]
-.sub "get_exports" :subid("13_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "get_exports" :subid("13_1271336381.18625") :method :outer("11_1271336381.18625")
.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_1271336381.18625"
capture_lex $P104
- .const 'Sub' $P83 = "14_1267204686.55407"
+ .const 'Sub' $P83 = "14_1271336381.18625"
capture_lex $P83
new $P34, 'ExceptionHandler'
set_addr $P34, control_33
@@ -6136,7 +6752,7 @@
unless $P99, loop116_done
shift $P102, $P99
loop116_redo:
- .const 'Sub' $P104 = "15_1267204686.55407"
+ .const 'Sub' $P104 = "15_1271336381.18625"
capture_lex $P104
$P104($P102)
loop116_next:
@@ -6166,7 +6782,7 @@
unless $P78, loop96_done
shift $P81, $P78
loop96_redo:
- .const 'Sub' $P83 = "14_1267204686.55407"
+ .const 'Sub' $P83 = "14_1271336381.18625"
capture_lex $P83
$P83($P81)
loop96_next:
@@ -6194,7 +6810,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block103" :anon :subid("15_1267204686.55407") :outer("13_1267204686.55407")
+.sub "_block103" :anon :subid("15_1271336381.18625") :outer("13_1271336381.18625")
.param pmc param_106
.annotate "line", 40
new $P105, "Undef"
@@ -6226,7 +6842,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block82" :anon :subid("14_1267204686.55407") :outer("13_1267204686.55407")
+.sub "_block82" :anon :subid("14_1271336381.18625") :outer("13_1271336381.18625")
.param pmc param_85
.annotate "line", 34
new $P84, "Undef"
@@ -6265,7 +6881,7 @@
.namespace ["HLL";"Compiler"]
-.sub "get_module" :subid("16_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "get_module" :subid("16_1271336381.18625") :method :outer("11_1271336381.18625")
.param pmc param_124
.annotate "line", 47
new $P123, 'ExceptionHandler'
@@ -6305,7 +6921,7 @@
.namespace ["HLL";"Compiler"]
-.sub "language" :subid("17_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "language" :subid("17_1271336381.18625") :method :outer("11_1271336381.18625")
.param pmc param_140 :optional
.param int has_param_140 :opt_flag
.annotate "line", 53
@@ -6349,10 +6965,10 @@
.namespace ["HLL";"Compiler"]
-.sub "load_module" :subid("18_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "load_module" :subid("18_1271336381.18625") :method :outer("11_1271336381.18625")
.param pmc param_155
.annotate "line", 61
- .const 'Sub' $P165 = "19_1267204686.55407"
+ .const 'Sub' $P165 = "19_1271336381.18625"
capture_lex $P165
new $P154, 'ExceptionHandler'
set_addr $P154, control_153
@@ -6379,7 +6995,7 @@
assign $P163, 0
store_lex "$loaded", $P163
.annotate "line", 64
- .const 'Sub' $P165 = "19_1267204686.55407"
+ .const 'Sub' $P165 = "19_1271336381.18625"
capture_lex $P165
$P165()
.annotate "line", 65
@@ -6408,7 +7024,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block164" :anon :subid("19_1267204686.55407") :outer("18_1267204686.55407")
+.sub "_block164" :anon :subid("19_1271336381.18625") :outer("18_1271336381.18625")
.annotate "line", 64
new $P172, 'ExceptionHandler'
set_addr $P172, control_171
@@ -6441,11 +7057,11 @@
.namespace ["HLL";"Compiler"]
-.sub "import" :subid("20_1267204686.55407") :method :outer("11_1267204686.55407")
+.sub "import" :subid("20_1271336381.18625") :method :outer("11_1271336381.18625")
.param pmc param_190
.param pmc param_191
.annotate "line", 69
- .const 'Sub' $P197 = "21_1267204686.55407"
+ .const 'Sub' $P197 = "21_1271336381.18625"
capture_lex $P197
new $P189, 'ExceptionHandler'
set_addr $P189, control_188
@@ -6467,7 +7083,7 @@
unless $P192, loop278_done
shift $P195, $P192
loop278_redo:
- .const 'Sub' $P197 = "21_1267204686.55407"
+ .const 'Sub' $P197 = "21_1271336381.18625"
capture_lex $P197
$P197($P195)
loop278_next:
@@ -6492,14 +7108,14 @@
.namespace ["HLL";"Compiler"]
-.sub "_block196" :anon :subid("21_1267204686.55407") :outer("20_1267204686.55407")
+.sub "_block196" :anon :subid("21_1271336381.18625") :outer("20_1271336381.18625")
.param pmc param_200
.annotate "line", 70
- .const 'Sub' $P267 = "24_1267204686.55407"
+ .const 'Sub' $P267 = "24_1271336381.18625"
capture_lex $P267
- .const 'Sub' $P247 = "23_1267204686.55407"
+ .const 'Sub' $P247 = "23_1271336381.18625"
capture_lex $P247
- .const 'Sub' $P218 = "22_1267204686.55407"
+ .const 'Sub' $P218 = "22_1271336381.18625"
capture_lex $P218
.annotate "line", 71
new $P198, "Undef"
@@ -6547,7 +7163,7 @@
unless $P262, loop275_done
shift $P265, $P262
loop275_redo:
- .const 'Sub' $P267 = "24_1267204686.55407"
+ .const 'Sub' $P267 = "24_1271336381.18625"
capture_lex $P267
$P267($P265)
loop275_next:
@@ -6579,7 +7195,7 @@
unless $P242, loop259_done
shift $P245, $P242
loop259_redo:
- .const 'Sub' $P247 = "23_1267204686.55407"
+ .const 'Sub' $P247 = "23_1271336381.18625"
capture_lex $P247
$P247($P245)
loop259_next:
@@ -6613,7 +7229,7 @@
unless $P213, loop231_done
shift $P216, $P213
loop231_redo:
- .const 'Sub' $P218 = "22_1267204686.55407"
+ .const 'Sub' $P218 = "22_1271336381.18625"
capture_lex $P218
$P218($P216)
loop231_next:
@@ -6636,7 +7252,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block266" :anon :subid("24_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block266" :anon :subid("24_1271336381.18625") :outer("21_1271336381.18625")
.param pmc param_268
.annotate "line", 80
.lex "$_", param_268
@@ -6656,7 +7272,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block246" :anon :subid("23_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block246" :anon :subid("23_1271336381.18625") :outer("21_1271336381.18625")
.param pmc param_248
.annotate "line", 77
.lex "$_", param_248
@@ -6676,7 +7292,7 @@
.namespace ["HLL";"Compiler"]
-.sub "_block217" :anon :subid("22_1267204686.55407") :outer("21_1267204686.55407")
+.sub "_block217" :anon :subid("22_1271336381.18625") :outer("21_1271336381.18625")
.param pmc param_219
.annotate "line", 74
.lex "$_", param_219
Modified: branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/NQP-s0.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/NQP-s0.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -15,387 +15,387 @@
### .include 'gen/nqp-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204702.05125")
+.sub "_block11" :anon :subid("10_1271336396.90314")
.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()
+ $P1299 = $P14()
.annotate "line", 1
- .return ($P1296)
+ .return ($P1299)
.end
.namespace []
-.sub "" :load :init :subid("post331") :outer("10_1267204702.05125")
+.sub "" :load :init :subid("post331") :outer("10_1271336396.90314")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204702.05125"
+ .const 'Sub' $P12 = "10_1271336396.90314"
.local pmc block
set block, $P12
- $P1297 = get_root_global ["parrot"], "P6metaclass"
- $P1297."new_class"("NQP::Grammar", "HLL::Grammar" :named("parent"))
+ $P1300 = get_root_global ["parrot"], "P6metaclass"
+ $P1300."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_1271336396.90314") :outer("10_1271336396.90314")
.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"
- 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"
- capture_lex $P874
- .const 'Sub' $P866 = "209_1267204702.05125"
- capture_lex $P866
- .const 'Sub' $P858 = "207_1267204702.05125"
- capture_lex $P858
- .const 'Sub' $P853 = "205_1267204702.05125"
- capture_lex $P853
- .const 'Sub' $P848 = "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"
+ get_hll_global $P1243, ["NQP";"Regex"], "_block1242"
+ capture_lex $P1243
+ .const 'Sub' $P1229 = "317_1271336396.90314"
+ capture_lex $P1229
+ .const 'Sub' $P1223 = "315_1271336396.90314"
+ capture_lex $P1223
+ .const 'Sub' $P1217 = "313_1271336396.90314"
+ capture_lex $P1217
+ .const 'Sub' $P1210 = "311_1271336396.90314"
+ capture_lex $P1210
+ .const 'Sub' $P1203 = "309_1271336396.90314"
+ capture_lex $P1203
+ .const 'Sub' $P1196 = "307_1271336396.90314"
+ capture_lex $P1196
+ .const 'Sub' $P1189 = "305_1271336396.90314"
+ capture_lex $P1189
+ .const 'Sub' $P1183 = "303_1271336396.90314"
+ capture_lex $P1183
+ .const 'Sub' $P1176 = "301_1271336396.90314"
+ capture_lex $P1176
+ .const 'Sub' $P1169 = "299_1271336396.90314"
+ capture_lex $P1169
+ .const 'Sub' $P1162 = "297_1271336396.90314"
+ capture_lex $P1162
+ .const 'Sub' $P1155 = "295_1271336396.90314"
+ capture_lex $P1155
+ .const 'Sub' $P1148 = "293_1271336396.90314"
+ capture_lex $P1148
+ .const 'Sub' $P1141 = "291_1271336396.90314"
+ capture_lex $P1141
+ .const 'Sub' $P1134 = "289_1271336396.90314"
+ capture_lex $P1134
+ .const 'Sub' $P1127 = "287_1271336396.90314"
+ capture_lex $P1127
+ .const 'Sub' $P1120 = "285_1271336396.90314"
+ capture_lex $P1120
+ .const 'Sub' $P1113 = "283_1271336396.90314"
+ capture_lex $P1113
+ .const 'Sub' $P1106 = "281_1271336396.90314"
+ capture_lex $P1106
+ .const 'Sub' $P1099 = "279_1271336396.90314"
+ capture_lex $P1099
+ .const 'Sub' $P1092 = "277_1271336396.90314"
+ capture_lex $P1092
+ .const 'Sub' $P1085 = "275_1271336396.90314"
+ capture_lex $P1085
+ .const 'Sub' $P1078 = "273_1271336396.90314"
+ capture_lex $P1078
+ .const 'Sub' $P1071 = "271_1271336396.90314"
+ capture_lex $P1071
+ .const 'Sub' $P1064 = "269_1271336396.90314"
+ capture_lex $P1064
+ .const 'Sub' $P1057 = "267_1271336396.90314"
+ capture_lex $P1057
+ .const 'Sub' $P1050 = "265_1271336396.90314"
+ capture_lex $P1050
+ .const 'Sub' $P1043 = "263_1271336396.90314"
+ capture_lex $P1043
+ .const 'Sub' $P1036 = "261_1271336396.90314"
+ capture_lex $P1036
+ .const 'Sub' $P1029 = "259_1271336396.90314"
+ capture_lex $P1029
+ .const 'Sub' $P1022 = "257_1271336396.90314"
+ capture_lex $P1022
+ .const 'Sub' $P1015 = "255_1271336396.90314"
+ capture_lex $P1015
+ .const 'Sub' $P1008 = "253_1271336396.90314"
+ capture_lex $P1008
+ .const 'Sub' $P1001 = "251_1271336396.90314"
+ capture_lex $P1001
+ .const 'Sub' $P995 = "249_1271336396.90314"
+ capture_lex $P995
+ .const 'Sub' $P988 = "247_1271336396.90314"
+ capture_lex $P988
+ .const 'Sub' $P981 = "245_1271336396.90314"
+ capture_lex $P981
+ .const 'Sub' $P974 = "243_1271336396.90314"
+ capture_lex $P974
+ .const 'Sub' $P967 = "241_1271336396.90314"
+ capture_lex $P967
+ .const 'Sub' $P960 = "239_1271336396.90314"
+ capture_lex $P960
+ .const 'Sub' $P953 = "237_1271336396.90314"
+ capture_lex $P953
+ .const 'Sub' $P946 = "235_1271336396.90314"
+ capture_lex $P946
+ .const 'Sub' $P940 = "233_1271336396.90314"
+ capture_lex $P940
+ .const 'Sub' $P934 = "231_1271336396.90314"
+ capture_lex $P934
+ .const 'Sub' $P929 = "229_1271336396.90314"
+ capture_lex $P929
+ .const 'Sub' $P923 = "227_1271336396.90314"
+ capture_lex $P923
+ .const 'Sub' $P917 = "225_1271336396.90314"
+ capture_lex $P917
+ .const 'Sub' $P912 = "223_1271336396.90314"
+ capture_lex $P912
+ .const 'Sub' $P907 = "221_1271336396.90314"
+ capture_lex $P907
+ .const 'Sub' $P900 = "219_1271336396.90314"
+ capture_lex $P900
+ .const 'Sub' $P892 = "217_1271336396.90314"
+ capture_lex $P892
+ .const 'Sub' $P887 = "215_1271336396.90314"
+ capture_lex $P887
+ .const 'Sub' $P882 = "213_1271336396.90314"
+ capture_lex $P882
+ .const 'Sub' $P877 = "211_1271336396.90314"
+ capture_lex $P877
+ .const 'Sub' $P869 = "209_1271336396.90314"
+ capture_lex $P869
+ .const 'Sub' $P861 = "207_1271336396.90314"
+ capture_lex $P861
+ .const 'Sub' $P856 = "205_1271336396.90314"
+ capture_lex $P856
+ .const 'Sub' $P851 = "203_1271336396.90314"
+ capture_lex $P851
+ .const 'Sub' $P845 = "201_1271336396.90314"
+ capture_lex $P845
+ .const 'Sub' $P839 = "199_1271336396.90314"
+ capture_lex $P839
+ .const 'Sub' $P833 = "197_1271336396.90314"
+ capture_lex $P833
+ .const 'Sub' $P827 = "195_1271336396.90314"
+ capture_lex $P827
+ .const 'Sub' $P821 = "193_1271336396.90314"
+ capture_lex $P821
+ .const 'Sub' $P816 = "191_1271336396.90314"
+ capture_lex $P816
+ .const 'Sub' $P811 = "189_1271336396.90314"
+ capture_lex $P811
+ .const 'Sub' $P798 = "185_1271336396.90314"
+ capture_lex $P798
+ .const 'Sub' $P790 = "183_1271336396.90314"
+ capture_lex $P790
+ .const 'Sub' $P784 = "181_1271336396.90314"
+ capture_lex $P784
+ .const 'Sub' $P777 = "179_1271336396.90314"
+ capture_lex $P777
+ .const 'Sub' $P771 = "177_1271336396.90314"
+ capture_lex $P771
+ .const 'Sub' $P763 = "175_1271336396.90314"
+ capture_lex $P763
+ .const 'Sub' $P755 = "173_1271336396.90314"
+ capture_lex $P755
+ .const 'Sub' $P749 = "171_1271336396.90314"
+ capture_lex $P749
+ .const 'Sub' $P743 = "169_1271336396.90314"
+ capture_lex $P743
+ .const 'Sub' $P728 = "165_1271336396.90314"
+ capture_lex $P728
+ .const 'Sub' $P691 = "163_1271336396.90314"
+ capture_lex $P691
+ .const 'Sub' $P683 = "161_1271336396.90314"
+ capture_lex $P683
+ .const 'Sub' $P677 = "159_1271336396.90314"
+ capture_lex $P677
+ .const 'Sub' $P667 = "157_1271336396.90314"
+ capture_lex $P667
+ .const 'Sub' $P652 = "155_1271336396.90314"
+ capture_lex $P652
+ .const 'Sub' $P643 = "153_1271336396.90314"
+ capture_lex $P643
+ .const 'Sub' $P624 = "151_1271336396.90314"
+ capture_lex $P624
+ .const 'Sub' $P600 = "149_1271336396.90314"
+ capture_lex $P600
+ .const 'Sub' $P593 = "147_1271336396.90314"
+ capture_lex $P593
+ .const 'Sub' $P586 = "145_1271336396.90314"
+ capture_lex $P586
+ .const 'Sub' $P576 = "141_1271336396.90314"
+ capture_lex $P576
+ .const 'Sub' $P565 = "139_1271336396.90314"
+ capture_lex $P565
+ .const 'Sub' $P558 = "137_1271336396.90314"
+ capture_lex $P558
+ .const 'Sub' $P551 = "135_1271336396.90314"
+ capture_lex $P551
+ .const 'Sub' $P544 = "133_1271336396.90314"
+ capture_lex $P544
+ .const 'Sub' $P517 = "129_1271336396.90314"
+ capture_lex $P517
+ .const 'Sub' $P508 = "127_1271336396.90314"
+ capture_lex $P508
+ .const 'Sub' $P501 = "125_1271336396.90314"
+ capture_lex $P501
+ .const 'Sub' $P492 = "121_1271336396.90314"
+ capture_lex $P492
+ .const 'Sub' $P487 = "119_1271336396.90314"
+ capture_lex $P487
+ .const 'Sub' $P475 = "117_1271336396.90314"
+ capture_lex $P475
+ .const 'Sub' $P463 = "115_1271336396.90314"
+ capture_lex $P463
+ .const 'Sub' $P455 = "113_1271336396.90314"
+ capture_lex $P455
+ .const 'Sub' $P450 = "111_1271336396.90314"
+ capture_lex $P450
+ .const 'Sub' $P444 = "109_1271336396.90314"
+ capture_lex $P444
+ .const 'Sub' $P438 = "107_1271336396.90314"
+ capture_lex $P438
+ .const 'Sub' $P432 = "105_1271336396.90314"
+ capture_lex $P432
+ .const 'Sub' $P426 = "103_1271336396.90314"
+ capture_lex $P426
+ .const 'Sub' $P420 = "101_1271336396.90314"
+ capture_lex $P420
+ .const 'Sub' $P414 = "99_1271336396.90314"
+ capture_lex $P414
+ .const 'Sub' $P408 = "97_1271336396.90314"
+ capture_lex $P408
+ .const 'Sub' $P402 = "95_1271336396.90314"
+ capture_lex $P402
+ .const 'Sub' $P394 = "93_1271336396.90314"
+ capture_lex $P394
+ .const 'Sub' $P386 = "91_1271336396.90314"
+ capture_lex $P386
+ .const 'Sub' $P374 = "87_1271336396.90314"
+ capture_lex $P374
+ .const 'Sub' $P366 = "85_1271336396.90314"
+ capture_lex $P366
+ .const 'Sub' $P356 = "81_1271336396.90314"
+ capture_lex $P356
+ .const 'Sub' $P349 = "79_1271336396.90314"
+ capture_lex $P349
+ .const 'Sub' $P342 = "77_1271336396.90314"
+ capture_lex $P342
+ .const 'Sub' $P330 = "73_1271336396.90314"
+ capture_lex $P330
+ .const 'Sub' $P322 = "71_1271336396.90314"
+ capture_lex $P322
+ .const 'Sub' $P314 = "69_1271336396.90314"
+ capture_lex $P314
+ .const 'Sub' $P294 = "67_1271336396.90314"
+ capture_lex $P294
+ .const 'Sub' $P285 = "65_1271336396.90314"
+ capture_lex $P285
+ .const 'Sub' $P267 = "62_1271336396.90314"
+ capture_lex $P267
+ .const 'Sub' $P247 = "60_1271336396.90314"
+ capture_lex $P247
+ .const 'Sub' $P238 = "56_1271336396.90314"
+ capture_lex $P238
+ .const 'Sub' $P233 = "54_1271336396.90314"
+ capture_lex $P233
+ .const 'Sub' $P224 = "50_1271336396.90314"
+ capture_lex $P224
+ .const 'Sub' $P219 = "48_1271336396.90314"
+ capture_lex $P219
+ .const 'Sub' $P211 = "46_1271336396.90314"
+ capture_lex $P211
+ .const 'Sub' $P204 = "44_1271336396.90314"
+ capture_lex $P204
+ .const 'Sub' $P198 = "42_1271336396.90314"
+ capture_lex $P198
+ .const 'Sub' $P190 = "40_1271336396.90314"
+ capture_lex $P190
+ .const 'Sub' $P184 = "38_1271336396.90314"
+ capture_lex $P184
+ .const 'Sub' $P178 = "36_1271336396.90314"
+ capture_lex $P178
+ .const 'Sub' $P162 = "33_1271336396.90314"
+ capture_lex $P162
+ .const 'Sub' $P149 = "31_1271336396.90314"
+ capture_lex $P149
+ .const 'Sub' $P142 = "29_1271336396.90314"
+ capture_lex $P142
+ .const 'Sub' $P96 = "26_1271336396.90314"
capture_lex $P96
- .const 'Sub' $P78 = "23_1267204702.05125"
+ .const 'Sub' $P78 = "23_1271336396.90314"
capture_lex $P78
- .const 'Sub' $P68 = "21_1267204702.05125"
+ .const 'Sub' $P68 = "21_1271336396.90314"
capture_lex $P68
- .const 'Sub' $P54 = "19_1267204702.05125"
+ .const 'Sub' $P54 = "19_1271336396.90314"
capture_lex $P54
- .const 'Sub' $P46 = "17_1267204702.05125"
+ .const 'Sub' $P46 = "17_1271336396.90314"
capture_lex $P46
- .const 'Sub' $P39 = "15_1267204702.05125"
+ .const 'Sub' $P39 = "15_1271336396.90314"
capture_lex $P39
- .const 'Sub' $P33 = "13_1267204702.05125"
+ .const 'Sub' $P33 = "13_1271336396.90314"
capture_lex $P33
- .const 'Sub' $P15 = "12_1267204702.05125"
+ .const 'Sub' $P15 = "12_1271336396.90314"
capture_lex $P15
-.annotate "line", 531
- get_hll_global $P1240, ["NQP";"Regex"], "_block1239"
- capture_lex $P1240
- $P1279 = $P1240()
+.annotate "line", 535
+ get_hll_global $P1243, ["NQP";"Regex"], "_block1242"
+ capture_lex $P1243
+ $P1282 = $P1243()
.annotate "line", 4
- .return ($P1279)
+ .return ($P1282)
.end
.namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1267204702.05125")
+.sub "" :load :init :subid("post332") :outer("11_1271336396.90314")
.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")
+ get_hll_global $P1283, ["NQP"], "Grammar"
+ $P1283."O"(":prec<y=>, :assoc<unary>", "%methodop")
.annotate "line", 423
- get_hll_global $P1285, ["NQP"], "Grammar"
- $P1285."O"(":prec<t=>, :assoc<left>", "%additive")
+ get_hll_global $P1284, ["NQP"], "Grammar"
+ $P1284."O"(":prec<x=>, :assoc<unary>", "%autoincrement")
.annotate "line", 424
- get_hll_global $P1286, ["NQP"], "Grammar"
- $P1286."O"(":prec<r=>, :assoc<left>", "%concatenation")
+ get_hll_global $P1285, ["NQP"], "Grammar"
+ $P1285."O"(":prec<w=>, :assoc<left>", "%exponentiation")
.annotate "line", 425
- get_hll_global $P1287, ["NQP"], "Grammar"
- $P1287."O"(":prec<m=>, :assoc<left>", "%relational")
+ get_hll_global $P1286, ["NQP"], "Grammar"
+ $P1286."O"(":prec<v=>, :assoc<unary>", "%symbolic_unary")
.annotate "line", 426
- get_hll_global $P1288, ["NQP"], "Grammar"
- $P1288."O"(":prec<l=>, :assoc<left>", "%tight_and")
+ get_hll_global $P1287, ["NQP"], "Grammar"
+ $P1287."O"(":prec<u=>, :assoc<left>", "%multiplicative")
.annotate "line", 427
- get_hll_global $P1289, ["NQP"], "Grammar"
- $P1289."O"(":prec<k=>, :assoc<left>", "%tight_or")
+ get_hll_global $P1288, ["NQP"], "Grammar"
+ $P1288."O"(":prec<t=>, :assoc<left>", "%additive")
.annotate "line", 428
- get_hll_global $P1290, ["NQP"], "Grammar"
- $P1290."O"(":prec<j=>, :assoc<right>", "%conditional")
+ get_hll_global $P1289, ["NQP"], "Grammar"
+ $P1289."O"(":prec<r=>, :assoc<left>", "%concatenation")
.annotate "line", 429
- get_hll_global $P1291, ["NQP"], "Grammar"
- $P1291."O"(":prec<i=>, :assoc<right>", "%assignment")
+ get_hll_global $P1290, ["NQP"], "Grammar"
+ $P1290."O"(":prec<m=>, :assoc<left>", "%relational")
.annotate "line", 430
- get_hll_global $P1292, ["NQP"], "Grammar"
- $P1292."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+ get_hll_global $P1291, ["NQP"], "Grammar"
+ $P1291."O"(":prec<l=>, :assoc<left>", "%tight_and")
.annotate "line", 431
- get_hll_global $P1293, ["NQP"], "Grammar"
- $P1293."O"(":prec<f=>, :assoc<list>", "%list_infix")
+ get_hll_global $P1292, ["NQP"], "Grammar"
+ $P1292."O"(":prec<k=>, :assoc<left>", "%tight_or")
.annotate "line", 432
+ get_hll_global $P1293, ["NQP"], "Grammar"
+ $P1293."O"(":prec<j=>, :assoc<right>", "%conditional")
+.annotate "line", 433
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"))
+ $P1294."O"(":prec<i=>, :assoc<right>", "%assignment")
+.annotate "line", 434
+ get_hll_global $P1295, ["NQP"], "Grammar"
+ $P1295."O"(":prec<g=>, :assoc<list>, :nextterm<nulltermish>", "%comma")
+.annotate "line", 435
+ get_hll_global $P1296, ["NQP"], "Grammar"
+ $P1296."O"(":prec<f=>, :assoc<list>", "%list_infix")
+.annotate "line", 436
+ get_hll_global $P1297, ["NQP"], "Grammar"
+ $P1297."O"(":prec<e=>, :assoc<unary>", "%list_prefix")
+.annotate "line", 421
+ $P1298 = get_root_global ["parrot"], "P6metaclass"
+ $P1298."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_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
new $P17, 'ExceptionHandler'
set_addr $P17, control_16
@@ -478,7 +478,7 @@
.namespace ["NQP";"Grammar"]
-.sub "identifier" :subid("13_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "identifier" :subid("13_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
.local string rx34_tgt
.local int rx34_pos
@@ -536,7 +536,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier" :subid("14_1267204702.05125") :method
+.sub "!PREFIX__identifier" :subid("14_1271336396.90314") :method
.annotate "line", 4
$P36 = self."!PREFIX__!subrule"("ident", "")
new $P37, "ResizablePMCArray"
@@ -546,7 +546,7 @@
.namespace ["NQP";"Grammar"]
-.sub "name" :subid("15_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "name" :subid("15_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
.local string rx40_tgt
.local int rx40_pos
@@ -620,7 +620,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name" :subid("16_1267204702.05125") :method
+.sub "!PREFIX__name" :subid("16_1271336396.90314") :method
.annotate "line", 4
new $P42, "ResizablePMCArray"
push $P42, ""
@@ -629,7 +629,7 @@
.namespace ["NQP";"Grammar"]
-.sub "deflongname" :subid("17_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "deflongname" :subid("17_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
.local string rx47_tgt
.local int rx47_pos
@@ -702,7 +702,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname" :subid("18_1267204702.05125") :method
+.sub "!PREFIX__deflongname" :subid("18_1271336396.90314") :method
.annotate "line", 4
$P49 = self."!PREFIX__!subrule"("identifier", "")
new $P50, "ResizablePMCArray"
@@ -712,7 +712,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ENDSTMT" :subid("19_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "ENDSTMT" :subid("19_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
.local string rx55_tgt
.local int rx55_pos
@@ -844,7 +844,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT" :subid("20_1267204702.05125") :method
+.sub "!PREFIX__ENDSTMT" :subid("20_1271336396.90314") :method
.annotate "line", 4
new $P57, "ResizablePMCArray"
push $P57, ""
@@ -853,7 +853,7 @@
.namespace ["NQP";"Grammar"]
-.sub "ws" :subid("21_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "ws" :subid("21_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
.local string rx69_tgt
.local int rx69_pos
@@ -979,7 +979,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws" :subid("22_1267204702.05125") :method
+.sub "!PREFIX__ws" :subid("22_1271336396.90314") :method
.annotate "line", 4
new $P71, "ResizablePMCArray"
push $P71, ""
@@ -989,9 +989,9 @@
.namespace ["NQP";"Grammar"]
-.sub "unv" :subid("23_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "unv" :subid("23_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
- .const 'Sub' $P86 = "25_1267204702.05125"
+ .const 'Sub' $P86 = "25_1271336396.90314"
capture_lex $P86
.local string rx79_tgt
.local int rx79_pos
@@ -1037,7 +1037,7 @@
rxanchor84_done:
# rx subrule "before" subtype=zerowidth negate=
rx79_cur."!cursor_pos"(rx79_pos)
- .const 'Sub' $P86 = "25_1267204702.05125"
+ .const 'Sub' $P86 = "25_1271336396.90314"
capture_lex $P86
$P10 = rx79_cur."before"($P86)
unless $P10, rx79_fail
@@ -1116,7 +1116,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv" :subid("24_1267204702.05125") :method
+.sub "!PREFIX__unv" :subid("24_1271336396.90314") :method
.annotate "line", 4
new $P81, "ResizablePMCArray"
push $P81, ""
@@ -1127,7 +1127,7 @@
.namespace ["NQP";"Grammar"]
-.sub "_block85" :anon :subid("25_1267204702.05125") :method :outer("23_1267204702.05125")
+.sub "_block85" :anon :subid("25_1271336396.90314") :method :outer("23_1271336396.90314")
.annotate "line", 44
.local string rx87_tgt
.local int rx87_pos
@@ -1217,10 +1217,10 @@
.namespace ["NQP";"Grammar"]
-.sub "pod_comment" :subid("26_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "pod_comment" :subid("26_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
- .const 'Sub' $P131 = "28_1267204702.05125"
- capture_lex $P131
+ .const 'Sub' $P133 = "28_1271336396.90314"
+ capture_lex $P133
.local string rx97_tgt
.local int rx97_pos
.local int rx97_off
@@ -1643,40 +1643,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_1271336396.90314"
+ 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 +1692,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 +1726,7 @@
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment" :subid("27_1267204702.05125") :method
+.sub "!PREFIX__pod_comment" :subid("27_1271336396.90314") :method
.annotate "line", 4
new $P99, "ResizablePMCArray"
push $P99, ""
@@ -1727,13585 +1735,13565 @@
.namespace ["NQP";"Grammar"]
-.sub "_block130" :anon :subid("28_1267204702.05125") :method :outer("26_1267204702.05125")
+.sub "_block132" :anon :subid("28_1271336396.90314") :method :outer("26_1271336396.90314")
.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_1271336396.90314") :method :outer("11_1271336396.90314")
+.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314"
+ 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_1271336396.90314"
+ 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_1271336396.90314") :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_1271336396.90314") :method :outer("33_1271336396.90314")
+.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_1271336396.90314") :method :outer("11_1271336396.90314")
+.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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"("else", "xblock")
+ .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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314"
+ 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_1271336396.90314"
+ 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_1271336396.90314") :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_1271336396.90314") :method :outer("62_1271336396.90314")
+.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_1271336396.90314") :method :outer("11_1271336396.90314")
+.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
+ .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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
+.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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
# 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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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
# 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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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
# 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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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_1271336396.90314") :method :outer("11_1271336396.90314")
.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_1271336396.90314") :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 "circumfix:sym<( )>" :subid("207_1271336396.90314") :method :outer("11_1271336396.90314")
.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 ", "circumfix:sym<( )>")
+ rx862_cur."!cursor_caparray"("EXPR")
+ .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, rxscan866_done
+ goto rxscan866_scan
+ rxscan866_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
+ set rx862_pos, $P10
+ ge rx862_pos, rx862_eos, rxscan866_done
+ rxscan866_scan:
+ set_addr $I10, rxscan866_loop
+ rx862_cur."!mark_push"(0, rx862_pos, $I10)
+ rxscan866_done:
+.annotate "line", 410
# 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:
+ add $I11, rx862_pos, 1
+ gt $I11, rx862_eos, rx862_fail
+ sub $I11, rx862_pos, rx862_off
+ substr $S10, rx862_tgt, $I11, 1
+ ne $S10, "(", rx862_fail
+ add rx862_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx862_cur."!cursor_pos"(rx862_pos)
+ $P10 = rx862_cur."ws"()
+ unless $P10, rx862_fail
+ rx862_pos = $P10."pos"()
+ # rx rxquantr867 ** 0..1
+ set_addr $I868, rxquantr867_done
+ rx862_cur."!mark_push"(0, rx862_pos, $I868)
+ rxquantr867_loop:
# 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)
+ rx862_cur."!cursor_pos"(rx862_pos)
+ $P10 = rx862_cur."EXPR"()
+ unless $P10, rx862_fail
+ rx862_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx859_pos = $P10."pos"()
- (rx859_rep) = rx859_cur."!mark_commit"($I865)
- rxquantr864_done:
+ rx862_pos = $P10."pos"()
+ (rx862_rep) = rx862_cur."!mark_commit"($I868)
+ rxquantr867_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
+ add $I11, rx862_pos, 1
+ gt $I11, rx862_eos, rx862_fail
+ sub $I11, rx862_pos, rx862_off
+ substr $S10, rx862_tgt, $I11, 1
+ ne $S10, ")", rx862_fail
+ add rx862_pos, 1
# rx 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, "circumfix:sym<( )>")
+ rx862_cur."!cursor_debug"("PASS ", "circumfix:sym<( )>", " 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 ", "circumfix:sym<( )>")
+ .return (rx862_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>" :subid("208_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<( )>" :subid("208_1271336396.90314") :method
.annotate "line", 4
- $P861 = self."!PREFIX__!subrule"("", "(")
- new $P862, "ResizablePMCArray"
- push $P862, $P861
- .return ($P862)
+ $P864 = self."!PREFIX__!subrule"("", "(")
+ new $P865, "ResizablePMCArray"
+ push $P865, $P864
+ .return ($P865)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>" :subid("209_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<[ ]>" :subid("209_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
- .local string rx867_tgt
- .local int rx867_pos
- .local int rx867_off
- .local int rx867_eos
- .local int rx867_rep
- .local pmc rx867_cur
- (rx867_cur, rx867_pos, rx867_tgt) = self."!cursor_start"()
- rx867_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
- rx867_cur."!cursor_caparray"("EXPR")
- .lex unicode:"$\x{a2}", rx867_cur
+ .local string rx870_tgt
+ .local int rx870_pos
+ .local int rx870_off
+ .local int rx870_eos
+ .local int rx870_rep
+ .local pmc rx870_cur
+ (rx870_cur, rx870_pos, rx870_tgt) = self."!cursor_start"()
+ rx870_cur."!cursor_debug"("START ", "circumfix:sym<[ ]>")
+ rx870_cur."!cursor_caparray"("EXPR")
+ .lex unicode:"$\x{a2}", rx870_cur
.local pmc match
.lex "$/", match
- length rx867_eos, rx867_tgt
- set rx867_off, 0
- lt rx867_pos, 2, rx867_start
- sub rx867_off, rx867_pos, 1
- substr rx867_tgt, rx867_tgt, rx867_off
- rx867_start:
+ length rx870_eos, rx870_tgt
+ set rx870_off, 0
+ lt rx870_pos, 2, rx870_start
+ sub rx870_off, rx870_pos, 1
+ substr rx870_tgt, rx870_tgt, rx870_off
+ rx870_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan871_done
- goto rxscan871_scan
- rxscan871_loop:
- ($P10) = rx867_cur."from"()
+ ne $I10, -1, rxscan874_done
+ goto rxscan874_scan
+ rxscan874_loop:
+ ($P10) = rx870_cur."from"()
inc $P10
- set rx867_pos, $P10
- ge rx867_pos, rx867_eos, rxscan871_done
- rxscan871_scan:
- set_addr $I10, rxscan871_loop
- rx867_cur."!mark_push"(0, rx867_pos, $I10)
- rxscan871_done:
-.annotate "line", 407
+ set rx870_pos, $P10
+ ge rx870_pos, rx870_eos, rxscan874_done
+ rxscan874_scan:
+ set_addr $I10, rxscan874_loop
+ rx870_cur."!mark_push"(0, rx870_pos, $I10)
+ rxscan874_done:
+.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
- add rx867_pos, 1
- # rx subrule "ws" subtype=method negate=
- rx867_cur."!cursor_pos"(rx867_pos)
- $P10 = rx867_cur."ws"()
- unless $P10, rx867_fail
- rx867_pos = $P10."pos"()
- # rx rxquantr872 ** 0..1
- set_addr $I873, rxquantr872_done
- rx867_cur."!mark_push"(0, rx867_pos, $I873)
- rxquantr872_loop:
+ add $I11, rx870_pos, 1
+ gt $I11, rx870_eos, rx870_fail
+ sub $I11, rx870_pos, rx870_off
+ substr $S10, rx870_tgt, $I11, 1
+ ne $S10, "[", rx870_fail
+ add rx870_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx870_cur."!cursor_pos"(rx870_pos)
+ $P10 = rx870_cur."ws"()
+ unless $P10, rx870_fail
+ rx870_pos = $P10."pos"()
+ # rx rxquantr875 ** 0..1
+ set_addr $I876, rxquantr875_done
+ rx870_cur."!mark_push"(0, rx870_pos, $I876)
+ rxquantr875_loop:
# rx subrule "EXPR" subtype=capture negate=
- rx867_cur."!cursor_pos"(rx867_pos)
- $P10 = rx867_cur."EXPR"()
- unless $P10, rx867_fail
- rx867_cur."!mark_push"(0, -1, 0, $P10)
+ rx870_cur."!cursor_pos"(rx870_pos)
+ $P10 = rx870_cur."EXPR"()
+ unless $P10, rx870_fail
+ rx870_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx867_pos = $P10."pos"()
- (rx867_rep) = rx867_cur."!mark_commit"($I873)
- rxquantr872_done:
+ rx870_pos = $P10."pos"()
+ (rx870_rep) = rx870_cur."!mark_commit"($I876)
+ rxquantr875_done:
# rx literal "]"
- add $I11, rx867_pos, 1
- gt $I11, rx867_eos, rx867_fail
- sub $I11, rx867_pos, rx867_off
- substr $S10, rx867_tgt, $I11, 1
- ne $S10, "]", rx867_fail
- add rx867_pos, 1
+ add $I11, rx870_pos, 1
+ gt $I11, rx870_eos, rx870_fail
+ sub $I11, rx870_pos, rx870_off
+ substr $S10, rx870_tgt, $I11, 1
+ ne $S10, "]", rx870_fail
+ add rx870_pos, 1
# rx pass
- rx867_cur."!cursor_pass"(rx867_pos, "circumfix:sym<[ ]>")
- rx867_cur."!cursor_debug"("PASS ", "circumfix:sym<[ ]>", " at pos=", rx867_pos)
- .return (rx867_cur)
- rx867_fail:
+ rx870_cur."!cursor_pass"(rx870_pos, "circumfix:sym<[ ]>")
+ rx870_cur."!cursor_debug"("PASS ", "circumfix:sym<[ ]>", " at pos=", rx870_pos)
+ .return (rx870_cur)
+ rx870_fail:
.annotate "line", 4
- (rx867_rep, rx867_pos, $I10, $P10) = rx867_cur."!mark_fail"(0)
- lt rx867_pos, -1, rx867_done
- eq rx867_pos, -1, rx867_fail
+ (rx870_rep, rx870_pos, $I10, $P10) = rx870_cur."!mark_fail"(0)
+ lt rx870_pos, -1, rx870_done
+ eq rx870_pos, -1, rx870_fail
jump $I10
- rx867_done:
- rx867_cur."!cursor_fail"()
- rx867_cur."!cursor_debug"("FAIL ", "circumfix:sym<[ ]>")
- .return (rx867_cur)
+ rx870_done:
+ rx870_cur."!cursor_fail"()
+ rx870_cur."!cursor_debug"("FAIL ", "circumfix:sym<[ ]>")
+ .return (rx870_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>" :subid("210_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<[ ]>" :subid("210_1271336396.90314") :method
.annotate "line", 4
- $P869 = self."!PREFIX__!subrule"("", "[")
- new $P870, "ResizablePMCArray"
- push $P870, $P869
- .return ($P870)
+ $P872 = self."!PREFIX__!subrule"("", "[")
+ new $P873, "ResizablePMCArray"
+ push $P873, $P872
+ .return ($P873)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>" :subid("211_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<ang>" :subid("211_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
- .local string rx875_tgt
- .local int rx875_pos
- .local int rx875_off
- .local int rx875_eos
- .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>")
- .lex unicode:"$\x{a2}", rx875_cur
- .local pmc match
- .lex "$/", match
- length rx875_eos, rx875_tgt
- set rx875_off, 0
- lt rx875_pos, 2, rx875_start
- sub rx875_off, rx875_pos, 1
- substr rx875_tgt, rx875_tgt, rx875_off
- rx875_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan878_done
- goto rxscan878_scan
- rxscan878_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
- rx875_cur."!mark_push"(0, rx875_pos, $I10)
- rxscan878_done:
-.annotate "line", 408
+ .local string rx878_tgt
+ .local int rx878_pos
+ .local int rx878_off
+ .local int rx878_eos
+ .local int rx878_rep
+ .local pmc rx878_cur
+ (rx878_cur, rx878_pos, rx878_tgt) = self."!cursor_start"()
+ rx878_cur."!cursor_debug"("START ", "circumfix:sym<ang>")
+ .lex unicode:"$\x{a2}", rx878_cur
+ .local pmc match
+ .lex "$/", match
+ length rx878_eos, rx878_tgt
+ set rx878_off, 0
+ lt rx878_pos, 2, rx878_start
+ sub rx878_off, rx878_pos, 1
+ substr rx878_tgt, rx878_tgt, rx878_off
+ rx878_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan881_done
+ goto rxscan881_scan
+ rxscan881_loop:
+ ($P10) = rx878_cur."from"()
+ inc $P10
+ set rx878_pos, $P10
+ ge rx878_pos, rx878_eos, rxscan881_done
+ rxscan881_scan:
+ set_addr $I10, rxscan881_loop
+ rx878_cur."!mark_push"(0, rx878_pos, $I10)
+ rxscan881_done:
+.annotate "line", 412
# rx enumcharlist negate=0 zerowidth
- ge rx875_pos, rx875_eos, rx875_fail
- sub $I10, rx875_pos, rx875_off
- substr $S10, rx875_tgt, $I10, 1
+ ge rx878_pos, rx878_eos, rx878_fail
+ sub $I10, rx878_pos, rx878_off
+ substr $S10, rx878_tgt, $I10, 1
index $I11, "<", $S10
- lt $I11, 0, rx875_fail
+ lt $I11, 0, rx878_fail
# rx subrule "quote_EXPR" subtype=capture negate=
- rx875_cur."!cursor_pos"(rx875_pos)
- $P10 = rx875_cur."quote_EXPR"(":q", ":w")
- unless $P10, rx875_fail
- rx875_cur."!mark_push"(0, -1, 0, $P10)
+ rx878_cur."!cursor_pos"(rx878_pos)
+ $P10 = rx878_cur."quote_EXPR"(":q", ":w")
+ unless $P10, rx878_fail
+ rx878_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx875_pos = $P10."pos"()
+ rx878_pos = $P10."pos"()
# rx pass
- rx875_cur."!cursor_pass"(rx875_pos, "circumfix:sym<ang>")
- rx875_cur."!cursor_debug"("PASS ", "circumfix:sym<ang>", " at pos=", rx875_pos)
- .return (rx875_cur)
- rx875_fail:
+ rx878_cur."!cursor_pass"(rx878_pos, "circumfix:sym<ang>")
+ rx878_cur."!cursor_debug"("PASS ", "circumfix:sym<ang>", " at pos=", rx878_pos)
+ .return (rx878_cur)
+ rx878_fail:
.annotate "line", 4
- (rx875_rep, rx875_pos, $I10, $P10) = rx875_cur."!mark_fail"(0)
- lt rx875_pos, -1, rx875_done
- eq rx875_pos, -1, rx875_fail
+ (rx878_rep, rx878_pos, $I10, $P10) = rx878_cur."!mark_fail"(0)
+ lt rx878_pos, -1, rx878_done
+ eq rx878_pos, -1, rx878_fail
jump $I10
- rx875_done:
- rx875_cur."!cursor_fail"()
- rx875_cur."!cursor_debug"("FAIL ", "circumfix:sym<ang>")
- .return (rx875_cur)
+ rx878_done:
+ rx878_cur."!cursor_fail"()
+ rx878_cur."!cursor_debug"("FAIL ", "circumfix:sym<ang>")
+ .return (rx878_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>" :subid("212_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<ang>" :subid("212_1271336396.90314") :method
.annotate "line", 4
- new $P877, "ResizablePMCArray"
- push $P877, "<"
- .return ($P877)
+ new $P880, "ResizablePMCArray"
+ push $P880, "<"
+ .return ($P880)
.end
.namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("213_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>" :subid("213_1271336396.90314") :method :outer("11_1271336396.90314")
.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 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 ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ .lex unicode:"$\x{a2}", rx883_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:
+ 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, rxscan883_done
- goto rxscan883_scan
- rxscan883_loop:
- ($P10) = rx880_cur."from"()
+ ne $I10, -1, rxscan886_done
+ goto rxscan886_scan
+ rxscan886_loop:
+ ($P10) = rx883_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
+ 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
+ ge rx883_pos, rx883_eos, rx883_fail
+ sub $I10, rx883_pos, rx883_off
+ substr $S10, rx883_tgt, $I10, 1
index $I11, unicode:"\x{ab}", $S10
- lt $I11, 0, rx880_fail
+ 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"(":qq", ":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, unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ rx883_cur."!cursor_debug"("PASS ", unicode:"circumfix:sym<\x{ab} \x{bb}>", " 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 ", unicode:"circumfix:sym<\x{ab} \x{bb}>")
+ .return (rx883_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("214_1267204702.05125") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>" :subid("214_1271336396.90314") :method
.annotate "line", 4
- new $P882, "ResizablePMCArray"
- push $P882, unicode:"\x{ab}"
- .return ($P882)
+ new $P885, "ResizablePMCArray"
+ push $P885, unicode:"\x{ab}"
+ .return ($P885)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>" :subid("215_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<{ }>" :subid("215_1271336396.90314") :method :outer("11_1271336396.90314")
.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 ", "circumfix:sym<{ }>")
+ .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
+ ge rx888_pos, rx888_eos, rx888_fail
+ sub $I10, rx888_pos, rx888_off
+ substr $S10, rx888_tgt, $I10, 1
index $I11, "{", $S10
- lt $I11, 0, rx885_fail
+ lt $I11, 0, rx888_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)
+ rx888_cur."!cursor_pos"(rx888_pos)
+ $P10 = rx888_cur."pblock"()
+ unless $P10, rx888_fail
+ rx888_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("pblock")
- rx885_pos = $P10."pos"()
+ 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, "circumfix:sym<{ }>")
+ rx888_cur."!cursor_debug"("PASS ", "circumfix:sym<{ }>", " 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 ", "circumfix:sym<{ }>")
+ .return (rx888_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>" :subid("216_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<{ }>" :subid("216_1271336396.90314") :method
.annotate "line", 4
- new $P887, "ResizablePMCArray"
- push $P887, "{"
- .return ($P887)
+ new $P890, "ResizablePMCArray"
+ push $P890, "{"
+ .return ($P890)
.end
.namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>" :subid("217_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "circumfix:sym<sigil>" :subid("217_1271336396.90314") :method :outer("11_1271336396.90314")
.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<sigil>")
+ .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, rxscan897_done
+ goto rxscan897_scan
+ rxscan897_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
+ set rx893_pos, $P10
+ ge rx893_pos, rx893_eos, rxscan897_done
+ rxscan897_scan:
+ set_addr $I10, rxscan897_loop
+ rx893_cur."!mark_push"(0, rx893_pos, $I10)
+ rxscan897_done:
+.annotate "line", 415
# 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)
+ rx893_cur."!cursor_pos"(rx893_pos)
+ $P10 = rx893_cur."sigil"()
+ unless $P10, rx893_fail
+ rx893_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("sigil")
- rx890_pos = $P10."pos"()
+ rx893_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
+ add $I11, rx893_pos, 1
+ gt $I11, rx893_eos, rx893_fail
+ sub $I11, rx893_pos, rx893_off
+ substr $S10, rx893_tgt, $I11, 1
+ ne $S10, "(", rx893_fail
+ add rx893_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)
+ rx893_cur."!cursor_pos"(rx893_pos)
+ $P10 = rx893_cur."semilist"()
+ unless $P10, rx893_fail
+ rx893_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)
+ rx893_pos = $P10."pos"()
+ alt898_0:
+ set_addr $I10, alt898_1
+ rx893_cur."!mark_push"(0, rx893_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:
+ add $I11, rx893_pos, 1
+ gt $I11, rx893_eos, rx893_fail
+ sub $I11, rx893_pos, rx893_off
+ substr $S10, rx893_tgt, $I11, 1
+ ne $S10, ")", rx893_fail
+ add rx893_pos, 1
+ goto alt898_end
+ alt898_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:
+ rx893_cur."!cursor_pos"(rx893_pos)
+ $P10 = rx893_cur."FAILGOAL"("')'")
+ unless $P10, rx893_fail
+ rx893_pos = $P10."pos"()
+ alt898_end:
# 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<sigil>")
+ rx893_cur."!cursor_debug"("PASS ", "circumfix:sym<sigil>", " 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<sigil>")
+ .return (rx893_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>" :subid("218_1267204702.05125") :method
+.sub "!PREFIX__circumfix:sym<sigil>" :subid("218_1271336396.90314") :method
.annotate "line", 4
- $P892 = self."!PREFIX__!subrule"("sigil", "")
- new $P893, "ResizablePMCArray"
- push $P893, $P892
- .return ($P893)
+ $P895 = self."!PREFIX__!subrule"("sigil", "")
+ new $P896, "ResizablePMCArray"
+ push $P896, $P895
+ .return ($P896)
.end
.namespace ["NQP";"Grammar"]
-.sub "semilist" :subid("219_1267204702.05125") :method :outer("11_1267204702.05125")
+.sub "semilist" :subid("219_1271336396.90314") :method :outer("11_1271336396.90314")
.annotate "line", 4
- .local string rx898_tgt
- .local int rx898_pos
- .local int rx898_off
- .local int rx898_eos
- .local int rx898_rep
- .local pmc rx898_cur
- (rx898_cur, rx898_pos, rx898_tgt) = self."!cursor_start"()
- rx898_cur."!cursor_debug"("START ", "semilist")
- .lex unicode:"$\x{a2}", rx898_cur
+ .local string rx901_tgt
+ .local int rx901_pos
+ .local int rx901_off
+ .local int rx901_eos
+ .local int rx901_rep
+ .local pmc rx901_cur
+ (rx901_cur, rx901_pos, rx901_tgt) = self."!cursor_start"()
+ rx901_cur."!cursor_debug"("START ", "semilist")
+ .lex unicode:"$\x{a2}", rx901_cur
.local pmc match
.lex "$/", match
- length rx898_eos, rx898_tgt
- set rx898_off, 0
- lt rx898_pos, 2, rx898_start
- sub rx898_off, rx898_pos, 1
- substr rx898_tgt, rx898_tgt, rx898_off
- rx898_start:
+ length rx901_eos, rx901_tgt
+ set rx901_off, 0
+ lt rx901_pos, 2, rx901_start
+ sub rx901_off, rx901_pos, 1
+ substr rx901_tgt, rx901_tgt, rx901_off
+ rx901_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan901_done
- goto rxscan901_scan
- rxscan901_loop:
- ($P10) = rx898_cur."from"()
+ ne $I10, -1, rxscan904_done
+ goto rxscan904_scan
+ rxscan904_loop:
+ ($P10) = rx901_cur."from"()
inc $P10
- set rx898_pos, $P10
- ge rx898_pos, rx898_eos, rxscan901_done
- rxscan901_scan:
- set_addr $I10, rxscan901_loop
- rx898_cur."!mark_push"(0, rx898_pos, $I10)
- rxscan901_done:
-.annotate "line", 413
+ set rx901_pos, $P10
+ ge rx901_pos, rx901_eos, rxscan904_done
+ rxscan904_scan:
+ set_addr $I10, rxscan904_loop
+ rx901_cur."!mark_push"(0, rx901_pos, $I10)
+ rxscan904_done:
+.annotate "line", 417
# rx subrule "ws" subtype=method negate=
- rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."ws"()
- unless $P10, rx898_fail
- rx898_pos = $P10."pos"()
+ rx901_cur."!cursor_pos"(rx901_pos)
+ $P10 = rx901_cur."ws"()
+ unless $P10, rx901_fail
+ rx901_pos = $P10."pos"()
# rx subrule "statement" subtype=capture negate=
- rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."statement"()
- unless $P10, rx898_fail
- rx898_cur."!mark_push"(0, -1, 0, $P10)
+ rx901_cur."!cursor_pos"(rx901_pos)
+ $P10 = rx901_cur."statement"()
+ unless $P10, rx901_fail
+ rx901_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement")
- rx898_pos = $P10."pos"()
+ rx901_pos = $P10."pos"()
# rx subrule "ws" subtype=method negate=
- rx898_cur."!cursor_pos"(rx898_pos)
- $P10 = rx898_cur."ws"()
- unless $P10, rx898_fail
- rx898_pos = $P10."pos"()
+ rx901_cur."!cursor_pos"(rx901_pos)
+ $P10 = rx901_cur."ws"()
+ unless $P10, rx901_fail
+ rx901_pos = $P10."pos"()
# rx pass
- rx898_cur."!cursor_pass"(rx898_pos, "semilist")
- rx898_cur."!cursor_debug"("PASS ", "semilist", " at pos=", rx898_pos)
- .return (rx898_cur)
- rx898_fail:
+ rx901_cur."!cursor_pass"(rx901_pos, "semilist")
+ rx901_cur."!cursor_debug"("PASS ", "semilist", " at pos=", rx901_pos)
+ .return (rx901_cur)
+ rx901_fail:
.annotate "line", 4
- (rx898_rep, rx898_pos, $I10, $P10) = rx898_cur."!mark_fail"(0)
- lt rx898_pos, -1, rx898_done
- eq rx898_pos, -1, rx898_fail
+ (rx901_rep, rx901_pos, $I10, $P10) = rx901_cur."!mark_fail"(0)
+ lt rx901_pos, -1, rx901_done
+ eq rx901_pos, -1, rx901_fail
jump $I10
- rx898_done:
- rx898_cur."!cursor_fail"()
- rx898_cur."!cursor_debug"("FAIL ", "semilist")
- .return (rx898_cur)
+ rx901_done:
+ rx901_cur."!cursor_fail"()
+ rx901_cur."!cursor_debug"("FAIL ", "semilist")
+ .return (rx901_cur)
.return ()
.end
.namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist" :subid("220_1267204702.05125") :method
+.sub "!PREFIX__semilist" :subid("220_1271336396.90314") :method
.annotate "line", 4
- new $P900, "ResizablePMCArray"
- push $P900, ""
- .return ($P900)
+ new $P903, "ResizablePMCArray"
+ push $P903, ""
+ .return ($P903)
.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
+.sub "infixish" :subid("221_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx908_tgt
+ .local int rx908_pos
+ .local int rx908_off
+ .local int rx908_eos
+ .local int rx908_rep
+ .local pmc rx908_cur
+ (rx908_cur, rx908_pos, rx908_tgt) = self."!cursor_start"()
+ rx908_cur."!cursor_debug"("START ", "infixish")
+ .lex unicode:"$\x{a2}", rx908_cur
+ .local pmc match
+ .lex "$/", match
+ length rx908_eos, rx908_tgt
+ set rx908_off, 0
+ lt rx908_pos, 2, rx908_start
+ sub rx908_off, rx908_pos, 1
+ substr rx908_tgt, rx908_tgt, rx908_off
+ rx908_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan911_done
+ goto rxscan911_scan
+ rxscan911_loop:
+ ($P10) = rx908_cur."from"()
+ inc $P10
+ set rx908_pos, $P10
+ ge rx908_pos, rx908_eos, rxscan911_done
+ rxscan911_scan:
+ set_addr $I10, rxscan911_loop
+ rx908_cur."!mark_push"(0, rx908_pos, $I10)
+ rxscan911_done:
+.annotate "line", 440
# rx subrule "infixstopper" subtype=zerowidth negate=1
- rx905_cur."!cursor_pos"(rx905_pos)
- $P10 = rx905_cur."infixstopper"()
- if $P10, rx905_fail
+ rx908_cur."!cursor_pos"(rx908_pos)
+ $P10 = rx908_cur."infixstopper"()
+ if $P10, rx908_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)
+ rx908_cur."!cursor_pos"(rx908_pos)
+ $P10 = rx908_cur."infix"()
+ unless $P10, rx908_fail
+ rx908_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("OPER=infix")
- rx905_pos = $P10."pos"()
+ rx908_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
+ rx908_cur."!cursor_pass"(rx908_pos, "infixish")
+ rx908_cur."!cursor_debug"("PASS ", "infixish", " at pos=", rx908_pos)
+ .return (rx908_cur)
+ rx908_fail:
+.annotate "line", 421
+ (rx908_rep, rx908_pos, $I10, $P10) = rx908_cur."!mark_fail"(0)
+ lt rx908_pos, -1, rx908_done
+ eq rx908_pos, -1, rx908_fail
jump $I10
- rx905_done:
- rx905_cur."!cursor_fail"()
- rx905_cur."!cursor_debug"("FAIL ", "infixish")
- .return (rx905_cur)
+ rx908_done:
+ rx908_cur."!cursor_fail"()
+ rx908_cur."!cursor_debug"("FAIL ", "infixish")
+ .return (rx908_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__infixish" :subid("222_1271336396.90314") :method
+.annotate "line", 421
+ new $P910, "ResizablePMCArray"
+ push $P910, ""
+ .return ($P910)
.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 "infixstopper" :subid("223_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .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 ", "infixstopper")
+ .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 "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
+ rx913_cur."!cursor_pos"(rx913_pos)
+ $P10 = rx913_cur."lambda"()
+ unless $P10, rx913_fail
+ # rx pass
+ rx913_cur."!cursor_pass"(rx913_pos, "infixstopper")
+ rx913_cur."!cursor_debug"("PASS ", "infixstopper", " at pos=", rx913_pos)
+ .return (rx913_cur)
+ rx913_fail:
+.annotate "line", 421
+ (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
- rx910_done:
- rx910_cur."!cursor_fail"()
- rx910_cur."!cursor_debug"("FAIL ", "infixstopper")
- .return (rx910_cur)
+ rx913_done:
+ rx913_cur."!cursor_fail"()
+ rx913_cur."!cursor_debug"("FAIL ", "infixstopper")
+ .return (rx913_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("224_1271336396.90314") :method
+.annotate "line", 421
+ new $P915, "ResizablePMCArray"
+ push $P915, ""
+ .return ($P915)
.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("225_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .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 ", "postcircumfix:sym<[ ]>")
+ .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, rxscan922_done
+ goto rxscan922_scan
+ rxscan922_loop:
+ ($P10) = rx918_cur."from"()
+ inc $P10
+ set rx918_pos, $P10
+ ge rx918_pos, rx918_eos, rxscan922_done
+ rxscan922_scan:
+ set_addr $I10, rxscan922_loop
+ rx918_cur."!mark_push"(0, rx918_pos, $I10)
+ rxscan922_done:
+.annotate "line", 444
# 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, rx918_pos, 1
+ gt $I11, rx918_eos, rx918_fail
+ sub $I11, rx918_pos, rx918_off
+ substr $S10, rx918_tgt, $I11, 1
+ ne $S10, "[", rx918_fail
+ add rx918_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx918_cur."!cursor_pos"(rx918_pos)
+ $P10 = rx918_cur."ws"()
+ unless $P10, rx918_fail
+ rx918_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)
+ rx918_cur."!cursor_pos"(rx918_pos)
+ $P10 = rx918_cur."EXPR"()
+ unless $P10, rx918_fail
+ rx918_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx915_pos = $P10."pos"()
+ rx918_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, rx918_pos, 1
+ gt $I11, rx918_eos, rx918_fail
+ sub $I11, rx918_pos, rx918_off
+ substr $S10, rx918_tgt, $I11, 1
+ ne $S10, "]", rx918_fail
+ add rx918_pos, 1
+.annotate "line", 445
# 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)
+ rx918_cur."!cursor_pos"(rx918_pos)
+ $P10 = rx918_cur."O"("%methodop")
+ unless $P10, rx918_fail
+ rx918_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx915_pos = $P10."pos"()
-.annotate "line", 439
+ rx918_pos = $P10."pos"()
+.annotate "line", 443
# 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
+ rx918_cur."!cursor_pass"(rx918_pos, "postcircumfix:sym<[ ]>")
+ rx918_cur."!cursor_debug"("PASS ", "postcircumfix:sym<[ ]>", " at pos=", rx918_pos)
+ .return (rx918_cur)
+ rx918_fail:
+.annotate "line", 421
+ (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
- rx915_done:
- rx915_cur."!cursor_fail"()
- rx915_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<[ ]>")
- .return (rx915_cur)
+ rx918_done:
+ rx918_cur."!cursor_fail"()
+ rx918_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<[ ]>")
+ .return (rx918_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("226_1271336396.90314") :method
+.annotate "line", 421
+ $P920 = self."!PREFIX__!subrule"("", "[")
+ new $P921, "ResizablePMCArray"
+ push $P921, $P920
+ .return ($P921)
.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("227_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx924_tgt
+ .local int rx924_pos
+ .local int rx924_off
+ .local int rx924_eos
+ .local int rx924_rep
+ .local pmc rx924_cur
+ (rx924_cur, rx924_pos, rx924_tgt) = self."!cursor_start"()
+ rx924_cur."!cursor_debug"("START ", "postcircumfix:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx924_cur
+ .local pmc match
+ .lex "$/", match
+ length rx924_eos, rx924_tgt
+ set rx924_off, 0
+ lt rx924_pos, 2, rx924_start
+ sub rx924_off, rx924_pos, 1
+ substr rx924_tgt, rx924_tgt, rx924_off
+ rx924_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan928_done
+ goto rxscan928_scan
+ rxscan928_loop:
+ ($P10) = rx924_cur."from"()
+ inc $P10
+ set rx924_pos, $P10
+ ge rx924_pos, rx924_eos, rxscan928_done
+ rxscan928_scan:
+ set_addr $I10, rxscan928_loop
+ rx924_cur."!mark_push"(0, rx924_pos, $I10)
+ rxscan928_done:
+.annotate "line", 449
# 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, rx924_pos, 1
+ gt $I11, rx924_eos, rx924_fail
+ sub $I11, rx924_pos, rx924_off
+ substr $S10, rx924_tgt, $I11, 1
+ ne $S10, "{", rx924_fail
+ add rx924_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx924_cur."!cursor_pos"(rx924_pos)
+ $P10 = rx924_cur."ws"()
+ unless $P10, rx924_fail
+ rx924_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)
+ rx924_cur."!cursor_pos"(rx924_pos)
+ $P10 = rx924_cur."EXPR"()
+ unless $P10, rx924_fail
+ rx924_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx921_pos = $P10."pos"()
+ rx924_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, rx924_pos, 1
+ gt $I11, rx924_eos, rx924_fail
+ sub $I11, rx924_pos, rx924_off
+ substr $S10, rx924_tgt, $I11, 1
+ ne $S10, "}", rx924_fail
+ add rx924_pos, 1
+.annotate "line", 450
# 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)
+ rx924_cur."!cursor_pos"(rx924_pos)
+ $P10 = rx924_cur."O"("%methodop")
+ unless $P10, rx924_fail
+ rx924_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx921_pos = $P10."pos"()
-.annotate "line", 444
+ rx924_pos = $P10."pos"()
+.annotate "line", 448
# 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
+ rx924_cur."!cursor_pass"(rx924_pos, "postcircumfix:sym<{ }>")
+ rx924_cur."!cursor_debug"("PASS ", "postcircumfix:sym<{ }>", " at pos=", rx924_pos)
+ .return (rx924_cur)
+ rx924_fail:
+.annotate "line", 421
+ (rx924_rep, rx924_pos, $I10, $P10) = rx924_cur."!mark_fail"(0)
+ lt rx924_pos, -1, rx924_done
+ eq rx924_pos, -1, rx924_fail
jump $I10
- rx921_done:
- rx921_cur."!cursor_fail"()
- rx921_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<{ }>")
- .return (rx921_cur)
+ rx924_done:
+ rx924_cur."!cursor_fail"()
+ rx924_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<{ }>")
+ .return (rx924_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("228_1271336396.90314") :method
+.annotate "line", 421
+ $P926 = self."!PREFIX__!subrule"("", "{")
+ new $P927, "ResizablePMCArray"
+ push $P927, $P926
+ .return ($P927)
.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("229_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx930_tgt
+ .local int rx930_pos
+ .local int rx930_off
+ .local int rx930_eos
+ .local int rx930_rep
+ .local pmc rx930_cur
+ (rx930_cur, rx930_pos, rx930_tgt) = self."!cursor_start"()
+ rx930_cur."!cursor_debug"("START ", "postcircumfix:sym<ang>")
+ .lex unicode:"$\x{a2}", rx930_cur
+ .local pmc match
+ .lex "$/", match
+ length rx930_eos, rx930_tgt
+ set rx930_off, 0
+ lt rx930_pos, 2, rx930_start
+ sub rx930_off, rx930_pos, 1
+ substr rx930_tgt, rx930_tgt, rx930_off
+ rx930_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan933_done
+ goto rxscan933_scan
+ rxscan933_loop:
+ ($P10) = rx930_cur."from"()
+ inc $P10
+ set rx930_pos, $P10
+ ge rx930_pos, rx930_eos, rxscan933_done
+ rxscan933_scan:
+ set_addr $I10, rxscan933_loop
+ rx930_cur."!mark_push"(0, rx930_pos, $I10)
+ rxscan933_done:
+.annotate "line", 454
# 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 rx930_pos, rx930_eos, rx930_fail
+ sub $I10, rx930_pos, rx930_off
+ substr $S10, rx930_tgt, $I10, 1
index $I11, "<", $S10
- lt $I11, 0, rx927_fail
+ lt $I11, 0, rx930_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)
+ rx930_cur."!cursor_pos"(rx930_pos)
+ $P10 = rx930_cur."quote_EXPR"(":q")
+ unless $P10, rx930_fail
+ rx930_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("quote_EXPR")
- rx927_pos = $P10."pos"()
-.annotate "line", 451
+ rx930_pos = $P10."pos"()
+.annotate "line", 455
# 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)
+ rx930_cur."!cursor_pos"(rx930_pos)
+ $P10 = rx930_cur."O"("%methodop")
+ unless $P10, rx930_fail
+ rx930_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx927_pos = $P10."pos"()
-.annotate "line", 449
+ rx930_pos = $P10."pos"()
+.annotate "line", 453
# 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
+ rx930_cur."!cursor_pass"(rx930_pos, "postcircumfix:sym<ang>")
+ rx930_cur."!cursor_debug"("PASS ", "postcircumfix:sym<ang>", " at pos=", rx930_pos)
+ .return (rx930_cur)
+ rx930_fail:
+.annotate "line", 421
+ (rx930_rep, rx930_pos, $I10, $P10) = rx930_cur."!mark_fail"(0)
+ lt rx930_pos, -1, rx930_done
+ eq rx930_pos, -1, rx930_fail
jump $I10
- rx927_done:
- rx927_cur."!cursor_fail"()
- rx927_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<ang>")
- .return (rx927_cur)
+ rx930_done:
+ rx930_cur."!cursor_fail"()
+ rx930_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<ang>")
+ .return (rx930_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("230_1271336396.90314") :method
+.annotate "line", 421
+ new $P932, "ResizablePMCArray"
+ push $P932, "<"
+ .return ($P932)
.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("231_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .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<( )>")
+ .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, rxscan939_done
+ goto rxscan939_scan
+ rxscan939_loop:
+ ($P10) = rx935_cur."from"()
+ inc $P10
+ set rx935_pos, $P10
+ ge rx935_pos, rx935_eos, rxscan939_done
+ rxscan939_scan:
+ set_addr $I10, rxscan939_loop
+ rx935_cur."!mark_push"(0, rx935_pos, $I10)
+ rxscan939_done:
+.annotate "line", 459
# 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, rx935_pos, 1
+ gt $I11, rx935_eos, rx935_fail
+ sub $I11, rx935_pos, rx935_off
+ substr $S10, rx935_tgt, $I11, 1
+ ne $S10, "(", rx935_fail
+ add rx935_pos, 1
+ # rx subrule "ws" subtype=method negate=
+ rx935_cur."!cursor_pos"(rx935_pos)
+ $P10 = rx935_cur."ws"()
+ unless $P10, rx935_fail
+ rx935_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)
+ rx935_cur."!cursor_pos"(rx935_pos)
+ $P10 = rx935_cur."arglist"()
+ unless $P10, rx935_fail
+ rx935_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx932_pos = $P10."pos"()
+ rx935_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, rx935_pos, 1
+ gt $I11, rx935_eos, rx935_fail
+ sub $I11, rx935_pos, rx935_off
+ substr $S10, rx935_tgt, $I11, 1
+ ne $S10, ")", rx935_fail
+ add rx935_pos, 1
+.annotate "line", 460
# 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)
+ 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")
- rx932_pos = $P10."pos"()
-.annotate "line", 454
+ rx935_pos = $P10."pos"()
+.annotate "line", 458
# 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
+ rx935_cur."!cursor_pass"(rx935_pos, "postcircumfix:sym<( )>")
+ rx935_cur."!cursor_debug"("PASS ", "postcircumfix:sym<( )>", " at pos=", rx935_pos)
+ .return (rx935_cur)
+ rx935_fail:
+.annotate "line", 421
+ (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
- rx932_done:
- rx932_cur."!cursor_fail"()
- rx932_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<( )>")
- .return (rx932_cur)
+ rx935_done:
+ rx935_cur."!cursor_fail"()
+ rx935_cur."!cursor_debug"("FAIL ", "postcircumfix:sym<( )>")
+ .return (rx935_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("232_1271336396.90314") :method
+.annotate "line", 421
+ $P937 = self."!PREFIX__!subrule"("", "(")
+ new $P938, "ResizablePMCArray"
+ push $P938, $P937
+ .return ($P938)
.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("233_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx941_tgt
+ .local int rx941_pos
+ .local int rx941_off
+ .local int rx941_eos
+ .local int rx941_rep
+ .local pmc rx941_cur
+ (rx941_cur, rx941_pos, rx941_tgt) = self."!cursor_start"()
+ rx941_cur."!cursor_debug"("START ", "postfix:sym<.>")
+ .lex unicode:"$\x{a2}", rx941_cur
+ .local pmc match
+ .lex "$/", match
+ length rx941_eos, rx941_tgt
+ set rx941_off, 0
+ lt rx941_pos, 2, rx941_start
+ sub rx941_off, rx941_pos, 1
+ substr rx941_tgt, rx941_tgt, rx941_off
+ rx941_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan945_done
+ goto rxscan945_scan
+ rxscan945_loop:
+ ($P10) = rx941_cur."from"()
+ inc $P10
+ set rx941_pos, $P10
+ ge rx941_pos, rx941_eos, rxscan945_done
+ rxscan945_scan:
+ set_addr $I10, rxscan945_loop
+ rx941_cur."!mark_push"(0, rx941_pos, $I10)
+ rxscan945_done:
+.annotate "line", 463
# 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)
+ rx941_cur."!cursor_pos"(rx941_pos)
+ $P10 = rx941_cur."dotty"()
+ unless $P10, rx941_fail
+ rx941_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("dotty")
- rx938_pos = $P10."pos"()
+ rx941_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)
+ rx941_cur."!cursor_pos"(rx941_pos)
+ $P10 = rx941_cur."O"("%methodop")
+ unless $P10, rx941_fail
+ rx941_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx938_pos = $P10."pos"()
+ rx941_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
+ rx941_cur."!cursor_pass"(rx941_pos, "postfix:sym<.>")
+ rx941_cur."!cursor_debug"("PASS ", "postfix:sym<.>", " at pos=", rx941_pos)
+ .return (rx941_cur)
+ rx941_fail:
+.annotate "line", 421
+ (rx941_rep, rx941_pos, $I10, $P10) = rx941_cur."!mark_fail"(0)
+ lt rx941_pos, -1, rx941_done
+ eq rx941_pos, -1, rx941_fail
jump $I10
- rx938_done:
- rx938_cur."!cursor_fail"()
- rx938_cur."!cursor_debug"("FAIL ", "postfix:sym<.>")
- .return (rx938_cur)
+ rx941_done:
+ rx941_cur."!cursor_fail"()
+ rx941_cur."!cursor_debug"("FAIL ", "postfix:sym<.>")
+ .return (rx941_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("234_1271336396.90314") :method
+.annotate "line", 421
+ $P943 = self."!PREFIX__!subrule"("dotty", "")
+ new $P944, "ResizablePMCArray"
+ push $P944, $P943
+ .return ($P944)
.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("235_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx947_tgt
+ .local int rx947_pos
+ .local int rx947_off
+ .local int rx947_eos
+ .local int rx947_rep
+ .local pmc rx947_cur
+ (rx947_cur, rx947_pos, rx947_tgt) = self."!cursor_start"()
+ rx947_cur."!cursor_debug"("START ", "prefix:sym<++>")
+ .lex unicode:"$\x{a2}", rx947_cur
+ .local pmc match
+ .lex "$/", match
+ length rx947_eos, rx947_tgt
+ set rx947_off, 0
+ lt rx947_pos, 2, rx947_start
+ sub rx947_off, rx947_pos, 1
+ substr rx947_tgt, rx947_tgt, rx947_off
+ rx947_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan951_done
+ goto rxscan951_scan
+ rxscan951_loop:
+ ($P10) = rx947_cur."from"()
+ inc $P10
+ set rx947_pos, $P10
+ ge rx947_pos, rx947_eos, rxscan951_done
+ rxscan951_scan:
+ set_addr $I10, rxscan951_loop
+ rx947_cur."!mark_push"(0, rx947_pos, $I10)
+ rxscan951_done:
+.annotate "line", 465
# rx subcapture "sym"
- set_addr $I10, rxcap_949_fail
- rx944_cur."!mark_push"(0, rx944_pos, $I10)
+ set_addr $I10, rxcap_952_fail
+ rx947_cur."!mark_push"(0, rx947_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, rx947_pos, 2
+ gt $I11, rx947_eos, rx947_fail
+ sub $I11, rx947_pos, rx947_off
+ substr $S10, rx947_tgt, $I11, 2
+ ne $S10, "++", rx947_fail
+ add rx947_pos, 2
+ set_addr $I10, rxcap_952_fail
+ ($I12, $I11) = rx947_cur."!mark_peek"($I10)
+ rx947_cur."!cursor_pos"($I11)
+ ($P10) = rx947_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx947_pos, "")
+ rx947_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_952_done
+ rxcap_952_fail:
+ goto rx947_fail
+ rxcap_952_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)
+ rx947_cur."!cursor_pos"(rx947_pos)
+ $P10 = rx947_cur."O"("%autoincrement, :pirop<inc>")
+ unless $P10, rx947_fail
+ rx947_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx944_pos = $P10."pos"()
+ rx947_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
+ rx947_cur."!cursor_pass"(rx947_pos, "prefix:sym<++>")
+ rx947_cur."!cursor_debug"("PASS ", "prefix:sym<++>", " at pos=", rx947_pos)
+ .return (rx947_cur)
+ rx947_fail:
+.annotate "line", 421
+ (rx947_rep, rx947_pos, $I10, $P10) = rx947_cur."!mark_fail"(0)
+ lt rx947_pos, -1, rx947_done
+ eq rx947_pos, -1, rx947_fail
jump $I10
- rx944_done:
- rx944_cur."!cursor_fail"()
- rx944_cur."!cursor_debug"("FAIL ", "prefix:sym<++>")
- .return (rx944_cur)
+ rx947_done:
+ rx947_cur."!cursor_fail"()
+ rx947_cur."!cursor_debug"("FAIL ", "prefix:sym<++>")
+ .return (rx947_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("236_1271336396.90314") :method
+.annotate "line", 421
+ $P949 = self."!PREFIX__!subrule"("O", "++")
+ new $P950, "ResizablePMCArray"
+ push $P950, $P949
+ .return ($P950)
.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("237_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx954_tgt
+ .local int rx954_pos
+ .local int rx954_off
+ .local int rx954_eos
+ .local int rx954_rep
+ .local pmc rx954_cur
+ (rx954_cur, rx954_pos, rx954_tgt) = self."!cursor_start"()
+ rx954_cur."!cursor_debug"("START ", "prefix:sym<-->")
+ .lex unicode:"$\x{a2}", rx954_cur
+ .local pmc match
+ .lex "$/", match
+ length rx954_eos, rx954_tgt
+ set rx954_off, 0
+ lt rx954_pos, 2, rx954_start
+ sub rx954_off, rx954_pos, 1
+ substr rx954_tgt, rx954_tgt, rx954_off
+ rx954_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan958_done
+ goto rxscan958_scan
+ rxscan958_loop:
+ ($P10) = rx954_cur."from"()
+ inc $P10
+ set rx954_pos, $P10
+ ge rx954_pos, rx954_eos, rxscan958_done
+ rxscan958_scan:
+ set_addr $I10, rxscan958_loop
+ rx954_cur."!mark_push"(0, rx954_pos, $I10)
+ rxscan958_done:
+.annotate "line", 466
# rx subcapture "sym"
- set_addr $I10, rxcap_956_fail
- rx951_cur."!mark_push"(0, rx951_pos, $I10)
+ set_addr $I10, rxcap_959_fail
+ rx954_cur."!mark_push"(0, rx954_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, rx954_pos, 2
+ gt $I11, rx954_eos, rx954_fail
+ sub $I11, rx954_pos, rx954_off
+ substr $S10, rx954_tgt, $I11, 2
+ ne $S10, "--", rx954_fail
+ add rx954_pos, 2
+ set_addr $I10, rxcap_959_fail
+ ($I12, $I11) = rx954_cur."!mark_peek"($I10)
+ rx954_cur."!cursor_pos"($I11)
+ ($P10) = rx954_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx954_pos, "")
+ rx954_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_959_done
+ rxcap_959_fail:
+ goto rx954_fail
+ rxcap_959_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)
+ rx954_cur."!cursor_pos"(rx954_pos)
+ $P10 = rx954_cur."O"("%autoincrement, :pirop<dec>")
+ unless $P10, rx954_fail
+ rx954_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx951_pos = $P10."pos"()
+ rx954_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
+ rx954_cur."!cursor_pass"(rx954_pos, "prefix:sym<-->")
+ rx954_cur."!cursor_debug"("PASS ", "prefix:sym<-->", " at pos=", rx954_pos)
+ .return (rx954_cur)
+ rx954_fail:
+.annotate "line", 421
+ (rx954_rep, rx954_pos, $I10, $P10) = rx954_cur."!mark_fail"(0)
+ lt rx954_pos, -1, rx954_done
+ eq rx954_pos, -1, rx954_fail
jump $I10
- rx951_done:
- rx951_cur."!cursor_fail"()
- rx951_cur."!cursor_debug"("FAIL ", "prefix:sym<-->")
- .return (rx951_cur)
+ rx954_done:
+ rx954_cur."!cursor_fail"()
+ rx954_cur."!cursor_debug"("FAIL ", "prefix:sym<-->")
+ .return (rx954_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("238_1271336396.90314") :method
+.annotate "line", 421
+ $P956 = self."!PREFIX__!subrule"("O", "--")
+ new $P957, "ResizablePMCArray"
+ push $P957, $P956
+ .return ($P957)
.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("239_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx961_tgt
+ .local int rx961_pos
+ .local int rx961_off
+ .local int rx961_eos
+ .local int rx961_rep
+ .local pmc rx961_cur
+ (rx961_cur, rx961_pos, rx961_tgt) = self."!cursor_start"()
+ rx961_cur."!cursor_debug"("START ", "postfix:sym<++>")
+ .lex unicode:"$\x{a2}", rx961_cur
+ .local pmc match
+ .lex "$/", match
+ length rx961_eos, rx961_tgt
+ set rx961_off, 0
+ lt rx961_pos, 2, rx961_start
+ sub rx961_off, rx961_pos, 1
+ substr rx961_tgt, rx961_tgt, rx961_off
+ rx961_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan965_done
+ goto rxscan965_scan
+ rxscan965_loop:
+ ($P10) = rx961_cur."from"()
+ inc $P10
+ set rx961_pos, $P10
+ ge rx961_pos, rx961_eos, rxscan965_done
+ rxscan965_scan:
+ set_addr $I10, rxscan965_loop
+ rx961_cur."!mark_push"(0, rx961_pos, $I10)
+ rxscan965_done:
+.annotate "line", 469
# rx subcapture "sym"
- set_addr $I10, rxcap_963_fail
- rx958_cur."!mark_push"(0, rx958_pos, $I10)
+ set_addr $I10, rxcap_966_fail
+ rx961_cur."!mark_push"(0, rx961_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, rx961_pos, 2
+ gt $I11, rx961_eos, rx961_fail
+ sub $I11, rx961_pos, rx961_off
+ substr $S10, rx961_tgt, $I11, 2
+ ne $S10, "++", rx961_fail
+ add rx961_pos, 2
+ set_addr $I10, rxcap_966_fail
+ ($I12, $I11) = rx961_cur."!mark_peek"($I10)
+ rx961_cur."!cursor_pos"($I11)
+ ($P10) = rx961_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx961_pos, "")
+ rx961_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_966_done
+ rxcap_966_fail:
+ goto rx961_fail
+ rxcap_966_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)
+ rx961_cur."!cursor_pos"(rx961_pos)
+ $P10 = rx961_cur."O"("%autoincrement")
+ unless $P10, rx961_fail
+ rx961_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx958_pos = $P10."pos"()
+ rx961_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
+ rx961_cur."!cursor_pass"(rx961_pos, "postfix:sym<++>")
+ rx961_cur."!cursor_debug"("PASS ", "postfix:sym<++>", " at pos=", rx961_pos)
+ .return (rx961_cur)
+ rx961_fail:
+.annotate "line", 421
+ (rx961_rep, rx961_pos, $I10, $P10) = rx961_cur."!mark_fail"(0)
+ lt rx961_pos, -1, rx961_done
+ eq rx961_pos, -1, rx961_fail
jump $I10
- rx958_done:
- rx958_cur."!cursor_fail"()
- rx958_cur."!cursor_debug"("FAIL ", "postfix:sym<++>")
- .return (rx958_cur)
+ rx961_done:
+ rx961_cur."!cursor_fail"()
+ rx961_cur."!cursor_debug"("FAIL ", "postfix:sym<++>")
+ .return (rx961_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("240_1271336396.90314") :method
+.annotate "line", 421
+ $P963 = self."!PREFIX__!subrule"("O", "++")
+ new $P964, "ResizablePMCArray"
+ push $P964, $P963
+ .return ($P964)
.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("241_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx968_tgt
+ .local int rx968_pos
+ .local int rx968_off
+ .local int rx968_eos
+ .local int rx968_rep
+ .local pmc rx968_cur
+ (rx968_cur, rx968_pos, rx968_tgt) = self."!cursor_start"()
+ rx968_cur."!cursor_debug"("START ", "postfix:sym<-->")
+ .lex unicode:"$\x{a2}", rx968_cur
+ .local pmc match
+ .lex "$/", match
+ length rx968_eos, rx968_tgt
+ set rx968_off, 0
+ lt rx968_pos, 2, rx968_start
+ sub rx968_off, rx968_pos, 1
+ substr rx968_tgt, rx968_tgt, rx968_off
+ rx968_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan972_done
+ goto rxscan972_scan
+ rxscan972_loop:
+ ($P10) = rx968_cur."from"()
+ inc $P10
+ set rx968_pos, $P10
+ ge rx968_pos, rx968_eos, rxscan972_done
+ rxscan972_scan:
+ set_addr $I10, rxscan972_loop
+ rx968_cur."!mark_push"(0, rx968_pos, $I10)
+ rxscan972_done:
+.annotate "line", 470
# rx subcapture "sym"
- set_addr $I10, rxcap_970_fail
- rx965_cur."!mark_push"(0, rx965_pos, $I10)
+ set_addr $I10, rxcap_973_fail
+ rx968_cur."!mark_push"(0, rx968_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, rx968_pos, 2
+ gt $I11, rx968_eos, rx968_fail
+ sub $I11, rx968_pos, rx968_off
+ substr $S10, rx968_tgt, $I11, 2
+ ne $S10, "--", rx968_fail
+ add rx968_pos, 2
+ set_addr $I10, rxcap_973_fail
+ ($I12, $I11) = rx968_cur."!mark_peek"($I10)
+ rx968_cur."!cursor_pos"($I11)
+ ($P10) = rx968_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx968_pos, "")
+ rx968_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_973_done
+ rxcap_973_fail:
+ goto rx968_fail
+ rxcap_973_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)
+ rx968_cur."!cursor_pos"(rx968_pos)
+ $P10 = rx968_cur."O"("%autoincrement")
+ unless $P10, rx968_fail
+ rx968_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx965_pos = $P10."pos"()
+ rx968_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
+ rx968_cur."!cursor_pass"(rx968_pos, "postfix:sym<-->")
+ rx968_cur."!cursor_debug"("PASS ", "postfix:sym<-->", " at pos=", rx968_pos)
+ .return (rx968_cur)
+ rx968_fail:
+.annotate "line", 421
+ (rx968_rep, rx968_pos, $I10, $P10) = rx968_cur."!mark_fail"(0)
+ lt rx968_pos, -1, rx968_done
+ eq rx968_pos, -1, rx968_fail
jump $I10
- rx965_done:
- rx965_cur."!cursor_fail"()
- rx965_cur."!cursor_debug"("FAIL ", "postfix:sym<-->")
- .return (rx965_cur)
+ rx968_done:
+ rx968_cur."!cursor_fail"()
+ rx968_cur."!cursor_debug"("FAIL ", "postfix:sym<-->")
+ .return (rx968_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("242_1271336396.90314") :method
+.annotate "line", 421
+ $P970 = self."!PREFIX__!subrule"("O", "--")
+ new $P971, "ResizablePMCArray"
+ push $P971, $P970
+ .return ($P971)
.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("243_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx975_tgt
+ .local int rx975_pos
+ .local int rx975_off
+ .local int rx975_eos
+ .local int rx975_rep
+ .local pmc rx975_cur
+ (rx975_cur, rx975_pos, rx975_tgt) = self."!cursor_start"()
+ rx975_cur."!cursor_debug"("START ", "infix:sym<**>")
+ .lex unicode:"$\x{a2}", rx975_cur
+ .local pmc match
+ .lex "$/", match
+ length rx975_eos, rx975_tgt
+ set rx975_off, 0
+ lt rx975_pos, 2, rx975_start
+ sub rx975_off, rx975_pos, 1
+ substr rx975_tgt, rx975_tgt, rx975_off
+ rx975_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan979_done
+ goto rxscan979_scan
+ rxscan979_loop:
+ ($P10) = rx975_cur."from"()
+ inc $P10
+ set rx975_pos, $P10
+ ge rx975_pos, rx975_eos, rxscan979_done
+ rxscan979_scan:
+ set_addr $I10, rxscan979_loop
+ rx975_cur."!mark_push"(0, rx975_pos, $I10)
+ rxscan979_done:
+.annotate "line", 472
# rx subcapture "sym"
- set_addr $I10, rxcap_977_fail
- rx972_cur."!mark_push"(0, rx972_pos, $I10)
+ set_addr $I10, rxcap_980_fail
+ rx975_cur."!mark_push"(0, rx975_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, rx975_pos, 2
+ gt $I11, rx975_eos, rx975_fail
+ sub $I11, rx975_pos, rx975_off
+ substr $S10, rx975_tgt, $I11, 2
+ ne $S10, "**", rx975_fail
+ add rx975_pos, 2
+ set_addr $I10, rxcap_980_fail
+ ($I12, $I11) = rx975_cur."!mark_peek"($I10)
+ rx975_cur."!cursor_pos"($I11)
+ ($P10) = rx975_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx975_pos, "")
+ rx975_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_980_done
+ rxcap_980_fail:
+ goto rx975_fail
+ rxcap_980_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)
+ rx975_cur."!cursor_pos"(rx975_pos)
+ $P10 = rx975_cur."O"("%exponentiation, :pirop<pow>")
+ unless $P10, rx975_fail
+ rx975_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx972_pos = $P10."pos"()
+ rx975_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
+ rx975_cur."!cursor_pass"(rx975_pos, "infix:sym<**>")
+ rx975_cur."!cursor_debug"("PASS ", "infix:sym<**>", " at pos=", rx975_pos)
+ .return (rx975_cur)
+ rx975_fail:
+.annotate "line", 421
+ (rx975_rep, rx975_pos, $I10, $P10) = rx975_cur."!mark_fail"(0)
+ lt rx975_pos, -1, rx975_done
+ eq rx975_pos, -1, rx975_fail
jump $I10
- rx972_done:
- rx972_cur."!cursor_fail"()
- rx972_cur."!cursor_debug"("FAIL ", "infix:sym<**>")
- .return (rx972_cur)
+ rx975_done:
+ rx975_cur."!cursor_fail"()
+ rx975_cur."!cursor_debug"("FAIL ", "infix:sym<**>")
+ .return (rx975_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("244_1271336396.90314") :method
+.annotate "line", 421
+ $P977 = self."!PREFIX__!subrule"("O", "**")
+ new $P978, "ResizablePMCArray"
+ push $P978, $P977
+ .return ($P978)
.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("245_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx982_tgt
+ .local int rx982_pos
+ .local int rx982_off
+ .local int rx982_eos
+ .local int rx982_rep
+ .local pmc rx982_cur
+ (rx982_cur, rx982_pos, rx982_tgt) = self."!cursor_start"()
+ rx982_cur."!cursor_debug"("START ", "prefix:sym<+>")
+ .lex unicode:"$\x{a2}", rx982_cur
+ .local pmc match
+ .lex "$/", match
+ length rx982_eos, rx982_tgt
+ set rx982_off, 0
+ lt rx982_pos, 2, rx982_start
+ sub rx982_off, rx982_pos, 1
+ substr rx982_tgt, rx982_tgt, rx982_off
+ rx982_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan986_done
+ goto rxscan986_scan
+ rxscan986_loop:
+ ($P10) = rx982_cur."from"()
+ inc $P10
+ set rx982_pos, $P10
+ ge rx982_pos, rx982_eos, rxscan986_done
+ rxscan986_scan:
+ set_addr $I10, rxscan986_loop
+ rx982_cur."!mark_push"(0, rx982_pos, $I10)
+ rxscan986_done:
+.annotate "line", 474
# rx subcapture "sym"
- set_addr $I10, rxcap_984_fail
- rx979_cur."!mark_push"(0, rx979_pos, $I10)
+ set_addr $I10, rxcap_987_fail
+ rx982_cur."!mark_push"(0, rx982_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, rx982_pos, 1
+ gt $I11, rx982_eos, rx982_fail
+ sub $I11, rx982_pos, rx982_off
+ substr $S10, rx982_tgt, $I11, 1
+ ne $S10, "+", rx982_fail
+ add rx982_pos, 1
+ set_addr $I10, rxcap_987_fail
+ ($I12, $I11) = rx982_cur."!mark_peek"($I10)
+ rx982_cur."!cursor_pos"($I11)
+ ($P10) = rx982_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx982_pos, "")
+ rx982_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_987_done
+ rxcap_987_fail:
+ goto rx982_fail
+ rxcap_987_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)
+ rx982_cur."!cursor_pos"(rx982_pos)
+ $P10 = rx982_cur."O"("%symbolic_unary, :pirop<set N*>")
+ unless $P10, rx982_fail
+ rx982_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx979_pos = $P10."pos"()
+ rx982_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
+ rx982_cur."!cursor_pass"(rx982_pos, "prefix:sym<+>")
+ rx982_cur."!cursor_debug"("PASS ", "prefix:sym<+>", " at pos=", rx982_pos)
+ .return (rx982_cur)
+ rx982_fail:
+.annotate "line", 421
+ (rx982_rep, rx982_pos, $I10, $P10) = rx982_cur."!mark_fail"(0)
+ lt rx982_pos, -1, rx982_done
+ eq rx982_pos, -1, rx982_fail
jump $I10
- rx979_done:
- rx979_cur."!cursor_fail"()
- rx979_cur."!cursor_debug"("FAIL ", "prefix:sym<+>")
- .return (rx979_cur)
+ rx982_done:
+ rx982_cur."!cursor_fail"()
+ rx982_cur."!cursor_debug"("FAIL ", "prefix:sym<+>")
+ .return (rx982_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("246_1271336396.90314") :method
+.annotate "line", 421
+ $P984 = self."!PREFIX__!subrule"("O", "+")
+ new $P985, "ResizablePMCArray"
+ push $P985, $P984
+ .return ($P985)
.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("247_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx989_tgt
+ .local int rx989_pos
+ .local int rx989_off
+ .local int rx989_eos
+ .local int rx989_rep
+ .local pmc rx989_cur
+ (rx989_cur, rx989_pos, rx989_tgt) = self."!cursor_start"()
+ rx989_cur."!cursor_debug"("START ", "prefix:sym<~>")
+ .lex unicode:"$\x{a2}", rx989_cur
+ .local pmc match
+ .lex "$/", match
+ length rx989_eos, rx989_tgt
+ set rx989_off, 0
+ lt rx989_pos, 2, rx989_start
+ sub rx989_off, rx989_pos, 1
+ substr rx989_tgt, rx989_tgt, rx989_off
+ rx989_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan993_done
+ goto rxscan993_scan
+ rxscan993_loop:
+ ($P10) = rx989_cur."from"()
+ inc $P10
+ set rx989_pos, $P10
+ ge rx989_pos, rx989_eos, rxscan993_done
+ rxscan993_scan:
+ set_addr $I10, rxscan993_loop
+ rx989_cur."!mark_push"(0, rx989_pos, $I10)
+ rxscan993_done:
+.annotate "line", 475
# rx subcapture "sym"
- set_addr $I10, rxcap_991_fail
- rx986_cur."!mark_push"(0, rx986_pos, $I10)
+ set_addr $I10, rxcap_994_fail
+ rx989_cur."!mark_push"(0, rx989_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, rx989_pos, 1
+ gt $I11, rx989_eos, rx989_fail
+ sub $I11, rx989_pos, rx989_off
+ substr $S10, rx989_tgt, $I11, 1
+ ne $S10, "~", rx989_fail
+ add rx989_pos, 1
+ set_addr $I10, rxcap_994_fail
+ ($I12, $I11) = rx989_cur."!mark_peek"($I10)
+ rx989_cur."!cursor_pos"($I11)
+ ($P10) = rx989_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx989_pos, "")
+ rx989_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_994_done
+ rxcap_994_fail:
+ goto rx989_fail
+ rxcap_994_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)
+ rx989_cur."!cursor_pos"(rx989_pos)
+ $P10 = rx989_cur."O"("%symbolic_unary, :pirop<set S*>")
+ unless $P10, rx989_fail
+ rx989_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx986_pos = $P10."pos"()
+ rx989_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
+ rx989_cur."!cursor_pass"(rx989_pos, "prefix:sym<~>")
+ rx989_cur."!cursor_debug"("PASS ", "prefix:sym<~>", " at pos=", rx989_pos)
+ .return (rx989_cur)
+ rx989_fail:
+.annotate "line", 421
+ (rx989_rep, rx989_pos, $I10, $P10) = rx989_cur."!mark_fail"(0)
+ lt rx989_pos, -1, rx989_done
+ eq rx989_pos, -1, rx989_fail
jump $I10
- rx986_done:
- rx986_cur."!cursor_fail"()
- rx986_cur."!cursor_debug"("FAIL ", "prefix:sym<~>")
- .return (rx986_cur)
+ rx989_done:
+ rx989_cur."!cursor_fail"()
+ rx989_cur."!cursor_debug"("FAIL ", "prefix:sym<~>")
+ .return (rx989_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("248_1271336396.90314") :method
+.annotate "line", 421
+ $P991 = self."!PREFIX__!subrule"("O", "~")
+ new $P992, "ResizablePMCArray"
+ push $P992, $P991
+ .return ($P992)
.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("249_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx996_tgt
+ .local int rx996_pos
+ .local int rx996_off
+ .local int rx996_eos
+ .local int rx996_rep
+ .local pmc rx996_cur
+ (rx996_cur, rx996_pos, rx996_tgt) = self."!cursor_start"()
+ rx996_cur."!cursor_debug"("START ", "prefix:sym<->")
+ .lex unicode:"$\x{a2}", rx996_cur
+ .local pmc match
+ .lex "$/", match
+ length rx996_eos, rx996_tgt
+ set rx996_off, 0
+ lt rx996_pos, 2, rx996_start
+ sub rx996_off, rx996_pos, 1
+ substr rx996_tgt, rx996_tgt, rx996_off
+ rx996_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan999_done
+ goto rxscan999_scan
+ rxscan999_loop:
+ ($P10) = rx996_cur."from"()
+ inc $P10
+ set rx996_pos, $P10
+ ge rx996_pos, rx996_eos, rxscan999_done
+ rxscan999_scan:
+ set_addr $I10, rxscan999_loop
+ rx996_cur."!mark_push"(0, rx996_pos, $I10)
+ rxscan999_done:
+.annotate "line", 476
# rx subcapture "sym"
- set_addr $I10, rxcap_997_fail
- rx993_cur."!mark_push"(0, rx993_pos, $I10)
+ set_addr $I10, rxcap_1000_fail
+ rx996_cur."!mark_push"(0, rx996_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, rx996_pos, 1
+ gt $I11, rx996_eos, rx996_fail
+ sub $I11, rx996_pos, rx996_off
+ substr $S10, rx996_tgt, $I11, 1
+ ne $S10, "-", rx996_fail
+ add rx996_pos, 1
+ set_addr $I10, rxcap_1000_fail
+ ($I12, $I11) = rx996_cur."!mark_peek"($I10)
+ rx996_cur."!cursor_pos"($I11)
+ ($P10) = rx996_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx996_pos, "")
+ rx996_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_1000_done
+ rxcap_1000_fail:
+ goto rx996_fail
+ rxcap_1000_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 rx996_pos, rx996_eos, rx996_fail
+ sub $I10, rx996_pos, rx996_off
+ substr $S10, rx996_tgt, $I10, 1
index $I11, ">", $S10
- ge $I11, 0, rx993_fail
+ ge $I11, 0, rx996_fail
# rx subrule "number" subtype=zerowidth negate=1
- rx993_cur."!cursor_pos"(rx993_pos)
- $P10 = rx993_cur."number"()
- if $P10, rx993_fail
+ rx996_cur."!cursor_pos"(rx996_pos)
+ $P10 = rx996_cur."number"()
+ if $P10, rx996_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)
+ rx996_cur."!cursor_pos"(rx996_pos)
+ $P10 = rx996_cur."O"("%symbolic_unary, :pirop<neg>")
+ unless $P10, rx996_fail
+ rx996_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx993_pos = $P10."pos"()
+ rx996_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
+ rx996_cur."!cursor_pass"(rx996_pos, "prefix:sym<->")
+ rx996_cur."!cursor_debug"("PASS ", "prefix:sym<->", " at pos=", rx996_pos)
+ .return (rx996_cur)
+ rx996_fail:
+.annotate "line", 421
+ (rx996_rep, rx996_pos, $I10, $P10) = rx996_cur."!mark_fail"(0)
+ lt rx996_pos, -1, rx996_done
+ eq rx996_pos, -1, rx996_fail
jump $I10
- rx993_done:
- rx993_cur."!cursor_fail"()
- rx993_cur."!cursor_debug"("FAIL ", "prefix:sym<->")
- .return (rx993_cur)
+ rx996_done:
+ rx996_cur."!cursor_fail"()
+ rx996_cur."!cursor_debug"("FAIL ", "prefix:sym<->")
+ .return (rx996_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("250_1271336396.90314") :method
+.annotate "line", 421
+ new $P998, "ResizablePMCArray"
+ push $P998, "-"
+ .return ($P998)
.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("251_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1002_tgt
+ .local int rx1002_pos
+ .local int rx1002_off
+ .local int rx1002_eos
+ .local int rx1002_rep
+ .local pmc rx1002_cur
+ (rx1002_cur, rx1002_pos, rx1002_tgt) = self."!cursor_start"()
+ rx1002_cur."!cursor_debug"("START ", "prefix:sym<?>")
+ .lex unicode:"$\x{a2}", rx1002_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1002_eos, rx1002_tgt
+ set rx1002_off, 0
+ lt rx1002_pos, 2, rx1002_start
+ sub rx1002_off, rx1002_pos, 1
+ substr rx1002_tgt, rx1002_tgt, rx1002_off
+ rx1002_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1006_done
+ goto rxscan1006_scan
+ rxscan1006_loop:
+ ($P10) = rx1002_cur."from"()
+ inc $P10
+ set rx1002_pos, $P10
+ ge rx1002_pos, rx1002_eos, rxscan1006_done
+ rxscan1006_scan:
+ set_addr $I10, rxscan1006_loop
+ rx1002_cur."!mark_push"(0, rx1002_pos, $I10)
+ rxscan1006_done:
+.annotate "line", 477
# rx subcapture "sym"
- set_addr $I10, rxcap_1004_fail
- rx999_cur."!mark_push"(0, rx999_pos, $I10)
+ set_addr $I10, rxcap_1007_fail
+ rx1002_cur."!mark_push"(0, rx1002_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, rx1002_pos, 1
+ gt $I11, rx1002_eos, rx1002_fail
+ sub $I11, rx1002_pos, rx1002_off
+ substr $S10, rx1002_tgt, $I11, 1
+ ne $S10, "?", rx1002_fail
+ add rx1002_pos, 1
+ set_addr $I10, rxcap_1007_fail
+ ($I12, $I11) = rx1002_cur."!mark_peek"($I10)
+ rx1002_cur."!cursor_pos"($I11)
+ ($P10) = rx1002_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1002_pos, "")
+ rx1002_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_1007_done
+ rxcap_1007_fail:
+ goto rx1002_fail
+ rxcap_1007_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)
+ rx1002_cur."!cursor_pos"(rx1002_pos)
+ $P10 = rx1002_cur."O"("%symbolic_unary, :pirop<istrue>")
+ unless $P10, rx1002_fail
+ rx1002_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx999_pos = $P10."pos"()
+ rx1002_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
+ rx1002_cur."!cursor_pass"(rx1002_pos, "prefix:sym<?>")
+ rx1002_cur."!cursor_debug"("PASS ", "prefix:sym<?>", " at pos=", rx1002_pos)
+ .return (rx1002_cur)
+ rx1002_fail:
+.annotate "line", 421
+ (rx1002_rep, rx1002_pos, $I10, $P10) = rx1002_cur."!mark_fail"(0)
+ lt rx1002_pos, -1, rx1002_done
+ eq rx1002_pos, -1, rx1002_fail
jump $I10
- rx999_done:
- rx999_cur."!cursor_fail"()
- rx999_cur."!cursor_debug"("FAIL ", "prefix:sym<?>")
- .return (rx999_cur)
+ rx1002_done:
+ rx1002_cur."!cursor_fail"()
+ rx1002_cur."!cursor_debug"("FAIL ", "prefix:sym<?>")
+ .return (rx1002_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("252_1271336396.90314") :method
+.annotate "line", 421
+ $P1004 = self."!PREFIX__!subrule"("O", "?")
+ new $P1005, "ResizablePMCArray"
+ push $P1005, $P1004
+ .return ($P1005)
.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("253_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1009_tgt
+ .local int rx1009_pos
+ .local int rx1009_off
+ .local int rx1009_eos
+ .local int rx1009_rep
+ .local pmc rx1009_cur
+ (rx1009_cur, rx1009_pos, rx1009_tgt) = self."!cursor_start"()
+ rx1009_cur."!cursor_debug"("START ", "prefix:sym<!>")
+ .lex unicode:"$\x{a2}", rx1009_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1009_eos, rx1009_tgt
+ set rx1009_off, 0
+ lt rx1009_pos, 2, rx1009_start
+ sub rx1009_off, rx1009_pos, 1
+ substr rx1009_tgt, rx1009_tgt, rx1009_off
+ rx1009_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1013_done
+ goto rxscan1013_scan
+ rxscan1013_loop:
+ ($P10) = rx1009_cur."from"()
+ inc $P10
+ set rx1009_pos, $P10
+ ge rx1009_pos, rx1009_eos, rxscan1013_done
+ rxscan1013_scan:
+ set_addr $I10, rxscan1013_loop
+ rx1009_cur."!mark_push"(0, rx1009_pos, $I10)
+ rxscan1013_done:
+.annotate "line", 478
# rx subcapture "sym"
- set_addr $I10, rxcap_1011_fail
- rx1006_cur."!mark_push"(0, rx1006_pos, $I10)
+ set_addr $I10, rxcap_1014_fail
+ rx1009_cur."!mark_push"(0, rx1009_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, rx1009_pos, 1
+ gt $I11, rx1009_eos, rx1009_fail
+ sub $I11, rx1009_pos, rx1009_off
+ substr $S10, rx1009_tgt, $I11, 1
+ ne $S10, "!", rx1009_fail
+ add rx1009_pos, 1
+ set_addr $I10, rxcap_1014_fail
+ ($I12, $I11) = rx1009_cur."!mark_peek"($I10)
+ rx1009_cur."!cursor_pos"($I11)
+ ($P10) = rx1009_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1009_pos, "")
+ rx1009_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_1014_done
+ rxcap_1014_fail:
+ goto rx1009_fail
+ rxcap_1014_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)
+ rx1009_cur."!cursor_pos"(rx1009_pos)
+ $P10 = rx1009_cur."O"("%symbolic_unary, :pirop<isfalse>")
+ unless $P10, rx1009_fail
+ rx1009_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1006_pos = $P10."pos"()
+ rx1009_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
+ rx1009_cur."!cursor_pass"(rx1009_pos, "prefix:sym<!>")
+ rx1009_cur."!cursor_debug"("PASS ", "prefix:sym<!>", " at pos=", rx1009_pos)
+ .return (rx1009_cur)
+ rx1009_fail:
+.annotate "line", 421
+ (rx1009_rep, rx1009_pos, $I10, $P10) = rx1009_cur."!mark_fail"(0)
+ lt rx1009_pos, -1, rx1009_done
+ eq rx1009_pos, -1, rx1009_fail
jump $I10
- rx1006_done:
- rx1006_cur."!cursor_fail"()
- rx1006_cur."!cursor_debug"("FAIL ", "prefix:sym<!>")
- .return (rx1006_cur)
+ rx1009_done:
+ rx1009_cur."!cursor_fail"()
+ rx1009_cur."!cursor_debug"("FAIL ", "prefix:sym<!>")
+ .return (rx1009_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("254_1271336396.90314") :method
+.annotate "line", 421
+ $P1011 = self."!PREFIX__!subrule"("O", "!")
+ new $P1012, "ResizablePMCArray"
+ push $P1012, $P1011
+ .return ($P1012)
.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("255_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1016_tgt
+ .local int rx1016_pos
+ .local int rx1016_off
+ .local int rx1016_eos
+ .local int rx1016_rep
+ .local pmc rx1016_cur
+ (rx1016_cur, rx1016_pos, rx1016_tgt) = self."!cursor_start"()
+ rx1016_cur."!cursor_debug"("START ", "prefix:sym<|>")
+ .lex unicode:"$\x{a2}", rx1016_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1016_eos, rx1016_tgt
+ set rx1016_off, 0
+ lt rx1016_pos, 2, rx1016_start
+ sub rx1016_off, rx1016_pos, 1
+ substr rx1016_tgt, rx1016_tgt, rx1016_off
+ rx1016_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1020_done
+ goto rxscan1020_scan
+ rxscan1020_loop:
+ ($P10) = rx1016_cur."from"()
+ inc $P10
+ set rx1016_pos, $P10
+ ge rx1016_pos, rx1016_eos, rxscan1020_done
+ rxscan1020_scan:
+ set_addr $I10, rxscan1020_loop
+ rx1016_cur."!mark_push"(0, rx1016_pos, $I10)
+ rxscan1020_done:
+.annotate "line", 479
# rx subcapture "sym"
- set_addr $I10, rxcap_1018_fail
- rx1013_cur."!mark_push"(0, rx1013_pos, $I10)
+ set_addr $I10, rxcap_1021_fail
+ rx1016_cur."!mark_push"(0, rx1016_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, rx1016_pos, 1
+ gt $I11, rx1016_eos, rx1016_fail
+ sub $I11, rx1016_pos, rx1016_off
+ substr $S10, rx1016_tgt, $I11, 1
+ ne $S10, "|", rx1016_fail
+ add rx1016_pos, 1
+ set_addr $I10, rxcap_1021_fail
+ ($I12, $I11) = rx1016_cur."!mark_peek"($I10)
+ rx1016_cur."!cursor_pos"($I11)
+ ($P10) = rx1016_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1016_pos, "")
+ rx1016_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_1021_done
+ rxcap_1021_fail:
+ goto rx1016_fail
+ rxcap_1021_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)
+ rx1016_cur."!cursor_pos"(rx1016_pos)
+ $P10 = rx1016_cur."O"("%symbolic_unary")
+ unless $P10, rx1016_fail
+ rx1016_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1013_pos = $P10."pos"()
+ rx1016_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
+ rx1016_cur."!cursor_pass"(rx1016_pos, "prefix:sym<|>")
+ rx1016_cur."!cursor_debug"("PASS ", "prefix:sym<|>", " at pos=", rx1016_pos)
+ .return (rx1016_cur)
+ rx1016_fail:
+.annotate "line", 421
+ (rx1016_rep, rx1016_pos, $I10, $P10) = rx1016_cur."!mark_fail"(0)
+ lt rx1016_pos, -1, rx1016_done
+ eq rx1016_pos, -1, rx1016_fail
jump $I10
- rx1013_done:
- rx1013_cur."!cursor_fail"()
- rx1013_cur."!cursor_debug"("FAIL ", "prefix:sym<|>")
- .return (rx1013_cur)
+ rx1016_done:
+ rx1016_cur."!cursor_fail"()
+ rx1016_cur."!cursor_debug"("FAIL ", "prefix:sym<|>")
+ .return (rx1016_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("256_1271336396.90314") :method
+.annotate "line", 421
+ $P1018 = self."!PREFIX__!subrule"("O", "|")
+ new $P1019, "ResizablePMCArray"
+ push $P1019, $P1018
+ .return ($P1019)
.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("257_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1023_tgt
+ .local int rx1023_pos
+ .local int rx1023_off
+ .local int rx1023_eos
+ .local int rx1023_rep
+ .local pmc rx1023_cur
+ (rx1023_cur, rx1023_pos, rx1023_tgt) = self."!cursor_start"()
+ rx1023_cur."!cursor_debug"("START ", "infix:sym<*>")
+ .lex unicode:"$\x{a2}", rx1023_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1023_eos, rx1023_tgt
+ set rx1023_off, 0
+ lt rx1023_pos, 2, rx1023_start
+ sub rx1023_off, rx1023_pos, 1
+ substr rx1023_tgt, rx1023_tgt, rx1023_off
+ rx1023_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1027_done
+ goto rxscan1027_scan
+ rxscan1027_loop:
+ ($P10) = rx1023_cur."from"()
+ inc $P10
+ set rx1023_pos, $P10
+ ge rx1023_pos, rx1023_eos, rxscan1027_done
+ rxscan1027_scan:
+ set_addr $I10, rxscan1027_loop
+ rx1023_cur."!mark_push"(0, rx1023_pos, $I10)
+ rxscan1027_done:
+.annotate "line", 481
# rx subcapture "sym"
- set_addr $I10, rxcap_1025_fail
- rx1020_cur."!mark_push"(0, rx1020_pos, $I10)
+ set_addr $I10, rxcap_1028_fail
+ rx1023_cur."!mark_push"(0, rx1023_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, rx1023_pos, 1
+ gt $I11, rx1023_eos, rx1023_fail
+ sub $I11, rx1023_pos, rx1023_off
+ substr $S10, rx1023_tgt, $I11, 1
+ ne $S10, "*", rx1023_fail
+ add rx1023_pos, 1
+ set_addr $I10, rxcap_1028_fail
+ ($I12, $I11) = rx1023_cur."!mark_peek"($I10)
+ rx1023_cur."!cursor_pos"($I11)
+ ($P10) = rx1023_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1023_pos, "")
+ rx1023_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_1028_done
+ rxcap_1028_fail:
+ goto rx1023_fail
+ rxcap_1028_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)
+ rx1023_cur."!cursor_pos"(rx1023_pos)
+ $P10 = rx1023_cur."O"("%multiplicative, :pirop<mul>")
+ unless $P10, rx1023_fail
+ rx1023_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1020_pos = $P10."pos"()
+ rx1023_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
+ rx1023_cur."!cursor_pass"(rx1023_pos, "infix:sym<*>")
+ rx1023_cur."!cursor_debug"("PASS ", "infix:sym<*>", " at pos=", rx1023_pos)
+ .return (rx1023_cur)
+ rx1023_fail:
+.annotate "line", 421
+ (rx1023_rep, rx1023_pos, $I10, $P10) = rx1023_cur."!mark_fail"(0)
+ lt rx1023_pos, -1, rx1023_done
+ eq rx1023_pos, -1, rx1023_fail
jump $I10
- rx1020_done:
- rx1020_cur."!cursor_fail"()
- rx1020_cur."!cursor_debug"("FAIL ", "infix:sym<*>")
- .return (rx1020_cur)
+ rx1023_done:
+ rx1023_cur."!cursor_fail"()
+ rx1023_cur."!cursor_debug"("FAIL ", "infix:sym<*>")
+ .return (rx1023_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("258_1271336396.90314") :method
+.annotate "line", 421
+ $P1025 = self."!PREFIX__!subrule"("O", "*")
+ new $P1026, "ResizablePMCArray"
+ push $P1026, $P1025
+ .return ($P1026)
.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("259_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1030_tgt
+ .local int rx1030_pos
+ .local int rx1030_off
+ .local int rx1030_eos
+ .local int rx1030_rep
+ .local pmc rx1030_cur
+ (rx1030_cur, rx1030_pos, rx1030_tgt) = self."!cursor_start"()
+ rx1030_cur."!cursor_debug"("START ", "infix:sym</>")
+ .lex unicode:"$\x{a2}", rx1030_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1030_eos, rx1030_tgt
+ set rx1030_off, 0
+ lt rx1030_pos, 2, rx1030_start
+ sub rx1030_off, rx1030_pos, 1
+ substr rx1030_tgt, rx1030_tgt, rx1030_off
+ rx1030_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1034_done
+ goto rxscan1034_scan
+ rxscan1034_loop:
+ ($P10) = rx1030_cur."from"()
+ inc $P10
+ set rx1030_pos, $P10
+ ge rx1030_pos, rx1030_eos, rxscan1034_done
+ rxscan1034_scan:
+ set_addr $I10, rxscan1034_loop
+ rx1030_cur."!mark_push"(0, rx1030_pos, $I10)
+ rxscan1034_done:
+.annotate "line", 482
# rx subcapture "sym"
- set_addr $I10, rxcap_1032_fail
- rx1027_cur."!mark_push"(0, rx1027_pos, $I10)
+ set_addr $I10, rxcap_1035_fail
+ rx1030_cur."!mark_push"(0, rx1030_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, rx1030_pos, 1
+ gt $I11, rx1030_eos, rx1030_fail
+ sub $I11, rx1030_pos, rx1030_off
+ substr $S10, rx1030_tgt, $I11, 1
+ ne $S10, "/", rx1030_fail
+ add rx1030_pos, 1
+ set_addr $I10, rxcap_1035_fail
+ ($I12, $I11) = rx1030_cur."!mark_peek"($I10)
+ rx1030_cur."!cursor_pos"($I11)
+ ($P10) = rx1030_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1030_pos, "")
+ rx1030_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_1035_done
+ rxcap_1035_fail:
+ goto rx1030_fail
+ rxcap_1035_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)
+ rx1030_cur."!cursor_pos"(rx1030_pos)
+ $P10 = rx1030_cur."O"("%multiplicative, :pirop<div>")
+ unless $P10, rx1030_fail
+ rx1030_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1027_pos = $P10."pos"()
+ rx1030_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
+ rx1030_cur."!cursor_pass"(rx1030_pos, "infix:sym</>")
+ rx1030_cur."!cursor_debug"("PASS ", "infix:sym</>", " at pos=", rx1030_pos)
+ .return (rx1030_cur)
+ rx1030_fail:
+.annotate "line", 421
+ (rx1030_rep, rx1030_pos, $I10, $P10) = rx1030_cur."!mark_fail"(0)
+ lt rx1030_pos, -1, rx1030_done
+ eq rx1030_pos, -1, rx1030_fail
jump $I10
- rx1027_done:
- rx1027_cur."!cursor_fail"()
- rx1027_cur."!cursor_debug"("FAIL ", "infix:sym</>")
- .return (rx1027_cur)
+ rx1030_done:
+ rx1030_cur."!cursor_fail"()
+ rx1030_cur."!cursor_debug"("FAIL ", "infix:sym</>")
+ .return (rx1030_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("260_1271336396.90314") :method
+.annotate "line", 421
+ $P1032 = self."!PREFIX__!subrule"("O", "/")
+ new $P1033, "ResizablePMCArray"
+ push $P1033, $P1032
+ .return ($P1033)
.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("261_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1037_tgt
+ .local int rx1037_pos
+ .local int rx1037_off
+ .local int rx1037_eos
+ .local int rx1037_rep
+ .local pmc rx1037_cur
+ (rx1037_cur, rx1037_pos, rx1037_tgt) = self."!cursor_start"()
+ rx1037_cur."!cursor_debug"("START ", "infix:sym<%>")
+ .lex unicode:"$\x{a2}", rx1037_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1037_eos, rx1037_tgt
+ set rx1037_off, 0
+ lt rx1037_pos, 2, rx1037_start
+ sub rx1037_off, rx1037_pos, 1
+ substr rx1037_tgt, rx1037_tgt, rx1037_off
+ rx1037_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1041_done
+ goto rxscan1041_scan
+ rxscan1041_loop:
+ ($P10) = rx1037_cur."from"()
+ inc $P10
+ set rx1037_pos, $P10
+ ge rx1037_pos, rx1037_eos, rxscan1041_done
+ rxscan1041_scan:
+ set_addr $I10, rxscan1041_loop
+ rx1037_cur."!mark_push"(0, rx1037_pos, $I10)
+ rxscan1041_done:
+.annotate "line", 483
# rx subcapture "sym"
- set_addr $I10, rxcap_1039_fail
- rx1034_cur."!mark_push"(0, rx1034_pos, $I10)
+ set_addr $I10, rxcap_1042_fail
+ rx1037_cur."!mark_push"(0, rx1037_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, rx1037_pos, 1
+ gt $I11, rx1037_eos, rx1037_fail
+ sub $I11, rx1037_pos, rx1037_off
+ substr $S10, rx1037_tgt, $I11, 1
+ ne $S10, "%", rx1037_fail
+ add rx1037_pos, 1
+ set_addr $I10, rxcap_1042_fail
+ ($I12, $I11) = rx1037_cur."!mark_peek"($I10)
+ rx1037_cur."!cursor_pos"($I11)
+ ($P10) = rx1037_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1037_pos, "")
+ rx1037_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_1042_done
+ rxcap_1042_fail:
+ goto rx1037_fail
+ rxcap_1042_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)
+ rx1037_cur."!cursor_pos"(rx1037_pos)
+ $P10 = rx1037_cur."O"("%multiplicative, :pirop<mod>")
+ unless $P10, rx1037_fail
+ rx1037_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1034_pos = $P10."pos"()
+ rx1037_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
+ rx1037_cur."!cursor_pass"(rx1037_pos, "infix:sym<%>")
+ rx1037_cur."!cursor_debug"("PASS ", "infix:sym<%>", " at pos=", rx1037_pos)
+ .return (rx1037_cur)
+ rx1037_fail:
+.annotate "line", 421
+ (rx1037_rep, rx1037_pos, $I10, $P10) = rx1037_cur."!mark_fail"(0)
+ lt rx1037_pos, -1, rx1037_done
+ eq rx1037_pos, -1, rx1037_fail
jump $I10
- rx1034_done:
- rx1034_cur."!cursor_fail"()
- rx1034_cur."!cursor_debug"("FAIL ", "infix:sym<%>")
- .return (rx1034_cur)
+ rx1037_done:
+ rx1037_cur."!cursor_fail"()
+ rx1037_cur."!cursor_debug"("FAIL ", "infix:sym<%>")
+ .return (rx1037_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("262_1271336396.90314") :method
+.annotate "line", 421
+ $P1039 = self."!PREFIX__!subrule"("O", "%")
+ new $P1040, "ResizablePMCArray"
+ push $P1040, $P1039
+ .return ($P1040)
.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("263_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1044_tgt
+ .local int rx1044_pos
+ .local int rx1044_off
+ .local int rx1044_eos
+ .local int rx1044_rep
+ .local pmc rx1044_cur
+ (rx1044_cur, rx1044_pos, rx1044_tgt) = self."!cursor_start"()
+ rx1044_cur."!cursor_debug"("START ", "infix:sym<+>")
+ .lex unicode:"$\x{a2}", rx1044_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1044_eos, rx1044_tgt
+ set rx1044_off, 0
+ lt rx1044_pos, 2, rx1044_start
+ sub rx1044_off, rx1044_pos, 1
+ substr rx1044_tgt, rx1044_tgt, rx1044_off
+ rx1044_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1048_done
+ goto rxscan1048_scan
+ rxscan1048_loop:
+ ($P10) = rx1044_cur."from"()
+ inc $P10
+ set rx1044_pos, $P10
+ ge rx1044_pos, rx1044_eos, rxscan1048_done
+ rxscan1048_scan:
+ set_addr $I10, rxscan1048_loop
+ rx1044_cur."!mark_push"(0, rx1044_pos, $I10)
+ rxscan1048_done:
+.annotate "line", 485
# rx subcapture "sym"
- set_addr $I10, rxcap_1046_fail
- rx1041_cur."!mark_push"(0, rx1041_pos, $I10)
+ set_addr $I10, rxcap_1049_fail
+ rx1044_cur."!mark_push"(0, rx1044_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, rx1044_pos, 1
+ gt $I11, rx1044_eos, rx1044_fail
+ sub $I11, rx1044_pos, rx1044_off
+ substr $S10, rx1044_tgt, $I11, 1
+ ne $S10, "+", rx1044_fail
+ add rx1044_pos, 1
+ set_addr $I10, rxcap_1049_fail
+ ($I12, $I11) = rx1044_cur."!mark_peek"($I10)
+ rx1044_cur."!cursor_pos"($I11)
+ ($P10) = rx1044_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1044_pos, "")
+ rx1044_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_1049_done
+ rxcap_1049_fail:
+ goto rx1044_fail
+ rxcap_1049_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)
+ rx1044_cur."!cursor_pos"(rx1044_pos)
+ $P10 = rx1044_cur."O"("%additive, :pirop<add>")
+ unless $P10, rx1044_fail
+ rx1044_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1041_pos = $P10."pos"()
+ rx1044_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
+ rx1044_cur."!cursor_pass"(rx1044_pos, "infix:sym<+>")
+ rx1044_cur."!cursor_debug"("PASS ", "infix:sym<+>", " at pos=", rx1044_pos)
+ .return (rx1044_cur)
+ rx1044_fail:
+.annotate "line", 421
+ (rx1044_rep, rx1044_pos, $I10, $P10) = rx1044_cur."!mark_fail"(0)
+ lt rx1044_pos, -1, rx1044_done
+ eq rx1044_pos, -1, rx1044_fail
jump $I10
- rx1041_done:
- rx1041_cur."!cursor_fail"()
- rx1041_cur."!cursor_debug"("FAIL ", "infix:sym<+>")
- .return (rx1041_cur)
+ rx1044_done:
+ rx1044_cur."!cursor_fail"()
+ rx1044_cur."!cursor_debug"("FAIL ", "infix:sym<+>")
+ .return (rx1044_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("264_1271336396.90314") :method
+.annotate "line", 421
+ $P1046 = self."!PREFIX__!subrule"("O", "+")
+ new $P1047, "ResizablePMCArray"
+ push $P1047, $P1046
+ .return ($P1047)
.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("265_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1051_tgt
+ .local int rx1051_pos
+ .local int rx1051_off
+ .local int rx1051_eos
+ .local int rx1051_rep
+ .local pmc rx1051_cur
+ (rx1051_cur, rx1051_pos, rx1051_tgt) = self."!cursor_start"()
+ rx1051_cur."!cursor_debug"("START ", "infix:sym<->")
+ .lex unicode:"$\x{a2}", rx1051_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1051_eos, rx1051_tgt
+ set rx1051_off, 0
+ lt rx1051_pos, 2, rx1051_start
+ sub rx1051_off, rx1051_pos, 1
+ substr rx1051_tgt, rx1051_tgt, rx1051_off
+ rx1051_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1055_done
+ goto rxscan1055_scan
+ rxscan1055_loop:
+ ($P10) = rx1051_cur."from"()
+ inc $P10
+ set rx1051_pos, $P10
+ ge rx1051_pos, rx1051_eos, rxscan1055_done
+ rxscan1055_scan:
+ set_addr $I10, rxscan1055_loop
+ rx1051_cur."!mark_push"(0, rx1051_pos, $I10)
+ rxscan1055_done:
+.annotate "line", 486
# rx subcapture "sym"
- set_addr $I10, rxcap_1053_fail
- rx1048_cur."!mark_push"(0, rx1048_pos, $I10)
+ set_addr $I10, rxcap_1056_fail
+ rx1051_cur."!mark_push"(0, rx1051_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, rx1051_pos, 1
+ gt $I11, rx1051_eos, rx1051_fail
+ sub $I11, rx1051_pos, rx1051_off
+ substr $S10, rx1051_tgt, $I11, 1
+ ne $S10, "-", rx1051_fail
+ add rx1051_pos, 1
+ set_addr $I10, rxcap_1056_fail
+ ($I12, $I11) = rx1051_cur."!mark_peek"($I10)
+ rx1051_cur."!cursor_pos"($I11)
+ ($P10) = rx1051_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1051_pos, "")
+ rx1051_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_1056_done
+ rxcap_1056_fail:
+ goto rx1051_fail
+ rxcap_1056_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)
+ rx1051_cur."!cursor_pos"(rx1051_pos)
+ $P10 = rx1051_cur."O"("%additive, :pirop<sub>")
+ unless $P10, rx1051_fail
+ rx1051_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1048_pos = $P10."pos"()
+ rx1051_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
+ rx1051_cur."!cursor_pass"(rx1051_pos, "infix:sym<->")
+ rx1051_cur."!cursor_debug"("PASS ", "infix:sym<->", " at pos=", rx1051_pos)
+ .return (rx1051_cur)
+ rx1051_fail:
+.annotate "line", 421
+ (rx1051_rep, rx1051_pos, $I10, $P10) = rx1051_cur."!mark_fail"(0)
+ lt rx1051_pos, -1, rx1051_done
+ eq rx1051_pos, -1, rx1051_fail
jump $I10
- rx1048_done:
- rx1048_cur."!cursor_fail"()
- rx1048_cur."!cursor_debug"("FAIL ", "infix:sym<->")
- .return (rx1048_cur)
+ rx1051_done:
+ rx1051_cur."!cursor_fail"()
+ rx1051_cur."!cursor_debug"("FAIL ", "infix:sym<->")
+ .return (rx1051_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("266_1271336396.90314") :method
+.annotate "line", 421
+ $P1053 = self."!PREFIX__!subrule"("O", "-")
+ new $P1054, "ResizablePMCArray"
+ push $P1054, $P1053
+ .return ($P1054)
.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("267_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1058_tgt
+ .local int rx1058_pos
+ .local int rx1058_off
+ .local int rx1058_eos
+ .local int rx1058_rep
+ .local pmc rx1058_cur
+ (rx1058_cur, rx1058_pos, rx1058_tgt) = self."!cursor_start"()
+ rx1058_cur."!cursor_debug"("START ", "infix:sym<~>")
+ .lex unicode:"$\x{a2}", rx1058_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1058_eos, rx1058_tgt
+ set rx1058_off, 0
+ lt rx1058_pos, 2, rx1058_start
+ sub rx1058_off, rx1058_pos, 1
+ substr rx1058_tgt, rx1058_tgt, rx1058_off
+ rx1058_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1062_done
+ goto rxscan1062_scan
+ rxscan1062_loop:
+ ($P10) = rx1058_cur."from"()
+ inc $P10
+ set rx1058_pos, $P10
+ ge rx1058_pos, rx1058_eos, rxscan1062_done
+ rxscan1062_scan:
+ set_addr $I10, rxscan1062_loop
+ rx1058_cur."!mark_push"(0, rx1058_pos, $I10)
+ rxscan1062_done:
+.annotate "line", 488
# rx subcapture "sym"
- set_addr $I10, rxcap_1060_fail
- rx1055_cur."!mark_push"(0, rx1055_pos, $I10)
+ set_addr $I10, rxcap_1063_fail
+ rx1058_cur."!mark_push"(0, rx1058_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, rx1058_pos, 1
+ gt $I11, rx1058_eos, rx1058_fail
+ sub $I11, rx1058_pos, rx1058_off
+ substr $S10, rx1058_tgt, $I11, 1
+ ne $S10, "~", rx1058_fail
+ add rx1058_pos, 1
+ set_addr $I10, rxcap_1063_fail
+ ($I12, $I11) = rx1058_cur."!mark_peek"($I10)
+ rx1058_cur."!cursor_pos"($I11)
+ ($P10) = rx1058_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1058_pos, "")
+ rx1058_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_1063_done
+ rxcap_1063_fail:
+ goto rx1058_fail
+ rxcap_1063_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)
+ rx1058_cur."!cursor_pos"(rx1058_pos)
+ $P10 = rx1058_cur."O"("%concatenation , :pirop<concat>")
+ unless $P10, rx1058_fail
+ rx1058_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1055_pos = $P10."pos"()
+ rx1058_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
+ rx1058_cur."!cursor_pass"(rx1058_pos, "infix:sym<~>")
+ rx1058_cur."!cursor_debug"("PASS ", "infix:sym<~>", " at pos=", rx1058_pos)
+ .return (rx1058_cur)
+ rx1058_fail:
+.annotate "line", 421
+ (rx1058_rep, rx1058_pos, $I10, $P10) = rx1058_cur."!mark_fail"(0)
+ lt rx1058_pos, -1, rx1058_done
+ eq rx1058_pos, -1, rx1058_fail
jump $I10
- rx1055_done:
- rx1055_cur."!cursor_fail"()
- rx1055_cur."!cursor_debug"("FAIL ", "infix:sym<~>")
- .return (rx1055_cur)
+ rx1058_done:
+ rx1058_cur."!cursor_fail"()
+ rx1058_cur."!cursor_debug"("FAIL ", "infix:sym<~>")
+ .return (rx1058_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("268_1271336396.90314") :method
+.annotate "line", 421
+ $P1060 = self."!PREFIX__!subrule"("O", "~")
+ new $P1061, "ResizablePMCArray"
+ push $P1061, $P1060
+ .return ($P1061)
.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("269_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1065_tgt
+ .local int rx1065_pos
+ .local int rx1065_off
+ .local int rx1065_eos
+ .local int rx1065_rep
+ .local pmc rx1065_cur
+ (rx1065_cur, rx1065_pos, rx1065_tgt) = self."!cursor_start"()
+ rx1065_cur."!cursor_debug"("START ", "infix:sym<==>")
+ .lex unicode:"$\x{a2}", rx1065_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1065_eos, rx1065_tgt
+ set rx1065_off, 0
+ lt rx1065_pos, 2, rx1065_start
+ sub rx1065_off, rx1065_pos, 1
+ substr rx1065_tgt, rx1065_tgt, rx1065_off
+ rx1065_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1069_done
+ goto rxscan1069_scan
+ rxscan1069_loop:
+ ($P10) = rx1065_cur."from"()
+ inc $P10
+ set rx1065_pos, $P10
+ ge rx1065_pos, rx1065_eos, rxscan1069_done
+ rxscan1069_scan:
+ set_addr $I10, rxscan1069_loop
+ rx1065_cur."!mark_push"(0, rx1065_pos, $I10)
+ rxscan1069_done:
+.annotate "line", 490
# rx subcapture "sym"
- set_addr $I10, rxcap_1067_fail
- rx1062_cur."!mark_push"(0, rx1062_pos, $I10)
+ set_addr $I10, rxcap_1070_fail
+ rx1065_cur."!mark_push"(0, rx1065_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, rx1065_pos, 2
+ gt $I11, rx1065_eos, rx1065_fail
+ sub $I11, rx1065_pos, rx1065_off
+ substr $S10, rx1065_tgt, $I11, 2
+ ne $S10, "==", rx1065_fail
+ add rx1065_pos, 2
+ set_addr $I10, rxcap_1070_fail
+ ($I12, $I11) = rx1065_cur."!mark_peek"($I10)
+ rx1065_cur."!cursor_pos"($I11)
+ ($P10) = rx1065_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1065_pos, "")
+ rx1065_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_1070_done
+ rxcap_1070_fail:
+ goto rx1065_fail
+ rxcap_1070_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)
+ rx1065_cur."!cursor_pos"(rx1065_pos)
+ $P10 = rx1065_cur."O"("%relational, :pirop<iseq INn>")
+ unless $P10, rx1065_fail
+ rx1065_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1062_pos = $P10."pos"()
+ rx1065_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
+ rx1065_cur."!cursor_pass"(rx1065_pos, "infix:sym<==>")
+ rx1065_cur."!cursor_debug"("PASS ", "infix:sym<==>", " at pos=", rx1065_pos)
+ .return (rx1065_cur)
+ rx1065_fail:
+.annotate "line", 421
+ (rx1065_rep, rx1065_pos, $I10, $P10) = rx1065_cur."!mark_fail"(0)
+ lt rx1065_pos, -1, rx1065_done
+ eq rx1065_pos, -1, rx1065_fail
jump $I10
- rx1062_done:
- rx1062_cur."!cursor_fail"()
- rx1062_cur."!cursor_debug"("FAIL ", "infix:sym<==>")
- .return (rx1062_cur)
+ rx1065_done:
+ rx1065_cur."!cursor_fail"()
+ rx1065_cur."!cursor_debug"("FAIL ", "infix:sym<==>")
+ .return (rx1065_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("270_1271336396.90314") :method
+.annotate "line", 421
+ $P1067 = self."!PREFIX__!subrule"("O", "==")
+ new $P1068, "ResizablePMCArray"
+ push $P1068, $P1067
+ .return ($P1068)
.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("271_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1072_tgt
+ .local int rx1072_pos
+ .local int rx1072_off
+ .local int rx1072_eos
+ .local int rx1072_rep
+ .local pmc rx1072_cur
+ (rx1072_cur, rx1072_pos, rx1072_tgt) = self."!cursor_start"()
+ rx1072_cur."!cursor_debug"("START ", "infix:sym<!=>")
+ .lex unicode:"$\x{a2}", rx1072_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1072_eos, rx1072_tgt
+ set rx1072_off, 0
+ lt rx1072_pos, 2, rx1072_start
+ sub rx1072_off, rx1072_pos, 1
+ substr rx1072_tgt, rx1072_tgt, rx1072_off
+ rx1072_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1076_done
+ goto rxscan1076_scan
+ rxscan1076_loop:
+ ($P10) = rx1072_cur."from"()
+ inc $P10
+ set rx1072_pos, $P10
+ ge rx1072_pos, rx1072_eos, rxscan1076_done
+ rxscan1076_scan:
+ set_addr $I10, rxscan1076_loop
+ rx1072_cur."!mark_push"(0, rx1072_pos, $I10)
+ rxscan1076_done:
+.annotate "line", 491
# rx subcapture "sym"
- set_addr $I10, rxcap_1074_fail
- rx1069_cur."!mark_push"(0, rx1069_pos, $I10)
+ set_addr $I10, rxcap_1077_fail
+ rx1072_cur."!mark_push"(0, rx1072_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, rx1072_pos, 2
+ gt $I11, rx1072_eos, rx1072_fail
+ sub $I11, rx1072_pos, rx1072_off
+ substr $S10, rx1072_tgt, $I11, 2
+ ne $S10, "!=", rx1072_fail
+ add rx1072_pos, 2
+ set_addr $I10, rxcap_1077_fail
+ ($I12, $I11) = rx1072_cur."!mark_peek"($I10)
+ rx1072_cur."!cursor_pos"($I11)
+ ($P10) = rx1072_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1072_pos, "")
+ rx1072_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_1077_done
+ rxcap_1077_fail:
+ goto rx1072_fail
+ rxcap_1077_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)
+ rx1072_cur."!cursor_pos"(rx1072_pos)
+ $P10 = rx1072_cur."O"("%relational, :pirop<isne INn>")
+ unless $P10, rx1072_fail
+ rx1072_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1069_pos = $P10."pos"()
+ rx1072_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
+ rx1072_cur."!cursor_pass"(rx1072_pos, "infix:sym<!=>")
+ rx1072_cur."!cursor_debug"("PASS ", "infix:sym<!=>", " at pos=", rx1072_pos)
+ .return (rx1072_cur)
+ rx1072_fail:
+.annotate "line", 421
+ (rx1072_rep, rx1072_pos, $I10, $P10) = rx1072_cur."!mark_fail"(0)
+ lt rx1072_pos, -1, rx1072_done
+ eq rx1072_pos, -1, rx1072_fail
jump $I10
- rx1069_done:
- rx1069_cur."!cursor_fail"()
- rx1069_cur."!cursor_debug"("FAIL ", "infix:sym<!=>")
- .return (rx1069_cur)
+ rx1072_done:
+ rx1072_cur."!cursor_fail"()
+ rx1072_cur."!cursor_debug"("FAIL ", "infix:sym<!=>")
+ .return (rx1072_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("272_1271336396.90314") :method
+.annotate "line", 421
+ $P1074 = self."!PREFIX__!subrule"("O", "!=")
+ new $P1075, "ResizablePMCArray"
+ push $P1075, $P1074
+ .return ($P1075)
.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("273_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1079_tgt
+ .local int rx1079_pos
+ .local int rx1079_off
+ .local int rx1079_eos
+ .local int rx1079_rep
+ .local pmc rx1079_cur
+ (rx1079_cur, rx1079_pos, rx1079_tgt) = self."!cursor_start"()
+ rx1079_cur."!cursor_debug"("START ", "infix:sym<<=>")
+ .lex unicode:"$\x{a2}", rx1079_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1079_eos, rx1079_tgt
+ set rx1079_off, 0
+ lt rx1079_pos, 2, rx1079_start
+ sub rx1079_off, rx1079_pos, 1
+ substr rx1079_tgt, rx1079_tgt, rx1079_off
+ rx1079_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1083_done
+ goto rxscan1083_scan
+ rxscan1083_loop:
+ ($P10) = rx1079_cur."from"()
+ inc $P10
+ set rx1079_pos, $P10
+ ge rx1079_pos, rx1079_eos, rxscan1083_done
+ rxscan1083_scan:
+ set_addr $I10, rxscan1083_loop
+ rx1079_cur."!mark_push"(0, rx1079_pos, $I10)
+ rxscan1083_done:
+.annotate "line", 492
# rx subcapture "sym"
- set_addr $I10, rxcap_1081_fail
- rx1076_cur."!mark_push"(0, rx1076_pos, $I10)
+ set_addr $I10, rxcap_1084_fail
+ rx1079_cur."!mark_push"(0, rx1079_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, rx1079_pos, 2
+ gt $I11, rx1079_eos, rx1079_fail
+ sub $I11, rx1079_pos, rx1079_off
+ substr $S10, rx1079_tgt, $I11, 2
+ ne $S10, "<=", rx1079_fail
+ add rx1079_pos, 2
+ set_addr $I10, rxcap_1084_fail
+ ($I12, $I11) = rx1079_cur."!mark_peek"($I10)
+ rx1079_cur."!cursor_pos"($I11)
+ ($P10) = rx1079_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1079_pos, "")
+ rx1079_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_1084_done
+ rxcap_1084_fail:
+ goto rx1079_fail
+ rxcap_1084_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)
+ rx1079_cur."!cursor_pos"(rx1079_pos)
+ $P10 = rx1079_cur."O"("%relational, :pirop<isle INn>")
+ unless $P10, rx1079_fail
+ rx1079_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1076_pos = $P10."pos"()
+ rx1079_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
+ rx1079_cur."!cursor_pass"(rx1079_pos, "infix:sym<<=>")
+ rx1079_cur."!cursor_debug"("PASS ", "infix:sym<<=>", " at pos=", rx1079_pos)
+ .return (rx1079_cur)
+ rx1079_fail:
+.annotate "line", 421
+ (rx1079_rep, rx1079_pos, $I10, $P10) = rx1079_cur."!mark_fail"(0)
+ lt rx1079_pos, -1, rx1079_done
+ eq rx1079_pos, -1, rx1079_fail
jump $I10
- rx1076_done:
- rx1076_cur."!cursor_fail"()
- rx1076_cur."!cursor_debug"("FAIL ", "infix:sym<<=>")
- .return (rx1076_cur)
+ rx1079_done:
+ rx1079_cur."!cursor_fail"()
+ rx1079_cur."!cursor_debug"("FAIL ", "infix:sym<<=>")
+ .return (rx1079_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("274_1271336396.90314") :method
+.annotate "line", 421
+ $P1081 = self."!PREFIX__!subrule"("O", "<=")
+ new $P1082, "ResizablePMCArray"
+ push $P1082, $P1081
+ .return ($P1082)
.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("275_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1086_tgt
+ .local int rx1086_pos
+ .local int rx1086_off
+ .local int rx1086_eos
+ .local int rx1086_rep
+ .local pmc rx1086_cur
+ (rx1086_cur, rx1086_pos, rx1086_tgt) = self."!cursor_start"()
+ rx1086_cur."!cursor_debug"("START ", "infix:sym<>=>")
+ .lex unicode:"$\x{a2}", rx1086_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1086_eos, rx1086_tgt
+ set rx1086_off, 0
+ lt rx1086_pos, 2, rx1086_start
+ sub rx1086_off, rx1086_pos, 1
+ substr rx1086_tgt, rx1086_tgt, rx1086_off
+ rx1086_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1090_done
+ goto rxscan1090_scan
+ rxscan1090_loop:
+ ($P10) = rx1086_cur."from"()
+ inc $P10
+ set rx1086_pos, $P10
+ ge rx1086_pos, rx1086_eos, rxscan1090_done
+ rxscan1090_scan:
+ set_addr $I10, rxscan1090_loop
+ rx1086_cur."!mark_push"(0, rx1086_pos, $I10)
+ rxscan1090_done:
+.annotate "line", 493
# rx subcapture "sym"
- set_addr $I10, rxcap_1088_fail
- rx1083_cur."!mark_push"(0, rx1083_pos, $I10)
+ set_addr $I10, rxcap_1091_fail
+ rx1086_cur."!mark_push"(0, rx1086_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, rx1086_pos, 2
+ gt $I11, rx1086_eos, rx1086_fail
+ sub $I11, rx1086_pos, rx1086_off
+ substr $S10, rx1086_tgt, $I11, 2
+ ne $S10, ">=", rx1086_fail
+ add rx1086_pos, 2
+ set_addr $I10, rxcap_1091_fail
+ ($I12, $I11) = rx1086_cur."!mark_peek"($I10)
+ rx1086_cur."!cursor_pos"($I11)
+ ($P10) = rx1086_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1086_pos, "")
+ rx1086_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_1091_done
+ rxcap_1091_fail:
+ goto rx1086_fail
+ rxcap_1091_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)
+ rx1086_cur."!cursor_pos"(rx1086_pos)
+ $P10 = rx1086_cur."O"("%relational, :pirop<isge INn>")
+ unless $P10, rx1086_fail
+ rx1086_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1083_pos = $P10."pos"()
+ rx1086_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
+ rx1086_cur."!cursor_pass"(rx1086_pos, "infix:sym<>=>")
+ rx1086_cur."!cursor_debug"("PASS ", "infix:sym<>=>", " at pos=", rx1086_pos)
+ .return (rx1086_cur)
+ rx1086_fail:
+.annotate "line", 421
+ (rx1086_rep, rx1086_pos, $I10, $P10) = rx1086_cur."!mark_fail"(0)
+ lt rx1086_pos, -1, rx1086_done
+ eq rx1086_pos, -1, rx1086_fail
jump $I10
- rx1083_done:
- rx1083_cur."!cursor_fail"()
- rx1083_cur."!cursor_debug"("FAIL ", "infix:sym<>=>")
- .return (rx1083_cur)
+ rx1086_done:
+ rx1086_cur."!cursor_fail"()
+ rx1086_cur."!cursor_debug"("FAIL ", "infix:sym<>=>")
+ .return (rx1086_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("276_1271336396.90314") :method
+.annotate "line", 421
+ $P1088 = self."!PREFIX__!subrule"("O", ">=")
+ new $P1089, "ResizablePMCArray"
+ push $P1089, $P1088
+ .return ($P1089)
.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("277_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1093_tgt
+ .local int rx1093_pos
+ .local int rx1093_off
+ .local int rx1093_eos
+ .local int rx1093_rep
+ .local pmc rx1093_cur
+ (rx1093_cur, rx1093_pos, rx1093_tgt) = self."!cursor_start"()
+ rx1093_cur."!cursor_debug"("START ", "infix:sym<<>")
+ .lex unicode:"$\x{a2}", rx1093_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1093_eos, rx1093_tgt
+ set rx1093_off, 0
+ lt rx1093_pos, 2, rx1093_start
+ sub rx1093_off, rx1093_pos, 1
+ substr rx1093_tgt, rx1093_tgt, rx1093_off
+ rx1093_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1097_done
+ goto rxscan1097_scan
+ rxscan1097_loop:
+ ($P10) = rx1093_cur."from"()
+ inc $P10
+ set rx1093_pos, $P10
+ ge rx1093_pos, rx1093_eos, rxscan1097_done
+ rxscan1097_scan:
+ set_addr $I10, rxscan1097_loop
+ rx1093_cur."!mark_push"(0, rx1093_pos, $I10)
+ rxscan1097_done:
+.annotate "line", 494
# rx subcapture "sym"
- set_addr $I10, rxcap_1095_fail
- rx1090_cur."!mark_push"(0, rx1090_pos, $I10)
+ set_addr $I10, rxcap_1098_fail
+ rx1093_cur."!mark_push"(0, rx1093_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, rx1093_pos, 1
+ gt $I11, rx1093_eos, rx1093_fail
+ sub $I11, rx1093_pos, rx1093_off
+ substr $S10, rx1093_tgt, $I11, 1
+ ne $S10, "<", rx1093_fail
+ add rx1093_pos, 1
+ set_addr $I10, rxcap_1098_fail
+ ($I12, $I11) = rx1093_cur."!mark_peek"($I10)
+ rx1093_cur."!cursor_pos"($I11)
+ ($P10) = rx1093_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1093_pos, "")
+ rx1093_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_1098_done
+ rxcap_1098_fail:
+ goto rx1093_fail
+ rxcap_1098_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)
+ rx1093_cur."!cursor_pos"(rx1093_pos)
+ $P10 = rx1093_cur."O"("%relational, :pirop<islt INn>")
+ unless $P10, rx1093_fail
+ rx1093_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1090_pos = $P10."pos"()
+ rx1093_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
+ rx1093_cur."!cursor_pass"(rx1093_pos, "infix:sym<<>")
+ rx1093_cur."!cursor_debug"("PASS ", "infix:sym<<>", " at pos=", rx1093_pos)
+ .return (rx1093_cur)
+ rx1093_fail:
+.annotate "line", 421
+ (rx1093_rep, rx1093_pos, $I10, $P10) = rx1093_cur."!mark_fail"(0)
+ lt rx1093_pos, -1, rx1093_done
+ eq rx1093_pos, -1, rx1093_fail
jump $I10
- rx1090_done:
- rx1090_cur."!cursor_fail"()
- rx1090_cur."!cursor_debug"("FAIL ", "infix:sym<<>")
- .return (rx1090_cur)
+ rx1093_done:
+ rx1093_cur."!cursor_fail"()
+ rx1093_cur."!cursor_debug"("FAIL ", "infix:sym<<>")
+ .return (rx1093_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("278_1271336396.90314") :method
+.annotate "line", 421
+ $P1095 = self."!PREFIX__!subrule"("O", "<")
+ new $P1096, "ResizablePMCArray"
+ push $P1096, $P1095
+ .return ($P1096)
.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("279_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1100_tgt
+ .local int rx1100_pos
+ .local int rx1100_off
+ .local int rx1100_eos
+ .local int rx1100_rep
+ .local pmc rx1100_cur
+ (rx1100_cur, rx1100_pos, rx1100_tgt) = self."!cursor_start"()
+ rx1100_cur."!cursor_debug"("START ", "infix:sym<>>")
+ .lex unicode:"$\x{a2}", rx1100_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1100_eos, rx1100_tgt
+ set rx1100_off, 0
+ lt rx1100_pos, 2, rx1100_start
+ sub rx1100_off, rx1100_pos, 1
+ substr rx1100_tgt, rx1100_tgt, rx1100_off
+ rx1100_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1104_done
+ goto rxscan1104_scan
+ rxscan1104_loop:
+ ($P10) = rx1100_cur."from"()
+ inc $P10
+ set rx1100_pos, $P10
+ ge rx1100_pos, rx1100_eos, rxscan1104_done
+ rxscan1104_scan:
+ set_addr $I10, rxscan1104_loop
+ rx1100_cur."!mark_push"(0, rx1100_pos, $I10)
+ rxscan1104_done:
+.annotate "line", 495
# rx subcapture "sym"
- set_addr $I10, rxcap_1102_fail
- rx1097_cur."!mark_push"(0, rx1097_pos, $I10)
+ set_addr $I10, rxcap_1105_fail
+ rx1100_cur."!mark_push"(0, rx1100_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, rx1100_pos, 1
+ gt $I11, rx1100_eos, rx1100_fail
+ sub $I11, rx1100_pos, rx1100_off
+ substr $S10, rx1100_tgt, $I11, 1
+ ne $S10, ">", rx1100_fail
+ add rx1100_pos, 1
+ set_addr $I10, rxcap_1105_fail
+ ($I12, $I11) = rx1100_cur."!mark_peek"($I10)
+ rx1100_cur."!cursor_pos"($I11)
+ ($P10) = rx1100_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1100_pos, "")
+ rx1100_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_1105_done
+ rxcap_1105_fail:
+ goto rx1100_fail
+ rxcap_1105_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)
+ rx1100_cur."!cursor_pos"(rx1100_pos)
+ $P10 = rx1100_cur."O"("%relational, :pirop<isgt INn>")
+ unless $P10, rx1100_fail
+ rx1100_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1097_pos = $P10."pos"()
+ rx1100_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
+ rx1100_cur."!cursor_pass"(rx1100_pos, "infix:sym<>>")
+ rx1100_cur."!cursor_debug"("PASS ", "infix:sym<>>", " at pos=", rx1100_pos)
+ .return (rx1100_cur)
+ rx1100_fail:
+.annotate "line", 421
+ (rx1100_rep, rx1100_pos, $I10, $P10) = rx1100_cur."!mark_fail"(0)
+ lt rx1100_pos, -1, rx1100_done
+ eq rx1100_pos, -1, rx1100_fail
jump $I10
- rx1097_done:
- rx1097_cur."!cursor_fail"()
- rx1097_cur."!cursor_debug"("FAIL ", "infix:sym<>>")
- .return (rx1097_cur)
+ rx1100_done:
+ rx1100_cur."!cursor_fail"()
+ rx1100_cur."!cursor_debug"("FAIL ", "infix:sym<>>")
+ .return (rx1100_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("280_1271336396.90314") :method
+.annotate "line", 421
+ $P1102 = self."!PREFIX__!subrule"("O", ">")
+ new $P1103, "ResizablePMCArray"
+ push $P1103, $P1102
+ .return ($P1103)
.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("281_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1107_tgt
+ .local int rx1107_pos
+ .local int rx1107_off
+ .local int rx1107_eos
+ .local int rx1107_rep
+ .local pmc rx1107_cur
+ (rx1107_cur, rx1107_pos, rx1107_tgt) = self."!cursor_start"()
+ rx1107_cur."!cursor_debug"("START ", "infix:sym<eq>")
+ .lex unicode:"$\x{a2}", rx1107_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1107_eos, rx1107_tgt
+ set rx1107_off, 0
+ lt rx1107_pos, 2, rx1107_start
+ sub rx1107_off, rx1107_pos, 1
+ substr rx1107_tgt, rx1107_tgt, rx1107_off
+ rx1107_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1111_done
+ goto rxscan1111_scan
+ rxscan1111_loop:
+ ($P10) = rx1107_cur."from"()
+ inc $P10
+ set rx1107_pos, $P10
+ ge rx1107_pos, rx1107_eos, rxscan1111_done
+ rxscan1111_scan:
+ set_addr $I10, rxscan1111_loop
+ rx1107_cur."!mark_push"(0, rx1107_pos, $I10)
+ rxscan1111_done:
+.annotate "line", 496
# rx subcapture "sym"
- set_addr $I10, rxcap_1109_fail
- rx1104_cur."!mark_push"(0, rx1104_pos, $I10)
+ set_addr $I10, rxcap_1112_fail
+ rx1107_cur."!mark_push"(0, rx1107_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, rx1107_pos, 2
+ gt $I11, rx1107_eos, rx1107_fail
+ sub $I11, rx1107_pos, rx1107_off
+ substr $S10, rx1107_tgt, $I11, 2
+ ne $S10, "eq", rx1107_fail
+ add rx1107_pos, 2
+ set_addr $I10, rxcap_1112_fail
+ ($I12, $I11) = rx1107_cur."!mark_peek"($I10)
+ rx1107_cur."!cursor_pos"($I11)
+ ($P10) = rx1107_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1107_pos, "")
+ rx1107_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_1112_done
+ rxcap_1112_fail:
+ goto rx1107_fail
+ rxcap_1112_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)
+ rx1107_cur."!cursor_pos"(rx1107_pos)
+ $P10 = rx1107_cur."O"("%relational, :pirop<iseq ISs>")
+ unless $P10, rx1107_fail
+ rx1107_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1104_pos = $P10."pos"()
+ rx1107_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
+ rx1107_cur."!cursor_pass"(rx1107_pos, "infix:sym<eq>")
+ rx1107_cur."!cursor_debug"("PASS ", "infix:sym<eq>", " at pos=", rx1107_pos)
+ .return (rx1107_cur)
+ rx1107_fail:
+.annotate "line", 421
+ (rx1107_rep, rx1107_pos, $I10, $P10) = rx1107_cur."!mark_fail"(0)
+ lt rx1107_pos, -1, rx1107_done
+ eq rx1107_pos, -1, rx1107_fail
jump $I10
- rx1104_done:
- rx1104_cur."!cursor_fail"()
- rx1104_cur."!cursor_debug"("FAIL ", "infix:sym<eq>")
- .return (rx1104_cur)
+ rx1107_done:
+ rx1107_cur."!cursor_fail"()
+ rx1107_cur."!cursor_debug"("FAIL ", "infix:sym<eq>")
+ .return (rx1107_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("282_1271336396.90314") :method
+.annotate "line", 421
+ $P1109 = self."!PREFIX__!subrule"("O", "eq")
+ new $P1110, "ResizablePMCArray"
+ push $P1110, $P1109
+ .return ($P1110)
.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("283_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1114_tgt
+ .local int rx1114_pos
+ .local int rx1114_off
+ .local int rx1114_eos
+ .local int rx1114_rep
+ .local pmc rx1114_cur
+ (rx1114_cur, rx1114_pos, rx1114_tgt) = self."!cursor_start"()
+ rx1114_cur."!cursor_debug"("START ", "infix:sym<ne>")
+ .lex unicode:"$\x{a2}", rx1114_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1114_eos, rx1114_tgt
+ set rx1114_off, 0
+ lt rx1114_pos, 2, rx1114_start
+ sub rx1114_off, rx1114_pos, 1
+ substr rx1114_tgt, rx1114_tgt, rx1114_off
+ rx1114_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1118_done
+ goto rxscan1118_scan
+ rxscan1118_loop:
+ ($P10) = rx1114_cur."from"()
+ inc $P10
+ set rx1114_pos, $P10
+ ge rx1114_pos, rx1114_eos, rxscan1118_done
+ rxscan1118_scan:
+ set_addr $I10, rxscan1118_loop
+ rx1114_cur."!mark_push"(0, rx1114_pos, $I10)
+ rxscan1118_done:
+.annotate "line", 497
# rx subcapture "sym"
- set_addr $I10, rxcap_1116_fail
- rx1111_cur."!mark_push"(0, rx1111_pos, $I10)
+ set_addr $I10, rxcap_1119_fail
+ rx1114_cur."!mark_push"(0, rx1114_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, rx1114_pos, 2
+ gt $I11, rx1114_eos, rx1114_fail
+ sub $I11, rx1114_pos, rx1114_off
+ substr $S10, rx1114_tgt, $I11, 2
+ ne $S10, "ne", rx1114_fail
+ add rx1114_pos, 2
+ set_addr $I10, rxcap_1119_fail
+ ($I12, $I11) = rx1114_cur."!mark_peek"($I10)
+ rx1114_cur."!cursor_pos"($I11)
+ ($P10) = rx1114_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1114_pos, "")
+ rx1114_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_1119_done
+ rxcap_1119_fail:
+ goto rx1114_fail
+ rxcap_1119_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)
+ rx1114_cur."!cursor_pos"(rx1114_pos)
+ $P10 = rx1114_cur."O"("%relational, :pirop<isne ISs>")
+ unless $P10, rx1114_fail
+ rx1114_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1111_pos = $P10."pos"()
+ rx1114_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
+ rx1114_cur."!cursor_pass"(rx1114_pos, "infix:sym<ne>")
+ rx1114_cur."!cursor_debug"("PASS ", "infix:sym<ne>", " at pos=", rx1114_pos)
+ .return (rx1114_cur)
+ rx1114_fail:
+.annotate "line", 421
+ (rx1114_rep, rx1114_pos, $I10, $P10) = rx1114_cur."!mark_fail"(0)
+ lt rx1114_pos, -1, rx1114_done
+ eq rx1114_pos, -1, rx1114_fail
jump $I10
- rx1111_done:
- rx1111_cur."!cursor_fail"()
- rx1111_cur."!cursor_debug"("FAIL ", "infix:sym<ne>")
- .return (rx1111_cur)
+ rx1114_done:
+ rx1114_cur."!cursor_fail"()
+ rx1114_cur."!cursor_debug"("FAIL ", "infix:sym<ne>")
+ .return (rx1114_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("284_1271336396.90314") :method
+.annotate "line", 421
+ $P1116 = self."!PREFIX__!subrule"("O", "ne")
+ new $P1117, "ResizablePMCArray"
+ push $P1117, $P1116
+ .return ($P1117)
.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("285_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1121_tgt
+ .local int rx1121_pos
+ .local int rx1121_off
+ .local int rx1121_eos
+ .local int rx1121_rep
+ .local pmc rx1121_cur
+ (rx1121_cur, rx1121_pos, rx1121_tgt) = self."!cursor_start"()
+ rx1121_cur."!cursor_debug"("START ", "infix:sym<le>")
+ .lex unicode:"$\x{a2}", rx1121_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1121_eos, rx1121_tgt
+ set rx1121_off, 0
+ lt rx1121_pos, 2, rx1121_start
+ sub rx1121_off, rx1121_pos, 1
+ substr rx1121_tgt, rx1121_tgt, rx1121_off
+ rx1121_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1125_done
+ goto rxscan1125_scan
+ rxscan1125_loop:
+ ($P10) = rx1121_cur."from"()
+ inc $P10
+ set rx1121_pos, $P10
+ ge rx1121_pos, rx1121_eos, rxscan1125_done
+ rxscan1125_scan:
+ set_addr $I10, rxscan1125_loop
+ rx1121_cur."!mark_push"(0, rx1121_pos, $I10)
+ rxscan1125_done:
+.annotate "line", 498
# rx subcapture "sym"
- set_addr $I10, rxcap_1123_fail
- rx1118_cur."!mark_push"(0, rx1118_pos, $I10)
+ set_addr $I10, rxcap_1126_fail
+ rx1121_cur."!mark_push"(0, rx1121_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, rx1121_pos, 2
+ gt $I11, rx1121_eos, rx1121_fail
+ sub $I11, rx1121_pos, rx1121_off
+ substr $S10, rx1121_tgt, $I11, 2
+ ne $S10, "le", rx1121_fail
+ add rx1121_pos, 2
+ set_addr $I10, rxcap_1126_fail
+ ($I12, $I11) = rx1121_cur."!mark_peek"($I10)
+ rx1121_cur."!cursor_pos"($I11)
+ ($P10) = rx1121_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1121_pos, "")
+ rx1121_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_1126_done
+ rxcap_1126_fail:
+ goto rx1121_fail
+ rxcap_1126_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)
+ rx1121_cur."!cursor_pos"(rx1121_pos)
+ $P10 = rx1121_cur."O"("%relational, :pirop<isle ISs>")
+ unless $P10, rx1121_fail
+ rx1121_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1118_pos = $P10."pos"()
+ rx1121_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
+ rx1121_cur."!cursor_pass"(rx1121_pos, "infix:sym<le>")
+ rx1121_cur."!cursor_debug"("PASS ", "infix:sym<le>", " at pos=", rx1121_pos)
+ .return (rx1121_cur)
+ rx1121_fail:
+.annotate "line", 421
+ (rx1121_rep, rx1121_pos, $I10, $P10) = rx1121_cur."!mark_fail"(0)
+ lt rx1121_pos, -1, rx1121_done
+ eq rx1121_pos, -1, rx1121_fail
jump $I10
- rx1118_done:
- rx1118_cur."!cursor_fail"()
- rx1118_cur."!cursor_debug"("FAIL ", "infix:sym<le>")
- .return (rx1118_cur)
+ rx1121_done:
+ rx1121_cur."!cursor_fail"()
+ rx1121_cur."!cursor_debug"("FAIL ", "infix:sym<le>")
+ .return (rx1121_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("286_1271336396.90314") :method
+.annotate "line", 421
+ $P1123 = self."!PREFIX__!subrule"("O", "le")
+ new $P1124, "ResizablePMCArray"
+ push $P1124, $P1123
+ .return ($P1124)
.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("287_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1128_tgt
+ .local int rx1128_pos
+ .local int rx1128_off
+ .local int rx1128_eos
+ .local int rx1128_rep
+ .local pmc rx1128_cur
+ (rx1128_cur, rx1128_pos, rx1128_tgt) = self."!cursor_start"()
+ rx1128_cur."!cursor_debug"("START ", "infix:sym<ge>")
+ .lex unicode:"$\x{a2}", rx1128_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1128_eos, rx1128_tgt
+ set rx1128_off, 0
+ lt rx1128_pos, 2, rx1128_start
+ sub rx1128_off, rx1128_pos, 1
+ substr rx1128_tgt, rx1128_tgt, rx1128_off
+ rx1128_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1132_done
+ goto rxscan1132_scan
+ rxscan1132_loop:
+ ($P10) = rx1128_cur."from"()
+ inc $P10
+ set rx1128_pos, $P10
+ ge rx1128_pos, rx1128_eos, rxscan1132_done
+ rxscan1132_scan:
+ set_addr $I10, rxscan1132_loop
+ rx1128_cur."!mark_push"(0, rx1128_pos, $I10)
+ rxscan1132_done:
+.annotate "line", 499
# rx subcapture "sym"
- set_addr $I10, rxcap_1130_fail
- rx1125_cur."!mark_push"(0, rx1125_pos, $I10)
+ set_addr $I10, rxcap_1133_fail
+ rx1128_cur."!mark_push"(0, rx1128_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, rx1128_pos, 2
+ gt $I11, rx1128_eos, rx1128_fail
+ sub $I11, rx1128_pos, rx1128_off
+ substr $S10, rx1128_tgt, $I11, 2
+ ne $S10, "ge", rx1128_fail
+ add rx1128_pos, 2
+ set_addr $I10, rxcap_1133_fail
+ ($I12, $I11) = rx1128_cur."!mark_peek"($I10)
+ rx1128_cur."!cursor_pos"($I11)
+ ($P10) = rx1128_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1128_pos, "")
+ rx1128_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_1133_done
+ rxcap_1133_fail:
+ goto rx1128_fail
+ rxcap_1133_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)
+ rx1128_cur."!cursor_pos"(rx1128_pos)
+ $P10 = rx1128_cur."O"("%relational, :pirop<isge ISs>")
+ unless $P10, rx1128_fail
+ rx1128_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1125_pos = $P10."pos"()
+ rx1128_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
+ rx1128_cur."!cursor_pass"(rx1128_pos, "infix:sym<ge>")
+ rx1128_cur."!cursor_debug"("PASS ", "infix:sym<ge>", " at pos=", rx1128_pos)
+ .return (rx1128_cur)
+ rx1128_fail:
+.annotate "line", 421
+ (rx1128_rep, rx1128_pos, $I10, $P10) = rx1128_cur."!mark_fail"(0)
+ lt rx1128_pos, -1, rx1128_done
+ eq rx1128_pos, -1, rx1128_fail
jump $I10
- rx1125_done:
- rx1125_cur."!cursor_fail"()
- rx1125_cur."!cursor_debug"("FAIL ", "infix:sym<ge>")
- .return (rx1125_cur)
+ rx1128_done:
+ rx1128_cur."!cursor_fail"()
+ rx1128_cur."!cursor_debug"("FAIL ", "infix:sym<ge>")
+ .return (rx1128_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("288_1271336396.90314") :method
+.annotate "line", 421
+ $P1130 = self."!PREFIX__!subrule"("O", "ge")
+ new $P1131, "ResizablePMCArray"
+ push $P1131, $P1130
+ .return ($P1131)
.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("289_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1135_tgt
+ .local int rx1135_pos
+ .local int rx1135_off
+ .local int rx1135_eos
+ .local int rx1135_rep
+ .local pmc rx1135_cur
+ (rx1135_cur, rx1135_pos, rx1135_tgt) = self."!cursor_start"()
+ rx1135_cur."!cursor_debug"("START ", "infix:sym<lt>")
+ .lex unicode:"$\x{a2}", rx1135_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1135_eos, rx1135_tgt
+ set rx1135_off, 0
+ lt rx1135_pos, 2, rx1135_start
+ sub rx1135_off, rx1135_pos, 1
+ substr rx1135_tgt, rx1135_tgt, rx1135_off
+ rx1135_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1139_done
+ goto rxscan1139_scan
+ rxscan1139_loop:
+ ($P10) = rx1135_cur."from"()
+ inc $P10
+ set rx1135_pos, $P10
+ ge rx1135_pos, rx1135_eos, rxscan1139_done
+ rxscan1139_scan:
+ set_addr $I10, rxscan1139_loop
+ rx1135_cur."!mark_push"(0, rx1135_pos, $I10)
+ rxscan1139_done:
+.annotate "line", 500
# rx subcapture "sym"
- set_addr $I10, rxcap_1137_fail
- rx1132_cur."!mark_push"(0, rx1132_pos, $I10)
+ set_addr $I10, rxcap_1140_fail
+ rx1135_cur."!mark_push"(0, rx1135_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, rx1135_pos, 2
+ gt $I11, rx1135_eos, rx1135_fail
+ sub $I11, rx1135_pos, rx1135_off
+ substr $S10, rx1135_tgt, $I11, 2
+ ne $S10, "lt", rx1135_fail
+ add rx1135_pos, 2
+ set_addr $I10, rxcap_1140_fail
+ ($I12, $I11) = rx1135_cur."!mark_peek"($I10)
+ rx1135_cur."!cursor_pos"($I11)
+ ($P10) = rx1135_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1135_pos, "")
+ rx1135_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_1140_done
+ rxcap_1140_fail:
+ goto rx1135_fail
+ rxcap_1140_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)
+ rx1135_cur."!cursor_pos"(rx1135_pos)
+ $P10 = rx1135_cur."O"("%relational, :pirop<islt ISs>")
+ unless $P10, rx1135_fail
+ rx1135_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1132_pos = $P10."pos"()
+ rx1135_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
+ rx1135_cur."!cursor_pass"(rx1135_pos, "infix:sym<lt>")
+ rx1135_cur."!cursor_debug"("PASS ", "infix:sym<lt>", " at pos=", rx1135_pos)
+ .return (rx1135_cur)
+ rx1135_fail:
+.annotate "line", 421
+ (rx1135_rep, rx1135_pos, $I10, $P10) = rx1135_cur."!mark_fail"(0)
+ lt rx1135_pos, -1, rx1135_done
+ eq rx1135_pos, -1, rx1135_fail
jump $I10
- rx1132_done:
- rx1132_cur."!cursor_fail"()
- rx1132_cur."!cursor_debug"("FAIL ", "infix:sym<lt>")
- .return (rx1132_cur)
+ rx1135_done:
+ rx1135_cur."!cursor_fail"()
+ rx1135_cur."!cursor_debug"("FAIL ", "infix:sym<lt>")
+ .return (rx1135_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("290_1271336396.90314") :method
+.annotate "line", 421
+ $P1137 = self."!PREFIX__!subrule"("O", "lt")
+ new $P1138, "ResizablePMCArray"
+ push $P1138, $P1137
+ .return ($P1138)
.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("291_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1142_tgt
+ .local int rx1142_pos
+ .local int rx1142_off
+ .local int rx1142_eos
+ .local int rx1142_rep
+ .local pmc rx1142_cur
+ (rx1142_cur, rx1142_pos, rx1142_tgt) = self."!cursor_start"()
+ rx1142_cur."!cursor_debug"("START ", "infix:sym<gt>")
+ .lex unicode:"$\x{a2}", rx1142_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1142_eos, rx1142_tgt
+ set rx1142_off, 0
+ lt rx1142_pos, 2, rx1142_start
+ sub rx1142_off, rx1142_pos, 1
+ substr rx1142_tgt, rx1142_tgt, rx1142_off
+ rx1142_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1146_done
+ goto rxscan1146_scan
+ rxscan1146_loop:
+ ($P10) = rx1142_cur."from"()
+ inc $P10
+ set rx1142_pos, $P10
+ ge rx1142_pos, rx1142_eos, rxscan1146_done
+ rxscan1146_scan:
+ set_addr $I10, rxscan1146_loop
+ rx1142_cur."!mark_push"(0, rx1142_pos, $I10)
+ rxscan1146_done:
+.annotate "line", 501
# rx subcapture "sym"
- set_addr $I10, rxcap_1144_fail
- rx1139_cur."!mark_push"(0, rx1139_pos, $I10)
+ set_addr $I10, rxcap_1147_fail
+ rx1142_cur."!mark_push"(0, rx1142_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, rx1142_pos, 2
+ gt $I11, rx1142_eos, rx1142_fail
+ sub $I11, rx1142_pos, rx1142_off
+ substr $S10, rx1142_tgt, $I11, 2
+ ne $S10, "gt", rx1142_fail
+ add rx1142_pos, 2
+ set_addr $I10, rxcap_1147_fail
+ ($I12, $I11) = rx1142_cur."!mark_peek"($I10)
+ rx1142_cur."!cursor_pos"($I11)
+ ($P10) = rx1142_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1142_pos, "")
+ rx1142_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_1147_done
+ rxcap_1147_fail:
+ goto rx1142_fail
+ rxcap_1147_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)
+ rx1142_cur."!cursor_pos"(rx1142_pos)
+ $P10 = rx1142_cur."O"("%relational, :pirop<isgt ISs>")
+ unless $P10, rx1142_fail
+ rx1142_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1139_pos = $P10."pos"()
+ rx1142_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
+ rx1142_cur."!cursor_pass"(rx1142_pos, "infix:sym<gt>")
+ rx1142_cur."!cursor_debug"("PASS ", "infix:sym<gt>", " at pos=", rx1142_pos)
+ .return (rx1142_cur)
+ rx1142_fail:
+.annotate "line", 421
+ (rx1142_rep, rx1142_pos, $I10, $P10) = rx1142_cur."!mark_fail"(0)
+ lt rx1142_pos, -1, rx1142_done
+ eq rx1142_pos, -1, rx1142_fail
jump $I10
- rx1139_done:
- rx1139_cur."!cursor_fail"()
- rx1139_cur."!cursor_debug"("FAIL ", "infix:sym<gt>")
- .return (rx1139_cur)
+ rx1142_done:
+ rx1142_cur."!cursor_fail"()
+ rx1142_cur."!cursor_debug"("FAIL ", "infix:sym<gt>")
+ .return (rx1142_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("292_1271336396.90314") :method
+.annotate "line", 421
+ $P1144 = self."!PREFIX__!subrule"("O", "gt")
+ new $P1145, "ResizablePMCArray"
+ push $P1145, $P1144
+ .return ($P1145)
.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("293_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1149_tgt
+ .local int rx1149_pos
+ .local int rx1149_off
+ .local int rx1149_eos
+ .local int rx1149_rep
+ .local pmc rx1149_cur
+ (rx1149_cur, rx1149_pos, rx1149_tgt) = self."!cursor_start"()
+ rx1149_cur."!cursor_debug"("START ", "infix:sym<=:=>")
+ .lex unicode:"$\x{a2}", rx1149_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1149_eos, rx1149_tgt
+ set rx1149_off, 0
+ lt rx1149_pos, 2, rx1149_start
+ sub rx1149_off, rx1149_pos, 1
+ substr rx1149_tgt, rx1149_tgt, rx1149_off
+ rx1149_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1153_done
+ goto rxscan1153_scan
+ rxscan1153_loop:
+ ($P10) = rx1149_cur."from"()
+ inc $P10
+ set rx1149_pos, $P10
+ ge rx1149_pos, rx1149_eos, rxscan1153_done
+ rxscan1153_scan:
+ set_addr $I10, rxscan1153_loop
+ rx1149_cur."!mark_push"(0, rx1149_pos, $I10)
+ rxscan1153_done:
+.annotate "line", 502
# rx subcapture "sym"
- set_addr $I10, rxcap_1151_fail
- rx1146_cur."!mark_push"(0, rx1146_pos, $I10)
+ set_addr $I10, rxcap_1154_fail
+ rx1149_cur."!mark_push"(0, rx1149_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, rx1149_pos, 3
+ gt $I11, rx1149_eos, rx1149_fail
+ sub $I11, rx1149_pos, rx1149_off
+ substr $S10, rx1149_tgt, $I11, 3
+ ne $S10, "=:=", rx1149_fail
+ add rx1149_pos, 3
+ set_addr $I10, rxcap_1154_fail
+ ($I12, $I11) = rx1149_cur."!mark_peek"($I10)
+ rx1149_cur."!cursor_pos"($I11)
+ ($P10) = rx1149_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1149_pos, "")
+ rx1149_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_1154_done
+ rxcap_1154_fail:
+ goto rx1149_fail
+ rxcap_1154_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)
+ rx1149_cur."!cursor_pos"(rx1149_pos)
+ $P10 = rx1149_cur."O"("%relational, :pirop<issame>")
+ unless $P10, rx1149_fail
+ rx1149_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1146_pos = $P10."pos"()
+ rx1149_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
+ rx1149_cur."!cursor_pass"(rx1149_pos, "infix:sym<=:=>")
+ rx1149_cur."!cursor_debug"("PASS ", "infix:sym<=:=>", " at pos=", rx1149_pos)
+ .return (rx1149_cur)
+ rx1149_fail:
+.annotate "line", 421
+ (rx1149_rep, rx1149_pos, $I10, $P10) = rx1149_cur."!mark_fail"(0)
+ lt rx1149_pos, -1, rx1149_done
+ eq rx1149_pos, -1, rx1149_fail
jump $I10
- rx1146_done:
- rx1146_cur."!cursor_fail"()
- rx1146_cur."!cursor_debug"("FAIL ", "infix:sym<=:=>")
- .return (rx1146_cur)
+ rx1149_done:
+ rx1149_cur."!cursor_fail"()
+ rx1149_cur."!cursor_debug"("FAIL ", "infix:sym<=:=>")
+ .return (rx1149_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("294_1271336396.90314") :method
+.annotate "line", 421
+ $P1151 = self."!PREFIX__!subrule"("O", "=:=")
+ new $P1152, "ResizablePMCArray"
+ push $P1152, $P1151
+ .return ($P1152)
.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("295_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1156_tgt
+ .local int rx1156_pos
+ .local int rx1156_off
+ .local int rx1156_eos
+ .local int rx1156_rep
+ .local pmc rx1156_cur
+ (rx1156_cur, rx1156_pos, rx1156_tgt) = self."!cursor_start"()
+ rx1156_cur."!cursor_debug"("START ", "infix:sym<~~>")
+ .lex unicode:"$\x{a2}", rx1156_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1156_eos, rx1156_tgt
+ set rx1156_off, 0
+ lt rx1156_pos, 2, rx1156_start
+ sub rx1156_off, rx1156_pos, 1
+ substr rx1156_tgt, rx1156_tgt, rx1156_off
+ rx1156_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1160_done
+ goto rxscan1160_scan
+ rxscan1160_loop:
+ ($P10) = rx1156_cur."from"()
+ inc $P10
+ set rx1156_pos, $P10
+ ge rx1156_pos, rx1156_eos, rxscan1160_done
+ rxscan1160_scan:
+ set_addr $I10, rxscan1160_loop
+ rx1156_cur."!mark_push"(0, rx1156_pos, $I10)
+ rxscan1160_done:
+.annotate "line", 503
# rx subcapture "sym"
- set_addr $I10, rxcap_1158_fail
- rx1153_cur."!mark_push"(0, rx1153_pos, $I10)
+ set_addr $I10, rxcap_1161_fail
+ rx1156_cur."!mark_push"(0, rx1156_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, rx1156_pos, 2
+ gt $I11, rx1156_eos, rx1156_fail
+ sub $I11, rx1156_pos, rx1156_off
+ substr $S10, rx1156_tgt, $I11, 2
+ ne $S10, "~~", rx1156_fail
+ add rx1156_pos, 2
+ set_addr $I10, rxcap_1161_fail
+ ($I12, $I11) = rx1156_cur."!mark_peek"($I10)
+ rx1156_cur."!cursor_pos"($I11)
+ ($P10) = rx1156_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1156_pos, "")
+ rx1156_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_1161_done
+ rxcap_1161_fail:
+ goto rx1156_fail
+ rxcap_1161_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)
+ rx1156_cur."!cursor_pos"(rx1156_pos)
+ $P10 = rx1156_cur."O"("%relational, :reducecheck<smartmatch>")
+ unless $P10, rx1156_fail
+ rx1156_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1153_pos = $P10."pos"()
+ rx1156_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
+ rx1156_cur."!cursor_pass"(rx1156_pos, "infix:sym<~~>")
+ rx1156_cur."!cursor_debug"("PASS ", "infix:sym<~~>", " at pos=", rx1156_pos)
+ .return (rx1156_cur)
+ rx1156_fail:
+.annotate "line", 421
+ (rx1156_rep, rx1156_pos, $I10, $P10) = rx1156_cur."!mark_fail"(0)
+ lt rx1156_pos, -1, rx1156_done
+ eq rx1156_pos, -1, rx1156_fail
jump $I10
- rx1153_done:
- rx1153_cur."!cursor_fail"()
- rx1153_cur."!cursor_debug"("FAIL ", "infix:sym<~~>")
- .return (rx1153_cur)
+ rx1156_done:
+ rx1156_cur."!cursor_fail"()
+ rx1156_cur."!cursor_debug"("FAIL ", "infix:sym<~~>")
+ .return (rx1156_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("296_1271336396.90314") :method
+.annotate "line", 421
+ $P1158 = self."!PREFIX__!subrule"("O", "~~")
+ new $P1159, "ResizablePMCArray"
+ push $P1159, $P1158
+ .return ($P1159)
.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("297_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1163_tgt
+ .local int rx1163_pos
+ .local int rx1163_off
+ .local int rx1163_eos
+ .local int rx1163_rep
+ .local pmc rx1163_cur
+ (rx1163_cur, rx1163_pos, rx1163_tgt) = self."!cursor_start"()
+ rx1163_cur."!cursor_debug"("START ", "infix:sym<&&>")
+ .lex unicode:"$\x{a2}", rx1163_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1163_eos, rx1163_tgt
+ set rx1163_off, 0
+ lt rx1163_pos, 2, rx1163_start
+ sub rx1163_off, rx1163_pos, 1
+ substr rx1163_tgt, rx1163_tgt, rx1163_off
+ rx1163_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1167_done
+ goto rxscan1167_scan
+ rxscan1167_loop:
+ ($P10) = rx1163_cur."from"()
+ inc $P10
+ set rx1163_pos, $P10
+ ge rx1163_pos, rx1163_eos, rxscan1167_done
+ rxscan1167_scan:
+ set_addr $I10, rxscan1167_loop
+ rx1163_cur."!mark_push"(0, rx1163_pos, $I10)
+ rxscan1167_done:
+.annotate "line", 505
# rx subcapture "sym"
- set_addr $I10, rxcap_1165_fail
- rx1160_cur."!mark_push"(0, rx1160_pos, $I10)
+ set_addr $I10, rxcap_1168_fail
+ rx1163_cur."!mark_push"(0, rx1163_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, rx1163_pos, 2
+ gt $I11, rx1163_eos, rx1163_fail
+ sub $I11, rx1163_pos, rx1163_off
+ substr $S10, rx1163_tgt, $I11, 2
+ ne $S10, "&&", rx1163_fail
+ add rx1163_pos, 2
+ set_addr $I10, rxcap_1168_fail
+ ($I12, $I11) = rx1163_cur."!mark_peek"($I10)
+ rx1163_cur."!cursor_pos"($I11)
+ ($P10) = rx1163_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1163_pos, "")
+ rx1163_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_1168_done
+ rxcap_1168_fail:
+ goto rx1163_fail
+ rxcap_1168_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)
+ rx1163_cur."!cursor_pos"(rx1163_pos)
+ $P10 = rx1163_cur."O"("%tight_and, :pasttype<if>")
+ unless $P10, rx1163_fail
+ rx1163_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1160_pos = $P10."pos"()
+ rx1163_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
+ rx1163_cur."!cursor_pass"(rx1163_pos, "infix:sym<&&>")
+ rx1163_cur."!cursor_debug"("PASS ", "infix:sym<&&>", " at pos=", rx1163_pos)
+ .return (rx1163_cur)
+ rx1163_fail:
+.annotate "line", 421
+ (rx1163_rep, rx1163_pos, $I10, $P10) = rx1163_cur."!mark_fail"(0)
+ lt rx1163_pos, -1, rx1163_done
+ eq rx1163_pos, -1, rx1163_fail
jump $I10
- rx1160_done:
- rx1160_cur."!cursor_fail"()
- rx1160_cur."!cursor_debug"("FAIL ", "infix:sym<&&>")
- .return (rx1160_cur)
+ rx1163_done:
+ rx1163_cur."!cursor_fail"()
+ rx1163_cur."!cursor_debug"("FAIL ", "infix:sym<&&>")
+ .return (rx1163_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("298_1271336396.90314") :method
+.annotate "line", 421
+ $P1165 = self."!PREFIX__!subrule"("O", "&&")
+ new $P1166, "ResizablePMCArray"
+ push $P1166, $P1165
+ .return ($P1166)
.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("299_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1170_tgt
+ .local int rx1170_pos
+ .local int rx1170_off
+ .local int rx1170_eos
+ .local int rx1170_rep
+ .local pmc rx1170_cur
+ (rx1170_cur, rx1170_pos, rx1170_tgt) = self."!cursor_start"()
+ rx1170_cur."!cursor_debug"("START ", "infix:sym<||>")
+ .lex unicode:"$\x{a2}", rx1170_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1170_eos, rx1170_tgt
+ set rx1170_off, 0
+ lt rx1170_pos, 2, rx1170_start
+ sub rx1170_off, rx1170_pos, 1
+ substr rx1170_tgt, rx1170_tgt, rx1170_off
+ rx1170_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1174_done
+ goto rxscan1174_scan
+ rxscan1174_loop:
+ ($P10) = rx1170_cur."from"()
+ inc $P10
+ set rx1170_pos, $P10
+ ge rx1170_pos, rx1170_eos, rxscan1174_done
+ rxscan1174_scan:
+ set_addr $I10, rxscan1174_loop
+ rx1170_cur."!mark_push"(0, rx1170_pos, $I10)
+ rxscan1174_done:
+.annotate "line", 507
# rx subcapture "sym"
- set_addr $I10, rxcap_1172_fail
- rx1167_cur."!mark_push"(0, rx1167_pos, $I10)
+ set_addr $I10, rxcap_1175_fail
+ rx1170_cur."!mark_push"(0, rx1170_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, rx1170_pos, 2
+ gt $I11, rx1170_eos, rx1170_fail
+ sub $I11, rx1170_pos, rx1170_off
+ substr $S10, rx1170_tgt, $I11, 2
+ ne $S10, "||", rx1170_fail
+ add rx1170_pos, 2
+ set_addr $I10, rxcap_1175_fail
+ ($I12, $I11) = rx1170_cur."!mark_peek"($I10)
+ rx1170_cur."!cursor_pos"($I11)
+ ($P10) = rx1170_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1170_pos, "")
+ rx1170_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_1175_done
+ rxcap_1175_fail:
+ goto rx1170_fail
+ rxcap_1175_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)
+ rx1170_cur."!cursor_pos"(rx1170_pos)
+ $P10 = rx1170_cur."O"("%tight_or, :pasttype<unless>")
+ unless $P10, rx1170_fail
+ rx1170_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1167_pos = $P10."pos"()
+ rx1170_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
+ rx1170_cur."!cursor_pass"(rx1170_pos, "infix:sym<||>")
+ rx1170_cur."!cursor_debug"("PASS ", "infix:sym<||>", " at pos=", rx1170_pos)
+ .return (rx1170_cur)
+ rx1170_fail:
+.annotate "line", 421
+ (rx1170_rep, rx1170_pos, $I10, $P10) = rx1170_cur."!mark_fail"(0)
+ lt rx1170_pos, -1, rx1170_done
+ eq rx1170_pos, -1, rx1170_fail
jump $I10
- rx1167_done:
- rx1167_cur."!cursor_fail"()
- rx1167_cur."!cursor_debug"("FAIL ", "infix:sym<||>")
- .return (rx1167_cur)
+ rx1170_done:
+ rx1170_cur."!cursor_fail"()
+ rx1170_cur."!cursor_debug"("FAIL ", "infix:sym<||>")
+ .return (rx1170_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("300_1271336396.90314") :method
+.annotate "line", 421
+ $P1172 = self."!PREFIX__!subrule"("O", "||")
+ new $P1173, "ResizablePMCArray"
+ push $P1173, $P1172
+ .return ($P1173)
.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("301_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1177_tgt
+ .local int rx1177_pos
+ .local int rx1177_off
+ .local int rx1177_eos
+ .local int rx1177_rep
+ .local pmc rx1177_cur
+ (rx1177_cur, rx1177_pos, rx1177_tgt) = self."!cursor_start"()
+ rx1177_cur."!cursor_debug"("START ", "infix:sym<//>")
+ .lex unicode:"$\x{a2}", rx1177_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1177_eos, rx1177_tgt
+ set rx1177_off, 0
+ lt rx1177_pos, 2, rx1177_start
+ sub rx1177_off, rx1177_pos, 1
+ substr rx1177_tgt, rx1177_tgt, rx1177_off
+ rx1177_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1181_done
+ goto rxscan1181_scan
+ rxscan1181_loop:
+ ($P10) = rx1177_cur."from"()
+ inc $P10
+ set rx1177_pos, $P10
+ ge rx1177_pos, rx1177_eos, rxscan1181_done
+ rxscan1181_scan:
+ set_addr $I10, rxscan1181_loop
+ rx1177_cur."!mark_push"(0, rx1177_pos, $I10)
+ rxscan1181_done:
+.annotate "line", 508
# rx subcapture "sym"
- set_addr $I10, rxcap_1179_fail
- rx1174_cur."!mark_push"(0, rx1174_pos, $I10)
+ set_addr $I10, rxcap_1182_fail
+ rx1177_cur."!mark_push"(0, rx1177_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, rx1177_pos, 2
+ gt $I11, rx1177_eos, rx1177_fail
+ sub $I11, rx1177_pos, rx1177_off
+ substr $S10, rx1177_tgt, $I11, 2
+ ne $S10, "//", rx1177_fail
+ add rx1177_pos, 2
+ set_addr $I10, rxcap_1182_fail
+ ($I12, $I11) = rx1177_cur."!mark_peek"($I10)
+ rx1177_cur."!cursor_pos"($I11)
+ ($P10) = rx1177_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1177_pos, "")
+ rx1177_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_1182_done
+ rxcap_1182_fail:
+ goto rx1177_fail
+ rxcap_1182_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)
+ rx1177_cur."!cursor_pos"(rx1177_pos)
+ $P10 = rx1177_cur."O"("%tight_or, :pasttype<def_or>")
+ unless $P10, rx1177_fail
+ rx1177_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1174_pos = $P10."pos"()
+ rx1177_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
+ rx1177_cur."!cursor_pass"(rx1177_pos, "infix:sym<//>")
+ rx1177_cur."!cursor_debug"("PASS ", "infix:sym<//>", " at pos=", rx1177_pos)
+ .return (rx1177_cur)
+ rx1177_fail:
+.annotate "line", 421
+ (rx1177_rep, rx1177_pos, $I10, $P10) = rx1177_cur."!mark_fail"(0)
+ lt rx1177_pos, -1, rx1177_done
+ eq rx1177_pos, -1, rx1177_fail
jump $I10
- rx1174_done:
- rx1174_cur."!cursor_fail"()
- rx1174_cur."!cursor_debug"("FAIL ", "infix:sym<//>")
- .return (rx1174_cur)
+ rx1177_done:
+ rx1177_cur."!cursor_fail"()
+ rx1177_cur."!cursor_debug"("FAIL ", "infix:sym<//>")
+ .return (rx1177_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("302_1271336396.90314") :method
+.annotate "line", 421
+ $P1179 = self."!PREFIX__!subrule"("O", "//")
+ new $P1180, "ResizablePMCArray"
+ push $P1180, $P1179
+ .return ($P1180)
.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("303_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1184_tgt
+ .local int rx1184_pos
+ .local int rx1184_off
+ .local int rx1184_eos
+ .local int rx1184_rep
+ .local pmc rx1184_cur
+ (rx1184_cur, rx1184_pos, rx1184_tgt) = self."!cursor_start"()
+ rx1184_cur."!cursor_debug"("START ", "infix:sym<?? !!>")
+ .lex unicode:"$\x{a2}", rx1184_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1184_eos, rx1184_tgt
+ set rx1184_off, 0
+ lt rx1184_pos, 2, rx1184_start
+ sub rx1184_off, rx1184_pos, 1
+ substr rx1184_tgt, rx1184_tgt, rx1184_off
+ rx1184_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1188_done
+ goto rxscan1188_scan
+ rxscan1188_loop:
+ ($P10) = rx1184_cur."from"()
+ inc $P10
+ set rx1184_pos, $P10
+ ge rx1184_pos, rx1184_eos, rxscan1188_done
+ rxscan1188_scan:
+ set_addr $I10, rxscan1188_loop
+ rx1184_cur."!mark_push"(0, rx1184_pos, $I10)
+ rxscan1188_done:
+.annotate "line", 511
# 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, rx1184_pos, 2
+ gt $I11, rx1184_eos, rx1184_fail
+ sub $I11, rx1184_pos, rx1184_off
+ substr $S10, rx1184_tgt, $I11, 2
+ ne $S10, "??", rx1184_fail
+ add rx1184_pos, 2
+.annotate "line", 512
+ # rx subrule "ws" subtype=method negate=
+ rx1184_cur."!cursor_pos"(rx1184_pos)
+ $P10 = rx1184_cur."ws"()
+ unless $P10, rx1184_fail
+ rx1184_pos = $P10."pos"()
+.annotate "line", 513
# 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)
+ rx1184_cur."!cursor_pos"(rx1184_pos)
+ $P10 = rx1184_cur."EXPR"("i=")
+ unless $P10, rx1184_fail
+ rx1184_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("EXPR")
- rx1181_pos = $P10."pos"()
-.annotate "line", 510
+ rx1184_pos = $P10."pos"()
+.annotate "line", 514
# 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, rx1184_pos, 2
+ gt $I11, rx1184_eos, rx1184_fail
+ sub $I11, rx1184_pos, rx1184_off
+ substr $S10, rx1184_tgt, $I11, 2
+ ne $S10, "!!", rx1184_fail
+ add rx1184_pos, 2
+.annotate "line", 515
# 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)
+ rx1184_cur."!cursor_pos"(rx1184_pos)
+ $P10 = rx1184_cur."O"("%conditional, :reducecheck<ternary>, :pasttype<if>")
+ unless $P10, rx1184_fail
+ rx1184_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1181_pos = $P10."pos"()
-.annotate "line", 506
+ rx1184_pos = $P10."pos"()
+.annotate "line", 510
# 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
+ rx1184_cur."!cursor_pass"(rx1184_pos, "infix:sym<?? !!>")
+ rx1184_cur."!cursor_debug"("PASS ", "infix:sym<?? !!>", " at pos=", rx1184_pos)
+ .return (rx1184_cur)
+ rx1184_fail:
+.annotate "line", 421
+ (rx1184_rep, rx1184_pos, $I10, $P10) = rx1184_cur."!mark_fail"(0)
+ lt rx1184_pos, -1, rx1184_done
+ eq rx1184_pos, -1, rx1184_fail
jump $I10
- rx1181_done:
- rx1181_cur."!cursor_fail"()
- rx1181_cur."!cursor_debug"("FAIL ", "infix:sym<?? !!>")
- .return (rx1181_cur)
+ rx1184_done:
+ rx1184_cur."!cursor_fail"()
+ rx1184_cur."!cursor_debug"("FAIL ", "infix:sym<?? !!>")
+ .return (rx1184_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("304_1271336396.90314") :method
+.annotate "line", 421
+ $P1186 = self."!PREFIX__!subrule"("", "??")
+ new $P1187, "ResizablePMCArray"
+ push $P1187, $P1186
+ .return ($P1187)
.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("305_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1190_tgt
+ .local int rx1190_pos
+ .local int rx1190_off
+ .local int rx1190_eos
+ .local int rx1190_rep
+ .local pmc rx1190_cur
+ (rx1190_cur, rx1190_pos, rx1190_tgt) = self."!cursor_start"()
+ rx1190_cur."!cursor_debug"("START ", "infix:sym<=>")
+ .lex unicode:"$\x{a2}", rx1190_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1190_eos, rx1190_tgt
+ set rx1190_off, 0
+ lt rx1190_pos, 2, rx1190_start
+ sub rx1190_off, rx1190_pos, 1
+ substr rx1190_tgt, rx1190_tgt, rx1190_off
+ rx1190_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1194_done
+ goto rxscan1194_scan
+ rxscan1194_loop:
+ ($P10) = rx1190_cur."from"()
+ inc $P10
+ set rx1190_pos, $P10
+ ge rx1190_pos, rx1190_eos, rxscan1194_done
+ rxscan1194_scan:
+ set_addr $I10, rxscan1194_loop
+ rx1190_cur."!mark_push"(0, rx1190_pos, $I10)
+ rxscan1194_done:
+.annotate "line", 519
# rx subcapture "sym"
- set_addr $I10, rxcap_1192_fail
- rx1187_cur."!mark_push"(0, rx1187_pos, $I10)
+ set_addr $I10, rxcap_1195_fail
+ rx1190_cur."!mark_push"(0, rx1190_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, rx1190_pos, 1
+ gt $I11, rx1190_eos, rx1190_fail
+ sub $I11, rx1190_pos, rx1190_off
+ substr $S10, rx1190_tgt, $I11, 1
+ ne $S10, "=", rx1190_fail
+ add rx1190_pos, 1
+ set_addr $I10, rxcap_1195_fail
+ ($I12, $I11) = rx1190_cur."!mark_peek"($I10)
+ rx1190_cur."!cursor_pos"($I11)
+ ($P10) = rx1190_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1190_pos, "")
+ rx1190_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_1195_done
+ rxcap_1195_fail:
+ goto rx1190_fail
+ rxcap_1195_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
+ rx1190_cur."!cursor_pos"(rx1190_pos)
+ $P10 = rx1190_cur."panic"("Assignment (\"=\") not supported in NQP, use \":=\" instead")
+ unless $P10, rx1190_fail
+ rx1190_pos = $P10."pos"()
+.annotate "line", 518
# 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
+ rx1190_cur."!cursor_pass"(rx1190_pos, "infix:sym<=>")
+ rx1190_cur."!cursor_debug"("PASS ", "infix:sym<=>", " at pos=", rx1190_pos)
+ .return (rx1190_cur)
+ rx1190_fail:
+.annotate "line", 421
+ (rx1190_rep, rx1190_pos, $I10, $P10) = rx1190_cur."!mark_fail"(0)
+ lt rx1190_pos, -1, rx1190_done
+ eq rx1190_pos, -1, rx1190_fail
jump $I10
- rx1187_done:
- rx1187_cur."!cursor_fail"()
- rx1187_cur."!cursor_debug"("FAIL ", "infix:sym<=>")
- .return (rx1187_cur)
+ rx1190_done:
+ rx1190_cur."!cursor_fail"()
+ rx1190_cur."!cursor_debug"("FAIL ", "infix:sym<=>")
+ .return (rx1190_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("306_1271336396.90314") :method
+.annotate "line", 421
+ $P1192 = self."!PREFIX__!subrule"("", "=")
+ new $P1193, "ResizablePMCArray"
+ push $P1193, $P1192
+ .return ($P1193)
.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("307_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1197_tgt
+ .local int rx1197_pos
+ .local int rx1197_off
+ .local int rx1197_eos
+ .local int rx1197_rep
+ .local pmc rx1197_cur
+ (rx1197_cur, rx1197_pos, rx1197_tgt) = self."!cursor_start"()
+ rx1197_cur."!cursor_debug"("START ", "infix:sym<:=>")
+ .lex unicode:"$\x{a2}", rx1197_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1197_eos, rx1197_tgt
+ set rx1197_off, 0
+ lt rx1197_pos, 2, rx1197_start
+ sub rx1197_off, rx1197_pos, 1
+ substr rx1197_tgt, rx1197_tgt, rx1197_off
+ rx1197_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1201_done
+ goto rxscan1201_scan
+ rxscan1201_loop:
+ ($P10) = rx1197_cur."from"()
+ inc $P10
+ set rx1197_pos, $P10
+ ge rx1197_pos, rx1197_eos, rxscan1201_done
+ rxscan1201_scan:
+ set_addr $I10, rxscan1201_loop
+ rx1197_cur."!mark_push"(0, rx1197_pos, $I10)
+ rxscan1201_done:
+.annotate "line", 521
# rx subcapture "sym"
- set_addr $I10, rxcap_1199_fail
- rx1194_cur."!mark_push"(0, rx1194_pos, $I10)
+ set_addr $I10, rxcap_1202_fail
+ rx1197_cur."!mark_push"(0, rx1197_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, rx1197_pos, 2
+ gt $I11, rx1197_eos, rx1197_fail
+ sub $I11, rx1197_pos, rx1197_off
+ substr $S10, rx1197_tgt, $I11, 2
+ ne $S10, ":=", rx1197_fail
+ add rx1197_pos, 2
+ set_addr $I10, rxcap_1202_fail
+ ($I12, $I11) = rx1197_cur."!mark_peek"($I10)
+ rx1197_cur."!cursor_pos"($I11)
+ ($P10) = rx1197_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1197_pos, "")
+ rx1197_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_1202_done
+ rxcap_1202_fail:
+ goto rx1197_fail
+ rxcap_1202_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)
+ rx1197_cur."!cursor_pos"(rx1197_pos)
+ $P10 = rx1197_cur."O"("%assignment, :pasttype<bind>")
+ unless $P10, rx1197_fail
+ rx1197_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1194_pos = $P10."pos"()
+ rx1197_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
+ rx1197_cur."!cursor_pass"(rx1197_pos, "infix:sym<:=>")
+ rx1197_cur."!cursor_debug"("PASS ", "infix:sym<:=>", " at pos=", rx1197_pos)
+ .return (rx1197_cur)
+ rx1197_fail:
+.annotate "line", 421
+ (rx1197_rep, rx1197_pos, $I10, $P10) = rx1197_cur."!mark_fail"(0)
+ lt rx1197_pos, -1, rx1197_done
+ eq rx1197_pos, -1, rx1197_fail
jump $I10
- rx1194_done:
- rx1194_cur."!cursor_fail"()
- rx1194_cur."!cursor_debug"("FAIL ", "infix:sym<:=>")
- .return (rx1194_cur)
+ rx1197_done:
+ rx1197_cur."!cursor_fail"()
+ rx1197_cur."!cursor_debug"("FAIL ", "infix:sym<:=>")
+ .return (rx1197_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("308_1271336396.90314") :method
+.annotate "line", 421
+ $P1199 = self."!PREFIX__!subrule"("O", ":=")
+ new $P1200, "ResizablePMCArray"
+ push $P1200, $P1199
+ .return ($P1200)
.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("309_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1204_tgt
+ .local int rx1204_pos
+ .local int rx1204_off
+ .local int rx1204_eos
+ .local int rx1204_rep
+ .local pmc rx1204_cur
+ (rx1204_cur, rx1204_pos, rx1204_tgt) = self."!cursor_start"()
+ rx1204_cur."!cursor_debug"("START ", "infix:sym<::=>")
+ .lex unicode:"$\x{a2}", rx1204_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1204_eos, rx1204_tgt
+ set rx1204_off, 0
+ lt rx1204_pos, 2, rx1204_start
+ sub rx1204_off, rx1204_pos, 1
+ substr rx1204_tgt, rx1204_tgt, rx1204_off
+ rx1204_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1208_done
+ goto rxscan1208_scan
+ rxscan1208_loop:
+ ($P10) = rx1204_cur."from"()
+ inc $P10
+ set rx1204_pos, $P10
+ ge rx1204_pos, rx1204_eos, rxscan1208_done
+ rxscan1208_scan:
+ set_addr $I10, rxscan1208_loop
+ rx1204_cur."!mark_push"(0, rx1204_pos, $I10)
+ rxscan1208_done:
+.annotate "line", 522
# rx subcapture "sym"
- set_addr $I10, rxcap_1206_fail
- rx1201_cur."!mark_push"(0, rx1201_pos, $I10)
+ set_addr $I10, rxcap_1209_fail
+ rx1204_cur."!mark_push"(0, rx1204_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, rx1204_pos, 3
+ gt $I11, rx1204_eos, rx1204_fail
+ sub $I11, rx1204_pos, rx1204_off
+ substr $S10, rx1204_tgt, $I11, 3
+ ne $S10, "::=", rx1204_fail
+ add rx1204_pos, 3
+ set_addr $I10, rxcap_1209_fail
+ ($I12, $I11) = rx1204_cur."!mark_peek"($I10)
+ rx1204_cur."!cursor_pos"($I11)
+ ($P10) = rx1204_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1204_pos, "")
+ rx1204_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_1209_done
+ rxcap_1209_fail:
+ goto rx1204_fail
+ rxcap_1209_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)
+ rx1204_cur."!cursor_pos"(rx1204_pos)
+ $P10 = rx1204_cur."O"("%assignment, :pasttype<bind>")
+ unless $P10, rx1204_fail
+ rx1204_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1201_pos = $P10."pos"()
+ rx1204_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
+ rx1204_cur."!cursor_pass"(rx1204_pos, "infix:sym<::=>")
+ rx1204_cur."!cursor_debug"("PASS ", "infix:sym<::=>", " at pos=", rx1204_pos)
+ .return (rx1204_cur)
+ rx1204_fail:
+.annotate "line", 421
+ (rx1204_rep, rx1204_pos, $I10, $P10) = rx1204_cur."!mark_fail"(0)
+ lt rx1204_pos, -1, rx1204_done
+ eq rx1204_pos, -1, rx1204_fail
jump $I10
- rx1201_done:
- rx1201_cur."!cursor_fail"()
- rx1201_cur."!cursor_debug"("FAIL ", "infix:sym<::=>")
- .return (rx1201_cur)
+ rx1204_done:
+ rx1204_cur."!cursor_fail"()
+ rx1204_cur."!cursor_debug"("FAIL ", "infix:sym<::=>")
+ .return (rx1204_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("310_1271336396.90314") :method
+.annotate "line", 421
+ $P1206 = self."!PREFIX__!subrule"("O", "::=")
+ new $P1207, "ResizablePMCArray"
+ push $P1207, $P1206
+ .return ($P1207)
.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("311_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1211_tgt
+ .local int rx1211_pos
+ .local int rx1211_off
+ .local int rx1211_eos
+ .local int rx1211_rep
+ .local pmc rx1211_cur
+ (rx1211_cur, rx1211_pos, rx1211_tgt) = self."!cursor_start"()
+ rx1211_cur."!cursor_debug"("START ", "infix:sym<,>")
+ .lex unicode:"$\x{a2}", rx1211_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1211_eos, rx1211_tgt
+ set rx1211_off, 0
+ lt rx1211_pos, 2, rx1211_start
+ sub rx1211_off, rx1211_pos, 1
+ substr rx1211_tgt, rx1211_tgt, rx1211_off
+ rx1211_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1215_done
+ goto rxscan1215_scan
+ rxscan1215_loop:
+ ($P10) = rx1211_cur."from"()
+ inc $P10
+ set rx1211_pos, $P10
+ ge rx1211_pos, rx1211_eos, rxscan1215_done
+ rxscan1215_scan:
+ set_addr $I10, rxscan1215_loop
+ rx1211_cur."!mark_push"(0, rx1211_pos, $I10)
+ rxscan1215_done:
+.annotate "line", 524
# rx subcapture "sym"
- set_addr $I10, rxcap_1213_fail
- rx1208_cur."!mark_push"(0, rx1208_pos, $I10)
+ set_addr $I10, rxcap_1216_fail
+ rx1211_cur."!mark_push"(0, rx1211_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, rx1211_pos, 1
+ gt $I11, rx1211_eos, rx1211_fail
+ sub $I11, rx1211_pos, rx1211_off
+ substr $S10, rx1211_tgt, $I11, 1
+ ne $S10, ",", rx1211_fail
+ add rx1211_pos, 1
+ set_addr $I10, rxcap_1216_fail
+ ($I12, $I11) = rx1211_cur."!mark_peek"($I10)
+ rx1211_cur."!cursor_pos"($I11)
+ ($P10) = rx1211_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1211_pos, "")
+ rx1211_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_1216_done
+ rxcap_1216_fail:
+ goto rx1211_fail
+ rxcap_1216_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)
+ rx1211_cur."!cursor_pos"(rx1211_pos)
+ $P10 = rx1211_cur."O"("%comma, :pasttype<list>")
+ unless $P10, rx1211_fail
+ rx1211_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1208_pos = $P10."pos"()
+ rx1211_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
+ rx1211_cur."!cursor_pass"(rx1211_pos, "infix:sym<,>")
+ rx1211_cur."!cursor_debug"("PASS ", "infix:sym<,>", " at pos=", rx1211_pos)
+ .return (rx1211_cur)
+ rx1211_fail:
+.annotate "line", 421
+ (rx1211_rep, rx1211_pos, $I10, $P10) = rx1211_cur."!mark_fail"(0)
+ lt rx1211_pos, -1, rx1211_done
+ eq rx1211_pos, -1, rx1211_fail
jump $I10
- rx1208_done:
- rx1208_cur."!cursor_fail"()
- rx1208_cur."!cursor_debug"("FAIL ", "infix:sym<,>")
- .return (rx1208_cur)
+ rx1211_done:
+ rx1211_cur."!cursor_fail"()
+ rx1211_cur."!cursor_debug"("FAIL ", "infix:sym<,>")
+ .return (rx1211_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("312_1271336396.90314") :method
+.annotate "line", 421
+ $P1213 = self."!PREFIX__!subrule"("O", ",")
+ new $P1214, "ResizablePMCArray"
+ push $P1214, $P1213
+ .return ($P1214)
.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("313_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1218_tgt
+ .local int rx1218_pos
+ .local int rx1218_off
+ .local int rx1218_eos
+ .local int rx1218_rep
+ .local pmc rx1218_cur
+ (rx1218_cur, rx1218_pos, rx1218_tgt) = self."!cursor_start"()
+ rx1218_cur."!cursor_debug"("START ", "prefix:sym<return>")
+ .lex unicode:"$\x{a2}", rx1218_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1218_eos, rx1218_tgt
+ set rx1218_off, 0
+ lt rx1218_pos, 2, rx1218_start
+ sub rx1218_off, rx1218_pos, 1
+ substr rx1218_tgt, rx1218_tgt, rx1218_off
+ rx1218_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1221_done
+ goto rxscan1221_scan
+ rxscan1221_loop:
+ ($P10) = rx1218_cur."from"()
+ inc $P10
+ set rx1218_pos, $P10
+ ge rx1218_pos, rx1218_eos, rxscan1221_done
+ rxscan1221_scan:
+ set_addr $I10, rxscan1221_loop
+ rx1218_cur."!mark_push"(0, rx1218_pos, $I10)
+ rxscan1221_done:
+.annotate "line", 526
# rx subcapture "sym"
- set_addr $I10, rxcap_1219_fail
- rx1215_cur."!mark_push"(0, rx1215_pos, $I10)
+ set_addr $I10, rxcap_1222_fail
+ rx1218_cur."!mark_push"(0, rx1218_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, rx1218_pos, 6
+ gt $I11, rx1218_eos, rx1218_fail
+ sub $I11, rx1218_pos, rx1218_off
+ substr $S10, rx1218_tgt, $I11, 6
+ ne $S10, "return", rx1218_fail
+ add rx1218_pos, 6
+ set_addr $I10, rxcap_1222_fail
+ ($I12, $I11) = rx1218_cur."!mark_peek"($I10)
+ rx1218_cur."!cursor_pos"($I11)
+ ($P10) = rx1218_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1218_pos, "")
+ rx1218_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_1222_done
+ rxcap_1222_fail:
+ goto rx1218_fail
+ rxcap_1222_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 rx1218_pos, rx1218_eos, rx1218_fail
+ sub $I10, rx1218_pos, rx1218_off
+ is_cclass $I11, 32, rx1218_tgt, $I10
+ unless $I11, rx1218_fail
+ inc rx1218_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)
+ rx1218_cur."!cursor_pos"(rx1218_pos)
+ $P10 = rx1218_cur."O"("%list_prefix, :pasttype<return>")
+ unless $P10, rx1218_fail
+ rx1218_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1215_pos = $P10."pos"()
+ rx1218_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
+ rx1218_cur."!cursor_pass"(rx1218_pos, "prefix:sym<return>")
+ rx1218_cur."!cursor_debug"("PASS ", "prefix:sym<return>", " at pos=", rx1218_pos)
+ .return (rx1218_cur)
+ rx1218_fail:
+.annotate "line", 421
+ (rx1218_rep, rx1218_pos, $I10, $P10) = rx1218_cur."!mark_fail"(0)
+ lt rx1218_pos, -1, rx1218_done
+ eq rx1218_pos, -1, rx1218_fail
jump $I10
- rx1215_done:
- rx1215_cur."!cursor_fail"()
- rx1215_cur."!cursor_debug"("FAIL ", "prefix:sym<return>")
- .return (rx1215_cur)
+ rx1218_done:
+ rx1218_cur."!cursor_fail"()
+ rx1218_cur."!cursor_debug"("FAIL ", "prefix:sym<return>")
+ .return (rx1218_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("314_1271336396.90314") :method
+.annotate "line", 421
+ new $P1220, "ResizablePMCArray"
+ push $P1220, "return"
+ .return ($P1220)
.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("315_1271336396.90314") :method :outer("11_1271336396.90314")
+.annotate "line", 421
+ .local string rx1224_tgt
+ .local int rx1224_pos
+ .local int rx1224_off
+ .local int rx1224_eos
+ .local int rx1224_rep
+ .local pmc rx1224_cur
+ (rx1224_cur, rx1224_pos, rx1224_tgt) = self."!cursor_start"()
+ rx1224_cur."!cursor_debug"("START ", "prefix:sym<make>")
+ .lex unicode:"$\x{a2}", rx1224_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1224_eos, rx1224_tgt
+ set rx1224_off, 0
+ lt rx1224_pos, 2, rx1224_start
+ sub rx1224_off, rx1224_pos, 1
+ substr rx1224_tgt, rx1224_tgt, rx1224_off
+ rx1224_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1227_done
+ goto rxscan1227_scan
+ rxscan1227_loop:
+ ($P10) = rx1224_cur."from"()
+ inc $P10
+ set rx1224_pos, $P10
+ ge rx1224_pos, rx1224_eos, rxscan1227_done
+ rxscan1227_scan:
+ set_addr $I10, rxscan1227_loop
+ rx1224_cur."!mark_push"(0, rx1224_pos, $I10)
+ rxscan1227_done:
+.annotate "line", 527
# rx subcapture "sym"
- set_addr $I10, rxcap_1225_fail
- rx1221_cur."!mark_push"(0, rx1221_pos, $I10)
+ set_addr $I10, rxcap_1228_fail
+ rx1224_cur."!mark_push"(0, rx1224_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, rx1224_pos, 4
+ gt $I11, rx1224_eos, rx1224_fail
+ sub $I11, rx1224_pos, rx1224_off
+ substr $S10, rx1224_tgt, $I11, 4
+ ne $S10, "make", rx1224_fail
+ add rx1224_pos, 4
+ set_addr $I10, rxcap_1228_fail
+ ($I12, $I11) = rx1224_cur."!mark_peek"($I10)
+ rx1224_cur."!cursor_pos"($I11)
+ ($P10) = rx1224_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1224_pos, "")
+ rx1224_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_1228_done
+ rxcap_1228_fail:
+ goto rx1224_fail
+ rxcap_1228_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 rx1224_pos, rx1224_eos, rx1224_fail
+ sub $I10, rx1224_pos, rx1224_off
+ is_cclass $I11, 32, rx1224_tgt, $I10
+ unless $I11, rx1224_fail
+ inc rx1224_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)
+ rx1224_cur."!cursor_pos"(rx1224_pos)
+ $P10 = rx1224_cur."O"("%list_prefix")
+ unless $P10, rx1224_fail
+ rx1224_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("O")
- rx1221_pos = $P10."pos"()
+ rx1224_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
+ rx1224_cur."!cursor_pass"(rx1224_pos, "prefix:sym<make>")
+ rx1224_cur."!cursor_debug"("PASS ", "prefix:sym<make>", " at pos=", rx1224_pos)
+ .return (rx1224_cur)
+ rx1224_fail:
+.annotate "line", 421
+ (rx1224_rep, rx1224_pos, $I10, $P10) = rx1224_cur."!mark_fail"(0)
+ lt rx1224_pos, -1, rx1224_done
+ eq rx1224_pos, -1, rx1224_fail
jump $I10
- rx1221_done:
- rx1221_cur."!cursor_fail"()
- rx1221_cur."!cursor_debug"("FAIL ", "prefix:sym<make>")
- .return (rx1221_cur)
+ rx1224_done:
+ rx1224_cur."!cursor_fail"()
+ rx1224_cur."!cursor_debug"("FAIL ", "prefix:sym<make>")
+ .return (rx1224_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("316_1271336396.90314") :method
+.annotate "line", 421
+ new $P1226, "ResizablePMCArray"
+ push $P1226, "make"
+ .return ($P1226)
.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("317_1271336396.90314") :method :outer("11_1271336396.90314")
+ .param pmc param_1232
+.annotate "line", 529
+ new $P1231, 'ExceptionHandler'
+ set_addr $P1231, control_1230
+ $P1231."handle_types"(58)
+ push_eh $P1231
.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']
+ .lex "$/", param_1232
+.annotate "line", 531
+ new $P1233, "Undef"
+ .lex "$t", $P1233
+ find_lex $P1234, "$/"
+ unless_null $P1234, vivify_343
+ $P1234 = root_new ['parrot';'ResizablePMCArray']
vivify_343:
- set $P1232, $P1231[0]
- unless_null $P1232, vivify_344
- new $P1232, "Undef"
+ set $P1235, $P1234[0]
+ unless_null $P1235, vivify_344
+ new $P1235, "Undef"
vivify_344:
- store_lex "$t", $P1232
- find_lex $P1233, "$/"
- unless_null $P1233, vivify_345
- $P1233 = root_new ['parrot';'ResizablePMCArray']
+ store_lex "$t", $P1235
+ find_lex $P1236, "$/"
+ unless_null $P1236, vivify_345
+ $P1236 = root_new ['parrot';'ResizablePMCArray']
vivify_345:
- set $P1234, $P1233[1]
- unless_null $P1234, vivify_346
- new $P1234, "Undef"
+ set $P1237, $P1236[1]
+ unless_null $P1237, vivify_346
+ new $P1237, "Undef"
vivify_346:
- find_lex $P1235, "$/"
- unless_null $P1235, vivify_347
- $P1235 = root_new ['parrot';'ResizablePMCArray']
- store_lex "$/", $P1235
+ find_lex $P1238, "$/"
+ unless_null $P1238, vivify_347
+ $P1238 = root_new ['parrot';'ResizablePMCArray']
+ store_lex "$/", $P1238
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 $P1238[0], $P1237
+ find_lex $P1239, "$t"
+ find_lex $P1240, "$/"
+ unless_null $P1240, vivify_348
+ $P1240 = root_new ['parrot';'ResizablePMCArray']
+ store_lex "$/", $P1240
vivify_348:
- set $P1237[1], $P1236
-.annotate "line", 525
- .return ($P1236)
- control_1227:
+ set $P1240[1], $P1239
+.annotate "line", 529
+ .return ($P1239)
+ control_1230:
.local pmc exception
.get_results (exception)
- getattribute $P1238, exception, "payload"
- .return ($P1238)
+ getattribute $P1241, exception, "payload"
+ .return ($P1241)
.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)
+.sub "_block1242" :subid("318_1271336396.90314") :outer("11_1271336396.90314")
+.annotate "line", 535
+ .const 'Sub' $P1276 = "329_1271336396.90314"
+ capture_lex $P1276
+ .const 'Sub' $P1263 = "326_1271336396.90314"
+ capture_lex $P1263
+ .const 'Sub' $P1258 = "324_1271336396.90314"
+ capture_lex $P1258
+ .const 'Sub' $P1253 = "322_1271336396.90314"
+ capture_lex $P1253
+ .const 'Sub' $P1244 = "319_1271336396.90314"
+ capture_lex $P1244
+ .const 'Sub' $P1276 = "329_1271336396.90314"
+ capture_lex $P1276
+ .return ($P1276)
.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
+.sub "metachar:sym<:my>" :subid("319_1271336396.90314") :method :outer("318_1271336396.90314")
+.annotate "line", 535
+ .const 'Sub' $P1250 = "321_1271336396.90314"
+ capture_lex $P1250
+ .local string rx1245_tgt
+ .local int rx1245_pos
+ .local int rx1245_off
+ .local int rx1245_eos
+ .local int rx1245_rep
+ .local pmc rx1245_cur
+ (rx1245_cur, rx1245_pos, rx1245_tgt) = self."!cursor_start"()
+ rx1245_cur."!cursor_debug"("START ", "metachar:sym<:my>")
+ .lex unicode:"$\x{a2}", rx1245_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1245_eos, rx1245_tgt
+ set rx1245_off, 0
+ lt rx1245_pos, 2, rx1245_start
+ sub rx1245_off, rx1245_pos, 1
+ substr rx1245_tgt, rx1245_tgt, rx1245_off
+ rx1245_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1248_done
+ goto rxscan1248_scan
+ rxscan1248_loop:
+ ($P10) = rx1245_cur."from"()
+ inc $P10
+ set rx1245_pos, $P10
+ ge rx1245_pos, rx1245_eos, rxscan1248_done
+ rxscan1248_scan:
+ set_addr $I10, rxscan1248_loop
+ rx1245_cur."!mark_push"(0, rx1245_pos, $I10)
+ rxscan1248_done:
+.annotate "line", 537
# 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
+ add $I11, rx1245_pos, 1
+ gt $I11, rx1245_eos, rx1245_fail
+ sub $I11, rx1245_pos, rx1245_off
+ substr $S10, rx1245_tgt, $I11, 1
+ ne $S10, ":", rx1245_fail
+ add rx1245_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
+ rx1245_cur."!cursor_pos"(rx1245_pos)
+ .const 'Sub' $P1250 = "321_1271336396.90314"
+ capture_lex $P1250
+ $P10 = rx1245_cur."before"($P1250)
+ unless $P10, rx1245_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)
+ rx1245_cur."!cursor_pos"(rx1245_pos)
+ $P10 = rx1245_cur."LANG"("MAIN", "statement")
+ unless $P10, rx1245_fail
+ rx1245_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("statement")
- rx1242_pos = $P10."pos"()
+ rx1245_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"()
+ rx1245_cur."!cursor_pos"(rx1245_pos)
+ $P10 = rx1245_cur."ws"()
+ unless $P10, rx1245_fail
+ rx1245_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
+ add $I11, rx1245_pos, 1
+ gt $I11, rx1245_eos, rx1245_fail
+ sub $I11, rx1245_pos, rx1245_off
+ substr $S10, rx1245_tgt, $I11, 1
+ ne $S10, ";", rx1245_fail
+ add rx1245_pos, 1
+.annotate "line", 536
# 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)
+ rx1245_cur."!cursor_pass"(rx1245_pos, "metachar:sym<:my>")
+ rx1245_cur."!cursor_debug"("PASS ", "metachar:sym<:my>", " at pos=", rx1245_pos)
+ .return (rx1245_cur)
+ rx1245_fail:
+.annotate "line", 535
+ (rx1245_rep, rx1245_pos, $I10, $P10) = rx1245_cur."!mark_fail"(0)
+ lt rx1245_pos, -1, rx1245_done
+ eq rx1245_pos, -1, rx1245_fail
+ jump $I10
+ rx1245_done:
+ rx1245_cur."!cursor_fail"()
+ rx1245_cur."!cursor_debug"("FAIL ", "metachar:sym<:my>")
+ .return (rx1245_cur)
.return ()
.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 "!PREFIX__metachar:sym<:my>" :subid("320_1271336396.90314") :method
+.annotate "line", 535
+ new $P1247, "ResizablePMCArray"
+ push $P1247, ":"
+ .return ($P1247)
.end
.namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>" :subid("322_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
+.sub "_block1249" :anon :subid("321_1271336396.90314") :method :outer("319_1271336396.90314")
+.annotate "line", 537
.local string rx1251_tgt
.local int rx1251_pos
.local int rx1251_off
@@ -15313,7 +15301,7 @@
.local int rx1251_rep
.local pmc rx1251_cur
(rx1251_cur, rx1251_pos, rx1251_tgt) = self."!cursor_start"()
- rx1251_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+ rx1251_cur."!cursor_debug"("START ", "")
.lex unicode:"$\x{a2}", rx1251_cur
.local pmc match
.lex "$/", match
@@ -15324,444 +15312,500 @@
substr rx1251_tgt, rx1251_tgt, rx1251_off
rx1251_start:
$I10 = self.'from'()
- ne $I10, -1, rxscan1254_done
- goto rxscan1254_scan
- rxscan1254_loop:
+ ne $I10, -1, rxscan1252_done
+ goto rxscan1252_scan
+ rxscan1252_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
+ ge rx1251_pos, rx1251_eos, rxscan1252_done
+ rxscan1252_scan:
+ set_addr $I10, rxscan1252_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"()
-.annotate "line", 536
+ rxscan1252_done:
+ # rx literal "my"
+ add $I11, rx1251_pos, 2
+ gt $I11, rx1251_eos, rx1251_fail
+ sub $I11, rx1251_pos, rx1251_off
+ substr $S10, rx1251_tgt, $I11, 2
+ ne $S10, "my", rx1251_fail
+ add rx1251_pos, 2
# rx pass
- rx1251_cur."!cursor_pass"(rx1251_pos, "metachar:sym<{ }>")
- rx1251_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1251_pos)
+ rx1251_cur."!cursor_pass"(rx1251_pos, "")
+ rx1251_cur."!cursor_debug"("PASS ", "", " 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<{ }>")
+ rx1251_cur."!cursor_debug"("FAIL ", "")
.return (rx1251_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 "metachar:sym<{ }>" :subid("322_1271336396.90314") :method :outer("318_1271336396.90314")
+.annotate "line", 535
+ .local string rx1254_tgt
+ .local int rx1254_pos
+ .local int rx1254_off
+ .local int rx1254_eos
+ .local int rx1254_rep
+ .local pmc rx1254_cur
+ (rx1254_cur, rx1254_pos, rx1254_tgt) = self."!cursor_start"()
+ rx1254_cur."!cursor_debug"("START ", "metachar:sym<{ }>")
+ .lex unicode:"$\x{a2}", rx1254_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1254_eos, rx1254_tgt
+ set rx1254_off, 0
+ lt rx1254_pos, 2, rx1254_start
+ sub rx1254_off, rx1254_pos, 1
+ substr rx1254_tgt, rx1254_tgt, rx1254_off
+ rx1254_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1257_done
+ goto rxscan1257_scan
+ rxscan1257_loop:
+ ($P10) = rx1254_cur."from"()
+ inc $P10
+ set rx1254_pos, $P10
+ ge rx1254_pos, rx1254_eos, rxscan1257_done
+ rxscan1257_scan:
+ set_addr $I10, rxscan1257_loop
+ rx1254_cur."!mark_push"(0, rx1254_pos, $I10)
+ rxscan1257_done:
+.annotate "line", 541
+ # rx enumcharlist negate=0 zerowidth
+ ge rx1254_pos, rx1254_eos, rx1254_fail
+ sub $I10, rx1254_pos, rx1254_off
+ substr $S10, rx1254_tgt, $I10, 1
+ index $I11, "{", $S10
+ lt $I11, 0, rx1254_fail
+ # rx subrule "codeblock" subtype=capture negate=
+ rx1254_cur."!cursor_pos"(rx1254_pos)
+ $P10 = rx1254_cur."codeblock"()
+ unless $P10, rx1254_fail
+ rx1254_cur."!mark_push"(0, -1, 0, $P10)
+ $P10."!cursor_names"("codeblock")
+ rx1254_pos = $P10."pos"()
+.annotate "line", 540
+ # rx pass
+ rx1254_cur."!cursor_pass"(rx1254_pos, "metachar:sym<{ }>")
+ rx1254_cur."!cursor_debug"("PASS ", "metachar:sym<{ }>", " at pos=", rx1254_pos)
+ .return (rx1254_cur)
+ rx1254_fail:
+.annotate "line", 535
+ (rx1254_rep, rx1254_pos, $I10, $P10) = rx1254_cur."!mark_fail"(0)
+ lt rx1254_pos, -1, rx1254_done
+ eq rx1254_pos, -1, rx1254_fail
+ jump $I10
+ rx1254_done:
+ rx1254_cur."!cursor_fail"()
+ rx1254_cur."!cursor_debug"("FAIL ", "metachar:sym<{ }>")
+ .return (rx1254_cur)
+ .return ()
.end
.namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>" :subid("324_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .local string rx1256_tgt
- .local int rx1256_pos
- .local int rx1256_off
- .local int rx1256_eos
- .local int rx1256_rep
- .local pmc rx1256_cur
- (rx1256_cur, rx1256_pos, rx1256_tgt) = self."!cursor_start"()
- rx1256_cur."!cursor_debug"("START ", "assertion:sym<{ }>")
- .lex unicode:"$\x{a2}", rx1256_cur
- .local pmc match
- .lex "$/", match
- length rx1256_eos, rx1256_tgt
- set rx1256_off, 0
- lt rx1256_pos, 2, rx1256_start
- sub rx1256_off, rx1256_pos, 1
- substr rx1256_tgt, rx1256_tgt, rx1256_off
- rx1256_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1259_done
- goto rxscan1259_scan
- rxscan1259_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
- rx1256_cur."!mark_push"(0, rx1256_pos, $I10)
- rxscan1259_done:
-.annotate "line", 541
+.sub "!PREFIX__metachar:sym<{ }>" :subid("323_1271336396.90314") :method
+.annotate "line", 535
+ new $P1256, "ResizablePMCArray"
+ push $P1256, "{"
+ .return ($P1256)
+.end
+
+
+.namespace ["NQP";"Regex"]
+.sub "assertion:sym<{ }>" :subid("324_1271336396.90314") :method :outer("318_1271336396.90314")
+.annotate "line", 535
+ .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 ", "assertion: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", 545
# rx enumcharlist negate=0 zerowidth
- ge rx1256_pos, rx1256_eos, rx1256_fail
- sub $I10, rx1256_pos, rx1256_off
- substr $S10, rx1256_tgt, $I10, 1
+ 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, rx1256_fail
+ lt $I11, 0, rx1259_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)
+ 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")
- rx1256_pos = $P10."pos"()
-.annotate "line", 540
+ rx1259_pos = $P10."pos"()
+.annotate "line", 544
# rx pass
- rx1256_cur."!cursor_pass"(rx1256_pos, "assertion:sym<{ }>")
- rx1256_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1256_pos)
- .return (rx1256_cur)
- rx1256_fail:
-.annotate "line", 531
- (rx1256_rep, rx1256_pos, $I10, $P10) = rx1256_cur."!mark_fail"(0)
- lt rx1256_pos, -1, rx1256_done
- eq rx1256_pos, -1, rx1256_fail
- jump $I10
- rx1256_done:
- rx1256_cur."!cursor_fail"()
- rx1256_cur."!cursor_debug"("FAIL ", "assertion:sym<{ }>")
- .return (rx1256_cur)
+ rx1259_cur."!cursor_pass"(rx1259_pos, "assertion:sym<{ }>")
+ rx1259_cur."!cursor_debug"("PASS ", "assertion:sym<{ }>", " at pos=", rx1259_pos)
+ .return (rx1259_cur)
+ rx1259_fail:
+.annotate "line", 535
+ (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 ", "assertion:sym<{ }>")
+ .return (rx1259_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 "!PREFIX__assertion:sym<{ }>" :subid("325_1271336396.90314") :method
+.annotate "line", 535
+ new $P1261, "ResizablePMCArray"
+ push $P1261, "{"
+ .return ($P1261)
.end
.namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>" :subid("326_1267204702.05125") :method :outer("318_1267204702.05125")
-.annotate "line", 531
- .const 'Sub' $P1269 = "328_1267204702.05125"
- capture_lex $P1269
- .local string rx1261_tgt
- .local int rx1261_pos
- .local int rx1261_off
- .local int rx1261_eos
- .local int rx1261_rep
- .local pmc rx1261_cur
- (rx1261_cur, rx1261_pos, rx1261_tgt) = self."!cursor_start"()
- rx1261_cur."!cursor_debug"("START ", "assertion:sym<name>")
- rx1261_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
- .lex unicode:"$\x{a2}", rx1261_cur
- .local pmc match
- .lex "$/", match
- length rx1261_eos, rx1261_tgt
- set rx1261_off, 0
- lt rx1261_pos, 2, rx1261_start
- sub rx1261_off, rx1261_pos, 1
- substr rx1261_tgt, rx1261_tgt, rx1261_off
- rx1261_start:
- $I10 = self.'from'()
- ne $I10, -1, rxscan1264_done
- goto rxscan1264_scan
- rxscan1264_loop:
- ($P10) = rx1261_cur."from"()
- inc $P10
- set rx1261_pos, $P10
- ge rx1261_pos, rx1261_eos, rxscan1264_done
- rxscan1264_scan:
- set_addr $I10, rxscan1264_loop
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
- rxscan1264_done:
-.annotate "line", 545
+.sub "assertion:sym<name>" :subid("326_1271336396.90314") :method :outer("318_1271336396.90314")
+.annotate "line", 535
+ .const 'Sub' $P1272 = "328_1271336396.90314"
+ capture_lex $P1272
+ .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<name>")
+ rx1264_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+ .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", 549
# rx subcapture "longname"
- set_addr $I10, rxcap_1265_fail
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
+ set_addr $I10, rxcap_1268_fail
+ rx1264_cur."!mark_push"(0, rx1264_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, rx1264_pos, rx1264_off
+ find_not_cclass $I11, 8192, rx1264_tgt, $I10, rx1264_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, rx1264_fail
+ add rx1264_pos, rx1264_off, $I11
+ set_addr $I10, rxcap_1268_fail
+ ($I12, $I11) = rx1264_cur."!mark_peek"($I10)
+ rx1264_cur."!cursor_pos"($I11)
+ ($P10) = rx1264_cur."!cursor_start"()
+ $P10."!cursor_pass"(rx1264_pos, "")
+ rx1264_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("longname")
- goto rxcap_1265_done
- rxcap_1265_fail:
- goto rx1261_fail
- rxcap_1265_done:
-.annotate "line", 552
- # rx rxquantr1266 ** 0..1
- set_addr $I1272, rxquantr1266_done
- rx1261_cur."!mark_push"(0, rx1261_pos, $I1272)
- rxquantr1266_loop:
- alt1267_0:
-.annotate "line", 546
- set_addr $I10, alt1267_1
- rx1261_cur."!mark_push"(0, rx1261_pos, $I10)
-.annotate "line", 547
+ goto rxcap_1268_done
+ rxcap_1268_fail:
+ goto rx1264_fail
+ rxcap_1268_done:
+.annotate "line", 556
+ # rx rxquantr1269 ** 0..1
+ set_addr $I1275, rxquantr1269_done
+ rx1264_cur."!mark_push"(0, rx1264_pos, $I1275)
+ rxquantr1269_loop:
+ alt1270_0:
+.annotate "line", 550
+ set_addr $I10, alt1270_1
+ rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+.annotate "line", 551
# 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
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ .const 'Sub' $P1272 = "328_1271336396.90314"
+ capture_lex $P1272
+ $P10 = rx1264_cur."before"($P1272)
+ unless $P10, rx1264_fail
+ goto alt1270_end
+ alt1270_1:
+ set_addr $I10, alt1270_2
+ rx1264_cur."!mark_push"(0, rx1264_pos, $I10)
+.annotate "line", 552
# 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, rx1264_pos, 1
+ gt $I11, rx1264_eos, rx1264_fail
+ sub $I11, rx1264_pos, rx1264_off
+ substr $S10, rx1264_tgt, $I11, 1
+ ne $S10, "=", rx1264_fail
+ add rx1264_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)
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."assertion"()
+ unless $P10, rx1264_fail
+ rx1264_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
+ rx1264_pos = $P10."pos"()
+ goto alt1270_end
+ alt1270_2:
+ set_addr $I10, alt1270_3
+ rx1264_cur."!mark_push"(0, rx1264_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, rx1264_pos, 1
+ gt $I11, rx1264_eos, rx1264_fail
+ sub $I11, rx1264_pos, rx1264_off
+ substr $S10, rx1264_tgt, $I11, 1
+ ne $S10, ":", rx1264_fail
+ add rx1264_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)
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."arglist"()
+ unless $P10, rx1264_fail
+ rx1264_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
+ rx1264_pos = $P10."pos"()
+ goto alt1270_end
+ alt1270_3:
+ set_addr $I10, alt1270_4
+ rx1264_cur."!mark_push"(0, rx1264_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, rx1264_pos, 1
+ gt $I11, rx1264_eos, rx1264_fail
+ sub $I11, rx1264_pos, rx1264_off
+ substr $S10, rx1264_tgt, $I11, 1
+ ne $S10, "(", rx1264_fail
+ add rx1264_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)
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."LANG"("MAIN", "arglist")
+ unless $P10, rx1264_fail
+ rx1264_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("arglist")
- rx1261_pos = $P10."pos"()
+ rx1264_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, rx1264_pos, 1
+ gt $I11, rx1264_eos, rx1264_fail
+ sub $I11, rx1264_pos, rx1264_off
+ substr $S10, rx1264_tgt, $I11, 1
+ ne $S10, ")", rx1264_fail
+ add rx1264_pos, 1
+ goto alt1270_end
+ alt1270_4:
+.annotate "line", 555
# rx subrule "normspace" subtype=method negate=
- rx1261_cur."!cursor_pos"(rx1261_pos)
- $P10 = rx1261_cur."normspace"()
- unless $P10, rx1261_fail
- rx1261_pos = $P10."pos"()
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."normspace"()
+ unless $P10, rx1264_fail
+ rx1264_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)
+ rx1264_cur."!cursor_pos"(rx1264_pos)
+ $P10 = rx1264_cur."nibbler"()
+ unless $P10, rx1264_fail
+ rx1264_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
+ rx1264_pos = $P10."pos"()
+ alt1270_end:
+.annotate "line", 556
+ (rx1264_rep) = rx1264_cur."!mark_commit"($I1275)
+ rxquantr1269_done:
+.annotate "line", 548
# 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)
+ rx1264_cur."!cursor_pass"(rx1264_pos, "assertion:sym<name>")
+ rx1264_cur."!cursor_debug"("PASS ", "assertion:sym<name>", " at pos=", rx1264_pos)
+ .return (rx1264_cur)
+ rx1264_fail:
+.annotate "line", 535
+ (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<name>")
+ .return (rx1264_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("327_1271336396.90314") :method
+.annotate "line", 535
+ new $P1266, "ResizablePMCArray"
+ push $P1266, ""
+ .return ($P1266)
.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 "_block1271" :anon :subid("328_1271336396.90314") :method :outer("326_1271336396.90314")
+.annotate "line", 551
+ .local string rx1273_tgt
+ .local int rx1273_pos
+ .local int rx1273_off
+ .local int rx1273_eos
+ .local int rx1273_rep
+ .local pmc rx1273_cur
+ (rx1273_cur, rx1273_pos, rx1273_tgt) = self."!cursor_start"()
+ rx1273_cur."!cursor_debug"("START ", "")
+ .lex unicode:"$\x{a2}", rx1273_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1273_eos, rx1273_tgt
+ set rx1273_off, 0
+ lt rx1273_pos, 2, rx1273_start
+ sub rx1273_off, rx1273_pos, 1
+ substr rx1273_tgt, rx1273_tgt, rx1273_off
+ rx1273_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1274_done
+ goto rxscan1274_scan
+ rxscan1274_loop:
+ ($P10) = rx1273_cur."from"()
+ inc $P10
+ set rx1273_pos, $P10
+ ge rx1273_pos, rx1273_eos, rxscan1274_done
+ rxscan1274_scan:
+ set_addr $I10, rxscan1274_loop
+ rx1273_cur."!mark_push"(0, rx1273_pos, $I10)
+ rxscan1274_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, rx1273_pos, 1
+ gt $I11, rx1273_eos, rx1273_fail
+ sub $I11, rx1273_pos, rx1273_off
+ substr $S10, rx1273_tgt, $I11, 1
+ ne $S10, ">", rx1273_fail
+ add rx1273_pos, 1
+ # rx pass
+ rx1273_cur."!cursor_pass"(rx1273_pos, "")
+ rx1273_cur."!cursor_debug"("PASS ", "", " at pos=", rx1273_pos)
+ .return (rx1273_cur)
+ rx1273_fail:
+ (rx1273_rep, rx1273_pos, $I10, $P10) = rx1273_cur."!mark_fail"(0)
+ lt rx1273_pos, -1, rx1273_done
+ eq rx1273_pos, -1, rx1273_fail
+ jump $I10
+ rx1273_done:
+ rx1273_cur."!cursor_fail"()
+ rx1273_cur."!cursor_debug"("FAIL ", "")
+ .return (rx1273_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("329_1271336396.90314") :method :outer("318_1271336396.90314")
+.annotate "line", 535
+ .local string rx1277_tgt
+ .local int rx1277_pos
+ .local int rx1277_off
+ .local int rx1277_eos
+ .local int rx1277_rep
+ .local pmc rx1277_cur
+ (rx1277_cur, rx1277_pos, rx1277_tgt) = self."!cursor_start"()
+ rx1277_cur."!cursor_debug"("START ", "codeblock")
+ .lex unicode:"$\x{a2}", rx1277_cur
+ .local pmc match
+ .lex "$/", match
+ length rx1277_eos, rx1277_tgt
+ set rx1277_off, 0
+ lt rx1277_pos, 2, rx1277_start
+ sub rx1277_off, rx1277_pos, 1
+ substr rx1277_tgt, rx1277_tgt, rx1277_off
+ rx1277_start:
+ $I10 = self.'from'()
+ ne $I10, -1, rxscan1281_done
+ goto rxscan1281_scan
+ rxscan1281_loop:
+ ($P10) = rx1277_cur."from"()
+ inc $P10
+ set rx1277_pos, $P10
+ ge rx1277_pos, rx1277_eos, rxscan1281_done
+ rxscan1281_scan:
+ set_addr $I10, rxscan1281_loop
+ rx1277_cur."!mark_push"(0, rx1277_pos, $I10)
+ rxscan1281_done:
+.annotate "line", 561
# 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)
+ rx1277_cur."!cursor_pos"(rx1277_pos)
+ $P10 = rx1277_cur."LANG"("MAIN", "pblock")
+ unless $P10, rx1277_fail
+ rx1277_cur."!mark_push"(0, -1, 0, $P10)
$P10."!cursor_names"("block")
- rx1274_pos = $P10."pos"()
-.annotate "line", 556
+ rx1277_pos = $P10."pos"()
+.annotate "line", 560
# 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)
+ rx1277_cur."!cursor_pass"(rx1277_pos, "codeblock")
+ rx1277_cur."!cursor_debug"("PASS ", "codeblock", " at pos=", rx1277_pos)
+ .return (rx1277_cur)
+ rx1277_fail:
+.annotate "line", 535
+ (rx1277_rep, rx1277_pos, $I10, $P10) = rx1277_cur."!mark_fail"(0)
+ lt rx1277_pos, -1, rx1277_done
+ eq rx1277_pos, -1, rx1277_fail
+ jump $I10
+ rx1277_done:
+ rx1277_cur."!cursor_fail"()
+ rx1277_cur."!cursor_debug"("FAIL ", "codeblock")
+ .return (rx1277_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("330_1271336396.90314") :method
+.annotate "line", 535
+ $P1279 = self."!PREFIX__!subrule"("block", "")
+ new $P1280, "ResizablePMCArray"
+ push $P1280, $P1279
+ .return ($P1280)
.end
### .include 'gen/nqp-actions.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204714.47172")
+.sub "_block11" :anon :subid("10_1271336409.53729")
.annotate "line", 0
get_hll_global $P14, ["NQP";"Actions"], "_block13"
capture_lex $P14
@@ -15775,9 +15819,9 @@
.namespace []
-.sub "" :load :init :subid("post126") :outer("10_1267204714.47172")
+.sub "" :load :init :subid("post126") :outer("10_1271336409.53729")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204714.47172"
+ .const 'Sub' $P12 = "10_1271336409.53729"
.local pmc block
set block, $P12
$P2169 = get_root_global ["parrot"], "P6metaclass"
@@ -15786,199 +15830,199 @@
.namespace ["NQP";"Actions"]
-.sub "_block13" :subid("11_1267204714.47172") :outer("10_1267204714.47172")
+.sub "_block13" :subid("11_1271336409.53729") :outer("10_1271336409.53729")
.annotate "line", 3
- .const 'Sub' $P2164 = "125_1267204714.47172"
+ .const 'Sub' $P2164 = "125_1271336409.53729"
capture_lex $P2164
get_hll_global $P2100, ["NQP";"RegexActions"], "_block2099"
capture_lex $P2100
- .const 'Sub' $P2089 = "119_1267204714.47172"
+ .const 'Sub' $P2089 = "119_1271336409.53729"
capture_lex $P2089
- .const 'Sub' $P2077 = "118_1267204714.47172"
+ .const 'Sub' $P2077 = "118_1271336409.53729"
capture_lex $P2077
- .const 'Sub' $P2067 = "117_1267204714.47172"
+ .const 'Sub' $P2067 = "117_1271336409.53729"
capture_lex $P2067
- .const 'Sub' $P2057 = "116_1267204714.47172"
+ .const 'Sub' $P2057 = "116_1271336409.53729"
capture_lex $P2057
- .const 'Sub' $P2047 = "115_1267204714.47172"
+ .const 'Sub' $P2047 = "115_1271336409.53729"
capture_lex $P2047
- .const 'Sub' $P2033 = "114_1267204714.47172"
+ .const 'Sub' $P2033 = "114_1271336409.53729"
capture_lex $P2033
- .const 'Sub' $P2023 = "113_1267204714.47172"
+ .const 'Sub' $P2023 = "113_1271336409.53729"
capture_lex $P2023
- .const 'Sub' $P1986 = "112_1267204714.47172"
+ .const 'Sub' $P1986 = "112_1271336409.53729"
capture_lex $P1986
- .const 'Sub' $P1972 = "111_1267204714.47172"
+ .const 'Sub' $P1972 = "111_1271336409.53729"
capture_lex $P1972
- .const 'Sub' $P1962 = "110_1267204714.47172"
+ .const 'Sub' $P1962 = "110_1271336409.53729"
capture_lex $P1962
- .const 'Sub' $P1952 = "109_1267204714.47172"
+ .const 'Sub' $P1952 = "109_1271336409.53729"
capture_lex $P1952
- .const 'Sub' $P1942 = "108_1267204714.47172"
+ .const 'Sub' $P1942 = "108_1271336409.53729"
capture_lex $P1942
- .const 'Sub' $P1932 = "107_1267204714.47172"
+ .const 'Sub' $P1932 = "107_1271336409.53729"
capture_lex $P1932
- .const 'Sub' $P1922 = "106_1267204714.47172"
+ .const 'Sub' $P1922 = "106_1271336409.53729"
capture_lex $P1922
- .const 'Sub' $P1894 = "105_1267204714.47172"
+ .const 'Sub' $P1894 = "105_1271336409.53729"
capture_lex $P1894
- .const 'Sub' $P1877 = "104_1267204714.47172"
+ .const 'Sub' $P1877 = "104_1271336409.53729"
capture_lex $P1877
- .const 'Sub' $P1867 = "103_1267204714.47172"
+ .const 'Sub' $P1867 = "103_1271336409.53729"
capture_lex $P1867
- .const 'Sub' $P1854 = "102_1267204714.47172"
+ .const 'Sub' $P1854 = "102_1271336409.53729"
capture_lex $P1854
- .const 'Sub' $P1841 = "101_1267204714.47172"
+ .const 'Sub' $P1841 = "101_1271336409.53729"
capture_lex $P1841
- .const 'Sub' $P1828 = "100_1267204714.47172"
+ .const 'Sub' $P1828 = "100_1271336409.53729"
capture_lex $P1828
- .const 'Sub' $P1818 = "99_1267204714.47172"
+ .const 'Sub' $P1818 = "99_1271336409.53729"
capture_lex $P1818
- .const 'Sub' $P1789 = "98_1267204714.47172"
+ .const 'Sub' $P1789 = "98_1271336409.53729"
capture_lex $P1789
- .const 'Sub' $P1769 = "97_1267204714.47172"
+ .const 'Sub' $P1769 = "97_1271336409.53729"
capture_lex $P1769
- .const 'Sub' $P1759 = "96_1267204714.47172"
+ .const 'Sub' $P1759 = "96_1271336409.53729"
capture_lex $P1759
- .const 'Sub' $P1749 = "95_1267204714.47172"
+ .const 'Sub' $P1749 = "95_1271336409.53729"
capture_lex $P1749
- .const 'Sub' $P1722 = "94_1267204714.47172"
+ .const 'Sub' $P1722 = "94_1271336409.53729"
capture_lex $P1722
- .const 'Sub' $P1704 = "93_1267204714.47172"
+ .const 'Sub' $P1704 = "93_1271336409.53729"
capture_lex $P1704
- .const 'Sub' $P1694 = "92_1267204714.47172"
+ .const 'Sub' $P1694 = "92_1271336409.53729"
capture_lex $P1694
- .const 'Sub' $P1610 = "89_1267204714.47172"
+ .const 'Sub' $P1610 = "89_1271336409.53729"
capture_lex $P1610
- .const 'Sub' $P1600 = "88_1267204714.47172"
+ .const 'Sub' $P1600 = "88_1271336409.53729"
capture_lex $P1600
- .const 'Sub' $P1571 = "87_1267204714.47172"
+ .const 'Sub' $P1571 = "87_1271336409.53729"
capture_lex $P1571
- .const 'Sub' $P1529 = "86_1267204714.47172"
+ .const 'Sub' $P1529 = "86_1271336409.53729"
capture_lex $P1529
- .const 'Sub' $P1513 = "85_1267204714.47172"
+ .const 'Sub' $P1513 = "85_1271336409.53729"
capture_lex $P1513
- .const 'Sub' $P1504 = "84_1267204714.47172"
+ .const 'Sub' $P1504 = "84_1271336409.53729"
capture_lex $P1504
- .const 'Sub' $P1472 = "83_1267204714.47172"
+ .const 'Sub' $P1472 = "83_1271336409.53729"
capture_lex $P1472
- .const 'Sub' $P1373 = "80_1267204714.47172"
+ .const 'Sub' $P1373 = "80_1271336409.53729"
capture_lex $P1373
- .const 'Sub' $P1356 = "79_1267204714.47172"
+ .const 'Sub' $P1356 = "79_1271336409.53729"
capture_lex $P1356
- .const 'Sub' $P1336 = "78_1267204714.47172"
+ .const 'Sub' $P1336 = "78_1271336409.53729"
capture_lex $P1336
- .const 'Sub' $P1252 = "77_1267204714.47172"
+ .const 'Sub' $P1252 = "77_1271336409.53729"
capture_lex $P1252
- .const 'Sub' $P1228 = "75_1267204714.47172"
+ .const 'Sub' $P1228 = "75_1271336409.53729"
capture_lex $P1228
- .const 'Sub' $P1194 = "73_1267204714.47172"
+ .const 'Sub' $P1194 = "73_1271336409.53729"
capture_lex $P1194
- .const 'Sub' $P1144 = "71_1267204714.47172"
+ .const 'Sub' $P1144 = "71_1271336409.53729"
capture_lex $P1144
- .const 'Sub' $P1134 = "70_1267204714.47172"
+ .const 'Sub' $P1134 = "70_1271336409.53729"
capture_lex $P1134
- .const 'Sub' $P1124 = "69_1267204714.47172"
+ .const 'Sub' $P1124 = "69_1271336409.53729"
capture_lex $P1124
- .const 'Sub' $P1053 = "67_1267204714.47172"
+ .const 'Sub' $P1053 = "67_1271336409.53729"
capture_lex $P1053
- .const 'Sub' $P1036 = "66_1267204714.47172"
+ .const 'Sub' $P1036 = "66_1271336409.53729"
capture_lex $P1036
- .const 'Sub' $P1026 = "65_1267204714.47172"
+ .const 'Sub' $P1026 = "65_1271336409.53729"
capture_lex $P1026
- .const 'Sub' $P1016 = "64_1267204714.47172"
+ .const 'Sub' $P1016 = "64_1271336409.53729"
capture_lex $P1016
- .const 'Sub' $P1006 = "63_1267204714.47172"
+ .const 'Sub' $P1006 = "63_1271336409.53729"
capture_lex $P1006
- .const 'Sub' $P982 = "62_1267204714.47172"
+ .const 'Sub' $P982 = "62_1271336409.53729"
capture_lex $P982
- .const 'Sub' $P929 = "61_1267204714.47172"
+ .const 'Sub' $P929 = "61_1271336409.53729"
capture_lex $P929
- .const 'Sub' $P919 = "60_1267204714.47172"
+ .const 'Sub' $P919 = "60_1271336409.53729"
capture_lex $P919
- .const 'Sub' $P830 = "58_1267204714.47172"
+ .const 'Sub' $P830 = "58_1271336409.53729"
capture_lex $P830
- .const 'Sub' $P804 = "57_1267204714.47172"
+ .const 'Sub' $P804 = "57_1271336409.53729"
capture_lex $P804
- .const 'Sub' $P788 = "56_1267204714.47172"
+ .const 'Sub' $P788 = "56_1271336409.53729"
capture_lex $P788
- .const 'Sub' $P778 = "55_1267204714.47172"
+ .const 'Sub' $P778 = "55_1271336409.53729"
capture_lex $P778
- .const 'Sub' $P768 = "54_1267204714.47172"
+ .const 'Sub' $P768 = "54_1271336409.53729"
capture_lex $P768
- .const 'Sub' $P758 = "53_1267204714.47172"
+ .const 'Sub' $P758 = "53_1271336409.53729"
capture_lex $P758
- .const 'Sub' $P748 = "52_1267204714.47172"
+ .const 'Sub' $P748 = "52_1271336409.53729"
capture_lex $P748
- .const 'Sub' $P738 = "51_1267204714.47172"
+ .const 'Sub' $P738 = "51_1271336409.53729"
capture_lex $P738
- .const 'Sub' $P728 = "50_1267204714.47172"
+ .const 'Sub' $P728 = "50_1271336409.53729"
capture_lex $P728
- .const 'Sub' $P718 = "49_1267204714.47172"
+ .const 'Sub' $P718 = "49_1271336409.53729"
capture_lex $P718
- .const 'Sub' $P708 = "48_1267204714.47172"
+ .const 'Sub' $P708 = "48_1271336409.53729"
capture_lex $P708
- .const 'Sub' $P698 = "47_1267204714.47172"
+ .const 'Sub' $P698 = "47_1271336409.53729"
capture_lex $P698
- .const 'Sub' $P688 = "46_1267204714.47172"
+ .const 'Sub' $P688 = "46_1271336409.53729"
capture_lex $P688
- .const 'Sub' $P678 = "45_1267204714.47172"
+ .const 'Sub' $P678 = "45_1271336409.53729"
capture_lex $P678
- .const 'Sub' $P668 = "44_1267204714.47172"
+ .const 'Sub' $P668 = "44_1271336409.53729"
capture_lex $P668
- .const 'Sub' $P658 = "43_1267204714.47172"
+ .const 'Sub' $P658 = "43_1271336409.53729"
capture_lex $P658
- .const 'Sub' $P640 = "42_1267204714.47172"
+ .const 'Sub' $P640 = "42_1271336409.53729"
capture_lex $P640
- .const 'Sub' $P605 = "41_1267204714.47172"
+ .const 'Sub' $P605 = "41_1271336409.53729"
capture_lex $P605
- .const 'Sub' $P589 = "40_1267204714.47172"
+ .const 'Sub' $P589 = "40_1271336409.53729"
capture_lex $P589
- .const 'Sub' $P568 = "39_1267204714.47172"
+ .const 'Sub' $P568 = "39_1271336409.53729"
capture_lex $P568
- .const 'Sub' $P548 = "38_1267204714.47172"
+ .const 'Sub' $P548 = "38_1271336409.53729"
capture_lex $P548
- .const 'Sub' $P535 = "37_1267204714.47172"
+ .const 'Sub' $P535 = "37_1271336409.53729"
capture_lex $P535
- .const 'Sub' $P509 = "36_1267204714.47172"
+ .const 'Sub' $P509 = "36_1271336409.53729"
capture_lex $P509
- .const 'Sub' $P473 = "35_1267204714.47172"
+ .const 'Sub' $P473 = "35_1271336409.53729"
capture_lex $P473
- .const 'Sub' $P456 = "34_1267204714.47172"
+ .const 'Sub' $P456 = "34_1271336409.53729"
capture_lex $P456
- .const 'Sub' $P442 = "33_1267204714.47172"
+ .const 'Sub' $P442 = "33_1271336409.53729"
capture_lex $P442
- .const 'Sub' $P389 = "31_1267204714.47172"
+ .const 'Sub' $P389 = "31_1271336409.53729"
capture_lex $P389
- .const 'Sub' $P376 = "30_1267204714.47172"
+ .const 'Sub' $P376 = "30_1271336409.53729"
capture_lex $P376
- .const 'Sub' $P357 = "29_1267204714.47172"
+ .const 'Sub' $P357 = "29_1271336409.53729"
capture_lex $P357
- .const 'Sub' $P347 = "28_1267204714.47172"
+ .const 'Sub' $P347 = "28_1271336409.53729"
capture_lex $P347
- .const 'Sub' $P337 = "27_1267204714.47172"
+ .const 'Sub' $P337 = "27_1271336409.53729"
capture_lex $P337
- .const 'Sub' $P321 = "26_1267204714.47172"
+ .const 'Sub' $P321 = "26_1271336409.53729"
capture_lex $P321
- .const 'Sub' $P261 = "24_1267204714.47172"
+ .const 'Sub' $P261 = "24_1271336409.53729"
capture_lex $P261
- .const 'Sub' $P212 = "22_1267204714.47172"
+ .const 'Sub' $P212 = "22_1271336409.53729"
capture_lex $P212
- .const 'Sub' $P193 = "21_1267204714.47172"
+ .const 'Sub' $P193 = "21_1271336409.53729"
capture_lex $P193
- .const 'Sub' $P160 = "20_1267204714.47172"
+ .const 'Sub' $P160 = "20_1271336409.53729"
capture_lex $P160
- .const 'Sub' $P150 = "19_1267204714.47172"
+ .const 'Sub' $P150 = "19_1271336409.53729"
capture_lex $P150
- .const 'Sub' $P96 = "18_1267204714.47172"
+ .const 'Sub' $P96 = "18_1271336409.53729"
capture_lex $P96
- .const 'Sub' $P81 = "17_1267204714.47172"
+ .const 'Sub' $P81 = "17_1271336409.53729"
capture_lex $P81
- .const 'Sub' $P61 = "16_1267204714.47172"
+ .const 'Sub' $P61 = "16_1271336409.53729"
capture_lex $P61
- .const 'Sub' $P26 = "13_1267204714.47172"
+ .const 'Sub' $P26 = "13_1271336409.53729"
capture_lex $P26
- .const 'Sub' $P16 = "12_1267204714.47172"
+ .const 'Sub' $P16 = "12_1271336409.53729"
capture_lex $P16
get_global $P15, "@BLOCK"
unless_null $P15, vivify_129
@@ -15986,23 +16030,23 @@
set_global "@BLOCK", $P15
vivify_129:
.annotate "line", 9
- .const 'Sub' $P16 = "12_1267204714.47172"
+ .const 'Sub' $P16 = "12_1271336409.53729"
capture_lex $P16
.lex "xblock_immediate", $P16
.annotate "line", 14
- .const 'Sub' $P26 = "13_1267204714.47172"
+ .const 'Sub' $P26 = "13_1271336409.53729"
capture_lex $P26
.lex "block_immediate", $P26
.annotate "line", 24
- .const 'Sub' $P61 = "16_1267204714.47172"
+ .const 'Sub' $P61 = "16_1271336409.53729"
capture_lex $P61
.lex "vivitype", $P61
.annotate "line", 43
- .const 'Sub' $P81 = "17_1267204714.47172"
+ .const 'Sub' $P81 = "17_1271336409.53729"
capture_lex $P81
.lex "colonpair_str", $P81
.annotate "line", 190
- .const 'Sub' $P96 = "18_1267204714.47172"
+ .const 'Sub' $P96 = "18_1271336409.53729"
capture_lex $P96
.lex "push_block_handler", $P96
.annotate "line", 3
@@ -16025,13 +16069,13 @@
.namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post127") :outer("11_1267204714.47172")
+.sub "" :load :init :subid("post127") :outer("11_1271336409.53729")
.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"
+ .const 'Sub' $P2164 = "125_1271336409.53729"
capture_lex $P2164
$P2164()
$P2167 = get_root_global ["parrot"], "P6metaclass"
@@ -16040,7 +16084,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block2163" :anon :subid("125_1267204714.47172") :outer("11_1267204714.47172")
+.sub "_block2163" :anon :subid("125_1271336409.53729") :outer("11_1271336409.53729")
.annotate "line", 6
get_global $P2165, "@BLOCK"
unless_null $P2165, vivify_128
@@ -16055,7 +16099,7 @@
.namespace ["NQP";"Actions"]
-.sub "xblock_immediate" :subid("12_1267204714.47172") :outer("11_1267204714.47172")
+.sub "xblock_immediate" :subid("12_1271336409.53729") :outer("11_1271336409.53729")
.param pmc param_19
.annotate "line", 9
new $P18, 'ExceptionHandler'
@@ -16091,10 +16135,10 @@
.namespace ["NQP";"Actions"]
-.sub "block_immediate" :subid("13_1267204714.47172") :outer("11_1267204714.47172")
+.sub "block_immediate" :subid("13_1271336409.53729") :outer("11_1271336409.53729")
.param pmc param_29
.annotate "line", 14
- .const 'Sub' $P39 = "14_1267204714.47172"
+ .const 'Sub' $P39 = "14_1271336409.53729"
capture_lex $P39
new $P28, 'ExceptionHandler'
set_addr $P28, control_27
@@ -16116,7 +16160,7 @@
set $P32, $P37
unless_33_end:
if $P32, unless_31_end
- .const 'Sub' $P39 = "14_1267204714.47172"
+ .const 'Sub' $P39 = "14_1271336409.53729"
capture_lex $P39
$P39()
unless_31_end:
@@ -16132,9 +16176,9 @@
.namespace ["NQP";"Actions"]
-.sub "_block38" :anon :subid("14_1267204714.47172") :outer("13_1267204714.47172")
+.sub "_block38" :anon :subid("14_1271336409.53729") :outer("13_1271336409.53729")
.annotate "line", 16
- .const 'Sub' $P50 = "15_1267204714.47172"
+ .const 'Sub' $P50 = "15_1271336409.53729"
capture_lex $P50
.annotate "line", 17
new $P40, "Undef"
@@ -16157,7 +16201,7 @@
unless $P44, loop55_done
shift $P48, $P44
loop55_redo:
- .const 'Sub' $P50 = "15_1267204714.47172"
+ .const 'Sub' $P50 = "15_1271336409.53729"
capture_lex $P50
$P50($P48)
loop55_next:
@@ -16180,7 +16224,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block49" :anon :subid("15_1267204714.47172") :outer("14_1267204714.47172")
+.sub "_block49" :anon :subid("15_1271336409.53729") :outer("14_1271336409.53729")
.param pmc param_51
.annotate "line", 18
.lex "$_", param_51
@@ -16192,7 +16236,7 @@
.namespace ["NQP";"Actions"]
-.sub "vivitype" :subid("16_1267204714.47172") :outer("11_1267204714.47172")
+.sub "vivitype" :subid("16_1271336409.53729") :outer("11_1271336409.53729")
.param pmc param_64
.annotate "line", 24
new $P63, 'ExceptionHandler'
@@ -16240,7 +16284,7 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair_str" :subid("17_1267204714.47172") :outer("11_1267204714.47172")
+.sub "colonpair_str" :subid("17_1271336409.53729") :outer("11_1271336409.53729")
.param pmc param_84
.annotate "line", 43
new $P83, 'ExceptionHandler'
@@ -16278,7 +16322,7 @@
.namespace ["NQP";"Actions"]
-.sub "push_block_handler" :subid("18_1267204714.47172") :outer("11_1267204714.47172")
+.sub "push_block_handler" :subid("18_1271336409.53729") :outer("11_1271336409.53729")
.param pmc param_99
.param pmc param_100
.annotate "line", 190
@@ -16395,7 +16439,7 @@
.namespace ["NQP";"Actions"]
-.sub "TOP" :subid("19_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "TOP" :subid("19_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_153
.annotate "line", 33
new $P152, 'ExceptionHandler'
@@ -16425,7 +16469,7 @@
.namespace ["NQP";"Actions"]
-.sub "deflongname" :subid("20_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "deflongname" :subid("20_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_163
.annotate "line", 35
new $P162, 'ExceptionHandler'
@@ -16514,7 +16558,7 @@
.namespace ["NQP";"Actions"]
-.sub "comp_unit" :subid("21_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "comp_unit" :subid("21_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_196
.annotate "line", 49
new $P195, 'ExceptionHandler'
@@ -16567,10 +16611,10 @@
.namespace ["NQP";"Actions"]
-.sub "statementlist" :subid("22_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statementlist" :subid("22_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_215
.annotate "line", 57
- .const 'Sub' $P229 = "23_1267204714.47172"
+ .const 'Sub' $P229 = "23_1271336409.53729"
capture_lex $P229
new $P214, 'ExceptionHandler'
set_addr $P214, control_213
@@ -16615,7 +16659,7 @@
unless $P223, loop254_done
shift $P227, $P223
loop254_redo:
- .const 'Sub' $P229 = "23_1267204714.47172"
+ .const 'Sub' $P229 = "23_1271336409.53729"
capture_lex $P229
$P229($P227)
loop254_next:
@@ -16645,7 +16689,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block228" :anon :subid("23_1267204714.47172") :outer("22_1267204714.47172")
+.sub "_block228" :anon :subid("23_1271336409.53729") :outer("22_1271336409.53729")
.param pmc param_231
.annotate "line", 61
new $P230, "Undef"
@@ -16705,12 +16749,12 @@
.namespace ["NQP";"Actions"]
-.sub "statement" :subid("24_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement" :subid("24_1271336409.53729") :method :outer("11_1271336409.53729")
.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_1271336409.53729"
capture_lex $P273
new $P263, 'ExceptionHandler'
set_addr $P263, control_262
@@ -16769,7 +16813,7 @@
goto if_269_end
if_269:
.annotate "line", 74
- .const 'Sub' $P273 = "25_1267204714.47172"
+ .const 'Sub' $P273 = "25_1271336409.53729"
capture_lex $P273
$P273()
if_269_end:
@@ -16788,7 +16832,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block272" :anon :subid("25_1267204714.47172") :outer("24_1267204714.47172")
+.sub "_block272" :anon :subid("25_1271336409.53729") :outer("24_1271336409.53729")
.annotate "line", 75
new $P274, "Undef"
.lex "$mc", $P274
@@ -16901,7 +16945,7 @@
.namespace ["NQP";"Actions"]
-.sub "xblock" :subid("26_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "xblock" :subid("26_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_324
.annotate "line", 90
new $P323, 'ExceptionHandler'
@@ -16945,7 +16989,7 @@
.namespace ["NQP";"Actions"]
-.sub "pblock" :subid("27_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "pblock" :subid("27_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_340
.annotate "line", 94
new $P339, 'ExceptionHandler'
@@ -16977,7 +17021,7 @@
.namespace ["NQP";"Actions"]
-.sub "block" :subid("28_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "block" :subid("28_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_350
.annotate "line", 98
new $P349, 'ExceptionHandler'
@@ -17009,7 +17053,7 @@
.namespace ["NQP";"Actions"]
-.sub "blockoid" :subid("29_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "blockoid" :subid("29_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_360
.annotate "line", 102
new $P359, 'ExceptionHandler'
@@ -17062,7 +17106,7 @@
.namespace ["NQP";"Actions"]
-.sub "newpad" :subid("30_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "newpad" :subid("30_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_379
.annotate "line", 110
new $P378, 'ExceptionHandler'
@@ -17097,10 +17141,10 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>" :subid("31_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<if>" :subid("31_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_392
.annotate "line", 117
- .const 'Sub' $P420 = "32_1267204714.47172"
+ .const 'Sub' $P420 = "32_1271336409.53729"
capture_lex $P420
new $P391, 'ExceptionHandler'
set_addr $P391, control_390
@@ -17185,7 +17229,7 @@
isgt $I418, $N417, 0.0
unless $I418, loop435_done
loop435_redo:
- .const 'Sub' $P420 = "32_1267204714.47172"
+ .const 'Sub' $P420 = "32_1271336409.53729"
capture_lex $P420
$P420()
loop435_next:
@@ -17213,7 +17257,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block419" :anon :subid("32_1267204714.47172") :outer("31_1267204714.47172")
+.sub "_block419" :anon :subid("32_1271336409.53729") :outer("31_1271336409.53729")
.annotate "line", 126
new $P421, "Undef"
.lex "$else", $P421
@@ -17252,7 +17296,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>" :subid("33_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<unless>" :subid("33_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_445
.annotate "line", 133
new $P444, 'ExceptionHandler'
@@ -17293,7 +17337,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>" :subid("34_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<while>" :subid("34_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_459
.annotate "line", 139
new $P458, 'ExceptionHandler'
@@ -17343,7 +17387,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>" :subid("35_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<repeat>" :subid("35_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_476
.annotate "line", 145
new $P475, 'ExceptionHandler'
@@ -17443,7 +17487,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>" :subid("36_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<for>" :subid("36_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_512
.annotate "line", 159
new $P511, 'ExceptionHandler'
@@ -17523,7 +17567,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>" :subid("37_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<return>" :subid("37_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_538
.annotate "line", 172
new $P537, 'ExceptionHandler'
@@ -17558,7 +17602,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>" :subid("38_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<CATCH>" :subid("38_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_551
.annotate "line", 176
new $P550, 'ExceptionHandler'
@@ -17616,7 +17660,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>" :subid("39_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_control:sym<CONTROL>" :subid("39_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_571
.annotate "line", 183
new $P570, 'ExceptionHandler'
@@ -17674,7 +17718,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>" :subid("40_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_prefix:sym<INIT>" :subid("40_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_592
.annotate "line", 227
new $P591, 'ExceptionHandler'
@@ -17720,7 +17764,7 @@
.namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>" :subid("41_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "statement_prefix:sym<try>" :subid("41_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_608
.annotate "line", 232
new $P607, 'ExceptionHandler'
@@ -17797,7 +17841,7 @@
.namespace ["NQP";"Actions"]
-.sub "blorst" :subid("42_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "blorst" :subid("42_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_643
.annotate "line", 255
new $P642, 'ExceptionHandler'
@@ -17856,7 +17900,7 @@
.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_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_661
.annotate "line", 263
new $P660, 'ExceptionHandler'
@@ -17886,7 +17930,7 @@
.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_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_671
.annotate "line", 264
new $P670, 'ExceptionHandler'
@@ -17916,7 +17960,7 @@
.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_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_681
.annotate "line", 266
new $P680, 'ExceptionHandler'
@@ -17946,7 +17990,7 @@
.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_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_691
.annotate "line", 267
new $P690, 'ExceptionHandler'
@@ -17976,7 +18020,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>" :subid("47_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<fatarrow>" :subid("47_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_701
.annotate "line", 271
new $P700, 'ExceptionHandler'
@@ -18006,7 +18050,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>" :subid("48_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<colonpair>" :subid("48_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_711
.annotate "line", 272
new $P710, 'ExceptionHandler'
@@ -18036,7 +18080,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<variable>" :subid("49_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<variable>" :subid("49_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_721
.annotate "line", 273
new $P720, 'ExceptionHandler'
@@ -18066,7 +18110,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>" :subid("50_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<package_declarator>" :subid("50_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_731
.annotate "line", 274
new $P730, 'ExceptionHandler'
@@ -18096,7 +18140,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>" :subid("51_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<scope_declarator>" :subid("51_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_741
.annotate "line", 275
new $P740, 'ExceptionHandler'
@@ -18126,7 +18170,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>" :subid("52_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<routine_declarator>" :subid("52_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_751
.annotate "line", 276
new $P750, 'ExceptionHandler'
@@ -18156,7 +18200,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>" :subid("53_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<regex_declarator>" :subid("53_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_761
.annotate "line", 277
new $P760, 'ExceptionHandler'
@@ -18186,7 +18230,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>" :subid("54_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<statement_prefix>" :subid("54_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_771
.annotate "line", 278
new $P770, 'ExceptionHandler'
@@ -18216,7 +18260,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>" :subid("55_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<lambda>" :subid("55_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_781
.annotate "line", 279
new $P780, 'ExceptionHandler'
@@ -18246,7 +18290,7 @@
.namespace ["NQP";"Actions"]
-.sub "fatarrow" :subid("56_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "fatarrow" :subid("56_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_791
.annotate "line", 281
new $P790, 'ExceptionHandler'
@@ -18295,7 +18339,7 @@
.namespace ["NQP";"Actions"]
-.sub "colonpair" :subid("57_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "colonpair" :subid("57_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_807
.annotate "line", 287
new $P806, 'ExceptionHandler'
@@ -18376,10 +18420,10 @@
.namespace ["NQP";"Actions"]
-.sub "variable" :subid("58_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "variable" :subid("58_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_833
.annotate "line", 295
- .const 'Sub' $P846 = "59_1267204714.47172"
+ .const 'Sub' $P846 = "59_1271336409.53729"
capture_lex $P846
new $P832, 'ExceptionHandler'
set_addr $P832, control_831
@@ -18403,7 +18447,7 @@
vivify_296:
if $P838, if_836
.annotate "line", 301
- .const 'Sub' $P846 = "59_1267204714.47172"
+ .const 'Sub' $P846 = "59_1271336409.53729"
capture_lex $P846
$P846()
goto if_836_end
@@ -18440,7 +18484,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block845" :anon :subid("59_1267204714.47172") :outer("58_1267204714.47172")
+.sub "_block845" :anon :subid("59_1271336409.53729") :outer("58_1271336409.53729")
.annotate "line", 302
$P847 = root_new ['parrot';'ResizablePMCArray']
.lex "@name", $P847
@@ -18609,7 +18653,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>" :subid("60_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_declarator:sym<module>" :subid("60_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_922
.annotate "line", 333
new $P921, 'ExceptionHandler'
@@ -18639,7 +18683,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>" :subid("61_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_declarator:sym<class>" :subid("61_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_932
.annotate "line", 334
new $P931, 'ExceptionHandler'
@@ -18796,7 +18840,7 @@
.namespace ["NQP";"Actions"]
-.sub "package_def" :subid("62_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "package_def" :subid("62_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_985
.annotate "line", 357
new $P984, 'ExceptionHandler'
@@ -18874,7 +18918,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>" :subid("63_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<my>" :subid("63_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1009
.annotate "line", 364
new $P1008, 'ExceptionHandler'
@@ -18904,7 +18948,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>" :subid("64_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<our>" :subid("64_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1019
.annotate "line", 365
new $P1018, 'ExceptionHandler'
@@ -18934,7 +18978,7 @@
.namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>" :subid("65_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scope_declarator:sym<has>" :subid("65_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1029
.annotate "line", 366
new $P1028, 'ExceptionHandler'
@@ -18964,7 +19008,7 @@
.namespace ["NQP";"Actions"]
-.sub "scoped" :subid("66_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "scoped" :subid("66_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1039
.annotate "line", 368
new $P1038, 'ExceptionHandler'
@@ -19022,10 +19066,10 @@
.namespace ["NQP";"Actions"]
-.sub "variable_declarator" :subid("67_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "variable_declarator" :subid("67_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1056
.annotate "line", 374
- .const 'Sub' $P1096 = "68_1267204714.47172"
+ .const 'Sub' $P1096 = "68_1271336409.53729"
capture_lex $P1096
new $P1055, 'ExceptionHandler'
set_addr $P1055, control_1054
@@ -19107,7 +19151,7 @@
iseq $I1081, $S1080, "has"
if $I1081, if_1078
.annotate "line", 391
- .const 'Sub' $P1096 = "68_1267204714.47172"
+ .const 'Sub' $P1096 = "68_1271336409.53729"
capture_lex $P1096
$P1096()
goto if_1078_end
@@ -19167,7 +19211,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1095" :anon :subid("68_1267204714.47172") :outer("67_1267204714.47172")
+.sub "_block1095" :anon :subid("68_1271336409.53729") :outer("67_1271336409.53729")
.annotate "line", 392
new $P1097, "Undef"
.lex "$scope", $P1097
@@ -19228,7 +19272,7 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>" :subid("69_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_declarator:sym<sub>" :subid("69_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1127
.annotate "line", 402
new $P1126, 'ExceptionHandler'
@@ -19258,7 +19302,7 @@
.namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>" :subid("70_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_declarator:sym<method>" :subid("70_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1137
.annotate "line", 403
new $P1136, 'ExceptionHandler'
@@ -19288,10 +19332,10 @@
.namespace ["NQP";"Actions"]
-.sub "routine_def" :subid("71_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "routine_def" :subid("71_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1147
.annotate "line", 405
- .const 'Sub' $P1158 = "72_1267204714.47172"
+ .const 'Sub' $P1158 = "72_1271336409.53729"
capture_lex $P1158
new $P1146, 'ExceptionHandler'
set_addr $P1146, control_1145
@@ -19328,7 +19372,7 @@
new $P1156, "Undef"
vivify_380:
unless $P1156, if_1154_end
- .const 'Sub' $P1158 = "72_1267204714.47172"
+ .const 'Sub' $P1158 = "72_1271336409.53729"
capture_lex $P1158
$P1158()
if_1154_end:
@@ -19347,7 +19391,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1157" :anon :subid("72_1267204714.47172") :outer("71_1267204714.47172")
+.sub "_block1157" :anon :subid("72_1271336409.53729") :outer("71_1271336409.53729")
.annotate "line", 410
new $P1159, "Undef"
.lex "$name", $P1159
@@ -19443,10 +19487,10 @@
.namespace ["NQP";"Actions"]
-.sub "method_def" :subid("73_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "method_def" :subid("73_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1197
.annotate "line", 423
- .const 'Sub' $P1213 = "74_1267204714.47172"
+ .const 'Sub' $P1213 = "74_1271336409.53729"
capture_lex $P1213
new $P1196, 'ExceptionHandler'
set_addr $P1196, control_1195
@@ -19498,7 +19542,7 @@
new $P1211, "Undef"
vivify_399:
unless $P1211, if_1209_end
- .const 'Sub' $P1213 = "74_1267204714.47172"
+ .const 'Sub' $P1213 = "74_1271336409.53729"
capture_lex $P1213
$P1213()
if_1209_end:
@@ -19517,7 +19561,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1212" :anon :subid("74_1267204714.47172") :outer("73_1267204714.47172")
+.sub "_block1212" :anon :subid("74_1271336409.53729") :outer("73_1271336409.53729")
.annotate "line", 430
new $P1214, "Undef"
.lex "$name", $P1214
@@ -19548,10 +19592,10 @@
.namespace ["NQP";"Actions"]
-.sub "signature" :subid("75_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "signature" :subid("75_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1231
.annotate "line", 437
- .const 'Sub' $P1242 = "76_1267204714.47172"
+ .const 'Sub' $P1242 = "76_1271336409.53729"
capture_lex $P1242
new $P1230, 'ExceptionHandler'
set_addr $P1230, control_1229
@@ -19595,7 +19639,7 @@
unless $P1236, loop1248_done
shift $P1240, $P1236
loop1248_redo:
- .const 'Sub' $P1242 = "76_1267204714.47172"
+ .const 'Sub' $P1242 = "76_1271336409.53729"
capture_lex $P1242
$P1242($P1240)
loop1248_next:
@@ -19620,7 +19664,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1241" :anon :subid("76_1267204714.47172") :outer("75_1267204714.47172")
+.sub "_block1241" :anon :subid("76_1271336409.53729") :outer("75_1271336409.53729")
.param pmc param_1243
.annotate "line", 439
.lex "$_", param_1243
@@ -19633,7 +19677,7 @@
.namespace ["NQP";"Actions"]
-.sub "parameter" :subid("77_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "parameter" :subid("77_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1255
.annotate "line", 442
new $P1254, 'ExceptionHandler'
@@ -19865,7 +19909,7 @@
.namespace ["NQP";"Actions"]
-.sub "param_var" :subid("78_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "param_var" :subid("78_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1339
.annotate "line", 474
new $P1338, 'ExceptionHandler'
@@ -19918,7 +19962,7 @@
.namespace ["NQP";"Actions"]
-.sub "named_param" :subid("79_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "named_param" :subid("79_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1359
.annotate "line", 482
new $P1358, 'ExceptionHandler'
@@ -19971,14 +20015,14 @@
.namespace ["NQP";"Actions"]
-.sub "regex_declarator" :subid("80_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "regex_declarator" :subid("80_1271336409.53729") :method :outer("11_1271336409.53729")
.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_1271336409.53729"
capture_lex $P1447
- .const 'Sub' $P1419 = "81_1267204714.47172"
+ .const 'Sub' $P1419 = "81_1271336409.53729"
capture_lex $P1419
new $P1375, 'ExceptionHandler'
set_addr $P1375, control_1374
@@ -20036,13 +20080,13 @@
iseq $I1417, $S1416, "open"
if $I1417, if_1414
.annotate "line", 534
- .const 'Sub' $P1447 = "82_1267204714.47172"
+ .const 'Sub' $P1447 = "82_1271336409.53729"
capture_lex $P1447
$P1447()
goto if_1414_end
if_1414:
.annotate "line", 521
- .const 'Sub' $P1419 = "81_1267204714.47172"
+ .const 'Sub' $P1419 = "81_1271336409.53729"
capture_lex $P1419
$P1419()
if_1414_end:
@@ -20099,7 +20143,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1446" :anon :subid("82_1267204714.47172") :outer("80_1267204714.47172")
+.sub "_block1446" :anon :subid("82_1271336409.53729") :outer("80_1271336409.53729")
.annotate "line", 535
new $P1448, "Undef"
.lex "$regex", $P1448
@@ -20150,7 +20194,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1418" :anon :subid("81_1267204714.47172") :outer("80_1267204714.47172")
+.sub "_block1418" :anon :subid("81_1271336409.53729") :outer("80_1271336409.53729")
.annotate "line", 522
$P1420 = root_new ['parrot';'Hash']
.lex "%h", $P1420
@@ -20248,7 +20292,7 @@
.namespace ["NQP";"Actions"]
-.sub "dotty" :subid("83_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "dotty" :subid("83_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1475
.annotate "line", 552
new $P1474, 'ExceptionHandler'
@@ -20345,7 +20389,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<self>" :subid("84_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<self>" :subid("84_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1507
.annotate "line", 561
new $P1506, 'ExceptionHandler'
@@ -20370,7 +20414,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>" :subid("85_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<identifier>" :subid("85_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1516
.annotate "line", 565
new $P1515, 'ExceptionHandler'
@@ -20419,7 +20463,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<name>" :subid("86_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<name>" :subid("86_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1532
.annotate "line", 571
new $P1531, 'ExceptionHandler'
@@ -20537,7 +20581,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>" :subid("87_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<pir::op>" :subid("87_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1574
.annotate "line", 585
new $P1573, 'ExceptionHandler'
@@ -20628,7 +20672,7 @@
.namespace ["NQP";"Actions"]
-.sub "args" :subid("88_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "args" :subid("88_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1603
.annotate "line", 600
new $P1602, 'ExceptionHandler'
@@ -20658,10 +20702,10 @@
.namespace ["NQP";"Actions"]
-.sub "arglist" :subid("89_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "arglist" :subid("89_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1613
.annotate "line", 602
- .const 'Sub' $P1624 = "90_1267204714.47172"
+ .const 'Sub' $P1624 = "90_1271336409.53729"
capture_lex $P1624
new $P1612, 'ExceptionHandler'
set_addr $P1612, control_1611
@@ -20693,7 +20737,7 @@
new $P1622, "Undef"
vivify_498:
unless $P1622, if_1620_end
- .const 'Sub' $P1624 = "90_1267204714.47172"
+ .const 'Sub' $P1624 = "90_1271336409.53729"
capture_lex $P1624
$P1624()
if_1620_end:
@@ -20801,9 +20845,9 @@
.namespace ["NQP";"Actions"]
-.sub "_block1623" :anon :subid("90_1267204714.47172") :outer("89_1267204714.47172")
+.sub "_block1623" :anon :subid("90_1271336409.53729") :outer("89_1271336409.53729")
.annotate "line", 604
- .const 'Sub' $P1645 = "91_1267204714.47172"
+ .const 'Sub' $P1645 = "91_1271336409.53729"
capture_lex $P1645
.annotate "line", 605
new $P1625, "Undef"
@@ -20856,7 +20900,7 @@
unless $P1639, loop1650_done
shift $P1643, $P1639
loop1650_redo:
- .const 'Sub' $P1645 = "91_1267204714.47172"
+ .const 'Sub' $P1645 = "91_1271336409.53729"
capture_lex $P1645
$P1645($P1643)
loop1650_next:
@@ -20879,7 +20923,7 @@
.namespace ["NQP";"Actions"]
-.sub "_block1644" :anon :subid("91_1267204714.47172") :outer("90_1267204714.47172")
+.sub "_block1644" :anon :subid("91_1271336409.53729") :outer("90_1271336409.53729")
.param pmc param_1646
.annotate "line", 607
.lex "$_", param_1646
@@ -20891,7 +20935,7 @@
.namespace ["NQP";"Actions"]
-.sub "term:sym<value>" :subid("92_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "term:sym<value>" :subid("92_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1697
.annotate "line", 624
new $P1696, 'ExceptionHandler'
@@ -20921,7 +20965,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>" :subid("93_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<( )>" :subid("93_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1707
.annotate "line", 626
new $P1706, 'ExceptionHandler'
@@ -20977,7 +21021,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>" :subid("94_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<[ ]>" :subid("94_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1725
.annotate "line", 632
new $P1724, 'ExceptionHandler'
@@ -21053,7 +21097,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>" :subid("95_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<ang>" :subid("95_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1752
.annotate "line", 647
new $P1751, 'ExceptionHandler'
@@ -21083,7 +21127,7 @@
.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_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1762
.annotate "line", 648
new $P1761, 'ExceptionHandler'
@@ -21113,7 +21157,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>" :subid("97_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<{ }>" :subid("97_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1772
.annotate "line", 650
new $P1771, 'ExceptionHandler'
@@ -21177,7 +21221,7 @@
.namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>" :subid("98_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "circumfix:sym<sigil>" :subid("98_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1792
.annotate "line", 656
new $P1791, 'ExceptionHandler'
@@ -21256,7 +21300,7 @@
.namespace ["NQP";"Actions"]
-.sub "semilist" :subid("99_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "semilist" :subid("99_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1821
.annotate "line", 663
new $P1820, 'ExceptionHandler'
@@ -21286,7 +21330,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>" :subid("100_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<[ ]>" :subid("100_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1831
.annotate "line", 665
new $P1830, 'ExceptionHandler'
@@ -21323,7 +21367,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>" :subid("101_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<{ }>" :subid("101_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1844
.annotate "line", 671
new $P1843, 'ExceptionHandler'
@@ -21360,7 +21404,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>" :subid("102_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<ang>" :subid("102_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1857
.annotate "line", 677
new $P1856, 'ExceptionHandler'
@@ -21397,7 +21441,7 @@
.namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>" :subid("103_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postcircumfix:sym<( )>" :subid("103_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1870
.annotate "line", 683
new $P1869, 'ExceptionHandler'
@@ -21429,7 +21473,7 @@
.namespace ["NQP";"Actions"]
-.sub "value" :subid("104_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "value" :subid("104_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1880
.annotate "line", 687
new $P1879, 'ExceptionHandler'
@@ -21484,7 +21528,7 @@
.namespace ["NQP";"Actions"]
-.sub "number" :subid("105_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "number" :subid("105_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1897
.annotate "line", 691
new $P1896, 'ExceptionHandler'
@@ -21562,7 +21606,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>" :subid("106_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<apos>" :subid("106_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1925
.annotate "line", 697
new $P1924, 'ExceptionHandler'
@@ -21592,7 +21636,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>" :subid("107_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<dblq>" :subid("107_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1935
.annotate "line", 698
new $P1934, 'ExceptionHandler'
@@ -21622,7 +21666,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>" :subid("108_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<qq>" :subid("108_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1945
.annotate "line", 699
new $P1944, 'ExceptionHandler'
@@ -21652,7 +21696,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<q>" :subid("109_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<q>" :subid("109_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1955
.annotate "line", 700
new $P1954, 'ExceptionHandler'
@@ -21682,7 +21726,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>" :subid("110_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<Q>" :subid("110_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1965
.annotate "line", 701
new $P1964, 'ExceptionHandler'
@@ -21712,7 +21756,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>" :subid("111_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym<Q:PIR>" :subid("111_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1975
.annotate "line", 702
new $P1974, 'ExceptionHandler'
@@ -21748,7 +21792,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote:sym</ />" :subid("112_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote:sym</ />" :subid("112_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_1989
.param pmc param_1990 :optional
.param int has_param_1990 :opt_flag
@@ -21857,7 +21901,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>" :subid("113_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote_escape:sym<$>" :subid("113_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2026
.annotate "line", 731
new $P2025, 'ExceptionHandler'
@@ -21887,7 +21931,7 @@
.namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>" :subid("114_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "quote_escape:sym<{ }>" :subid("114_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2036
.annotate "line", 732
new $P2035, 'ExceptionHandler'
@@ -21925,7 +21969,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>" :subid("115_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postfix:sym<.>" :subid("115_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2050
.annotate "line", 740
new $P2049, 'ExceptionHandler'
@@ -21955,7 +21999,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>" :subid("116_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postfix:sym<++>" :subid("116_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2060
.annotate "line", 742
new $P2059, 'ExceptionHandler'
@@ -21985,7 +22029,7 @@
.namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->" :subid("117_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "postfix:sym<-->" :subid("117_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2070
.annotate "line", 748
new $P2069, 'ExceptionHandler'
@@ -22015,7 +22059,7 @@
.namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>" :subid("118_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "prefix:sym<make>" :subid("118_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2080
.annotate "line", 754
new $P2079, 'ExceptionHandler'
@@ -22045,7 +22089,7 @@
.namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>" :subid("119_1267204714.47172") :method :outer("11_1267204714.47172")
+.sub "infix:sym<~~>" :subid("119_1271336409.53729") :method :outer("11_1271336409.53729")
.param pmc param_2092
.annotate "line", 763
new $P2091, 'ExceptionHandler'
@@ -22071,18 +22115,18 @@
.namespace ["NQP";"RegexActions"]
-.sub "_block2099" :subid("120_1267204714.47172") :outer("11_1267204714.47172")
+.sub "_block2099" :subid("120_1271336409.53729") :outer("11_1271336409.53729")
.annotate "line", 768
- .const 'Sub' $P2135 = "124_1267204714.47172"
+ .const 'Sub' $P2135 = "124_1271336409.53729"
capture_lex $P2135
- .const 'Sub' $P2125 = "123_1267204714.47172"
+ .const 'Sub' $P2125 = "123_1271336409.53729"
capture_lex $P2125
- .const 'Sub' $P2115 = "122_1267204714.47172"
+ .const 'Sub' $P2115 = "122_1271336409.53729"
capture_lex $P2115
- .const 'Sub' $P2101 = "121_1267204714.47172"
+ .const 'Sub' $P2101 = "121_1271336409.53729"
capture_lex $P2101
.annotate "line", 779
- .const 'Sub' $P2135 = "124_1267204714.47172"
+ .const 'Sub' $P2135 = "124_1271336409.53729"
capture_lex $P2135
.annotate "line", 768
.return ($P2135)
@@ -22090,7 +22134,7 @@
.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>" :subid("121_1267204714.47172") :method :outer("120_1267204714.47172")
+.sub "metachar:sym<:my>" :subid("121_1271336409.53729") :method :outer("120_1271336409.53729")
.param pmc param_2104
.annotate "line", 770
new $P2103, 'ExceptionHandler'
@@ -22129,7 +22173,7 @@
.namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>" :subid("122_1267204714.47172") :method :outer("120_1267204714.47172")
+.sub "metachar:sym<{ }>" :subid("122_1271336409.53729") :method :outer("120_1271336409.53729")
.param pmc param_2118
.annotate "line", 775
new $P2117, 'ExceptionHandler'
@@ -22159,7 +22203,7 @@
.namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>" :subid("123_1267204714.47172") :method :outer("120_1267204714.47172")
+.sub "assertion:sym<{ }>" :subid("123_1271336409.53729") :method :outer("120_1271336409.53729")
.param pmc param_2128
.annotate "line", 777
new $P2127, 'ExceptionHandler'
@@ -22189,7 +22233,7 @@
.namespace ["NQP";"RegexActions"]
-.sub "codeblock" :subid("124_1267204714.47172") :method :outer("120_1267204714.47172")
+.sub "codeblock" :subid("124_1271336409.53729") :method :outer("120_1271336409.53729")
.param pmc param_2138
.annotate "line", 779
new $P2137, 'ExceptionHandler'
Modified: branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/P6Regex-s0.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ext/nqp-rx/src/stage0/P6Regex-s0.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -16,7 +16,7 @@
### .include 'gen/p6regex-grammar.pir'
.namespace []
-.sub "_block11" :anon :subid("10_1267204688.82934")
+.sub "_block11" :anon :subid("10_1271336383.463")
.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_1271336383.463")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204688.82934"
+ .const 'Sub' $P12 = "10_1271336383.463"
.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_1271336383.463") :outer("10_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P571 = "156_1267204688.82934"
+ .const 'Sub' $P571 = "156_1271336383.463"
capture_lex $P571
- .const 'Sub' $P563 = "154_1267204688.82934"
+ .const 'Sub' $P563 = "154_1271336383.463"
capture_lex $P563
- .const 'Sub' $P555 = "152_1267204688.82934"
+ .const 'Sub' $P555 = "152_1271336383.463"
capture_lex $P555
- .const 'Sub' $P534 = "147_1267204688.82934"
+ .const 'Sub' $P534 = "147_1271336383.463"
capture_lex $P534
- .const 'Sub' $P499 = "141_1267204688.82934"
+ .const 'Sub' $P499 = "141_1271336383.463"
capture_lex $P499
- .const 'Sub' $P487 = "138_1267204688.82934"
+ .const 'Sub' $P487 = "138_1271336383.463"
capture_lex $P487
- .const 'Sub' $P474 = "135_1267204688.82934"
+ .const 'Sub' $P474 = "135_1271336383.463"
capture_lex $P474
- .const 'Sub' $P468 = "133_1267204688.82934"
+ .const 'Sub' $P468 = "133_1271336383.463"
capture_lex $P468
- .const 'Sub' $P457 = "130_1267204688.82934"
+ .const 'Sub' $P457 = "130_1271336383.463"
capture_lex $P457
- .const 'Sub' $P446 = "127_1267204688.82934"
+ .const 'Sub' $P446 = "127_1271336383.463"
capture_lex $P446
- .const 'Sub' $P437 = "123_1267204688.82934"
+ .const 'Sub' $P437 = "123_1271336383.463"
capture_lex $P437
- .const 'Sub' $P431 = "121_1267204688.82934"
+ .const 'Sub' $P431 = "121_1271336383.463"
capture_lex $P431
- .const 'Sub' $P425 = "119_1267204688.82934"
+ .const 'Sub' $P425 = "119_1271336383.463"
capture_lex $P425
- .const 'Sub' $P419 = "117_1267204688.82934"
+ .const 'Sub' $P419 = "117_1271336383.463"
capture_lex $P419
- .const 'Sub' $P413 = "115_1267204688.82934"
+ .const 'Sub' $P413 = "115_1271336383.463"
capture_lex $P413
- .const 'Sub' $P405 = "113_1267204688.82934"
+ .const 'Sub' $P405 = "113_1271336383.463"
capture_lex $P405
- .const 'Sub' $P394 = "111_1267204688.82934"
+ .const 'Sub' $P394 = "111_1271336383.463"
capture_lex $P394
- .const 'Sub' $P383 = "109_1267204688.82934"
+ .const 'Sub' $P383 = "109_1271336383.463"
capture_lex $P383
- .const 'Sub' $P377 = "107_1267204688.82934"
+ .const 'Sub' $P377 = "107_1271336383.463"
capture_lex $P377
- .const 'Sub' $P371 = "105_1267204688.82934"
+ .const 'Sub' $P371 = "105_1271336383.463"
capture_lex $P371
- .const 'Sub' $P365 = "103_1267204688.82934"
+ .const 'Sub' $P365 = "103_1271336383.463"
capture_lex $P365
- .const 'Sub' $P359 = "101_1267204688.82934"
+ .const 'Sub' $P359 = "101_1271336383.463"
capture_lex $P359
- .const 'Sub' $P353 = "99_1267204688.82934"
+ .const 'Sub' $P353 = "99_1271336383.463"
capture_lex $P353
- .const 'Sub' $P347 = "97_1267204688.82934"
+ .const 'Sub' $P347 = "97_1271336383.463"
capture_lex $P347
- .const 'Sub' $P341 = "95_1267204688.82934"
+ .const 'Sub' $P341 = "95_1271336383.463"
capture_lex $P341
- .const 'Sub' $P335 = "93_1267204688.82934"
+ .const 'Sub' $P335 = "93_1271336383.463"
capture_lex $P335
- .const 'Sub' $P323 = "89_1267204688.82934"
+ .const 'Sub' $P323 = "89_1271336383.463"
capture_lex $P323
- .const 'Sub' $P311 = "87_1267204688.82934"
+ .const 'Sub' $P311 = "87_1271336383.463"
capture_lex $P311
- .const 'Sub' $P304 = "85_1267204688.82934"
+ .const 'Sub' $P304 = "85_1271336383.463"
capture_lex $P304
- .const 'Sub' $P287 = "83_1267204688.82934"
+ .const 'Sub' $P287 = "83_1271336383.463"
capture_lex $P287
- .const 'Sub' $P280 = "81_1267204688.82934"
+ .const 'Sub' $P280 = "81_1271336383.463"
capture_lex $P280
- .const 'Sub' $P274 = "79_1267204688.82934"
+ .const 'Sub' $P274 = "79_1271336383.463"
capture_lex $P274
- .const 'Sub' $P268 = "77_1267204688.82934"
+ .const 'Sub' $P268 = "77_1271336383.463"
capture_lex $P268
- .const 'Sub' $P261 = "75_1267204688.82934"
+ .const 'Sub' $P261 = "75_1271336383.463"
capture_lex $P261
- .const 'Sub' $P254 = "73_1267204688.82934"
+ .const 'Sub' $P254 = "73_1271336383.463"
capture_lex $P254
- .const 'Sub' $P247 = "71_1267204688.82934"
+ .const 'Sub' $P247 = "71_1271336383.463"
capture_lex $P247
- .const 'Sub' $P240 = "69_1267204688.82934"
+ .const 'Sub' $P240 = "69_1271336383.463"
capture_lex $P240
- .const 'Sub' $P234 = "67_1267204688.82934"
+ .const 'Sub' $P234 = "67_1271336383.463"
capture_lex $P234
- .const 'Sub' $P228 = "65_1267204688.82934"
+ .const 'Sub' $P228 = "65_1271336383.463"
capture_lex $P228
- .const 'Sub' $P222 = "63_1267204688.82934"
+ .const 'Sub' $P222 = "63_1271336383.463"
capture_lex $P222
- .const 'Sub' $P216 = "61_1267204688.82934"
+ .const 'Sub' $P216 = "61_1271336383.463"
capture_lex $P216
- .const 'Sub' $P210 = "59_1267204688.82934"
+ .const 'Sub' $P210 = "59_1271336383.463"
capture_lex $P210
- .const 'Sub' $P205 = "57_1267204688.82934"
+ .const 'Sub' $P205 = "57_1271336383.463"
capture_lex $P205
- .const 'Sub' $P200 = "55_1267204688.82934"
+ .const 'Sub' $P200 = "55_1271336383.463"
capture_lex $P200
- .const 'Sub' $P194 = "53_1267204688.82934"
+ .const 'Sub' $P194 = "53_1271336383.463"
capture_lex $P194
- .const 'Sub' $P188 = "51_1267204688.82934"
+ .const 'Sub' $P188 = "51_1271336383.463"
capture_lex $P188
- .const 'Sub' $P182 = "49_1267204688.82934"
+ .const 'Sub' $P182 = "49_1271336383.463"
capture_lex $P182
- .const 'Sub' $P166 = "44_1267204688.82934"
+ .const 'Sub' $P166 = "44_1271336383.463"
capture_lex $P166
- .const 'Sub' $P154 = "42_1267204688.82934"
+ .const 'Sub' $P154 = "42_1271336383.463"
capture_lex $P154
- .const 'Sub' $P147 = "40_1267204688.82934"
+ .const 'Sub' $P147 = "40_1271336383.463"
capture_lex $P147
- .const 'Sub' $P140 = "38_1267204688.82934"
+ .const 'Sub' $P140 = "38_1271336383.463"
capture_lex $P140
- .const 'Sub' $P133 = "36_1267204688.82934"
+ .const 'Sub' $P133 = "36_1271336383.463"
capture_lex $P133
- .const 'Sub' $P114 = "31_1267204688.82934"
+ .const 'Sub' $P114 = "31_1271336383.463"
capture_lex $P114
- .const 'Sub' $P101 = "28_1267204688.82934"
+ .const 'Sub' $P101 = "28_1271336383.463"
capture_lex $P101
- .const 'Sub' $P94 = "26_1267204688.82934"
+ .const 'Sub' $P94 = "26_1271336383.463"
capture_lex $P94
- .const 'Sub' $P82 = "24_1267204688.82934"
+ .const 'Sub' $P82 = "24_1271336383.463"
capture_lex $P82
- .const 'Sub' $P75 = "22_1267204688.82934"
+ .const 'Sub' $P75 = "22_1271336383.463"
capture_lex $P75
- .const 'Sub' $P63 = "20_1267204688.82934"
+ .const 'Sub' $P63 = "20_1271336383.463"
capture_lex $P63
- .const 'Sub' $P56 = "18_1267204688.82934"
+ .const 'Sub' $P56 = "18_1271336383.463"
capture_lex $P56
- .const 'Sub' $P46 = "15_1267204688.82934"
+ .const 'Sub' $P46 = "15_1271336383.463"
capture_lex $P46
- .const 'Sub' $P38 = "13_1267204688.82934"
+ .const 'Sub' $P38 = "13_1271336383.463"
capture_lex $P38
- .const 'Sub' $P15 = "12_1267204688.82934"
+ .const 'Sub' $P15 = "12_1271336383.463"
capture_lex $P15
- .const 'Sub' $P571 = "156_1267204688.82934"
+ .const 'Sub' $P571 = "156_1271336383.463"
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_1271336383.463") :method :outer("11_1271336383.463")
.param pmc param_18
.param pmc param_19
.param pmc param_20 :optional
@@ -222,7 +222,7 @@
.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws" :subid("13_1267204688.82934") :method :outer("11_1267204688.82934")
+.sub "ws" :subid("13_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P52 = "17_1267204688.82934"
+ .const 'Sub' $P52 = "17_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("15_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P110 = "30_1267204688.82934"
+ .const 'Sub' $P110 = "30_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("28_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P125 = "33_1267204688.82934"
+ .const 'Sub' $P125 = "33_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("31_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P175 = "46_1267204688.82934"
+ .const 'Sub' $P175 = "46_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("44_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P454 = "129_1267204688.82934"
+ .const 'Sub' $P454 = "129_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("127_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P465 = "132_1267204688.82934"
+ .const 'Sub' $P465 = "132_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("130_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P483 = "137_1267204688.82934"
+ .const 'Sub' $P483 = "137_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("135_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P493 = "140_1267204688.82934"
+ .const 'Sub' $P493 = "140_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("138_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P511 = "143_1267204688.82934"
+ .const 'Sub' $P511 = "143_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("141_1271336383.463")
.annotate "line", 164
- .const 'Sub' $P526 = "146_1267204688.82934"
+ .const 'Sub' $P526 = "146_1271336383.463"
capture_lex $P526
- .const 'Sub' $P521 = "145_1267204688.82934"
+ .const 'Sub' $P521 = "145_1271336383.463"
capture_lex $P521
- .const 'Sub' $P517 = "144_1267204688.82934"
+ .const 'Sub' $P517 = "144_1271336383.463"
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_1271336383.463"
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_1271336383.463"
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_1271336383.463"
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_1271336383.463") :method :outer("143_1271336383.463")
.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_1271336383.463") :method :outer("143_1271336383.463")
.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_1271336383.463") :method :outer("143_1271336383.463")
.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_1271336383.463") :method :outer("11_1271336383.463")
.annotate "line", 3
- .const 'Sub' $P543 = "149_1267204688.82934"
+ .const 'Sub' $P543 = "149_1271336383.463"
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_1271336383.463"
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_1271336383.463") :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_1271336383.463") :method :outer("147_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336383.463") :method :outer("11_1271336383.463")
.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_1271336383.463") :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_1271336390.22432")
.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_1271336390.22432")
.annotate "line", 0
- .const 'Sub' $P12 = "10_1267204695.47543"
+ .const 'Sub' $P12 = "10_1271336390.22432"
.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_1271336390.22432") :outer("10_1271336390.22432")
.annotate "line", 4
- .const 'Sub' $P1536 = "89_1267204695.47543"
+ .const 'Sub' $P1536 = "89_1271336390.22432"
capture_lex $P1536
- .const 'Sub' $P1467 = "85_1267204695.47543"
+ .const 'Sub' $P1467 = "85_1271336390.22432"
capture_lex $P1467
- .const 'Sub' $P1399 = "83_1267204695.47543"
+ .const 'Sub' $P1399 = "83_1271336390.22432"
capture_lex $P1399
- .const 'Sub' $P1326 = "80_1267204695.47543"
+ .const 'Sub' $P1326 = "80_1271336390.22432"
capture_lex $P1326
- .const 'Sub' $P1312 = "79_1267204695.47543"
+ .const 'Sub' $P1312 = "79_1271336390.22432"
capture_lex $P1312
- .const 'Sub' $P1288 = "78_1267204695.47543"
+ .const 'Sub' $P1288 = "78_1271336390.22432"
capture_lex $P1288
- .const 'Sub' $P1270 = "77_1267204695.47543"
+ .const 'Sub' $P1270 = "77_1271336390.22432"
capture_lex $P1270
- .const 'Sub' $P1256 = "76_1267204695.47543"
+ .const 'Sub' $P1256 = "76_1271336390.22432"
capture_lex $P1256
- .const 'Sub' $P1243 = "75_1267204695.47543"
+ .const 'Sub' $P1243 = "75_1271336390.22432"
capture_lex $P1243
- .const 'Sub' $P1212 = "74_1267204695.47543"
+ .const 'Sub' $P1212 = "74_1271336390.22432"
capture_lex $P1212
- .const 'Sub' $P1181 = "73_1267204695.47543"
+ .const 'Sub' $P1181 = "73_1271336390.22432"
capture_lex $P1181
- .const 'Sub' $P1165 = "72_1267204695.47543"
+ .const 'Sub' $P1165 = "72_1271336390.22432"
capture_lex $P1165
- .const 'Sub' $P1149 = "71_1267204695.47543"
+ .const 'Sub' $P1149 = "71_1271336390.22432"
capture_lex $P1149
- .const 'Sub' $P1133 = "70_1267204695.47543"
+ .const 'Sub' $P1133 = "70_1271336390.22432"
capture_lex $P1133
- .const 'Sub' $P1117 = "69_1267204695.47543"
+ .const 'Sub' $P1117 = "69_1271336390.22432"
capture_lex $P1117
- .const 'Sub' $P1101 = "68_1267204695.47543"
+ .const 'Sub' $P1101 = "68_1271336390.22432"
capture_lex $P1101
- .const 'Sub' $P1085 = "67_1267204695.47543"
+ .const 'Sub' $P1085 = "67_1271336390.22432"
capture_lex $P1085
- .const 'Sub' $P1069 = "66_1267204695.47543"
+ .const 'Sub' $P1069 = "66_1271336390.22432"
capture_lex $P1069
- .const 'Sub' $P1045 = "65_1267204695.47543"
+ .const 'Sub' $P1045 = "65_1271336390.22432"
capture_lex $P1045
- .const 'Sub' $P1030 = "64_1267204695.47543"
+ .const 'Sub' $P1030 = "64_1271336390.22432"
capture_lex $P1030
- .const 'Sub' $P974 = "63_1267204695.47543"
+ .const 'Sub' $P974 = "63_1271336390.22432"
capture_lex $P974
- .const 'Sub' $P953 = "62_1267204695.47543"
+ .const 'Sub' $P953 = "62_1271336390.22432"
capture_lex $P953
- .const 'Sub' $P931 = "61_1267204695.47543"
+ .const 'Sub' $P931 = "61_1271336390.22432"
capture_lex $P931
- .const 'Sub' $P921 = "60_1267204695.47543"
+ .const 'Sub' $P921 = "60_1271336390.22432"
capture_lex $P921
- .const 'Sub' $P911 = "59_1267204695.47543"
+ .const 'Sub' $P911 = "59_1271336390.22432"
capture_lex $P911
- .const 'Sub' $P901 = "58_1267204695.47543"
+ .const 'Sub' $P901 = "58_1271336390.22432"
capture_lex $P901
- .const 'Sub' $P889 = "57_1267204695.47543"
+ .const 'Sub' $P889 = "57_1271336390.22432"
capture_lex $P889
- .const 'Sub' $P877 = "56_1267204695.47543"
+ .const 'Sub' $P877 = "56_1271336390.22432"
capture_lex $P877
- .const 'Sub' $P865 = "55_1267204695.47543"
+ .const 'Sub' $P865 = "55_1271336390.22432"
capture_lex $P865
- .const 'Sub' $P853 = "54_1267204695.47543"
+ .const 'Sub' $P853 = "54_1271336390.22432"
capture_lex $P853
- .const 'Sub' $P841 = "53_1267204695.47543"
+ .const 'Sub' $P841 = "53_1271336390.22432"
capture_lex $P841
- .const 'Sub' $P829 = "52_1267204695.47543"
+ .const 'Sub' $P829 = "52_1271336390.22432"
capture_lex $P829
- .const 'Sub' $P817 = "51_1267204695.47543"
+ .const 'Sub' $P817 = "51_1271336390.22432"
capture_lex $P817
- .const 'Sub' $P805 = "50_1267204695.47543"
+ .const 'Sub' $P805 = "50_1271336390.22432"
capture_lex $P805
- .const 'Sub' $P782 = "49_1267204695.47543"
+ .const 'Sub' $P782 = "49_1271336390.22432"
capture_lex $P782
- .const 'Sub' $P759 = "48_1267204695.47543"
+ .const 'Sub' $P759 = "48_1271336390.22432"
capture_lex $P759
- .const 'Sub' $P741 = "47_1267204695.47543"
+ .const 'Sub' $P741 = "47_1271336390.22432"
capture_lex $P741
- .const 'Sub' $P731 = "46_1267204695.47543"
+ .const 'Sub' $P731 = "46_1271336390.22432"
capture_lex $P731
- .const 'Sub' $P713 = "45_1267204695.47543"
+ .const 'Sub' $P713 = "45_1271336390.22432"
capture_lex $P713
- .const 'Sub' $P666 = "44_1267204695.47543"
+ .const 'Sub' $P666 = "44_1271336390.22432"
capture_lex $P666
- .const 'Sub' $P649 = "43_1267204695.47543"
+ .const 'Sub' $P649 = "43_1271336390.22432"
capture_lex $P649
- .const 'Sub' $P634 = "42_1267204695.47543"
+ .const 'Sub' $P634 = "42_1271336390.22432"
capture_lex $P634
- .const 'Sub' $P619 = "41_1267204695.47543"
+ .const 'Sub' $P619 = "41_1271336390.22432"
capture_lex $P619
- .const 'Sub' $P593 = "40_1267204695.47543"
+ .const 'Sub' $P593 = "40_1271336390.22432"
capture_lex $P593
- .const 'Sub' $P543 = "38_1267204695.47543"
+ .const 'Sub' $P543 = "38_1271336390.22432"
capture_lex $P543
- .const 'Sub' $P475 = "36_1267204695.47543"
+ .const 'Sub' $P475 = "36_1271336390.22432"
capture_lex $P475
- .const 'Sub' $P420 = "33_1267204695.47543"
+ .const 'Sub' $P420 = "33_1271336390.22432"
capture_lex $P420
- .const 'Sub' $P405 = "32_1267204695.47543"
+ .const 'Sub' $P405 = "32_1271336390.22432"
capture_lex $P405
- .const 'Sub' $P379 = "30_1267204695.47543"
+ .const 'Sub' $P379 = "30_1271336390.22432"
capture_lex $P379
- .const 'Sub' $P362 = "29_1267204695.47543"
+ .const 'Sub' $P362 = "29_1271336390.22432"
capture_lex $P362
- .const 'Sub' $P340 = "28_1267204695.47543"
+ .const 'Sub' $P340 = "28_1271336390.22432"
capture_lex $P340
- .const 'Sub' $P308 = "27_1267204695.47543"
+ .const 'Sub' $P308 = "27_1271336390.22432"
capture_lex $P308
- .const 'Sub' $P54 = "14_1267204695.47543"
+ .const 'Sub' $P54 = "14_1271336390.22432"
capture_lex $P54
- .const 'Sub' $P21 = "13_1267204695.47543"
+ .const 'Sub' $P21 = "13_1271336390.22432"
capture_lex $P21
- .const 'Sub' $P16 = "12_1267204695.47543"
+ .const 'Sub' $P16 = "12_1271336390.22432"
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_1271336390.22432"
capture_lex $P16
.lex "INIT", $P16
.annotate "line", 479
- .const 'Sub' $P21 = "13_1267204695.47543"
+ .const 'Sub' $P21 = "13_1271336390.22432"
capture_lex $P21
.lex "buildsub", $P21
.annotate "line", 496
- .const 'Sub' $P54 = "14_1267204695.47543"
+ .const 'Sub' $P54 = "14_1271336390.22432"
capture_lex $P54
.lex "capnames", $P54
.annotate "line", 562
- .const 'Sub' $P308 = "27_1267204695.47543"
+ .const 'Sub' $P308 = "27_1271336390.22432"
capture_lex $P308
.lex "backmod", $P308
.annotate "line", 569
- .const 'Sub' $P340 = "28_1267204695.47543"
+ .const 'Sub' $P340 = "28_1271336390.22432"
capture_lex $P340
.lex "subrule_alias", $P340
.annotate "line", 4
@@ -7329,7 +7329,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT" :subid("12_1267204695.47543") :outer("11_1267204695.47543")
+.sub "INIT" :subid("12_1271336390.22432") :outer("11_1271336390.22432")
.annotate "line", 6
new $P18, 'ExceptionHandler'
set_addr $P18, control_17
@@ -7353,7 +7353,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub" :subid("13_1267204695.47543") :outer("11_1267204695.47543")
+.sub "buildsub" :subid("13_1271336390.22432") :outer("11_1271336390.22432")
.param pmc param_24
.param pmc param_25 :optional
.param int has_param_25 :opt_flag
@@ -7430,19 +7430,19 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames" :subid("14_1267204695.47543") :outer("11_1267204695.47543")
+.sub "capnames" :subid("14_1271336390.22432") :outer("11_1271336390.22432")
.param pmc param_57
.param pmc param_58
.annotate "line", 496
- .const 'Sub' $P283 = "25_1267204695.47543"
+ .const 'Sub' $P283 = "25_1271336390.22432"
capture_lex $P283
- .const 'Sub' $P220 = "22_1267204695.47543"
+ .const 'Sub' $P220 = "22_1271336390.22432"
capture_lex $P220
- .const 'Sub' $P178 = "20_1267204695.47543"
+ .const 'Sub' $P178 = "20_1271336390.22432"
capture_lex $P178
- .const 'Sub' $P136 = "18_1267204695.47543"
+ .const 'Sub' $P136 = "18_1271336390.22432"
capture_lex $P136
- .const 'Sub' $P69 = "15_1267204695.47543"
+ .const 'Sub' $P69 = "15_1271336390.22432"
capture_lex $P69
new $P56, 'ExceptionHandler'
set_addr $P56, control_55
@@ -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_1271336390.22432"
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_1271336390.22432"
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_1271336390.22432"
capture_lex $P178
$P178()
if_168_end:
@@ -7532,7 +7532,7 @@
unless $P130, loop165_done
shift $P134, $P130
loop165_redo:
- .const 'Sub' $P136 = "18_1267204695.47543"
+ .const 'Sub' $P136 = "18_1271336390.22432"
capture_lex $P136
$P136($P134)
loop165_next:
@@ -7551,7 +7551,7 @@
goto if_64_end
if_64:
.annotate "line", 499
- .const 'Sub' $P69 = "15_1267204695.47543"
+ .const 'Sub' $P69 = "15_1271336390.22432"
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_1271336390.22432") :outer("14_1271336390.22432")
.annotate "line", 551
- .const 'Sub' $P294 = "26_1267204695.47543"
+ .const 'Sub' $P294 = "26_1271336390.22432"
capture_lex $P294
.annotate "line", 552
$P284 = root_new ['parrot';'Hash']
@@ -7606,7 +7606,7 @@
unless $P289, loop299_done
shift $P292, $P289
loop299_redo:
- .const 'Sub' $P294 = "26_1267204695.47543"
+ .const 'Sub' $P294 = "26_1271336390.22432"
capture_lex $P294
$P294($P292)
loop299_next:
@@ -7636,7 +7636,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293" :anon :subid("26_1267204695.47543") :outer("25_1267204695.47543")
+.sub "_block293" :anon :subid("26_1271336390.22432") :outer("25_1271336390.22432")
.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_1271336390.22432") :outer("14_1271336390.22432")
.annotate "line", 534
- .const 'Sub' $P260 = "24_1267204695.47543"
+ .const 'Sub' $P260 = "24_1271336390.22432"
capture_lex $P260
- .const 'Sub' $P232 = "23_1267204695.47543"
+ .const 'Sub' $P232 = "23_1271336390.22432"
capture_lex $P232
.annotate "line", 535
new $P221, "Undef"
@@ -7695,7 +7695,7 @@
unless $P227, loop248_done
shift $P230, $P227
loop248_redo:
- .const 'Sub' $P232 = "23_1267204695.47543"
+ .const 'Sub' $P232 = "23_1271336390.22432"
capture_lex $P232
$P232($P230)
loop248_next:
@@ -7734,7 +7734,7 @@
unless $P255, loop273_done
shift $P258, $P255
loop273_redo:
- .const 'Sub' $P260 = "24_1267204695.47543"
+ .const 'Sub' $P260 = "24_1271336390.22432"
capture_lex $P260
$P260($P258)
loop273_next:
@@ -7764,7 +7764,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231" :anon :subid("23_1267204695.47543") :outer("22_1267204695.47543")
+.sub "_block231" :anon :subid("23_1271336390.22432") :outer("22_1271336390.22432")
.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_1271336390.22432") :outer("22_1271336390.22432")
.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_1271336390.22432") :outer("14_1271336390.22432")
.annotate "line", 521
- .const 'Sub' $P196 = "21_1267204695.47543"
+ .const 'Sub' $P196 = "21_1271336390.22432"
capture_lex $P196
.annotate "line", 522
new $P179, "Undef"
@@ -7889,7 +7889,7 @@
unless $P191, loop212_done
shift $P194, $P191
loop212_redo:
- .const 'Sub' $P196 = "21_1267204695.47543"
+ .const 'Sub' $P196 = "21_1271336390.22432"
capture_lex $P196
$P196($P194)
loop212_next:
@@ -7909,7 +7909,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195" :anon :subid("21_1267204695.47543") :outer("20_1267204695.47543")
+.sub "_block195" :anon :subid("21_1271336390.22432") :outer("20_1271336390.22432")
.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_1271336390.22432") :outer("14_1271336390.22432")
.param pmc param_138
.annotate "line", 513
- .const 'Sub' $P147 = "19_1267204695.47543"
+ .const 'Sub' $P147 = "19_1271336390.22432"
capture_lex $P147
.annotate "line", 514
$P137 = root_new ['parrot';'Hash']
@@ -7975,7 +7975,7 @@
unless $P142, loop160_done
shift $P145, $P142
loop160_redo:
- .const 'Sub' $P147 = "19_1267204695.47543"
+ .const 'Sub' $P147 = "19_1271336390.22432"
capture_lex $P147
$P147($P145)
loop160_next:
@@ -8005,7 +8005,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146" :anon :subid("19_1267204695.47543") :outer("18_1267204695.47543")
+.sub "_block146" :anon :subid("19_1271336390.22432") :outer("18_1271336390.22432")
.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_1271336390.22432") :outer("14_1271336390.22432")
.annotate "line", 499
- .const 'Sub' $P78 = "16_1267204695.47543"
+ .const 'Sub' $P78 = "16_1271336390.22432"
capture_lex $P78
.annotate "line", 500
new $P70, "Undef"
@@ -8068,7 +8068,7 @@
unless $P72, loop122_done
shift $P76, $P72
loop122_redo:
- .const 'Sub' $P78 = "16_1267204695.47543"
+ .const 'Sub' $P78 = "16_1271336390.22432"
capture_lex $P78
$P78($P76)
loop122_next:
@@ -8091,10 +8091,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77" :anon :subid("16_1267204695.47543") :outer("15_1267204695.47543")
+.sub "_block77" :anon :subid("16_1271336390.22432") :outer("15_1271336390.22432")
.param pmc param_80
.annotate "line", 501
- .const 'Sub' $P89 = "17_1267204695.47543"
+ .const 'Sub' $P89 = "17_1271336390.22432"
capture_lex $P89
.annotate "line", 502
$P79 = root_new ['parrot';'Hash']
@@ -8117,7 +8117,7 @@
unless $P84, loop109_done
shift $P87, $P84
loop109_redo:
- .const 'Sub' $P89 = "17_1267204695.47543"
+ .const 'Sub' $P89 = "17_1271336390.22432"
capture_lex $P89
$P89($P87)
loop109_next:
@@ -8166,7 +8166,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88" :anon :subid("17_1267204695.47543") :outer("16_1267204695.47543")
+.sub "_block88" :anon :subid("17_1271336390.22432") :outer("16_1271336390.22432")
.param pmc param_90
.annotate "line", 503
.lex "$_", param_90
@@ -8225,7 +8225,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod" :subid("27_1267204695.47543") :outer("11_1267204695.47543")
+.sub "backmod" :subid("27_1271336390.22432") :outer("11_1271336390.22432")
.param pmc param_311
.param pmc param_312
.annotate "line", 562
@@ -8299,7 +8299,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias" :subid("28_1267204695.47543") :outer("11_1267204695.47543")
+.sub "subrule_alias" :subid("28_1271336390.22432") :outer("11_1271336390.22432")
.param pmc param_343
.param pmc param_344
.annotate "line", 569
@@ -8343,7 +8343,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg" :subid("29_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "arg" :subid("29_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_365
.annotate "line", 14
new $P364, 'ExceptionHandler'
@@ -8399,10 +8399,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist" :subid("30_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "arglist" :subid("30_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_382
.annotate "line", 18
- .const 'Sub' $P392 = "31_1267204695.47543"
+ .const 'Sub' $P392 = "31_1271336390.22432"
capture_lex $P392
new $P381, 'ExceptionHandler'
set_addr $P381, control_380
@@ -8436,7 +8436,7 @@
unless $P386, loop398_done
shift $P390, $P386
loop398_redo:
- .const 'Sub' $P392 = "31_1267204695.47543"
+ .const 'Sub' $P392 = "31_1271336390.22432"
capture_lex $P392
$P392($P390)
loop398_next:
@@ -8465,7 +8465,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391" :anon :subid("31_1267204695.47543") :outer("30_1267204695.47543")
+.sub "_block391" :anon :subid("31_1271336390.22432") :outer("30_1271336390.22432")
.param pmc param_393
.annotate "line", 20
.lex "$_", param_393
@@ -8478,7 +8478,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP" :subid("32_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "TOP" :subid("32_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_408
.annotate "line", 24
new $P407, 'ExceptionHandler'
@@ -8520,14 +8520,14 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler" :subid("33_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "nibbler" :subid("33_1271336390.22432") :method :outer("11_1271336390.22432")
.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_1271336390.22432"
capture_lex $P458
- .const 'Sub' $P432 = "34_1267204695.47543"
+ .const 'Sub' $P432 = "34_1271336390.22432"
capture_lex $P432
new $P422, 'ExceptionHandler'
set_addr $P422, control_421
@@ -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_1271336390.22432"
capture_lex $P432
$P432()
if_427_end:
@@ -8611,7 +8611,7 @@
unless $P452, loop464_done
shift $P456, $P452
loop464_redo:
- .const 'Sub' $P458 = "35_1267204695.47543"
+ .const 'Sub' $P458 = "35_1271336390.22432"
capture_lex $P458
$P458($P456)
loop464_next:
@@ -8641,7 +8641,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431" :anon :subid("34_1267204695.47543") :outer("33_1267204695.47543")
+.sub "_block431" :anon :subid("34_1271336390.22432") :outer("33_1271336390.22432")
.annotate "line", 32
$P433 = root_new ['parrot';'Hash']
.lex "%old", $P433
@@ -8681,7 +8681,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457" :anon :subid("35_1267204695.47543") :outer("33_1267204695.47543")
+.sub "_block457" :anon :subid("35_1271336390.22432") :outer("33_1271336390.22432")
.param pmc param_459
.annotate "line", 45
.lex "$_", param_459
@@ -8696,10 +8696,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish" :subid("36_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "termish" :subid("36_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_478
.annotate "line", 55
- .const 'Sub' $P491 = "37_1267204695.47543"
+ .const 'Sub' $P491 = "37_1271336390.22432"
capture_lex $P491
new $P477, 'ExceptionHandler'
set_addr $P477, control_476
@@ -8742,7 +8742,7 @@
unless $P485, loop536_done
shift $P489, $P485
loop536_redo:
- .const 'Sub' $P491 = "37_1267204695.47543"
+ .const 'Sub' $P491 = "37_1271336390.22432"
capture_lex $P491
$P491($P489)
loop536_next:
@@ -8771,7 +8771,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490" :anon :subid("37_1267204695.47543") :outer("36_1267204695.47543")
+.sub "_block490" :anon :subid("37_1271336390.22432") :outer("36_1271336390.22432")
.param pmc param_493
.annotate "line", 59
new $P492, "Undef"
@@ -8898,10 +8898,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom" :subid("38_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantified_atom" :subid("38_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_546
.annotate "line", 76
- .const 'Sub' $P555 = "39_1267204695.47543"
+ .const 'Sub' $P555 = "39_1271336390.22432"
capture_lex $P555
new $P545, 'ExceptionHandler'
set_addr $P545, control_544
@@ -8964,7 +8964,7 @@
goto if_551_end
if_551:
.annotate "line", 78
- .const 'Sub' $P555 = "39_1267204695.47543"
+ .const 'Sub' $P555 = "39_1271336390.22432"
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_1271336390.22432") :outer("38_1271336390.22432")
.annotate "line", 80
new $P556, "Undef"
.lex "$qast", $P556
@@ -9057,7 +9057,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom" :subid("40_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "atom" :subid("40_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_596
.annotate "line", 91
new $P595, 'ExceptionHandler'
@@ -9135,7 +9135,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>" :subid("41_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<*>" :subid("41_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_622
.annotate "line", 101
new $P621, 'ExceptionHandler'
@@ -9175,7 +9175,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>" :subid("42_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<+>" :subid("42_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_637
.annotate "line", 106
new $P636, 'ExceptionHandler'
@@ -9215,7 +9215,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>" :subid("43_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<?>" :subid("43_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_652
.annotate "line", 111
new $P651, 'ExceptionHandler'
@@ -9259,7 +9259,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>" :subid("44_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "quantifier:sym<**>" :subid("44_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_669
.annotate "line", 117
new $P668, 'ExceptionHandler'
@@ -9399,7 +9399,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>" :subid("45_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<ws>" :subid("45_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_716
.annotate "line", 131
new $P715, 'ExceptionHandler'
@@ -9451,7 +9451,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>" :subid("46_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<[ ]>" :subid("46_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_734
.annotate "line", 140
new $P733, 'ExceptionHandler'
@@ -9483,7 +9483,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>" :subid("47_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<( )>" :subid("47_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_744
.annotate "line", 144
new $P743, 'ExceptionHandler'
@@ -9531,7 +9531,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>" :subid("48_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<'>" :subid("48_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_762
.annotate "line", 151
new $P761, 'ExceptionHandler'
@@ -9587,7 +9587,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">" :subid("49_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<\">" :subid("49_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_785
.annotate "line", 158
new $P784, 'ExceptionHandler'
@@ -9643,7 +9643,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>" :subid("50_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<.>" :subid("50_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_808
.annotate "line", 165
new $P807, 'ExceptionHandler'
@@ -9674,7 +9674,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>" :subid("51_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<^>" :subid("51_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_820
.annotate "line", 170
new $P819, 'ExceptionHandler'
@@ -9705,7 +9705,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>" :subid("52_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<^^>" :subid("52_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_832
.annotate "line", 175
new $P831, 'ExceptionHandler'
@@ -9736,7 +9736,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>" :subid("53_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<$>" :subid("53_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_844
.annotate "line", 180
new $P843, 'ExceptionHandler'
@@ -9767,7 +9767,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>" :subid("54_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<$$>" :subid("54_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_856
.annotate "line", 185
new $P855, 'ExceptionHandler'
@@ -9798,7 +9798,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>" :subid("55_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<:::>" :subid("55_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_868
.annotate "line", 190
new $P867, 'ExceptionHandler'
@@ -9829,7 +9829,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>" :subid("56_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<lwb>" :subid("56_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_880
.annotate "line", 195
new $P879, 'ExceptionHandler'
@@ -9860,7 +9860,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>" :subid("57_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<rwb>" :subid("57_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_892
.annotate "line", 200
new $P891, 'ExceptionHandler'
@@ -9891,7 +9891,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>" :subid("58_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<bs>" :subid("58_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_904
.annotate "line", 205
new $P903, 'ExceptionHandler'
@@ -9923,7 +9923,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>" :subid("59_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<mod>" :subid("59_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_914
.annotate "line", 209
new $P913, 'ExceptionHandler'
@@ -9955,7 +9955,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>" :subid("60_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<assert>" :subid("60_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_924
.annotate "line", 213
new $P923, 'ExceptionHandler'
@@ -9987,7 +9987,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>" :subid("61_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<~>" :subid("61_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_934
.annotate "line", 217
new $P933, 'ExceptionHandler'
@@ -10049,7 +10049,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>" :subid("62_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<{*}>" :subid("62_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_956
.annotate "line", 230
new $P955, 'ExceptionHandler'
@@ -10110,7 +10110,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>" :subid("63_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<var>" :subid("63_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_977
.annotate "line", 237
new $P976, 'ExceptionHandler'
@@ -10270,7 +10270,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>" :subid("64_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "metachar:sym<PIR>" :subid("64_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1033
.annotate "line", 257
new $P1032, 'ExceptionHandler'
@@ -10309,7 +10309,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>" :subid("65_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<w>" :subid("65_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1048
.annotate "line", 265
new $P1047, 'ExceptionHandler'
@@ -10375,7 +10375,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>" :subid("66_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<b>" :subid("66_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1072
.annotate "line", 271
new $P1071, 'ExceptionHandler'
@@ -10418,7 +10418,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>" :subid("67_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<e>" :subid("67_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1088
.annotate "line", 277
new $P1087, 'ExceptionHandler'
@@ -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,7 +10461,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>" :subid("68_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<f>" :subid("68_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1104
.annotate "line", 283
new $P1103, 'ExceptionHandler'
@@ -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,7 +10504,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>" :subid("69_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<h>" :subid("69_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1120
.annotate "line", 289
new $P1119, 'ExceptionHandler'
@@ -10547,7 +10547,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>" :subid("70_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<r>" :subid("70_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1136
.annotate "line", 295
new $P1135, 'ExceptionHandler'
@@ -10590,7 +10590,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>" :subid("71_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<t>" :subid("71_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1152
.annotate "line", 301
new $P1151, 'ExceptionHandler'
@@ -10633,7 +10633,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>" :subid("72_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<v>" :subid("72_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1168
.annotate "line", 307
new $P1167, 'ExceptionHandler'
@@ -10676,7 +10676,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>" :subid("73_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<o>" :subid("73_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1184
.annotate "line", 314
new $P1183, 'ExceptionHandler'
@@ -10759,7 +10759,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>" :subid("74_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<x>" :subid("74_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1215
.annotate "line", 323
new $P1214, 'ExceptionHandler'
@@ -10842,7 +10842,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>" :subid("75_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<c>" :subid("75_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1246
.annotate "line", 332
new $P1245, 'ExceptionHandler'
@@ -10877,7 +10877,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>" :subid("76_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "backslash:sym<misc>" :subid("76_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1259
.annotate "line", 336
new $P1258, 'ExceptionHandler'
@@ -10910,7 +10910,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>" :subid("77_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<?>" :subid("77_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1273
.annotate "line", 342
new $P1272, 'ExceptionHandler'
@@ -10970,7 +10970,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>" :subid("78_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<!>" :subid("78_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1291
.annotate "line", 352
new $P1290, 'ExceptionHandler'
@@ -11038,7 +11038,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>" :subid("79_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<method>" :subid("79_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1315
.annotate "line", 365
new $P1314, 'ExceptionHandler'
@@ -11081,12 +11081,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>" :subid("80_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<name>" :subid("80_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1329
.annotate "line", 372
- .const 'Sub' $P1387 = "82_1267204695.47543"
+ .const 'Sub' $P1387 = "82_1271336390.22432"
capture_lex $P1387
- .const 'Sub' $P1351 = "81_1267204695.47543"
+ .const 'Sub' $P1351 = "81_1271336390.22432"
capture_lex $P1351
new $P1328, 'ExceptionHandler'
set_addr $P1328, control_1327
@@ -11182,7 +11182,7 @@
unless $P1378, loop1392_done
shift $P1385, $P1378
loop1392_redo:
- .const 'Sub' $P1387 = "82_1267204695.47543"
+ .const 'Sub' $P1387 = "82_1271336390.22432"
capture_lex $P1387
$P1387($P1385)
loop1392_next:
@@ -11222,7 +11222,7 @@
goto if_1346_end
if_1346:
.annotate "line", 379
- .const 'Sub' $P1351 = "81_1267204695.47543"
+ .const 'Sub' $P1351 = "81_1271336390.22432"
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_1271336390.22432") :outer("80_1271336390.22432")
.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_1271336390.22432") :outer("80_1271336390.22432")
.annotate "line", 380
new $P1352, "Undef"
.lex "$regexsym", $P1352
@@ -11306,10 +11306,10 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>" :subid("83_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "assertion:sym<[>" :subid("83_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1402
.annotate "line", 407
- .const 'Sub' $P1437 = "84_1267204695.47543"
+ .const 'Sub' $P1437 = "84_1271336390.22432"
capture_lex $P1437
new $P1401, 'ExceptionHandler'
set_addr $P1401, control_1400
@@ -11401,7 +11401,7 @@
islt $I1435, $N1432, $N1434
unless $I1435, loop1460_done
loop1460_redo:
- .const 'Sub' $P1437 = "84_1267204695.47543"
+ .const 'Sub' $P1437 = "84_1271336390.22432"
capture_lex $P1437
$P1437()
loop1460_next:
@@ -11429,7 +11429,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1436" :anon :subid("84_1267204695.47543") :outer("83_1267204695.47543")
+.sub "_block1436" :anon :subid("84_1271336390.22432") :outer("83_1271336390.22432")
.annotate "line", 421
new $P1438, "Undef"
.lex "$ast", $P1438
@@ -11480,12 +11480,12 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem" :subid("85_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "cclass_elem" :subid("85_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1470
.annotate "line", 434
- .const 'Sub' $P1495 = "87_1267204695.47543"
+ .const 'Sub' $P1495 = "87_1271336390.22432"
capture_lex $P1495
- .const 'Sub' $P1479 = "86_1267204695.47543"
+ .const 'Sub' $P1479 = "86_1271336390.22432"
capture_lex $P1479
new $P1469, 'ExceptionHandler'
set_addr $P1469, control_1468
@@ -11534,7 +11534,7 @@
unless $P1489, loop1520_done
shift $P1493, $P1489
loop1520_redo:
- .const 'Sub' $P1495 = "87_1267204695.47543"
+ .const 'Sub' $P1495 = "87_1271336390.22432"
capture_lex $P1495
$P1495($P1493)
loop1520_next:
@@ -11558,7 +11558,7 @@
goto if_1475_end
if_1475:
.annotate "line", 437
- .const 'Sub' $P1479 = "86_1267204695.47543"
+ .const 'Sub' $P1479 = "86_1271336390.22432"
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_1271336390.22432") :outer("85_1271336390.22432")
.param pmc param_1496
.annotate "line", 441
- .const 'Sub' $P1502 = "88_1267204695.47543"
+ .const 'Sub' $P1502 = "88_1271336390.22432"
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_1271336390.22432"
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_1271336390.22432") :outer("87_1271336390.22432")
.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_1271336390.22432") :outer("85_1271336390.22432")
.annotate "line", 438
new $P1480, "Undef"
.lex "$name", $P1480
@@ -11725,7 +11725,7 @@
.namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal" :subid("89_1267204695.47543") :method :outer("11_1267204695.47543")
+.sub "mod_internal" :subid("89_1271336390.22432") :method :outer("11_1271336390.22432")
.param pmc param_1539
.annotate "line", 472
new $P1538, 'ExceptionHandler'
Copied: branches/include_dynpmc_makefile/include/parrot/.gitignore (from r45870, trunk/include/parrot/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/include/parrot/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/include/parrot/.gitignore)
@@ -0,0 +1,12 @@
+/*.tmp
+/config.h
+/core_pmcs.h
+/extend_vtable.h
+/feature.h
+/has_header.h
+/platform.h
+/platform_interface.h
+/vtable.h
+/pbcversion.h
+/platform_limits.h
+/opsenum.h
Modified: branches/include_dynpmc_makefile/include/parrot/call.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/call.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/call.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/charset.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/charset.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/charset.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -34,19 +34,17 @@
#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_to_charset_t)(PARROT_INTERP, STRING *source_string);
+typedef STRING * (*charset_from_unicode_t)(PARROT_INTERP, STRING *source_string);
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 STRING* (*charset_upcase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_downcase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_titlecase_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_upcase_first_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_downcase_first_t)(PARROT_INTERP, const STRING *source_string);
+typedef STRING* (*charset_titlecase_first_t)(PARROT_INTERP, const 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);
@@ -73,7 +71,7 @@
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_converter_t)(PARROT_INTERP, STRING *src, STRING *dst);
+typedef STRING* (*charset_converter_t)(PARROT_INTERP, STRING *src);
/* HEADERIZER BEGIN: src/string/charset.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -86,7 +84,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 +135,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 +163,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 +213,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 +235,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 +257,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/include_dynpmc_makefile/include/parrot/compiler.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/compiler.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/compiler.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/context.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/context.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/context.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -225,12 +225,6 @@
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);
@@ -329,13 +323,6 @@
__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))
@@ -452,10 +439,6 @@
__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))
@@ -507,10 +490,6 @@
__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,9 +530,6 @@
# 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))
@@ -615,9 +591,6 @@
# 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))
Modified: branches/include_dynpmc_makefile/include/parrot/dynext.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/dynext.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/dynext.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/embed.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/embed.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/embed.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -82,8 +78,6 @@
addition to libparrot */
void Parrot_set_config_hash(void);
-int Parrot_revision(void);
-
#endif /* PARROT_EMBED_H_GUARD */
/*
Modified: branches/include_dynpmc_makefile/include/parrot/encoding.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/encoding.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/encoding.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -15,21 +15,16 @@
#include "parrot/parrot.h"
-typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, NOTNULL(STRING *src), NULLOK(STRING *dest));
+typedef STRING * (*encoding_to_encoding_t)(PARROT_INTERP, NOTNULL(const STRING *src));
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_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, STRING *s, const INTVAL *typetable, INTVAL flags, UINTVAL offset, UINTVAL count);
+typedef size_t (*encoding_hash_t)(PARROT_INTERP, 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/include_dynpmc_makefile/include/parrot/exceptions.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/exceptions.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/exceptions.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -118,6 +118,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void exit_fatal(int exitcode, ARGIN(const char *format), ...)
__attribute__nonnull__(2);
@@ -133,6 +134,7 @@
PARROT_EXPORT
PARROT_DOES_NOT_RETURN
+PARROT_COLD
void Parrot_confess(
ARGIN(const char *cond),
ARGIN(const char *file),
@@ -160,6 +162,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 +176,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 +211,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/include_dynpmc_makefile/include/parrot/exit.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/exit.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/exit.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/extend.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/extend.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/extend.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/gc_api.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/gc_api.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/gc_api.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/* gc_api.h
- * Copyright (C) 2001-2009, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -136,9 +136,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
@@ -256,8 +255,7 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*pmc);
-void Parrot_gc_free_pmc_sync(PARROT_INTERP, ARGMOD(PMC *p))
- __attribute__nonnull__(1)
+void Parrot_gc_free_pmc_sync(SHIM_INTERP, ARGMOD(PMC *p))
__attribute__nonnull__(2)
FUNC_MODIFIES(*p);
@@ -350,8 +348,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))
@@ -421,8 +418,7 @@
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))
+ 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 +468,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/include_dynpmc_makefile/include/parrot/global_setup.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/global_setup.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/global_setup.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/hash.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/hash.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/hash.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -113,15 +113,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 +130,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 +184,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 +224,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 +238,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 +260,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 +372,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 +504,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/include_dynpmc_makefile/include/parrot/imcc.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/imcc.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/imcc.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/interpreter.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/interpreter.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/interpreter.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -296,7 +296,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 +315,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 +332,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_) */
@@ -509,7 +508,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 +581,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/include_dynpmc_makefile/include/parrot/io.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/io.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/io.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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))
@@ -584,24 +587,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 +621,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 +649,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 +671,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 +701,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 +736,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 +915,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/include_dynpmc_makefile/include/parrot/io_unix.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/io_unix.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/io_unix.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -133,8 +132,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/include_dynpmc_makefile/include/parrot/key.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/key.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/key.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/misc.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/misc.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/misc.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
@@ -311,12 +321,6 @@
#endif /* IN_SPF_SYSTEM */
-
-/*
- * generated src/revision.c
- */
-PARROT_EXPORT int Parrot_config_revision(void);
-
#endif /* PARROT_MISC_H_GUARD */
/*
Modified: branches/include_dynpmc_makefile/include/parrot/nci.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/nci.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/nci.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/oo.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/oo.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/oo.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,
Copied: branches/include_dynpmc_makefile/include/parrot/oplib/.gitignore (from r45870, trunk/include/parrot/oplib/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/include/parrot/oplib/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/include/parrot/oplib/.gitignore)
@@ -0,0 +1,4 @@
+/*_ops.h
+/*_ops_switch.h
+/*_ops_cg*.h
+/ops.h
Modified: branches/include_dynpmc_makefile/include/parrot/packfile.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/packfile.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/packfile.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2001-2009, Parrot Foundation.
+ * Copyright (C) 2001-2010, Parrot Foundation.
*/
/* packfile.h
@@ -453,11 +453,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,
@@ -562,8 +563,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
@@ -808,10 +810,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);
@@ -880,7 +881,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 +978,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 +1017,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/include_dynpmc_makefile/include/parrot/platform_interface.h (from r45870, trunk/include/parrot/platform_interface.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/include/parrot/platform_interface.h Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/include/parrot/pmc.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/pmc.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/pmc.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/runcore_api.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/runcore_api.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/runcore_api.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -83,6 +83,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 +102,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 +119,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 +130,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,9 +148,8 @@
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
@@ -186,8 +186,7 @@
__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))
+ PARROT_ASSERT_ARG(runcore))
#define ASSERT_ARGS_init_prederef __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(runcore))
Modified: branches/include_dynpmc_makefile/include/parrot/string_funcs.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/string_funcs.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/string_funcs.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,21 +67,17 @@
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))
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*dest);
+ INTVAL encoding_nr)
+ __attribute__nonnull__(1);
PARROT_EXPORT
PARROT_CANNOT_RETURN_NULL
@@ -109,12 +87,6 @@
FUNC_MODIFIES(*s);
PARROT_EXPORT
-void Parrot_str_chopn_inplace(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*s);
-
-PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
INTVAL Parrot_str_compare(PARROT_INTERP,
ARGIN_NULLOK(const STRING *s1),
@@ -131,8 +103,7 @@
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
@@ -150,11 +121,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),
@@ -214,7 +180,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 +216,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,12 +230,9 @@
__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
@@ -286,14 +251,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 +289,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 +303,19 @@
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))
- __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(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))
@@ -398,11 +327,8 @@
STRING * Parrot_str_substr(PARROT_INTERP,
ARGIN_NULLOK(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 +337,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 +381,12 @@
__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,6 +400,8 @@
__attribute__nonnull__(2);
PARROT_EXPORT
+PARROT_HOT
+PARROT_PURE_FUNCTION
INTVAL STRING_is_null(SHIM_INTERP, ARGIN_NULLOK(const STRING *s));
PARROT_EXPORT
@@ -520,6 +426,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
INTVAL string_max_bytes(SHIM_INTERP, ARGIN(const STRING *s), UINTVAL nchars)
__attribute__nonnull__(2);
@@ -543,6 +450,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 +475,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 +493,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 = (\
@@ -596,8 +504,6 @@
, PARROT_ASSERT_ARG(s))
#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 +541,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 +559,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 +567,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,15 +590,8 @@
, 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 = (\
@@ -727,6 +610,9 @@
__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/include_dynpmc_makefile/include/parrot/string_primitives.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/string_primitives.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/string_primitives.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/include/parrot/sub.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/sub.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/sub.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -64,6 +64,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 +77,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 +97,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 +172,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 +212,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 +250,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 +269,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/include_dynpmc_makefile/include/parrot/thread.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/thread.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/thread.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -196,7 +196,7 @@
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);
Modified: branches/include_dynpmc_makefile/include/parrot/vtables.h
==============================================================================
--- branches/include_dynpmc_makefile/include/parrot/vtables.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/include/parrot/vtables.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -26,10 +26,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)
Copied: branches/include_dynpmc_makefile/include/pmc/.gitignore (from r45870, trunk/include/pmc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/include/pmc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/include/pmc/.gitignore)
@@ -0,0 +1 @@
+/*.h
Copied: branches/include_dynpmc_makefile/lib/.gitignore (from r45870, trunk/lib/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/lib/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/lib/.gitignore)
@@ -0,0 +1 @@
+/DumbLink.pm
Copied: branches/include_dynpmc_makefile/lib/Parrot/.gitignore (from r45870, trunk/lib/Parrot/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/lib/Parrot/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/lib/Parrot/.gitignore)
@@ -0,0 +1,9 @@
+/PMC.pm
+/Jit.pm
+/blib
+/pm_to_blib
+/PakFile2.c
+/PakFile2.bs
+/Makefile
+/*.tmp
+/OpLib
Copied: branches/include_dynpmc_makefile/lib/Parrot/Config/.gitignore (from r45870, trunk/lib/Parrot/Config/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/lib/Parrot/Config/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/lib/Parrot/Config/.gitignore)
@@ -0,0 +1 @@
+/Generated.pm
Modified: branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Conf.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Conf.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Conf.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -99,8 +99,6 @@
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)
Modified: branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Test/Prepare.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Test/Prepare.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Configure/Options/Test/Prepare.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -78,6 +78,8 @@
? qq|$secondlevel-$number|
: $number;
$steps_tests_complex{$category}{$class}{$final}++;
+
+ return;
}
} # END wanted()
finddepth( \&wanted, ( $steps_dir ) );
Modified: branches/include_dynpmc_makefile/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Configure/Step/List.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Configure/Step/List.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -52,10 +52,8 @@
auto::thread
auto::gmp
auto::readline
- auto::gdbm
auto::pcre
auto::opengl
- auto::crypto
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/include_dynpmc_makefile/lib/Parrot/Distribution.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Distribution.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Distribution.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
};
@@ -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;
}
@@ -580,11 +580,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/};
}
@@ -616,7 +614,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/include_dynpmc_makefile/lib/Parrot/H2inc.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/H2inc.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/H2inc.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Harness/DefaultTests.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Harness/DefaultTests.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Harness/DefaultTests.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -86,6 +86,7 @@
t/compilers/tge/*.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/include_dynpmc_makefile/lib/Parrot/Harness/Smoke.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Harness/Smoke.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Harness/Smoke.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Headerizer.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Headerizer.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Headerizer.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Manifest.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Manifest.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Manifest.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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},
@@ -241,8 +241,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/include_dynpmc_makefile/lib/Parrot/OpTrans/C.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/OpTrans/C.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/OpTrans/C.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2006, Parrot Foundation.
+# Copyright (C) 2002-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -68,7 +68,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)>
Modified: branches/include_dynpmc_makefile/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Ops2c/Utils.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Ops2c/Utils.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -479,6 +479,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);
@@ -893,8 +894,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 +912,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 +925,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 +935,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))
+ 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) {
Copied: branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/.gitignore (from r45870, trunk/lib/Parrot/Pmc2c/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/lib/Parrot/Pmc2c/.gitignore)
@@ -0,0 +1 @@
+/PCCMETHOD_BITS.pm
Modified: branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Attribute.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Attribute.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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) \\
Modified: branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Dumper.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Dumper.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Dumper.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/Emitter.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Emitter.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Emitter.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/Library.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Library.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Library.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/MethodEmitter.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/MethodEmitter.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/MethodEmitter.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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...)
Modified: branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Object.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Object.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Object.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PCCMETHOD.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PCCMETHOD.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PCCMETHOD.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
}
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Null.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Null.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Null.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
Modified: branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Object.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Object.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/Object.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -56,7 +56,7 @@
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++) {
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/ParrotClass.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/ParrotClass.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/ParrotClass.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/default.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/default.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMC/default.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMCEmitter.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/PMCEmitter.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -570,7 +570,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));
@@ -718,7 +718,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
@@ -887,7 +887,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 +989,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/include_dynpmc_makefile/lib/Parrot/Pmc2c/Parser.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Parser.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Parser.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/Pmc2cMain.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Pmc2cMain.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/Pmc2cMain.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Pmc2c/UtilFunctions.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/UtilFunctions.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Pmc2c/UtilFunctions.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/lib/Parrot/Vtable.pm
==============================================================================
--- branches/include_dynpmc_makefile/lib/Parrot/Vtable.pm Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/lib/Parrot/Vtable.pm Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/ports/debian/.gitignore (from r45870, trunk/ports/debian/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ports/debian/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/ports/debian/.gitignore)
@@ -0,0 +1 @@
+/
Modified: branches/include_dynpmc_makefile/ports/debian/control.in
==============================================================================
--- branches/include_dynpmc_makefile/ports/debian/control.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ports/debian/control.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.desk.in.tar.gz (from r45870, trunk/ports/fedora/2.3.0/parrot.desk.in.tar.gz)
==============================================================================
Binary file (source and/or target). No diff available.
Copied: branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.patch (from r45870, trunk/ports/fedora/2.3.0/parrot.patch)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.patch Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.spec (from r45870, trunk/ports/fedora/2.3.0/parrot.spec)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ports/fedora/2.3.0/parrot.spec Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/ports/fedora/parrot.patch
==============================================================================
--- branches/include_dynpmc_makefile/ports/fedora/parrot.patch Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/ports/fedora/parrot.spec.fedora
==============================================================================
--- branches/include_dynpmc_makefile/ports/fedora/parrot.spec.fedora Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/ports/suse/2.2.0/parrot.diff (from r45870, trunk/ports/suse/2.2.0/parrot.diff)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ports/suse/2.2.0/parrot.diff Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/ports/suse/2.2.0/parrot.spec (from r45870, trunk/ports/suse/2.2.0/parrot.spec)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/ports/suse/2.2.0/parrot.spec Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/ports/suse/parrot.spec.suse
==============================================================================
--- branches/include_dynpmc_makefile/ports/suse/parrot.spec.suse Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/ports/ubuntu/control.in
==============================================================================
--- branches/include_dynpmc_makefile/ports/ubuntu/control.in Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/ports/ubuntu/control.in Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/runtime/parrot/dynext/.gitignore (from r45870, trunk/runtime/parrot/dynext/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/dynext/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/dynext/.gitignore)
@@ -0,0 +1,13 @@
+/*.dylib
+/libnci.*
+/*.bundle
+/*.so
+/*.exe
+/*.pdb
+/*.ilk
+/*.def
+/*.lib
+/*.obj
+/*.exp
+/*.dll
+/*.manifest
Copied: branches/include_dynpmc_makefile/runtime/parrot/include/.gitignore (from r45870, trunk/runtime/parrot/include/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/include/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/include/.gitignore)
@@ -0,0 +1,3 @@
+/*.pasm
+/*.pbc
+/*.fpmc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/.gitignore (from r45870, trunk/runtime/parrot/library/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/.gitignore)
@@ -0,0 +1,4 @@
+/PAST
+/*.pbc
+/config.pir
+/OpenGL_funcs.pir
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/CGI/.gitignore (from r45870, trunk/runtime/parrot/library/CGI/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/CGI/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/CGI/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Config/.gitignore (from r45870, trunk/runtime/parrot/library/Config/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Config/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Config/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Configure/.gitignore (from r45870, trunk/runtime/parrot/library/Configure/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Configure/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Configure/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Data/.gitignore (from r45870, trunk/runtime/parrot/library/Data/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Data/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Data/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Data/Dumper/.gitignore (from r45870, trunk/runtime/parrot/library/Data/Dumper/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Data/Dumper/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Data/Dumper/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Digest/.gitignore (from r45870, trunk/runtime/parrot/library/Digest/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Digest/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Digest/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/.gitignore (from r45870, trunk/runtime/parrot/library/Getopt/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Getopt/.gitignore)
@@ -0,0 +1 @@
+/Obj.pbc
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/Obj.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/Obj.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Getopt/Obj.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/runtime/parrot/library/HTTP/Daemon.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/HTTP/Daemon.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/HTTP/Daemon.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/MIME/.gitignore (from r45870, trunk/runtime/parrot/library/MIME/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/MIME/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/MIME/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Math/.gitignore (from r45870, trunk/runtime/parrot/library/Math/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Math/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Math/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/NCI/.gitignore (from r45870, trunk/runtime/parrot/library/NCI/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/NCI/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/NCI/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/OpenGL/.gitignore (from r45870, trunk/runtime/parrot/library/OpenGL/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/OpenGL/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/OpenGL/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/P6object.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/P6object.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -727,7 +727,7 @@
=over 4
-=item get_string() (vtable method)
+=item get_string()
Returns the "shortname" of the protoobject's class and parens.
@@ -743,7 +743,7 @@
.return ($S0)
.end
-=item defined() (vtable method)
+=item defined()
Protoobjects are always treated as being undefined.
@@ -754,7 +754,7 @@
.end
-=item name() (vtable method)
+=item name()
Have protoobjects return their longname in response to a
C<typeof_s_p> opcode.
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/PCT/.gitignore (from r45870, trunk/runtime/parrot/library/PCT/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/PCT/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/PCT/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/PGE/.gitignore (from r45870, trunk/runtime/parrot/library/PGE/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/PGE/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/PGE/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Parrot/.gitignore (from r45870, trunk/runtime/parrot/library/Parrot/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Parrot/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Parrot/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/.gitignore (from r45870, trunk/runtime/parrot/library/ProfTest/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/ProfTest/.gitignore)
@@ -0,0 +1,2 @@
+/*.pir
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Matcher.nqp (from r45870, trunk/runtime/parrot/library/ProfTest/Matcher.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Matcher.nqp Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/runtime/parrot/library/ProfTest/NQPProfile.nqp (from r45870, trunk/runtime/parrot/library/ProfTest/NQPProfile.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/NQPProfile.nqp Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/runtime/parrot/library/ProfTest/PIRProfile.nqp (from r45870, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/PIRProfile.nqp Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/ProfTest/PIRProfile.nqp)
@@ -0,0 +1,111 @@
+
+# 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 @pprof_lines := pir::split("\n", 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::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/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Want.nqp (from r45870, trunk/runtime/parrot/library/ProfTest/Want.nqp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/ProfTest/Want.nqp Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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(%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
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Stream/.gitignore (from r45870, trunk/runtime/parrot/library/Stream/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Stream/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Stream/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/Stream/Base.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/Stream/Base.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Stream/Base.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -65,7 +65,7 @@
=cut
-.sub close :method
+.sub close :method :nsentry
.local pmc temp
# reset source
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/String/.gitignore (from r45870, trunk/runtime/parrot/library/String/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/String/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/String/.gitignore)
@@ -0,0 +1 @@
+/Utils.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/TAP/.gitignore (from r45870, trunk/runtime/parrot/library/TAP/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/TAP/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/TAP/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Formatter.pir (from r45870, trunk/runtime/parrot/library/TAP/Formatter.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Formatter.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/runtime/parrot/library/TAP/Harness.pir (from r45870, trunk/runtime/parrot/library/TAP/Harness.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Harness.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/TAP/Harness.pir)
@@ -0,0 +1,421 @@
+# 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 :init
+ $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
+ spool = $P0['PARROT_TEST_HARNESS_DUMP_TAP']
+ spool .= '/'
+ spool .= 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
+ load_bytecode 'osutils.pbc'
+ $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
+ $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, dir
+ archive = $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)
+ $S0 = self.'_mk_meta'(aggregate)
+ spew('meta.yml', $S0)
+ $P0 = getattribute self, 'archive_extra_files'
+ if null $P0 goto L2
+ $P1 = iter $P0
+ L3:
+ unless $P1 goto L2
+ $S2 = shift $P1
+ $S1 = current_dir . '/'
+ $S1 .= $S2
+ cp($S1, $S2)
+ goto L3
+ L2:
+ $S0 = current_dir
+ $I0 = index $S0, ':'
+ unless $I0 == 1 goto L4
+ $S0 = substr $S0, 2 # remove Windows drive
+ L4:
+ cmd = "tar -cf " . $S0
+ cmd .= "/"
+ $I0 = length archive
+ $I0 -= 3
+ $S0 = substr archive, 0, $I0
+ cmd .= $S0
+ cmd .= " *"
+ system(cmd)
+ chdir(current_dir)
+ cmd = "gzip --best " . $S0
+ system(cmd)
+ rmtree(dir)
+ .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/include_dynpmc_makefile/runtime/parrot/library/TAP/Parser.pir (from r45870, trunk/runtime/parrot/library/TAP/Parser.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/TAP/Parser.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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 :init
+ $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:
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Tcl/.gitignore (from r45870, trunk/runtime/parrot/library/Tcl/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Tcl/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Tcl/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Test/.gitignore (from r45870, trunk/runtime/parrot/library/Test/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Test/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Test/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/.gitignore (from r45870, trunk/runtime/parrot/library/Test/Builder/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/Test/Builder/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/Test.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/Test.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/Test/Builder/Test.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 )
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/YAML/.gitignore (from r45870, trunk/runtime/parrot/library/YAML/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/YAML/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/YAML/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Dumper/.gitignore (from r45870, trunk/runtime/parrot/library/YAML/Dumper/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Dumper/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/YAML/Dumper/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Parser/.gitignore (from r45870, trunk/runtime/parrot/library/YAML/Parser/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/YAML/Parser/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/YAML/Parser/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/distutils.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/distutils.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -96,14 +96,6 @@
=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
@@ -120,9 +112,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
@@ -132,7 +126,7 @@
=item smoke
-curl
+tar, gzip, curl
=item sdist_gztar
@@ -199,6 +193,7 @@
=cut
.sub '__onload' :load :init :anon
+ load_bytecode 'osutils.pbc'
$P0 = new 'Hash'
set_global '%step', $P0
@@ -214,12 +209,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 +238,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'
@@ -386,7 +387,7 @@
=cut
-.sub 'run_step'
+.sub 'run_step' :multi()
.param string name
.param pmc kv :slurpy :named
$P0 = get_global '%step'
@@ -405,6 +406,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 +547,8 @@
.sub 'build_pbc_pir'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -558,13 +567,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 +616,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 +636,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 +649,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 +676,8 @@
.sub 'build_pir_tge'
.param pmc hash
+ .local pmc jobs
+ jobs = new 'ResizableStringArray'
$P0 = iter hash
L1:
unless $P0 goto L2
@@ -657,6 +686,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 +697,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 +728,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 +738,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 +751,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 +765,8 @@
the value is the NQP pathname
+=item pir_nqp_flags
+
=cut
.sub '_build_pir_nqp_rx' :anon
@@ -735,17 +774,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 +798,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 +879,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 +922,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 +984,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 +994,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 +1038,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 +1050,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 +1058,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
@@ -1217,7 +1354,7 @@
L2:
.end
-.sub '__build_dynpmc' :anon
+.sub '__build_dynpmc'
.param string src
.param string cflags
.local pmc config
@@ -1234,32 +1371,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 +1406,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 +1413,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 +1577,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 +1621,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 +1740,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 +1773,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 +2040,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
+=item prove_exec / test_exec
-option --exec of prove
+option --exec of prove / tapir
-=item prove_files
+=item prove_files / test_files
the default value is "t/*.t"
@@ -1983,111 +2054,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 +2149,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
- $I0 = exists kv['smolder_url']
- unless $I0 goto L5
+.sub 'smolder_post' :anon
+ .param string archive
+ .param pmc kv :slurpy :named
+ .local string cmd
+ $I0 = exists kv['smolder_url']
+ unless $I0 goto L1
.local pmc config
config = get_config()
cmd = "curl -F architecture="
@@ -2170,57 +2219,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_dynext ???
+=item inst_data
+
+array of pathname or a single pathname
+
+=item inst_dynext (useful ?)
array of pathname or a single pathname
@@ -2303,6 +2344,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 +2374,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 +2407,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 +2420,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 +2464,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 +2753,7 @@
"requires" : {
"fetch" : ["%s"],
"build" : [],
- "test" : ["perl5"],
+ "test" : [],
"install" : [],
"runtime" : []
}
@@ -2735,10 +2809,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 +2845,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 +2856,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
@@ -3176,7 +3250,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 +3493,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 +3983,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 +4005,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
@@ -4234,6 +4304,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 +4676,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/include_dynpmc_makefile/runtime/parrot/library/osutils.pir (from r45870, trunk/runtime/parrot/library/osutils.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/osutils.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/runtime/parrot/library/osutils.pir)
@@ -0,0 +1,779 @@
+# Copyright (C) 2009-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+osutils - Parrot OS Utilities
+
+=head2 DESCRIPTION
+
+=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
+ $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
+ # 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
+
+=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
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/include_dynpmc_makefile/runtime/parrot/library/pcore.pir
==============================================================================
--- branches/include_dynpmc_makefile/runtime/parrot/library/pcore.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/runtime/parrot/library/pcore.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/src/.gitignore (from r45870, trunk/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/.gitignore)
@@ -0,0 +1,24 @@
+/*.o
+/*.obj
+/*.str
+/asmfun.*
+/core_pmcs.c
+/exec_cpu.c
+/exec_dep.c
+/exec_dep.h
+/extra_nci_thunks.c
+/extend_vtable.c
+/fingerprint.c
+/glut_callbacks.c
+/glut_nci_thunks.nci
+/glut_nci_thunks.c
+/install_config.c
+/jit_cpu.c
+/jit_defs.c
+/jit_emit.h
+/null_config.c
+/platform.c
+/platform_asm.s
+/parrot_config.c
+/parrot_config.h
+/revision.c
Copied: branches/include_dynpmc_makefile/src/atomic/.gitignore (from r45870, trunk/src/atomic/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/atomic/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/atomic/.gitignore)
@@ -0,0 +1,2 @@
+/*.gcda
+/*.o
Modified: branches/include_dynpmc_makefile/src/byteorder.c
==============================================================================
--- branches/include_dynpmc_makefile/src/byteorder.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/byteorder.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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.
Copied: branches/include_dynpmc_makefile/src/call/.gitignore (from r45870, trunk/src/call/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/call/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/call/.gitignore)
@@ -0,0 +1,3 @@
+/*.str
+/*.obj
+/*.o
Modified: branches/include_dynpmc_makefile/src/call/args.c
==============================================================================
--- branches/include_dynpmc_makefile/src/call/args.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/call/args.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,9 +364,7 @@
{
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);
@@ -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))
{
@@ -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,25 @@
}
/* First iterate over positional args and positional parameters. */
- arg_index = 0;
- param_index = 0;
- positional_args = VTABLE_elements(interp, call_object);
+ arg_index = 0;
+ param_index = 0;
+ 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,21 +838,23 @@
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));
+ 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++;
break; /* Terminate the positional arg loop. */
@@ -1103,11 +867,13 @@
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);
+ ? accessor->string_constant(interp, arg_info, param_index)
+ : *accessor->string(interp, arg_info, param_index);
+
named_count++;
param_index++;
if (param_index >= param_count)
@@ -1121,10 +887,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 +898,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;
}
@@ -1194,9 +960,11 @@
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. */
@@ -1206,8 +974,8 @@
/* 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 +985,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 +997,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,8 +1013,9 @@
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. */
@@ -1252,12 +1023,13 @@
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++;
@@ -1270,12 +1042,14 @@
}
/* 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. */
@@ -1288,7 +1062,8 @@
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++;
@@ -1297,23 +1072,23 @@
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;
}
@@ -1333,8 +1108,8 @@
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];
@@ -1344,13 +1119,15 @@
}
}
}
- /* 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);
}
}
@@ -1367,23 +1144,27 @@
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. */
@@ -1403,6 +1184,7 @@
}
}
+
/*
=item C<static void assign_default_param_value(PARROT_INTERP, INTVAL
@@ -1417,7 +1199,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 +1224,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 +1242,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 +1258,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 +1287,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,832 +1332,156 @@
(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");
- }
-
- /* 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)>
@@ -2396,20 +1501,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 +1512,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 +1585,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 +1768,7 @@
*/
PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
static PMC*
clone_key_arg(PARROT_INTERP, ARGIN(PMC *key))
{
@@ -2805,384 +1793,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/include_dynpmc_makefile/src/call/context.c
==============================================================================
--- branches/include_dynpmc_makefile/src/call/context.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/call/context.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -315,7 +315,6 @@
if (!PMC_IS_NULL(ctx->current_sub))
return;
- ctx->results_signature = NULL;
ctx->lex_pad = PMCNULL;
ctx->outer_ctx = NULL;
ctx->current_cont = NULL;
Modified: branches/include_dynpmc_makefile/src/call/context_accessors.c
==============================================================================
--- branches/include_dynpmc_makefile/src/call/context_accessors.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/call/context_accessors.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -471,40 +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
@@ -746,6 +712,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 +723,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 +734,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 +745,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/include_dynpmc_makefile/src/call/ops.c
==============================================================================
--- branches/include_dynpmc_makefile/src/call/ops.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/call/ops.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/call/pcc.c
==============================================================================
--- branches/include_dynpmc_makefile/src/call/pcc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/call/pcc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -314,8 +362,9 @@
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/include_dynpmc_makefile/src/debug.c
==============================================================================
--- branches/include_dynpmc_makefile/src/debug.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/debug.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1314,8 +1314,9 @@
cond_argleft = condition_regtype(command);
/* get the register number */
- auxcmd = ++command;
- 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;
@@ -2198,7 +2199,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;
}
}
Modified: branches/include_dynpmc_makefile/src/dynext.c
==============================================================================
--- branches/include_dynpmc_makefile/src/dynext.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/dynext.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
*/
Copied: branches/include_dynpmc_makefile/src/dynoplibs/.gitignore (from r45870, trunk/src/dynoplibs/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/dynoplibs/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/dynoplibs/.gitignore)
@@ -0,0 +1,14 @@
+/*.c
+/*.h
+/*.so
+/*.bundle
+/*.o
+/*.obj
+/*.dll
+/*.pdb
+/*.ilk
+/*.lib
+/*.exp
+/*.manifest
+/Defines.mak
+/Rules.mak
Copied: branches/include_dynpmc_makefile/src/dynpmc/.gitignore (from r45870, trunk/src/dynpmc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/dynpmc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/dynpmc/.gitignore)
@@ -0,0 +1,25 @@
+/*.bundle
+/*.c
+/*.dump
+/*.dylib
+/*.h
+/*.so
+/Makefile
+/*.o
+/*.exe
+/*.pdb
+/*.ilk
+/*.def
+/*.lib
+/*.obj
+/*.exp
+/*.dll
+/*.manifest
+/md2.pmc
+/md4.pmc
+/md5.pmc
+/ripemd160.pmc
+/sha.pmc
+/sha1.pmc
+/sha256.pmc
+/sha512.pmc
Deleted: branches/include_dynpmc_makefile/src/dynpmc/gdbmhash.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/dynpmc/gdbmhash.pmc Wed Apr 21 23:40:50 2010 (r45875)
+++ /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:
- */
Modified: branches/include_dynpmc_makefile/src/dynpmc/rational.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/dynpmc/rational.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/dynpmc/rational.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/embed.c
==============================================================================
--- branches/include_dynpmc_makefile/src/embed.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/embed.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -586,7 +586,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 +618,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 +628,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);
@@ -702,7 +702,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;
@@ -739,16 +739,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 +758,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 +803,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 +814,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;
@@ -1105,7 +1105,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/include_dynpmc_makefile/src/exceptions.c
==============================================================================
--- branches/include_dynpmc_makefile/src/exceptions.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/exceptions.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
{
@@ -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/include_dynpmc_makefile/src/exit.c
==============================================================================
--- branches/include_dynpmc_makefile/src/exit.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/exit.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/extend.c
==============================================================================
--- branches/include_dynpmc_makefile/src/extend.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/extend.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)>
Copied: branches/include_dynpmc_makefile/src/gc/.gitignore (from r45870, trunk/src/gc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/gc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/gc/.gitignore)
@@ -0,0 +1,17 @@
+/*.bundle
+/*.c
+/*.dump
+/*.dylib
+/*.h
+/*.so
+/Makefile
+/*.o
+/*.exe
+/*.pdb
+/*.ilk
+/*.def
+/*.lib
+/*.obj
+/*.exp
+/*.dll
+/*.manifest
Modified: branches/include_dynpmc_makefile/src/gc/alloc_resources.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/alloc_resources.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/alloc_resources.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,80 @@
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));
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * move_one_buffer(PARROT_INTERP,
+ ARGMOD(Buffer *old_buf),
+ ARGMOD(char *new_pool_ptr))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ 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 +153,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 +163,18 @@
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_move_one_buffer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , 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 +182,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 +193,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 +205,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 +256,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.
@@ -270,8 +296,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,7 +339,7 @@
* 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++;
@@ -333,10 +360,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 +374,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 +420,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 +432,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)
@@ -429,49 +455,9 @@
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
-
/* 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 +482,7 @@
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
-
- /* 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);
- }
- }
+ cur_spot = move_one_buffer(interp, b, cur_spot);
b = (Buffer *)((char *)b + object_size);
}
}
@@ -593,38 +496,228 @@
(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);
- mem_pools->memory_collected += (new_block->top - new_block->start);
+ free_old_mem_blocks(mem_pools, pool, new_block, total_size);
- /* 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;
+ --mem_pools->gc_sweep_block_level;
+}
- PARROT_ASSERT(new_block == pool->top_block);
+/*
- while (cur_block) {
- Memory_Block * const next_block = cur_block->prev;
+=item C<static UINTVAL pad_pool_size(const Variable_Size_Pool *pool)>
- /* Note that we don't have it any more */
- mem_pools->memory_allocated -= cur_block->size;
+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.
- /* 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;
+Moving the live bit into the buffer thus also solves this
+problem easily.
+
+=cut
+
+*/
+
+PARROT_CANNOT_RETURN_NULL
+static UINTVAL
+pad_pool_size(ARGIN(const Variable_Size_Pool *pool))
+{
+ ASSERT_ARGS(pad_pool_size)
+ const Memory_Block *cur_block = pool->top_block;
+
+ UINTVAL total_size = 0;
+
+ while (cur_block) {
+ 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
+
+ return total_size;
+}
+
+/*
+
+=item C<static char * move_one_buffer(PARROT_INTERP, 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, ARGMOD(Buffer *old_buf), ARGMOD(char *new_pool_ptr))
+{
+ ASSERT_ARGS(move_one_buffer)
+ /* ! (on_free_list | constant | external | sysmem) */
+ if (Buffer_buflen(old_buf) && PObj_is_movable_TESTALL(old_buf)) {
+ INTVAL *ref_count = NULL;
+ ptrdiff_t offset = 0;
+#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)) {
+ ref_count = Buffer_bufrefcountptr(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 (PObj_COW_TEST(old_buf)
+ && (ref_count && *ref_count & 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 */
+ 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(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);
+
+ if (PObj_is_COWable_TEST(old_buf)) {
+ INTVAL * const new_ref_count = ((INTVAL*) new_pool_ptr) - 1;
+ *new_ref_count = 2;
+ }
+
+ /* Copy our memory to the new pool */
+ memcpy(new_pool_ptr, Buffer_bufstart(old_buf),
+ Buffer_buflen(old_buf));
+
+ /* If we're COW */
+ if (PObj_COW_TEST(old_buf)) {
+ PARROT_ASSERT(PObj_is_COWable_TEST(old_buf));
+
+ /* Let the old buffer know how to find us */
+ *((Buffer **)Buffer_bufstart(old_buf)) = old_buf;
+
+ /* No guarantees that our data is still COW, so
+ * assume not, and let the above code fix-up */
+ PObj_COW_CLEAR(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 */
+ if (ref_count)
+ *ref_count |= Buffer_moved_FLAG;
+ }
- /* Set our new pool as the only pool */
- new_block->prev = NULL;
- pool->total_allocated = total_size;
+ Buffer_bufstart(old_buf) = new_pool_ptr;
+
+ 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 *cur_block = new_block->prev;
+
+ PARROT_ASSERT(new_block == pool->top_block);
+
+ while (cur_block) {
+ Memory_Block * const next_block = cur_block->prev;
+
+ /* 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;
}
+ /* Set our new pool as the only pool */
+ new_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;
}
/*
@@ -632,7 +725,7 @@
=item C<char * aligned_mem(const Buffer *buffer, char *mem)>
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
+which might not be the same as the pointer to C<buffer> because of
memory alignment.
=cut
@@ -642,23 +735,11 @@
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
char *
-aligned_mem(ARGIN(const Buffer *buffer), ARGIN(char *mem))
+aligned_mem(SHIM(const Buffer *buffer), ARGIN(char *mem))
{
ASSERT_ARGS(aligned_mem)
-#if 0
- This code causing assert in compact_pool. Looks like STRINGs have
- aligned flag set, but allocated less memory.
- See C<aligned_string_size>.
- if (PObj_is_COWable_TEST(buffer))
- mem += sizeof (void*);
- if (PObj_aligned_TEST(buffer))
- 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);
+ mem += sizeof (void *);
+ mem = (char *)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
return mem;
}
@@ -680,8 +761,9 @@
aligned_string_size(size_t len)
{
ASSERT_ARGS(aligned_string_size)
- len += sizeof (void*);
- len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
+
+ len += sizeof (void *);
+ len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
return len;
}
@@ -703,10 +785,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 +807,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 +819,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 +878,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 +888,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;
@@ -822,7 +901,7 @@
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];
+ 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 +909,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 +918,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 +936,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 +990,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 +999,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 +1079,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 +1092,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;
@@ -1076,7 +1156,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 +1182,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 +1205,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 +1231,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 +1249,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 +1261,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 +1271,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 +1283,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 +1323,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 +1337,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 +1351,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 +1390,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 +1401,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;
@@ -1359,10 +1437,6 @@
F<src/gc/memory.c>.
-=head1 HISTORY
-
-Initial version by Dan on 2001.10.2.
-
=cut
*/
Modified: branches/include_dynpmc_makefile/src/gc/api.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/api.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/api.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -205,7 +205,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 +252,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 +286,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);
}
@@ -384,7 +374,7 @@
*/
void
-Parrot_gc_free_pmc_sync(PARROT_INTERP, ARGMOD(PMC *p))
+Parrot_gc_free_pmc_sync(SHIM_INTERP, ARGMOD(PMC *p))
{
ASSERT_ARGS(Parrot_gc_free_pmc_sync)
@@ -796,7 +786,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/include_dynpmc_makefile/src/gc/gc_inf.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/gc_inf.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/gc_inf.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/gc/gc_ms.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/gc_ms.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/gc_ms.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,13 @@
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_CAN_RETURN_NULL
static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
@@ -100,12 +99,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 +114,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 +170,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 +202,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)
@@ -220,11 +216,9 @@
__attribute__nonnull__(1);
#define ASSERT_ARGS_gc_ms_active_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(mem_pools))
+ 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 +230,9 @@
#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_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 +251,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 +288,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,8 +301,7 @@
, 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 = (\
@@ -506,8 +493,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 {
@@ -674,7 +661,7 @@
? interp->mem_pools->constant_string_header_pool
: interp->mem_pools->string_header_pool;
- return (STRING*)pool->get_free_object(interp, interp->mem_pools, pool);
+ return (STRING *)pool->get_free_object(interp, interp->mem_pools, pool);
}
@@ -799,9 +786,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 +796,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 +805,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;
@@ -849,18 +834,13 @@
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));
+
+ Buffer_buflen(buffer) = new_size - sizeof (void *);
}
/*
@@ -888,9 +868,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;
@@ -910,7 +888,7 @@
&& (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;
}
@@ -971,10 +949,10 @@
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 *);
}
/*
@@ -1021,7 +999,7 @@
&& 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;
}
@@ -1042,7 +1020,7 @@
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 */
@@ -1095,7 +1073,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 +1095,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 +1110,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 +1132,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 +1147,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 +1161,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 +1308,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,16 +1347,13 @@
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);
@@ -1381,6 +1364,11 @@
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) {
@@ -1438,18 +1426,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;
@@ -1566,11 +1546,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 +1570,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,8 +1579,7 @@
*/
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;
@@ -1617,8 +1595,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,8 +1604,7 @@
*/
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;
Modified: branches/include_dynpmc_makefile/src/gc/gc_private.h
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/gc_private.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/gc_private.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -175,7 +175,7 @@
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 +314,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,76 +328,77 @@
/* 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),
+PMC_Attribute_Pool * Parrot_gc_get_attribute_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
size_t attrib_size)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
PARROT_CANNOT_RETURN_NULL
void * Parrot_gc_get_attributes_from_pool(PARROT_INTERP,
@@ -407,34 +407,34 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(* pool);
-void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+void Parrot_gc_initialize_fixed_size_pools(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
size_t init_num_pools)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
-void Parrot_gc_run_init(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
+void Parrot_gc_run_init(SHIM_INTERP, ARGMOD(Memory_Pools *mem_pools))
+ __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 +451,25 @@
, 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))
+ 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))
+ 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(mem_pools))
#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,8 +486,7 @@
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
@@ -509,27 +502,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,27 +535,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))
+ PARROT_ASSERT_ARG(mem))
#define ASSERT_ARGS_aligned_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_check_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pobj) \
@@ -571,8 +566,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 +580,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) \
Modified: branches/include_dynpmc_makefile/src/gc/mark_sweep.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/mark_sweep.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/mark_sweep.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,23 @@
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);
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*mem_pools);
-static void Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP,
+static void Parrot_gc_allocate_new_attributes_arena(
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);
+PARROT_MALLOC
+static PMC_Attribute_Pool * Parrot_gc_create_attrib_pool(size_t attrib_idx);
#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) \
@@ -107,10 +104,8 @@
, 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))
+ PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_Parrot_gc_create_attrib_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
@@ -119,7 +114,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 +125,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 +136,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 +167,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 +251,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 +263,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)
@@ -329,8 +323,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 +333,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 +354,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,9 +364,7 @@
*/
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)
@@ -427,7 +417,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;
@@ -457,7 +447,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))
{
@@ -490,8 +480,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 +492,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 +585,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 +599,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 +653,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 +666,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,7 +697,7 @@
static void
free_buffer(SHIM_INTERP,
- ARGIN(Memory_Pools *mem_pools),
+ SHIM(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool),
ARGMOD(Buffer *b))
{
@@ -731,8 +719,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 +734,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 +765,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 +780,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 +814,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 +855,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;
@@ -922,24 +909,24 @@
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)>
+=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<void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools *
-const mem_pools, size_t init_num_pools)>
+=item C<void Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP, Memory_Pools
+*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)>
+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(PARROT_INTERP,
-size_t attrib_idx)>
+=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>.
@@ -969,12 +956,12 @@
pool->newfree = NULL;
}
else {
- Parrot_gc_allocate_new_attributes_arena(interp, pool);
+ 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(interp, pool);
+ Parrot_gc_allocate_new_attributes_arena(pool);
item = pool->free_list;
pool->free_list = item->next;
#endif
@@ -985,7 +972,7 @@
static void
-Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool *pool))
+Parrot_gc_allocate_new_attributes_arena(ARGMOD(PMC_Attribute_Pool *pool))
{
ASSERT_ARGS(Parrot_gc_allocate_new_attributes_arena)
PMC_Attribute_Free_List *next;
@@ -1021,8 +1008,8 @@
}
void
-Parrot_gc_initialize_fixed_size_pools(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+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)
@@ -1039,8 +1026,8 @@
PARROT_CANNOT_RETURN_NULL
PMC_Attribute_Pool *
-Parrot_gc_get_attribute_pool(PARROT_INTERP,
- ARGIN(Memory_Pools * const mem_pools),
+Parrot_gc_get_attribute_pool(SHIM_INTERP,
+ ARGMOD(Memory_Pools *mem_pools),
size_t attrib_size)
{
ASSERT_ARGS(Parrot_gc_get_attribute_pool)
@@ -1063,9 +1050,9 @@
}
if (!pools[idx]) {
- PMC_Attribute_Pool * const pool = Parrot_gc_create_attrib_pool(interp, 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(interp, pool);
+ Parrot_gc_allocate_new_attributes_arena(pool);
pools[idx] = pool;
}
@@ -1073,8 +1060,9 @@
}
PARROT_CANNOT_RETURN_NULL
+PARROT_MALLOC
static PMC_Attribute_Pool *
-Parrot_gc_create_attrib_pool(PARROT_INTERP, size_t attrib_idx)
+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 *);
Modified: branches/include_dynpmc_makefile/src/gc/system.c
==============================================================================
--- branches/include_dynpmc_makefile/src/gc/system.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/gc/system.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,8 +271,7 @@
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;
@@ -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;
+ 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;
@@ -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++) {
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/include_dynpmc_makefile/src/global.c
==============================================================================
--- branches/include_dynpmc_makefile/src/global.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/global.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/global_setup.c
==============================================================================
--- branches/include_dynpmc_makefile/src/global_setup.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/global_setup.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/hash.c
==============================================================================
--- branches/include_dynpmc_makefile/src/hash.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/hash.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +640,7 @@
*/
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;
@@ -630,11 +649,14 @@
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);
@@ -1204,7 +1227,7 @@
UINTVAL i;
for (i = 0; i < entries; i++) {
- HashBucket *bucket = hash->bs + 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) {
@@ -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/include_dynpmc_makefile/src/hll.c
==============================================================================
--- branches/include_dynpmc_makefile/src/hll.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/hll.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -88,7 +88,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,8 +97,6 @@
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);
VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_id, entry_id);
@@ -272,15 +271,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);
}
@@ -519,11 +521,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
Copied: branches/include_dynpmc_makefile/src/interp/.gitignore (from r45870, trunk/src/interp/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/interp/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/interp/.gitignore)
@@ -0,0 +1,2 @@
+/*.str
+/*.o
Modified: branches/include_dynpmc_makefile/src/interp/inter_create.c
==============================================================================
--- branches/include_dynpmc_makefile/src/interp/inter_create.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/interp/inter_create.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
*/
Modified: branches/include_dynpmc_makefile/src/interp/inter_misc.c
==============================================================================
--- branches/include_dynpmc_makefile/src/interp/inter_misc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/interp/inter_misc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -131,17 +131,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,
@@ -284,9 +283,6 @@
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;
}
case CURRENT_OBJECT:
@@ -323,15 +319,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,9 +334,10 @@
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] != '/'
Copied: branches/include_dynpmc_makefile/src/io/.gitignore (from r45870, trunk/src/io/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/io/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/io/.gitignore)
@@ -0,0 +1,3 @@
+/*.o
+/*.obj
+/*.str
Modified: branches/include_dynpmc_makefile/src/io/api.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/api.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/api.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +366,7 @@
"Cannot read from a closed filehandle");
if (length == 0)
- result = Parrot_str_copy(interp, string_orig);
+ result = string_orig;
else {
INTVAL read_length = length;
const INTVAL orig_length = Parrot_str_byte_length(interp, string_orig);
@@ -378,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);
}
}
@@ -437,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
@@ -904,7 +901,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/include_dynpmc_makefile/src/io/buffer.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/buffer.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/buffer.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -357,11 +351,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 +450,7 @@
*/
+PARROT_WARN_UNUSED_RESULT
size_t
Parrot_io_readline_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGOUT(STRING **buf))
{
Modified: branches/include_dynpmc_makefile/src/io/filehandle.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/filehandle.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/filehandle.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/io/unix.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/unix.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/unix.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
@@ -815,8 +815,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/include_dynpmc_makefile/src/io/utf8.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/utf8.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/utf8.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -74,18 +74,19 @@
/* need len - 1 more chars */
len2--;
- s2 = NULL;
- s2 = Parrot_io_make_string(interp, &s2, 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 */
@@ -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);
}
Modified: branches/include_dynpmc_makefile/src/io/win32.c
==============================================================================
--- branches/include_dynpmc_makefile/src/io/win32.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/io/win32.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -660,8 +660,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/include_dynpmc_makefile/src/key.c
==============================================================================
--- branches/include_dynpmc_makefile/src/key.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/key.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/library.c
==============================================================================
--- branches/include_dynpmc_makefile/src/library.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/library.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +419,7 @@
STRING * const nul = string_chr(interp, '\0');
- path = Parrot_str_append(interp, path, nul);
+ path = Parrot_str_concat(interp, path, nul);
path->bufused--;
path->strlen--;
@@ -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/include_dynpmc_makefile/src/main.c
==============================================================================
--- branches/include_dynpmc_makefile/src/main.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/main.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -342,7 +333,7 @@
/*
-=item C<static void Parrot_version(PARROT_INTERP)>
+=item C<static void Parrot_version(void)>
Print out parrot version number.
@@ -351,7 +342,7 @@
*/
static void
-Parrot_version(PARROT_INTERP)
+Parrot_version(void)
{
ASSERT_ARGS(Parrot_version)
printf("This is Parrot version " PARROT_VERSION);
@@ -369,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.
@@ -377,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) {
@@ -408,11 +401,11 @@
}
else if (!strncmp(arg, "--hash-seed", 11)) {
- arg = strrchr(arg, '=')+1;
- if (!arg) {
- ++pos;
- arg = argv[pos];
- }
+ if ((arg = strrchr(arg, '=')))
+ arg++;
+ else
+ arg = argv[++pos];
+
if (is_all_hex_digits(arg)) {
interp->hash_seed = strtoul(arg, NULL, 16);
}
@@ -430,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.
@@ -442,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;
@@ -461,8 +454,7 @@
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"))
@@ -536,7 +528,7 @@
Parrot_get_runtime_path(interp));
exit(EXIT_SUCCESS);
case 'V':
- Parrot_version(interp);
+ Parrot_version();
break;
case OPT_GC_DEBUG:
Modified: branches/include_dynpmc_makefile/src/misc.c
==============================================================================
--- branches/include_dynpmc_makefile/src/misc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/misc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
{
@@ -256,6 +257,7 @@
PARROT_EXPORT
+PARROT_IGNORABLE_RESULT
int
Parrot_secret_snprintf(ARGOUT(char *buffer), SHIM(const size_t len),
ARGIN(const char *format), ...)
Modified: branches/include_dynpmc_makefile/src/multidispatch.c
==============================================================================
--- branches/include_dynpmc_makefile/src/multidispatch.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/multidispatch.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,12 +391,11 @@
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++) {
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,7 +631,7 @@
/* 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;
@@ -641,15 +644,27 @@
switch (type_call) {
case enum_type_INTVAL:
if (type_sig == enum_class_Integer) { dist++; continue; }
- if (type_sig == enum_type_PMC) dist++;
+ 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) dist++;
+ 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) dist++;
+ 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;
Copied: branches/include_dynpmc_makefile/src/nci/.gitignore (from r45870, trunk/src/nci/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/nci/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/nci/.gitignore)
@@ -0,0 +1,3 @@
+/*.o
+/*.obj
+/*.str
Modified: branches/include_dynpmc_makefile/src/nci/api.c
==============================================================================
--- branches/include_dynpmc_makefile/src/nci/api.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/nci/api.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/nci/core_thunks.c
==============================================================================
--- branches/include_dynpmc_makefile/src/nci/core_thunks.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/nci/core_thunks.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/nci/extra_thunks.c
==============================================================================
--- branches/include_dynpmc_makefile/src/nci/extra_thunks.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/nci/extra_thunks.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/oo.c
==============================================================================
--- branches/include_dynpmc_makefile/src/oo.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/oo.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)) {
@@ -219,8 +219,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 +231,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 +242,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,7 +262,7 @@
/* 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++) {
@@ -282,9 +276,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");
@@ -471,7 +466,7 @@
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;
Copied: branches/include_dynpmc_makefile/src/ops/.gitignore (from r45870, trunk/src/ops/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/ops/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/ops/.gitignore)
@@ -0,0 +1,3 @@
+/*.c
+/*.o
+/*.obj
Modified: branches/include_dynpmc_makefile/src/ops/bit.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/bit.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/bit.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -109,37 +109,37 @@
=cut
-inline op bands(inout STR, in STR) :base_core {
- Parrot_str_bitwise_and(interp, $1, $2, &$1);
+inline op bands(inout STR, in STR) :base_core :deprecated {
+ $1 = Parrot_str_bitwise_and(interp, $1, $2);
}
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);
}
@@ -187,23 +187,23 @@
=cut
-inline op bnots(inout STR) :base_core {
- Parrot_str_bitwise_not(interp, $1, &$1);
+inline op bnots(inout STR) :base_core :deprecated {
+ $1 = Parrot_str_bitwise_not(interp, $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);
}
@@ -279,37 +279,37 @@
=cut
-inline op bors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_or(interp, $1, $2, &$1);
+inline op bors(inout STR, in STR) :base_core :deprecated {
+ $1 = Parrot_str_bitwise_or(interp, $1, $2);
}
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);
}
@@ -579,37 +579,37 @@
=cut
-inline op bxors(inout STR, in STR) :base_core {
- Parrot_str_bitwise_xor(interp, $1, $2, &$1);
+inline op bxors(inout STR, in STR) :base_core :deprecated {
+ $1 = Parrot_str_bitwise_xor(interp, $1, $2);
}
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 +621,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/include_dynpmc_makefile/src/ops/cmp.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/cmp.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/cmp.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/ops/core.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/core.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/core.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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. */
@@ -728,8 +745,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 +775,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 +794,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 +809,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 +827,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 +837,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,
@@ -981,7 +1005,7 @@
}
op interpinfo(out STR, in INT) {
- STRING * s = interpinfo_s(interp, $2);
+ STRING * const s = interpinfo_s(interp, $2);
$1 = s;
}
@@ -1209,7 +1233,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 +1288,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 +1326,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 +1387,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 +1405,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 +1422,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/include_dynpmc_makefile/src/ops/object.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/object.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/object.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/ops/ops.num
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/ops.num Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/ops.num Wed Apr 21 23:40:50 2010 (r45876)
@@ -54,1220 +54,1242 @@
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
-set_label_p_ic 431
-get_label_i_p 432
-close_p 433
-fdopen_p_i_s 434
-fdopen_p_ic_s 435
-fdopen_p_i_sc 436
-fdopen_p_ic_sc 437
-getstdin_p 438
-getstdout_p 439
-getstderr_p 440
-setstdin_p 441
-setstdout_p 442
-setstderr_p 443
-open_p_s_s 444
-open_p_sc_s 445
-open_p_s_sc 446
-open_p_sc_sc 447
-open_p_s 448
-open_p_sc 449
-print_i 450
-print_ic 451
-print_n 452
-print_nc 453
-print_s 454
-print_sc 455
-print_p 456
-say_i 457
-say_ic 458
-say_n 459
-say_nc 460
-say_s 461
-say_sc 462
-say_p 463
-printerr_i 464
-printerr_ic 465
-printerr_n 466
-printerr_nc 467
-printerr_s 468
-printerr_sc 469
-printerr_p 470
-print_p_i 471
-print_p_ic 472
-print_p_n 473
-print_p_nc 474
-print_p_s 475
-print_p_sc 476
-print_p_p 477
-read_s_i 478
-read_s_ic 479
-read_s_p_i 480
-read_s_p_ic 481
-readline_s_p 482
-peek_s 483
-peek_s_p 484
-stat_i_s_i 485
-stat_i_sc_i 486
-stat_i_s_ic 487
-stat_i_sc_ic 488
-stat_i_i_i 489
-stat_i_ic_i 490
-stat_i_i_ic 491
-stat_i_ic_ic 492
-seek_p_i_i 493
-seek_p_ic_i 494
-seek_p_i_ic 495
-seek_p_ic_ic 496
-seek_p_i_i_i 497
-seek_p_ic_i_i 498
-seek_p_i_ic_i 499
-seek_p_ic_ic_i 500
-seek_p_i_i_ic 501
-seek_p_ic_i_ic 502
-seek_p_i_ic_ic 503
-seek_p_ic_ic_ic 504
-tell_i_p 505
-tell_i_i_p 506
-abs_i 507
-abs_n 508
-abs_i_i 509
-abs_n_n 510
-abs_p 511
-abs_p_p 512
-add_i_i 513
-add_i_ic 514
-add_n_n 515
-add_n_nc 516
-add_p_p 517
-add_p_i 518
-add_p_ic 519
-add_p_n 520
-add_p_nc 521
-add_i_i_i 522
-add_i_ic_i 523
-add_i_i_ic 524
-add_n_n_n 525
-add_n_nc_n 526
-add_n_n_nc 527
-add_p_p_p 528
-add_p_p_i 529
-add_p_p_ic 530
-add_p_p_n 531
-add_p_p_nc 532
-cmod_i_i_i 533
-cmod_i_ic_i 534
-cmod_i_i_ic 535
-cmod_p_p_i 536
-cmod_p_p_ic 537
-cmod_p_p_p 538
-cmod_n_n_n 539
-cmod_n_nc_n 540
-cmod_n_n_nc 541
-cmod_p_p_n 542
-cmod_p_p_nc 543
-dec_i 544
-dec_n 545
-dec_p 546
-div_i_i 547
-div_i_ic 548
-div_n_n 549
-div_n_nc 550
-div_p_p 551
-div_p_i 552
-div_p_ic 553
-div_p_n 554
-div_p_nc 555
-div_i_i_i 556
-div_i_ic_i 557
-div_i_i_ic 558
-div_i_ic_ic 559
-div_n_n_n 560
-div_n_nc_n 561
-div_n_n_nc 562
-div_n_nc_nc 563
-div_p_p_p 564
-div_p_p_i 565
-div_p_p_ic 566
-div_p_p_n 567
-div_p_p_nc 568
-fdiv_i_i 569
-fdiv_i_ic 570
-fdiv_n_n 571
-fdiv_n_nc 572
-fdiv_p_p 573
-fdiv_p_i 574
-fdiv_p_ic 575
-fdiv_p_n 576
-fdiv_p_nc 577
-fdiv_i_i_i 578
-fdiv_i_ic_i 579
-fdiv_i_i_ic 580
-fdiv_n_n_n 581
-fdiv_n_nc_n 582
-fdiv_n_n_nc 583
-fdiv_p_p_p 584
-fdiv_p_p_i 585
-fdiv_p_p_ic 586
-fdiv_p_p_n 587
-fdiv_p_p_nc 588
-ceil_n 589
-ceil_i_n 590
-ceil_n_n 591
-floor_n 592
-floor_i_n 593
-floor_n_n 594
-inc_i 595
-inc_n 596
-inc_p 597
-mod_i_i 598
-mod_i_ic 599
-mod_n_n 600
-mod_n_nc 601
-mod_p_p 602
-mod_p_i 603
-mod_p_ic 604
-mod_p_n 605
-mod_p_nc 606
-mod_i_i_i 607
-mod_i_ic_i 608
-mod_i_i_ic 609
-mod_n_n_n 610
-mod_n_nc_n 611
-mod_n_n_nc 612
-mod_p_p_p 613
-mod_p_p_i 614
-mod_p_p_ic 615
-mod_p_p_n 616
-mod_p_p_nc 617
-mul_i_i 618
-mul_i_ic 619
-mul_n_n 620
-mul_n_nc 621
-mul_p_p 622
-mul_p_i 623
-mul_p_ic 624
-mul_p_n 625
-mul_p_nc 626
-mul_i_i_i 627
-mul_i_ic_i 628
-mul_i_i_ic 629
-mul_n_n_n 630
-mul_n_nc_n 631
-mul_n_n_nc 632
-mul_p_p_p 633
-mul_p_p_i 634
-mul_p_p_ic 635
-mul_p_p_n 636
-mul_p_p_nc 637
-neg_i 638
-neg_n 639
-neg_p 640
-neg_i_i 641
-neg_n_n 642
-neg_p_p 643
-pow_n_n_n 644
-pow_n_nc_n 645
-pow_n_n_nc 646
-pow_p_p_p 647
-pow_p_p_i 648
-pow_p_p_ic 649
-pow_p_p_n 650
-pow_p_p_nc 651
-pow_n_n_i 652
-pow_n_nc_i 653
-pow_n_n_ic 654
-pow_n_nc_ic 655
-sub_i_i 656
-sub_i_ic 657
-sub_n_n 658
-sub_n_nc 659
-sub_p_p 660
-sub_p_i 661
-sub_p_ic 662
-sub_p_n 663
-sub_p_nc 664
-sub_i_i_i 665
-sub_i_ic_i 666
-sub_i_i_ic 667
-sub_n_n_n 668
-sub_n_nc_n 669
-sub_n_n_nc 670
-sub_p_p_p 671
-sub_p_p_i 672
-sub_p_p_ic 673
-sub_p_p_n 674
-sub_p_p_nc 675
-sqrt_n_n 676
-acos_n_n 677
-asec_n_n 678
-asin_n_n 679
-atan_n_n 680
-atan_n_n_n 681
-atan_n_nc_n 682
-atan_n_n_nc 683
-cos_n_n 684
-cosh_n_n 685
-exp_n_n 686
-ln_n_n 687
-log10_n_n 688
-log2_n_n 689
-sec_n_n 690
-sech_n_n 691
-sin_n_n 692
-sinh_n_n 693
-tan_n_n 694
-tanh_n_n 695
-gcd_i_i_i 696
-gcd_i_ic_i 697
-gcd_i_i_ic 698
-lcm_i_i_i 699
-lcm_i_ic_i 700
-lcm_i_i_ic 701
-fact_i_i 702
-fact_n_i 703
-callmethodcc_p_s 704
-callmethodcc_p_sc 705
-callmethodcc_p_p 706
-callmethod_p_s_p 707
-callmethod_p_sc_p 708
-callmethod_p_p_p 709
-tailcallmethod_p_s 710
-tailcallmethod_p_sc 711
-tailcallmethod_p_p 712
-addmethod_p_s_p 713
-addmethod_p_sc_p 714
-can_i_p_s 715
-can_i_p_sc 716
-does_i_p_s 717
-does_i_p_sc 718
-does_i_p_p 719
-does_i_p_pc 720
-isa_i_p_s 721
-isa_i_p_sc 722
-isa_i_p_p 723
-isa_i_p_pc 724
-newclass_p_s 725
-newclass_p_sc 726
-newclass_p_p 727
-newclass_p_pc 728
-subclass_p_p 729
-subclass_p_pc 730
-subclass_p_p_s 731
-subclass_p_pc_s 732
-subclass_p_p_sc 733
-subclass_p_pc_sc 734
-subclass_p_p_p 735
-subclass_p_pc_p 736
-subclass_p_p_pc 737
-subclass_p_pc_pc 738
-subclass_p_s 739
-subclass_p_sc 740
-subclass_p_s_s 741
-subclass_p_sc_s 742
-subclass_p_s_sc 743
-subclass_p_sc_sc 744
-subclass_p_s_p 745
-subclass_p_sc_p 746
-subclass_p_s_pc 747
-subclass_p_sc_pc 748
-get_class_p_s 749
-get_class_p_sc 750
-get_class_p_p 751
-get_class_p_pc 752
-class_p_p 753
-addparent_p_p 754
-removeparent_p_p 755
-addrole_p_p 756
-addattribute_p_s 757
-addattribute_p_sc 758
-removeattribute_p_s 759
-removeattribute_p_sc 760
-getattribute_p_p_s 761
-getattribute_p_p_sc 762
-getattribute_p_p_p_s 763
-getattribute_p_p_pc_s 764
-getattribute_p_p_p_sc 765
-getattribute_p_p_pc_sc 766
-setattribute_p_s_p 767
-setattribute_p_sc_p 768
-setattribute_p_p_s_p 769
-setattribute_p_pc_s_p 770
-setattribute_p_p_sc_p 771
-setattribute_p_pc_sc_p 772
-inspect_p_p 773
-inspect_p_pc 774
-inspect_p_p_s 775
-inspect_p_pc_s 776
-inspect_p_p_sc 777
-inspect_p_pc_sc 778
-new_p_s 779
-new_p_sc 780
-new_p_s_p 781
-new_p_sc_p 782
-new_p_s_pc 783
-new_p_sc_pc 784
-new_p_p 785
-new_p_pc 786
-new_p_p_p 787
-new_p_pc_p 788
-new_p_p_pc 789
-new_p_pc_pc 790
-root_new_p_p 791
-root_new_p_pc 792
-root_new_p_p_p 793
-root_new_p_pc_p 794
-root_new_p_p_pc 795
-root_new_p_pc_pc 796
-typeof_s_p 797
-typeof_p_p 798
-get_repr_s_p 799
-find_method_p_p_s 800
-find_method_p_p_sc 801
-defined_i_p 802
-defined_i_p_ki 803
-defined_i_p_kic 804
-defined_i_p_k 805
-defined_i_p_kc 806
-exists_i_p_ki 807
-exists_i_p_kic 808
-exists_i_p_k 809
-exists_i_p_kc 810
-delete_p_k 811
-delete_p_kc 812
-delete_p_ki 813
-delete_p_kic 814
-elements_i_p 815
-push_p_i 816
-push_p_ic 817
-push_p_n 818
-push_p_nc 819
-push_p_s 820
-push_p_sc 821
-push_p_p 822
-pop_i_p 823
-pop_n_p 824
-pop_s_p 825
-pop_p_p 826
-unshift_p_i 827
-unshift_p_ic 828
-unshift_p_n 829
-unshift_p_nc 830
-unshift_p_s 831
-unshift_p_sc 832
-unshift_p_p 833
-shift_i_p 834
-shift_n_p 835
-shift_s_p 836
-shift_p_p 837
-splice_p_p_i_i 838
-splice_p_p_ic_i 839
-splice_p_p_i_ic 840
-splice_p_p_ic_ic 841
-setprop_p_s_p 842
-setprop_p_sc_p 843
-getprop_p_s_p 844
-getprop_p_sc_p 845
-delprop_p_s 846
-delprop_p_sc 847
-prophash_p_p 848
-freeze_s_p 849
-thaw_p_s 850
-thaw_p_sc 851
-add_multi_s_s_p 852
-add_multi_sc_s_p 853
-add_multi_s_sc_p 854
-add_multi_sc_sc_p 855
-find_multi_p_s_s 856
-find_multi_p_sc_s 857
-find_multi_p_s_sc 858
-find_multi_p_sc_sc 859
-register_p 860
-unregister_p 861
-box_p_i 862
-box_p_ic 863
-box_p_n 864
-box_p_nc 865
-box_p_s 866
-box_p_sc 867
-iter_p_p 868
-morph_p_p 869
-morph_p_pc 870
-clone_s_s 871
-clone_s_sc 872
-exchange_i_i 873
-exchange_p_p 874
-exchange_n_n 875
-exchange_s_s 876
-set_i_i 877
-set_i_ic 878
-set_i_n 879
-set_i_nc 880
-set_i_s 881
-set_i_sc 882
-set_n_n 883
-set_n_nc 884
-set_n_i 885
-set_n_ic 886
-set_n_s 887
-set_n_sc 888
-set_n_p 889
-set_s_p 890
-set_s_s 891
-set_s_sc 892
-set_s_i 893
-set_s_ic 894
-set_s_n 895
-set_s_nc 896
-set_p_pc 897
-set_p_p 898
-set_p_i 899
-set_p_ic 900
-set_p_n 901
-set_p_nc 902
-set_p_s 903
-set_p_sc 904
-set_i_p 905
-assign_p_p 906
-assign_p_i 907
-assign_p_ic 908
-assign_p_n 909
-assign_p_nc 910
-assign_p_s 911
-assign_p_sc 912
-assign_s_s 913
-assign_s_sc 914
-setref_p_p 915
-deref_p_p 916
-setp_ind_i_p 917
-setp_ind_ic_p 918
-setn_ind_i_n 919
-setn_ind_ic_n 920
-setn_ind_i_nc 921
-setn_ind_ic_nc 922
-sets_ind_i_s 923
-sets_ind_ic_s 924
-sets_ind_i_sc 925
-sets_ind_ic_sc 926
-seti_ind_i_i 927
-seti_ind_ic_i 928
-seti_ind_i_ic 929
-seti_ind_ic_ic 930
-set_p_ki_i 931
-set_p_kic_i 932
-set_p_ki_ic 933
-set_p_kic_ic 934
-set_p_ki_n 935
-set_p_kic_n 936
-set_p_ki_nc 937
-set_p_kic_nc 938
-set_p_ki_s 939
-set_p_kic_s 940
-set_p_ki_sc 941
-set_p_kic_sc 942
-set_p_ki_p 943
-set_p_kic_p 944
-set_i_p_ki 945
-set_i_p_kic 946
-set_n_p_ki 947
-set_n_p_kic 948
-set_s_p_ki 949
-set_s_p_kic 950
-set_p_p_ki 951
-set_p_p_kic 952
-set_p_k_i 953
-set_p_kc_i 954
-set_p_k_ic 955
-set_p_kc_ic 956
-set_p_k_n 957
-set_p_kc_n 958
-set_p_k_nc 959
-set_p_kc_nc 960
-set_p_k_s 961
-set_p_kc_s 962
-set_p_k_sc 963
-set_p_kc_sc 964
-set_p_k_p 965
-set_p_kc_p 966
-set_i_p_k 967
-set_i_p_kc 968
-set_n_p_k 969
-set_n_p_kc 970
-set_s_p_k 971
-set_s_p_kc 972
-set_p_p_k 973
-set_p_p_kc 974
-clone_p_p 975
-clone_p_p_p 976
-clone_p_p_pc 977
-copy_p_p 978
-null_s 979
-null_i 980
-null_p 981
-null_n 982
-cleari 983
-clearn 984
-clears 985
-clearp 986
-ord_i_s 987
-ord_i_sc 988
-ord_i_s_i 989
-ord_i_sc_i 990
-ord_i_s_ic 991
-ord_i_sc_ic 992
-chr_s_i 993
-chr_s_ic 994
-chopn_s_i 995
-chopn_s_ic 996
-chopn_s_s_i 997
-chopn_s_sc_i 998
-chopn_s_s_ic 999
-chopn_s_sc_ic 1000
-concat_s_s 1001
-concat_s_sc 1002
-concat_p_p 1003
-concat_p_s 1004
-concat_p_sc 1005
-concat_s_s_s 1006
-concat_s_sc_s 1007
-concat_s_s_sc 1008
-concat_p_p_s 1009
-concat_p_p_sc 1010
-concat_p_p_p 1011
-repeat_s_s_i 1012
-repeat_s_sc_i 1013
-repeat_s_s_ic 1014
-repeat_s_sc_ic 1015
-repeat_p_p_i 1016
-repeat_p_p_ic 1017
-repeat_p_p_p 1018
-repeat_p_i 1019
-repeat_p_ic 1020
-repeat_p_p 1021
-length_i_s 1022
-length_i_sc 1023
-bytelength_i_s 1024
-bytelength_i_sc 1025
-pin_s 1026
-unpin_s 1027
-substr_s_s_i 1028
-substr_s_sc_i 1029
-substr_s_s_ic 1030
-substr_s_sc_ic 1031
-substr_s_s_i_i 1032
-substr_s_sc_i_i 1033
-substr_s_s_ic_i 1034
-substr_s_sc_ic_i 1035
-substr_s_s_i_ic 1036
-substr_s_sc_i_ic 1037
-substr_s_s_ic_ic 1038
-substr_s_sc_ic_ic 1039
-substr_s_s_i_i_s 1040
-substr_s_s_ic_i_s 1041
-substr_s_s_i_ic_s 1042
-substr_s_s_ic_ic_s 1043
-substr_s_s_i_i_sc 1044
-substr_s_s_ic_i_sc 1045
-substr_s_s_i_ic_sc 1046
-substr_s_s_ic_ic_sc 1047
-substr_s_i_i_s 1048
-substr_s_ic_i_s 1049
-substr_s_i_ic_s 1050
-substr_s_ic_ic_s 1051
-substr_s_i_i_sc 1052
-substr_s_ic_i_sc 1053
-substr_s_i_ic_sc 1054
-substr_s_ic_ic_sc 1055
-substr_s_p_i_i 1056
-substr_s_p_ic_i 1057
-substr_s_p_i_ic 1058
-substr_s_p_ic_ic 1059
-index_i_s_s 1060
-index_i_sc_s 1061
-index_i_s_sc 1062
-index_i_sc_sc 1063
-index_i_s_s_i 1064
-index_i_sc_s_i 1065
-index_i_s_sc_i 1066
-index_i_sc_sc_i 1067
-index_i_s_s_ic 1068
-index_i_sc_s_ic 1069
-index_i_s_sc_ic 1070
-index_i_sc_sc_ic 1071
-sprintf_s_s_p 1072
-sprintf_s_sc_p 1073
-sprintf_p_p_p 1074
-new_s 1075
-new_s_i 1076
-new_s_ic 1077
-stringinfo_i_s_i 1078
-stringinfo_i_sc_i 1079
-stringinfo_i_s_ic 1080
-stringinfo_i_sc_ic 1081
-upcase_s_s 1082
-upcase_s_sc 1083
-upcase_s 1084
-downcase_s_s 1085
-downcase_s_sc 1086
-downcase_s 1087
-titlecase_s_s 1088
-titlecase_s_sc 1089
-titlecase_s 1090
-join_s_s_p 1091
-join_s_sc_p 1092
-split_p_s_s 1093
-split_p_sc_s 1094
-split_p_s_sc 1095
-split_p_sc_sc 1096
-charset_i_s 1097
-charset_i_sc 1098
-charsetname_s_i 1099
-charsetname_s_ic 1100
-find_charset_i_s 1101
-find_charset_i_sc 1102
-trans_charset_s_i 1103
-trans_charset_s_ic 1104
-trans_charset_s_s_i 1105
-trans_charset_s_sc_i 1106
-trans_charset_s_s_ic 1107
-trans_charset_s_sc_ic 1108
-encoding_i_s 1109
-encoding_i_sc 1110
-encodingname_s_i 1111
-encodingname_s_ic 1112
-find_encoding_i_s 1113
-find_encoding_i_sc 1114
-trans_encoding_s_i 1115
-trans_encoding_s_ic 1116
-trans_encoding_s_s_i 1117
-trans_encoding_s_sc_i 1118
-trans_encoding_s_s_ic 1119
-trans_encoding_s_sc_ic 1120
-is_cclass_i_i_s_i 1121
-is_cclass_i_ic_s_i 1122
-is_cclass_i_i_sc_i 1123
-is_cclass_i_ic_sc_i 1124
-is_cclass_i_i_s_ic 1125
-is_cclass_i_ic_s_ic 1126
-is_cclass_i_i_sc_ic 1127
-is_cclass_i_ic_sc_ic 1128
-find_cclass_i_i_s_i_i 1129
-find_cclass_i_ic_s_i_i 1130
-find_cclass_i_i_sc_i_i 1131
-find_cclass_i_ic_sc_i_i 1132
-find_cclass_i_i_s_ic_i 1133
-find_cclass_i_ic_s_ic_i 1134
-find_cclass_i_i_sc_ic_i 1135
-find_cclass_i_ic_sc_ic_i 1136
-find_cclass_i_i_s_i_ic 1137
-find_cclass_i_ic_s_i_ic 1138
-find_cclass_i_i_sc_i_ic 1139
-find_cclass_i_ic_sc_i_ic 1140
-find_cclass_i_i_s_ic_ic 1141
-find_cclass_i_ic_s_ic_ic 1142
-find_cclass_i_i_sc_ic_ic 1143
-find_cclass_i_ic_sc_ic_ic 1144
-find_not_cclass_i_i_s_i_i 1145
-find_not_cclass_i_ic_s_i_i 1146
-find_not_cclass_i_i_sc_i_i 1147
-find_not_cclass_i_ic_sc_i_i 1148
-find_not_cclass_i_i_s_ic_i 1149
-find_not_cclass_i_ic_s_ic_i 1150
-find_not_cclass_i_i_sc_ic_i 1151
-find_not_cclass_i_ic_sc_ic_i 1152
-find_not_cclass_i_i_s_i_ic 1153
-find_not_cclass_i_ic_s_i_ic 1154
-find_not_cclass_i_i_sc_i_ic 1155
-find_not_cclass_i_ic_sc_i_ic 1156
-find_not_cclass_i_i_s_ic_ic 1157
-find_not_cclass_i_ic_s_ic_ic 1158
-find_not_cclass_i_i_sc_ic_ic 1159
-find_not_cclass_i_ic_sc_ic_ic 1160
-escape_s_s 1161
-compose_s_s 1162
-compose_s_sc 1163
-spawnw_i_s 1164
-spawnw_i_sc 1165
-spawnw_i_p 1166
-err_i 1167
-err_s 1168
-err_s_i 1169
-err_s_ic 1170
-time_i 1171
-time_n 1172
-gmtime_s_i 1173
-gmtime_s_ic 1174
-localtime_s_i 1175
-localtime_s_ic 1176
-decodetime_p_i 1177
-decodetime_p_ic 1178
-decodelocaltime_p_i 1179
-decodelocaltime_p_ic 1180
-sysinfo_s_i 1181
-sysinfo_s_ic 1182
-sysinfo_i_i 1183
-sysinfo_i_ic 1184
-sleep_i 1185
-sleep_ic 1186
-sleep_n 1187
-sleep_nc 1188
-sizeof_i_i 1189
-sizeof_i_ic 1190
-store_lex_s_p 1191
-store_lex_sc_p 1192
-store_dynamic_lex_s_p 1193
-store_dynamic_lex_sc_p 1194
-find_lex_p_s 1195
-find_lex_p_sc 1196
-find_dynamic_lex_p_s 1197
-find_dynamic_lex_p_sc 1198
-find_caller_lex_p_s 1199
-find_caller_lex_p_sc 1200
-get_namespace_p 1201
-get_namespace_p_p 1202
-get_namespace_p_pc 1203
-get_hll_namespace_p 1204
-get_hll_namespace_p_p 1205
-get_hll_namespace_p_pc 1206
-get_root_namespace_p 1207
-get_root_namespace_p_p 1208
-get_root_namespace_p_pc 1209
-get_global_p_s 1210
-get_global_p_sc 1211
-get_global_p_p_s 1212
-get_global_p_pc_s 1213
-get_global_p_p_sc 1214
-get_global_p_pc_sc 1215
-get_hll_global_p_s 1216
-get_hll_global_p_sc 1217
-get_hll_global_p_p_s 1218
-get_hll_global_p_pc_s 1219
-get_hll_global_p_p_sc 1220
-get_hll_global_p_pc_sc 1221
-get_root_global_p_s 1222
-get_root_global_p_sc 1223
-get_root_global_p_p_s 1224
-get_root_global_p_pc_s 1225
-get_root_global_p_p_sc 1226
-get_root_global_p_pc_sc 1227
-set_global_s_p 1228
-set_global_sc_p 1229
-set_global_p_s_p 1230
-set_global_pc_s_p 1231
-set_global_p_sc_p 1232
-set_global_pc_sc_p 1233
-set_hll_global_s_p 1234
-set_hll_global_sc_p 1235
-set_hll_global_p_s_p 1236
-set_hll_global_pc_s_p 1237
-set_hll_global_p_sc_p 1238
-set_hll_global_pc_sc_p 1239
-set_root_global_s_p 1240
-set_root_global_sc_p 1241
-set_root_global_p_s_p 1242
-set_root_global_pc_s_p 1243
-set_root_global_p_sc_p 1244
-set_root_global_pc_sc_p 1245
-find_name_p_s 1246
-find_name_p_sc 1247
-find_sub_not_null_p_s 1248
-find_sub_not_null_p_sc 1249
+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
+pushmark_i 62
+pushmark_ic 63
+popmark_i 64
+popmark_ic 65
+pushaction_p 66
+debug_i 67
+debug_ic 68
+bounds_i 69
+bounds_ic 70
+profile_i 71
+profile_ic 72
+trace_i 73
+trace_ic 74
+gc_debug_i 75
+gc_debug_ic 76
+interpinfo_i_i 77
+interpinfo_i_ic 78
+interpinfo_p_i 79
+interpinfo_p_ic 80
+interpinfo_s_i 81
+interpinfo_s_ic 82
+warningson_i 83
+warningson_ic 84
+warningsoff_i 85
+warningsoff_ic 86
+errorson_i 87
+errorson_ic 88
+errorsoff_i 89
+errorsoff_ic 90
+runinterp_p_i 91
+runinterp_p_ic 92
+getinterp_p 93
+sweep_ic 94
+collect 95
+sweepoff 96
+sweepon 97
+collectoff 98
+collecton 99
+needs_destroy_p 100
+loadlib_p_s 101
+loadlib_p_sc 102
+loadlib_p_s_p 103
+loadlib_p_sc_p 104
+loadlib_p_s_pc 105
+loadlib_p_sc_pc 106
+dlfunc_p_p_s_s 107
+dlfunc_p_p_sc_s 108
+dlfunc_p_p_s_sc 109
+dlfunc_p_p_sc_sc 110
+dlvar_p_p_s 111
+dlvar_p_p_sc 112
+compreg_s_p 113
+compreg_sc_p 114
+compreg_p_s 115
+compreg_p_sc 116
+new_callback_p_p_p_s 117
+new_callback_p_p_p_sc 118
+annotations_p 119
+annotations_p_s 120
+annotations_p_sc 121
+band_i_i 122
+band_i_ic 123
+band_p_i 124
+band_p_ic 125
+band_p_p 126
+band_i_i_i 127
+band_i_ic_i 128
+band_i_i_ic 129
+band_p_p_i 130
+band_p_p_ic 131
+band_p_p_p 132
+bands_s_s 133
+bands_s_sc 134
+bands_p_s 135
+bands_p_sc 136
+bands_p_p 137
+bands_s_s_s 138
+bands_s_sc_s 139
+bands_s_s_sc 140
+bands_p_p_s 141
+bands_p_p_sc 142
+bands_p_p_p 143
+bnot_i 144
+bnot_i_i 145
+bnot_p 146
+bnot_p_p 147
+bnots_s 148
+bnots_s_s 149
+bnots_s_sc 150
+bnots_p 151
+bnots_p_p 152
+bor_i_i 153
+bor_i_ic 154
+bor_p_i 155
+bor_p_ic 156
+bor_p_p 157
+bor_i_i_i 158
+bor_i_ic_i 159
+bor_i_i_ic 160
+bor_p_p_i 161
+bor_p_p_ic 162
+bor_p_p_p 163
+bors_s_s 164
+bors_s_sc 165
+bors_p_s 166
+bors_p_sc 167
+bors_p_p 168
+bors_s_s_s 169
+bors_s_sc_s 170
+bors_s_s_sc 171
+bors_p_p_s 172
+bors_p_p_sc 173
+bors_p_p_p 174
+shl_i_i 175
+shl_i_ic 176
+shl_p_i 177
+shl_p_ic 178
+shl_p_p 179
+shl_i_i_i 180
+shl_i_ic_i 181
+shl_i_i_ic 182
+shl_p_p_i 183
+shl_p_p_ic 184
+shl_p_p_p 185
+shr_i_i 186
+shr_i_ic 187
+shr_p_i 188
+shr_p_ic 189
+shr_p_p 190
+shr_i_i_i 191
+shr_i_ic_i 192
+shr_i_i_ic 193
+shr_p_p_i 194
+shr_p_p_ic 195
+shr_p_p_p 196
+lsr_i_i 197
+lsr_i_ic 198
+lsr_p_i 199
+lsr_p_ic 200
+lsr_p_p 201
+lsr_i_i_i 202
+lsr_i_ic_i 203
+lsr_i_i_ic 204
+lsr_p_p_i 205
+lsr_p_p_ic 206
+lsr_p_p_p 207
+rot_i_i_i_ic 208
+rot_i_ic_i_ic 209
+rot_i_i_ic_ic 210
+bxor_i_i 211
+bxor_i_ic 212
+bxor_p_i 213
+bxor_p_ic 214
+bxor_p_p 215
+bxor_i_i_i 216
+bxor_i_ic_i 217
+bxor_i_i_ic 218
+bxor_p_p_i 219
+bxor_p_p_ic 220
+bxor_p_p_p 221
+bxors_s_s 222
+bxors_s_sc 223
+bxors_p_s 224
+bxors_p_sc 225
+bxors_p_p 226
+bxors_s_s_s 227
+bxors_s_sc_s 228
+bxors_s_s_sc 229
+bxors_p_p_s 230
+bxors_p_p_sc 231
+bxors_p_p_p 232
+eq_i_i_ic 233
+eq_ic_i_ic 234
+eq_i_ic_ic 235
+eq_n_n_ic 236
+eq_nc_n_ic 237
+eq_n_nc_ic 238
+eq_s_s_ic 239
+eq_sc_s_ic 240
+eq_s_sc_ic 241
+eq_p_p_ic 242
+eq_p_i_ic 243
+eq_p_ic_ic 244
+eq_p_n_ic 245
+eq_p_nc_ic 246
+eq_p_s_ic 247
+eq_p_sc_ic 248
+eq_str_p_p_ic 249
+eq_num_p_p_ic 250
+eq_addr_s_s_ic 251
+eq_addr_sc_s_ic 252
+eq_addr_s_sc_ic 253
+eq_addr_sc_sc_ic 254
+eq_addr_p_p_ic 255
+ne_i_i_ic 256
+ne_ic_i_ic 257
+ne_i_ic_ic 258
+ne_n_n_ic 259
+ne_nc_n_ic 260
+ne_n_nc_ic 261
+ne_s_s_ic 262
+ne_sc_s_ic 263
+ne_s_sc_ic 264
+ne_p_p_ic 265
+ne_p_i_ic 266
+ne_p_ic_ic 267
+ne_p_n_ic 268
+ne_p_nc_ic 269
+ne_p_s_ic 270
+ne_p_sc_ic 271
+ne_str_p_p_ic 272
+ne_num_p_p_ic 273
+ne_addr_s_s_ic 274
+ne_addr_sc_s_ic 275
+ne_addr_s_sc_ic 276
+ne_addr_sc_sc_ic 277
+ne_addr_p_p_ic 278
+lt_i_i_ic 279
+lt_ic_i_ic 280
+lt_i_ic_ic 281
+lt_n_n_ic 282
+lt_nc_n_ic 283
+lt_n_nc_ic 284
+lt_s_s_ic 285
+lt_sc_s_ic 286
+lt_s_sc_ic 287
+lt_p_p_ic 288
+lt_p_i_ic 289
+lt_p_ic_ic 290
+lt_p_n_ic 291
+lt_p_nc_ic 292
+lt_p_s_ic 293
+lt_p_sc_ic 294
+lt_str_p_p_ic 295
+lt_num_p_p_ic 296
+le_i_i_ic 297
+le_ic_i_ic 298
+le_i_ic_ic 299
+le_n_n_ic 300
+le_nc_n_ic 301
+le_n_nc_ic 302
+le_s_s_ic 303
+le_sc_s_ic 304
+le_s_sc_ic 305
+le_p_p_ic 306
+le_p_i_ic 307
+le_p_ic_ic 308
+le_p_n_ic 309
+le_p_nc_ic 310
+le_p_s_ic 311
+le_p_sc_ic 312
+le_str_p_p_ic 313
+le_num_p_p_ic 314
+gt_p_p_ic 315
+gt_p_i_ic 316
+gt_p_ic_ic 317
+gt_p_n_ic 318
+gt_p_nc_ic 319
+gt_p_s_ic 320
+gt_p_sc_ic 321
+gt_str_p_p_ic 322
+gt_num_p_p_ic 323
+ge_p_p_ic 324
+ge_p_i_ic 325
+ge_p_ic_ic 326
+ge_p_n_ic 327
+ge_p_nc_ic 328
+ge_p_s_ic 329
+ge_p_sc_ic 330
+ge_str_p_p_ic 331
+ge_num_p_p_ic 332
+if_null_p_ic 333
+if_null_s_ic 334
+unless_null_p_ic 335
+unless_null_s_ic 336
+cmp_i_i_i 337
+cmp_i_ic_i 338
+cmp_i_i_ic 339
+cmp_i_n_n 340
+cmp_i_nc_n 341
+cmp_i_n_nc 342
+cmp_i_s_s 343
+cmp_i_sc_s 344
+cmp_i_s_sc 345
+cmp_i_p_p 346
+cmp_i_p_i 347
+cmp_i_p_ic 348
+cmp_i_p_n 349
+cmp_i_p_nc 350
+cmp_i_p_s 351
+cmp_i_p_sc 352
+cmp_str_i_p_p 353
+cmp_num_i_p_p 354
+cmp_pmc_p_p_p 355
+issame_i_p_p 356
+issame_i_s_s 357
+issame_i_sc_s 358
+issame_i_s_sc 359
+issame_i_sc_sc 360
+isntsame_i_p_p 361
+isntsame_i_s_s 362
+isntsame_i_sc_s 363
+isntsame_i_s_sc 364
+isntsame_i_sc_sc 365
+istrue_i_p 366
+isfalse_i_p 367
+isnull_i_p 368
+isnull_i_pc 369
+isnull_i_s 370
+isnull_i_sc 371
+isgt_i_p_p 372
+isge_i_p_p 373
+isle_i_i_i 374
+isle_i_ic_i 375
+isle_i_i_ic 376
+isle_i_n_n 377
+isle_i_nc_n 378
+isle_i_n_nc 379
+isle_i_s_s 380
+isle_i_sc_s 381
+isle_i_s_sc 382
+isle_i_p_p 383
+islt_i_i_i 384
+islt_i_ic_i 385
+islt_i_i_ic 386
+islt_i_n_n 387
+islt_i_nc_n 388
+islt_i_n_nc 389
+islt_i_s_s 390
+islt_i_sc_s 391
+islt_i_s_sc 392
+islt_i_p_p 393
+iseq_i_i_i 394
+iseq_i_ic_i 395
+iseq_i_i_ic 396
+iseq_i_n_n 397
+iseq_i_nc_n 398
+iseq_i_n_nc 399
+iseq_i_s_s 400
+iseq_i_sc_s 401
+iseq_i_s_sc 402
+iseq_i_p_p 403
+isne_i_i_i 404
+isne_i_ic_i 405
+isne_i_i_ic 406
+isne_i_n_n 407
+isne_i_nc_n 408
+isne_i_n_nc 409
+isne_i_s_s 410
+isne_i_sc_s 411
+isne_i_s_sc 412
+isne_i_p_p 413
+and_i_i_i 414
+and_i_ic_i 415
+and_i_i_ic 416
+and_p_p_p 417
+not_i 418
+not_i_i 419
+not_p 420
+not_p_p 421
+or_i_i_i 422
+or_i_ic_i 423
+or_i_i_ic 424
+or_p_p_p 425
+xor_i_i_i 426
+xor_i_ic_i 427
+xor_i_i_ic 428
+xor_p_p_p 429
+debug_init 430
+debug_load_sc 431
+debug_break 432
+debug_print 433
+backtrace 434
+getline_i 435
+getfile_s 436
+set_label_p_ic 437
+get_label_i_p 438
+close_p 439
+fdopen_p_i_s 440
+fdopen_p_ic_s 441
+fdopen_p_i_sc 442
+fdopen_p_ic_sc 443
+getstdin_p 444
+getstdout_p 445
+getstderr_p 446
+setstdin_p 447
+setstdout_p 448
+setstderr_p 449
+open_p_s_s 450
+open_p_sc_s 451
+open_p_s_sc 452
+open_p_sc_sc 453
+open_p_s 454
+open_p_sc 455
+print_i 456
+print_ic 457
+print_n 458
+print_nc 459
+print_s 460
+print_sc 461
+print_p 462
+say_i 463
+say_ic 464
+say_n 465
+say_nc 466
+say_s 467
+say_sc 468
+say_p 469
+printerr_i 470
+printerr_ic 471
+printerr_n 472
+printerr_nc 473
+printerr_s 474
+printerr_sc 475
+printerr_p 476
+print_p_i 477
+print_p_ic 478
+print_p_n 479
+print_p_nc 480
+print_p_s 481
+print_p_sc 482
+print_p_p 483
+read_s_i 484
+read_s_ic 485
+read_s_p_i 486
+read_s_p_ic 487
+readline_s_p 488
+peek_s 489
+peek_s_p 490
+stat_i_s_i 491
+stat_i_sc_i 492
+stat_i_s_ic 493
+stat_i_sc_ic 494
+stat_i_i_i 495
+stat_i_ic_i 496
+stat_i_i_ic 497
+stat_i_ic_ic 498
+seek_p_i_i 499
+seek_p_ic_i 500
+seek_p_i_ic 501
+seek_p_ic_ic 502
+seek_p_i_i_i 503
+seek_p_ic_i_i 504
+seek_p_i_ic_i 505
+seek_p_ic_ic_i 506
+seek_p_i_i_ic 507
+seek_p_ic_i_ic 508
+seek_p_i_ic_ic 509
+seek_p_ic_ic_ic 510
+tell_i_p 511
+tell_i_i_p 512
+abs_i 513
+abs_n 514
+abs_i_i 515
+abs_n_n 516
+abs_p 517
+abs_p_p 518
+add_i_i 519
+add_i_ic 520
+add_n_n 521
+add_n_nc 522
+add_p_p 523
+add_p_i 524
+add_p_ic 525
+add_p_n 526
+add_p_nc 527
+add_i_i_i 528
+add_i_ic_i 529
+add_i_i_ic 530
+add_n_n_n 531
+add_n_nc_n 532
+add_n_n_nc 533
+add_p_p_p 534
+add_p_p_i 535
+add_p_p_ic 536
+add_p_p_n 537
+add_p_p_nc 538
+cmod_i_i_i 539
+cmod_i_ic_i 540
+cmod_i_i_ic 541
+cmod_p_p_i 542
+cmod_p_p_ic 543
+cmod_p_p_p 544
+cmod_n_n_n 545
+cmod_n_nc_n 546
+cmod_n_n_nc 547
+cmod_p_p_n 548
+cmod_p_p_nc 549
+dec_i 550
+dec_n 551
+dec_p 552
+div_i_i 553
+div_i_ic 554
+div_n_n 555
+div_n_nc 556
+div_p_p 557
+div_p_i 558
+div_p_ic 559
+div_p_n 560
+div_p_nc 561
+div_i_i_i 562
+div_i_ic_i 563
+div_i_i_ic 564
+div_i_ic_ic 565
+div_n_n_n 566
+div_n_nc_n 567
+div_n_n_nc 568
+div_n_nc_nc 569
+div_p_p_p 570
+div_p_p_i 571
+div_p_p_ic 572
+div_p_p_n 573
+div_p_p_nc 574
+fdiv_i_i 575
+fdiv_i_ic 576
+fdiv_n_n 577
+fdiv_n_nc 578
+fdiv_p_p 579
+fdiv_p_i 580
+fdiv_p_ic 581
+fdiv_p_n 582
+fdiv_p_nc 583
+fdiv_i_i_i 584
+fdiv_i_ic_i 585
+fdiv_i_i_ic 586
+fdiv_n_n_n 587
+fdiv_n_nc_n 588
+fdiv_n_n_nc 589
+fdiv_p_p_p 590
+fdiv_p_p_i 591
+fdiv_p_p_ic 592
+fdiv_p_p_n 593
+fdiv_p_p_nc 594
+ceil_n 595
+ceil_i_n 596
+ceil_n_n 597
+floor_n 598
+floor_i_n 599
+floor_n_n 600
+inc_i 601
+inc_n 602
+inc_p 603
+mod_i_i 604
+mod_i_ic 605
+mod_n_n 606
+mod_n_nc 607
+mod_p_p 608
+mod_p_i 609
+mod_p_ic 610
+mod_p_n 611
+mod_p_nc 612
+mod_i_i_i 613
+mod_i_ic_i 614
+mod_i_i_ic 615
+mod_n_n_n 616
+mod_n_nc_n 617
+mod_n_n_nc 618
+mod_p_p_p 619
+mod_p_p_i 620
+mod_p_p_ic 621
+mod_p_p_n 622
+mod_p_p_nc 623
+mul_i_i 624
+mul_i_ic 625
+mul_n_n 626
+mul_n_nc 627
+mul_p_p 628
+mul_p_i 629
+mul_p_ic 630
+mul_p_n 631
+mul_p_nc 632
+mul_i_i_i 633
+mul_i_ic_i 634
+mul_i_i_ic 635
+mul_n_n_n 636
+mul_n_nc_n 637
+mul_n_n_nc 638
+mul_p_p_p 639
+mul_p_p_i 640
+mul_p_p_ic 641
+mul_p_p_n 642
+mul_p_p_nc 643
+neg_i 644
+neg_n 645
+neg_p 646
+neg_i_i 647
+neg_n_n 648
+neg_p_p 649
+pow_n_n_n 650
+pow_n_nc_n 651
+pow_n_n_nc 652
+pow_p_p_p 653
+pow_p_p_i 654
+pow_p_p_ic 655
+pow_p_p_n 656
+pow_p_p_nc 657
+pow_n_n_i 658
+pow_n_nc_i 659
+pow_n_n_ic 660
+pow_n_nc_ic 661
+sub_i_i 662
+sub_i_ic 663
+sub_n_n 664
+sub_n_nc 665
+sub_p_p 666
+sub_p_i 667
+sub_p_ic 668
+sub_p_n 669
+sub_p_nc 670
+sub_i_i_i 671
+sub_i_ic_i 672
+sub_i_i_ic 673
+sub_n_n_n 674
+sub_n_nc_n 675
+sub_n_n_nc 676
+sub_p_p_p 677
+sub_p_p_i 678
+sub_p_p_ic 679
+sub_p_p_n 680
+sub_p_p_nc 681
+sqrt_n_n 682
+acos_n_n 683
+asec_n_n 684
+asin_n_n 685
+atan_n_n 686
+atan_n_n_n 687
+atan_n_nc_n 688
+atan_n_n_nc 689
+cos_n_n 690
+cosh_n_n 691
+exp_n_n 692
+ln_n_n 693
+log10_n_n 694
+log2_n_n 695
+sec_n_n 696
+sech_n_n 697
+sin_n_n 698
+sinh_n_n 699
+tan_n_n 700
+tanh_n_n 701
+gcd_i_i_i 702
+gcd_i_ic_i 703
+gcd_i_i_ic 704
+lcm_i_i_i 705
+lcm_i_ic_i 706
+lcm_i_i_ic 707
+fact_i_i 708
+fact_n_i 709
+callmethodcc_p_s 710
+callmethodcc_p_sc 711
+callmethodcc_p_p 712
+callmethod_p_s_p 713
+callmethod_p_sc_p 714
+callmethod_p_p_p 715
+tailcallmethod_p_s 716
+tailcallmethod_p_sc 717
+tailcallmethod_p_p 718
+addmethod_p_s_p 719
+addmethod_p_sc_p 720
+can_i_p_s 721
+can_i_p_sc 722
+does_i_p_s 723
+does_i_p_sc 724
+does_i_p_p 725
+does_i_p_pc 726
+isa_i_p_s 727
+isa_i_p_sc 728
+isa_i_p_p 729
+isa_i_p_pc 730
+newclass_p_s 731
+newclass_p_sc 732
+newclass_p_p 733
+newclass_p_pc 734
+subclass_p_p 735
+subclass_p_pc 736
+subclass_p_p_s 737
+subclass_p_pc_s 738
+subclass_p_p_sc 739
+subclass_p_pc_sc 740
+subclass_p_p_p 741
+subclass_p_pc_p 742
+subclass_p_p_pc 743
+subclass_p_pc_pc 744
+subclass_p_s 745
+subclass_p_sc 746
+subclass_p_s_s 747
+subclass_p_sc_s 748
+subclass_p_s_sc 749
+subclass_p_sc_sc 750
+subclass_p_s_p 751
+subclass_p_sc_p 752
+subclass_p_s_pc 753
+subclass_p_sc_pc 754
+get_class_p_s 755
+get_class_p_sc 756
+get_class_p_p 757
+get_class_p_pc 758
+class_p_p 759
+addparent_p_p 760
+removeparent_p_p 761
+addrole_p_p 762
+addattribute_p_s 763
+addattribute_p_sc 764
+removeattribute_p_s 765
+removeattribute_p_sc 766
+getattribute_p_p_s 767
+getattribute_p_p_sc 768
+getattribute_p_p_p_s 769
+getattribute_p_p_pc_s 770
+getattribute_p_p_p_sc 771
+getattribute_p_p_pc_sc 772
+setattribute_p_s_p 773
+setattribute_p_sc_p 774
+setattribute_p_p_s_p 775
+setattribute_p_pc_s_p 776
+setattribute_p_p_sc_p 777
+setattribute_p_pc_sc_p 778
+inspect_p_p 779
+inspect_p_pc 780
+inspect_p_p_s 781
+inspect_p_pc_s 782
+inspect_p_p_sc 783
+inspect_p_pc_sc 784
+new_p_s 785
+new_p_sc 786
+new_p_s_p 787
+new_p_sc_p 788
+new_p_s_pc 789
+new_p_sc_pc 790
+new_p_p 791
+new_p_pc 792
+new_p_p_p 793
+new_p_pc_p 794
+new_p_p_pc 795
+new_p_pc_pc 796
+root_new_p_p 797
+root_new_p_pc 798
+root_new_p_p_p 799
+root_new_p_pc_p 800
+root_new_p_p_pc 801
+root_new_p_pc_pc 802
+typeof_s_p 803
+typeof_p_p 804
+get_repr_s_p 805
+find_method_p_p_s 806
+find_method_p_p_sc 807
+defined_i_p 808
+defined_i_p_ki 809
+defined_i_p_kic 810
+defined_i_p_k 811
+defined_i_p_kc 812
+exists_i_p_ki 813
+exists_i_p_kic 814
+exists_i_p_k 815
+exists_i_p_kc 816
+delete_p_k 817
+delete_p_kc 818
+delete_p_ki 819
+delete_p_kic 820
+elements_i_p 821
+push_p_i 822
+push_p_ic 823
+push_p_n 824
+push_p_nc 825
+push_p_s 826
+push_p_sc 827
+push_p_p 828
+pop_i_p 829
+pop_n_p 830
+pop_s_p 831
+pop_p_p 832
+unshift_p_i 833
+unshift_p_ic 834
+unshift_p_n 835
+unshift_p_nc 836
+unshift_p_s 837
+unshift_p_sc 838
+unshift_p_p 839
+shift_i_p 840
+shift_n_p 841
+shift_s_p 842
+shift_p_p 843
+splice_p_p_i_i 844
+splice_p_p_ic_i 845
+splice_p_p_i_ic 846
+splice_p_p_ic_ic 847
+setprop_p_s_p 848
+setprop_p_sc_p 849
+getprop_p_s_p 850
+getprop_p_sc_p 851
+delprop_p_s 852
+delprop_p_sc 853
+prophash_p_p 854
+freeze_s_p 855
+thaw_p_s 856
+thaw_p_sc 857
+add_multi_s_s_p 858
+add_multi_sc_s_p 859
+add_multi_s_sc_p 860
+add_multi_sc_sc_p 861
+find_multi_p_s_s 862
+find_multi_p_sc_s 863
+find_multi_p_s_sc 864
+find_multi_p_sc_sc 865
+register_p 866
+unregister_p 867
+box_p_i 868
+box_p_ic 869
+box_p_n 870
+box_p_nc 871
+box_p_s 872
+box_p_sc 873
+iter_p_p 874
+morph_p_p 875
+morph_p_pc 876
+clone_s_s 877
+clone_s_sc 878
+exchange_i_i 879
+exchange_p_p 880
+exchange_n_n 881
+exchange_s_s 882
+set_i_i 883
+set_i_ic 884
+set_i_n 885
+set_i_nc 886
+set_i_s 887
+set_i_sc 888
+set_n_n 889
+set_n_nc 890
+set_n_i 891
+set_n_ic 892
+set_n_s 893
+set_n_sc 894
+set_n_p 895
+set_s_p 896
+set_s_s 897
+set_s_sc 898
+set_s_i 899
+set_s_ic 900
+set_s_n 901
+set_s_nc 902
+set_p_pc 903
+set_p_p 904
+set_p_i 905
+set_p_ic 906
+set_p_n 907
+set_p_nc 908
+set_p_s 909
+set_p_sc 910
+set_i_p 911
+assign_p_p 912
+assign_p_i 913
+assign_p_ic 914
+assign_p_n 915
+assign_p_nc 916
+assign_p_s 917
+assign_p_sc 918
+assign_s_s 919
+assign_s_sc 920
+setref_p_p 921
+deref_p_p 922
+setp_ind_i_p 923
+setp_ind_ic_p 924
+setn_ind_i_n 925
+setn_ind_ic_n 926
+setn_ind_i_nc 927
+setn_ind_ic_nc 928
+sets_ind_i_s 929
+sets_ind_ic_s 930
+sets_ind_i_sc 931
+sets_ind_ic_sc 932
+seti_ind_i_i 933
+seti_ind_ic_i 934
+seti_ind_i_ic 935
+seti_ind_ic_ic 936
+set_p_ki_i 937
+set_p_kic_i 938
+set_p_ki_ic 939
+set_p_kic_ic 940
+set_p_ki_n 941
+set_p_kic_n 942
+set_p_ki_nc 943
+set_p_kic_nc 944
+set_p_ki_s 945
+set_p_kic_s 946
+set_p_ki_sc 947
+set_p_kic_sc 948
+set_p_ki_p 949
+set_p_kic_p 950
+set_i_p_ki 951
+set_i_p_kic 952
+set_n_p_ki 953
+set_n_p_kic 954
+set_s_p_ki 955
+set_s_p_kic 956
+set_p_p_ki 957
+set_p_p_kic 958
+set_p_k_i 959
+set_p_kc_i 960
+set_p_k_ic 961
+set_p_kc_ic 962
+set_p_k_n 963
+set_p_kc_n 964
+set_p_k_nc 965
+set_p_kc_nc 966
+set_p_k_s 967
+set_p_kc_s 968
+set_p_k_sc 969
+set_p_kc_sc 970
+set_p_k_p 971
+set_p_kc_p 972
+set_i_p_k 973
+set_i_p_kc 974
+set_n_p_k 975
+set_n_p_kc 976
+set_s_p_k 977
+set_s_p_kc 978
+set_p_p_k 979
+set_p_p_kc 980
+clone_p_p 981
+clone_p_p_p 982
+clone_p_p_pc 983
+copy_p_p 984
+null_s 985
+null_i 986
+null_p 987
+null_n 988
+cleari 989
+clearn 990
+clears 991
+clearp 992
+ord_i_s 993
+ord_i_sc 994
+ord_i_s_i 995
+ord_i_sc_i 996
+ord_i_s_ic 997
+ord_i_sc_ic 998
+chr_s_i 999
+chr_s_ic 1000
+chopn_s_i 1001
+chopn_s_ic 1002
+chopn_s_s_i 1003
+chopn_s_sc_i 1004
+chopn_s_s_ic 1005
+chopn_s_sc_ic 1006
+concat_s_s 1007
+concat_s_sc 1008
+concat_p_p 1009
+concat_p_s 1010
+concat_p_sc 1011
+concat_s_s_s 1012
+concat_s_sc_s 1013
+concat_s_s_sc 1014
+concat_p_p_s 1015
+concat_p_p_sc 1016
+concat_p_p_p 1017
+repeat_s_s_i 1018
+repeat_s_sc_i 1019
+repeat_s_s_ic 1020
+repeat_s_sc_ic 1021
+repeat_p_p_i 1022
+repeat_p_p_ic 1023
+repeat_p_p_p 1024
+repeat_p_i 1025
+repeat_p_ic 1026
+repeat_p_p 1027
+length_i_s 1028
+length_i_sc 1029
+bytelength_i_s 1030
+bytelength_i_sc 1031
+pin_s 1032
+unpin_s 1033
+substr_s_s_i 1034
+substr_s_sc_i 1035
+substr_s_s_ic 1036
+substr_s_sc_ic 1037
+substr_s_s_i_i 1038
+substr_s_sc_i_i 1039
+substr_s_s_ic_i 1040
+substr_s_sc_ic_i 1041
+substr_s_s_i_ic 1042
+substr_s_sc_i_ic 1043
+substr_s_s_ic_ic 1044
+substr_s_sc_ic_ic 1045
+substr_s_s_i_i_s 1046
+substr_s_s_ic_i_s 1047
+substr_s_s_i_ic_s 1048
+substr_s_s_ic_ic_s 1049
+substr_s_s_i_i_sc 1050
+substr_s_s_ic_i_sc 1051
+substr_s_s_i_ic_sc 1052
+substr_s_s_ic_ic_sc 1053
+substr_s_i_i_s 1054
+substr_s_ic_i_s 1055
+substr_s_i_ic_s 1056
+substr_s_ic_ic_s 1057
+substr_s_i_i_sc 1058
+substr_s_ic_i_sc 1059
+substr_s_i_ic_sc 1060
+substr_s_ic_ic_sc 1061
+substr_s_p_i_i 1062
+substr_s_p_ic_i 1063
+substr_s_p_i_ic 1064
+substr_s_p_ic_ic 1065
+replace_s_s_i_i_s 1066
+replace_s_sc_i_i_s 1067
+replace_s_s_ic_i_s 1068
+replace_s_sc_ic_i_s 1069
+replace_s_s_i_ic_s 1070
+replace_s_sc_i_ic_s 1071
+replace_s_s_ic_ic_s 1072
+replace_s_sc_ic_ic_s 1073
+replace_s_s_i_i_sc 1074
+replace_s_sc_i_i_sc 1075
+replace_s_s_ic_i_sc 1076
+replace_s_sc_ic_i_sc 1077
+replace_s_s_i_ic_sc 1078
+replace_s_sc_i_ic_sc 1079
+replace_s_s_ic_ic_sc 1080
+replace_s_sc_ic_ic_sc 1081
+index_i_s_s 1082
+index_i_sc_s 1083
+index_i_s_sc 1084
+index_i_sc_sc 1085
+index_i_s_s_i 1086
+index_i_sc_s_i 1087
+index_i_s_sc_i 1088
+index_i_sc_sc_i 1089
+index_i_s_s_ic 1090
+index_i_sc_s_ic 1091
+index_i_s_sc_ic 1092
+index_i_sc_sc_ic 1093
+sprintf_s_s_p 1094
+sprintf_s_sc_p 1095
+sprintf_p_p_p 1096
+new_s 1097
+new_s_i 1098
+new_s_ic 1099
+stringinfo_i_s_i 1100
+stringinfo_i_sc_i 1101
+stringinfo_i_s_ic 1102
+stringinfo_i_sc_ic 1103
+upcase_s_s 1104
+upcase_s_sc 1105
+upcase_s 1106
+downcase_s_s 1107
+downcase_s_sc 1108
+downcase_s 1109
+titlecase_s_s 1110
+titlecase_s_sc 1111
+titlecase_s 1112
+join_s_s_p 1113
+join_s_sc_p 1114
+split_p_s_s 1115
+split_p_sc_s 1116
+split_p_s_sc 1117
+split_p_sc_sc 1118
+charset_i_s 1119
+charset_i_sc 1120
+charsetname_s_i 1121
+charsetname_s_ic 1122
+find_charset_i_s 1123
+find_charset_i_sc 1124
+trans_charset_s_i 1125
+trans_charset_s_ic 1126
+trans_charset_s_s_i 1127
+trans_charset_s_sc_i 1128
+trans_charset_s_s_ic 1129
+trans_charset_s_sc_ic 1130
+encoding_i_s 1131
+encoding_i_sc 1132
+encodingname_s_i 1133
+encodingname_s_ic 1134
+find_encoding_i_s 1135
+find_encoding_i_sc 1136
+trans_encoding_s_i 1137
+trans_encoding_s_ic 1138
+trans_encoding_s_s_i 1139
+trans_encoding_s_sc_i 1140
+trans_encoding_s_s_ic 1141
+trans_encoding_s_sc_ic 1142
+is_cclass_i_i_s_i 1143
+is_cclass_i_ic_s_i 1144
+is_cclass_i_i_sc_i 1145
+is_cclass_i_ic_sc_i 1146
+is_cclass_i_i_s_ic 1147
+is_cclass_i_ic_s_ic 1148
+is_cclass_i_i_sc_ic 1149
+is_cclass_i_ic_sc_ic 1150
+find_cclass_i_i_s_i_i 1151
+find_cclass_i_ic_s_i_i 1152
+find_cclass_i_i_sc_i_i 1153
+find_cclass_i_ic_sc_i_i 1154
+find_cclass_i_i_s_ic_i 1155
+find_cclass_i_ic_s_ic_i 1156
+find_cclass_i_i_sc_ic_i 1157
+find_cclass_i_ic_sc_ic_i 1158
+find_cclass_i_i_s_i_ic 1159
+find_cclass_i_ic_s_i_ic 1160
+find_cclass_i_i_sc_i_ic 1161
+find_cclass_i_ic_sc_i_ic 1162
+find_cclass_i_i_s_ic_ic 1163
+find_cclass_i_ic_s_ic_ic 1164
+find_cclass_i_i_sc_ic_ic 1165
+find_cclass_i_ic_sc_ic_ic 1166
+find_not_cclass_i_i_s_i_i 1167
+find_not_cclass_i_ic_s_i_i 1168
+find_not_cclass_i_i_sc_i_i 1169
+find_not_cclass_i_ic_sc_i_i 1170
+find_not_cclass_i_i_s_ic_i 1171
+find_not_cclass_i_ic_s_ic_i 1172
+find_not_cclass_i_i_sc_ic_i 1173
+find_not_cclass_i_ic_sc_ic_i 1174
+find_not_cclass_i_i_s_i_ic 1175
+find_not_cclass_i_ic_s_i_ic 1176
+find_not_cclass_i_i_sc_i_ic 1177
+find_not_cclass_i_ic_sc_i_ic 1178
+find_not_cclass_i_i_s_ic_ic 1179
+find_not_cclass_i_ic_s_ic_ic 1180
+find_not_cclass_i_i_sc_ic_ic 1181
+find_not_cclass_i_ic_sc_ic_ic 1182
+escape_s_s 1183
+compose_s_s 1184
+compose_s_sc 1185
+spawnw_i_s 1186
+spawnw_i_sc 1187
+spawnw_i_p 1188
+err_i 1189
+err_s 1190
+err_s_i 1191
+err_s_ic 1192
+time_i 1193
+time_n 1194
+gmtime_s_i 1195
+gmtime_s_ic 1196
+localtime_s_i 1197
+localtime_s_ic 1198
+decodetime_p_i 1199
+decodetime_p_ic 1200
+decodelocaltime_p_i 1201
+decodelocaltime_p_ic 1202
+sysinfo_s_i 1203
+sysinfo_s_ic 1204
+sysinfo_i_i 1205
+sysinfo_i_ic 1206
+sleep_i 1207
+sleep_ic 1208
+sleep_n 1209
+sleep_nc 1210
+sizeof_i_i 1211
+sizeof_i_ic 1212
+store_lex_s_p 1213
+store_lex_sc_p 1214
+store_dynamic_lex_s_p 1215
+store_dynamic_lex_sc_p 1216
+find_lex_p_s 1217
+find_lex_p_sc 1218
+find_dynamic_lex_p_s 1219
+find_dynamic_lex_p_sc 1220
+find_caller_lex_p_s 1221
+find_caller_lex_p_sc 1222
+get_namespace_p 1223
+get_namespace_p_p 1224
+get_namespace_p_pc 1225
+get_hll_namespace_p 1226
+get_hll_namespace_p_p 1227
+get_hll_namespace_p_pc 1228
+get_root_namespace_p 1229
+get_root_namespace_p_p 1230
+get_root_namespace_p_pc 1231
+get_global_p_s 1232
+get_global_p_sc 1233
+get_global_p_p_s 1234
+get_global_p_pc_s 1235
+get_global_p_p_sc 1236
+get_global_p_pc_sc 1237
+get_hll_global_p_s 1238
+get_hll_global_p_sc 1239
+get_hll_global_p_p_s 1240
+get_hll_global_p_pc_s 1241
+get_hll_global_p_p_sc 1242
+get_hll_global_p_pc_sc 1243
+get_root_global_p_s 1244
+get_root_global_p_sc 1245
+get_root_global_p_p_s 1246
+get_root_global_p_pc_s 1247
+get_root_global_p_p_sc 1248
+get_root_global_p_pc_sc 1249
+set_global_s_p 1250
+set_global_sc_p 1251
+set_global_p_s_p 1252
+set_global_pc_s_p 1253
+set_global_p_sc_p 1254
+set_global_pc_sc_p 1255
+set_hll_global_s_p 1256
+set_hll_global_sc_p 1257
+set_hll_global_p_s_p 1258
+set_hll_global_pc_s_p 1259
+set_hll_global_p_sc_p 1260
+set_hll_global_pc_sc_p 1261
+set_root_global_s_p 1262
+set_root_global_sc_p 1263
+set_root_global_p_s_p 1264
+set_root_global_pc_s_p 1265
+set_root_global_p_sc_p 1266
+set_root_global_pc_sc_p 1267
+find_name_p_s 1268
+find_name_p_sc 1269
+find_sub_not_null_p_s 1270
+find_sub_not_null_p_sc 1271
Modified: branches/include_dynpmc_makefile/src/ops/pmc.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/pmc.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/pmc.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/ops/set.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/set.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/set.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
}
@@ -560,7 +559,7 @@
=cut
inline op null(out STR) :base_core {
- $1 = NULL;
+ $1 = STRINGNULL;
}
inline op null(out INT) :base_core {
@@ -617,7 +616,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/include_dynpmc_makefile/src/ops/string.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/string.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/string.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -70,8 +70,8 @@
=cut
-inline op chopn(inout STR, in INT) :base_core {
- Parrot_str_chopn_inplace(interp, $1, $2);
+inline op chopn(inout STR, in INT) :base_core :deprecated {
+ $1 = Parrot_str_chopn(interp, $1, $2);
}
inline op chopn(out STR, in STR, in INT) :base_core {
@@ -97,8 +97,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 +110,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 +198,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;
@@ -244,6 +244,8 @@
=item B<substr>(inout STR, in INT, in INT, in STR)
+=item B<replace>(out STR, in 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
@@ -269,25 +271,30 @@
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);
+ $1 = Parrot_str_substr(interp, $2, $3, $4);
}
-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(out STR, inout STR, in INT, in INT, in STR) :base_core :deprecated {
+ $1 = Parrot_str_substr(interp, $2, $3, $4);
+ $2 = Parrot_str_replace(interp, $2, $3, $4, $5);
}
-inline op substr(inout STR, in INT, in INT, in STR) :base_core {
- (void)Parrot_str_replace(interp, $1, $2, $3, $4, NULL);
+inline op substr(inout STR, in INT, in INT, in STR) :base_core :deprecated {
+ $1 = Parrot_str_replace(interp, $1, $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)
@@ -429,8 +436,8 @@
$1 = Parrot_str_upcase(interp, $2);
}
-inline op upcase(inout STR) :base_core {
- Parrot_str_upcase_inplace(interp, $1);
+inline op upcase(inout STR) :base_core :deprecated {
+ $1 = Parrot_str_upcase(interp, $1);
}
@@ -448,8 +455,8 @@
$1 = Parrot_str_downcase(interp, $2);
}
-inline op downcase(inout STR) :base_core {
- Parrot_str_downcase_inplace(interp, $1);
+inline op downcase(inout STR) :base_core :deprecated {
+ $1 = Parrot_str_downcase(interp, $1);
}
@@ -467,8 +474,8 @@
$1 = Parrot_str_titlecase(interp, $2);
}
-inline op titlecase(inout STR) :base_core {
- Parrot_str_titlecase_inplace(interp, $1);
+inline op titlecase(inout STR) :base_core :deprecated {
+ $1 = Parrot_str_titlecase(interp, $1);
}
@@ -529,8 +536,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 +550,12 @@
$1 = n;
}
-op trans_charset(inout STR, in INT) {
- $1 = Parrot_str_change_charset(interp, $1, $2, NULL);
+op trans_charset(inout STR, in INT) :deprecated {
+ $1 = Parrot_str_change_charset(interp, $1, $2);
}
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);
}
@@ -585,8 +590,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 +604,12 @@
$1 = n;
}
-op trans_encoding(inout STR, in INT) {
- $1 = Parrot_str_change_encoding(interp, $1, $2, NULL);
+op trans_encoding(inout STR, in INT) :deprecated {
+ $1 = Parrot_str_change_encoding(interp, $1, $2);
}
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 +677,7 @@
=head1 COPYRIGHT
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
=head1 LICENSE
Modified: branches/include_dynpmc_makefile/src/ops/var.ops
==============================================================================
--- branches/include_dynpmc_makefile/src/ops/var.ops Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/ops/var.ops Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/packdump.c
==============================================================================
--- branches/include_dynpmc_makefile/src/packdump.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/packdump.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/packfile.c
==============================================================================
--- branches/include_dynpmc_makefile/src/packfile.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/packfile.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
@@ -534,13 +534,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) {
@@ -1200,11 +1196,11 @@
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++;
seg->dir = dir;
@@ -2063,7 +2059,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;
@@ -2094,7 +2090,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 +2129,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");
}
@@ -2227,18 +2223,13 @@
/* 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;
}
}
@@ -2395,7 +2386,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;
@@ -2457,7 +2449,7 @@
self->size = 0;
self->data = NULL;
self->id = 0;
- self->name = Parrot_str_copy(interp, name);
+ self->name = name;
}
@@ -2505,7 +2497,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) {
@@ -2682,9 +2674,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;
}
@@ -2793,7 +2783,7 @@
/* 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) {
@@ -3843,7 +3833,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;
@@ -4220,7 +4210,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)
@@ -4276,7 +4266,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
@@ -4334,7 +4324,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,7 +4356,7 @@
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);
@@ -4439,6 +4429,7 @@
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)
@@ -4449,11 +4440,10 @@
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++;
@@ -4483,12 +4473,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;
+ 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;
@@ -4607,7 +4597,7 @@
/* If we have a key, look up its ID; if we don't find one. */
opcode_t key_id = -1;
- if (key) {
+ 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)) {
@@ -4722,7 +4712,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;
@@ -4769,10 +4759,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,
@@ -4797,13 +4787,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);
Copied: branches/include_dynpmc_makefile/src/packfile/.gitignore (from r45870, trunk/src/packfile/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/packfile/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/packfile/.gitignore)
@@ -0,0 +1,2 @@
+/*.o
+/*.obj
Modified: branches/include_dynpmc_makefile/src/packfile/pf_items.c
==============================================================================
--- branches/include_dynpmc_makefile/src/packfile/pf_items.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/packfile/pf_items.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -984,14 +984,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 +1290,7 @@
Opcode format is:
- opcode_t flags
- opcode_t encoding
- opcode_t type
+ opcode_t flags8 | encoding
opcode_t size
* data
@@ -1307,24 +1307,32 @@
{
ASSERT_ARGS(PF_fetch_string)
STRING *s;
- UINTVAL flags = PF_fetch_opcode(pf, cursor);
- const int wordsize = pf ? pf->header->wordsize : sizeof (opcode_t);
+ opcode_t flag_charset_word;
+ UINTVAL flags;
+ UINTVAL charset_nr;
size_t size;
- opcode_t charset_nr;
+ const int wordsize = pf ? pf->header->wordsize : sizeof (opcode_t);
+
+ flag_charset_word = PF_fetch_opcode(pf, cursor);
- /* 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);
+ if (flag_charset_word == -1) {
+ return STRINGNULL;
+ }
- /* These may need to be separate */
- size = (size_t)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;
+
+
+ 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,
- size, charset_nr, flags);
+ s = string_make_from_charset(interp, (const char *)*cursor,
+ size, charset_nr, flags | PObj_external_FLAG);
/* print only printable characters */
TRACE_PRINTF_VAL(("PF_fetch_string(): string is '%s' at 0x%x\n",
@@ -1370,7 +1378,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 +1392,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 +1434,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 +1462,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/include_dynpmc_makefile/src/parrot_debugger.c
==============================================================================
--- branches/include_dynpmc_makefile/src/parrot_debugger.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/parrot_debugger.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pbc_dump.c
==============================================================================
--- branches/include_dynpmc_makefile/src/pbc_dump.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pbc_dump.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
+ 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;
+ 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)
+{
+ 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);
+
+ opcode_t *pc = self->data;
+ 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/include_dynpmc_makefile/src/pbc_merge.c
==============================================================================
--- branches/include_dynpmc_makefile/src/pbc_merge.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pbc_merge.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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))
@@ -428,17 +424,17 @@
/* 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;
}
}
@@ -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,14 @@
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 *);
opcode_t cursor = 0;
- int i, j;
+ int i;
/* Add a fixup table segment. */
fixup_seg = (PackFile_FixupTable*)PackFile_Segment_new_seg(
@@ -496,6 +492,8 @@
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",
@@ -513,10 +511,10 @@
the offsets into the bytecode. */
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,15 +524,15 @@
/* 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. */
@@ -574,13 +572,14 @@
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;
+ 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,
@@ -595,8 +594,9 @@
PackFile_DebugFilenameMapping*);
for (j = 0; j < in_seg->num_mappings; j++) {
- PackFile_DebugFilenameMapping *mapping = mem_gc_allocate_typed(
- interp, PackFile_DebugFilenameMapping);
+ PackFile_DebugFilenameMapping * const mapping =
+ mem_gc_allocate_typed(interp, PackFile_DebugFilenameMapping);
+
STRUCT_COPY(mapping, in_seg->mappings[j]);
mapping->offset += num_lines;
mapping->filename += inputs[i]->const_start;
@@ -662,15 +662,15 @@
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. */
@@ -689,15 +689,15 @@
const int sig_items = VTABLE_elements(interp, sig);
for (cur_arg = 0; cur_arg < sig_items; cur_arg++) {
switch (VTABLE_get_integer_keyed_int(interp, sig, cur_arg)) {
- case PARROT_ARG_NC:
- case PARROT_ARG_PC:
- 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++;
}
@@ -752,7 +752,7 @@
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. */
@@ -841,17 +841,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) {
Modified: branches/include_dynpmc_makefile/src/pmc.c
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -189,10 +191,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 +225,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 +240,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 +300,25 @@
{
ASSERT_ARGS(Parrot_pmc_reuse_by_class)
const INTVAL new_type = PARROT_CLASS(class_)->id;
- VTABLE * const new_vtable = interp->vtables[new_type];
- const 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 +389,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;
@@ -454,13 +451,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;
}
@@ -585,8 +582,7 @@
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);
- /* XXX Falls through to end of function without returning */
+ return VTABLE_instantiate(interp, classobj, initial);
}
else {
PMC * const pmc = get_new_pmc_header(interp, base_type, 0);
@@ -623,6 +619,30 @@
/*
+=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
@@ -963,6 +983,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
Copied: branches/include_dynpmc_makefile/src/pmc/.gitignore (from r45870, trunk/src/pmc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/pmc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/pmc/.gitignore)
@@ -0,0 +1,8 @@
+/Makefile
+/*.c
+/*.h
+/*.o
+/*.tmp
+/*.dump
+/*.str
+/*.obj
Modified: branches/include_dynpmc_makefile/src/pmc/addrregistry.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/addrregistry.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/addrregistry.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 {
/*
Modified: branches/include_dynpmc_makefile/src/pmc/arrayiterator.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/arrayiterator.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/arrayiterator.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/bigint.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/bigint.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/bigint.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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"));
}
/*
Modified: branches/include_dynpmc_makefile/src/pmc/bignum.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/bignum.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/bignum.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
}
@@ -942,7 +1443,7 @@
return bignum_get_bigint(INTERP, SELF);
#else
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR,
- "no bigint support in bigint");
+ "no bigint support in bignum");
#endif
}
@@ -1007,7 +1508,7 @@
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));
}
/*
@@ -1258,19 +1759,9 @@
*/
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;
}
Modified: branches/include_dynpmc_makefile/src/pmc/boolean.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/boolean.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/boolean.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -21,6 +21,8 @@
*/
+/* HEADERIZER HFILE: none */
+
pmclass Boolean extends Integer provides boolean provides scalar auto_attrs {
/*
Modified: branches/include_dynpmc_makefile/src/pmc/callcontext.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/callcontext.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/callcontext.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2008-2009, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -27,166 +27,176 @@
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 NOCELL 0
+#define INTCELL 1
+#define FLOATCELL 2
+#define STRINGCELL 3
+#define PMCCELL 4
-#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 ALLOC_CELL(i) \
+ (Pcc_cell *)Parrot_gc_allocate_fixed_size_storage((i), sizeof (Pcc_cell))
-#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)))
+ Parrot_gc_free_fixed_size_storage((i), sizeof (Pcc_cell), (c))
-#define CELL_TYPE_MASK(c) (PTR2INTVAL(c)) & 3
-#define INTCELL 0
-#define FLOATCELL 1
-#define STRINGCELL 2
-#define PMCCELL 3
+#define CELL_TYPE_MASK(c) (c)->type
-#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 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
#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))
+/* 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 void
+ensure_positionals_storage(PARROT_INTERP, ARGIN(PMC *self), INTVAL size)
{
- INTVAL num_positionals;
- Pcc_cell *cell;
- Pcc_cell *prev = NULL;
+ ASSERT_ARGS(ensure_positionals_storage)
+ INTVAL num_positionals, allocated_positionals;
+ Pcc_cell *array, *new_array;
- GETATTR_CallContext_positionals(interp, SELF, cell);
+ GETATTR_CallContext_allocated_positionals(interp, self, allocated_positionals);
- /* no cells */
- if (!cell)
- return NULL;
+ if (size <= allocated_positionals)
+ return;
- GETATTR_CallContext_num_positionals(interp, SELF, num_positionals);
- SETATTR_CallContext_num_positionals(interp, SELF, num_positionals-1);
+ if (size < 8)
+ size = 8;
- /* one cell */
- if (!NEXT_CELL(cell)) {
- SETATTR_CallContext_positionals(interp, SELF, NULL);
- return cell;
- }
+ GETATTR_CallContext_positionals(interp, self, array);
- while (cell) {
- if (!NEXT_CELL(cell)) {
- NEXT_CELL(prev) = NULL;
- return cell;
- }
+ 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));
- prev = cell;
- cell = NEXT_CELL(cell);
+ 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);
}
- /* should abort here */
- SETATTR_CallContext_num_positionals(interp, SELF, num_positionals+1);
- return NULL;
+ SETATTR_CallContext_allocated_positionals(interp, self, size);
+ SETATTR_CallContext_positionals(interp, self, new_array);
}
-static Pcc_cell *
-shift_cell(PARROT_INTERP, ARGIN(PMC *SELF))
+PARROT_CANNOT_RETURN_NULL
+static Pcc_cell*
+get_cell_at(PARROT_INTERP, ARGIN(PMC *self), INTVAL key)
{
- 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));
-
- return cell;
-}
-
-static Pcc_cell *
-get_cell_at(PARROT_INTERP, ARGIN(PMC *SELF), INTVAL key)
-{
- INTVAL i, num_positionals;
- Pcc_cell *cell;
-
- GETATTR_CallContext_num_positionals(interp, SELF, num_positionals);
-
- if (key > num_positionals)
- return NULL;
-
- GETATTR_CallContext_positionals(interp, SELF, cell);
-
- while (key) {
- /* XXX: shouldn't happen */
- if (!NEXT_CELL(cell))
- return NULL;
-
- cell = NEXT_CELL(cell);
- key--;
- }
-
- return cell;
-
+ 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 +217,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 +239,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 +263,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 +284,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 +293,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 +316,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 +362,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,8 +381,7 @@
/* 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++) {
HashBucket *b = hash->bi[i];
@@ -391,7 +420,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 */
@@ -411,18 +439,16 @@
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 +463,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 +503,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 +532,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,43 +541,82 @@
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);
}
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);
}
+ }
+
+/*
+=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) {
@@ -577,15 +634,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 +662,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 +676,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 */
@@ -697,17 +744,17 @@
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))
+ type = PMC_IS_NULL(c[i].u.p)
? enum_type_PMC
- : VTABLE_type(interp, CELL_PMC(c));
+ : VTABLE_type(interp, c[i].u.p);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL,
@@ -716,8 +763,6 @@
}
VTABLE_set_integer_keyed_int(interp, type_tuple, i, type);
- i++;
- c = NEXT_CELL(c);
}
SET_ATTR_type_tuple(INTERP, SELF, type_tuple);
@@ -763,11 +808,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 +903,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 +913,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 +932,330 @@
}
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;
+
+ 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.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;
- VTABLE void push_string(STRING *value) {
- Pcc_cell *cell = CREATE_STRING_CELL(INTERP);
- APPEND_CELL(INTERP, SELF, cell);
- CELL_STRING(cell) = value;
- }
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ ensure_positionals_storage(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;
+ 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 INTVAL pop_integer() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
-
- if (cell) {
- INTVAL result = autobox_intval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ VTABLE void push_string(STRING *value) {
+ Pcc_cell *cells;
+ INTVAL num_pos;
- return 0;
+ 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 FLOATVAL pop_float() {
- Pcc_cell *cell = pop_cell(INTERP, SELF);
+ VTABLE void push_pmc(PMC *value) {
+ Pcc_cell *cells;
+ INTVAL num_pos;
- if (cell) {
- FLOATVAL result = autobox_floatval(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ GET_ATTR_num_positionals(INTERP, SELF, num_pos);
+ ensure_positionals_storage(INTERP, SELF, num_pos + 1);
- return 0.0;
+ 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);
+ }
+
+ /*
+ TODO It's very naive implementation. But we do unshift _once_ only.
+ So, for speed sake, allocate _one_ Cell upfront. Or store it independent.
+ */
+
+ VTABLE void unshift_pmc(PMC *value) {
+ Pcc_cell *cells;
+ 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;
+ 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) {
- PMC *result = autobox_pmc(INTERP, cell);
- FREE_CELL(INTERP, cell);
- return result;
- }
+ GET_ATTR_positionals(INTERP, SELF, cells);
+ retval = autobox_pmc(INTERP, &cells[0]);
- return PMCNULL;
+ for (i = 1; i < size; i++)
+ cells[i - 1] = cells[i];
+
+ 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;
+ 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 +1265,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 +1280,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 +1294,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 +1308,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 +1322,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 +1336,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 +1350,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 +1364,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 +1375,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 +1406,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 +1443,6 @@
return dest;
}
-
/*
=item C<PMC *backtrace>
@@ -1495,11 +1461,11 @@
METHOD backtrace(PMC *resume :optional, INTVAL has_resume :opt_flag) {
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;
Modified: branches/include_dynpmc_makefile/src/pmc/capture.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/capture.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/capture.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/class.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/class.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/class.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +203,7 @@
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);
@@ -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);
@@ -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");
@@ -322,8 +408,9 @@
}
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");
@@ -343,23 +430,17 @@
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");
@@ -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 */
@@ -584,7 +668,7 @@
*/
VTABLE STRING *get_string() {
- return Parrot_str_copy(interp, make_class_name(interp, SELF));
+ return make_class_name(interp, SELF);
}
/*
@@ -767,7 +851,7 @@
EXCEPTION_METHOD_NOT_FOUND,
"'%S' is not a valid vtable function name.", name);
- /* Add it to vtable methods list. */
+ /* Add it to vtable list. */
VTABLE_set_pmc_keyed_str(interp, _class->vtable_overrides, name, sub);
}
@@ -1570,7 +1654,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 (ParrotClass isa Class does ClassMethods or something like this).
* **********************************************************************/
@@ -1714,7 +1798,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,7 +1812,7 @@
=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
@@ -1883,7 +1967,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
@@ -1923,6 +2007,23 @@
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/include_dynpmc_makefile/src/pmc/codestring.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/codestring.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/codestring.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,38 +108,37 @@
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;
+ 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)) {
+ INTVAL I0;
+ INTVAL I1;
+
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);
+ STRING * const S0 = VTABLE_get_string_keyed_int(INTERP, args, I0);
+ repl = Parrot_str_concat(INTERP, repl, comma_space);
+ repl = Parrot_str_concat(INTERP, repl, S0);
I0++;
}
}
@@ -149,16 +151,16 @@
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);
}
/* 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);
+ fmt = Parrot_str_concat(INTERP, fmt, newline);
GET_ATTR_str_val(INTERP, SELF, S1);
- S1 = Parrot_str_concat(INTERP, S1, fmt, 0);
+ S1 = Parrot_str_concat(INTERP, S1, fmt);
VTABLE_set_string_native(INTERP, SELF, S1);
RETURN(PMC *SELF);
@@ -244,7 +246,7 @@
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++;
@@ -253,8 +255,7 @@
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 +280,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 +289,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 +343,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, "]");
@@ -351,29 +352,34 @@
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);
+ 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/include_dynpmc_makefile/src/pmc/complex.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/complex.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/complex.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -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,
@@ -264,8 +320,8 @@
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);
+ 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;
@@ -273,7 +329,7 @@
/* else let it fall to default */
default:
if (VTABLE_isa(interp, initializer, CONST_STRING(interp, "String"))) {
- STRING * s = VTABLE_get_string(interp, initializer);
+ STRING * const s = VTABLE_get_string(interp, initializer);
SELF.set_string_native(s);
}
else {
Modified: branches/include_dynpmc_makefile/src/pmc/continuation.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/continuation.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/continuation.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -36,6 +36,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
/*
* A Continuation (and RetContinuation, ExceptionHandler) has in its
@@ -74,15 +78,6 @@
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*/
@@ -105,15 +100,6 @@
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);
}
@@ -262,19 +248,7 @@
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);
- }
+ Parrot_pcc_set_signature(INTERP, CURRENT_CONTEXT(INTERP), from_obj);
}
/* switch segment */
Modified: branches/include_dynpmc_makefile/src/pmc/coroutine.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/coroutine.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/coroutine.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
Modified: branches/include_dynpmc_makefile/src/pmc/default.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/default.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/default.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +237,10 @@
*/
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);
@@ -156,8 +250,7 @@
/*
-=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,8 +281,13 @@
=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);
@@ -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 {
/*
@@ -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;
}
@@ -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);
}
/*
@@ -917,7 +973,7 @@
*/
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);
@@ -960,7 +1016,7 @@
*/
VTABLE PMC *inspect() {
- PMC *metadata = Parrot_pmc_new(interp, enum_class_Hash);
+ 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,
@@ -979,15 +1035,16 @@
*/
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);
if (PMC_IS_NULL(_class)) {
- INTVAL type = VTABLE_type(interp, SELF);
- PMC *type_num = Parrot_pmc_new(interp, enum_class_Integer);
+ const INTVAL type = VTABLE_type(interp, SELF);
+ PMC * const 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);
}
@@ -1766,7 +1823,7 @@
/* 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,
"cmp_pmc", "PP->P", SELF, value, &retval);
Modified: branches/include_dynpmc_makefile/src/pmc/env.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/env.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/env.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 {
@@ -149,7 +154,7 @@
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);
@@ -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/include_dynpmc_makefile/src/pmc/eval.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/eval.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/eval.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -41,7 +74,7 @@
return;
for (i = 0; i < ft->fixup_count; i++) {
- PackFile_FixupEntry *e = ft->fixups[i];
+ const PackFile_FixupEntry * const e = ft->fixups[i];
if (e->type == enum_fixup_sub) {
opcode_t ci = e->offset;
@@ -52,9 +85,13 @@
}
}
+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;
@@ -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;
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/eventhandler.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/eventhandler.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/eventhandler.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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, "");
}
/*
Modified: branches/include_dynpmc_makefile/src/pmc/exception.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/exception.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/exception.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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. */
Modified: branches/include_dynpmc_makefile/src/pmc/exceptionhandler.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/exceptionhandler.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/exceptionhandler.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/exporter.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/exporter.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/exporter.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/file.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/file.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/file.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -22,6 +22,10 @@
# 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;
Modified: branches/include_dynpmc_makefile/src/pmc/filehandle.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/filehandle.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/filehandle.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -249,10 +253,10 @@
"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);
@@ -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;
@@ -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/include_dynpmc_makefile/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/fixedbooleanarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/fixedbooleanarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
}
@@ -270,9 +283,9 @@
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;
Modified: branches/include_dynpmc_makefile/src/pmc/fixedfloatarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/fixedfloatarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/fixedfloatarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/fixedintegerarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/fixedintegerarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -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;
}
Modified: branches/include_dynpmc_makefile/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/fixedpmcarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/fixedpmcarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -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 *);
-
- for (i = 0; i < size; i++)
- data[i] = PMCNULL;
+ SELF.set_integer_native(size);
- 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;
}
@@ -404,7 +401,7 @@
_("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++)
data[i] = PMCNULL;
@@ -427,7 +424,7 @@
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++)
(PMC_array(SELF))[i] = VTABLE_get_pmc_keyed_int(INTERP, value, i);
Modified: branches/include_dynpmc_makefile/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/fixedstringarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/fixedstringarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -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;
}
Modified: branches/include_dynpmc_makefile/src/pmc/float.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/float.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/float.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/handle.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/handle.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/handle.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -25,6 +25,10 @@
#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 */
Modified: branches/include_dynpmc_makefile/src/pmc/hash.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/hash.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/hash.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
@@ -229,8 +250,8 @@
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:
@@ -238,9 +259,9 @@
case enum_type_PMC:
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,
@@ -250,7 +271,8 @@
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() {
@@ -335,23 +357,23 @@
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;
}
@@ -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/include_dynpmc_makefile/src/pmc/hashiterator.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/hashiterator.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/hashiterator.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -72,7 +91,8 @@
}
attrs->bucket = bucket;
attrs->elements--;
- return bucket;
+
+ 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/include_dynpmc_makefile/src/pmc/hashiteratorkey.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/hashiteratorkey.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/hashiteratorkey.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/imageio.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/imageio.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/imageio.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -116,25 +217,38 @@
}
+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);
+ 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,7 +260,7 @@
break;
case enum_PackID_normal:
{
- INTVAL type = VTABLE_shift_integer(interp, info);
+ const INTVAL type = VTABLE_shift_integer(interp, info);
if (type <= 0 || type > interp->n_vtable_max)
Parrot_ex_throw_from_c_args(interp, NULL, 1, "Unknown PMC type to thaw %d", type);
@@ -168,8 +282,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,7 +296,7 @@
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;
@@ -196,10 +312,11 @@
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);
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);
@@ -236,11 +353,11 @@
*/
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_custom_mark_destroy_SETALL(SELF);
}
@@ -257,6 +374,7 @@
*/
VTABLE void destroy() {
PackFile_destroy(INTERP, PARROT_IMAGEIO(SELF)->pf);
+ PARROT_IMAGEIO(SELF)->pf = NULL;
}
/*
@@ -345,7 +463,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);
ensure_buffer_size(interp, SELF, len);
SET_VISIT_CURSOR(SELF, (char *)PF_store_integer(GET_VISIT_CURSOR(SELF), v));
}
@@ -381,7 +499,7 @@
VTABLE void push_string(STRING *v)
{
- size_t len = PF_size_string(v) * sizeof (opcode_t);
+ 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 +531,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);
+ const opcode_t *pos = GET_VISIT_CURSOR(SELF);
+ const INTVAL i = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf,
+ (const opcode_t **)&pos);
SET_VISIT_CURSOR(SELF, (char *)pos);
BYTECODE_SHIFT_OK(SELF);
return i;
@@ -432,8 +551,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);
+ const opcode_t *pos = GET_VISIT_CURSOR(SELF);
+ const FLOATVAL f = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf,
+ (const opcode_t **)&pos);
SET_VISIT_CURSOR(SELF, (char *)pos);
BYTECODE_SHIFT_OK(SELF);
return f;
@@ -452,8 +572,8 @@
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 = 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);
@@ -476,7 +596,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 +614,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);
@@ -509,16 +630,14 @@
unpacked_length = PackFile_unpack(interp, PARROT_IMAGEIO(SELF)->pf,
GET_VISIT_CURSOR(SELF), PARROT_IMAGEIO(SELF)->input_length);
- if (!unpacked_length) {
+ 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/include_dynpmc_makefile/src/pmc/imageiosize.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/imageiosize.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/imageiosize.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +49,8 @@
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);
VTABLE_push_integer(interp, info, pmc->vtable->base_type);
VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
@@ -113,7 +134,7 @@
*/
VTABLE PMC *get_pmc() {
- PMC *ret = Parrot_pmc_new(INTERP, enum_class_Integer);
+ PMC * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
VTABLE_set_integer_native(INTERP, ret, PARROT_IMAGEIOSIZE(SELF)->size);
return ret;
}
@@ -157,7 +178,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 +195,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;
}
@@ -191,7 +212,7 @@
VTABLE void push_string(STRING *v)
{
- size_t len = PF_size_string(v) * sizeof (opcode_t);
+ const size_t len = PF_size_string(v) * sizeof (opcode_t);
PARROT_IMAGEIOSIZE(SELF)->size += len;
}
Modified: branches/include_dynpmc_makefile/src/pmc/integer.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/integer.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/integer.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -353,6 +381,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,7 +402,6 @@
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);
@@ -854,7 +882,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,
Modified: branches/include_dynpmc_makefile/src/pmc/iterator.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/iterator.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/iterator.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -57,6 +57,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass Iterator no_ro {
/*
Modified: branches/include_dynpmc_makefile/src/pmc/key.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/key.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/key.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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:
Modified: branches/include_dynpmc_makefile/src/pmc/lexinfo.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/lexinfo.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/lexinfo.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -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);
}
/*
@@ -95,9 +97,10 @@
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;
+ 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;
Modified: branches/include_dynpmc_makefile/src/pmc/lexpad.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/lexpad.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/lexpad.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/managedstruct.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/managedstruct.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/managedstruct.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Modified: branches/include_dynpmc_makefile/src/pmc/multisub.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/multisub.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/multisub.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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() {
@@ -79,7 +83,7 @@
/* 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;
Modified: branches/include_dynpmc_makefile/src/pmc/namespace.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/namespace.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/namespace.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -312,13 +409,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);
}
}
@@ -429,7 +525,7 @@
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;
@@ -1008,7 +1104,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/include_dynpmc_makefile/src/pmc/nci.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/nci.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/nci.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
+ 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/include_dynpmc_makefile/src/pmc/null.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/null.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/null.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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));
Modified: branches/include_dynpmc_makefile/src/pmc/object.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/object.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/object.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -430,7 +500,7 @@
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
STRING * const meth_name = CONST_STRING(interp, "get_integer");
- /* 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++) {
@@ -447,7 +517,7 @@
}
/* 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. */
+ /* 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, pmc, proxy);
@@ -643,7 +713,7 @@
Parrot_Object_attributes * const obj = PARROT_OBJECT(pmc);
Parrot_Class_attributes * const _class = PARROT_CLASS(obj->_class);
- /* 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;
@@ -660,8 +730,7 @@
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 ||
+ if ((VTABLE_elements(interp, call_sig) == 0 ||
VTABLE_get_pmc_keyed_int(interp, call_sig, 0) != SELF))
VTABLE_unshift_pmc(interp, call_sig, SELF);
@@ -669,7 +738,7 @@
}
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);
@@ -713,14 +782,16 @@
STRING * const meth_name = CONST_STRING(interp, "clone");
PMC * const meth =
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", pmc, &result);
}
- else
- return Parrot_oo_clone_object(interp, SELF, obj->_class, NULL);
+ else {
+ result = Parrot_oo_clone_object(interp, SELF, NULL);
+ }
+
+ return result;
}
/*
Modified: branches/include_dynpmc_makefile/src/pmc/opcode.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/opcode.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/opcode.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -16,6 +16,10 @@
#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;
@@ -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/include_dynpmc_makefile/src/pmc/oplib.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/oplib.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/oplib.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/orderedhash.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/orderedhash.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/orderedhash.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -77,9 +77,70 @@
*/
+/* 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) {
+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;
@@ -100,7 +161,10 @@
/* 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) {
+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)) {
@@ -118,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);
@@ -259,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);
@@ -369,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))
@@ -382,10 +461,13 @@
}
VTABLE PMC *get_pmc_keyed_str(STRING *key) {
- PMC * const 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);
}
/*
Modified: branches/include_dynpmc_makefile/src/pmc/orderedhashiterator.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/orderedhashiterator.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/orderedhashiterator.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/os.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/os.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/os.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -34,6 +34,10 @@
/* 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 singleton {
Modified: branches/include_dynpmc_makefile/src/pmc/packfile.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfile.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfile.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -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 =
+ 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;
@@ -148,18 +168,21 @@
=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);
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
+ PackFile * const pf = PackFile_new(interp, 0);
+ const opcode_t * const ptr =
+ (const opcode_t *)Parrot_string_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.");
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_MALFORMED_PACKFILE, "Can't unpack packfile.");
}
/* Disable GC during copy data into internal structures. */
@@ -210,7 +233,8 @@
*/
VTABLE INTVAL get_integer_keyed_str(STRING *key) {
- Parrot_Packfile_attributes *attrs = PARROT_PACKFILE(SELF);
+ 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")))
@@ -313,7 +337,7 @@
*/
VTABLE void set_integer_keyed_str(STRING *key, INTVAL value) {
- Parrot_Packfile_attributes *attrs = PARROT_PACKFILE(SELF);
+ Parrot_Packfile_attributes * const attrs = PARROT_PACKFILE(SELF);
if (!Parrot_str_compare(interp, key, CONST_STRING(interp, "version_major"))) {
attrs->version_major = value;
return;
@@ -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/include_dynpmc_makefile/src/pmc/packfileannotation.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfileannotation.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfileannotation.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +61,7 @@
*/
VTABLE void mark() {
- Parrot_PackfileAnnotation_attributes * attrs =
+ Parrot_PackfileAnnotation_attributes * const attrs =
PARROT_PACKFILEANNOTATION(SELF);
Parrot_gc_mark_STRING_alive(interp, attrs->name);
@@ -133,7 +137,7 @@
*/
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,
"Trying to fetch wrong type of value from annotation");
@@ -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,7 +170,7 @@
*/
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,
"Trying to fetch wrong type of value from annotation");
@@ -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,7 +203,7 @@
*/
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,
"Trying to fetch wrong type of value from annotation");
@@ -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/include_dynpmc_makefile/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfileannotations.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfileannotations.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -307,8 +311,7 @@
PMC * key_array = VTABLE_get_pmc_keyed_str(interp, keys, entity_attrs->name);
if (PMC_IS_NULL(key_array)) {
/* Never see this name before. Create new FIA and add to keys. */
- key_array = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
- VTABLE_set_integer_native(interp, key_array, 3);
+ 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);
Modified: branches/include_dynpmc_makefile/src/pmc/packfileconstanttable.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfileconstanttable.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfileconstanttable.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +46,7 @@
*/
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);
@@ -63,7 +67,7 @@
*/
VTABLE void mark() {
- Parrot_PackfileConstantTable_attributes * attrs =
+ Parrot_PackfileConstantTable_attributes * const attrs =
PARROT_PACKFILECONSTANTTABLE(SELF);
Parrot_gc_mark_PMC_alive(interp, attrs->constants);
@@ -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);
@@ -126,11 +130,10 @@
*/
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;
@@ -141,7 +144,7 @@
pftable->const_count, PackFile_Constant*);
for (i = 0; i < pftable->const_count; ++i) {
- value = PackFile_Constant_new(interp);
+ 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:
@@ -243,7 +246,7 @@
*/
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);
@@ -262,7 +265,7 @@
*/
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);
@@ -280,10 +283,10 @@
*/
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;
@@ -354,19 +357,18 @@
*/
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);
@@ -374,19 +376,18 @@
}
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);
@@ -394,23 +395,22 @@
}
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);
Modified: branches/include_dynpmc_makefile/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfiledirectory.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfiledirectory.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -144,7 +148,7 @@
PackFile_Segment * const pfseg = (PackFile_Segment *)VTABLE_get_pointer(interp, seg);
pfseg->pf = pf;
- pfseg->name = Parrot_str_copy(interp, name);
+ pfseg->name = name;
PackFile_add_segment(interp, pfdir, pfseg);
}
Modified: branches/include_dynpmc_makefile/src/pmc/packfilefixupentry.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfilefixupentry.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfilefixupentry.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -19,6 +19,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PackfileFixupEntry auto_attrs {
ATTR INTVAL type;
ATTR STRING *name;
Modified: branches/include_dynpmc_makefile/src/pmc/packfilefixuptable.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfilefixuptable.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfilefixuptable.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
Modified: branches/include_dynpmc_makefile/src/pmc/packfilerawsegment.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfilerawsegment.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfilerawsegment.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -61,7 +65,7 @@
*/
VTABLE void mark() {
- Parrot_PackfileRawSegment_attributes * attrs =
+ Parrot_PackfileRawSegment_attributes * const attrs =
PARROT_PACKFILERAWSEGMENT(SELF);
Parrot_gc_mark_PMC_alive(interp, attrs->opcodes);
@@ -83,15 +87,16 @@
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);
/* Not very efficient... */
@@ -112,7 +117,7 @@
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;
@@ -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/include_dynpmc_makefile/src/pmc/packfilesegment.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/packfilesegment.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/packfilesegment.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Modified: branches/include_dynpmc_makefile/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/parrotinterpreter.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/parrotinterpreter.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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.
@@ -127,11 +140,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 +163,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 +172,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 +245,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 +268,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 +317,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);
@@ -441,7 +456,7 @@
*/
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");
@@ -487,7 +502,7 @@
}
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,
@@ -712,7 +727,7 @@
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 +761,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 +803,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 +826,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/include_dynpmc_makefile/src/pmc/parrotlibrary.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/parrotlibrary.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/parrotlibrary.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/parrotrunningthread.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/parrotrunningthread.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/parrotrunningthread.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -32,6 +32,10 @@
#define PMC_tid(x) (PARROT_PARROTRUNNINGTHREAD(x))->tid
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass ParrotRunningThread no_ro auto_attrs {
ATTR INTVAL tid; /* thread id */
Modified: branches/include_dynpmc_makefile/src/pmc/parrotthread.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/parrotthread.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/parrotthread.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2007, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -40,13 +40,43 @@
#define PMC_interp(x) ((Parrot_ParrotInterpreter_attributes *)PMC_data(x))->interp
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+static INTVAL do_thread_run(PARROT_INTERP,
+ ARGIN(PMC *thread),
+ INTVAL clone_flags,
+ ARGIN(PMC *sub),
+ ARGIN(PMC *args))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4)
+ __attribute__nonnull__(5);
+
+static void stop_GC(ARGIN(Interp *parent), ARGIN(Interp *thread))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_do_thread_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(thread) \
+ , PARROT_ASSERT_ARG(sub) \
+ , PARROT_ASSERT_ARG(args))
+#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 */
+
/*
* can't do multi-threaded GC yet
* XXX a quick hack to pass the few tests
*/
static void
-stop_GC(Interp *parent, Interp *thread)
+stop_GC(ARGIN(Interp *parent), ARGIN(Interp *thread))
{
+ ASSERT_ARGS(stop_GC)
Parrot_block_GC_mark(parent);
Parrot_block_GC_mark(thread);
Parrot_block_GC_sweep(parent);
@@ -57,9 +87,13 @@
coke's]
*/
-static INTVAL do_thread_run(PARROT_INTERP, PMC *thread,
- INTVAL clone_flags, PMC *sub, PMC *args) {
- INTVAL tid = VTABLE_get_integer(interp, thread);
+static INTVAL
+do_thread_run(PARROT_INTERP, ARGIN(PMC *thread),
+ INTVAL clone_flags, ARGIN(PMC *sub), ARGIN(PMC *args))
+{
+ ASSERT_ARGS(do_thread_run)
+
+ const INTVAL tid = VTABLE_get_integer(interp, thread);
if (PMC_IS_NULL(sub)) {
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
Modified: branches/include_dynpmc_makefile/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/pmcproxy.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/pmcproxy.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -63,6 +63,10 @@
*/
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
pmclass PMCProxy extends Class auto_attrs {
@@ -314,15 +318,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);
}
/*
@@ -464,7 +465,7 @@
*/
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)
@@ -485,9 +486,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/include_dynpmc_makefile/src/pmc/pointer.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/pointer.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/pointer.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/resizablebooleanarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/resizablebooleanarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/resizablebooleanarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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)
Modified: branches/include_dynpmc_makefile/src/pmc/resizablefloatarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/resizablefloatarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/resizablefloatarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/resizableintegerarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/resizableintegerarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/resizableintegerarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/resizablepmcarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/resizablepmcarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -281,8 +285,8 @@
}
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)
@@ -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,8 +381,8 @@
VTABLE void push_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(INTERP, enum_class_Integer);
VTABLE_set_integer_native(INTERP, val, value);
SELF.set_pmc_keyed_int(size, val);
@@ -387,9 +391,14 @@
}
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 +406,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 +510,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,8 +530,8 @@
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(INTERP, enum_class_Integer);
PMC **data;
INTVAL i;
@@ -541,7 +550,7 @@
VTABLE void unshift_pmc(PMC *value) {
- INTVAL size = PMC_size(SELF);
+ const INTVAL size = PMC_size(SELF);
PMC **data;
INTVAL i;
@@ -559,8 +568,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 +597,7 @@
*/
VTABLE PMC *clone() {
- PMC *copy = SUPER();
+ PMC * const copy = SUPER();
/* copy trimmed extra space */
PMC_threshold(copy) = PMC_size(SELF);
@@ -608,9 +617,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 +628,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 +655,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 +689,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? */
@@ -731,12 +740,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/include_dynpmc_makefile/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/resizablestringarray.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/resizablestringarray.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
@@ -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);
}
@@ -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;
@@ -264,7 +268,7 @@
*/
VTABLE PMC *clone() {
- PMC *copy = SUPER();
+ PMC * const copy = SUPER();
INTVAL size;
GET_ATTR_size(interp, SELF, size);
/* copy trimmed extra space */
@@ -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;
@@ -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/include_dynpmc_makefile/src/pmc/retcontinuation.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/retcontinuation.pmc Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/src/pmc/role.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/role.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/role.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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. */
@@ -495,7 +515,7 @@
}
/* Otherwise, copy the stored string name of the class. */
- return Parrot_str_copy(interp, role->name);
+ return role->name;
}
/*
@@ -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).
*/
@@ -750,7 +770,7 @@
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);
else
Modified: branches/include_dynpmc_makefile/src/pmc/scalar.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/scalar.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/scalar.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
}
/*
Modified: branches/include_dynpmc_makefile/src/pmc/scheduler.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/scheduler.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/scheduler.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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. */
Modified: branches/include_dynpmc_makefile/src/pmc/schedulermessage.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/schedulermessage.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/schedulermessage.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
}
Modified: branches/include_dynpmc_makefile/src/pmc/sockaddr.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/sockaddr.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/sockaddr.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/socket.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/socket.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/socket.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/string.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/string.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/string.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
@@ -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,7 +536,7 @@
*/
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 */
@@ -571,7 +571,7 @@
}
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);
@@ -699,7 +699,7 @@
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);
Modified: branches/include_dynpmc_makefile/src/pmc/stringhandle.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/stringhandle.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/stringhandle.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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(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, 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(STRING *s))
{
+ ASSERT_ARGS(encoding_is_utf8)
if (STRING_IS_NULL(s))
return 0;
else
@@ -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;
@@ -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. */
@@ -305,8 +317,6 @@
else
string_result = Parrot_str_new_constant(INTERP, "");
}
- else
- string_result = Parrot_str_copy(INTERP, string_result);
RETURN(STRING *string_result);
}
@@ -366,7 +376,7 @@
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);
@@ -452,13 +462,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 +480,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/include_dynpmc_makefile/src/pmc/stringiterator.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/stringiterator.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/stringiterator.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/pmc/sub.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/sub.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/sub.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +405,10 @@
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);
@@ -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
@@ -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,
@@ -865,10 +849,10 @@
/* 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);
@@ -1016,7 +1000,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;
Modified: branches/include_dynpmc_makefile/src/pmc/task.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/task.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/task.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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. */
Modified: branches/include_dynpmc_makefile/src/pmc/timer.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/timer.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/timer.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 */
Modified: branches/include_dynpmc_makefile/src/pmc/undef.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/undef.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/undef.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 {
/*
Modified: branches/include_dynpmc_makefile/src/pmc/unmanagedstruct.pmc
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc/unmanagedstruct.pmc Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc/unmanagedstruct.pmc Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
}
@@ -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, pmc, 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, pmc, 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, pmc, 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, pmc, 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, pmc, 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, pmc, key, &type);
return ret_string(INTERP, p, type);
}
@@ -907,7 +1053,7 @@
VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
int type;
- char *p = char_offset_int(INTERP, pmc, key, &type);
+ char * const p = char_offset_int(INTERP, pmc, key, &type);
return ret_pmc(INTERP, pmc, p, type, key);
}
@@ -923,7 +1069,7 @@
VTABLE PMC *get_pmc_keyed(PMC *key) {
int type;
- char *p = char_offset_key(INTERP, pmc, key, &type);
+ char * const p = char_offset_key(INTERP, pmc, key, &type);
return ret_pmc(INTERP, pmc, p, type, key_2_idx(INTERP, pmc, 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, pmc, 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, pmc, 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, pmc, 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, pmc, 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, pmc, 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, pmc, 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/include_dynpmc_makefile/src/pmc_freeze.c
==============================================================================
--- branches/include_dynpmc_makefile/src/pmc_freeze.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/pmc_freeze.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -54,7 +54,7 @@
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);
}
@@ -80,7 +80,7 @@
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);
@@ -112,7 +112,7 @@
{
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;
@@ -199,7 +199,8 @@
*/
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;
@@ -207,7 +208,7 @@
/* 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);
+ 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 +232,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 +269,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
*/
Copied: branches/include_dynpmc_makefile/src/runcore/.gitignore (from r45870, trunk/src/runcore/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/runcore/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/runcore/.gitignore)
@@ -0,0 +1,3 @@
+/*.o
+/*.obj
+/*.str
Modified: branches/include_dynpmc_makefile/src/runcore/cores.c
==============================================================================
--- branches/include_dynpmc_makefile/src/runcore/cores.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/runcore/cores.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -272,10 +272,9 @@
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static opcode_t * runops_cgoto_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
@@ -290,10 +289,9 @@
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,28 +306,25 @@
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),
+ SHIM(Parrot_runcore_t *runcore),
ARGIN(opcode_t *pc))
__attribute__nonnull__(1)
- __attribute__nonnull__(2)
__attribute__nonnull__(3);
PARROT_WARN_UNUSED_RESULT
@@ -343,16 +338,12 @@
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) \
@@ -360,7 +351,6 @@
, 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,15 +358,12 @@
, 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) \
@@ -384,7 +371,6 @@
, 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 +391,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 +421,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;
@@ -465,7 +451,7 @@
{
ASSERT_ARGS(Parrot_runcore_switch_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, "switch");
coredata->id = PARROT_SWITCH_CORE;
coredata->opinit = PARROT_CORE_SWITCH_OPLIB_INIT;
@@ -495,7 +481,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 +509,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,7 +539,7 @@
{
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;
@@ -585,7 +571,7 @@
{
ASSERT_ARGS(Parrot_runcore_cgp_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, "cgp");
coredata->id = PARROT_CGP_CORE;
coredata->opinit = PARROT_CORE_CGP_OPLIB_INIT;
@@ -618,7 +604,7 @@
{
ASSERT_ARGS(Parrot_runcore_cgoto_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, "cgoto");
coredata->id = PARROT_CGOTO_CORE;
coredata->opinit = PARROT_CORE_CG_OPLIB_INIT;
@@ -652,7 +638,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)
@@ -692,7 +678,7 @@
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))
+runops_cgoto_core(PARROT_INTERP, SHIM(Parrot_runcore_t *runcore), ARGIN(opcode_t *pc))
{
ASSERT_ARGS(runops_cgoto_core)
@@ -724,8 +710,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 +722,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)
@@ -827,12 +812,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);
+ return runops_trace_core(interp, pc);
#if 0
if (interp->debugger && interp->debugger->pdb)
return Parrot_debug(interp, interp->debugger, pc);
@@ -868,7 +853,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 +888,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)
@@ -1016,8 +1001,8 @@
}
for (i = 0; i < N;) {
- op_info_t * const opinfo = &interp->op_info_table[*pc];
- size_t n = opinfo->op_count;
+ const op_info_t * const opinfo = &interp->op_info_table[*pc];
+ size_t n = opinfo->op_count;
temp[i] = pred_func;
@@ -1079,7 +1064,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 +1090,7 @@
ASSERT_ARGS(runops_exec_core)
UNUSED(interp);
+ UNUSED(runcore);
UNUSED(pc);
return NULL;
Modified: branches/include_dynpmc_makefile/src/runcore/main.c
==============================================================================
--- branches/include_dynpmc_makefile/src/runcore/main.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/runcore/main.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -397,13 +397,15 @@
Parrot_runcore_destroy(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_runcore_destroy)
+#ifdef HAVE_COMPUTED_GOTO
op_lib_t *cg_lib;
+#endif
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);
@@ -457,6 +459,7 @@
*/
+PARROT_EXPORT
void
dynop_register(PARROT_INTERP, ARGIN(PMC *lib_pmc))
{
@@ -577,6 +580,8 @@
*/
+#ifdef HAVE_COMPUTED_GOTO
+
static void
dynop_register_xx(PARROT_INTERP,
size_t n_old, size_t n_new, oplib_init_f init_func)
@@ -586,13 +591,13 @@
op_func_t *ops_addr = NULL;
op_lib_t *cg_lib = init_func(interp, 1);
-#if 0
+# 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
+# endif
if (cg_lib->flags & OP_FUNC_IS_ALLOCATED) {
ops_addr = mem_gc_realloc_n_typed_zeroed(interp,
@@ -627,7 +632,7 @@
* compiled big switch statement with the new cases. We have
* always to use the wrapper__ opcode called from the default case.
*/
-#if 0
+# 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);
@@ -651,7 +656,7 @@
new_init_func((long) ops_addr);
}
else
-#endif
+# endif
{
size_t i;
@@ -677,6 +682,8 @@
init_func(interp, (long) ops_addr);
}
+#endif
+
/*
Modified: branches/include_dynpmc_makefile/src/runcore/profiling.c
==============================================================================
--- branches/include_dynpmc_makefile/src/runcore/profiling.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/runcore/profiling.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -387,12 +387,12 @@
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);
+ 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;
Modified: branches/include_dynpmc_makefile/src/runcore/trace.c
==============================================================================
--- branches/include_dynpmc_makefile/src/runcore/trace.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/runcore/trace.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,7 +309,7 @@
"NULL sig PMC detected in trace_op_dump");
var_args = VTABLE_elements(interp, sig);
- n += var_args;
+ n += var_args;
}
if (n > 1) {
@@ -314,9 +318,9 @@
/* pass 1 print arguments */
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,17 +402,17 @@
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++) {
@@ -413,9 +422,10 @@
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/include_dynpmc_makefile/src/scheduler.c
==============================================================================
--- branches/include_dynpmc_makefile/src/scheduler.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/scheduler.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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");
@@ -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,11 +604,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:
@@ -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;
Modified: branches/include_dynpmc_makefile/src/spf_render.c
==============================================================================
--- branches/include_dynpmc_makefile/src/spf_render.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/spf_render.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,26 +136,26 @@
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);
+ 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);
+ 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 ??? */
@@ -176,11 +177,11 @@
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 +194,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 +203,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 +218,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 +232,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;
}
@@ -328,7 +328,7 @@
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 */
@@ -344,11 +344,9 @@
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;
@@ -602,7 +600,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 +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;
@@ -631,7 +629,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 +639,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 +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;
@@ -677,7 +675,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 +714,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 +726,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;
@@ -816,7 +814,7 @@
}
#endif /* WIN32 */
- targ = Parrot_str_append(interp, targ, cstr2pstr(tc));
+ targ = Parrot_str_concat(interp, targ, cstr2pstr(tc));
}
break;
@@ -836,7 +834,7 @@
string, 0, NULL);
obj->index++;
- targ = Parrot_str_append(interp, targ, ts);
+ targ = Parrot_str_concat(interp, targ, ts);
break;
}
@@ -849,7 +847,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;
@@ -892,9 +890,8 @@
}
}
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/include_dynpmc_makefile/src/spf_vtable.c
==============================================================================
--- branches/include_dynpmc_makefile/src/spf_vtable.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/spf_vtable.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -453,7 +453,7 @@
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);
}
/*
Copied: branches/include_dynpmc_makefile/src/string/.gitignore (from r45870, trunk/src/string/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/string/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/string/.gitignore)
@@ -0,0 +1,4 @@
+/private_cstring.h
+/*.o
+/*.obj
+/*.str
Modified: branches/include_dynpmc_makefile/src/string/api.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/api.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/api.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -28,7 +28,9 @@
#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) \
@@ -41,14 +43,6 @@
/* 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_CAN_RETURN_NULL
@@ -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,11 +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;
+ return STRING_IS_NULL(s);
}
@@ -101,171 +94,17 @@
*/
PARROT_EXPORT
+PARROT_HOT
+PARROT_PURE_FUNCTION
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;
+ return STRING_IS_NULL(s);
}
/*
-=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;
-}
-
-
-/*
-
=back
=head2 Basic String Functions
@@ -292,15 +131,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 +155,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 +179,7 @@
}
}
+
/*
=item C<void Parrot_str_finish(PARROT_INTERP)>
@@ -352,6 +195,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 +205,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 +240,7 @@
return s;
}
+
/*
=item C<static const CHARSET * string_rep_compatible(PARROT_INTERP, const STRING
@@ -442,6 +265,7 @@
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 +273,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 +283,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 +317,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, STRING *s)>
+
+Creates and returns a shallow copy of the specified Parrot string.
=cut
@@ -508,50 +365,63 @@
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, ARGMOD(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;
+
+ /* We set COW flag to avoid cloning buffer in compact_pool */
- return Parrot_str_copy(interp, a);
+ 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 b
- ? Parrot_str_copy(interp, b)
- : string_make(interp, NULL, 0, NULL, Uflags);
+ 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,17 +431,12 @@
return a;
/* Is A real? */
- if (a == NULL || Buffer_bufstart(a) == NULL)
- return Parrot_str_copy(interp, b);
+ if (STRING_IS_NULL(a) || Buffer_bufstart(a) == NULL)
+ return b;
saneify_string(a);
saneify_string(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);
-
cs = string_rep_compatible(interp, a, b, &enc);
if (cs) {
@@ -584,46 +449,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)>
-Make a Parrot string from a specified C string.
+Makes a Parrot string from a specified C string.
=cut
@@ -637,11 +501,14 @@
Parrot_str_new(PARROT_INTERP, ARGIN_NULLOK(const char * const 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? */
+ return Parrot_str_new_init(interp, buffer,
+ len
+ ? len
+ : buffer
+ ? strlen(buffer)
+ : 0,
+ /* Force an 8-bit encoding at some point? */
+ PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
}
@@ -650,9 +517,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 +534,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 *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 +581,7 @@
"invalid string representation");
}
+
/*
=item C<STRING * Parrot_str_new_constant(PARROT_INTERP, const char *buffer)>
@@ -731,10 +600,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;
@@ -889,7 +757,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,7 +770,7 @@
if (encoding == Parrot_fixed_8_encoding_ptr)
s->strlen = len;
else
- Parrot_str_length(interp, s);
+ s->strlen = CHARSET_CODEPOINTS(interp, s);
}
else {
s->strlen = s->bufused = 0;
@@ -914,31 +782,6 @@
/*
-=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;
-}
-
-
-/*
-
=back
=head2 Ordinary user-visible string operations
@@ -960,7 +803,7 @@
{
ASSERT_ARGS(Parrot_str_byte_length)
- return s ? s->strlen : 0;
+ return !STRING_IS_NULL(s) ? s->strlen : 0;
}
@@ -1010,9 +853,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 +868,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);
+ }
}
@@ -1111,34 +954,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 +969,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 +992,7 @@
PARROT_EXPORT
PARROT_WARN_UNUSED_RESULT
+PARROT_PURE_FUNCTION
INTVAL
string_max_bytes(SHIM_INTERP, ARGIN(const STRING *s), UINTVAL nchars)
{
@@ -1179,6 +1001,7 @@
return ENCODING_MAX_BYTES_PER_CODEPOINT(interp, s) * nchars;
}
+
/*
=item C<STRING * Parrot_str_repeat(PARROT_INTERP, const STRING *s, UINTVAL num)>
@@ -1209,21 +1032,21 @@
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)>
+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 +1057,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(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);
+ saneify_string(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)>
+INTVAL length, 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 +1119,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))
+ INTVAL offset, INTVAL length, ARGIN(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,25 +1149,19 @@
* 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));
+ src = Parrot_utf16_encoding_ptr->to_encoding(interp, src);
+ rep = Parrot_utf16_encoding_ptr->to_encoding(interp, rep);
}
else {
src->charset = cs;
@@ -1393,54 +1179,43 @@
/* 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;
+ /* Copy encoding/charset/etc */
+ STRUCT_COPY(dest, src);
- 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;
- }
+ /* Clear COW flag. We own buffer */
+ PObj_get_FLAGS(dest) = PObj_is_string_FLAG
+ | PObj_is_COWable_FLAG
+ | PObj_live_FLAG;
- mem_sys_memcopy((char *)src->strstart + start_byte,
- rep->strstart, rep->bufused);
+ /* size removed bytes added bytes */
+ buf_size = src->bufused - (end_byte - start_byte) + rep->bufused;
- if (diff)
- (void)Parrot_str_length(interp, src);
- }
+ /* Alloctate new string size. */
+ Parrot_gc_allocate_string_storage(interp, dest, buf_size);
+ dest->bufused = buf_size;
- /* 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);
- }
+ /* 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);
+
+ dest->strlen = CHARSET_CODEPOINTS(interp, dest);
+ dest->hashval = 0;
- /* src is modified, now return the original substring */
return dest;
}
@@ -1449,9 +1224,8 @@
=item C<STRING * Parrot_str_chopn(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 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
@@ -1463,68 +1237,47 @@
Parrot_str_chopn(PARROT_INTERP, ARGMOD(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,10 +1301,10 @@
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);
@@ -1582,6 +1335,7 @@
return !Parrot_str_equal(interp, s1, s2);
}
+
/*
=item C<INTVAL Parrot_str_equal(PARROT_INTERP, const STRING *s1, const STRING
@@ -1602,28 +1356,30 @@
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)
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,
@@ -1636,39 +1392,11 @@
/*
-=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);
-}
-
-
-/*
-
=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 +1406,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 +1424,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 +1445,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 +1457,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 +1470,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 +1505,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 +1534,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 +1547,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 +1574,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 +1589,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 +1600,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 +1613,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 +1640,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 +1655,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 +1675,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 +1690,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 +1708,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 +1723,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 +1748,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,7 +1794,9 @@
return output;
}
+
/*
+
State of FSM during number value parsing.
Integer uses only parse_start, parse_before_dot and parse_end.
@@ -2151,7 +1841,7 @@
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;
@@ -2177,8 +1867,9 @@
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 == '-') {
@@ -2200,8 +1891,9 @@
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;
@@ -2219,6 +1911,7 @@
}
}
+
/*
=item C<FLOATVAL Parrot_str_to_num(PARROT_INTERP, const STRING *s)>
@@ -2253,7 +1946,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);
@@ -2364,16 +2057,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 +2150,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 +2164,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 +2179,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 +2194,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 +2220,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 +2239,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 +2273,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 +2322,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 */
+ saneify_string(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 +2394,8 @@
String_iter iter;
unsigned char *dp;
- if (!src)
- return NULL;
+ if (STRING_IS_NULL(src))
+ return STRINGNULL;
len = src->strlen;
@@ -2793,7 +2481,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;
@@ -2913,9 +2601,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 +2631,13 @@
Parrot_str_upcase(PARROT_INTERP, ARGIN_NULLOK(const STRING *s))
{
ASSERT_ARGS(Parrot_str_upcase)
- 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 {
- 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)) {
- 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 * res = CHARSET_UPCASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3000,47 +2660,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 * res = CHARSET_DOWNCASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3063,41 +2690,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 * res = CHARSET_TITLECASE(interp, s);
+ res->hashval = 0;
+ return res;
}
}
@@ -3157,7 +2757,7 @@
Parrot_string_cstring(SHIM_INTERP, ARGIN(const STRING *str))
{
ASSERT_ARGS(Parrot_string_cstring)
- /* TODO handle NUL and friends */
+ /* TODO handle NULL and friends */
return str->strstart;
}
@@ -3182,6 +2782,7 @@
ARGIN(const STRING *s), UINTVAL offset)
{
ASSERT_ARGS(Parrot_str_is_cclass)
+
if (!Parrot_str_byte_length(interp, s))
return 0;
@@ -3208,12 +2809,14 @@
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
@@ -3235,7 +2838,8 @@
ARGIN_NULLOK(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 +2849,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 +2863,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 +2877,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
@@ -3318,13 +2901,13 @@
PARROT_CAN_RETURN_NULL
STRING*
Parrot_str_change_encoding(PARROT_INTERP, ARGIN_NULLOK(STRING *src),
- INTVAL encoding_nr, ARGOUT_NULLOK(STRING *dest))
+ 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,25 +2915,10 @@
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);
}
@@ -3371,7 +2939,8 @@
Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
{
ASSERT_ARGS(Parrot_str_compose)
- if (!src)
+
+ if (STRING_IS_NULL(src))
return NULL;
if (!src->strlen)
@@ -3399,24 +2968,104 @@
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;
+ const CHARSET *c = 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];
- res = Parrot_str_append(interp, res, j);
- res = Parrot_str_append(interp, res, next);
+ if (STRING_IS_NULL(next))
+ continue;
+
+ mem_sys_memcopy(pos, j->strstart, j->bufused);
+ pos += j->bufused;
+
+ 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 +3075,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 +3084,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 +3096,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 +3110,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 +3128,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 +3170,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,12 +3179,12 @@
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)
@@ -3572,6 +3223,7 @@
return Parrot_str_from_uint(interp, tc, (UHUGEINTVAL)num, base, is_neg);
}
+
/*
=back
Modified: branches/include_dynpmc_makefile/src/string/charset.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
}
@@ -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)
Copied: branches/include_dynpmc_makefile/src/string/charset/.gitignore (from r45870, trunk/src/string/charset/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/string/charset/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/string/charset/.gitignore)
@@ -0,0 +1,2 @@
+/*.o
+/*.obj
Modified: branches/include_dynpmc_makefile/src/string/charset/ascii.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/ascii.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/ascii.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2004-2009, Parrot Foundation.
+Copyright (C) 2004-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -42,10 +42,15 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*src);
-static void downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
+ __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 *source_string))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
@@ -73,56 +78,41 @@
__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 *source_string))
+ __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 *source_string))
__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(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(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 *source_string))
+ __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 *source_string))
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
@@ -137,9 +127,11 @@
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(source_string))
#define ASSERT_ARGS_downcase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(source_string))
#define ASSERT_ARGS_find_cclass __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(source_string))
@@ -149,29 +141,26 @@
#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))
#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(source_string))
#define ASSERT_ARGS_titlecase_first __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(source_string))
#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 = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(src))
#define ASSERT_ARGS_upcase __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(source_string))
+ PARROT_ASSERT_ARG(interp) \
+ , 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(source_string))
#define ASSERT_ARGS_validate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
@@ -202,53 +191,7 @@
/*
-=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);
-}
-
-/*
-
-=item C<static STRING * to_ascii(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_ascii(PARROT_INTERP, 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 +202,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_ascii(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_ascii(PARROT_INTERP, ARGIN(STRING *src))
{
ASSERT_ARGS(to_ascii)
String_iter iter;
@@ -267,13 +210,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 * 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 +231,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, STRING *src)>
Converts STRING C<src> to ASCII charset STRING C<dest>.
@@ -330,17 +241,17 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(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);
}
}
@@ -361,7 +272,7 @@
compose(PARROT_INTERP, ARGIN(STRING *src))
{
ASSERT_ARGS(compose)
- return Parrot_str_copy(interp, src);
+ return src;
}
/* A noop. can't decompose ascii */
@@ -381,12 +292,12 @@
decompose(PARROT_INTERP, ARGMOD(STRING *src))
{
ASSERT_ARGS(decompose)
- return Parrot_str_copy(interp, src);
+ return src;
}
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
Converts the STRING C<source_string> to all uppercase.
@@ -394,25 +305,29 @@
*/
-static void
-upcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(upcase)
+ STRING * const result = Parrot_str_clone(interp, source_string);
const UINTVAL n = source_string->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL 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 *source_string)>
Converts the STRING C<source_string> to all lower-case.
@@ -420,25 +335,29 @@
*/
-static void
-downcase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(downcase)
- const UINTVAL n = source_string->strlen;
+ STRING *result = Parrot_str_clone(interp, source_string);
+ const UINTVAL n = source_string->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL 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 *source_string)>
Converts the STRING given by C<source_string> to title case, where
the first character is upper case and all the rest of the characters
@@ -448,14 +367,16 @@
*/
-static void
-titlecase(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(titlecase)
- const UINTVAL n = source_string->strlen;
+ STRING *result = Parrot_str_clone(interp, source_string);
+ const UINTVAL n = source_string->strlen;
if (n) {
- char * const buffer = source_string->strstart;
+ char * const buffer = result->strstart;
UINTVAL offset;
buffer[0] = (char)toupper((unsigned char)buffer[0]);
@@ -463,11 +384,13 @@
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 *source_string)>
Sets the first character in the STRING C<source_string> to upper case,
but doesn't modify the rest of the string.
@@ -476,19 +399,25 @@
*/
-static void
-upcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(upcase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING *result = Parrot_str_clone(interp, source_string);
+
+ if (result->strlen) {
+ 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
+*source_string)>
Sets the first character of the STRING C<source_string> to lowercase,
but doesn't modify the rest of the characters.
@@ -497,19 +426,25 @@
*/
-static void
-downcase_first(SHIM_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(downcase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING *result = Parrot_str_clone(interp, source_string);
+
+ if (result->strlen) {
+ 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
+*source_string)>
Converts the first letter of STRING C<source_string> to upper case,
but doesn't modify the rest of the string.
@@ -518,14 +453,19 @@
*/
-static void
-titlecase_first(SHIM_INTERP, ARGMOD(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(titlecase_first)
- if (source_string->strlen) {
- char * const buffer = source_string->strstart;
+ STRING *result = Parrot_str_clone(interp, source_string);
+
+ if (result->strlen) {
+ char * const buffer = result->strstart;
buffer[0] = (char)toupper((unsigned char)buffer[0]);
}
+
+ return result;
}
/*
@@ -550,8 +490,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;
@@ -856,7 +795,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 +804,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_ascii_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_ascii_init)
@@ -874,8 +812,6 @@
static const CHARSET base_set = {
"ascii",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -900,13 +836,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, STRING *src)>
Converts an ASCII STRING C<src> to a binary STRING C<dest>.
@@ -916,29 +852,24 @@
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(STRING *src))
{
ASSERT_ARGS(charset_cvt_ascii_to_binary)
- if (dest) {
- UINTVAL offs;
+ STRING *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, STRING *src)>
Converts ASCII STRING C<src> to ISO8859-1 STRING C<dest>.
@@ -948,24 +879,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(STRING *src))
{
ASSERT_ARGS(charset_cvt_ascii_to_iso_8859_1)
- if (dest) {
- UINTVAL offs;
+ STRING * 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/include_dynpmc_makefile/src/string/charset/ascii.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/ascii.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/ascii.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -61,29 +61,13 @@
__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))
+STRING * charset_cvt_ascii_to_binary(PARROT_INTERP, ARGIN(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))
+STRING * charset_cvt_ascii_to_iso_8859_1(PARROT_INTERP, ARGIN(STRING *src))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -96,8 +80,7 @@
__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 = (\
@@ -117,10 +100,6 @@
#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))
#define ASSERT_ARGS_charset_cvt_ascii_to_binary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(src))
Modified: branches/include_dynpmc_makefile/src/string/charset/binary.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/binary.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/binary.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -51,10 +51,13 @@
static STRING* decompose(PARROT_INTERP, SHIM(STRING *source_string))
__attribute__nonnull__(1);
-static void downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING* downcase(PARROT_INTERP, SHIM(const STRING *source_string))
__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 *source_string))
__attribute__nonnull__(1);
static INTVAL find_cclass(SHIM_INTERP,
@@ -74,37 +77,31 @@
SHIM(const STRING *source_string),
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 *source_string))
__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 *source_string))
__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(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 *source_string))
__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 *source_string))
__attribute__nonnull__(1);
static UINTVAL validate(SHIM_INTERP, SHIM(STRING *source_string));
@@ -124,10 +121,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 +145,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, 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 +159,14 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(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");
@@ -240,7 +212,7 @@
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
Throws an exception because we cannot convert a binary string to
upper case.
@@ -249,8 +221,9 @@
*/
-static void
-upcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(upcase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -258,7 +231,7 @@
/*
-=item C<static void downcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase(PARROT_INTERP, const STRING *source_string)>
Throws an exception because we cannot convert a binary string to
lower-case.
@@ -267,8 +240,9 @@
*/
-static void
-downcase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(downcase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -276,7 +250,7 @@
/*
-=item C<static void titlecase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase(PARROT_INTERP, const STRING *source_string)>
Throws an exception because we cannot convert a binary string to
title case.
@@ -285,8 +259,9 @@
*/
-static void
-titlecase(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(titlecase)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -294,7 +269,7 @@
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
Throws an exception because we cannot set the first "character" of the
binary string to uppercase.
@@ -303,8 +278,9 @@
*/
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(upcase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't upcase binary data");
@@ -312,7 +288,8 @@
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
Throws an exception because we cannot set the first "character"
of the binary string to lowercase.
@@ -321,8 +298,9 @@
*/
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(downcase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't downcase binary data");
@@ -330,7 +308,8 @@
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
Throws an exception because we can't convert the first "character"
of binary data to title case.
@@ -339,8 +318,9 @@
*/
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(titlecase_first)
EXCEPTION(EXCEPTION_INVALID_CHARTYPE, "Can't titlecase binary data");
@@ -500,7 +480,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 +489,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_binary_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_binary_init)
@@ -518,8 +497,6 @@
static const CHARSET base_set = {
"binary",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -544,7 +521,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/include_dynpmc_makefile/src/string/charset/binary.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/binary.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/binary.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/charset/iso-8859-1.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -35,11 +35,14 @@
static STRING* decompose(PARROT_INTERP, SHIM(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 *source_string))
__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 *source_string))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -66,57 +69,45 @@
__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 *source_string))
__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 *source_string))
__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(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(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(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 *source_string))
__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 *source_string))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -144,10 +135,6 @@
#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))
#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 = (\
@@ -181,28 +168,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, STRING *src)>
Converts STRING C<src> to iso-8859-1 in STRING C<dest>.
@@ -212,22 +178,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(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 +204,7 @@
/*
-=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src, STRING *dest)>
+=item C<static STRING * to_unicode(PARROT_INTERP, STRING *src)>
Converts STRING C<src> to unicode STRING C<dest>.
@@ -254,40 +214,37 @@
PARROT_CANNOT_RETURN_NULL
static STRING *
-to_unicode(PARROT_INTERP, ARGIN(STRING *src), ARGMOD_NULLOK(STRING *dest))
+to_unicode(PARROT_INTERP, ARGIN(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, STRING *src)>
Converts the STRING C<src> to an ISO-8859-1 STRING C<dest>.
@@ -298,16 +255,16 @@
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(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);
}
@@ -329,7 +286,7 @@
compose(PARROT_INTERP, ARGIN(STRING *src))
{
ASSERT_ARGS(compose)
- return Parrot_str_copy(interp, src);
+ return src;
}
/*
@@ -353,7 +310,7 @@
/*
-=item C<static void upcase(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase(PARROT_INTERP, const STRING *source_string)>
Convert all graphemes in the STRING C<source_string> to upper case, for those
graphemes that support cases.
@@ -362,19 +319,20 @@
*/
-static void
-upcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(upcase)
unsigned char *buffer;
- UINTVAL offset = 0;
+ UINTVAL offset = 0;
+ STRING *result = Parrot_str_clone(interp, source_string);
- 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,11 +340,13 @@
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 *source_string)>
Converts all graphemes in STRING C<source_string> to lower-case, for those graphemes
that support cases.
@@ -395,30 +355,34 @@
*/
-static void
-downcase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
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, source_string);
+
+ 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 *source_string)>
Converts the graphemes in STRING C<source_string> to title case, for those graphemes
that support cases.
@@ -427,19 +391,20 @@
*/
-static void
-titlecase(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(titlecase)
unsigned char *buffer;
- unsigned int c;
- UINTVAL offset;
+ unsigned int c;
+ UINTVAL offset;
+ STRING *result = Parrot_str_clone(interp, source_string);
- 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 +412,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,11 +420,13 @@
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 *source_string)>
Converts the first grapheme in STRING C<source_string> to upper case, if it
supports cases.
@@ -468,28 +435,33 @@
*/
-static void
-upcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
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, source_string);
+
+ 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
+*source_string)>
Converts the first character of the STRING C<source_string> to lower case, if the
grapheme supports lower case.
@@ -498,28 +470,33 @@
*/
-static void
-downcase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
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, source_string);
+
+ 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
+*source_string)>
Converts the first grapheme in STRING C<source_string> to title case, if the grapheme
supports case.
@@ -528,11 +505,12 @@
*/
-static void
-titlecase_first(PARROT_INTERP, ARGIN(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(titlecase_first)
- upcase_first(interp, source_string);
+ return upcase_first(interp, source_string);
}
@@ -662,7 +640,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 +648,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 +656,6 @@
static const CHARSET base_set = {
"iso-8859-1",
ascii_get_graphemes,
- ascii_get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -705,13 +680,13 @@
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, STRING *src)>
Converts STRING C<src> in ISO-8859-1 to ASCII STRING C<dest>.
@@ -722,29 +697,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(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/include_dynpmc_makefile/src/string/charset/iso-8859-1.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/iso-8859-1.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -18,15 +18,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))
+STRING * charset_cvt_iso_8859_1_to_ascii(PARROT_INTERP, ARGIN(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/include_dynpmc_makefile/src/string/charset/unicode.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/unicode.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/unicode.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -54,11 +54,14 @@
static STRING* decompose(PARROT_INTERP, SHIM(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 *source_string))
__attribute__nonnull__(1);
static INTVAL find_cclass(PARROT_INTERP,
@@ -85,17 +88,6 @@
__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),
@@ -103,42 +95,36 @@
__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 *source_string))
__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(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 *source_string))
__attribute__nonnull__(1);
static UINTVAL validate(PARROT_INTERP, ARGIN(STRING *src))
@@ -173,17 +159,9 @@
#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))
#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))
#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,27 +201,6 @@
#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);
-}
-
/*
@@ -269,30 +226,7 @@
/*
-=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, STRING *src)>
Converts input STRING C<src> to unicode STRING C<dest>.
@@ -302,7 +236,7 @@
PARROT_CANNOT_RETURN_NULL
static STRING*
-to_charset(PARROT_INTERP, ARGIN(STRING *src), ARGIN_NULLOK(STRING *dest))
+to_charset(PARROT_INTERP, ARGIN(STRING *src))
{
ASSERT_ARGS(to_charset)
const charset_converter_t conversion_func =
@@ -310,9 +244,9 @@
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);
}
@@ -401,7 +335,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 +346,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 +376,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 +396,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 +435,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 +445,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 +472,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 +504,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 +514,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 +543,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,7 +577,7 @@
/*
-=item C<static void upcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* upcase_first(PARROT_INTERP, const STRING *source_string)>
Converts the first grapheme in the STRING C<source_string> to uppercase, if the
grapheme supports it. Not implemented.
@@ -638,8 +586,9 @@
*/
-static void
-upcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+upcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(upcase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -649,7 +598,8 @@
/*
-=item C<static void downcase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* downcase_first(PARROT_INTERP, const STRING
+*source_string)>
Converts the first grapheme in the STRING C<source_string> to lower-case, if
the grapheme supports it. Not implemented
@@ -658,8 +608,9 @@
*/
-static void
-downcase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+downcase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(downcase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -669,7 +620,8 @@
/*
-=item C<static void titlecase_first(PARROT_INTERP, STRING *source_string)>
+=item C<static STRING* titlecase_first(PARROT_INTERP, const STRING
+*source_string)>
Converts the first grapheme in STRING C<source_string> to title case, if the
string supports it. Not implemented.
@@ -678,8 +630,9 @@
*/
-static void
-titlecase_first(PARROT_INTERP, SHIM(STRING *source_string))
+PARROT_CANNOT_RETURN_NULL
+static STRING*
+titlecase_first(PARROT_INTERP, SHIM(const STRING *source_string))
{
ASSERT_ARGS(titlecase_first)
/* TODO: https://trac.parrot.org/parrot/wiki/StringsTasklist Implement this. */
@@ -1064,7 +1017,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 +1026,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-const CHARSET *
+void
Parrot_charset_unicode_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_charset_unicode_init)
@@ -1082,8 +1034,6 @@
static const CHARSET base_set = {
"unicode",
get_graphemes,
- get_graphemes_inplace,
- set_graphemes,
to_charset,
compose,
decompose,
@@ -1115,7 +1065,8 @@
*/
return_set->preferred_encoding = Parrot_utf8_encoding_ptr;
Parrot_register_charset(interp, "unicode", return_set);
- return return_set;
+
+ return;
}
Modified: branches/include_dynpmc_makefile/src/string/charset/unicode.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/charset/unicode.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/charset/unicode.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/encoding.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 *
@@ -428,6 +434,7 @@
*/
PARROT_EXPORT
+PARROT_PURE_FUNCTION
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
const ENCODING *
Copied: branches/include_dynpmc_makefile/src/string/encoding/.gitignore (from r45870, trunk/src/string/encoding/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/src/string/encoding/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/src/string/encoding/.gitignore)
@@ -0,0 +1,2 @@
+/*.o
+/*.obj
Modified: branches/include_dynpmc_makefile/src/string/encoding/fixed_8.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/fixed_8.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/fixed_8.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 *source_string))
__attribute__nonnull__(2);
-static UINTVAL codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+static UINTVAL codepoints(PARROT_INTERP, ARGIN(const STRING *source_string))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-static UINTVAL find_cclass(PARROT_INTERP,
+static UINTVAL find_cclass(SHIM_INTERP,
ARGIN(STRING *s),
ARGIN(const INTVAL *typetable),
INTVAL flags,
UINTVAL pos,
UINTVAL end)
- __attribute__nonnull__(1)
__attribute__nonnull__(2)
__attribute__nonnull__(3);
@@ -63,11 +59,15 @@
__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,
+static UINTVAL get_byte(SHIM_INTERP,
ARGIN(const STRING *source_string),
UINTVAL offset)
- __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
@@ -80,18 +80,6 @@
__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),
UINTVAL offset)
@@ -107,18 +95,6 @@
__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))
@@ -133,50 +109,18 @@
__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))
#define ASSERT_ARGS_codepoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(source_string))
#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(source_string))
#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))
#define ASSERT_ARGS_get_codepoint __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(source_string))
#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))
#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))
#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;
@@ -274,25 +200,6 @@
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);
-}
-
/*
@@ -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(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;
@@ -333,10 +240,10 @@
PARROT_WARN_UNUSED_RESULT
static UINTVAL
-get_byte(PARROT_INTERP, ARGIN(const STRING *source_string), UINTVAL offset)
+get_byte(SHIM_INTERP, ARGIN(const STRING *source_string), UINTVAL offset)
{
ASSERT_ARGS(get_byte)
- unsigned char *contents = (unsigned char *)source_string->strstart;
+ const unsigned char *contents = (const unsigned char *)source_string->strstart;
if (offset >= source_string->bufused) {
/* Parrot_ex_throw_from_c_args(interp, NULL, 0,
@@ -416,8 +323,8 @@
get_bytes(PARROT_INTERP, ARGIN(STRING *source_string), UINTVAL offset, UINTVAL count)
{
ASSERT_ARGS(get_bytes)
- STRING * const return_string = Parrot_str_new_COW(interp,
- source_string);
+ STRING * const return_string = Parrot_str_copy(interp, source_string);
+
return_string->encoding = source_string->encoding;
return_string->charset = source_string->charset;
@@ -433,117 +340,7 @@
/*
-=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->strstart = (char *)return_string->strstart + offset ;
- return_string->bufused = count;
-
- return_string->strlen = count;
- return_string->hashval = 0;
-
- 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 *source_string)>
Returns the number of codepoints in string C<src>.
@@ -552,7 +349,7 @@
*/
static UINTVAL
-codepoints(PARROT_INTERP, ARGIN(STRING *source_string))
+codepoints(PARROT_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(codepoints)
return bytes(interp, source_string);
@@ -560,7 +357,7 @@
/*
-=item C<static UINTVAL bytes(PARROT_INTERP, STRING *source_string)>
+=item C<static UINTVAL bytes(PARROT_INTERP, const STRING *source_string)>
Returns the number of bytes in string C<src>.
@@ -569,7 +366,7 @@
*/
static UINTVAL
-bytes(SHIM_INTERP, ARGIN(STRING *source_string))
+bytes(SHIM_INTERP, ARGIN(const STRING *source_string))
{
ASSERT_ARGS(bytes)
return source_string->bufused;
@@ -660,9 +457,37 @@
iter->set_position = fixed8_set_position;
}
+
+/*
+
+=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<ENCODING * Parrot_encoding_fixed_8_init(PARROT_INTERP)>
+=item C<void Parrot_encoding_fixed_8_init(PARROT_INTERP)>
Initializes the fixed-8 encoding.
@@ -670,8 +495,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_fixed_8_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_fixed_8_init)
@@ -682,25 +506,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/include_dynpmc_makefile/src/string/encoding/fixed_8.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/fixed_8.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/fixed_8.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/encoding/ucs2.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/ucs2.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/ucs2.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -36,16 +36,12 @@
/* 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);
@@ -73,15 +69,6 @@
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)
@@ -97,15 +84,6 @@
__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,39 +220,15 @@
{
ASSERT_ARGS(get_codepoint)
#if PARROT_HAS_ICU
- UChar * const s = (UChar*) src->strstart;
+ const UChar * const s = (const UChar*) src->strstart;
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
-}
/*
@@ -328,6 +246,12 @@
find_cclass(PARROT_INTERP, ARGIN(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");
@@ -388,7 +312,8 @@
get_codepoints(PARROT_INTERP, ARGIN(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);
@@ -434,109 +359,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 +369,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 +393,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,12 +410,12 @@
*/
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
@@ -605,6 +430,7 @@
* See TT #557
*/
PARROT_ASSERT(0);
+ UNUSED(i);
return (UINTVAL)0; /* Stop the static analyzers from panicing */
#endif
}
@@ -622,26 +448,62 @@
*/
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;
+ 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
+ UChar *pos = (UChar*) s->strstart;
+ UINTVAL len = s->strlen;
+
+ 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 +524,8 @@
/* This function must never be called if compiled without ICU.
* See TT #557
*/
+ UNUSED(i);
+ UNUSED(n);
PARROT_ASSERT(0);
#endif
}
@@ -683,6 +547,7 @@
{
ASSERT_ARGS(iter_init)
#if PARROT_HAS_ICU
+ UNUSED(interp);
iter->str = src;
iter->bytepos = 0;
iter->charpos = 0;
@@ -690,13 +555,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 +571,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_ucs2_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_ucs2_init)
@@ -716,24 +582,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/include_dynpmc_makefile/src/string/encoding/ucs2.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/ucs2.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/ucs2.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/encoding/utf16.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/utf16.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/utf16.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
$Id$
=head1 NAME
@@ -26,15 +26,12 @@
/* 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);
@@ -63,17 +60,6 @@
__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)
@@ -89,18 +75,6 @@
__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,34 +90,9 @@
__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);
@@ -168,8 +117,6 @@
__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 +131,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,15 +144,6 @@
#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))
@@ -242,7 +172,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 +186,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,22 +195,18 @@
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;
@@ -296,14 +222,9 @@
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 +239,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;
@@ -383,27 +295,6 @@
#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;
-}
/*
@@ -421,6 +312,12 @@
find_cclass(PARROT_INTERP, ARGIN(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");
@@ -496,7 +393,7 @@
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,39 +409,6 @@
/*
-=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)>
@@ -569,100 +433,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 +443,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 +459,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 +469,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;
@@ -810,7 +581,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 +589,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_utf16_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_utf16_init)
@@ -830,24 +600,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/include_dynpmc_makefile/src/string/encoding/utf16.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/utf16.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/utf16.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/encoding/utf8.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/utf8.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/utf8.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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(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),
@@ -64,14 +58,6 @@
__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);
-
static UINTVAL get_codepoint(PARROT_INTERP,
ARGIN(const STRING *src),
UINTVAL offset)
@@ -86,18 +72,6 @@
__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 +86,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 +134,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 +207,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 +214,8 @@
Returns the number of characters in the C<byte_len> bytes from C<*ptr>.
+XXX This function is unused.
+
=cut
*/
@@ -421,6 +351,8 @@
Moves C<ptr> C<n> characters back.
+XXX This function is unused.
+
=cut
*/
@@ -566,7 +498,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 +510,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 +531,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 +547,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 +566,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,29 +589,6 @@
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);
-}
/*
@@ -709,8 +603,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(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,
@@ -786,7 +680,7 @@
{
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;
@@ -824,10 +718,7 @@
get_bytes(PARROT_INTERP, ARGMOD(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 +729,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 +742,7 @@
*/
static UINTVAL
-codepoints(PARROT_INTERP, ARGMOD(STRING *src))
+codepoints(PARROT_INTERP, ARGIN(const STRING *src))
{
ASSERT_ARGS(codepoints)
String_iter iter;
@@ -981,7 +758,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 +768,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 +799,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 +807,7 @@
*/
-PARROT_CANNOT_RETURN_NULL
-ENCODING *
+void
Parrot_encoding_utf8_init(PARROT_INTERP)
{
ASSERT_ARGS(Parrot_encoding_utf8_init)
@@ -1042,24 +818,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/include_dynpmc_makefile/src/string/encoding/utf8.h
==============================================================================
--- branches/include_dynpmc_makefile/src/string/encoding/utf8.h Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/encoding/utf8.h Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/string/primitives.c
==============================================================================
--- branches/include_dynpmc_makefile/src/string/primitives.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/string/primitives.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/src/sub.c
==============================================================================
--- branches/include_dynpmc_makefile/src/sub.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/sub.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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.
@@ -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))
@@ -570,6 +516,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 +529,7 @@
/* set context */
CURRENT_CONTEXT(interp) = to_ctx;
+ Parrot_pcc_set_signature(interp, to_ctx, sig);
}
@@ -631,10 +579,6 @@
F<include/parrot/sub.h>.
-=head1 HISTORY
-
-Initial version by Melvin on 2002/06/6.
-
=cut
*/
Modified: branches/include_dynpmc_makefile/src/thread.c
==============================================================================
--- branches/include_dynpmc_makefile/src/thread.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/thread.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
@@ -368,7 +361,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 +542,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);
@@ -777,10 +770,6 @@
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;
@@ -957,7 +946,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 +956,7 @@
*/
static int
-pt_gc_count_threads(PARROT_INTERP)
+pt_gc_count_threads(void)
{
ASSERT_ARGS(pt_gc_count_threads)
UINTVAL i;
@@ -1014,7 +1003,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 +1034,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 +1044,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 +1053,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);
@@ -1240,7 +1229,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;
@@ -1581,7 +1570,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 +1707,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 +1731,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/include_dynpmc_makefile/src/utils.c
==============================================================================
--- branches/include_dynpmc_makefile/src/utils.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/utils.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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;
}
@@ -990,12 +997,6 @@
=back
-=head1 HISTORY
-
-Initial version by leo 2003.09.09.
-
-=cut
-
*/
Modified: branches/include_dynpmc_makefile/src/vtables.c
==============================================================================
--- branches/include_dynpmc_makefile/src/vtables.c Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/src/vtables.c Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
Copied: branches/include_dynpmc_makefile/t/benchmark/.gitignore (from r45870, trunk/t/benchmark/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/benchmark/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/benchmark/.gitignore)
@@ -0,0 +1,2 @@
+/*.pasm
+/*.pir
Modified: branches/include_dynpmc_makefile/t/codingstd/c_function_docs.t
==============================================================================
--- branches/include_dynpmc_makefile/t/codingstd/c_function_docs.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/codingstd/c_function_docs.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/t/compilers/imcc/.gitignore (from r45870, trunk/t/compilers/imcc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/imcc/.gitignore)
@@ -0,0 +1 @@
+/*.pbc
Copied: branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/.gitignore (from r45870, trunk/t/compilers/imcc/imcpasm/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/imcc/imcpasm/.gitignore)
@@ -0,0 +1,4 @@
+/*_pbcexe
+/*.pbc
+/*.pir
+/*.pasm
Modified: branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/optc.t
==============================================================================
--- branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/optc.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/imcpasm/optc.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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:
-
Copied: branches/include_dynpmc_makefile/t/compilers/imcc/reg/.gitignore (from r45870, trunk/t/compilers/imcc/reg/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/reg/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/imcc/reg/.gitignore)
@@ -0,0 +1,4 @@
+/*_pbcexe*
+/*.pbc
+/*.pir
+/*.pasm
Copied: branches/include_dynpmc_makefile/t/compilers/imcc/syn/.gitignore (from r45870, trunk/t/compilers/imcc/syn/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/syn/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/imcc/syn/.gitignore)
@@ -0,0 +1,4 @@
+/*_pbcexe*
+/*.pasm
+/*.pbc
+/*.pir
Modified: branches/include_dynpmc_makefile/t/compilers/imcc/syn/file.t
==============================================================================
--- branches/include_dynpmc_makefile/t/compilers/imcc/syn/file.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/syn/file.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/include_dynpmc_makefile/t/compilers/imcc/syn/regressions.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/syn/regressions.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 KEYLEN.
+.end
+CODE
+/key too complex/
+OUT
+
# This test probably belongs in subflags.t
# The test inspired by TT #744, even though it presents differently.
{
Modified: branches/include_dynpmc_makefile/t/compilers/imcc/syn/subflags.t
==============================================================================
--- branches/include_dynpmc_makefile/t/compilers/imcc/syn/subflags.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/syn/subflags.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/compilers/imcc/syn/tail.t
==============================================================================
--- branches/include_dynpmc_makefile/t/compilers/imcc/syn/tail.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/compilers/imcc/syn/tail.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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, "
Copied: branches/include_dynpmc_makefile/t/compilers/json/.gitignore (from r45870, trunk/t/compilers/json/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/json/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/json/.gitignore)
@@ -0,0 +1,3 @@
+/*_pbcexe
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/t/compilers/pct/.gitignore (from r45870, trunk/t/compilers/pct/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/pct/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/pct/.gitignore)
@@ -0,0 +1,2 @@
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/t/compilers/pge/.gitignore (from r45870, trunk/t/compilers/pge/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/pge/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/pge/.gitignore)
@@ -0,0 +1,4 @@
+/*_pbcexe
+/*.pasm
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/t/compilers/pge/p5regex/.gitignore (from r45870, trunk/t/compilers/pge/p5regex/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/pge/p5regex/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/pge/p5regex/.gitignore)
@@ -0,0 +1 @@
+/*.pir
Copied: branches/include_dynpmc_makefile/t/compilers/pge/perl6regex/.gitignore (from r45870, trunk/t/compilers/pge/perl6regex/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/pge/perl6regex/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/pge/perl6regex/.gitignore)
@@ -0,0 +1,2 @@
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/t/compilers/tge/.gitignore (from r45870, trunk/t/compilers/tge/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/compilers/tge/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/compilers/tge/.gitignore)
@@ -0,0 +1,3 @@
+/*_pbcexe
+/*.pir
+/*.pbc
Modified: branches/include_dynpmc_makefile/t/distro/file_metadata.t
==============================================================================
--- branches/include_dynpmc_makefile/t/distro/file_metadata.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/distro/file_metadata.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 {
Copied: branches/include_dynpmc_makefile/t/dynoplibs/.gitignore (from r45870, trunk/t/dynoplibs/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/dynoplibs/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/dynoplibs/.gitignore)
@@ -0,0 +1,3 @@
+/*.pasm
+/*.pbc
+/*.pir
Copied: branches/include_dynpmc_makefile/t/dynpmc/.gitignore (from r45870, trunk/t/dynpmc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/dynpmc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/dynpmc/.gitignore)
@@ -0,0 +1,12 @@
+/*.pasm
+/*_pbcexe*
+/*.pbc
+/*.pir
+/md2.t
+/md4.t
+/md5.t
+/ripemd160.t
+/sha1.t
+/sha256.t
+/sha512.t
+/sha.t
Deleted: branches/include_dynpmc_makefile/t/dynpmc/gdbmhash.t
==============================================================================
--- branches/include_dynpmc_makefile/t/dynpmc/gdbmhash.t Wed Apr 21 23:40:50 2010 (r45875)
+++ /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:
Modified: branches/include_dynpmc_makefile/t/dynpmc/rational.t
==============================================================================
--- branches/include_dynpmc_makefile/t/dynpmc/rational.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/dynpmc/rational.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -26,7 +26,7 @@
$S0 = config_hash['gmp']
unless $S0 goto no_gmp
- plan(55)
+ plan(56)
goto gmp_tests
no_gmp:
@@ -76,7 +76,7 @@
test_neg()
test_abs()
test_cmp()
- #test_equal_tt1517()
+ test_equal_tt1517()
.end
.sub test_neg
Modified: branches/include_dynpmc_makefile/t/dynpmc/rotest.t
==============================================================================
--- branches/include_dynpmc_makefile/t/dynpmc/rotest.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/dynpmc/rotest.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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 ],
Copied: branches/include_dynpmc_makefile/t/examples/.gitignore (from r45870, trunk/t/examples/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/examples/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/examples/.gitignore)
@@ -0,0 +1,4 @@
+/*_pbcexe*
+/*.pasm
+/*.pbc
+/*.pir
Modified: branches/include_dynpmc_makefile/t/examples/tutorial.t
==============================================================================
--- branches/include_dynpmc_makefile/t/examples/tutorial.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/examples/tutorial.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/harness
==============================================================================
--- branches/include_dynpmc_makefile/t/harness Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/harness Wed Apr 21 23:40:50 2010 (r45876)
@@ -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);
Copied: branches/include_dynpmc_makefile/t/harness.pir (from r45870, trunk/t/harness.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/harness.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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:
Copied: branches/include_dynpmc_makefile/t/library/.gitignore (from r45870, trunk/t/library/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/library/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/library/.gitignore)
@@ -0,0 +1,5 @@
+/*_pbcexe*
+/*.out
+/*.pasm
+/*.pbc
+/*.pir
Modified: branches/include_dynpmc_makefile/t/library/getopt_obj.t
==============================================================================
--- branches/include_dynpmc_makefile/t/library/getopt_obj.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/library/getopt_obj.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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:
Copied: branches/include_dynpmc_makefile/t/library/osutils.t (from r45870, trunk/t/library/osutils.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/library/osutils.t Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/library/osutils.t)
@@ -0,0 +1,49 @@
+#!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(4)
+ test_basename()
+ test_dirname()
+.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
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/include_dynpmc_makefile/t/library/p6object.t
==============================================================================
--- branches/include_dynpmc_makefile/t/library/p6object.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/library/p6object.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -437,7 +437,7 @@
.namespace ['ABC']
-.sub 'foo' :method
+.sub 'foo' :method :nsentry('foo')
.return ('ABC::foo')
.end
Copied: branches/include_dynpmc_makefile/t/library/tap_parser.t (from r45870, trunk/t/library/tap_parser.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/library/tap_parser.t Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/t/library/test_builder_tester.t
==============================================================================
--- branches/include_dynpmc_makefile/t/library/test_builder_tester.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/library/test_builder_tester.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/library/test_more.t
==============================================================================
--- branches/include_dynpmc_makefile/t/library/test_more.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/library/test_more.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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' )
Copied: branches/include_dynpmc_makefile/t/native_pbc/.gitignore (from r45870, trunk/t/native_pbc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/native_pbc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/native_pbc/.gitignore)
@@ -0,0 +1 @@
+/*_pbcexe*
Modified: branches/include_dynpmc_makefile/t/native_pbc/annotations.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/include_dynpmc_makefile/t/native_pbc/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/include_dynpmc_makefile/t/native_pbc/number_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Modified: branches/include_dynpmc_makefile/t/native_pbc/string_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.
Copied: branches/include_dynpmc_makefile/t/oo/.gitignore (from r45870, trunk/t/oo/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/oo/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/oo/.gitignore)
@@ -0,0 +1,2 @@
+/*.pbc
+/*.pir
Modified: branches/include_dynpmc_makefile/t/oo/composition.t
==============================================================================
--- branches/include_dynpmc_makefile/t/oo/composition.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/oo/composition.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/oo/mro-c3.t
==============================================================================
--- branches/include_dynpmc_makefile/t/oo/mro-c3.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/oo/mro-c3.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/oo/proxy.t
==============================================================================
--- branches/include_dynpmc_makefile/t/oo/proxy.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/oo/proxy.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -93,7 +93,7 @@
.end
.namespace ['Complex']
-.sub 'Complex' :method
+.sub 'Complex' :method :nsentry('Complex')
.return (self)
.end
Copied: branches/include_dynpmc_makefile/t/op/.gitignore (from r45870, trunk/t/op/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/op/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/op/.gitignore)
@@ -0,0 +1,5 @@
+/*_pbcexe*
+/*.out
+/*.pasm
+/*.pbc
+/*.pir
Modified: branches/include_dynpmc_makefile/t/op/calling.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/calling.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/calling.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/op/exceptions.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/exceptions.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/exceptions.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/op/gc.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/gc.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/gc.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/op/interp.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/interp.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/interp.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Modified: branches/include_dynpmc_makefile/t/op/string.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/string.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/string.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -19,7 +19,7 @@
.sub main :main
.include 'test_more.pir'
- plan(412)
+ plan(399)
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()
@@ -40,6 +39,7 @@
five_arg_substr_w_rep_eq_length()
five_arg_substr_w_replacement_gt_length()
five_arg_substr_w_replacement_lt_length()
+ five_arg_substr_vs_hash()
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()
@@ -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()
@@ -237,20 +233,6 @@
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
@@ -292,10 +274,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
@@ -427,6 +405,18 @@
is( $S2, "", '' )
.end
+.sub five_arg_substr_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', 'substr behave it self')
+.end
+
.sub exception_five_arg_substr__offset_past_end_of_string
set $S0, "abcdefghijk"
set $S1, "xyz"
@@ -434,7 +424,7 @@
substr $S2, $S0, 12, 3, $S1
ok(0,"no exception")
handler:
- .exception_is( "Can only replace inside string or index after end of string" )
+ .exception_is( "Cannot take substr outside string" )
.end
.sub five_arg_substr_neg_offset_repl_eq_length
@@ -471,7 +461,7 @@
substr $S2, $S0, -12, 4, $S1
ok(0,"no exception")
handler:
- .exception_is( "Can only replace inside string or index after end of string" )
+ .exception_is( "Cannot take substr outside string" )
.end
.sub five_arg_substr_length_gt_strlen
@@ -495,9 +485,10 @@
.sub four_arg_replacement_only_substr
set $S0, "abcdefghijk"
set $S1, "xyz"
- substr $S0, 3, 3, $S1
- is( $S0, "abcxyzghijk", '' )
+ $S2 = replace $S0, 3, 3, $S1
+ is( $S0, "abcdefghijk", '' )
is( $S1, "xyz", '' )
+ is( $S2, "abcxyzghijk", '' )
.end
.sub three_arg_substr
@@ -1477,34 +1468,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,14 +1483,6 @@
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"
@@ -1768,25 +1723,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 +1801,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
Modified: branches/include_dynpmc_makefile/t/op/vivify.t
==============================================================================
--- branches/include_dynpmc_makefile/t/op/vivify.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/op/vivify.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Copied: branches/include_dynpmc_makefile/t/perl/.gitignore (from r45870, trunk/t/perl/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/perl/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/perl/.gitignore)
@@ -0,0 +1,2 @@
+/Parrot_Test_1.pasm
+/Parrot_Test_1.pir
Copied: branches/include_dynpmc_makefile/t/pmc/.gitignore (from r45870, trunk/t/pmc/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/pmc/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/pmc/.gitignore)
@@ -0,0 +1,5 @@
+/*_pbcexe*
+/*.pasm
+/*.pbc
+/*.pir
+/*.out
Modified: branches/include_dynpmc_makefile/t/pmc/callcontext.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/callcontext.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/callcontext.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,5 +1,5 @@
#! parrot
-# Copyright (C) 2006-2009, Parrot Foundation.
+# 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/include_dynpmc_makefile/t/pmc/class.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/class.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/class.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/context.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/context.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/context.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/continuation.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/continuation.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/continuation.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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:
Modified: branches/include_dynpmc_makefile/t/pmc/eval.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/eval.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/eval.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Modified: branches/include_dynpmc_makefile/t/pmc/exception-old.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/exception-old.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/exception-old.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -359,7 +359,7 @@
/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' );
@@ -448,6 +448,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
@@ -472,6 +480,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/include_dynpmc_makefile/t/pmc/fixedpmcarray.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/fixedpmcarray.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/fixedpmcarray.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/freeze.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/freeze.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/freeze.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/handle.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/handle.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/handle.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/multidispatch.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/multidispatch.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/multidispatch.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/namespace-old.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/namespace-old.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/namespace-old.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/namespace-subs.t (from r45870, trunk/t/pmc/namespace-subs.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/pmc/namespace-subs.t Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/t/pmc/nci.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/nci.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/nci.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/objects.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/objects.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/objects.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/parrotobject.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/parrotobject.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/parrotobject.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
# '
Modified: branches/include_dynpmc_makefile/t/pmc/pmcproxy.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/pmcproxy.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/pmcproxy.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
Deleted: branches/include_dynpmc_makefile/t/pmc/retcontinuation.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/retcontinuation.t Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/t/pmc/ro.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/ro.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/ro.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/pmc/string.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/string.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/string.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -27,7 +27,6 @@
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()
@@ -102,6 +101,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,16 +202,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"
@@ -1036,6 +1031,7 @@
# Set
s = new ['String']
+ s = ''
$S0 = 'f'
s[0] = $S0
@@ -1049,6 +1045,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/include_dynpmc_makefile/t/pmc/threads.t
==============================================================================
--- branches/include_dynpmc_makefile/t/pmc/threads.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/pmc/threads.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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';
Copied: branches/include_dynpmc_makefile/t/profiling/profiling.t (from r45870, trunk/t/profiling/profiling.t)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/profiling/profiling.t Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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
Copied: branches/include_dynpmc_makefile/t/src/.gitignore (from r45870, trunk/t/src/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/src/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/src/.gitignore)
@@ -0,0 +1 @@
+/*_*
Modified: branches/include_dynpmc_makefile/t/src/basic.t
==============================================================================
--- branches/include_dynpmc_makefile/t/src/basic.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/src/basic.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/src/embed.t
==============================================================================
--- branches/include_dynpmc_makefile/t/src/embed.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/src/embed.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -39,7 +39,7 @@
exit(EXIT_FAILURE);
}
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
{
Parrot_Interp interp;
interp = Parrot_new(NULL);
@@ -308,20 +308,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 +357,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -388,12 +388,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 +421,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 +447,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -479,12 +479,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 +512,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 +538,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 +570,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 +603,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 +628,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
@@ -660,12 +660,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 +693,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 +717,7 @@
}
int
-main(int margc, char *margv[])
+main(int margc, const char *margv[])
{
Parrot_Interp interp;
PackFile *pf;
Modified: branches/include_dynpmc_makefile/t/src/extend.t
==============================================================================
--- branches/include_dynpmc_makefile/t/src/extend.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/src/extend.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/src/warnings.t
==============================================================================
--- branches/include_dynpmc_makefile/t/src/warnings.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/src/warnings.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/steps/auto/arch-01.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/auto/arch-01.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/steps/auto/arch-01.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/steps/auto/crypto-01.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/auto/crypto-01.t Wed Apr 21 23:40:50 2010 (r45875)
+++ /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/include_dynpmc_makefile/t/steps/auto/gdbm-01.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/auto/gdbm-01.t Wed Apr 21 23:40:50 2010 (r45875)
+++ /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:
Modified: branches/include_dynpmc_makefile/t/steps/gen/platform-01.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/gen/platform-01.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/steps/gen/platform-01.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/steps/init/defaults-01.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/init/defaults-01.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/steps/init/defaults-01.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/t/steps/inter/progs-04.t
==============================================================================
--- branches/include_dynpmc_makefile/t/steps/inter/progs-04.t Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/t/steps/inter/progs-04.t Wed Apr 21 23:40:50 2010 (r45876)
@@ -56,7 +56,6 @@
linkflags
ldflags
libs
- cxx
|
)
{
Copied: branches/include_dynpmc_makefile/t/stress/.gitignore (from r45870, trunk/t/stress/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/stress/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/stress/.gitignore)
@@ -0,0 +1,5 @@
+/*_pbcexe*
+/*.pasm
+/*.pbc
+/*.pir
+/*.out
Copied: branches/include_dynpmc_makefile/t/tools/.gitignore (from r45870, trunk/t/tools/.gitignore)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/t/tools/.gitignore Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/t/tools/.gitignore)
@@ -0,0 +1,7 @@
+/*.pir
+/*.pbc
+/pmc2c.*.pmc
+/pmc2c.*.dump
+/pmc2c.*.h
+/pmc2c.*.c
+/pdb.t.*
Modified: branches/include_dynpmc_makefile/tools/build/headerizer.pl
==============================================================================
--- branches/include_dynpmc_makefile/tools/build/headerizer.pl Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/build/headerizer.pl Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/tools/dev/mk_inno.pl
==============================================================================
--- branches/include_dynpmc_makefile/tools/dev/mk_inno.pl Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/dev/mk_inno.pl Wed Apr 21 23:40:50 2010 (r45876)
@@ -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/include_dynpmc_makefile/tools/dev/mk_manifest_and_skip.pl
==============================================================================
--- branches/include_dynpmc_makefile/tools/dev/mk_manifest_and_skip.pl Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/dev/mk_manifest_and_skip.pl Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,6 +1,6 @@
-##! perl
+#! perl
# $Id$
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
use strict;
use warnings;
@@ -40,8 +40,7 @@
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.
+So far tested with svn 1.2.0 and svn 1.4.2.
This won't work for git-svn.
Modified: branches/include_dynpmc_makefile/tools/dev/nci_thunk_gen.pir
==============================================================================
--- branches/include_dynpmc_makefile/tools/dev/nci_thunk_gen.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/dev/nci_thunk_gen.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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
@@ -835,7 +833,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 +844,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 +882,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 +890,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 +898,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",
@@ -960,7 +958,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);'
Modified: branches/include_dynpmc_makefile/tools/dev/pbc_to_exe.pir
==============================================================================
--- branches/include_dynpmc_makefile/tools/dev/pbc_to_exe.pir Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/dev/pbc_to_exe.pir Wed Apr 21 23:40:50 2010 (r45876)
@@ -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,13 +239,13 @@
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:
goto read_loop
@@ -250,19 +253,19 @@
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 +310,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,14 +333,14 @@
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:
goto read_loop
@@ -342,21 +348,22 @@
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"
@@ -687,19 +694,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/include_dynpmc_makefile/tools/dev/tapir.pir (from r45870, trunk/tools/dev/tapir.pir)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/tools/dev/tapir.pir Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, 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/include_dynpmc_makefile/tools/docs/book-to-latex.pl (from r45870, trunk/tools/docs/book-to-latex.pl)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/tools/docs/book-to-latex.pl Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/tools/docs/book-to-latex.pl)
@@ -0,0 +1,34 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+
+use Pod::PseudoPod::LaTeX;
+
+print <<'HEADER';
+\documentclass[11pt,a4paper,oneside]{report}
+\usepackage{graphics,graphicx}
+\usepackage{colortbl}
+
+\begin{document}
+\tableofcontents
+HEADER
+
+for (@ARGV) {
+ my $parser = Pod::PseudoPod::LaTeX->new();
+ $parser->output_fh( *STDOUT );
+ $parser->parse_file( $_ );
+}
+
+print <<'FOOTER';
+\end{document}
+FOOTER
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Copied: branches/include_dynpmc_makefile/tools/docs/filename_and_chapter.pl (from r45870, trunk/tools/docs/filename_and_chapter.pl)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/include_dynpmc_makefile/tools/docs/filename_and_chapter.pl Wed Apr 21 23:40:50 2010 (r45876, copy of r45870, trunk/tools/docs/filename_and_chapter.pl)
@@ -0,0 +1,49 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+#
+# perl script that deliver all filenames and the associated chapters
+#
+
+use strict;
+use warnings;
+
+use Getopt::Long ();
+
+my $item_list_ref = [ ['intro.pod', 'Introduction to Parrot'],
+ ['overview.pod', 'Overview'],
+ ['submissions.pod', 'Submitting bug reports and patches'],
+ ];
+
+my $lang = @$item_list_ref;
+
+my ( $result, $give_out, $b_out);
+
+$result = Getopt::Long::GetOptions (
+ "print" => \$give_out,
+ "b_out" => \$b_out,
+);
+
+if ($give_out) {
+ for ( my $i=0; $i<$lang; $i++ )
+ { print $$item_list_ref[$i][0], ' ' }
+ exit;
+};
+
+if ($b_out) {
+ for ( my $i=0; $i<$lang; $i++ )
+ { print 'build/modified_pod/', $$item_list_ref[$i][0], ' ' }
+ exit;
+};
+
+
+for (my $i=0; $i<$lang; $i++)
+ { `sed -e '4,6c\=head0 $$item_list_ref[$i][1]' $$item_list_ref[$i][0] > build/modified_pod/$$item_list_ref[$i][0]` }
+
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/include_dynpmc_makefile/tools/util/release.json
==============================================================================
--- branches/include_dynpmc_makefile/tools/util/release.json Wed Apr 21 23:39:02 2010 (r45875)
+++ branches/include_dynpmc_makefile/tools/util/release.json Wed Apr 21 23:40:50 2010 (r45876)
@@ -1,9 +1,9 @@
{
- "release.version" : "2.2.0",
- "release.name" : "Like Clockwork",
+ "release.version" : "2.3.0",
+ "release.name" : "Samoan Lory",
"release.day" : "Tuesday",
- "release.date" : "16 March 2010",
- "release.nextdate" : "20 April 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/releases/devel/2.2.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