[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