[svn:parrot] r44159 - in branches/rm_cflags: . compilers/data_json compilers/imcc compilers/json compilers/nqp compilers/pct compilers/pge compilers/tge config/auto config/auto/sizes config/gen config/gen/call_list config/gen/makefiles docs docs/book/draft docs/book/pct docs/dev docs/pdds docs/pdds/draft docs/project examples/embed examples/languages/abc examples/languages/squaak examples/nci examples/pge examples/pir examples/sdl ext/nqp-rx include/parrot lib/Parrot lib/Parrot/Configure/Step lib/Parrot/Pmc2c ports/cpan ports/cygwin ports/debian ports/fedora ports/mandriva ports/suse runtime/parrot/include runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Math runtime/parrot/library/Math/Random runtime/parrot/library/Test src src/call src/gc src/interp src/nci src/pmc src/runcore t/codingstd t/compilers/tge t/library t/oo t/pmc t/src t/steps/gen t/steps/init/hints tools/build tools/dev tools/util
coke at svn.parrot.org
coke at svn.parrot.org
Fri Feb 19 03:57:30 UTC 2010
Author: coke
Date: Fri Feb 19 03:57:19 2010
New Revision: 44159
URL: https://trac.parrot.org/parrot/changeset/44159
Log:
merge latest changes from trunk
Added:
branches/rm_cflags/src/nci/ (props changed)
- copied from r44158, trunk/src/nci/
branches/rm_cflags/tools/dev/mk_nci_thunks.pl
- copied unchanged from r44158, trunk/tools/dev/mk_nci_thunks.pl
Replaced:
branches/rm_cflags/src/nci/api.c
- copied unchanged from r44158, trunk/src/nci/api.c
branches/rm_cflags/src/nci/core_thunks.c
- copied unchanged from r44158, trunk/src/nci/core_thunks.c
branches/rm_cflags/src/nci/core_thunks.nci
- copied unchanged from r44158, trunk/src/nci/core_thunks.nci
branches/rm_cflags/src/nci/extra_thunks.c
- copied unchanged from r44158, trunk/src/nci/extra_thunks.c
branches/rm_cflags/src/nci/extra_thunks.nci
- copied unchanged from r44158, trunk/src/nci/extra_thunks.nci
Deleted:
branches/rm_cflags/config/gen/call_list/
branches/rm_cflags/config/gen/call_list.pm
branches/rm_cflags/runtime/parrot/library/Math/Random/mt19937ar.pir
branches/rm_cflags/t/library/mt19937ar.t
branches/rm_cflags/t/library/mt19937ar.txt
branches/rm_cflags/t/steps/gen/call_list-01.t
branches/rm_cflags/tools/build/nativecall.pl
Modified:
branches/rm_cflags/ (props changed)
branches/rm_cflags/CREDITS
branches/rm_cflags/Configure.pl
branches/rm_cflags/DEPRECATED.pod
branches/rm_cflags/MANIFEST
branches/rm_cflags/MANIFEST.SKIP
branches/rm_cflags/MANIFEST.generated
branches/rm_cflags/compilers/data_json/Rules.mak (props changed)
branches/rm_cflags/compilers/imcc/Rules.mak (props changed)
branches/rm_cflags/compilers/imcc/main.c
branches/rm_cflags/compilers/json/Rules.mak (props changed)
branches/rm_cflags/compilers/nqp/Rules.mak (props changed)
branches/rm_cflags/compilers/pct/Rules.mak (props changed)
branches/rm_cflags/compilers/pge/Rules.mak (props changed)
branches/rm_cflags/compilers/tge/Rules.mak (props changed)
branches/rm_cflags/config/auto/perldoc.pm
branches/rm_cflags/config/auto/sizes/intval_maxmin_c.in (props changed)
branches/rm_cflags/config/gen/makefiles/docs.in
branches/rm_cflags/config/gen/makefiles/root.in
branches/rm_cflags/config/gen/opengl.pm
branches/rm_cflags/docs/book/draft/README (props changed)
branches/rm_cflags/docs/book/draft/appa_glossary.pod (props changed)
branches/rm_cflags/docs/book/draft/appb_patch_submission.pod (props changed)
branches/rm_cflags/docs/book/draft/appc_command_line_options.pod (props changed)
branches/rm_cflags/docs/book/draft/appd_build_options.pod (props changed)
branches/rm_cflags/docs/book/draft/appe_source_code.pod (props changed)
branches/rm_cflags/docs/book/draft/ch01_introduction.pod (props changed)
branches/rm_cflags/docs/book/draft/ch02_getting_started.pod (props changed)
branches/rm_cflags/docs/book/draft/ch07_dynpmcs.pod (props changed)
branches/rm_cflags/docs/book/draft/ch08_dynops.pod (props changed)
branches/rm_cflags/docs/book/draft/ch10_opcode_reference.pod (props changed)
branches/rm_cflags/docs/book/draft/ch11_directive_reference.pod (props changed)
branches/rm_cflags/docs/book/draft/ch12_operator_reference.pod (props changed)
branches/rm_cflags/docs/book/draft/chXX_hlls.pod (props changed)
branches/rm_cflags/docs/book/draft/chXX_library.pod (props changed)
branches/rm_cflags/docs/book/draft/chXX_testing_and_debugging.pod (props changed)
branches/rm_cflags/docs/book/pct/ch01_introduction.pod (props changed)
branches/rm_cflags/docs/book/pct/ch02_getting_started.pod (props changed)
branches/rm_cflags/docs/book/pct/ch03_compiler_tools.pod (props changed)
branches/rm_cflags/docs/book/pct/ch04_pge.pod (props changed)
branches/rm_cflags/docs/book/pct/ch05_nqp.pod (props changed)
branches/rm_cflags/docs/dev/c_functions.pod (props changed)
branches/rm_cflags/docs/parrothist.pod
branches/rm_cflags/docs/pdds/draft/pdd06_pasm.pod
branches/rm_cflags/docs/pdds/pdd30_install.pod (props changed)
branches/rm_cflags/docs/project/release_manager_guide.pod
branches/rm_cflags/examples/embed/cotorra.c (props changed)
branches/rm_cflags/examples/languages/abc/ (props changed)
branches/rm_cflags/examples/languages/squaak/ (props changed)
branches/rm_cflags/examples/nci/QtHelloWorld.pasm
branches/rm_cflags/examples/nci/QtHelloWorld.pir
branches/rm_cflags/examples/pge/demo.pir (props changed)
branches/rm_cflags/examples/pir/make_hello_pbc.pir
branches/rm_cflags/examples/sdl/anim_image.pir
branches/rm_cflags/examples/sdl/bounce_parrot_logo.pir
branches/rm_cflags/examples/sdl/move_parrot_logo.pir
branches/rm_cflags/ext/nqp-rx/Rules.mak (props changed)
branches/rm_cflags/include/parrot/call.h (props changed)
branches/rm_cflags/include/parrot/debugger.h
branches/rm_cflags/include/parrot/gc_api.h (props changed)
branches/rm_cflags/include/parrot/nci.h
branches/rm_cflags/include/parrot/oo.h
branches/rm_cflags/include/parrot/runcore_api.h (props changed)
branches/rm_cflags/include/parrot/runcore_profiling.h (contents, props changed)
branches/rm_cflags/include/parrot/runcore_trace.h (props changed)
branches/rm_cflags/lib/Parrot/Configure/Step/List.pm
branches/rm_cflags/lib/Parrot/Configure/Step/Test.pm (props changed)
branches/rm_cflags/lib/Parrot/H2inc.pm (props changed)
branches/rm_cflags/lib/Parrot/Pmc2c/MethodEmitter.pm
branches/rm_cflags/lib/Parrot/Pmc2c/PMCEmitter.pm
branches/rm_cflags/ports/cpan/pause_guide.pod (props changed)
branches/rm_cflags/ports/cygwin/parrot-1.0.0-1.cygport (props changed)
branches/rm_cflags/ports/debian/libparrot-dev.install.in (props changed)
branches/rm_cflags/ports/debian/libparrot.install.in (props changed)
branches/rm_cflags/ports/debian/parrot-doc.install.in (props changed)
branches/rm_cflags/ports/debian/parrot.install.in (props changed)
branches/rm_cflags/ports/fedora/parrot.spec.fedora (props changed)
branches/rm_cflags/ports/mandriva/parrot.spec.mandriva (props changed)
branches/rm_cflags/ports/suse/parrot.spec.suse (props changed)
branches/rm_cflags/runtime/parrot/include/test_more.pir
branches/rm_cflags/runtime/parrot/languages/ (props changed)
branches/rm_cflags/runtime/parrot/library/Math/Rand.pir (props changed)
branches/rm_cflags/runtime/parrot/library/OpenGL.pir
branches/rm_cflags/runtime/parrot/library/Rules.mak (props changed)
branches/rm_cflags/runtime/parrot/library/SDL.pir
branches/rm_cflags/runtime/parrot/library/Test/More.pir
branches/rm_cflags/runtime/parrot/library/distutils.pir
branches/rm_cflags/src/ (props changed)
branches/rm_cflags/src/call/ops.c (props changed)
branches/rm_cflags/src/call/pcc.c (props changed)
branches/rm_cflags/src/debug.c
branches/rm_cflags/src/embed.c
branches/rm_cflags/src/gc/alloc_memory.c (props changed)
branches/rm_cflags/src/gc/alloc_resources.c (contents, props changed)
branches/rm_cflags/src/gc/api.c (props changed)
branches/rm_cflags/src/gc/gc_ms.c
branches/rm_cflags/src/gc/gc_private.h
branches/rm_cflags/src/gc/malloc.c (props changed)
branches/rm_cflags/src/gc/malloc_trace.c (props changed)
branches/rm_cflags/src/gc/mark_sweep.c (props changed)
branches/rm_cflags/src/gc/system.c (props changed)
branches/rm_cflags/src/interp/inter_cb.c (props changed)
branches/rm_cflags/src/interp/inter_create.c (contents, props changed)
branches/rm_cflags/src/interp/inter_misc.c (props changed)
branches/rm_cflags/src/main.c
branches/rm_cflags/src/nci_test.c
branches/rm_cflags/src/oo.c
branches/rm_cflags/src/pmc/namespace.pmc
branches/rm_cflags/src/pmc/opcode.pmc (contents, props changed)
branches/rm_cflags/src/pmc/oplib.pmc (contents, props changed)
branches/rm_cflags/src/runcore/cores.c (props changed)
branches/rm_cflags/src/runcore/main.c (props changed)
branches/rm_cflags/src/runcore/profiling.c (contents, props changed)
branches/rm_cflags/src/runcore/trace.c (props changed)
branches/rm_cflags/t/codingstd/linelength.t
branches/rm_cflags/t/codingstd/trailing_space.t
branches/rm_cflags/t/compilers/tge/NoneGrammar.tg (props changed)
branches/rm_cflags/t/library/test_more.t
branches/rm_cflags/t/oo/root_new.t (props changed)
branches/rm_cflags/t/pmc/namespace-old.t (props changed)
branches/rm_cflags/t/pmc/namespace.t
branches/rm_cflags/t/pmc/opcode.t (contents, props changed)
branches/rm_cflags/t/pmc/oplib.t (contents, props changed)
branches/rm_cflags/t/src/embed.t (props changed)
branches/rm_cflags/t/steps/init/hints/linux-01.t (props changed)
branches/rm_cflags/tools/build/h2inc.pl (props changed)
branches/rm_cflags/tools/build/nativecall.pir
branches/rm_cflags/tools/dev/fetch_languages.pl (props changed)
branches/rm_cflags/tools/dev/mk_gitignore.pl (props changed)
branches/rm_cflags/tools/util/perlcritic-cage.conf (props changed)
Modified: branches/rm_cflags/CREDITS
==============================================================================
--- branches/rm_cflags/CREDITS Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/CREDITS Fri Feb 19 03:57:19 2010 (r44159)
@@ -136,10 +136,12 @@
N: Austin Hastings
U: Austin
+U: Austin_Hastings
A: austin_hastings at yahoo.com
A: austin_h... at yahoo.com
E: austin_hastings at yahoo.com
D: Close
+D: Kakapo
N: Benjamin Goldberg
D: Numerous improvements and proposals.
@@ -328,6 +330,14 @@
D: POD for the Undef PMC
E: david.romano+p6i at gmail.com
+N: David E. Wheeler
+E: david at justatheory.com
+W: http://justatheory.com/
+U: theory
+A: theory
+A: David Wheeler
+S: Portland, OR
+
N: Dennis Rieks
D: Win32 config and build
Modified: branches/rm_cflags/Configure.pl
==============================================================================
--- branches/rm_cflags/Configure.pl Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/Configure.pl Fri Feb 19 03:57:19 2010 (r44159)
@@ -646,7 +646,6 @@
gen::core_pmcs
gen::crypto
gen::opengl
- gen::call_list
gen::makefiles
gen::platform
gen::config_pm
Modified: branches/rm_cflags/DEPRECATED.pod
==============================================================================
--- branches/rm_cflags/DEPRECATED.pod Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/DEPRECATED.pod Fri Feb 19 03:57:19 2010 (r44159)
@@ -52,16 +52,6 @@
L<https://trac.parrot.org/parrot/ticket/264>
-=item Use of undocumented variables in class_init [eligible in 2.1]
-
-The current implementation allows the class_init vtable function body to
-use local symbols from the generated part. For example, some PMC used
-to use the pass counter. In the future, the class_init body from the PMC
-file may not be inserted directly in the body of the generated one,
-so this usage will not be allowed.
-
-L<https://trac.parrot.org/parrot/ticket/918>
-
=item Overriding vtable invoke in PIR objects [experimental]
The VTABLE invoke in object.pmc puts SELF at the start of the
@@ -76,6 +66,22 @@
L<https://trac.parrot.org/parrot/ticket/1407>
+=item Digest dynpmcs [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.
+
+L<https://trac.parrot.org/parrot/ticket/1467>
+
+=item gdbmhash dynpmc [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.
+
+L<https://trac.parrot.org/parrot/ticket/1469>
+
=back
=head1 Opcodes
@@ -154,27 +160,6 @@
L<https://trac.parrot.org/parrot/ticket/906>
-=item named class/pmc lookup in pir syntax such as new, isa, subclass,
- get_class, etc [eligible in 1.1]
-
-Class PMC name resolution will be the following.
-
-if the arg is a STRING
- Relative to the current Namespace
-
-if the arg is a Array (of any sort) or Key
- Relative to the current HLL Namespace
-
-if the arg is a Namespace or Class PMC
- The passed in class or the class attached to the passed in namespace.
-
-L<https://trac.parrot.org/parrot/ticket/159>
-
-=item load or include paths prefixed with 'library/' or 'include/'
-[eligible in 1.5]
-
-L<https://trac.parrot.org/parrot/ticket/511>
-
=item continuation-based ExceptionHandlers [eligible in 2.1]
L<https://trac.parrot.org/parrot/ticket/1091>
@@ -204,9 +189,8 @@
=item C API coding standards cleanup [eligible in 1.1]
All C API functions that aren't currently named according to the
-'Parrot_<system>_*' scheme will be renamed. If you depend on these
-functions in an extending/embedding interface or C-level custom PMCs,
-check in 1.4 or 2.0 for the new names.
+'Parrot_<system>_*' scheme will be renamed. A list of renamed
+functions will be kept in the ticket at:
L<https://trac.parrot.org/parrot/ticket/443>
@@ -223,25 +207,7 @@
Parrot_gc_free_pmc_attributes
These items and related helper functions are added as experimental support
-for TT #895
-
-=item PDB_compile and PDB_eval [eligible in 2.1]
-
-The function PDB_compile doesn't work since some time, and his implementation
-was a hack. His functionality may be reimplemented in another way. Until the
-end of deprecation cycle it just throws an exception.
-
-The PDB_eval function, that used in the debugger to support the eval
-command, was using PDB_compile. His functionality must be reimplemented
-in another way and with a name that follows current conventions, in the
-meantime and until the end of the deprecation cycle it just shows a
-diagnostic message.
-
-L<https://trac.parrot.org/parrot/ticket/872>
-
-=item Parrot_oo_get_namespace [eligible in 2.1]
-
-L<https://trac.parrot.org/parrot/ticket/1069>
+for L<https://trac.parrot.org/parrot/ticket/895>
=item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
@@ -252,17 +218,6 @@
=head1 Compiler tools
-=head2 PASM1 compiler
-
-=over 4
-
-=item C<PASM1 compiler> [eligible in 2.1]
-
-See PDB_compile. Note that the current version of the C<PASM1> compiler
-issues a warning and is not functional. (However, it used to segfault.)
-
-=back
-
=head2 Parrot Grammar Engine (PGE)
=over 4
@@ -311,35 +266,20 @@
=back
-=head2 Not Quite Perl (NQP)
+=head1 Compilers
=over 4
-=item C< $(...) > syntax [eligible in 1.5]
-
-The C< $(...) > syntax for obtaining a result object from a Match
-object will no longer work. The new syntax is to invoke the
-C<.ast> method on the Match object.
+=item json [eligible in 2.4]
-L<https://trac.parrot.org/parrot/ticket/459>
+The json compiler was dupicated into data_json some time ago. If you're
+using json, just use data_json instead, it's the same code. See TT #1461.
-=item Quoted items [eligible in 1.5]
+=item nqp [eligible in 2.4]
-Double-quoted strings will interpret unescaped $-names
-as interpolated variables in the string. Bare slashes
-will introduce regular expressions. The C<< <foo bar> >>
-syntax will produce an array of strings instead of a single
-string.
+Replaced by ext/nqp-rx and parrot-nqp.
-L<https://trac.parrot.org/parrot/ticket/837>
-
-=item C<< PIR q:to:<xyz> >> inline PIR [eligible in 1.5]
-
-The C<< PIR q:to:<xyz> >> form of inline PIR in NQP scripts is
-deprecated. Use C< Q:PIR { ... } > or C< Q:PIR {{ ... }} >
-instead.
-
-L<https://trac.parrot.org/parrot/ticket/842>
+L<http://trac.parrot.org/parrot/ticket/1462>
=back
@@ -347,11 +287,12 @@
=over 4
-=item MT19937 [eligible in 2.1]
+=item PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1429>
-L<https://trac.parrot.org/parrot/ticket/1278> - latest version now hosted
-at L<http://github.com/fperrad/parrot-MT19937>. After 2.0, users will have
-to install via C<plumage>.
+A way to provide an equivalent of -L and -I parrot command line options
+to language that doesn't support it.
=item JSON, JSON, and Config;JSON [eligible in 1.5]
Modified: branches/rm_cflags/MANIFEST
==============================================================================
--- branches/rm_cflags/MANIFEST Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/MANIFEST Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Feb 9 02:55:36 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Feb 19 01:11:00 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -303,9 +303,6 @@
config/auto/va_ptr/test_c.in []
config/auto/warnings.pm []
config/auto/warnings/test_c.in []
-config/gen/call_list.pm []
-config/gen/call_list/core.in []
-config/gen/call_list/misc.in []
config/gen/config_h.pm []
config/gen/config_h/config_h.in []
config/gen/config_h/feature_h.in []
@@ -1232,7 +1229,6 @@
runtime/parrot/library/JSON.pir [library]
runtime/parrot/library/MIME/Base64.pir [library]
runtime/parrot/library/Math/Rand.pir [library]
-runtime/parrot/library/Math/Random/mt19937ar.pir [library]
runtime/parrot/library/NCI/Utils.pir [library]
runtime/parrot/library/OpenGL.pir [library]
runtime/parrot/library/OpenGL/Math.pir [library]
@@ -1371,6 +1367,11 @@
src/main.c []
src/misc.c []
src/multidispatch.c []
+src/nci/api.c []
+src/nci/core_thunks.c []
+src/nci/core_thunks.nci []
+src/nci/extra_thunks.c []
+src/nci/extra_thunks.nci []
src/nci_test.c []
src/oo.c []
src/ops/bit.ops []
@@ -1441,6 +1442,8 @@
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
@@ -1723,8 +1726,6 @@
t/library/iter.t [test]
t/library/md5.t [test]
t/library/mime_base64.t [test]
-t/library/mt19937ar.t [test]
-t/library/mt19937ar.txt [test]
t/library/p6object.t [test]
t/library/parrotlib.t [test]
t/library/pcre.t [test]
@@ -1915,6 +1916,8 @@
t/pmc/object-mro.t [test]
t/pmc/object.t [test]
t/pmc/objects.t [test]
+t/pmc/opcode.t [test]
+t/pmc/oplib.t [test]
t/pmc/orderedhash.t [test]
t/pmc/orderedhashiterator.t [test]
t/pmc/os.t [test]
@@ -2018,7 +2021,6 @@
t/steps/auto/thread-01.t [test]
t/steps/auto/va_ptr-01.t [test]
t/steps/auto/warnings-01.t [test]
-t/steps/gen/call_list-01.t [test]
t/steps/gen/config_h-01.t [test]
t/steps/gen/config_pm-01.t [test]
t/steps/gen/core_pmcs-01.t [test]
@@ -2132,7 +2134,6 @@
tools/build/h2inc.pl []
tools/build/headerizer.pl []
tools/build/nativecall.pir []
-tools/build/nativecall.pl []
tools/build/ops2c.pl [devel]
tools/build/ops2pm.pl []
tools/build/parrot_config_c.pl []
@@ -2164,6 +2165,7 @@
tools/dev/mk_language_shell.pl [devel]
tools/dev/mk_manifest_and_skip.pl []
tools/dev/mk_native_pbc []
+tools/dev/mk_nci_thunks.pl []
tools/dev/mk_rpm_manifests.pl []
tools/dev/nci_test_gen.pl []
tools/dev/nm.pl []
Modified: branches/rm_cflags/MANIFEST.SKIP
==============================================================================
--- branches/rm_cflags/MANIFEST.SKIP Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/MANIFEST.SKIP Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,6 +1,6 @@
# ex: set ro:
# $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Feb 8 05:37:36 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Feb 19 01:11:00 2010 UT
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -258,9 +258,6 @@
# generated from svn:ignore of 'compilers/tge/TGE/'
^compilers/tge/TGE/Parser\.pir$
^compilers/tge/TGE/Parser\.pir/
-# generated from svn:ignore of 'config/gen/call_list/'
-^config/gen/call_list/opengl\.in$
-^config/gen/call_list/opengl\.in/
# generated from svn:ignore of 'docs/'
^docs/.*\.tmp$
^docs/.*\.tmp/
@@ -632,8 +629,6 @@
^src/.*\.str/
^src/asmfun\..*$
^src/asmfun\..*/
-^src/call_list\.txt$
-^src/call_list\.txt/
^src/core_pmcs\.c$
^src/core_pmcs\.c/
^src/exec_cpu\.c$
@@ -648,6 +643,10 @@
^src/fingerprint\.c/
^src/glut_callbacks\.c$
^src/glut_callbacks\.c/
+^src/glut_nci_thunks\.c$
+^src/glut_nci_thunks\.c/
+^src/glut_nci_thunks\.nci$
+^src/glut_nci_thunks\.nci/
^src/install_config\.c$
^src/install_config\.c/
^src/jit_cpu\.c$
@@ -656,8 +655,6 @@
^src/jit_defs\.c/
^src/jit_emit\.h$
^src/jit_emit\.h/
-^src/nci\.c$
-^src/nci\.c/
^src/null_config\.c$
^src/null_config\.c/
^src/parrot_config\.c$
@@ -807,6 +804,13 @@
^src/io/.*\.obj/
^src/io/.*\.str$
^src/io/.*\.str/
+# generated from svn:ignore of 'src/nci/'
+^src/nci/.*\.o$
+^src/nci/.*\.o/
+^src/nci/.*\.obj$
+^src/nci/.*\.obj/
+^src/nci/.*\.str$
+^src/nci/.*\.str/
# generated from svn:ignore of 'src/ops/'
^src/ops/.*\.c$
^src/ops/.*\.c/
Modified: branches/rm_cflags/MANIFEST.generated
==============================================================================
--- branches/rm_cflags/MANIFEST.generated Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/MANIFEST.generated Fri Feb 19 03:57:19 2010 (r44159)
@@ -162,7 +162,6 @@
runtime/parrot/library/Iter.pbc [main]
runtime/parrot/library/JSON.pbc [main]
runtime/parrot/library/libpcre.pbc [main]
-runtime/parrot/library/Math/Random/mt19937ar.pbc [main]
runtime/parrot/library/Math/Rand.pbc [main]
runtime/parrot/library/MIME/Base64.pbc [main]
runtime/parrot/library/NCI/call_toolkit_init.pbc [main]
Modified: branches/rm_cflags/compilers/imcc/main.c
==============================================================================
--- branches/rm_cflags/compilers/imcc/main.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/compilers/imcc/main.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -164,8 +164,8 @@
/*
-=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, INTVAL
-*core)>
+=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
+Parrot_Run_core_t *core)>
Handle Parrot's command line for IMCC related option and set appropriate flags.
Modified: branches/rm_cflags/config/auto/perldoc.pm
==============================================================================
--- branches/rm_cflags/config/auto/perldoc.pm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/config/auto/perldoc.pm Fri Feb 19 03:57:19 2010 (r44159)
@@ -67,7 +67,7 @@
if ( $new_perldoc ) {
$TEMP_pod_build .= <<"END"
ops/$pod: ../src/ops/$ops
-\t\$(PERLDOC) -ud ops/$pod ../src/ops/$ops
+\t\$(PERLDOC_BIN) -ud ops/$pod ../src/ops/$ops
\t\$(CHMOD) 0644 ops/$pod
END
@@ -75,7 +75,7 @@
else {
$TEMP_pod_build .= <<"END"
ops/$pod: ../src/ops/$ops
-\t\$(PERLDOC) -u ../ops/$ops > ops/$pod
+\t\$(PERLDOC_BIN) -u ../ops/$ops > ops/$pod
\t\$(CHMOD) 0644 ../ops/$pod
END
Deleted: branches/rm_cflags/config/gen/call_list.pm
==============================================================================
--- branches/rm_cflags/config/gen/call_list.pm Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,81 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/gen/call_list.pm - Concatenate call_list.txt (NCI signatures) fragments
-
-=head1 DESCRIPTION
-
-Some portions of F<src/call_list.txt> (the NCI signature list) are generated,
-and others should only appear when certain features/libraries are enabled by
-Configure in previous steps. This step simply combines all fragments that
-appear in F<config/gen/call_list/> into the single C<src/call_list.txt> used
-by the main build.
-
-If a config step wishes to make its fragment optional, that step should only
-generate or copy its fragment to F<config/gen/call_list/> when the library is
-enabled.
-
-=cut
-
-package gen::call_list;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils '_slurp';
-
-
-sub _init {
- my $self = shift;
- my %data;
- $data{description} = q{Generate NCI signature list};
- $data{result} = q{};
- $data{fragment_files} = [ sort glob 'config/gen/call_list/*.in' ];
- return \%data;
-}
-
-my $text_file_coda = <<'CODA';
-# Local variables:
-# mode: text
-# buffer-read-only: t
-# End:
-CODA
-
-sub runstep {
- my ( $self, $conf ) = @_;
-
- my $combined_file = 'src/call_list.txt';
-
- open my $combined, '>', $combined_file
- or die "Could not open '$combined_file' for write: $!";
-
- # add read-only metadata for the generated file
- print {$combined} "# ex: set ro:\n";
-
- foreach my $fragment_file ( @{ $self->{fragment_files} } ) {
- my $fragment = _slurp($fragment_file);
- $fragment =~ s/^\s*\n//;
- $fragment =~ s/\s*$/\n\n/;
-
- print {$combined} $fragment;
- }
- print {$combined} $text_file_coda;
-
- $conf->append_configure_log($combined_file);
-
- return 1;
-}
-
-1;
-
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/rm_cflags/config/gen/makefiles/docs.in
==============================================================================
--- branches/rm_cflags/config/gen/makefiles/docs.in Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/config/gen/makefiles/docs.in Fri Feb 19 03:57:19 2010 (r44159)
@@ -8,7 +8,7 @@
TOUCH = @touch@
RM_F = @rm_f@
RM_RF = @rm_rf@
-PERLDOC = @perldoc@
+PERLDOC_BIN = @perldoc@
VERSION = @VERSION@@DEVEL@
# long list of .pod files
@@ -41,8 +41,8 @@
$(TOUCH) doc-prep
packfile-c.pod: ../src/packfile.c
-#IF(new_perldoc): $(PERLDOC) -ud packfile-c.pod ../src/packfile.c
-#ELSE: $(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+#IF(new_perldoc): $(PERLDOC_BIN) -ud packfile-c.pod ../src/packfile.c
+#ELSE: $(PERLDOC_BIN) -u ../src/packfile.c > packfile-c.pod
clean:
$(RM_F) packfile-c.pod $(POD) doc-prep
Modified: branches/rm_cflags/config/gen/makefiles/root.in
==============================================================================
--- branches/rm_cflags/config/gen/makefiles/root.in Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/config/gen/makefiles/root.in Fri Feb 19 03:57:19 2010 (r44159)
@@ -159,7 +159,7 @@
$(LIBRARY_DIR)/config.pir \
src/platform.c \
#IF(platform_asm): src/platform_asm.s \
-#IF(has_opengl): config/gen/call_list/opengl.in \
+#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 \
@@ -227,10 +227,11 @@
$(GEN_MAKEFILES) \
ext/Parrot-Embed/Makefile.PL \
myconfig \
- src/call_list.txt \
MANIFEST.configure.generated \
.configure_trace.sto \
.parrot_current_rev \
+#IF(has_opengl): runtime/parrot/include/opengl_defines.pasm \
+#IF(has_opengl): runtime/parrot/library/OpenGL_funcs.pir \
runtime/parrot/include/signal.pasm
@@ -257,6 +258,7 @@
GEN_SOURCES = \
src/core_ops.c \
src/nci.c \
+ src/glut_nci_thunks.c \
src/core_ops_switch.c \
src/parrot_config.c \
src/null_config.c \
@@ -283,7 +285,6 @@
$(LIBRARY_DIR)/Iter.pbc \
$(LIBRARY_DIR)/JSON.pbc \
$(LIBRARY_DIR)/data_json.pbc \
- $(LIBRARY_DIR)/Math/Random/mt19937ar.pbc \
$(LIBRARY_DIR)/Math/Rand.pbc \
$(LIBRARY_DIR)/MIME/Base64.pbc \
$(LIBRARY_DIR)/NCI/Utils.pbc \
@@ -292,8 +293,6 @@
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL.pbc \
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL_funcs.pbc \
#IF(has_opengl): $(LIBRARY_DIR)/OpenGL/Math.pbc \
-#IF(has_opengl): runtime/parrot/include/opengl_defines.pasm \
-#IF(has_opengl): runtime/parrot/library/OpenGL_funcs.pir \
$(LIBRARY_DIR)/P6object.pbc \
$(LIBRARY_DIR)/parrotlib.pbc \
$(LIBRARY_DIR)/pcore.pbc \
@@ -478,7 +477,9 @@
src/misc$(O) \
src/multidispatch$(O) \
src/frame_builder$(O) \
- src/nci$(O) \
+ src/nci/api$(O) \
+ src/nci/core_thunks$(O) \
+ src/nci/extra_thunks$(O) \
src/oo$(O) \
src/packfile$(O) \
src/packout$(O) \
@@ -643,7 +644,9 @@
src/library.str \
src/multidispatch.str \
src/frame_builder.str \
- src/nci.str \
+ src/nci/api.str \
+ src/nci/core_thunks.str \
+ src/nci/extra_thunks.str \
src/packfile.str \
src/pmc.str \
src/pmc_freeze.str \
@@ -1372,12 +1375,20 @@
src/exit$(O) : $(PARROT_H_HEADERS)
-src/nci$(O) : src/nci.str \
- $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
- src/frame_builder.h \
- include/pmc/pmc_managedstruct.h \
- include/pmc/pmc_nci.h \
- include/pmc/pmc_pointer.h
+src/nci/api$(O) : src/nci/api.str \
+ $(PARROT_H_HEADERS) \
+ include/pmc/pmc_unmanagedstruct.h \
+ include/pmc/pmc_nci.h
+
+src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+ $(PARROT_H_HEADERS) \
+ include/pmc/pmc_unmanagedstruct.h \
+ include/pmc/pmc_nci.h
+
+src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+ $(PARROT_H_HEADERS) \
+ include/pmc/pmc_unmanagedstruct.h \
+ include/pmc/pmc_nci.h
src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
include/pmc/pmc_fixedintegerarray.h \
@@ -1390,10 +1401,6 @@
src/gc/system$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
src/gc/gc_private.h : $(INC_DIR)/settings.h
-src/nci.c : src/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
- include/pmc/pmc_nci.h
- $(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl src/call_list.txt
-
src/warnings$(O) : $(PARROT_H_HEADERS)
src/misc$(O) : $(PARROT_H_HEADERS)
@@ -1836,6 +1843,7 @@
src/nci_test$(O) \
$(LIBNCI_TEST_SO) \
src/glut_callbacks$(O) \
+ src/glut_nci_thunks$(O) \
$(LIBGLUTCB_SO) \
install_config.fpmc
$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl --init
@@ -2403,9 +2411,18 @@
# for use by runtime/parrot/library/OpenGL.pir
src/glut_callbacks$(O): $(GENERAL_H_FILES)
-$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O)
+src/glut_nci_thunks.c: $(PARROT) runtime/parrot/library/data_json.pbc tools/build/nativecall.pir
+ $(PARROT) tools/build/nativecall.pir \
+ --loader-name=Parrot_glut_nci_loader \
+ --loader-storage-class=PARROT_DYNEXT_EXPORT \
+ --output=src/glut_nci_thunks.c \
+ <src/glut_nci_thunks.nci
+
+src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
+
+$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O) src/glut_nci_thunks$(O)
$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
- @ld_out@$@ src/glut_callbacks$(O) \
+ @ld_out@$@ src/glut_callbacks$(O) src/glut_nci_thunks$(O) \
$(ALL_PARROT_LIBS) @opengl_lib@
# emacs etags
Modified: branches/rm_cflags/config/gen/opengl.pm
==============================================================================
--- branches/rm_cflags/config/gen/opengl.pm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/config/gen/opengl.pm Fri Feb 19 03:57:19 2010 (r44159)
@@ -15,7 +15,7 @@
=item F<runtime/parrot/library/OpenGL_funcs.pir>
-=item F<config/gen/call_list/opengl.in>
+=item F<src/glut_nci_thunks.nci>
=item F<src/glut_callbacks.c>
@@ -436,7 +436,7 @@
my $MACRO_FILE = 'runtime/parrot/include/opengl_defines.pasm';
my $FUNCS_FILE = 'runtime/parrot/library/OpenGL_funcs.pir';
-my $SIGS_FILE = 'config/gen/call_list/opengl.in';
+my $SIGS_FILE = 'src/glut_nci_thunks.nci';
my $C_FILE = 'src/glut_callbacks.c';
@@ -812,6 +812,8 @@
.sub _glutcb_func_list
.local pmc glutcb_funcs
glutcb_funcs = new 'ResizableStringArray'
+ push glutcb_funcs, 'Parrot_glut_nci_loader'
+ push glutcb_funcs, 'vJ'
push glutcb_funcs, 'glutcbCloseFunc'
push glutcb_funcs, 'vJP'
push glutcb_funcs, 'glutcbDisplayFunc'
Modified: branches/rm_cflags/docs/parrothist.pod
==============================================================================
--- branches/rm_cflags/docs/parrothist.pod Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/docs/parrothist.pod Fri Feb 19 03:57:19 2010 (r44159)
@@ -103,5 +103,5 @@
Gerd 1.9.0 2009-Dec-15 "Blue-fronted Amazon"
chromatic 2.0.0 * 2010-Jan-19 "Inevitable"
- darbelo 2.1.0 2010-Feb-26 "As Scheduled"
+ darbelo 2.1.0 2010-Feb-16 "As Scheduled"
=cut
Modified: branches/rm_cflags/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/rm_cflags/docs/pdds/draft/pdd06_pasm.pod Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/docs/pdds/draft/pdd06_pasm.pod Fri Feb 19 03:57:19 2010 (r44159)
@@ -989,8 +989,7 @@
"Perl5", "Perl6", "Perl5RE", "Perl6RE", "Python", "Ruby"... you get the
picture.
-Parrot knows of a "PASM1" compiler, i.e. a one statement PASM compiler
-implemented as PDB_eval. Imcc registers "PASM" and "PIR" compilers.
+Imcc registers "PASM" and "PIR" compilers automatically.
This is a high-level op, with the assumption that the resulting sub will be
called. It's the equivalent of perl 5's string eval, except for the actual
Modified: branches/rm_cflags/docs/project/release_manager_guide.pod
==============================================================================
--- branches/rm_cflags/docs/project/release_manager_guide.pod Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/docs/project/release_manager_guide.pod Fri Feb 19 03:57:19 2010 (r44159)
@@ -393,9 +393,11 @@
visible at
L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
- - Feb 16, 2010 - 2.1 - darbelo
- - Mar 16, 2010 - 2.2 - cotto
- - Apr 20, 2010 - 2.3* - gerd
+ - Mar 16, 2010 - 2.2 - cotto
+ - Apr 20, 2010 - 2.3* - gerd
+ - May 18, 2010 - 2.4 - whiteknight
+ - Jun 15, 2010 - 2.5 - ??
+ - Jul 20, 2010 - 2.6* - coke
=cut
Modified: branches/rm_cflags/examples/nci/QtHelloWorld.pasm
==============================================================================
--- branches/rm_cflags/examples/nci/QtHelloWorld.pasm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/nci/QtHelloWorld.pasm Fri Feb 19 03:57:19 2010 (r44159)
@@ -21,7 +21,8 @@
Note that this will either need JIT for building the NCI-functions on
the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
=cut
Modified: branches/rm_cflags/examples/nci/QtHelloWorld.pir
==============================================================================
--- branches/rm_cflags/examples/nci/QtHelloWorld.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/nci/QtHelloWorld.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -21,7 +21,8 @@
Note that this will either need JIT for building the NCI-functions on
the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
=cut
.sub main
Modified: branches/rm_cflags/examples/pir/make_hello_pbc.pir
==============================================================================
--- branches/rm_cflags/examples/pir/make_hello_pbc.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/pir/make_hello_pbc.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -2,7 +2,7 @@
#$Id$
# Sample creating of "Hello World" program using Packfile PMCs.
.sub 'main'
- .local pmc pf, pfdir, pffixup, pfbc, pfconst
+ .local pmc pf, pfdir, pffixup, pfbc, pfconst, oplib
# Hello World is something like
# .sub 'hello'
@@ -40,15 +40,19 @@
# Generate bytecode
pfbc = new 'PackfileRawSegment'
+ oplib = new 'OpLib'
- # There is our function
- pfbc[0] = 0x1d1 # say_sc
+ # Here is our function
+ $I0 = oplib['say_sc']
+ pfbc[0] = $I0
pfbc[1] = 0x002 # constant id.
- pfbc[2] = 0x026 # set_return_pc
+ $I0 = oplib['set_returns_pc']
+ pfbc[2] = $I0
pfbc[3] = 0x001 # id of FIA
- pfbc[4] = 0x020 # returncc
+ $I0 = oplib['returncc']
+ pfbc[4] = $I0
# Store bytecode
pfdir['BYTECODE_hello.pir'] = pfbc
Modified: branches/rm_cflags/examples/sdl/anim_image.pir
==============================================================================
--- branches/rm_cflags/examples/sdl/anim_image.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/sdl/anim_image.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -96,7 +96,7 @@
.local pmc rect
.local pmc rect_array
- rect_array = new 'Array'
+ rect_array = new 'ResizablePMCArray'
set rect_array, 2
_loop:
Modified: branches/rm_cflags/examples/sdl/bounce_parrot_logo.pir
==============================================================================
--- branches/rm_cflags/examples/sdl/bounce_parrot_logo.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/sdl/bounce_parrot_logo.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -176,7 +176,7 @@
.local pmc prev_rect
.local pmc rect
.local pmc rect_array
- rect_array = new 'Array'
+ rect_array = new 'ResizablePMCArray'
set rect_array, 2
(prev_rect, rect) = sprite.'draw_undraw'( screen )
Modified: branches/rm_cflags/examples/sdl/move_parrot_logo.pir
==============================================================================
--- branches/rm_cflags/examples/sdl/move_parrot_logo.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/examples/sdl/move_parrot_logo.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -91,7 +91,7 @@
.local pmc prev_rect
.local pmc rect
.local pmc rect_array
- rect_array = new 'Array'
+ rect_array = new 'ResizablePMCArray'
set rect_array, 2
(prev_rect, rect) = sprite.'draw_undraw'( screen )
Modified: branches/rm_cflags/include/parrot/debugger.h
==============================================================================
--- branches/rm_cflags/include/parrot/debugger.h Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/include/parrot/debugger.h Fri Feb 19 03:57:19 2010 (r44159)
@@ -240,11 +240,6 @@
__attribute__nonnull__(2);
PARROT_CAN_RETURN_NULL
-opcode_t * PDB_compile(PARROT_INTERP, ARGIN(const char *command))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
PDB_condition_t * PDB_cond(PARROT_INTERP, ARGIN(const char *command))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -391,9 +386,6 @@
#define ASSERT_ARGS_PDB_check_condition __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(condition))
-#define ASSERT_ARGS_PDB_compile __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(command))
#define ASSERT_ARGS_PDB_cond __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(command))
Modified: branches/rm_cflags/include/parrot/nci.h
==============================================================================
--- branches/rm_cflags/include/parrot/nci.h Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/include/parrot/nci.h Fri Feb 19 03:57:19 2010 (r44159)
@@ -17,6 +17,10 @@
void *build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), NOTNULL(int *jitted));
+void Parrot_nci_load_core_thunks(PARROT_INTERP);
+
+void Parrot_nci_load_extra_thunks(PARROT_INTERP);
+
#endif /* PARROT_NCI_H_GUARD */
/*
Modified: branches/rm_cflags/include/parrot/oo.h
==============================================================================
--- branches/rm_cflags/include/parrot/oo.h Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/include/parrot/oo.h Fri Feb 19 03:57:19 2010 (r44159)
@@ -164,11 +164,6 @@
PARROT_CAN_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
-PMC * Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
- __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
PMC * Parrot_oo_newclass_from_str(PARROT_INTERP, ARGIN(STRING *name))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -235,8 +230,6 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(self) \
, PARROT_ASSERT_ARG(ns))
-#define ASSERT_ARGS_Parrot_oo_get_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(classobj))
#define ASSERT_ARGS_Parrot_oo_newclass_from_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(name))
Modified: branches/rm_cflags/include/parrot/runcore_profiling.h
==============================================================================
--- branches/rm_cflags/include/parrot/runcore_profiling.h Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/include/parrot/runcore_profiling.h Fri Feb 19 03:57:19 2010 (r44159)
@@ -40,7 +40,7 @@
PPROF_LINE_END_OF_RUNLOOP
} Parrot_profiling_line;
-typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN_NULLOK(Parrot_profiling_line));
+typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN(PPROF_DATA*), ARGIN_NULLOK(Parrot_profiling_line));
typedef profiling_output_fn Parrot_profiling_output_fn;
typedef enum Parrot_profiling_datatype {
@@ -92,7 +92,6 @@
UINTVAL time_size; /* how big is the following array */
UHUGEINTVAL *time; /* time spent between DO_OP and start/end of a runcore */
Hash *line_cache; /* hash for caching pc -> line mapping */
- PPROF_DATA pprof_data[PPROF_DATA_MAX+1]; /* array for storage of one line of profiling data */
};
#define Profiling_flag_SET(runcore, flag) \
Modified: branches/rm_cflags/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/rm_cflags/lib/Parrot/Configure/Step/List.pm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/lib/Parrot/Configure/Step/List.pm Fri Feb 19 03:57:19 2010 (r44159)
@@ -67,7 +67,6 @@
gen::core_pmcs
gen::crypto
gen::opengl
- gen::call_list
gen::makefiles
gen::platform
gen::config_pm
Modified: branches/rm_cflags/lib/Parrot/Pmc2c/MethodEmitter.pm
==============================================================================
--- branches/rm_cflags/lib/Parrot/Pmc2c/MethodEmitter.pm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/lib/Parrot/Pmc2c/MethodEmitter.pm Fri Feb 19 03:57:19 2010 (r44159)
@@ -115,58 +115,6 @@
EOC
}
-=item C<proto($type,$parameters)>
-
-Determines the prototype (argument signature) for a method body
-(see F<src/call_list>).
-
-=cut
-
-my %calltype = (
- 'char' => 'c',
- 'short' => 's',
- 'char' => 'c',
- 'short' => 's',
- 'int' => 'i',
- 'INTVAL' => 'I',
- 'float' => 'f',
- 'FLOATVAL' => 'N',
- 'double' => 'd',
- 'STRING*' => 'S',
- 'STRING *' => 'S',
- 'char*' => 't',
- 'char *' => 't',
- 'PMC*' => 'P',
- 'PMC *' => 'P',
- 'short*' => '2',
- 'short *' => '2',
- 'int*' => '3',
- 'int *' => '3',
- 'long*' => '4',
- 'long *' => '4',
- 'void' => 'v',
- 'void*' => 'b',
- 'void *' => 'b',
- 'void**' => 'B',
- 'void **' => 'B',
-);
-
-sub proto {
- my ( $type, $parameters ) = @_;
-
- # reduce to a comma separated set of types
- $parameters =~ s/\w+(,|$)/,/g;
- $parameters =~ s/ //g;
-
- # type method(interp, self, parameters...)
- my $ret = $calltype{ $type or "void" };
- $ret .= "JO" . join( '',
- map { $calltype{$_} or die "Unknown signature type '$_'" }
- split( /,/, $parameters ) );
-
- return $ret;
-}
-
=item C<rewrite_nci_method($self, $pmc )>
Rewrites the method body performing the various macro substitutions for
Modified: branches/rm_cflags/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/rm_cflags/lib/Parrot/Pmc2c/PMCEmitter.pm Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/lib/Parrot/Pmc2c/PMCEmitter.pm Fri Feb 19 03:57:19 2010 (r44159)
@@ -251,54 +251,6 @@
unless $self->is_dynamic;
}
-=item C<proto($type,$parameters)>
-
-Determines the prototype (argument signature) for a method body
-(see F<src/call_list>).
-
-=cut
-
-my %calltype = (
- "char" => "c",
- "short" => "s",
- "char" => "c",
- "short" => "s",
- "int" => "i",
- "INTVAL" => "I",
- "float" => "f",
- "FLOATVAL" => "N",
- "double" => "d",
- "STRING*" => "S",
- "char*" => "t",
- "PMC*" => "P",
- "short*" => "2",
- "int*" => "3",
- "long*" => "4",
- "void" => "v",
- "void*" => "b",
- "void**" => "B",
-);
-
-sub proto {
- my ( $type, $parameters ) = @_;
-
- # reduce to a comma separated set of types
- $parameters =~ s/\w+(,|$)/,/g;
- $parameters =~ s/ //g;
-
- # flatten whitespace before "*" in return value
- $type =~ s/\s+\*$/\*/ if defined $type;
-
- # type method(interp, self, parameters...)
- my $ret = $calltype{ $type or "void" }
- . "JO"
- . join( '',
- map { $calltype{$_} or die "Unknown signature type '$_'" }
- split( /,/, $parameters ) );
-
- return $ret;
-}
-
=item C<pre_method_gen>
Generate switch-bases VTABLE for MULTI
Modified: branches/rm_cflags/runtime/parrot/include/test_more.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/include/test_more.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/runtime/parrot/include/test_more.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -20,7 +20,7 @@
.local pmc exports, curr_namespace, test_namespace
curr_namespace = get_namespace
test_namespace = get_root_namespace [ 'parrot'; 'Test'; 'More' ]
- exports = split ' ', 'plan diag ok nok is is_deeply like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
+ exports = split ' ', 'plan diag ok nok is is_deeply is_null like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
test_namespace.'export_to'(curr_namespace, exports)
Deleted: branches/rm_cflags/runtime/parrot/library/Math/Random/mt19937ar.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/library/Math/Random/mt19937ar.pir Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,379 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Math/Random/mt19937ar.pir - the Mersenne Twisted pseudorandom number generator
-
-=head1 DESCRIPTION
-
-This is a PIR version of the C-program for MT19937.
-
-The MT19937 algorithm was created by Makoto Matsumoto and Takuji Nishimura.
-
-See L<http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html> and
-L<http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html>.
-
-=cut
-
-.namespace [ 'Math'; 'Random'; 'MT' ]
-
-.sub '__onload' :anon :load
-# print "__onload Math::Random::MT\n"
- $P0 = newclass ['Math'; 'Random'; 'MT']
- addattribute $P0, '@mt'
- addattribute $P0, '$mti'
- addattribute $P0, '@mag01'
-.end
-
-.const int N = 624
-.const int M = 397
-.const int MATRIX_A = 0x9908b0df
-.const int UPPER_MASK = 0x80000000
-.const int LOWER_MASK = 0x7fffffff
-
-.sub 'init' :vtable :method
- new $P0, 'Integer'
- set $P0, N
- inc $P0 # $mti == N+1 means @mt is not initialized
- setattribute self, '$mti', $P0
- new $P0, 'FixedIntegerArray'
- set $P0, N
- setattribute self, '@mt', $P0
- new $P0, 'FixedIntegerArray'
- set $P0, 2
- $P0[0] = 0
- $P0[1] = MATRIX_A
- setattribute self, '@mag01', $P0
-.end
-
-
-.sub 'clone' :vtable :method
- .local pmc res
- res = new [ 'Math'; 'Random'; 'MT' ]
- $P0 = getattribute self, '$mti'
- $P1 = clone $P0
- setattribute res, '$mti', $P1
- $P0 = getattribute self, '@mt'
- $P1 = clone $P0
- setattribute res, '@mt', $P1
- .return (res)
-.end
-
-
-=head2 Initialization
-
-=over 4
-
-=item C<init_genrand (seed)>
-
-initializes the state vector by using one "seed", which may be zero.
-
-=cut
-
-.sub 'init_genrand' :method
- .param int seed
- .local pmc mt
- .local int i
- mt = getattribute self, '@mt'
- seed &= 0xffffffff
- mt[0] = seed
- $I1 = seed
- i = 1
- L1:
- unless i < N goto L2
- $I0 = $I1 >>> 30
- bxor $I0, $I1
- $I0 *= 1812433253
- $I0 += i
- $I0 &= 0xffffffff
- mt[i] = $I0
- $I1 = $I0
- inc i
- goto L1
- L2:
- .local pmc mti
- mti = getattribute self, '$mti'
- set mti, i
-.end
-
-
-=item C<init_by_array (init_key)>
-
-initializes the state vector by using an array.
-
-=cut
-
-.sub 'init_by_array' :method
- .param pmc init_key
- .local pmc mt
- mt = getattribute self, '@mt'
- .local int i, j, k, key_length
- self.'init_genrand'(19650218)
- i = 1
- j = 0
- key_length = elements init_key
- k = key_length
- unless N > k goto L0
- k = N
- L0:
- L1:
- unless k goto L2
- $I0 = i - 1
- $I1 = mt[$I0]
- $I2 = $I1 >>> 30
- bxor $I2, $I1
- $I2 *= 1664525
- $I1 = mt[i]
- bxor $I1, $I2
- $I2 = init_key[j]
- $I1 += $I2
- $I1 += j
- $I1 &= 0xffffffff
- mt[i] = $I1
- inc i
- inc j
- unless i >= N goto L3
- $I0 = N - 1
- $I1 = mt[$I0]
- mt[0] = $I1
- i = 1
- L3:
- unless j >= key_length goto L4
- j = 0
- L4:
- dec k
- goto L1
- L2:
- k = N - 1
- L5:
- unless k goto L6
- $I0 = i - 1
- $I1 = mt[$I0]
- $I2 = $I1 >>> 30
- bxor $I2, $I1
- $I2 *= 1566083941
- $I1 = mt[i]
- bxor $I1, $I2
- $I1 -= i
- $I1 &= 0xffffffff
- mt[i] = $I1
- inc i
- unless i >= N goto L7
- $I0 = N - 1
- $I1 = mt[$I0]
- mt[0] = $I1
- i = 1
- L7:
- dec k
- goto L5
- L6:
- mt[0] = 0x80000000
- $I1 = mt[0]
-.end
-
-=back
-
-=head2 Generation
-
-After initialization, the following type of pseudorandom numbers are available.
-
-=over 4
-
-=item C<genrand_int32 ()>
-
-generates a random number on [0,0xffffffff]-interval
-
-=cut
-
-.sub 'genrand_int32' :method
- .local int y
- .local pmc mt
- mt = getattribute self, '@mt'
- .local pmc mti
- mti = getattribute self, '$mti'
- .local pmc mag01
- mag01 = getattribute self, '@mag01'
- unless mti >= N goto L1 # generate N words at one time
- $I0 = N + 1
- unless mti == $I0 goto L2 # if init_genrand() has not been called
- self.'init_genrand'(5489) # a default seed is used
- L2:
- .local int kk
- kk = 0
- L3:
- $I0 = N - M
- unless kk < $I0 goto L4
- $I0 = kk
- $I1 = mt[$I0]
- $I1 &= UPPER_MASK
- $I0 = kk + 1
- $I2 = mt[$I0]
- $I2 &= LOWER_MASK
- y = $I1 | $I2
- $I0 = kk + M
- $I1 = mt[$I0]
- $I2 = y >>> 1
- bxor $I1, $I2
- $I0 = y & 1
- $I2 = mag01[$I0]
- bxor $I1, $I2
- mt[kk] = $I1
- inc kk
- goto L3
- L4:
- $I0 = N - 1
- unless kk < $I0 goto L5
- $I0 = kk
- $I1 = mt[$I0]
- $I1 &= UPPER_MASK
- $I0 = kk + 1
- $I2 = mt[$I0]
- $I2 &= LOWER_MASK
- y = $I1 | $I2
- $I0 = M - N
- $I0 += kk
- $I1 = mt[$I0]
- $I2 = y >>> 1
- bxor $I1, $I2
- $I0 = y & 1
- $I2 = mag01[$I0]
- bxor $I1, $I2
- mt[kk] = $I1
- inc kk
- goto L4
- L5:
- $I0 = N - 1
- $I1 = mt[$I0]
- $I1 &= UPPER_MASK
- $I0 = 0
- $I2 = mt[$I0]
- $I2 &= LOWER_MASK
- y = $I1 | $I2
- $I0 = M - 1
- $I1 = mt[$I0]
- $I2 = y >>> 1
- bxor $I1, $I2
- $I0 = y & 1
- $I2 = mag01[$I0]
- bxor $I1, $I2
- $I0 = N - 1
- mt[$I0] = $I1
- set mti, 0
- L1:
- y = mt[mti]
- inc mti
- # Tempering
- $I0 = y >>> 11
- bxor y, $I0
- $I0 = y << 7
- $I0 &= 0x9d2c5680
- bxor y, $I0
- $I0 = y << 15
- $I0 &= 0xefc60000
- bxor y, $I0
- $I0 = y >>> 18
- bxor y, $I0
- .return (y)
-.end
-
-
-=item C<genrand_int31 ()>
-
-generates a random number on [0,0x7fffffff]-interval
-
-=cut
-
-.sub 'genrand_int31' :method
- $I0 = self.'genrand_int32'()
- $I0 >>>= 1
- .return ($I0)
-.end
-
-
-=item C<genrand_real1 ()>
-
-generates a random number on [0,1]-real-interval
-
-=cut
-
-.sub 'genrand_real1' :method
- $I0 = self.'genrand_int32'()
- $N0 = $I0
- unless $I0 < 0 goto L1
- $N0 += 4294967296.0
- L1:
- $N0 /= 4294967295.0 # divided by 2^32-1
- .return ($N0)
-.end
-
-
-=item C<genrand_real2 ()>
-
-generates a random number on [0,1)-real-interval
-
-=cut
-
-.sub 'genrand_real2' :method
- $I0 = self.'genrand_int32'()
- $N0 = $I0
- unless $I0 < 0 goto L1
- $N0 += 4294967296.0
- L1:
- $N0 /= 4294967296.0 # divided by 2^32
- .return ($N0)
-.end
-
-
-=item C<genrand_real3 ()>
-
-generates a random number on (0,1)-real-interval
-
-=cut
-
-.sub 'genrand_real3' :method
- $I0 = self.'genrand_int32'()
- $N0 = $I0
- unless $I0 < 0 goto L1
- $N0 += 4294967296.0
- L1:
- $N0 += 0.5
- $N0 /= 4294967296.0 # divided by 2^32
- .return ($N0)
-.end
-
-
-=item C<genrand_res53 ()>
-
-generates a random number on [0,1) with 53-bit resolution
-
-=cut
-
-.sub 'genrand_res53' :method
- $I1 = self.'genrand_int32'()
- $I1 >>>= 5
- $N1 = $I1
- $I2 = self.'genrand_int32'()
- $I2 >>>= 6
- $N2 = $I2
- $N0 = $N1 * 67108864.0
- $N0 += $N2
- $N0 /= 9007199254740992.0
- .return ($N0)
-.end
-
-
-=back
-
-=head1 AUTHORS
-
-Francois Perrad
-
-=cut
-
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Modified: branches/rm_cflags/runtime/parrot/library/OpenGL.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/library/OpenGL.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/runtime/parrot/library/OpenGL.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -91,6 +91,7 @@
load_bytecode 'OpenGL_funcs.pbc'
_load_opengl_libs()
_wrap_opengl_entry_points()
+ _load_nci_thunks()
_export_opengl_functions()
.end
@@ -241,6 +242,25 @@
=back
+=head2 Thunk Loading
+
+These routines ensure that all NCI thunks necessary for calling OpenGL functions are
+available to Parrot.
+
+=cut
+
+.sub _load_nci_thunks
+ # load the nci thunks
+ .local pmc ns, loader
+ ns = get_namespace
+ loader = ns['Parrot_glut_nci_loader']
+ loader()
+
+ # delete loader the function, it isn't for public consumption
+ $P0 = new ['Undef']
+ set_global 'Parrot_glut_nci_loader', $P0
+.end
+
=head2 Symbol Export
These routines allow OpenGL symbols to exported to other namespaces to more
Modified: branches/rm_cflags/runtime/parrot/library/SDL.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/library/SDL.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/runtime/parrot/library/SDL.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -88,6 +88,18 @@
.local pmc libsdl
.local pmc sdl_function
+ .local pmc env
+ env = new 'Env'
+ .local string sdlpath
+ say'Hu'
+ sdlpath = env['SDLLIBPATH']
+ if sdlpath == '' goto default_locations
+ say sdlpath
+ loadlib libsdl, sdlpath
+ if libsdl goto OK
+ goto failed
+
+default_locations:
loadlib libsdl, 'libSDL'
if libsdl goto OK
@@ -103,6 +115,7 @@
loadlib libsdl, 'cygSDL-1-2-0'
if libsdl goto OK
+failed:
# failed to load libSDL
$P0 = new 'Exception'
$P0 = "libSDL not found!"
@@ -224,7 +237,7 @@
initialize:
.local pmc nci_sub
- dlfunc nci_sub, ttf_lib, 'TTF_Init', 'iv'
+ dlfunc nci_sub, ttf_lib, 'TTF_Init', 'i'
unless nci_sub goto error
set_hll_global ['SDL::NCI::TTF'], 'Init', nci_sub
@@ -238,7 +251,7 @@
error:
.local pmc e
e = new 'Exception'
- e[0] = "SDL_ttf not initialized\n"
+ e['message'] = "SDL_ttf not initialized\n"
throw e
success:
Modified: branches/rm_cflags/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/library/Test/More.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/runtime/parrot/library/Test/More.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -35,6 +35,8 @@
is( some_pmc, another_pmc, 'pmc comparison uses "eq" op' )
+ is_null( some_pmc, 'pmc was null' )
+
diag( 'this may take a while' )
is_deeply( some_deep_pmc, another_deep_pmc, 'deep structure comparison' )
@@ -155,6 +157,20 @@
=cut
+.sub one_or_both_null
+ .param pmc left
+ .param pmc right
+
+ .local int one
+ .local int both
+
+ $I0 = isnull left
+ $I1 = isnull right
+ or one, $I0, $I1
+ and both, $I0, $I1
+ .return (one, both)
+.end
+
.sub is :multi(PMC, Integer)
.param pmc left
.param pmc right
@@ -164,11 +180,17 @@
.local pmc test
get_hll_global test, [ 'Test'; 'More' ], '_test'
- .local int l, r, pass
+ .local int pass
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
+
+ .local int l, r
l = left
r = right
+
pass = iseq l, r
+report:
test.'ok'( pass, description )
if pass goto done
@@ -176,17 +198,27 @@
.local string l_string
.local string r_string
+ l_string = 'null'
+ if null left goto r_str
l_string = left
+
+r_str:
+ r_string = 'null'
+ if null right goto diag
r_string = right
+diag:
diagnostic = _make_diagnostic( l_string, r_string )
test.'diag'( diagnostic )
done:
.end
-.sub is :multi(_, Float)
- .param num left
- .param num right
+#.sub is :multi(_, Float)
+# .param num left
+# .param num right
+.sub is :multi(PMC, Float)
+ .param pmc left
+ .param pmc right
.param string description :optional
.param int have_desc :opt_flag
.param num precision :optional
@@ -195,15 +227,23 @@
.local pmc test
get_hll_global test, [ 'Test'; 'More' ], '_test'
+ .local int pass
+
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
+
+ .local num l, r
+ l = left
+ r = right
+
if have_prec goto check_precision
- .local int pass
- pass = iseq left, right
+ pass = iseq l, r
goto report
check_precision:
.local num diff
- diff = left - right
+ diff = l - r
diff = abs diff
pass = isle diff, precision
@@ -215,10 +255,17 @@
.local string l_string
.local string r_string
+ l_string = 'null'
+ if null left goto r_str
l_string = left
+
+r_str:
+ r_string = 'null'
+ if null right goto diag
r_string = right
- diagnostic = _make_diagnostic( left, right )
+diag:
+ diagnostic = _make_diagnostic( l_string, r_string )
test.'diag'( diagnostic )
done:
.end
@@ -232,12 +279,16 @@
.local pmc test
get_hll_global test, [ 'Test'; 'More' ], '_test'
- .local string l, r
.local int pass
- l = left
- r = right
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
+
+ .local string l, r
+ l = left
+ r = right
pass = iseq l, r
+report:
test.'ok'( pass, description )
if pass goto done
@@ -245,9 +296,16 @@
.local string l_string
.local string r_string
+ l_string = 'null'
+ if null left goto r_str
l_string = left
+
+r_str:
+ r_string = 'null'
+ if null right goto diag
r_string = right
+diag:
diagnostic = _make_diagnostic( l_string, r_string )
test.'diag'( diagnostic )
done:
@@ -263,8 +321,11 @@
get_hll_global test, [ 'Test'; 'More' ], '_test'
.local int pass
- .local int does_type
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto result
+
+ .local int does_type
does_type = does right, 'String'
if does_type goto check_string
@@ -300,9 +361,16 @@
.local string l_string
.local string r_string
+ l_string = 'null'
+ if null left goto r_str
l_string = left
+
+r_str:
+ r_string = 'null'
+ if null right goto diag
r_string = right
+diag:
diagnostic = _make_diagnostic( l_string, r_string )
test.'diag'( diagnostic )
done:
@@ -324,7 +392,9 @@
get_hll_global test, [ 'Test'; 'More' ], '_test'
.local int pass
- pass = 0
+
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
if left != right goto pass_it
goto report
@@ -359,7 +429,9 @@
get_hll_global test, [ 'Test'; 'More' ], '_test'
.local int pass
- pass = 0
+
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
ne left, right, pass_it
goto report
@@ -394,7 +466,9 @@
get_hll_global test, [ 'Test'; 'More' ], '_test'
.local int pass
- pass = 0
+
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
ne left, right, pass_it
goto report
@@ -428,8 +502,12 @@
.local pmc test
get_hll_global test, [ 'Test'; 'More' ], '_test'
- # this comparison may not work in general, but it's worth trying
.local int pass
+
+ ($I0, pass) = one_or_both_null(left, right)
+ if $I0 goto report
+
+ # this comparison may not work in general, but it's worth trying
pass = isne left, right
report:
@@ -848,6 +926,37 @@
.return( equal )
.end
+=item C<is_null( pmc, description )>
+
+Records a passing test if the PMC passed in is null, fails otherwise.
+
+=cut
+
+.sub is_null
+ .param pmc victim
+ .param string description :optional
+
+ .local pmc test
+ get_hll_global test, [ 'Test'; 'More' ], '_test'
+
+ .local int passed
+ passed = isnull victim
+
+ test.'ok'( passed, description )
+ if passed goto done
+
+ .local string v_string
+ v_string = 'null'
+ if null victim goto diag
+ v_string = victim
+
+ diag:
+ .local string diagnostic
+ diagnostic = _make_diagnostic( v_string, 'null')
+ test.'diag'( diagnostic )
+ done:
+.end
+
=item C<dies_ok( codestring, description )>
Takes PIR code in C<codestring> and an optional message in C<description>.
Modified: branches/rm_cflags/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/rm_cflags/runtime/parrot/library/distutils.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/runtime/parrot/library/distutils.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,4 +1,4 @@
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -194,6 +194,8 @@
L<http://bitbucket.org/riffraff/shakespeare-parrot/src/tip/setup.pir>
+L<http://gitorious.org/kakapo/kakapo/blobs/master/setup.nqp>
+
=cut
.sub '__onload' :load :init :anon
@@ -212,6 +214,8 @@
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_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'
@@ -235,6 +239,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_pir_pir = '_clean_pir_pir'
+ register_step_after('clean', _clean_pir_pir)
.const 'Sub' _clean_pbc_pir = '_clean_pbc_pir'
register_step_after('clean', _clean_pbc_pir)
.const 'Sub' _clean_pbc_pbc = '_clean_pbc_pbc'
@@ -695,7 +701,7 @@
L2:
.end
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
hash
@@ -712,6 +718,11 @@
$P0 = kv['pir_nqp-rx']
build_pir_nqp_rx($P0)
L1:
+ $I0 = exists kv['pir_nqprx']
+ unless $I0 goto L2
+ $P0 = kv['pir_nqprx']
+ build_pir_nqp_rx($P0)
+ L2:
.end
.sub 'build_pir_nqp_rx'
@@ -735,6 +746,50 @@
L2:
.end
+=item pir_pir (concat)
+
+hash
+
+the key is the PIR pathname
+
+the value is an array of PIR pathname
+
+=cut
+
+.sub '_build_pir_pir' :anon
+ .param pmc kv :slurpy :named
+ $I0 = exists kv['pir_pir']
+ unless $I0 goto L1
+ $P0 = kv['pir_pir']
+ build_pir_pir($P0)
+ L1:
+.end
+
+.sub 'build_pir_pir'
+ .param pmc hash
+ $P0 = iter hash
+ L1:
+ unless $P0 goto L2
+ .local string pir, src
+ pir = shift $P0
+ .local pmc srcs
+ srcs = hash[pir]
+ $I0 = newer(pir, srcs)
+ if $I0 goto L1
+ spew(pir, '', 1 :named('verbose'))
+ $P1 = iter srcs
+ L3:
+ unless $P1 goto L4
+ .local string src
+ src = shift $P1
+ $S0 = slurp(src)
+ append(pir, $S0)
+ goto L3
+ L4:
+ goto L1
+ L2:
+.end
+
=item pbc_pbc
hash
@@ -1375,6 +1430,19 @@
L2:
.end
+=item pir_pir
+
+=cut
+
+.sub '_clean_pir_pir' :anon
+ .param pmc kv :slurpy :named
+ $I0 = exists kv['pir_pir']
+ unless $I0 goto L1
+ $P0 = kv['pir_pir']
+ clean_key($P0)
+ L1:
+.end
+
=item pir_pge
=cut
@@ -1414,7 +1482,7 @@
L1:
.end
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
=cut
@@ -1425,6 +1493,11 @@
$P0 = kv['pir_nqp-rx']
clean_key($P0)
L1:
+ $I0 = exists kv['pir_nqprx']
+ unless $I0 goto L2
+ $P0 = kv['pir_nqprx']
+ clean_key($P0)
+ L2:
.end
=item pbc_pbc
@@ -2547,8 +2620,8 @@
array of pathname or a single pathname
-=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pbc_pbc, exe_pbc,
-installable_pbc, dynops, dynpmc, html_pod
+=item 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
=item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
@@ -2579,7 +2652,7 @@
needed = new 'Hash'
generated = new 'Hash'
- $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx 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 pir_pir pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
L1:
unless $P0 goto L2
$S0 = shift $P0
Modified: branches/rm_cflags/src/debug.c
==============================================================================
--- branches/rm_cflags/src/debug.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/debug.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -3124,33 +3124,6 @@
/*
-=item C<opcode_t * PDB_compile(PARROT_INTERP, const char *command)>
-
-Compiles instructions with the PASM compiler.
-
-Appends an C<end> op.
-
-This may be called from C<PDB_eval> above or from the compile opcode
-which generates a malloced string.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-opcode_t *
-PDB_compile(PARROT_INTERP, ARGIN(const char *command))
-{
- ASSERT_ARGS(PDB_compile)
-
- UNUSED(command);
- Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_UNIMPLEMENTED,
- "PDB_compile ('PASM1' compiler) has been deprecated");
-}
-
-/*
-
=item C<void PDB_print(PARROT_INTERP, const char *command)>
Print interp registers.
Modified: branches/rm_cflags/src/embed.c
==============================================================================
--- branches/rm_cflags/src/embed.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/embed.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -32,8 +32,9 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static void print_constant_table(PARROT_INTERP)
- __attribute__nonnull__(1);
+static void print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void print_debug(PARROT_INTERP, SHIM(int status), SHIM(void *p))
__attribute__nonnull__(1);
@@ -48,7 +49,8 @@
__attribute__nonnull__(3);
#define ASSERT_ARGS_print_constant_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(output))
#define ASSERT_ARGS_print_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_set_current_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -841,7 +843,7 @@
/*
-=item C<static void print_constant_table(PARROT_INTERP)>
+=item C<static void print_constant_table(PARROT_INTERP, PMC *output)>
Prints the contents of the constants table.
@@ -849,41 +851,41 @@
*/
static void
-print_constant_table(PARROT_INTERP)
+print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
{
ASSERT_ARGS(print_constant_table)
const INTVAL numconstants = interp->code->const_table->const_count;
INTVAL i;
/* TODO: would be nice to print the name of the file as well */
- Parrot_io_printf(interp, "=head1 Constant-table\n\n");
+ Parrot_io_fprintf(interp, output, "=head1 Constant-table\n\n");
for (i = 0; i < numconstants; ++i) {
const PackFile_Constant * const c = interp->code->const_table->constants[i];
switch (c->type) {
case PFC_NUMBER:
- Parrot_io_printf(interp, "PMC_CONST(%d): %f\n", i, c->u.number);
+ Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %f\n", i, c->u.number);
break;
case PFC_STRING:
- Parrot_io_printf(interp, "PMC_CONST(%d): %S\n", i, c->u.string);
+ Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %S\n", i, c->u.string);
break;
case PFC_KEY:
- Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+ Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
/* XXX */
/* Parrot_print_p(interp, c->u.key); */
- Parrot_io_printf(interp, "(PMC constant)");
- Parrot_io_printf(interp, "\n");
+ Parrot_io_fprintf(interp, output, "(PMC constant)");
+ Parrot_io_fprintf(interp, output, "\n");
break;
case PFC_PMC:
{
- Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+ Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
switch (c->u.key->vtable->base_type) {
/* each PBC file has a ParrotInterpreter, but it can't
* stringify by itself */
case enum_class_ParrotInterpreter:
- Parrot_io_printf(interp, "'ParrotInterpreter'");
+ Parrot_io_fprintf(interp, output, "'ParrotInterpreter'");
break;
/* FixedIntegerArrays used for signatures, handy to print */
@@ -891,15 +893,15 @@
{
INTVAL n = VTABLE_elements(interp, c->u.key);
INTVAL i;
- Parrot_io_printf(interp, "[");
+ Parrot_io_fprintf(interp, output, "[");
for (i = 0; i < n; ++i) {
INTVAL val = VTABLE_get_integer_keyed_int(interp, c->u.key, i);
- Parrot_io_printf(interp, "%d", val);
+ Parrot_io_fprintf(interp, output, "%d", val);
if (i < n - 1)
- Parrot_io_printf(interp, ",");
+ Parrot_io_fprintf(interp, output, ",");
}
- Parrot_io_printf(interp, "]");
+ Parrot_io_fprintf(interp, output, "]");
break;
}
case enum_class_NameSpace:
@@ -910,28 +912,28 @@
/*Parrot_print_p(interp, c->u.key);*/
STRING * const s = VTABLE_get_string(interp, c->u.key);
if (s)
- Parrot_io_printf(interp, "%Ss", s);
+ Parrot_io_fprintf(interp, output, "%Ss", s);
break;
}
case enum_class_Sub:
- Parrot_io_printf(interp, "%S", VTABLE_get_string(interp, c->u.key));
+ Parrot_io_fprintf(interp, output, "%S", VTABLE_get_string(interp, c->u.key));
break;
default:
- Parrot_io_printf(interp, "(PMC constant)");
+ Parrot_io_fprintf(interp, output, "(PMC constant)");
break;
}
- Parrot_io_printf(interp, "\n");
+ Parrot_io_fprintf(interp, output, "\n");
break;
}
default:
- Parrot_io_printf(interp, "wrong constant type in constant table!\n");
+ Parrot_io_fprintf(interp, output, "wrong constant type in constant table!\n");
/* XXX throw an exception? Is it worth the trouble? */
break;
}
}
- Parrot_io_printf(interp, "\n=cut\n\n");
+ Parrot_io_fprintf(interp, output, "\n=cut\n\n");
}
@@ -950,7 +952,7 @@
PARROT_EXPORT
void
-Parrot_disassemble(PARROT_INTERP, SHIM(const char *outfile), Parrot_disassemble_options options)
+Parrot_disassemble(PARROT_INTERP, ARGIN(const char *outfile), Parrot_disassemble_options options)
{
PDB_line_t *line;
PDB_t * const pdb = mem_allocate_zeroed_typed(PDB_t);
@@ -958,6 +960,15 @@
int curr_mapping = 0;
int op_code_seq_num = 0;
int debugs;
+ PMC *output;
+
+ if (outfile != NULL) {
+ output = Parrot_io_open(interp, PMCNULL,
+ Parrot_str_new(interp, outfile, 0),
+ Parrot_str_new_constant(interp, "tw"));
+ }
+ else
+ output = Parrot_io_stdhandle(interp, PIO_STDOUT_FILENO, PMCNULL);
interp->pdb = pdb;
pdb->cur_opcode = interp->code->base.data;
@@ -967,26 +978,26 @@
line = pdb->file->line;
debugs = (interp->code->debugs != NULL);
- print_constant_table(interp);
+ print_constant_table(interp, output);
if (options & enum_DIS_HEADER)
return;
if (!(options & enum_DIS_BARE))
- Parrot_io_printf(interp, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
+ Parrot_io_fprintf(interp, output, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
if (debugs) {
if (!(options & enum_DIS_BARE))
- Parrot_io_printf(interp, " %6s:\n", "SrcLn#");
+ Parrot_io_fprintf(interp, output, " %6s:\n", "SrcLn#");
num_mappings = interp->code->debugs->num_mappings;
}
else {
- Parrot_io_printf(interp, "\n");
+ Parrot_io_fprintf(interp, output, "\n");
}
while (line->next) {
const char *c;
- /* Parrot_io_printf(interp, "%i < %i %i == %i \n", curr_mapping,
+ /* Parrot_io_fprintf(interp, output, "%i < %i %i == %i \n", curr_mapping,
* num_mappings, op_code_seq_num,
* interp->code->debugs->mappings[curr_mapping]->offset); */
@@ -994,35 +1005,37 @@
if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping]->offset) {
const int filename_const_offset =
interp->code->debugs->mappings[curr_mapping]->filename;
- Parrot_io_printf(interp, "# Current Source Filename '%Ss'\n",
+ Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
interp->code->const_table->constants[filename_const_offset]->u.string);
curr_mapping++;
}
}
if (!(options & enum_DIS_BARE))
- Parrot_io_printf(interp, "%012i-%012i",
+ Parrot_io_fprintf(interp, output, "%012i-%012i",
op_code_seq_num, line->opcode - interp->code->base.data);
if (debugs && !(options & enum_DIS_BARE))
- Parrot_io_printf(interp, " %06i: ",
+ Parrot_io_fprintf(interp, output, " %06i: ",
interp->code->debugs->base.data[op_code_seq_num]);
/* If it has a label print it */
if (line->label)
- Parrot_io_printf(interp, "L%li:\t", line->label->number);
+ Parrot_io_fprintf(interp, output, "L%li:\t", line->label->number);
else
- Parrot_io_printf(interp, "\t");
+ Parrot_io_fprintf(interp, output, "\t");
c = pdb->file->source + line->source_offset;
while (c && *c != '\n')
- Parrot_io_printf(interp, "%c", *(c++));
+ Parrot_io_fprintf(interp, output, "%c", *(c++));
- Parrot_io_printf(interp, "\n");
+ Parrot_io_fprintf(interp, output, "\n");
line = line->next;
op_code_seq_num++;
}
+ if (outfile != NULL)
+ Parrot_io_close(interp, output);
return;
}
Modified: branches/rm_cflags/src/gc/alloc_resources.c
==============================================================================
--- branches/rm_cflags/src/gc/alloc_resources.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/gc/alloc_resources.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -80,6 +80,7 @@
__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))
__attribute__nonnull__(1)
FUNC_MODIFIES(*pool);
@@ -143,6 +144,7 @@
#define ASSERT_ARGS_fix_pmc_syncs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
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_new_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -1151,6 +1153,8 @@
static void
free_memory_pool(Variable_Size_Pool *pool)
{
+ ASSERT_ARGS(free_memory_pool)
+
Memory_Block *cur_block = pool->top_block;
while (cur_block) {
Modified: branches/rm_cflags/src/gc/gc_ms.c
==============================================================================
--- branches/rm_cflags/src/gc/gc_ms.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/gc/gc_ms.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -471,6 +471,7 @@
/* Note it */
mem_pools->gc_mark_runs++;
--mem_pools->gc_mark_block_level;
+ mem_pools->header_allocs_since_last_collect = 0;
return;
}
@@ -1154,8 +1155,9 @@
if (pool->skip == GC_ONE_SKIP)
pool->skip = GC_NO_SKIP;
- else if (pool->skip == GC_NO_SKIP
- && interp->mem_pools->header_allocs_since_last_collect >= 1024*1024)
+ else if (pool->skip == GC_NEVER_SKIP
+ || (pool->skip == GC_NO_SKIP
+ && mem_pools->header_allocs_since_last_collect >= GC_SIZE_THRESHOLD))
Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
/* requires that num_free_objects be updated in Parrot_gc_mark_and_sweep.
@@ -1318,6 +1320,9 @@
if (alloc_size > POOL_MAX_BYTES)
pool->objects_per_alloc = POOL_MAX_BYTES / pool->object_size;
+
+ if (alloc_size > GC_SIZE_THRESHOLD)
+ pool->skip = GC_NEVER_SKIP;
}
Modified: branches/rm_cflags/src/gc/gc_private.h
==============================================================================
--- branches/rm_cflags/src/gc/gc_private.h Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/gc/gc_private.h Fri Feb 19 03:57:19 2010 (r44159)
@@ -45,6 +45,7 @@
#define UNITS_PER_ALLOC_GROWTH_FACTOR 1.75
#define POOL_MAX_BYTES 65536 * 128
+#define GC_SIZE_THRESHOLD 1024 * 1024
#define PMC_HEADERS_PER_ALLOC 4096 * 10 / sizeof (PMC)
#define BUFFER_HEADERS_PER_ALLOC 4096 / sizeof (Buffer)
@@ -91,7 +92,8 @@
typedef enum _gc_skip_type_enum {
GC_NO_SKIP = 0,
GC_ONE_SKIP,
- GC_ALWAYS_SKIP
+ GC_ALWAYS_SKIP,
+ GC_NEVER_SKIP
} gc_skip_type_enum;
typedef struct GC_Subsystem {
Modified: branches/rm_cflags/src/interp/inter_create.c
==============================================================================
--- branches/rm_cflags/src/interp/inter_create.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/interp/inter_create.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -37,14 +37,9 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-static void setup_default_compreg(PARROT_INTERP)
- __attribute__nonnull__(1);
-
#define ASSERT_ARGS_is_env_var_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(var))
-#define ASSERT_ARGS_setup_default_compreg __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 */
@@ -78,26 +73,6 @@
/*
-=item C<static void setup_default_compreg(PARROT_INTERP)>
-
-Setup default compiler for PASM.
-
-=cut
-
-*/
-
-static void
-setup_default_compreg(PARROT_INTERP)
-{
- ASSERT_ARGS(setup_default_compreg)
- STRING * const pasm1 = CONST_STRING(interp, "PASM1");
-
- /* register the nci compiler object */
- Parrot_compreg(interp, pasm1, (Parrot_compiler_func_t)PDB_compile);
-}
-
-/*
-
=item C<Parrot_Interp make_interpreter(Interp *parent, INTVAL flags)>
Create the Parrot interpreter. Allocate memory and clear the registers.
@@ -299,9 +274,6 @@
interp->current_runloop_id = 0;
interp->current_runloop_level = 0;
- /* register assembler/compilers */
- setup_default_compreg(interp);
-
/* setup stdio PMCs */
Parrot_io_init(interp);
Modified: branches/rm_cflags/src/main.c
==============================================================================
--- branches/rm_cflags/src/main.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/main.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -128,6 +128,18 @@
initialize_interpreter(interp, (void*)&stacktop);
imcc_initialize(interp);
+ { /* EXPERIMENTAL: add library and include paths from environment */
+ PMC *env = pmc_new(interp, enum_class_Env);
+ STRING *path = VTABLE_get_string_keyed_str(interp, env,
+ Parrot_str_new_constant(interp, "PARROT_LIBRARY"));
+ if (!STRING_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 (!STRING_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);
@@ -400,7 +412,7 @@
/*
=item C<static const char * parseflags(PARROT_INTERP, int *argc, char **argv[],
-INTVAL *core, Parrot_trace_flags *trace)>
+Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
Parse Parrot's command line for options and set appropriate flags.
Copied: branches/rm_cflags/src/nci/api.c (from r44158, trunk/src/nci/api.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/src/nci/api.c Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/src/nci/api.c)
@@ -0,0 +1,85 @@
+/* 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:
+ */
+
+#include "parrot/parrot.h"
+#include "parrot/nci.h"
+#include "api.str"
+
+/* HEADERIZER HFILE: include/parrot/nci.h */
+/* HEADERIZER STOP */
+
+static void
+init_nci_funcs(PARROT_INTERP) {
+ VTABLE_set_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_NCI_FUNCS,
+ pmc_new(interp, enum_class_Hash));
+ Parrot_nci_load_core_thunks(interp);
+ Parrot_nci_load_extra_thunks(interp);
+}
+
+/* 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;
+ PMC *nci_funcs;
+ PMC *thunk;
+
+ /* fixup empty signatures */
+ 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");
+
+ nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+ if (PMC_IS_NULL(nci_funcs)) {
+ init_nci_funcs(interp);
+ nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+ }
+
+ 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));
+
+ /*
+ 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));
+ }
+}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Copied: branches/rm_cflags/src/nci/core_thunks.c (from r44158, trunk/src/nci/core_thunks.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/src/nci/core_thunks.c Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/src/nci/core_thunks.c)
@@ -0,0 +1,1246 @@
+/* ex: set ro ft=c:
+ * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/core_thunks.c
+ * Copyright (C) 2010, 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:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+# define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+# include "core_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+ hackish, but that is just fine */
+
+
+static void
+pcf_d_JOd(PARROT_INTERP, 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);
+ FLOATVAL return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_I_JOS(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JOl(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_Jt(PARROT_INTERP, 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 * return_data;
+
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_S_JOS(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_I_JI(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_v_JOSP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JOS(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_P_JOS(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_I_JOI(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JOP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JOPS(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ STRING * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_v_JOPSP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ STRING * t_3;
+ PMC * t_4;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+
+
+
+
+
+
+}
+static void
+pcf_v_JPPP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JPIP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JPSP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JPNP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JPP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_v_JPI(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_v_JPS(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_v_JPN(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_P_JPPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_P_JPIP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_P_JPSP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_P_JPNP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_I_JPP(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_I_JPS(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_I_JPN(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_i_JP(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_v_JP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1);
+
+
+
+}
+static void
+pcf_i_JPi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_i_JPii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_JPiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_i_JPt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_P_JOSSS(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ STRING * t_3;
+ STRING * t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_v_JOSS(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ STRING * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_S_JOI(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_v_JOb(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING *t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, Buffer_bufstart(t_2));
+
+
+
+
+}
+static void
+pcf_i_JOPxAT_(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_I_JOPxAT_(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_I_JOIPxAT_(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ PMC * t_3;
+ PMC * t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_v_JOP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_P_Ji(PARROT_INTERP, 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 * return_data;
+
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+
+
+ void
+Parrot_nci_load_core_thunks(PARROT_INTERP)
+{
+ PMC *iglobals;
+ PMC *temp_pmc;
+
+ PMC *HashPointer = NULL;
+
+ iglobals = interp->iglobals;
+ if (PMC_IS_NULL(iglobals))
+ PANIC(interp, "iglobals isn't created yet");
+
+ HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+ IGLOBALS_NCI_FUNCS);
+ if (PMC_IS_NULL(HashPointer))
+ PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_JOd);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dJOd"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPSP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPSP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPIP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPIP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPSP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPSP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPNP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPNP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPN);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPN"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPIP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPIP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPSP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPSP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPNP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPNP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPN);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPN"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSSS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSSS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOb);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOb"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOPxAT_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOP@"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOPxAT_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOP@"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOIPxAT_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOIP@"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Ji);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJi"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+
Copied: branches/rm_cflags/src/nci/core_thunks.nci (from r44158, trunk/src/nci/core_thunks.nci)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/src/nci/core_thunks.nci Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/src/nci/core_thunks.nci)
@@ -0,0 +1,70 @@
+# Copyright (C) 2002-2010, Parrot Foundation.
+
+# This file contains the Parrot Native Call Interface signature
+# declarations required by Parrot's core. To add signatures for extensions,
+# add to F<src/nci/extra_thunks.nci>
+
+# The format of this file is explained in F<src/nci/extra_thunks.nci>
+
+d JOd # Parrot builtins
+I JOS
+P JOl
+P Jt
+S JOS # ParrotIO.readline
+I JI # Parrot_is_char_*
+v JOSP # String.trans
+v JOS # String.reverse
+P JOS # Added for os.stat
+I JOI # os.umask
+P JOP # atan2
+P JOPS # Namespace.get_global
+v JOPSP # Namespace.set_global
+
+v JPPP # infix MMD
+v JPIP
+v JPSP
+v JPNP
+
+v JPP # inplace infix MMD
+v JPI
+v JPS
+v JPN
+
+P JPPP # infix MMD new
+P JPIP
+P JPSP
+P JPNP
+
+I JPP # MMD compare
+
+# These are needed for packfileconstanttable.pmc
+I JPS
+I JPN
+
+# These are needed for parrotio.pmc
+i JP
+v JP
+i JPi
+i JPii
+i JPiii
+i JPt
+P JOSSS
+
+# Needed by string.pmc
+v JOSS
+
+# Needed by integer.pmc
+S JOI
+
+# src/pmc/nci.pmc
+v JOb
+
+# ParrotThread creation
+i JOP@
+I JOP@
+I JOIP@
+
+# other ParrotThread
+P JO
+v JOP
+P Ji
Copied: branches/rm_cflags/src/nci/extra_thunks.c (from r44158, trunk/src/nci/extra_thunks.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/src/nci/extra_thunks.c Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/src/nci/extra_thunks.c)
@@ -0,0 +1,7238 @@
+/* ex: set ro ft=c:
+ * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/extra_thunks.c
+ * Copyright (C) 2010, 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:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+# define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+# include "extra_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+ hackish, but that is just fine */
+
+
+static void
+pcf_v_J(PARROT_INTERP, 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);
+ void * return_data;
+
+ ;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp);
+
+
+}
+static void
+pcf_i_ip(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_JPip(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_JpP(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_i_Jpii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_tp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ PMC *t_1;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_J(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ ;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(interp);
+ if (return_data != NULL) {
+ final_destination = 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);
+
+}
+static void
+pcf_p_Jp(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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 = 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);
+
+
+}
+static void
+pcf_t_J(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ ;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_Jpti(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_t_p(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_pt(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_p(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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)
+{
+ 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_ptt(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_Jtiiipt(PARROT_INTERP, 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);
+ void * return_data;
+
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ PMC *t_5;
+ char *t_6; STRING *ts_6;
+ 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);
+ 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);
+
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_p_JttPP(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ PMC * t_3;
+ PMC * t_4;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_P_Jtpi(PARROT_INTERP, 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 * return_data;
+
+ char *t_1; STRING *ts_1;
+ PMC *t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_Vppp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0; void *v_0;
+ PMC *t_1;
+ PMC *t_2;
+ PMC *t_3;
+ 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);
+ 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);
+ VTABLE_set_pointer(interp, t_0, v_0);
+
+
+
+}
+static void
+pcf_v_JpPP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_v_pt(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_Jpt(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_(PARROT_INTERP, PMC *self)
+{
+ typedef void(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ void * return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)();
+
+
+}
+static void
+pcf_v_Jiiip(PARROT_INTERP, 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);
+ void * return_data;
+
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ PMC *t_4;
+ 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);
+ 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));
+
+
+
+
+
+
+}
+static void
+pcf_v_i(PARROT_INTERP, 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);
+ void * return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(t_0);
+
+
+}
+static void
+pcf_v_ii(PARROT_INTERP, 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);
+ void * return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(t_0, t_1);
+
+
+
+}
+static void
+pcf_v_illllllll(PARROT_INTERP, 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);
+ void * return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ INTVAL t_8;
+ 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);
+ 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);
+
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_l(PARROT_INTERP, 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);
+ void * return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(t_0);
+
+
+}
+static void
+pcf_v_pbip(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ STRING *t_1;
+ INTVAL t_2;
+ PMC *t_3;
+ 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);
+ 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));
+
+
+
+
+
+}
+static void
+pcf_v_pi(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_v_piiii(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+
+}
+static void
+pcf_v_pl(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_v_pp(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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));
+
+
+
+}
+static void
+pcf_i_JPP(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_P_JPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_S_JO(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_P(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_P_JOPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_P_JOPPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ PMC * t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_v_JOPP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_v_JOPPP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ PMC * t_4;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+
+
+
+
+
+
+}
+static void
+pcf_P_JOPPPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ PMC * t_4;
+ PMC * t_5;
+ 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);
+ 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);
+
+
+
+
+
+
+}
+static void
+pcf_P_JOPPPPP(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ PMC * t_2;
+ PMC * t_3;
+ PMC * t_4;
+ PMC * t_5;
+ PMC * t_6;
+ 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);
+ 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);
+
+
+
+
+
+
+
+}
+static void
+pcf_I_JOSI(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_P_JOSII(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_t_p3(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ PMC *t_1; int i_1;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_pp3p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2; int i_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_pp3(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2; int i_2;
+ 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);
+ 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);
+
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ppd(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ FLOATVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_ptii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_pipi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_t_ptti(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_t_pttti(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+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_Ji(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(interp, t_1);
+ if (return_data != NULL) {
+ final_destination = 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);
+
+
+}
+static void
+pcf_p_Jipp(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_1;
+ PMC *t_2;
+ PMC *t_3;
+ 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);
+ 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 = 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);
+
+
+
+
+}
+static void
+pcf_p_Jbip(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ STRING *t_1;
+ INTVAL t_2;
+ PMC *t_3;
+ 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);
+ 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 = 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);
+
+
+
+
+}
+static void
+pcf_v_Jp(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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));
+
+
+
+}
+static void
+pcf_v_JS(PARROT_INTERP, 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);
+ void * return_data;
+
+ STRING * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1);
+
+
+
+}
+static void
+pcf_t_tt(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ char *t_0; STRING *ts_0;
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_JOSI(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ INTVAL t_3;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2, t_3);
+
+
+
+
+
+}
+static void
+pcf_S_JOi(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_v_JOi(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_I_JO(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_N_JO(PARROT_INTERP, 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);
+ FLOATVAL return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_v_JON(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ FLOATVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_P_JOi(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_v_JOI(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_P_JOI(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_P_JOIS(PARROT_INTERP, 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 * return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ STRING * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_S_JOSP(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ PMC * t_1;
+ STRING * t_2;
+ PMC * t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_(PARROT_INTERP, PMC *self)
+{
+ typedef int(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ INTVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_i3i(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1; int i_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_ibi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ STRING *t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_l_lttl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_piS(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ STRING * t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_S_i(PARROT_INTERP, 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);
+ STRING * return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_l_p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_c_p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_p_pi(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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 = 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);
+
+
+}
+static void
+pcf_p_p(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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 = 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);
+
+}
+static void
+pcf_i_pttttt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ char *t_4; STRING *ts_4;
+ char *t_5; STRING *ts_5;
+ 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);
+ 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);
+
+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);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+}
+static void
+pcf_c_pttt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ char *t_4; STRING *ts_4;
+ INTVAL t_5;
+ char *t_6; STRING *ts_6;
+ INTVAL t_7;
+ 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);
+ 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 = 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);
+
+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);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_i_pt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_ptl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_pl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_l_(PARROT_INTERP, PMC *self)
+{
+ typedef long(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ INTVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_p_pt(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_ptt(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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 = 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_p_pp(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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 = 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);
+
+
+}
+static void
+pcf_l_ttl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ void * return_data;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ 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)
+{
+ 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ char *t_4; STRING *ts_4;
+ INTVAL t_5;
+ char *t_6; STRING *ts_6;
+ INTVAL t_7;
+ 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);
+ 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 = 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);
+
+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);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_p_tiB3P(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ PMC *t_3; int i_3;
+ PMC * t_4;
+ 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);
+ 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 = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+if (t_2) Parrot_str_free_cstring(t_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_p_tip3P(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ INTVAL t_1;
+ PMC *t_2;
+ PMC *t_3; int i_3;
+ PMC * t_4;
+ 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);
+ 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 = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_pPtiiipi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC * t_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ PMC *t_6;
+ INTVAL t_7;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+
+
+
+}
+static void
+pcf_i_tpiibi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ STRING *t_4;
+ INTVAL t_5;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+
+
+
+
+}
+static void
+pcf_p_ptippppi(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ PMC *t_3;
+ PMC *t_4;
+ PMC *t_5;
+ PMC *t_6;
+ INTVAL t_7;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+
+}
+static void
+pcf_p_pi33ipi(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2; int i_2;
+ PMC *t_3; int i_3;
+ INTVAL t_4;
+ PMC *t_5;
+ INTVAL t_6;
+ 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);
+ 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 = 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);
+
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+
+
+}
+static void
+pcf_p_pttip(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ PMC *t_4;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_p_ptipppi(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ PMC *t_3;
+ PMC *t_4;
+ PMC *t_5;
+ INTVAL t_6;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+}
+static void
+pcf_p_ppP(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC * t_2;
+ 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);
+ 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 = 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);
+
+
+
+}
+static void
+pcf_p_iiil(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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 = 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);
+
+
+
+
+}
+static void
+pcf_i_ppl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_v_pip(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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));
+
+
+
+
+}
+static void
+pcf_p_pti(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_ppp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_p_ptii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_p_ti(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ INTVAL t_1;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(t_0, t_1);
+ if (return_data != NULL) {
+ final_destination = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_ptp(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ PMC *t_2;
+ 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);
+ 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 = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pt33(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ PMC *t_2; int i_2;
+ PMC *t_3; int i_3;
+ 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);
+ 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);
+
+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)
+{
+ typedef char(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ INTVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_c_pi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_d_(PARROT_INTERP, PMC *self)
+{
+ typedef double(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ FLOATVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_d_d(PARROT_INTERP, 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);
+ FLOATVAL return_data;
+
+ FLOATVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_f_(PARROT_INTERP, PMC *self)
+{
+ typedef float(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ FLOATVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_f_ff(PARROT_INTERP, 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);
+ FLOATVAL return_data;
+
+ FLOATVAL t_0;
+ FLOATVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "NN", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_f_is(PARROT_INTERP, 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);
+ FLOATVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_b(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ STRING *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_d(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ FLOATVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_i(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_ii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_ii4(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ PMC *t_2; long i_2;
+ 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);
+ 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);
+
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ii4i(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ PMC *t_2; long i_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_iiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_iiilsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ PMC *t_5;
+ 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);
+ 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);
+
+
+
+
+
+
+}
+static void
+pcf_i_iil(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_iili(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_iip(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_iit(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_iiti(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_ilsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_iti(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_l(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_li(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_lp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_lsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_p33(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; int i_1;
+ PMC *t_2; int i_2;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; int i_1;
+ PMC *t_2; int i_2;
+ PMC *t_3; int i_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; int i_1;
+ PMC *t_2; int i_2;
+ PMC *t_3; int i_3;
+ PMC *t_4; int i_4;
+ PMC *t_5; int i_5;
+ PMC *t_6; int i_6;
+ 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);
+ 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);
+
+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);
+VTABLE_set_integer_native(interp, t_4, i_4);
+VTABLE_set_integer_native(interp, t_5, i_5);
+VTABLE_set_integer_native(interp, t_6, i_6);
+}
+static void
+pcf_i_p4(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; long i_1;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_p42p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; long i_1;
+ PMC *t_2; short i_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; long i_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_pb(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ STRING *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_pii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_pii4(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ PMC *t_3; long i_3;
+ 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);
+ 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);
+
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_pii4i(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ PMC *t_3; long i_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_piii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_piiiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ 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);
+ 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);
+
+
+
+
+
+
+
+}
+static void
+pcf_i_piiilsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ PMC *t_6;
+ 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);
+ 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);
+
+
+
+
+
+
+
+}
+static void
+pcf_i_piil(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_piili(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_i_piit(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ char *t_3; STRING *ts_3;
+ 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);
+ 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);
+
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+}
+static void
+pcf_i_piiti(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ char *t_3; STRING *ts_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+
+}
+static void
+pcf_i_pilsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ PMC *t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_i_pli(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_pll(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_pllllllll(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ INTVAL t_8;
+ 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);
+ 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);
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_plp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_plsp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_pp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_ppi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_ppiiiiiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ INTVAL t_8;
+ INTVAL t_9;
+ 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);
+ 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);
+
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_pppp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ PMC *t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_psp(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ PMC *t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_pti(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pitl(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_s(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_i_s22(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1; short i_1;
+ PMC *t_2; short i_2;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1; short i_1;
+ PMC *t_2; short i_2;
+ PMC *t_3; short i_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_sss(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_ssss(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_t(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_i_ti(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ INTVAL t_1;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_i_4(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0; long i_0;
+ 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);
+ 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);
+ VTABLE_set_integer_native(interp, t_0, i_0);
+}
+static void
+pcf_i_4i(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0; long i_0;
+ INTVAL t_1;
+ 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);
+ 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);
+ VTABLE_set_integer_native(interp, t_0, i_0);
+
+}
+static void
+pcf_i_42p(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0; long i_0;
+ PMC *t_1; short i_1;
+ PMC *t_2;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_l_l4(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1; long i_1;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_l_pi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_l_pii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_l_p33l(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1; int i_1;
+ PMC *t_2; int i_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0; int i_0;
+ PMC *t_1; int i_1;
+ INTVAL t_2;
+ 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);
+ 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);
+ 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)
+{
+ typedef void *(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)();
+ if (return_data != NULL) {
+ final_destination = 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);
+
+}
+static void
+pcf_p_B(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(&t_0);
+ if (return_data != NULL) {
+ final_destination = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_b(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ STRING *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(Buffer_bufstart(t_0));
+ if (return_data != NULL) {
+ final_destination = 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);
+
+}
+static void
+pcf_p_Jt(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_1; STRING *ts_1;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(interp, t_1);
+ if (return_data != NULL) {
+ final_destination = 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_i(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(t_0);
+ if (return_data != NULL) {
+ final_destination = 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);
+
+}
+static void
+pcf_p_ii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(t_0, t_1);
+ if (return_data != NULL) {
+ final_destination = 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);
+
+
+}
+static void
+pcf_p_iiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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 = 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);
+
+
+
+
+}
+static void
+pcf_p_iiiiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ 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);
+ 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 = 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);
+
+
+
+
+
+
+}
+static void
+pcf_p_iiiiiiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ 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);
+ 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 = 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);
+
+
+
+
+
+
+
+
+}
+static void
+pcf_p_pii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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 = 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);
+
+
+
+}
+static void
+pcf_p_piiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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 = 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);
+
+
+
+
+
+}
+static void
+pcf_p_t(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ return_data = (void *)(*fn_pointer)(t_0);
+ if (return_data != NULL) {
+ final_destination = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_tpp(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ PMC *t_1;
+ PMC *t_2;
+ 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);
+ 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 = 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+
+
+}
+static void
+pcf_p_ttttttt(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ char *t_0; STRING *ts_0;
+ char *t_1; STRING *ts_1;
+ char *t_2; STRING *ts_2;
+ char *t_3; STRING *ts_3;
+ char *t_4; STRING *ts_4;
+ char *t_5; STRING *ts_5;
+ char *t_6; STRING *ts_6;
+ 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);
+ 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 = 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);
+ 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);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_s_(PARROT_INTERP, PMC *self)
+{
+ typedef short(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ INTVAL return_data;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_(PARROT_INTERP, PMC *self)
+{
+ typedef char *(* func_t)();
+ func_t fn_pointer;
+ void *orig_func;
+ PMC *ctx = CURRENT_CONTEXT(interp);
+ PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+ char * return_data;
+STRING *final_destination;
+
+ ;
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_i(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ INTVAL t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_ii(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_t_pi(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_t_pii(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_t_t(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_t_tl4(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ char *t_0; STRING *ts_0;
+ INTVAL t_1;
+ PMC *t_2; long i_2;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ char * return_data;
+STRING *final_destination;
+
+ char *t_0; STRING *ts_0;
+ PMC *t_1; long i_1;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_s_sc(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_c_sc(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_iii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_i3(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_0;
+ PMC *t_1; int i_1;
+ 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);
+ 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);
+
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_t_b(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ STRING *t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+}
+static void
+pcf_t_B(PARROT_INTERP, 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);
+ char * return_data;
+STRING *final_destination;
+
+ char *t_0; STRING *ts_0;
+ 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);
+ 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);
+ if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_v_P(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_0;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(t_0);
+
+
+}
+static void
+pcf_v_pP(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0;
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_p_ip(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ INTVAL t_0;
+ PMC *t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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 = 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);
+
+
+}
+static void
+pcf_i_33(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0; int i_0;
+ PMC *t_1; int i_1;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ void * return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ INTVAL t_2;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_v_JO(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, orig_func);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(interp, t_1);
+
+
+
+}
+static void
+pcf_i_JO(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_i_JOi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ INTVAL t_2;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+
+}
+static void
+pcf_i_JOt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC * t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_Jt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_1; STRING *ts_1;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_Ji(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ INTVAL t_1;
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+
+ GETATTR_NCI_orig_func(interp, self, 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);
+
+
+}
+static void
+pcf_v_Vi(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0; void *v_0;
+ INTVAL t_1;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(&v_0, t_1);
+
+ VTABLE_set_pointer(interp, t_0, v_0);
+
+}
+static void
+pcf_p_ppiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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 = 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);
+
+
+
+
+
+}
+static void
+pcf_p_ppiiiiiii(PARROT_INTERP, 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);
+ void * return_data;
+PMC * final_destination = PMCNULL;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ INTVAL t_8;
+ 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);
+ 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 = 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);
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_ppiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_i_ppiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ 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);
+ 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);
+
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ 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);
+ 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);
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ INTVAL t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ 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);
+ 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);
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppt(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ char *t_2; STRING *ts_2;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_pppi(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ INTVAL t_3;
+ 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);
+ 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);
+
+
+
+
+}
+static void
+pcf_i_pppii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+
+
+
+}
+static void
+pcf_i_pppiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ 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);
+ 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);
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppppiiiiii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ PMC *t_1;
+ PMC *t_2;
+ PMC *t_3;
+ INTVAL t_4;
+ INTVAL t_5;
+ INTVAL t_6;
+ INTVAL t_7;
+ INTVAL t_8;
+ INTVAL t_9;
+ 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);
+ 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);
+
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_fff(PARROT_INTERP, 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);
+ void * return_data;
+
+ FLOATVAL t_0;
+ FLOATVAL t_1;
+ FLOATVAL t_2;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(t_0, t_1, t_2);
+
+
+
+
+}
+static void
+pcf_v_V(PARROT_INTERP, 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);
+ void * return_data;
+
+ PMC *t_0; void *v_0;
+ 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);
+ 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)
+{
+ 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);
+ void * return_data;
+
+ PMC *t_0; void *v_0;
+ PMC *t_1; void *v_1;
+ PMC *t_2; void *v_2;
+ 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);
+ fn_pointer = (func_t)D2FPTR(orig_func);
+ (*fn_pointer)(&v_0, &v_1, &v_2);
+
+ VTABLE_set_pointer(interp, t_0, v_0);
+VTABLE_set_pointer(interp, t_1, v_1);
+VTABLE_set_pointer(interp, t_2, v_2);
+}
+static void
+pcf_i_tV(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ char *t_0; STRING *ts_0;
+ PMC *t_1; void *v_1;
+ 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);
+ 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);
+ 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)
+{
+ 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ char *t_1; STRING *ts_1;
+ INTVAL t_2;
+ PMC *t_3; void *v_3;
+ PMC *t_4;
+ 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);
+ 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);
+
+if (t_1) Parrot_str_free_cstring(t_1);
+
+VTABLE_set_pointer(interp, t_3, v_3);
+
+}
+static void
+pcf_i_pid(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ FLOATVAL t_2;
+ 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);
+ 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);
+
+
+
+}
+static void
+pcf_i_pitii(PARROT_INTERP, 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);
+ INTVAL return_data;
+
+ PMC *t_0;
+ INTVAL t_1;
+ char *t_2; STRING *ts_2;
+ INTVAL t_3;
+ INTVAL t_4;
+ 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);
+ 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);
+
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+
+
+ void
+Parrot_nci_load_extra_thunks(PARROT_INTERP)
+{
+ PMC *iglobals;
+ PMC *temp_pmc;
+
+ PMC *HashPointer = NULL;
+
+ iglobals = interp->iglobals;
+ if (PMC_IS_NULL(iglobals))
+ PANIC(interp, "iglobals isn't created yet");
+
+ HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+ IGLOBALS_NCI_FUNCS);
+ if (PMC_IS_NULL(HashPointer))
+ PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_J);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJ"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JpP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jpii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_J);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJ"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_J);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJ"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_Jpti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJpti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pit);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpit"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ptt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vptt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jtiiipt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJtiiipt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_JttPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJttPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jtpi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJtpi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Vppp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iVppp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JpPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jpt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "v"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jiiip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJiiip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_illllllll);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "villllllll"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_l);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pbip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpbip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_piiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_P);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPPP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPPP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOSI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOSI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSII);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSII"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p3);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp3"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3p"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppd);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippd"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pipi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipipi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ptti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tptti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pttti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpttti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Ji);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jipp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJipp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jbip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJbip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_N_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "NJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JON);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJON"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOI);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOI"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOIS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOIS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOSP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOSP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ibi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iibi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_lttl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "llttl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piS);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiS"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "Si"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pttttt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipttttt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pttt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpttt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttiti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttiti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pit);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipit"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ttl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lttl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pttl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpttl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_t);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttitl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttitl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tiB3P);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptiB3P"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tip3P);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptip3P"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pPtiiipi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipPtiiipi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tpiibi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itpiibi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptippppi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptippppi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi33ipi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi33ipi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptipppi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptipppi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiil);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiil"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt33);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt33"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "c"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "d"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_d);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dd"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "f"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_ff);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fff"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_is);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fis"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_b);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ib"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_d);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "id"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiilsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiilsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iil);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiil"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iili);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiili"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iit);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiit"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ilsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iilsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_l);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "il"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_li);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ili"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p33);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip33"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333333);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333333"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p42p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip42p"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pb);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipb"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiilsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiilsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piil);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiil"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piili);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiili"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piit);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiit"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pilsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipilsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pli);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipli"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pll);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipll"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pllllllll);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipllllllll"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plsp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_psp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipsp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitl);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitl"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s22);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is22"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s222);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is222"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sss);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isss"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ssss);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "issss"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_t);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "it"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ti);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4i"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_42p);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i42p"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_l4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ll4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p33l);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp33l"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_33l);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l33l"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "p"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_B);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pB"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_b);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pb"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_piiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_t);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tpp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptpp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ttttttt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pttttttt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "s"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "t"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_i);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ti"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tl4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttl4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t4);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt4"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sc);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isc"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_sc);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ssc"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_sc);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "csc"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_b);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tb"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_B);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tB"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_P);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pP);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpP"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ip);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pip"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_33);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i33"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JO);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJO"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Ji);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Vi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiiiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppt);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippt"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppi);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppi"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppppiiiiii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippppiiiiii"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_fff);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vfff"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_V);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vV"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_VVV);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVVV"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tV);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itV"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptiVp);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptiVp"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pid);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipid"), temp_pmc);
+
+ temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+ VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitii);
+ VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitii"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+
Copied: branches/rm_cflags/src/nci/extra_thunks.nci (from r44158, trunk/src/nci/extra_thunks.nci)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/src/nci/extra_thunks.nci Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/src/nci/extra_thunks.nci)
@@ -0,0 +1,465 @@
+# Copyright (C) 2002-2010, Parrot Foundation.
+
+# Function signature declarations for Parrot Native Call Interface.
+# The first alphanumeric is the type of the return value,
+# the other alphanumerics denote the input parameter types.
+
+# Types
+
+# INT register stuff
+# I - INTVAL
+# c - char
+# s - short
+# i - int
+# l - long
+
+# NUM register stuff
+# N - FLOATVAL
+# f - float
+# d - double
+
+# STR register stuff
+# S - pointer to a STRING-register
+# t - character string (0-terminated)
+# Buffers are not valid return parameters,
+# use 'p' when the native function returns a pointer value
+# b - void *
+# B - void **
+
+# PMC register stuff
+# P - pointer to a PMC-register
+# O - pointer to PMC-register (object)
+# p - data pointer from PMC (on store into a new UnManagedStruct PMC)
+# 2 - pointer to short
+# 3 - pointer to int
+# 4 - pointer to long
+
+# void stuff
+# v - void
+
+# special stuff
+# 0 - insert a NULL (pointer) - doesn't consume a register
+# J - Parrot_Interp param
+# @ - slurpy array
+
+# callback stuff
+# U - Single PMC parameter to pass into callback - user data
+
+# Signatures
+
+# t/src/embed.t
+v J
+
+# mod_parrot
+i ip
+i JPip
+i JpP
+i Jpii
+i p
+i tp
+p J
+p Jp
+t J
+t Jpti
+t p
+t pt
+v p
+v pit
+v ptt
+v Jtiiipt
+p JttPP
+P Jtpi
+i Vppp
+v JpPP
+v pt
+v Jpt
+
+v
+v Jiiip # examples/japh/japh11.pasm
+v i
+v ii
+v illllllll
+v l
+v p
+v pbip
+v pi
+v piiii
+v pl
+v pp
+
+# For python
+i JPP
+
+# Py_func signatures
+P JP
+P JPP
+P JO
+S JO
+i P
+
+# PyBuiltins
+P JOPP
+P JOPPP
+v JOPP
+v JOPPP
+P JOPPPP
+P JOPPPPP
+
+# Added for Tcl
+I JOSI
+P JOSII
+
+# Added for TclLibrary
+t p3
+i pp3p
+i pp3
+i ppd
+i ptii
+i pipi
+t ptti
+t pti
+t pttti
+
+# libpast
+p Ji
+p Jipp
+p Jbip
+v Jp
+v JS
+
+# crypt
+t tt
+
+# Sub.__get_regs_used
+I JOt
+
+# declare_lex_preg
+v JOSI
+
+# Added for .NET => PIR translator dynamic PMCs.
+S JOi
+v JOi
+I JO
+N JO
+v JON
+P JOi
+v JOI
+
+# Make lua stop panic'ing.
+P JOI
+P JOIS
+S JOSP
+
+i # void function returning int like fork()
+i i3i # POSIX's waitpid
+i ibi # POSIX's read
+
+# win32
+l lttl
+
+i pip
+i piS
+S i
+
+# --- start mysqlclient library ---
+#
+# Created from mysql.h using the following manual method:
+#
+# Edited copy of mysql.h using vi by doing g/, *$/j (repeat) then g/\* *$/j
+# (repeat) to get all functions on one line each.
+#
+# Extracted list of api func names from
+# http://dev.mysql.com/doc/refman/4.1/en/c-api-functions.html and copied to a
+# temporary file to clean up (mysql_api_names.txt)
+#
+# Stripped down to bare names and merged into one line separated by |
+# then egrep -w `cat mysql_api_names.txt` mysql.h > mysql_api.ncidef
+# then edit mysql_api.ncidef in vi: %s/^/ # /
+# to create space for nci signatures and to use original definition as a #
+# comment.
+#
+# This method isn't ideal, I'm just noting it here in case it helps others.
+# Ideally the process should be automated - but there be many dragons along
+# that path.
+#
+# NCI doesn't yet handle long long values (my_ulonglong), spec'd as long for now
+#
+#
+# MYSQL_FIELD and MYSQL_RES are structs
+# typedef char **MYSQL_ROW; /* return data as array of strings */
+# typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
+# typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
+#
+l p #! my_ulonglong mysql_num_rows(MYSQL_RES *res)
+i p # unsigned int mysql_num_fields(MYSQL_RES *res)
+c p # my_bool mysql_eof(MYSQL_RES *res)
+p pi # MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *res,
+# unsigned int fieldnr)
+p p # MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res)
+p p # MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res)
+i p # MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res)
+i p # unsigned int mysql_field_count(MYSQL *mysql)
+l p #! my_ulonglong mysql_affected_rows(MYSQL *mysql)
+l p #! my_ulonglong mysql_insert_id(MYSQL *mysql)
+i p # unsigned int mysql_errno(MYSQL *mysql)
+t p # const char * mysql_error(MYSQL *mysql)
+t p # const char * mysql_info(MYSQL *mysql)
+l p # unsigned long mysql_thread_id(MYSQL *mysql)
+t p # const char * mysql_character_set_name(MYSQL *mysql)
+p p # MYSQL * mysql_init(MYSQL *mysql)
+
+i pttttt # int mysql_ssl_set(MYSQL *mysql, const char *key,
+# const char *cert, const char *ca, const char *capath,
+# const char *cipher)
+c pttt # my_bool mysql_change_user(MYSQL *mysql, const char *user,
+# const char *passwd, const char *db)
+p pttttiti # MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
+# const char *user, const char *passwd,
+# const char *db, unsigned int port,
+# const char *unix_socket,
+# unsigned int clientflag)
+v p # void mysql_close(MYSQL *sock)
+i pt # int mysql_select_db(MYSQL *mysql, const char *db)
+i pt # int mysql_query(MYSQL *mysql, const char *q)
+i ptl # int mysql_real_query(MYSQL *mysql, const char *q,
+# unsigned long length)
+i p # int mysql_shutdown(MYSQL *mysql)
+i p # int mysql_dump_debug_info(MYSQL *mysql)
+i pi # int mysql_refresh(MYSQL *mysql, unsigned int refresh_options)
+i pl # int mysql_kill(MYSQL *mysql,unsigned long pid)
+i p # int mysql_ping(MYSQL *mysql)
+t p # const char * mysql_stat(MYSQL *mysql)
+t p # const char * mysql_get_server_info(MYSQL *mysql)
+t p # const char * mysql_get_client_info(void)
+l # unsigned long mysql_get_client_version(void)
+t p # const char * mysql_get_host_info(MYSQL *mysql)
+t p # unsigned int mysql_get_proto_info(MYSQL *mysql)
+p pt # MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild)
+p pt # MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild)
+p ptt # MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table,
+# const char *wild)
+p p # MYSQL_RES * mysql_list_processes(MYSQL *mysql)
+p p # MYSQL_RES * mysql_store_result(MYSQL *mysql)
+p p # MYSQL_RES * mysql_use_result(MYSQL *mysql)
+i pit # int mysql_options(MYSQL *mysql,enum mysql_option option,
+# const char *arg)
+v p # void mysql_free_result(MYSQL_RES *result)
+v pl # void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
+p pp # MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,
+# MYSQL_ROW_OFFSET offset)
+i pi # MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,
+# MYSQL_FIELD_OFFSET offset)
+
+p p # MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
+l p # unsigned long * mysql_fetch_lengths(MYSQL_RES *result)
+p p # MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result)
+l ttl # unsigned long mysql_escape_string(char *to,const char *from, unsigned long from_length)
+l pttl # unsigned long mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, unsigned long length)
+v t # void mysql_debug(const char *debug)
+# --- end mysqlclient library ---
+
+# My mysql does not fit with the previous section
+p pttttitl
+# MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
+# const char *user,
+# const char *passwd,
+# const char *db,
+# unsigned int port,
+# const char *unix_socket,
+# unsigned long clientflag)
+
+# Used by library/pcre.pir
+p tiB3P
+p tip3P
+i pPtiiipi
+i tpiibi
+
+# Oddball ones for postgres
+p ptippppi PQexecParams
+p pi33ipi PQfn
+p pttip PQprepage
+p ptipppi PQexecPrepared
+p ppP PQsetNoticeReceiver
+
+# Used by SDL
+p iiil
+i ppl
+v pip
+p pti
+i ppp
+# added by RNH for the RenderXXX_XXXX text routines
+p ptii
+
+# Used by SDL::Font
+p ti
+p ptp
+i pt33
+
+# t/pmc/nci.t
+c
+c p
+c pi
+
+d
+d d
+
+f
+f ff
+f is
+
+i
+i b
+i d
+i i
+i ii
+i ii4
+i ii4i
+i iiii
+i iiilsp
+i iil
+i iili
+i iip
+i iit
+i iiti
+i ilsp
+i iti
+i l
+i li
+i lp
+i lsp
+i p
+i p33
+i p333
+i p333333
+i p4
+i p42p
+i p4i
+i pb
+i pi
+i pii
+i pii4
+i pii4i
+i piii
+i piiiiii
+i piiilsp
+i piil
+i piili
+i piit
+i piiti
+i pilsp
+i pit
+i pl
+i pli
+i pll
+i pllllllll
+i plp
+i plsp
+i pp
+i ppi
+i ppiiiiiiii
+i pppp
+i psp
+i pt
+i pti
+i pitl
+i s
+i s22
+i s222
+i sp
+i sss
+i ssss
+i t
+i ti
+i 4
+i 4i
+i 42p
+
+l
+l ii
+l l4
+l p
+l pi
+l pii
+l p33l
+l 33l
+
+p
+p B
+p b
+p Jt
+p i
+p ii
+p iiii
+p iiiiii
+p iiiiiiii
+p p
+p pt
+p pi
+p pii
+p piiii
+p t
+p tpp
+p ttttttt
+
+s
+
+t
+t i
+t ii
+t p
+t pi
+t pii
+t pt
+t t
+t tl4
+t t4
+
+i sc
+s sc
+c sc
+i iii
+i i3
+t b
+t B
+v P
+v pP
+p ip
+i 33
+v pii
+v JO
+i JO
+i JOi
+i JOt
+i Jt
+i Ji
+
+v Vi
+v p
+
+# Testing xlib
+
+p ppiii
+p ppiiiiiii
+i ppii
+i ppiii
+i ppiiii
+i ppiiiii
+i ppiiiiii
+i ppt
+i pppi
+i pppii
+i pppiiii
+i ppppiiiiii
+
+# Testing OpenGL
+v fff
+
+# Testing Pointer PMC use
+v V
+v VVV
+
+# Testing SQLite
+i tV
+i ptiVp
+i pid
+i pitii
Modified: branches/rm_cflags/src/nci_test.c
==============================================================================
--- branches/rm_cflags/src/nci_test.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/nci_test.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -67,7 +67,7 @@
/* Function declarations.
*** If you add a new test function here,
-*** please update src/libnci_test.def and src/call_list.txt too. ***
+*** please update src/libnci_test.def and src/nci/extra_thunks.nci too. ***
*/
Modified: branches/rm_cflags/src/oo.c
==============================================================================
--- branches/rm_cflags/src/oo.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/oo.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -152,35 +152,6 @@
/*
-=item C<PMC * Parrot_oo_get_namespace(PARROT_INTERP, const PMC *classobj)>
-
-Lookup a namespace object from a class PMC.
-
-This function is deprecated, see TT #1069.
-Use the inspect interface in the Class PMC instead.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC *
-Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
-{
- ASSERT_ARGS(Parrot_oo_get_namespace)
- Parrot_Class_attributes * const _class = PARROT_CLASS(classobj);
- PMC * const _namespace = _class->_namespace;
-
- if (PMC_IS_NULL(_namespace))
- return PMCNULL;
-
- return _namespace;
-}
-
-
-/*
-
=item C<PMC * Parrot_oo_get_class(PARROT_INTERP, PMC *key)>
Lookup a class object from a namespace, string, or key PMC.
Modified: branches/rm_cflags/src/pmc/namespace.pmc
==============================================================================
--- branches/rm_cflags/src/pmc/namespace.pmc Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/pmc/namespace.pmc Fri Feb 19 03:57:19 2010 (r44159)
@@ -387,7 +387,8 @@
}
VTABLE PMC *get_pmc_keyed_str(STRING *key) {
- PMC *ns = (PMC *)parrot_hash_get(INTERP, (Hash *)SELF.get_pointer(), key);
+ Hash * const hash = (Hash *)SELF.get_pointer();
+ PMC *ns = (PMC *)parrot_hash_get(INTERP, hash, key);
if (!ns)
return PMCNULL;
@@ -400,8 +401,10 @@
}
VTABLE PMC *get_pmc_keyed(PMC *key) {
- /* PMC *ns = SUPER(key); */
+ PMC *ns = SUPER(key);
+ /* Is this equivalent?
PMC *ns = INTERP->vtables[enum_class_Hash]->get_pmc_keyed(INTERP, SELF, key);
+ */
if (!PMC_IS_NULL(ns))
return ns;
@@ -422,9 +425,29 @@
return VTABLE_get_pmc_keyed(INTERP, ns, key);
}
-
+ else if (VTABLE_does(INTERP, key, CONST_STRING(INTERP, "array"))) {
+ 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) {
+ ns = PMCNULL;
+ /* What to do here? Throw an exception or something? */
+ break;
+ }
+ ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+ i++;
+ }
+ return ns;
+ }
+ else {
+ STRING * const name = VTABLE_get_string(INTERP, key);
+ ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+ return ns;
+ }
+ /* If we get the wrong type, should we throw an exception?
Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_GLOBAL_NOT_FOUND,
"Invalid namespace key in get_pmc_keyed_str");
+ */
}
VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
Modified: branches/rm_cflags/src/pmc/opcode.pmc
==============================================================================
--- branches/rm_cflags/src/pmc/opcode.pmc Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/pmc/opcode.pmc Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,3 +1,19 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/opcode.pmc
+
+=head1 DESCRIPTION
+
+Implements opcode VTABLEs.
+
+=cut
+
+*/
+
#include "parrot/parrot.h"
pmclass Opcode auto_attrs {
@@ -64,4 +80,17 @@
}
return attrs->full_name_cache;
}
+
+ METHOD op_count() {
+ Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+ INTVAL count = attrs->info->op_count;
+ RETURN(INTVAL count);
+ }
}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/rm_cflags/src/pmc/oplib.pmc
==============================================================================
--- branches/rm_cflags/src/pmc/oplib.pmc Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/pmc/oplib.pmc Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,3 +1,19 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/oplib.pmc
+
+=head1 DESCRIPTION
+
+Implements oplib VTABLEs.
+
+=cut
+
+*/
+
#include "parrot/parrot.h"
/* TODO: Since Opcode PMCs are essentially read-only after initialization
@@ -29,6 +45,11 @@
return num;
}
+ VTABLE INTVAL get_integer_keyed(PMC *key) {
+ STRING *str_key = key_string(INTERP, key);
+ return SELF.get_integer_keyed_str(str_key);
+ }
+
VTABLE PMC* get_pmc_keyed_str(STRING *name) {
PMC * const op = pmc_new_noinit(INTERP, enum_class_Opcode);
VTABLE_set_string_native(INTERP, op, name);
@@ -52,3 +73,10 @@
return INTERP->op_lib->op_count;
}
}
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Modified: branches/rm_cflags/src/runcore/profiling.c
==============================================================================
--- branches/rm_cflags/src/runcore/profiling.c Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/src/runcore/profiling.c Fri Feb 19 03:57:19 2010 (r44159)
@@ -34,7 +34,7 @@
#endif
#define PPROF_VERSION 2
-#define MAX_NAMESPACE_DEPTH 32
+#define MAX_NS_DEPTH 32
#define code_start interp->code->base.data
#define code_end (interp->code->base.data + interp->code->base.size)
@@ -44,6 +44,10 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+static void add_bogus_parent_runloop(
+ ARGIN(Parrot_profiling_runcore_t * runcore))
+ __attribute__nonnull__(1);
+
PARROT_CAN_RETURN_NULL
static void * init_profiling_core(PARROT_INTERP,
ARGIN(Parrot_profiling_runcore_t *runcore),
@@ -54,13 +58,17 @@
static void record_values_ascii_pprof(
ARGIN(Parrot_profiling_runcore_t * runcore),
+ ARGIN(PPROF_DATA *pprof_data),
ARGIN_NULLOK(Parrot_profiling_line type))
- __attribute__nonnull__(1);
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
static void record_values_none(
ARGIN(Parrot_profiling_runcore_t * runcore),
+ ARGIN(PPROF_DATA *pprof_data),
ARGIN_NULLOK(Parrot_profiling_line type))
- __attribute__nonnull__(1);
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
@@ -71,14 +79,18 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
+#define ASSERT_ARGS_add_bogus_parent_runloop __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(runcore))
#define ASSERT_ARGS_init_profiling_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(runcore) \
, PARROT_ASSERT_ARG(pc))
#define ASSERT_ARGS_record_values_ascii_pprof __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(runcore))
+ PARROT_ASSERT_ARG(runcore) \
+ , PARROT_ASSERT_ARG(pprof_data))
#define ASSERT_ARGS_record_values_none __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(runcore))
+ PARROT_ASSERT_ARG(runcore) \
+ , PARROT_ASSERT_ARG(pprof_data))
#define ASSERT_ARGS_runops_profiling_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(runcore) \
@@ -148,8 +160,7 @@
runcore->level = 0;
runcore->time_size = 32;
runcore->line_cache = parrot_new_pointer_hash(interp);
- runcore->time = mem_allocate_n_typed(runcore->time_size,
- UHUGEINTVAL);
+ runcore->time = mem_allocate_n_typed(runcore->time_size, UHUGEINTVAL);
/* figure out what format the output should be in */
output_cstr = Parrot_getenv(interp, CONST_STRING(interp, "PARROT_PROFILING_OUTPUT"));
@@ -250,9 +261,10 @@
{
ASSERT_ARGS(runops_profiling_core)
- PMC *preop_sub, *argv;
- opcode_t *preop_pc;
- UHUGEINTVAL op_time;
+ PMC *argv;
+ opcode_t *preop_pc;
+ UHUGEINTVAL op_time;
+ PPROF_DATA pprof_data[PPROF_DATA_MAX + 1];
runcore->runcore_start = Parrot_hires_get_time();
@@ -261,9 +273,7 @@
if (runcore->level >= runcore->time_size) {
runcore->time_size *= 2;
- runcore->time =
- mem_realloc_n_typed(runcore->time, runcore->time_size + 1,
- UHUGEINTVAL);
+ runcore->time = mem_realloc_n_typed(runcore->time, runcore->time_size + 1, UHUGEINTVAL);
}
/* store the time between DO_OP and the start of this runcore in this
@@ -277,22 +287,19 @@
/* argv isn't initialized until after :init (etc) subs are executed */
if (argv && !Profiling_have_printed_cli_TEST(runcore)) {
- PMC *iglobals = interp->iglobals;
- PMC *executable = VTABLE_get_pmc_keyed_int(interp, iglobals,
- IGLOBALS_EXECUTABLE);
- STRING *space = CONST_STRING(interp, " ");
- STRING *cli_args = Parrot_str_join(interp, space, argv);
- STRING *cli_str;
char *cli_cstr;
+ STRING *space, *cli_args, *cli_exe, *cli_str;
+ PMC *exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_EXECUTABLE);
- cli_str = Parrot_str_concat(interp, VTABLE_get_string(interp,
- executable), space, 0);
- cli_str = Parrot_str_concat(interp, cli_str, cli_args, 0);
+ space = CONST_STRING(interp, " ");
+ cli_args = Parrot_str_join(interp, space, argv);
+ cli_exe = VTABLE_get_string(interp, exe_name);
+ cli_str = Parrot_sprintf_c(interp, "%Ss %Ss", cli_exe, cli_args);
cli_cstr = Parrot_str_to_cstring(interp, cli_str);
/* CLI line won't reflect any options passed to the parrot binary. */
- runcore->pprof_data[PPROF_DATA_CLI] = (PPROF_DATA) cli_cstr;
- runcore->output_fn(runcore, PPROF_LINE_CLI);
+ pprof_data[PPROF_DATA_CLI] = (PPROF_DATA) cli_cstr;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_CLI);
Parrot_str_free_cstring(cli_cstr);
@@ -301,23 +308,12 @@
if (Profiling_first_loop_TEST(runcore)) {
- runcore->pprof_data[PPROF_DATA_VERSION] = (PPROF_DATA) PPROF_VERSION;
- runcore->output_fn(runcore, PPROF_LINE_VERSION);
+ Profiling_first_loop_CLEAR(runcore);
- /* make all separate runloops appear to come from a single source */
- runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
- runcore->pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) "no_file";
- runcore->pprof_data[PPROF_DATA_SUB_ADDR] = 1;
- runcore->pprof_data[PPROF_DATA_CTX_ADDR] = 1;
- runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
-
- runcore->pprof_data[PPROF_DATA_LINE] = runcore->runloop_count;
- runcore->pprof_data[PPROF_DATA_TIME] = 0;
- runcore->pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
- runcore->output_fn(runcore, PPROF_LINE_OP);
+ pprof_data[PPROF_DATA_VERSION] = (PPROF_DATA) PPROF_VERSION;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_VERSION);
- runcore->runloop_count++;
- Profiling_first_loop_CLEAR(runcore);
+ add_bogus_parent_runloop(runcore);
}
while (pc) {
@@ -332,7 +328,6 @@
preop_ctx_pmc = CURRENT_CONTEXT(interp);
preop_ctx = PMC_data_typed(preop_ctx_pmc, Parrot_Context*);
preop_ctx->current_pc = pc;
- preop_sub = preop_ctx->current_sub;
preop_pc = pc;
runcore->level++;
@@ -362,7 +357,7 @@
if (preop_ctx->current_sub) {
STRING *sub_name, *full_ns, *ns_separator, *preop_filename;
char *full_ns_cstr, *filename_cstr;
- STRING *ns_names[MAX_NAMESPACE_DEPTH];
+ STRING *ns_names[MAX_NS_DEPTH];
PMC *ns = preop_ctx->current_namespace;
INTVAL i;
@@ -375,7 +370,7 @@
full_ns = Parrot_str_new(interp, "", 0);
ns_separator = Parrot_str_new(interp, ";", 1);
- i = MAX_NAMESPACE_DEPTH - 1;
+ i = MAX_NS_DEPTH - 1;
for (;ns ; i--) {
if (i < 0) {
/* should probably warn about truncated namespace here */
@@ -387,7 +382,7 @@
i++;
i++; /* the root namespace has an empty name, so ignore it */
- for (;i < MAX_NAMESPACE_DEPTH; i++) {
+ 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);
}
@@ -396,11 +391,11 @@
full_ns = Parrot_str_concat(interp, full_ns, sub_name, 0);
full_ns_cstr = Parrot_str_to_cstring(interp, full_ns);
- runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;
- runcore->pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) filename_cstr;
- runcore->pprof_data[PPROF_DATA_SUB_ADDR] = (PPROF_DATA) preop_ctx->current_sub;
- runcore->pprof_data[PPROF_DATA_CTX_ADDR] = (PPROF_DATA) preop_ctx;
- runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
+ pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;
+ pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) filename_cstr;
+ pprof_data[PPROF_DATA_SUB_ADDR] = (PPROF_DATA) preop_ctx->current_sub;
+ pprof_data[PPROF_DATA_CTX_ADDR] = (PPROF_DATA) preop_ctx;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_CONTEXT_SWITCH);
Parrot_str_free_cstring(full_ns_cstr);
Parrot_str_free_cstring(filename_cstr);
@@ -428,7 +423,6 @@
if (!PMC_IS_NULL(annot)) {
- /* this is probably pessimal but it's just a poc at this point */
PMC *iter = VTABLE_get_iter(interp, annot);
while (VTABLE_get_bool(interp, iter)) {
@@ -437,9 +431,9 @@
char *key_cstr = Parrot_str_to_cstring(interp, key);
char *val_cstr = Parrot_str_to_cstring(interp, val);
- runcore->pprof_data[PPROF_DATA_ANNOTATION_NAME] = (PPROF_DATA) key_cstr;
- runcore->pprof_data[PPROF_DATA_ANNOTATION_VALUE] = (PPROF_DATA) val_cstr;
- runcore->output_fn(runcore, PPROF_LINE_ANNOTATION);
+ pprof_data[PPROF_DATA_ANNOTATION_NAME] = (PPROF_DATA) key_cstr;
+ pprof_data[PPROF_DATA_ANNOTATION_VALUE] = (PPROF_DATA) val_cstr;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_ANNOTATION);
Parrot_str_free_cstring(key_cstr);
Parrot_str_free_cstring(val_cstr);
@@ -447,30 +441,18 @@
}
}
- runcore->pprof_data[PPROF_DATA_LINE] = preop_line;
- runcore->pprof_data[PPROF_DATA_TIME] = op_time;
- runcore->pprof_data[PPROF_DATA_OPNAME] =
- (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
- runcore->output_fn(runcore, PPROF_LINE_OP);
+ pprof_data[PPROF_DATA_LINE] = preop_line;
+ pprof_data[PPROF_DATA_TIME] = op_time;
+ pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
}
/* make it easy to tell separate runloops apart */
if (runcore->level == 0) {
- runcore->output_fn(runcore, PPROF_LINE_END_OF_RUNLOOP);
- /* make all separate runloops appear to come from a single source */
- runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
- runcore->pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) "no_file";
- runcore->pprof_data[PPROF_DATA_SUB_ADDR] = 1;
- runcore->pprof_data[PPROF_DATA_CTX_ADDR] = 1;
- runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
-
- runcore->pprof_data[PPROF_DATA_LINE] = runcore->runloop_count;
- runcore->pprof_data[PPROF_DATA_TIME] = 0;
- runcore->pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
- runcore->output_fn(runcore, PPROF_LINE_OP);
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_END_OF_RUNLOOP);
- runcore->runloop_count++;
+ add_bogus_parent_runloop(runcore);
}
Profiling_exit_check_SET(runcore);
@@ -480,8 +462,45 @@
/*
+=item C<static void add_bogus_parent_runloop(Parrot_profiling_runcore_t *
+runcore)>
+
+Record profiling information for a bogus parent runloop. Parrot program
+generally have several runloops, so a little trickery is needed to profile them
+all as a single program. This is accomplished by having a fake sub named
+'main' which has no cost in itself but which appears to call all top-level
+runloops as children.
+
+=cut
+
+*/
+
+static void
+add_bogus_parent_runloop(ARGIN(Parrot_profiling_runcore_t * runcore))
+{
+ ASSERT_ARGS(add_bogus_parent_runloop)
+
+ PPROF_DATA pprof_data[PPROF_DATA_MAX+1];
+
+ /* make all separate runloops appear to come from a single source */
+ pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
+ pprof_data[PPROF_DATA_FILENAME] = (PPROF_DATA) "no_file";
+ pprof_data[PPROF_DATA_SUB_ADDR] = 1;
+ pprof_data[PPROF_DATA_CTX_ADDR] = 1;
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_CONTEXT_SWITCH);
+
+ pprof_data[PPROF_DATA_LINE] = runcore->runloop_count;
+ pprof_data[PPROF_DATA_TIME] = 0;
+ pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
+ runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
+
+ runcore->runloop_count++;
+}
+
+/*
+
=item C<static void record_values_ascii_pprof(Parrot_profiling_runcore_t *
-runcore, Parrot_profiling_line type)>
+runcore, PPROF_DATA *pprof_data, Parrot_profiling_line type)>
Record profiling data to a filehandle in a human-readable format.
@@ -491,17 +510,17 @@
static void
record_values_ascii_pprof(ARGIN(Parrot_profiling_runcore_t * runcore),
-ARGIN_NULLOK(Parrot_profiling_line type))
+ARGIN(PPROF_DATA *pprof_data), ARGIN_NULLOK(Parrot_profiling_line type))
{
ASSERT_ARGS(record_values_ascii_pprof)
switch (type) {
case PPROF_LINE_CONTEXT_SWITCH:
{
- char *pd_namespace = (char *) runcore->pprof_data[PPROF_DATA_NAMESPACE];
- char *pd_filename = (char *) runcore->pprof_data[PPROF_DATA_FILENAME];
- void *sub_addr = (void *) runcore->pprof_data[PPROF_DATA_SUB_ADDR];
- void *ctx_addr = (void *) runcore->pprof_data[PPROF_DATA_CTX_ADDR];
+ char *pd_namespace = (char *) pprof_data[PPROF_DATA_NAMESPACE];
+ char *pd_filename = (char *) pprof_data[PPROF_DATA_FILENAME];
+ void *sub_addr = (void *) pprof_data[PPROF_DATA_SUB_ADDR];
+ void *ctx_addr = (void *) pprof_data[PPROF_DATA_CTX_ADDR];
fprintf(runcore->profile_fd,
"CS:{x{ns:%s}x}{x{file:%s}x}{x{sub:%p}x}{x{ctx:%p}x}\n",
pd_namespace, pd_filename, sub_addr, ctx_addr);
@@ -510,9 +529,9 @@
case PPROF_LINE_OP:
{
- PPROF_DATA line = (PPROF_DATA) runcore->pprof_data[PPROF_DATA_LINE];
- PPROF_DATA time = (PPROF_DATA) runcore->pprof_data[PPROF_DATA_TIME];
- char *opname = (char *) runcore->pprof_data[PPROF_DATA_OPNAME];
+ PPROF_DATA line = (PPROF_DATA) pprof_data[PPROF_DATA_LINE];
+ PPROF_DATA time = (PPROF_DATA) pprof_data[PPROF_DATA_TIME];
+ char *opname = (char *) pprof_data[PPROF_DATA_OPNAME];
fprintf(runcore->profile_fd, "OP:{x{line:%d}x}{x{time:%d}x}{x{op:%s}x}\n",
(int) line, (int) time, opname);
}
@@ -520,21 +539,17 @@
case PPROF_LINE_ANNOTATION:
{
- char *name = (char *) runcore->pprof_data[PPROF_DATA_ANNOTATION_NAME];
- char *value = (char *) runcore->pprof_data[PPROF_DATA_ANNOTATION_VALUE];
+ char *name = (char *) pprof_data[PPROF_DATA_ANNOTATION_NAME];
+ char *value = (char *) pprof_data[PPROF_DATA_ANNOTATION_VALUE];
fprintf(runcore->profile_fd, "AN:{x{name:%s}x}{x{value:%s}x}\n", name, value);
}
case PPROF_LINE_CLI:
- {
- char *cli = (char *) runcore->pprof_data[PPROF_DATA_CLI];
- fprintf(runcore->profile_fd, "CLI: %s\n", cli);
- }
+ fprintf(runcore->profile_fd, "CLI: %s\n", (char *) pprof_data[PPROF_DATA_CLI]);
break;
case PPROF_LINE_VERSION:
- fprintf(runcore->profile_fd, "VERSION:%d\n",
- (int) runcore->pprof_data[PPROF_DATA_VERSION]);
+ fprintf(runcore->profile_fd, "VERSION:%d\n", (int) pprof_data[PPROF_DATA_VERSION]);
break;
case PPROF_LINE_END_OF_RUNLOOP:
@@ -549,7 +564,7 @@
/*
=item C<static void record_values_none(Parrot_profiling_runcore_t * runcore,
-Parrot_profiling_line type)>
+PPROF_DATA *pprof_data, Parrot_profiling_line type)>
Accept data but don't actually write it anywhere.
@@ -559,10 +574,11 @@
static void
record_values_none(ARGIN(Parrot_profiling_runcore_t * runcore),
-ARGIN_NULLOK(Parrot_profiling_line type))
+ARGIN(PPROF_DATA *pprof_data), ARGIN_NULLOK(Parrot_profiling_line type))
{
ASSERT_ARGS(record_values_none)
UNUSED(runcore);
+ UNUSED(pprof_data);
UNUSED(type);
}
Modified: branches/rm_cflags/t/codingstd/linelength.t
==============================================================================
--- branches/rm_cflags/t/codingstd/linelength.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/codingstd/linelength.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -125,5 +125,8 @@
compilers/pirc/macro/macroparser.h
compilers/pirc/src/hdocprep.l
compilers/pirc/src/hdocprep.c
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
# these ones include long POD
docs/embed.pod
Modified: branches/rm_cflags/t/codingstd/trailing_space.t
==============================================================================
--- branches/rm_cflags/t/codingstd/trailing_space.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/codingstd/trailing_space.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -9,6 +9,8 @@
use Parrot::Distribution;
use Test::More tests => 1;
use Parrot::Test::Util::Runloop;
+use Parrot::Config qw/ %PConfig /;
+use File::Spec;
=head1 NAME
@@ -42,9 +44,20 @@
$DIST->get_pir_language_files(),
);
+# skip files listed in the __DATA__ section
+my $build_dir = $PConfig{build_dir};
+my %skip_files;
+while (<DATA>) {
+ next if m{^#};
+ next if m{^\s*$};
+ chomp;
+ $_ = File::Spec->catfile($build_dir, $_);
+ $skip_files{$_}++;
+}
+
Parrot::Test::Util::Runloop->testloop(
name => 'no trailing whitespace',
- files => [@files],
+ files => [grep {not $skip_files{$_->path}} @files],
per_line => sub { $_[0] !~ m{[ \t]$}m },
diag_prefix => 'Trailing space or tab char found'
);
@@ -55,3 +68,9 @@
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4:
+
+__DATA__
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
+
Deleted: branches/rm_cflags/t/library/mt19937ar.t
==============================================================================
--- branches/rm_cflags/t/library/mt19937ar.t Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,129 +0,0 @@
-#!parrot
-# Copyright (C) 2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/library/mt19937ar.t
-
-=head1 DESCRIPTION
-
-Math::Random::MT tests
-
-=head1 SYNOPSIS
-
- % parrot t/library/mt19937ar.t
-
-=cut
-
-.sub 'main' :main
- load_bytecode 'Math/Random/mt19937ar.pbc'
-
- .include 'test_more.pir'
-
- plan(10)
-
- test_interfaces()
- test_output()
-.end
-
-.sub 'test_interfaces'
- .local pmc mt
- mt = new [ 'Math'; 'Random'; 'MT' ]
-
- $S0 = typeof mt
- is($S0, 'Math;Random;MT', "MT typeof")
-
- $I0 = can mt, 'init_genrand'
- ok($I0, "MT can init_genrand")
-
- $I0 = can mt, 'init_by_array'
- ok($I0, "MT can init_by_array")
-
- $I0 = can mt, 'genrand_int32'
- ok($I0, "MT can genrand_int32")
-
- $I0 = can mt, 'genrand_int31'
- ok($I0, "MT can genrand_int31")
-
- $I0 = can mt, 'genrand_real1'
- ok($I0, "MT can genrand_real1")
-
- $I0 = can mt, 'genrand_real2'
- ok($I0, "MT can genrand_real2")
-
- $I0 = can mt, 'genrand_real3'
- ok($I0, "MT can genrand_real3")
-
- $I0 = can mt, 'genrand_res53'
- ok($I0, "MT can genrand_res53")
-.end
-
-.sub 'generate_output' :anon
- .param pmc fh
- .local pmc mt
- mt = new [ 'Math'; 'Random'; 'MT' ]
- .local pmc init
- new init, 'FixedIntegerArray'
- set init, 4
- set init[0], 0x123
- set init[1], 0x234
- set init[2], 0x345
- set init[3], 0x456
- mt.'init_by_array'(init)
- fh.'puts'( "1000 outputs of genrand_int32()\n" )
- .local int i
- i = 0
- new $P0, 'FixedPMCArray'
- set $P0, 1
- L1:
- unless i < 1000 goto L2
- $I0 = mt.'genrand_int32'()
- $P0[0] = $I0
- $S0 = sprintf "%10lu ", $P0
- fh.'puts'( $S0 )
- $I0 = i % 5
- unless $I0 == 4 goto L3
- fh.'puts'( "\n" )
- L3:
- inc i
- goto L1
- L2:
- fh.'puts'( "\n1000 outputs of genrand_real2()\n" )
- i = 0
- L4:
- unless i < 1000 goto L5
- $N0 = mt.'genrand_real2'()
- $P0[0] = $N0
- $S0 = sprintf "%10.8f ", $P0
- fh.'puts'( $S0 )
- $I0 = i % 5
- unless $I0 == 4 goto L6
- fh.'puts'( "\n" )
- L6:
- inc i
- goto L4
- L5:
-.end
-
-.sub 'test_output'
- .local pmc fh
- fh = new 'FileHandle'
- .local string ref
- ref = fh.'readall'('t/library/mt19937ar.txt')
- $P0 = split "\r\n", ref # hack for Windows
- ref = join "\n", $P0
- fh = new 'StringHandle'
- fh.'open'('output', 'w')
- generate_output(fh)
- $S0 = fh.'readall'()
- fh.'close'()
- is($S0, ref, "mt19937ar output")
-.end
-
-
-# Local Variables:
-# mode: pir
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:
Deleted: branches/rm_cflags/t/library/mt19937ar.txt
==============================================================================
--- branches/rm_cflags/t/library/mt19937ar.txt Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,403 +0,0 @@
-1000 outputs of genrand_int32()
-1067595299 955945823 477289528 4107218783 4228976476
-3344332714 3355579695 227628506 810200273 2591290167
-2560260675 3242736208 646746669 1479517882 4245472273
-1143372638 3863670494 3221021970 1773610557 1138697238
-1421897700 1269916527 2859934041 1764463362 3874892047
-3965319921 72549643 2383988930 2600218693 3237492380
-2792901476 725331109 605841842 271258942 715137098
-3297999536 1322965544 4229579109 1395091102 3735697720
-2101727825 3730287744 2950434330 1661921839 2895579582
-2370511479 1004092106 2247096681 2111242379 3237345263
-4082424759 219785033 2454039889 3709582971 835606218
-2411949883 2735205030 756421180 2175209704 1873865952
-2762534237 4161807854 3351099340 181129879 3269891896
- 776029799 2218161979 3001745796 1866825872 2133627728
- 34862734 1191934573 3102311354 2916517763 1012402762
-2184831317 4257399449 2899497138 3818095062 3030756734
-1282161629 420003642 2326421477 2741455717 1278020671
-3744179621 271777016 2626330018 2560563991 3055977700
-4233527566 1228397661 3595579322 1077915006 2395931898
-1851927286 3013683506 1999971931 3006888962 1049781534
-1488758959 3491776230 104418065 2448267297 3075614115
-3872332600 891912190 3936547759 2269180963 2633455084
-1047636807 2604612377 2709305729 1952216715 207593580
-2849898034 670771757 2210471108 467711165 263046873
-3569667915 1042291111 3863517079 1464270005 2758321352
-3790799816 2301278724 3106281430 7974801 2792461636
- 555991332 621766759 1322453093 853629228 686962251
-1455120532 957753161 1802033300 1021534190 3486047311
-1902128914 3701138056 4176424663 1795608698 560858864
-3737752754 3141170998 1553553385 3367807274 711546358
-2475125503 262969859 251416325 2980076994 1806565895
- 969527843 3529327173 2736343040 2987196734 1649016367
-2206175811 3048174801 3662503553 3138851612 2660143804
-1663017612 1816683231 411916003 3887461314 2347044079
-1015311755 1203592432 2170947766 2569420716 813872093
-1105387678 1431142475 220570551 4243632715 4179591855
-2607469131 3090613241 282341803 1734241730 1391822177
-1001254810 827927915 1886687171 3935097347 2631788714
-3905163266 110554195 2447955646 3717202975 3304793075
-3739614479 3059127468 953919171 2590123714 1132511021
-3795593679 2788030429 982155079 3472349556 859942552
-2681007391 2299624053 647443547 233600422 608168955
-3689327453 1849778220 1608438222 3968158357 2692977776
-2851872572 246750393 3582818628 3329652309 4036366910
-1012970930 950780808 3959768744 2538550045 191422718
-2658142375 3276369011 2927737484 1234200027 1920815603
-3536074689 1535612501 2184142071 3276955054 428488088
-2378411984 4059769550 3913744741 2732139246 64369859
-3755670074 842839565 2819894466 2414718973 1010060670
-1839715346 2410311136 152774329 3485009480 4102101512
-2852724304 879944024 1785007662 2748284463 1354768064
-3267784736 2269127717 3001240761 3179796763 895723219
- 865924942 4291570937 89355264 1471026971 4114180745
-3201939751 2867476999 2460866060 3603874571 2238880432
-3308416168 2072246611 2755653839 3773737248 1709066580
-4282731467 2746170170 2832568330 433439009 3175778732
- 26248366 2551382801 183214346 3893339516 1928168445
-1337157619 3429096554 3275170900 1782047316 4264403756
-1876594403 4289659572 3223834894 1728705513 4068244734
-2867840287 1147798696 302879820 1730407747 1923824407
-1180597908 1569786639 198796327 560793173 2107345620
-2705990316 3448772106 3678374155 758635715 884524671
- 486356516 1774865603 3881226226 2635213607 1181121587
-1508809820 3178988241 1594193633 1235154121 326117244
-2304031425 937054774 2687415945 3192389340 2003740439
-1823766188 2759543402 10067710 1533252662 4132494984
- 82378136 420615890 3467563163 541562091 3535949864
-2277319197 3330822853 3215654174 4113831979 4204996991
-2162248333 3255093522 2219088909 2978279037 255818579
-2859348628 3097280311 2569721123 1861951120 2907080079
-2719467166 998319094 2521935127 2404125338 259456032
-2086860995 1839848496 1893547357 2527997525 1489393124
-2860855349 76448234 2264934035 744914583 2586791259
-1385380501 66529922 1819103258 1899300332 2098173828
-1793831094 276463159 360132945 4178212058 595015228
- 177071838 2800080290 1573557746 1548998935 378454223
-1460534296 1116274283 3112385063 3709761796 827999348
-3580042847 1913901014 614021289 4278528023 1905177404
- 45407939 3298183234 1184848810 3644926330 3923635459
-1627046213 3677876759 969772772 1160524753 1522441192
- 452369933 1527502551 832490847 1003299676 1071381111
-2891255476 973747308 4086897108 1847554542 3895651598
-2227820339 1621250941 2881344691 3583565821 3510404498
- 849362119 862871471 797858058 2867774932 2821282612
-3272403146 3997979905 209178708 1805135652 6783381
-2823361423 792580494 4263749770 776439581 3798193823
-2853444094 2729507474 1071873341 1329010206 1289336450
-3327680758 2011491779 80157208 922428856 1158943220
-1667230961 2461022820 2608845159 387516115 3345351910
-1495629111 4098154157 3156649613 3525698599 4134908037
- 446713264 2137537399 3617403512 813966752 1157943946
-3734692965 1680301658 3180398473 3509854711 2228114612
-1008102291 486805123 863791847 3189125290 1050308116
-3777341526 4291726501 844061465 1347461791 2826481581
- 745465012 2055805750 4260209475 2386693097 2980646741
- 447229436 2077782664 1232942813 4023002732 1399011509
-3140569849 2579909222 3794857471 900758066 2887199683
-1720257997 3367494931 2668921229 955539029 3818726432
-1105704962 3889207255 2277369307 2746484505 1761846513
-2413916784 2685127085 4240257943 1166726899 4215215715
-3082092067 3960461946 1663304043 2087473241 4162589986
-2507310778 1579665506 767234210 970676017 492207530
-1441679602 1314785090 3262202570 3417091742 1561989210
-3011406780 1146609202 3262321040 1374872171 1634688712
-1280458888 2230023982 419323804 3262899800 39783310
-1641619040 1700368658 2207946628 2571300939 2424079766
- 780290914 2715195096 3390957695 163151474 2309534542
-1860018424 555755123 280320104 1604831083 2713022383
-1728987441 3639955502 623065489 3828630947 4275479050
-3516347383 2343951195 2430677756 635534992 3868699749
- 808442435 3070644069 4282166003 2093181383 2023555632
-1568662086 3422372620 4134522350 3016979543 3259320234
-2888030729 3185253876 4258779643 1267304371 1022517473
- 815943045 929020012 2995251018 3371283296 3608029049
-2018485115 122123397 2810669150 1411365618 1238391329
-1186786476 3155969091 2242941310 1765554882 279121160
-4279838515 1641578514 3796324015 13351065 103516986
-1609694427 551411743 2493771609 1316337047 3932650856
-4189700203 463397996 2937735066 1855616529 2626847990
- 55091862 3823351211 753448970 4045045500 1274127772
-1124182256 92039808 2126345552 425973257 386287896
-2589870191 1987762798 4084826973 2172456685 3366583455
-3602966653 2378803535 2901764433 3716929006 3710159000
-2653449155 3469742630 3096444476 3932564653 2595257433
- 318974657 3146202484 853571438 144400272 3768408841
- 782634401 2161109003 570039522 1886241521 14249488
-2230804228 1604941699 3928713335 3921942509 2155806892
- 134366254 430507376 1924011722 276713377 196481886
-3614810992 1610021185 1785757066 851346168 3761148643
-2918835642 3364422385 3012284466 3735958851 2643153892
-3778608231 1164289832 205853021 2876112231 3503398282
-3078397001 3472037921 1748894853 2740861475 316056182
-1660426908 168885906 956005527 3984354789 566521563
-1001109523 1216710575 2952284757 3834433081 3842608301
-2467352408 3974441264 3256601745 1409353924 1329904859
-2307560293 3125217879 3622920184 3832785684 3882365951
-2308537115 2659155028 1450441945 3532257603 3186324194
-1225603425 1124246549 175808705 3009142319 2796710159
-3651990107 160762750 1902254979 1698648476 1134980669
- 497144426 3302689335 4057485630 3603530763 4087252587
- 427812652 286876201 823134128 1627554964 3745564327
-2589226092 4202024494 62878473 3275585894 3987124064
-2791777159 1916869511 2585861905 1375038919 1403421920
- 60249114 3811870450 3021498009 2612993202 528933105
-2757361321 3341402964 2621861700 273128190 4015252178
-3094781002 1621621288 2337611177 1796718448 1258965619
-4241913140 2138560392 3022190223 4174180924 450094611
-3274724580 617150026 2704660665 1469700689 1341616587
- 356715071 1188789960 2278869135 1766569160 2795896635
- 57824704 2893496380 1235723989 1630694347 3927960522
- 428891364 1814070806 2287999787 4125941184 3968103889
-3548724050 1025597707 1404281500 2002212197 92429143
-2313943944 2403086080 3006180634 3561981764 1671860914
-1768520622 1803542985 844848113 3006139921 1410888995
-1157749833 2125704913 1789979528 1799263423 741157179
-2405862309 767040434 2655241390 3663420179 2172009096
-2511931187 1680542666 231857466 1154981000 157168255
-1454112128 3505872099 1929775046 2309422350 2143329496
-2960716902 407610648 2938108129 2581749599 538837155
-2342628867 430543915 740188568 1937713272 3315215132
-2085587024 4030765687 766054429 3517641839 689721775
-1294158986 1753287754 4202601348 1974852792 33459103
-3568087535 3144677435 1686130825 4134943013 3005738435
-3599293386 426570142 754104406 3660892564 1964545167
- 829466833 821587464 1746693036 1006492428 1595312919
-1256599985 1024482560 1897312280 2902903201 691790057
-1037515867 3176831208 1968401055 2173506824 1089055278
-1748401123 2941380082 968412354 1818753861 2973200866
-3875951774 1119354008 3988604139 1647155589 2232450826
-3486058011 3655784043 3759258462 847163678 1082052057
- 989516446 2871541755 3196311070 3929963078 658187585
-3664944641 2175149170 2203709147 2756014689 2456473919
-3890267390 1293787864 2830347984 3059280931 4158802520
-1561677400 2586570938 783570352 1355506163 31495586
-3789437343 3340549429 2092501630 896419368 671715824
-3530450081 3603554138 1055991716 3442308219 1499434728
-3130288473 3639507000 17769680 2259741420 487032199
-4227143402 3693771256 1880482820 3924810796 381462353
-4017855991 2452034943 2736680833 2209866385 2128986379
- 437874044 595759426 641721026 1636065708 3899136933
- 629879088 3591174506 351984326 2638783544 2348444281
-2341604660 2123933692 143443325 1525942256 364660499
- 599149312 939093251 1523003209 106601097 376589484
-1346282236 1297387043 764598052 3741218111 933457002
-1886424424 3219631016 525405256 3014235619 323149677
-2038881721 4100129043 2851715101 2984028078 1888574695
-2014194741 3515193880 4180573530 3461824363 2641995497
-3179230245 2902294983 2217320456 4040852155 1784656905
-3311906931 87498458 2752971818 2635474297 2831215366
-3682231106 2920043893 3772929704 2816374944 309949752
-2383758854 154870719 385111597 1191604312 1840700563
- 872191186 2925548701 1310412747 2102066999 1504727249
-3574298750 1191230036 3330575266 3180292097 3539347721
- 681369118 3305125752 3648233597 950049240 4173257693
-1760124957 512151405 681175196 580563018 1169662867
-4015033554 2687781101 699691603 2673494188 1137221356
- 123599888 472658308 1053598179 1012713758 3481064843
-3759461013 3981457956 3830587662 1877191791 3650996736
- 988064871 3515461600 4089077232 2225147448 1249609188
-2643151863 3896204135 2416995901 1397735321 3460025646
-
-1000 outputs of genrand_real2()
-0.76275443 0.99000644 0.98670464 0.10143112 0.27933125
-0.69867227 0.94218740 0.03427201 0.78842173 0.28180608
-0.92179002 0.20785655 0.54534773 0.69644020 0.38107718
-0.23978165 0.65286910 0.07514568 0.22765211 0.94872929
-0.74557914 0.62664415 0.54708246 0.90959343 0.42043116
-0.86334511 0.19189126 0.14718544 0.70259889 0.63426346
-0.77408121 0.04531601 0.04605807 0.88595519 0.69398270
-0.05377184 0.61711170 0.05565708 0.10133577 0.41500776
-0.91810699 0.22320679 0.23353705 0.92871862 0.98897234
-0.19786706 0.80558809 0.06961067 0.55840445 0.90479405
-0.63288060 0.95009721 0.54948447 0.20645042 0.45000959
-0.87050869 0.70806991 0.19406895 0.79286390 0.49332866
-0.78483914 0.75145146 0.12341941 0.42030252 0.16728160
-0.59906494 0.37575460 0.97815160 0.39815952 0.43595080
-0.04952478 0.33917805 0.76509902 0.61034321 0.90654701
-0.92915732 0.85365931 0.18812377 0.65913428 0.28814566
-0.59476081 0.27835931 0.60722542 0.68310435 0.69387186
-0.03699800 0.65897714 0.17527003 0.02889304 0.86777366
-0.12352068 0.91439461 0.32022990 0.44445731 0.34903686
-0.74639273 0.65918367 0.92492794 0.31872642 0.77749724
-0.85413832 0.76385624 0.32744211 0.91326300 0.27458185
-0.22190155 0.19865383 0.31227402 0.85321225 0.84243342
-0.78544200 0.71854080 0.92503892 0.82703064 0.88306297
-0.47284073 0.70059042 0.48003761 0.38671694 0.60465770
-0.41747204 0.47163243 0.72750808 0.65830223 0.10955369
-0.64215401 0.23456345 0.95944940 0.72822249 0.40888451
-0.69980355 0.26677428 0.57333635 0.39791582 0.85377858
-0.76962816 0.72004885 0.90903087 0.51376506 0.37732665
-0.12691640 0.71249738 0.81217908 0.37037313 0.32772374
-0.14238259 0.05614811 0.74363008 0.39773267 0.94859135
-0.31452454 0.11730313 0.62962618 0.33334237 0.45547255
-0.10089665 0.56550662 0.60539371 0.16027624 0.13245301
-0.60959939 0.04671662 0.99356286 0.57660859 0.40269560
-0.45274629 0.06699735 0.85064246 0.87742744 0.54508392
-0.87242982 0.29321385 0.67660627 0.68230715 0.79052073
-0.48592054 0.25186266 0.93769755 0.28565487 0.47219067
-0.99054882 0.13155240 0.47110470 0.98556600 0.84397623
-0.12875246 0.90953202 0.49129015 0.23792727 0.79481194
-0.44337770 0.96564297 0.67749118 0.55684872 0.27286897
-0.79538393 0.61965356 0.22487929 0.02226018 0.49248200
-0.42247006 0.91797788 0.99250134 0.23449967 0.52531508
-0.10246337 0.78685622 0.34310922 0.89892996 0.40454552
-0.68608407 0.30752487 0.83601319 0.54956031 0.63777550
-0.82199797 0.24890696 0.48801123 0.48661910 0.51223987
-0.32969635 0.31075073 0.21393155 0.73453207 0.15565705
-0.58584522 0.28976728 0.97621478 0.61498701 0.23891470
-0.28518540 0.46809591 0.18371914 0.37597910 0.13492176
-0.66849449 0.82811466 0.56240330 0.37548956 0.27562998
-0.27521910 0.74096121 0.77176757 0.13748143 0.99747138
-0.92504502 0.09175241 0.21389176 0.21766512 0.31183245
-0.23271221 0.21207367 0.57903312 0.77523344 0.13242613
-0.31037988 0.01204835 0.71652949 0.84487594 0.14982178
-0.57423142 0.45677888 0.48420169 0.53465428 0.52667473
-0.46880526 0.49849733 0.05670710 0.79022476 0.03872047
-0.21697212 0.20443086 0.28949326 0.81678186 0.87629474
-0.92297064 0.27373097 0.84625273 0.51505586 0.00582792
-0.33295971 0.91848412 0.92537226 0.91760033 0.07541125
-0.71745848 0.61158698 0.00941650 0.03135554 0.71527471
-0.24821915 0.63636652 0.86159918 0.26450229 0.60160194
-0.35557725 0.24477500 0.07186456 0.51757096 0.62120362
-0.97981062 0.69954667 0.21065616 0.13382753 0.27693186
-0.59644095 0.71500764 0.04110751 0.95730081 0.91600724
-0.47704678 0.26183479 0.34706971 0.07545431 0.29398385
-0.93236070 0.60486023 0.48015011 0.08870451 0.45548581
-0.91872718 0.38142712 0.10668643 0.01397541 0.04520355
-0.93822273 0.18011940 0.57577277 0.91427606 0.30911399
-0.95853475 0.23611214 0.69619891 0.69601980 0.76765372
-0.58515930 0.49479057 0.11288752 0.97187699 0.32095365
-0.57563608 0.40760618 0.78703383 0.43261152 0.90877651
-0.84686346 0.10599030 0.72872803 0.19315490 0.66152912
-0.10210518 0.06257876 0.47950688 0.47062066 0.72701157
-0.48915116 0.66110261 0.60170685 0.24516994 0.12726050
-0.03451185 0.90864994 0.83494878 0.94800035 0.91035206
-0.14480751 0.88458997 0.53498312 0.15963215 0.55378627
-0.35171349 0.28719791 0.09097957 0.00667896 0.32309622
-0.87561479 0.42534520 0.91748977 0.73908457 0.41793223
-0.99279792 0.87908370 0.28458072 0.59132853 0.98672190
-0.28547393 0.09452165 0.89910674 0.53681109 0.37931425
-0.62683489 0.56609740 0.24801549 0.52948179 0.98328855
-0.66403523 0.55523786 0.75886666 0.84784685 0.86829981
-0.71448906 0.84670080 0.43922919 0.20771016 0.64157936
-0.25664246 0.73055695 0.86395782 0.65852932 0.99061803
-0.40280575 0.39146298 0.07291005 0.97200603 0.20555729
-0.59616495 0.08138254 0.45796388 0.33681125 0.33989127
-0.18717090 0.53545811 0.60550838 0.86520709 0.34290701
-0.72743276 0.73023855 0.34195926 0.65019733 0.02765254
-0.72575740 0.32709576 0.03420866 0.26061893 0.56997511
-0.28439072 0.84422744 0.77637570 0.55982168 0.06720327
-0.58449067 0.71657369 0.15819609 0.58042821 0.07947911
-0.40193792 0.11376012 0.88762938 0.67532159 0.71223735
-0.27829114 0.04806073 0.21144026 0.58830274 0.04140071
-0.43215628 0.12952729 0.94668759 0.87391019 0.98382450
-0.27750768 0.90849647 0.90962737 0.59269720 0.96102026
-0.49544979 0.32007095 0.62585546 0.03119821 0.85953001
-0.22017528 0.05834068 0.80731217 0.53799961 0.74166948
-0.77426600 0.43938444 0.54862081 0.58575513 0.15886492
-0.73214332 0.11649057 0.77463977 0.85788827 0.17061997
-0.66838056 0.96076133 0.07949296 0.68521946 0.89986254
-0.05667410 0.12741385 0.83470977 0.63969104 0.46612929
-0.10200126 0.01194925 0.10476340 0.90285217 0.31221221
-0.32980614 0.46041971 0.52024973 0.05425470 0.28330912
-0.60426543 0.00598243 0.97244013 0.21135841 0.78561597
-0.78428734 0.63422849 0.32909934 0.44771136 0.27380750
-0.14966697 0.18156268 0.65686758 0.28726350 0.97074787
-0.63676171 0.96649494 0.24526295 0.08297372 0.54257548
-0.03166785 0.33735355 0.15946671 0.02102971 0.46228045
-0.11892296 0.33408336 0.29875681 0.29847692 0.73767569
-0.02080745 0.62980060 0.08082293 0.22993106 0.25031439
-0.87787525 0.45150053 0.13673441 0.63407612 0.97907688
-0.52241942 0.50580158 0.06273902 0.05270283 0.77031811
-0.05113352 0.24393329 0.75036441 0.37436336 0.22877652
-0.59975358 0.85707591 0.88691457 0.85547165 0.36641027
-0.58720133 0.45462835 0.09243817 0.32981586 0.07820411
-0.25421519 0.36004706 0.60092307 0.46192412 0.36758683
-0.98424170 0.08019934 0.68594024 0.45826386 0.29962317
-0.79365413 0.89231296 0.49478547 0.87645944 0.23590734
-0.28106737 0.75026285 0.08136314 0.79582424 0.76010628
-0.82792971 0.27947652 0.72482861 0.82191216 0.46171689
-0.79189752 0.96043686 0.51609668 0.88995725 0.28998963
-0.55191845 0.03934737 0.83033700 0.49553013 0.98009549
-0.19017594 0.98347750 0.33452066 0.87144372 0.72106301
-0.71272114 0.71465963 0.88361677 0.85571283 0.73782329
-0.20920458 0.34855153 0.46766817 0.02780062 0.74898344
-0.03680650 0.44866557 0.77426312 0.91025891 0.25195236
-0.87319953 0.63265037 0.25552148 0.27422476 0.95217406
-0.39281839 0.66441573 0.09158900 0.94515992 0.07800798
-0.02507888 0.39901462 0.17382573 0.12141278 0.85502334
-0.19902911 0.02160210 0.44460522 0.14688742 0.68020336
-0.71323733 0.60922473 0.95400380 0.99611159 0.90897777
-0.41073520 0.66206647 0.32064685 0.62805003 0.50677209
-0.52690101 0.87473387 0.73918362 0.39826974 0.43683919
-0.80459118 0.32422684 0.01958019 0.95319576 0.98326137
-0.83931735 0.69060863 0.33671416 0.68062550 0.65152380
-0.33392969 0.03451730 0.95227244 0.68200635 0.85074171
-0.64721009 0.51234433 0.73402047 0.00969637 0.93835057
-0.80803854 0.31485260 0.20089527 0.01323282 0.59933780
-0.31584602 0.20209563 0.33754800 0.68604181 0.24443049
-0.19952227 0.78162632 0.10336988 0.11360736 0.23536740
-0.23262256 0.67803776 0.48749791 0.74658435 0.92156640
-0.56706407 0.36683221 0.99157136 0.23421374 0.45183767
-0.91609720 0.85573315 0.37706276 0.77042618 0.30891908
-0.40709595 0.06944866 0.61342849 0.88817388 0.58734506
-0.98711323 0.14744128 0.63242656 0.87704136 0.68347125
-0.84446569 0.43265239 0.25146321 0.04130111 0.34259839
-0.92697368 0.40878778 0.56990338 0.76204273 0.19820348
-0.66314909 0.02482844 0.06669207 0.50205581 0.26084093
-0.65139159 0.41650223 0.09733904 0.56344203 0.62651696
-0.67332139 0.58037374 0.47258086 0.21010758 0.05713135
-0.89390629 0.10781246 0.32037450 0.07628388 0.34227964
-0.42190597 0.58201860 0.77363549 0.49595133 0.86031236
-0.83906769 0.81098161 0.26694195 0.14215941 0.88210306
-0.53634237 0.12090720 0.82480459 0.75930318 0.31847147
-0.92768077 0.01037616 0.56201727 0.88107122 0.35925856
-0.85860762 0.61109408 0.70408301 0.58434977 0.92192494
-0.62667915 0.75988365 0.06858761 0.36156496 0.58057195
-0.13636150 0.57719713 0.59340255 0.63530602 0.22976282
-0.71915530 0.41162531 0.63979565 0.09931342 0.79344045
-0.10893790 0.84450224 0.23122236 0.99485593 0.73637397
-0.17276368 0.13357764 0.74965804 0.64991737 0.61990341
-0.41523170 0.05878239 0.05687301 0.05497131 0.42868366
-0.42571090 0.25810502 0.89642955 0.30439758 0.39310223
-0.11357431 0.04288255 0.23397550 0.11200634 0.85621396
-0.89733974 0.37508865 0.42077265 0.68597384 0.72781399
-0.19296476 0.61699087 0.31667128 0.67756410 0.00177323
-0.05725176 0.79474693 0.18885238 0.06724856 0.68193156
-0.42202167 0.22082041 0.28554673 0.64995708 0.87851940
-0.29124547 0.61009521 0.87374537 0.05743712 0.69902994
-0.81925115 0.45653873 0.37236821 0.31118709 0.52734307
-0.39672836 0.38185294 0.30163915 0.17374510 0.04913278
-0.90404879 0.25742801 0.58266467 0.97663209 0.79823377
-0.36437958 0.15206043 0.26529938 0.22690047 0.05839021
-0.84721160 0.18622435 0.37809403 0.55706977 0.49828704
-0.47659049 0.24289680 0.88477595 0.07807463 0.56245739
-0.73490635 0.21099431 0.13164942 0.75840044 0.66877037
-0.28988183 0.44046090 0.24967434 0.80048356 0.26029740
-0.30416821 0.64151867 0.52067892 0.12880774 0.85465381
-0.02690525 0.19149288 0.49630295 0.79682619 0.43566145
-0.00288078 0.81484193 0.03763639 0.68529083 0.01339574
-0.38405386 0.30537067 0.22994703 0.44000045 0.27217985
-0.53831243 0.02870435 0.86282045 0.61831306 0.09164956
-0.25609707 0.07445781 0.72185784 0.90058883 0.30070608
-0.94476583 0.56822213 0.21933909 0.96772793 0.80063440
-0.26307906 0.31183306 0.16501252 0.55436179 0.68562285
-0.23829083 0.86511559 0.57868991 0.81888344 0.20126869
-0.93172350 0.66028129 0.21786948 0.78515828 0.10262106
-0.35390326 0.79303876 0.63427924 0.90479631 0.31024934
-0.60635447 0.56198079 0.63573813 0.91854197 0.99701497
-0.83085849 0.31692291 0.01925964 0.97446405 0.98751283
-0.60944293 0.13751018 0.69519957 0.68956636 0.56969015
-0.46440193 0.88341765 0.36754434 0.89223647 0.39786427
-0.85055280 0.12749961 0.79452122 0.89449784 0.14567830
-0.45716830 0.74822309 0.28200437 0.42546044 0.17464886
-0.68308746 0.65496587 0.52935411 0.12736159 0.61523955
-0.81590528 0.63107864 0.39786553 0.20102294 0.53292914
-0.75485590 0.59847044 0.32861691 0.12125866 0.58917183
-0.07638293 0.86845380 0.29192617 0.03989733 0.52180460
-0.32503407 0.64071852 0.69516575 0.74254998 0.54587026
-0.48713246 0.32920155 0.08719954 0.63497059 0.54328459
-0.64178757 0.45583809 0.70694291 0.85212760 0.86074305
-0.33163422 0.85739792 0.59908488 0.74566046 0.72157152
Modified: branches/rm_cflags/t/library/test_more.t
==============================================================================
--- branches/rm_cflags/t/library/test_more.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/library/test_more.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -15,14 +15,14 @@
.local pmc exports, curr_namespace, test_namespace
curr_namespace = get_namespace
test_namespace = get_namespace [ 'Test'; 'More' ]
- exports = split " ", "ok nok is diag like skip todo is_deeply isa_ok isnt throws_like lives_ok dies_ok"
+ exports = split " ", "ok nok is diag like skip todo is_deeply is_null isa_ok isnt throws_like lives_ok dies_ok"
test_namespace.'export_to'(curr_namespace, exports)
test_namespace = get_namespace [ 'Test'; 'Builder'; 'Tester' ]
exports = split " ", "plan test_out test_diag test_fail test_pass test_test"
test_namespace.'export_to'(curr_namespace, exports)
- plan( 108 )
+ plan( 117 )
test_skip()
test_todo()
@@ -32,6 +32,7 @@
test_isnt()
test_like()
test_is_deeply()
+ test_is_null()
test_diagnostics()
test_lives_ok()
test_dies_ok()
@@ -369,7 +370,62 @@
test_diag( 'Have: 1' )
test_diag( expected )
is( left, right, 'comparing two pmcs' )
- test_test( 'failing test is() for pmcs with description')
+ test_test( 'failing test is() for pmcs with description' )
+
+ test_pass( 'comparing two nulls' )
+ null left
+ null right
+ is( left, right, 'comparing two nulls' )
+ test_test( 'passing test is() for nulls')
+
+ test_fail('comparing null with Int')
+ null left
+ right = box 1
+ is( left, right, 'comparing null with Int')
+ test_diag( 'Have: null' )
+ test_diag( 'Want: 1' )
+ test_test('failing test is() for null vs. pmc 1')
+
+ test_fail('comparing Int with null')
+ left = box 10
+ null right
+ is( left, right, 'comparing Int with null')
+ test_diag( 'Have: 10' )
+ test_diag( 'Want: null' )
+ test_test('failing test is() for pmc 10 vs. null')
+
+ test_fail('comparing null with Float')
+ null left
+ right = box 1.01
+ is( left, right, 'comparing null with Float')
+ test_diag( 'Have: null' )
+ test_diag( 'Want: 1.01' )
+ test_test('failing test is() for null vs. pmc 1.01')
+
+ test_fail('comparing Float with null')
+ left = box 2.787
+ null right
+ is( left, right, 'comparing Float with null')
+ test_diag( 'Have: 2.787' )
+ test_diag( 'Want: null' )
+ test_test('failing test is() for pmc 2.787 vs. null')
+
+ test_fail('comparing null with String')
+ null left
+ right = box 'September, when it comes'
+ is( left, right, 'comparing null with String')
+ test_diag( 'Have: null' )
+ test_diag( 'Want: September, when it comes' )
+ test_test('failing test is() for null vs. String pmc')
+
+ test_fail('comparing String with null')
+ left = box 'I cannot move a mountain now'
+ null right
+ is( left, right, 'comparing String with null')
+ test_diag( 'Have: I cannot move a mountain now' )
+ test_diag( 'Want: null' )
+ test_test('failing test is() for String pmc vs. null')
+
.end
.sub test_isnt
@@ -803,6 +859,20 @@
test_test( 'failing test isnt() for PMC/string')
.end
+
+.sub test_is_null
+ test_pass( 'null is_null')
+ null $P0
+ is_null($P0, 'null is_null')
+ test_test( 'passing is_null with null')
+
+ test_fail( 'String is not null' )
+ $P0 = box 'Concerto'
+ is_null($P0, 'String is not null')
+ test_diag( "Have: Concerto" )
+ test_diag( "Want: null" )
+ test_test( 'failing test is_null for String pmc')
+.end
# Local Variables:
# mode: pir
# fill-column: 100
Modified: branches/rm_cflags/t/pmc/namespace.t
==============================================================================
--- branches/rm_cflags/t/pmc/namespace.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/pmc/namespace.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -56,11 +56,12 @@
.sub main :main
.include 'test_more.pir'
- plan(70)
+ plan(74)
create_namespace_pmc()
verify_namespace_type()
get_namespace_class()
+ keyed_namespace_lookup()
get_global_opcode()
get_sub_from_namespace_hash()
access_sub_in_namespace()
@@ -167,6 +168,40 @@
.end
+.sub keyed_namespace_lookup
+ # Tests to verify behavior of TT #1449
+ $P0 = get_root_namespace
+
+ # Keyed lookup
+ $P1 = $P0["parrot";"Foo";"Bar"]
+ $I0 = isnull $P1
+ is($I0, 0, "can lookup nested namespace by Key")
+ # TODO: Get the function from this namespace and call it to verify we have
+ # the correct one.
+
+ # Array lookup
+ $P1 = new ['ResizableStringArray']
+ $P1[0] = "parrot"
+ $P1[1] = "Foo"
+ $P1[2] = "Bar"
+ $P1[3] = "Baz"
+ $P2 = $P0[$P1]
+ $I0 = isnull $P1
+ is($I0, 0, "can lookup nested namespace by RSA")
+ # TODO: Get the function from this namespace and call it to verify we have
+ # the correct one.
+
+ # String lookup
+ $P1 = $P0["parrot"]
+ $P2 = $P1["Foo"]
+ $I0 = isnull $P1
+ is($I0, 0, "can lookup namespace by string")
+ $I0 = isnull $P2
+ is($I0, 0, "can lookup namespace by string")
+ # TODO: Get the function from this namespace and call it to verify we have
+ # the correct one.
+.end
+
# L<PDD21//>
.sub 'get_global_opcode'
test1:
@@ -486,7 +521,7 @@
# ...now we do!
$P1 = $P0.'make_namespace'("NewNamespace1")
- $P2 = $P1["baz"]
+ $P2 = $P1["baz"]
$I0 = isnull $P2
is($I0, 1, "make_namespace also creates new namespaces")
@@ -632,6 +667,12 @@
.return("Foo::Bar")
.end
+# Namespace "Foo";"Bar";"Baz". Nested namespace
+.namespace ["Foo";"Bar";"Baz"]
+.sub 'widget'
+ .return("Foo::Bar::Baz")
+.end
+
# Namespace specified in ISO-8859-1
.namespace [ iso-8859-1:"Fran\x{E7}ois" ]
.sub 'baz'
Modified: branches/rm_cflags/t/pmc/opcode.t
==============================================================================
--- branches/rm_cflags/t/pmc/opcode.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/pmc/opcode.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,6 +1,6 @@
#! parrot
# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id: fixedpmcarray.t 42684 2009-11-21 13:40:19Z jkeenan $
+# $Id$
=head1 NAME
Modified: branches/rm_cflags/t/pmc/oplib.t
==============================================================================
--- branches/rm_cflags/t/pmc/oplib.t Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/t/pmc/oplib.t Fri Feb 19 03:57:19 2010 (r44159)
@@ -1,6 +1,6 @@
#! parrot
# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id: fixedpmcarray.t 42684 2009-11-21 13:40:19Z jkeenan $
+# $Id$
=head1 NAME
Deleted: branches/rm_cflags/t/steps/gen/call_list-01.t
==============================================================================
--- branches/rm_cflags/t/steps/gen/call_list-01.t Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,73 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# gen/call_list-01.t
-
-use strict;
-use warnings;
-use Test::More tests => 6;
-use Carp;
-use lib qw( lib );
-use_ok('config::gen::call_list');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
- test_step_constructor_and_description
-);
-
-########## regular ##########
-
-my ($args, $step_list_ref) = process_options(
- {
- argv => [ ],
- mode => q{configure},
- }
-);
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $pkg = q{gen::call_list};
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my $missing_files = 0;
-foreach my $f ( @{ $step->{fragment_files} } ) {
- $missing_files++ unless (-f $f);
-}
-is($missing_files, 0, "No needed source files are missing");
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
- gen/call_list-01.t - test gen::call_list
-
-=head1 SYNOPSIS
-
- % prove t/steps/gen/call_list-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test gen::call_list.
-
-=head1 AUTHOR
-
-Geoffrey Broadwell; modified from a similar file by James E Keenan.
-
-=head1 SEE ALSO
-
-config::gen::call_list, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Modified: branches/rm_cflags/tools/build/nativecall.pir
==============================================================================
--- branches/rm_cflags/tools/build/nativecall.pir Fri Feb 19 03:20:35 2010 (r44158)
+++ branches/rm_cflags/tools/build/nativecall.pir Fri Feb 19 03:57:19 2010 (r44159)
@@ -7,21 +7,21 @@
=head1 SYNOPSIS
- % ./parrot tools/build/nativecall.pir <src/call_list.txt >src/nci.c
+ % ./parrot tools/build/nativecall.pir -o src/nci/extra_thunks.c <src/nci/extra_thunks.nci
=head1 DESCRIPTION
-This script creates the Native Call Interface file F<src/nci.c>. It
-parses a file of function signatures of the form:
+This script creates Native Call Interface files. It parses a file of function
+signatures of the form:
<return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
...
Empty lines and lines containing only whitespace or comment are ignored.
-The types specifiers are documented in F<src/call_list.txt>.
+The types specifiers are documented in F<src/nci/extra_thunks.nci>.
=head1 SEE ALSO
-F<src/call_list.txt>.
+F<src/nci/extra_thunks.nci>.
F<docs/pdds/pdd16_native_call.pod>.
=cut
@@ -44,6 +44,10 @@
.local pmc sigs
sigs = 'read_sigs'()
+ $S0 = 'read_from_opts'('output')
+ $P0 = open $S0, 'w'
+ setstdout $P0
+
if targ == 'head' goto get_targ
if targ == 'thunks' goto get_targ
if targ == 'loader' goto get_targ
@@ -82,11 +86,12 @@
# getopt stuff {{{
+.macro_const OUTPUT 'output'
.macro_const THUNK_STORAGE_CLASS 'thunk-storage-class'
.macro_const THUNK_NAME_PROTO 'thunk-name-proto'
.macro_const LOADER_STORAGE_CLASS 'loader-storage-class'
.macro_const LOADER_NAME 'loader-name'
-
+.macro_const CORE 'core'
.sub 'get_options'
.param pmc argv
@@ -97,6 +102,8 @@
getopt = new ['Getopt';'Obj']
push getopt, 'help|h'
push getopt, 'version|v'
+ push getopt, 'core'
+ push getopt, 'output|o=s'
push getopt, 'target=s'
push getopt, 'thunk-storage-class=s'
push getopt, 'thunk-name-proto=s'
@@ -134,11 +141,13 @@
Creates a C file of routines suitable for use as Parrot NCI thunks.
-Usage ./parrot nativecall.pir [options] <input_signature_list.nci >output_c_file.c
+Usage ./parrot nativecall.pir [options] -o output_c_file.c <input_signature_list.nci
Options
--help print this message and exit
--version print the version number of this utility
+ --core output a thunks file suitable for inclusion in Parrot core. Default is no.
+ -o --output <file> specify output file to use.
--target <target> select what to output (valid options are 'head', 'thunks',
'loader', 'coda', 'all', 'names', and 'signatures'). Default value is 'all'
--thunk-storage-class <storage class>
@@ -164,6 +173,14 @@
.sub 'fixup_opts'
.param pmc opts
+ $I0 = defined opts['core']
+ if $I0 goto in_core
+ opts['core'] = ''
+ goto end_core
+ in_core:
+ opts['core'] = 'true'
+ end_core:
+
$I0 = defined opts['target']
if $I0 goto end_target
opts['target'] = 'all'
@@ -220,7 +237,32 @@
.sub 'get_head'
.param pmc ignored :slurpy
- .return (<<'HEAD')
+
+ .local string in_core
+ in_core = 'read_from_opts'(.CORE)
+
+ .local string ext_defn
+ ext_defn = ''
+ if in_core goto end_ext_defn
+ ext_defn = '#define PARROT_IN_EXTENSION'
+ end_ext_defn:
+
+ .local string c_file
+ c_file = 'read_from_opts'(.OUTPUT)
+
+ .local string str_file
+ str_file = clone c_file
+ substr str_file, -2, 2, '.str'
+ strip_str_file_loop:
+ $I0 = index str_file, '/'
+ if $I0 < 0 goto end_strip_str_file_loop
+ $I0 += 1
+ str_file = substr str_file, $I0
+ goto strip_str_file_loop
+ end_strip_str_file_loop:
+
+ .local string head
+ head = 'sprintf'(<<'HEAD', c_file, ext_defn, str_file)
/* ex: set ro ft=c:
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
*
@@ -230,8 +272,8 @@
*
*/
-/* nci.c
- * Copyright (C) 2001-2009, Parrot Foundation.
+/* %s
+ * Copyright (C) 2010, Parrot Foundation.
* SVN Info
* $Id$
* Overview:
@@ -242,35 +284,27 @@
* Notes:
* References:
*/
+
+%s
#include "parrot/parrot.h"
-#include "parrot/hash.h"
-#include "parrot/oplib/ops.h"
-#include "pmc/pmc_managedstruct.h"
#include "pmc/pmc_nci.h"
-#include "pmc/pmc_pointer.h"
-#include "pmc/pmc_callcontext.h"
-#ifdef PARROT_IN_CORE
-/* external libraries don't have to care about string subsystem */
-# include "nci.str"
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+# define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+# include "%s"
#endif
/* HEADERIZER HFILE: none */
/* HEADERIZER STOP */
-/*
- * if the architecture can build some or all of these signatures
- * enable the define below
- * - the JITed function will be called first
- * - if it returns NULL, the hardcoded version will do the job
- */
-
-#include "frame_builder.h"
-
/* All our static functions that call in various ways. Yes, terribly
hackish, but that is just fine */
HEAD
+ .return (head)
.end
.sub 'get_thunks'
@@ -471,7 +505,7 @@
.local string preamble
preamble = 'sprintf'(<<'TEMPLATE', sig, fill_params, extra_preamble)
- Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s" %s);
+ Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s"%s);
%s
TEMPLATE
Deleted: branches/rm_cflags/tools/build/nativecall.pl
==============================================================================
--- branches/rm_cflags/tools/build/nativecall.pl Fri Feb 19 03:57:19 2010 (r44158)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,560 +0,0 @@
-#! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-tools/build/nativecall.pl - Build up the native call routines
-
-=head1 SYNOPSIS
-
- % perl tools/build/nativecall.pl src/call_list.txt
-
-=head1 DESCRIPTION
-
-This script creates the Native Call Interface file F<src/nci.c>. It
-parses a file of function signatures of the form:
-
- <return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
- ...
-Empty lines and lines containing only whitespace or comment are ignored.
-The types specifiers are documented in F<src/call_list.txt>.
-
-=head1 SEE ALSO
-
-F<src/call_list.txt>.
-F<docs/pdds/pdd16_native_call.pod>.
-
-=cut
-
-use strict;
-use warnings;
-
-my $opt_warndups = 0;
-
-# This file will eventually be compiled
-open my $NCI, '>', 'src/nci.c' or die "Can't create nci.c: $!";
-
-print_head( \@ARGV );
-
-
-my %sig_table = (
- p => {
- as_proto => "void *",
- final_dest => "PMC * final_destination = PMCNULL;",
- sig_char => "P",
- ret_assign => "if (return_data != NULL) {\n" .
- " final_destination = pmc_new(interp, enum_class_UnManagedStruct);\n" .
- " VTABLE_set_pointer(interp, final_destination, return_data);\n" .
- " }\n" .
- " Parrot_pcc_fill_returns_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" },
- c => { as_proto => "char", sig_char => "I", return_type => "INTVAL" },
- s => { as_proto => "short", sig_char => "I", return_type => "INTVAL" },
- f => { as_proto => "float", sig_char => "N", return_type => "FLOATVAL" },
- d => { as_proto => "double", sig_char => "N", return_type => "FLOATVAL" },
- t => { as_proto => "char *",
- final_dest => "STRING *final_destination;",
- ret_assign => "final_destination = Parrot_str_new(interp, return_data, 0);\n Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"S\", final_destination);",
- sig_char => "S" },
- v => { as_proto => "void",
- return_type => "void *",
- sig_char => "v",
- ret_assign => "",
- func_call_assign => ""
- },
- P => { as_proto => "PMC *", sig_char => "P" },
- O => { as_proto => "PMC *", returns => "", sig_char => "Pi" },
- J => { as_proto => "PARROT_INTERP", returns => "", sig_char => "" },
- S => { as_proto => "STRING *", sig_char => "S" },
- I => { as_proto => "INTVAL", sig_char => "I" },
- N => { as_proto => "FLOATVAL", sig_char => "N" },
- b => { as_proto => "void *", as_return => "", sig_char => "S" },
- B => { as_proto => "char **", as_return => "", sig_char => "S" },
- # These should be replaced by modifiers in the future
- 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);' },
- 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);' },
- 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);' },
- L => { as_proto => "long *", as_return => "" },
- T => { as_proto => "char **", as_return => "" },
- V => { as_proto => "void **", as_return => "", sig_char => "P" },
- '@' => { as_proto => "PMC *", as_return => "", cname => "xAT_", sig_char => 'Ps' },
-);
-
-for (values %sig_table) {
- if (not exists $_->{as_return}) { $_->{as_return} = $_->{as_proto} }
- if (not exists $_->{return_type}) { $_->{return_type} = $_->{as_proto} }
- if (not exists $_->{ret_assign} and exists $_->{sig_char}) {
- $_->{ret_assign} = 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "'
- . $_->{sig_char} . '", return_data);';
- }
- if (not exists $_->{func_call_assign}) {
- $_->{func_call_assign} = "return_data = "
- }
-}
-
-
-my $temp_cnt = 0;
-my (@put_pointer, @put_pointer_nci_too, @nci_defs);
-my %seen;
-
-while (<>) {
- chomp;
- s/#.*$//; # comment till end of line
- s/^\s*//;
- s/\s*$//;
- next unless $_;
-
- my ( $ret, $args ) = split m/\s+/, $_;
-
- $args = '' if not defined $args;
-
- die "Invalid return signature char '$ret' on line $. of $ARGV\n"
- unless exists $sig_table{$ret}{ret_assign};
-
- if ( ( $seen{"$ret$args"} ||= $. ) != $. ) {
- warn sprintf "Ignored signature '%s' on line %d (previously seen on line %d) of $ARGV",
- "$ret$args", $., $seen{"$ret$args"}
- if $opt_warndups;
- next;
- }
-
- my @fill_params;
- my @extra_preamble;
- my @extra_postamble;
- my @temps;
- my @arg;
- my $reg_num = 0;
- my $sig = '';
-
- if ( defined $args and not $args =~ m/^\s*$/ ) {
- foreach ( split m//, $args ) {
- die "Invalid argument signature char '$_' on line $. of $ARGV"
- unless exists $sig_table{$_}{sig_char};
- push @arg,
- make_arg( $_, $reg_num++, \$temp_cnt, \@temps, \@fill_params,
- \@extra_preamble, \@extra_postamble );
- $sig .= $sig_table{$_}{sig_char};
- $_ eq 'J' && $reg_num--;
- }
- }
-
- my $ret_sig = $sig_table{$ret};
-
- if ($args =~ /[234V]/) {
- push @nci_defs, create_function(
- $sig, $ret,
- $args, [@arg],
- $ret_sig->{as_return}, $ret_sig->{return_type},
- $ret_sig->{func_call_assign}, $ret_sig->{final_dest},
- $ret_sig->{ret_assign}, \@temps,
- \@fill_params, \@extra_preamble, \@extra_postamble,
- \@put_pointer_nci_too,
- );
- }
- else {
- print {$NCI} create_function(
- $sig, $ret,
- $args, [@arg],
- $ret_sig->{as_return}, $ret_sig->{return_type},
- $ret_sig->{func_call_assign}, $ret_sig->{final_dest},
- $ret_sig->{ret_assign}, \@temps,
- \@fill_params, \@extra_preamble, \@extra_postamble,
- \@put_pointer,
- );
- }
-}
-
-print {$NCI} <<"END_FUNCS";
-
-#endif
- at nci_defs
-
-END_FUNCS
-
-print_tail( \@put_pointer, \@put_pointer_nci_too );
-
-# append the C code coda
-print $NCI <<"EOC";
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
-EOC
-
-close $NCI;
-
-sub print_head {
- my ($definitions) = @_;
- print $NCI <<"HEAD";
-/* ex: set ro ft=c:
- * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- *
- * This file is generated automatically by tools/build/nativecall.pl
- * from definitions in @$definitions
- *
- * Any changes made here will be lost!
- *
- */
-
-/* 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:
- */
-#include "parrot/parrot.h"
-#include "parrot/hash.h"
-#include "parrot/oplib/ops.h"
-#include "pmc/pmc_managedstruct.h"
-#include "pmc/pmc_nci.h"
-#include "pmc/pmc_pointer.h"
-#include "pmc/pmc_callcontext.h"
-#include "nci.str"
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER STOP */
-
-/*
- * if the architecture can build some or all of these signatures
- * enable the define below
- * - the JITed function will be called first
- * - if it returns NULL, the hardcoded version will do the job
- */
-
-#include "frame_builder.h"
-
-#ifndef CAN_BUILD_CALL_FRAMES
-/* All our static functions that call in various ways. Yes, terribly
- hackish, but that is just fine */
-
-HEAD
- return;
-}
-
-sub make_arg {
-
- #
- # we have to fetch all to temps, so that the call code
- # can operate in sequence
- #
- my ( $argtype, $reg_num, $temp_cnt_ref, $temps_ref, $fill_params_ref, $extra_preamble_ref, $extra_postamble_ref )
- = @_;
-
- local $_ = $argtype;
- my $temp_num = ${$temp_cnt_ref}++;
- /[ilcsfdINSOP\@]/ && do {
- my $ret_type = $sig_table{$_}{return_type};
- push @{$temps_ref}, "$ret_type t_$temp_num;";
- push @{$fill_params_ref}, "&t_$temp_num";
- return "t_$temp_num";
- };
- /p/ && do {
- push @{$temps_ref}, "PMC *t_$temp_num;";
- push @{$fill_params_ref}, "&t_$temp_num";
- return "PMC_IS_NULL((PMC*)t_$temp_num)? (void*)NULL:VTABLE_get_pointer(interp, t_$temp_num)";
- };
- /V/ && do {
- push @{$temps_ref}, "PMC *t_$temp_num;";
- push @{$temps_ref}, "void *v_$temp_num;";
- push @{$fill_params_ref}, "&t_$temp_num";
- push @{$extra_preamble_ref}, "v_$temp_num = VTABLE_get_pointer(interp, t_$temp_num);";
- push @{$extra_postamble_ref}, "VTABLE_set_pointer(interp, t_$temp_num, v_$temp_num);";
- return "&v_$temp_num";
- };
- /[234]/ && do {
- my $ret_type = $sig_table{$_}{return_type};
- push @{$temps_ref}, "PMC *t_$temp_num;";
- push @{$temps_ref}, "$ret_type i_$temp_num;";
- push @{$fill_params_ref}, "&t_$temp_num";
- push @{$extra_preamble_ref}, "i_$temp_num = ($ret_type) VTABLE_get_integer(interp, t_$temp_num);";
- push @{$extra_postamble_ref}, "VTABLE_set_integer_native(interp, t_$temp_num, i_$temp_num);";
- return "&i_$temp_num";
- };
- /t/ && do {
- push @{$temps_ref}, "char *t_$temp_num;";
- push @{$temps_ref}, "STRING *ts_$temp_num;";
- push @{$fill_params_ref}, "&ts_$temp_num";
- push @{$extra_preamble_ref},
- "t_$temp_num = ts_$temp_num ? Parrot_str_to_cstring(interp, ts_$temp_num) : (char *) NULL;";
- push @{$extra_postamble_ref}, "do { if (t_$temp_num) Parrot_str_free_cstring(t_$temp_num); } while (0);";
- return "t_$temp_num";
- };
- /b/ && do {
- push @{$temps_ref}, "STRING *t_$temp_num;";
- push @{$fill_params_ref}, "&t_$temp_num";
- return "Buffer_bufstart(t_$temp_num)";
- };
- /B/ && do {
- push @{$temps_ref}, "char *t_$temp_num;";
- push @{$temps_ref}, "char** v_$temp_num = &t_$temp_num;";
- push @{$temps_ref}, "STRING *ts_$temp_num;";
- push @{$fill_params_ref}, "&ts_$temp_num";
- push @{$extra_preamble_ref},
- "t_$temp_num = ts_$temp_num ? Parrot_str_to_cstring(interp, ts_$temp_num) : (char *) NULL;";
- push @{$extra_postamble_ref}, "do { if (t_$temp_num) Parrot_str_free_cstring(t_$temp_num); } while (0);";
- return "v_$temp_num";
- };
- /J/ && do {
- return "interp";
- };
- return;
-}
-
-sub create_function {
- my (
- $sig, $return, $params, $args,
- $ret_type, $ret_type_decl, $return_assign, $final_dest,
- $final_assign, $temps_ref, $fill_params_ref, $extra_preamble_ref,
- $extra_postamble_ref, $put_pointer_ref,
- ) = @_;
-
- my $func = '';
-
- $final_dest ||= "";
-
- my $other_decl .= join( "\n ", $final_dest, @{$temps_ref} );
- my $call_object_decl = <<"CALLOBJECT";
- PMC *ctx = CURRENT_CONTEXT(interp);
- PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
-CALLOBJECT
- my $extra_preamble = join( "\n ", @{$extra_preamble_ref} );
- my $extra_postamble = join( "\n ", @{$extra_postamble_ref} );
- my $return_data_decl =
- "$return_assign $final_assign" =~ /return_data/
- ? qq{$ret_type_decl return_data;}
- : q{};
- my $fix_params = join '', map { $sig_table{$_}{cname} || $_ } split m//, $params;
-
- if ( length $params ) {
- my $proto = join ', ', map { $sig_table{$_}{as_proto} } split( m//, $params );
-
- my $call_params = join( ",", @$args );
- my $fill_params = join( ", ", @$fill_params_ref );
- $fill_params = ", " . $fill_params if($fill_params);
-
- $func = <<"HEADER";
-static void
-pcf_${return}_$fix_params(PARROT_INTERP, PMC *self)
-{
- typedef $ret_type (*func_t)($proto);
- func_t pointer;
- void *orig_func;
- $call_object_decl
- $return_data_decl
- $other_decl
- Parrot_pcc_fill_params_from_c_args(interp, call_object, \"$sig\"$fill_params);
- $extra_preamble
-
- GETATTR_NCI_orig_func(interp, self, orig_func);
- pointer = (func_t)D2FPTR(orig_func);
- $return_assign ($ret_type)(*pointer)($call_params);
- $final_assign
- $extra_postamble
-}
-HEADER
- }
- else {
-
- # Things are more simple, when there are no params
- $func = <<"HEADER";
-static void
-pcf_${return}_(PARROT_INTERP, PMC *self)
-{
- $ret_type (*pointer)(void);
- void *orig_func;
- $return_data_decl
- $other_decl
- $call_object_decl
- $extra_preamble
-
- GETATTR_NCI_orig_func(interp, self, orig_func);
- pointer = ($ret_type (*)(void))D2FPTR(orig_func);
- $return_assign ($ret_type)(*pointer)();
- $final_assign
- $extra_postamble
-}
-HEADER
- }
-
- my ( $key, $value ) = (
- defined $params
- ? ( "$return$params", "pcf_${return}_$fix_params" )
- : ( "$return", "pcf_${return}" )
- );
-
- push @{$put_pointer_ref}, <<"PUT_POINTER";
- temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
- VTABLE_set_pointer(interp, temp_pmc, (void *)$value);
- VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "$key"), temp_pmc);
-PUT_POINTER
-
- # qq| parrot_hash_put( interp, known_frames, const_cast("$key"), $value );|;
-
- return $func;
-}
-
-sub print_tail {
- my ($put_pointer_ref, $put_pointer_nci_ref) = @_;
-
- my $put_pointer = join( "\n", @{$put_pointer_ref} );
- my $put_pointer_nci = join( "\n", @{$put_pointer_nci_ref} );
- print $NCI <<"TAIL";
-
-
-/* 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,
-#if defined(CAN_BUILD_CALL_FRAMES)
-PMC *pmc_nci, NOTNULL(STRING *signature), NOTNULL(int *jitted))
-#else
-SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted))
-#endif
-{
- char *c;
- STRING *ns, *message;
- PMC *b;
- PMC *iglobals;
- PMC *temp_pmc;
-
- PMC *HashPointer = NULL;
-
- /* And in here is the platform-independent way. Which is to say
- "here there be hacks" */
-
- /* fixup empty signatures */
- 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");
- HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
- IGLOBALS_NCI_FUNCS);
-
- if (!HashPointer) {
- HashPointer = pmc_new(interp, enum_class_Hash);
- VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS,
- HashPointer);
- }
-
-#if defined(CAN_BUILD_CALL_FRAMES)
- /* Try if JIT code can build that signature. If yes, we are done */
- b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
- PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
- if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_ManagedStruct) {
- *jitted = 1;
- return F2DPTR(VTABLE_get_pointer(interp, b));
- }
- else {
- int jit_size;
- void * const result = Parrot_jit_build_call_func(interp, pmc_nci, signature, &jit_size);
- if (result) {
- struct jit_buffer_private_data *priv;
- *jitted = 1;
- temp_pmc = pmc_new(interp, enum_class_ManagedStruct);
- VTABLE_set_pointer(interp, temp_pmc, (void *)result);
-#ifdef PARROT_HAS_EXEC_PROTECT
- priv = (struct jit_buffer_private_data *)
- mem_sys_allocate(sizeof(struct jit_buffer_private_data));
- priv->size = jit_size;
- SETATTR_ManagedStruct_custom_free_func(interp, temp_pmc, Parrot_jit_free_buffer);
- SETATTR_ManagedStruct_custom_free_priv(interp, temp_pmc, priv);
- SETATTR_ManagedStruct_custom_clone_func(interp, temp_pmc, Parrot_jit_clone_buffer);
- SETATTR_ManagedStruct_custom_clone_priv(interp, temp_pmc, priv);
-#endif /* PARROT_HAS_EXEC_PROTECT */
- VTABLE_set_pmc_keyed_str(interp, HashPointer, signature, temp_pmc);
- return result;
- }
- }
-
-#endif
-
- b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
- if (PMC_IS_NULL(b)) {
-$put_pointer_nci
-#ifndef CAN_BUILD_CALL_FRAMES
-$put_pointer
-#endif
-
- b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
- }
-
- PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
- if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_UnManagedStruct)
- return F2DPTR(VTABLE_get_pointer(interp, b));
-
- /*
- These three 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.
- */
- ns = string_make(interp, " is an unknown signature type", 29, "ascii", 0);
- message = Parrot_str_concat(interp, signature, ns, 0);
-
-#if defined(CAN_BUILD_CALL_FRAMES)
- ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is enabled, this should not happen", 58, "ascii", 0);
-#else
- ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/call_list.txt", 75, "ascii", 0);
-#endif
- 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.
- */
- c = Parrot_str_to_cstring(interp, message);
- PANIC(interp, c);
-}
-
-TAIL
- return;
-}
-
-=begin example
-
-This is the template thing
-
-static void pcf_$funcname(PARROT_INTERP, PMC *self) {
- $ret_type (*pointer)();
- $ret_type return_data;
-
- return_data = ($ret_type)(*pointer)($params);
- $ret_reg = return_data;
- REG_INT(interp, 0) = $stack_returns;
- REG_INT(interp, 1) = $int_returns;
- REG_INT(interp, 2) = $string_returns;
- REG_INT(interp, 3) = $pmc_returns;
- REG_INT(interp, 4) = $num_returns;
- return;
-}
-
-=cut
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
Copied: branches/rm_cflags/tools/dev/mk_nci_thunks.pl (from r44158, trunk/tools/dev/mk_nci_thunks.pl)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/rm_cflags/tools/dev/mk_nci_thunks.pl Fri Feb 19 03:57:19 2010 (r44159, copy of r44158, trunk/tools/dev/mk_nci_thunks.pl)
@@ -0,0 +1,41 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/dev/mk_nci_thunks.pl - (re)generate core NCI thunk files
+
+=head1 SYNOPSIS
+
+ > perl tools/dev/mk_nci_thunks.pl
+
+=head1 DESCRIPTION
+
+This script generates the core NCI thunk C files from lists of signatures
+provided in accompanying C<.nci> files.
+
+=cut
+
+use strict;
+use warnings;
+
+foreach (qw( core_thunks extra_thunks )) {
+ my $c_file = "src/nci/$_.c";
+ my $nci_file = "src/nci/$_.nci";
+ my $loader_name = "Parrot_nci_load_$_";
+ print "$nci_file > $c_file\n";
+ system("./parrot tools/build/nativecall.pir " .
+ "--core " .
+ "--loader-name=$loader_name " .
+ "--output=$c_file " .
+ "<$nci_file "
+ );
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
More information about the parrot-commits
mailing list