[svn:parrot] r39502 - in branches/pmc_pct: . compilers/pmcc compilers/pmcc/src compilers/pmcc/src/emitter compilers/pmcc/src/emitter/pmc compilers/pmcc/t compilers/pmcc/tools config/gen/makefiles

cotto at svn.parrot.org cotto at svn.parrot.org
Thu Jun 11 03:04:46 UTC 2009


Author: cotto
Date: Thu Jun 11 03:04:42 2009
New Revision: 39502
URL: https://trac.parrot.org/parrot/changeset/39502

Log:
[pmcc] finish switching pmcc to use the new vtable dump, delete/update relevant files

Deleted:
   branches/pmc_pct/compilers/pmcc/src/vtable_info.pir
   branches/pmc_pct/compilers/pmcc/src/vtable_info.pm
   branches/pmc_pct/compilers/pmcc/t/04-vtable-info.t
   branches/pmc_pct/compilers/pmcc/tools/
Modified:
   branches/pmc_pct/MANIFEST
   branches/pmc_pct/compilers/pmcc/pmcc.pir
   branches/pmc_pct/compilers/pmcc/src/emitter.pm
   branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm
   branches/pmc_pct/compilers/pmcc/src/emitter/pmc/default.pm
   branches/pmc_pct/compilers/pmcc/t/07-default.t
   branches/pmc_pct/compilers/pmcc/t/common.pir
   branches/pmc_pct/config/gen/makefiles/pmcc.in

Modified: branches/pmc_pct/MANIFEST
==============================================================================
--- branches/pmc_pct/MANIFEST	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/MANIFEST	Thu Jun 11 03:04:42 2009	(r39502)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Jun  4 02:33:25 2009 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu Jun 11 02:16:03 2009 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -192,7 +192,7 @@
 compilers/pirc/t/subflags.t                                 [test]
 compilers/pmcc/DOTPLAN.pod                                  [pmcc]
 compilers/pmcc/README.pod                                   []doc
-compilers/pmcc/TODO                                         [pmcc]
+compilers/pmcc/TODO.pod                                     [pmcc]
 compilers/pmcc/pmcc.pir                                     [pmcc]
 compilers/pmcc/src/builtins.pir                             [pmcc]
 compilers/pmcc/src/emitter.pm                               [pmcc]
@@ -205,15 +205,13 @@
 compilers/pmcc/src/nodes.pir                                [pmcc]
 compilers/pmcc/src/parser/actions.pm                        [pmcc]
 compilers/pmcc/src/parser/grammar.pg                        [pmcc]
-compilers/pmcc/src/vtable_info.pir                          [pmcc]
-compilers/pmcc/src/vtable_info.pm                           [pmcc]
 compilers/pmcc/t/01-parse.t                                 [test]
 compilers/pmcc/t/02-parse-all-pmcs.t                        [test]
 compilers/pmcc/t/03-past.t                                  [test]
-compilers/pmcc/t/04-vtable-info.t                           [test]
 compilers/pmcc/t/05-header.t                                [test]
 compilers/pmcc/t/06-body.t                                  [test]
 compilers/pmcc/t/07-default.t                               [test]
+compilers/pmcc/t/08-multi.t                                 [test]
 compilers/pmcc/t/common.pir                                 [test]
 compilers/pmcc/t/data/child.pmc                             [test]
 compilers/pmcc/t/data/class.pmc                             [test]
@@ -244,10 +242,10 @@
 compilers/pmcc/t/data/class24.pmc                           [test]
 compilers/pmcc/t/data/class25.pmc                           [test]
 compilers/pmcc/t/data/class26.pmc                           [test]
+compilers/pmcc/t/data/class27.pmc                           [test]
 compilers/pmcc/t/data/default.pmc                           [test]
 compilers/pmcc/t/data/parent.pmc                            [test]
 compilers/pmcc/t/harness                                    [test]
-compilers/pmcc/tools/vtable_pm.pl                           [pmcc]
 compilers/tge/README                                        []doc
 compilers/tge/TGE.pir                                       [tge]
 compilers/tge/TGE/Compiler.pir                              [tge]
@@ -259,7 +257,12 @@
 compilers/vtdumper/src/function.pir                         [vtdumper]
 compilers/vtdumper/src/parser/actions.pm                    [vtdumper]
 compilers/vtdumper/src/parser/grammar.pg                    [vtdumper]
-compilers/vtdumper/t/vtable.tbl                             [test]
+compilers/vtdumper/t/01-functions.t                         [test]
+compilers/vtdumper/t/02-sections.t                          [test]
+compilers/vtdumper/t/03-attributes.t                        [test]
+compilers/vtdumper/t/04-vtable_tbl.t                        [test]
+compilers/vtdumper/t/common.pir                             [test]
+compilers/vtdumper/t/harness                                [test]
 compilers/vtdumper/vtdumper.pir                             [vtdumper]
 config/auto/alignptrs.pm                                    []
 config/auto/alignptrs/test_c.in                             []

Modified: branches/pmc_pct/compilers/pmcc/pmcc.pir
==============================================================================
--- branches/pmc_pct/compilers/pmcc/pmcc.pir	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/pmcc.pir	Thu Jun 11 03:04:42 2009	(r39502)
@@ -167,7 +167,6 @@
 .end
 
 .include 'src/nodes.pir'
-.include 'src/vtable_info.pir'
 .include '../vtdumper/src/function.pir'
 .include 'src/emitter/pmc.pir'
 .include 'src/emitter/c.pir'
@@ -177,7 +176,6 @@
 .include 'src/emitter/gen_c.pir'
 .include 'src/emitter/pmc/default.pir'
 .include 'src/emitter/pmc/gen_default.pir'
-.include 'src/gen_vtable_info.pir'
 .include 'src/parser/gen_grammar.pir'
 .include 'src/parser/gen_actions.pir'
 .include 'src/builtins.pir'

Modified: branches/pmc_pct/compilers/pmcc/src/emitter.pm
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/emitter.pm	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/src/emitter.pm	Thu Jun 11 03:04:42 2009	(r39502)
@@ -40,7 +40,7 @@
             # Generate header.
               dont_edit($filename)
             # PMC functions
-            ~ $pmc_emitter.generate_c_code()
+            ~ $pmc_emitter.generate_c_code($past)
             # C code
             ~ c_code_coda();
 

Modified: branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm	Thu Jun 11 03:04:42 2009	(r39502)
@@ -323,7 +323,7 @@
 #
 #=cut
 
-method generate_c_code() {
+method generate_c_code($past) {
     self.pre_method_gen();
     my $res :=
           self.past<c_header> ~ "\n\n"

Modified: branches/pmc_pct/compilers/pmcc/src/emitter/pmc/default.pm
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/emitter/pmc/default.pm	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/src/emitter/pmc/default.pm	Thu Jun 11 03:04:42 2009	(r39502)
@@ -17,19 +17,19 @@
 
 =cut
 method pre_method_gen() {
-    my @vtables := PMC::VTableInfo::vtable_list();
+    my @vtables := self.vtable_info;
     my %vtables := self.vtables;
 
     for @vtables {
-        if !exists(%vtables, $_.name) {
+        if !exists(%vtables, $_<name>) {
             my $entry := PAST::Block.new(
-                :name($_.name),
-                :returns($_.returns),
+                :name($_<name>),
+                :returns($_<returns>),
             );
             # FIXME Ugly hack
             $entry<parameters> := PAST::Op.new(
                 PAST::Val.new(
-                    :name($_<parameters>)
+                    :name($_<parameter_list>)
                 )
             );
 
@@ -38,7 +38,7 @@
                     :pasttype('inline'),
                     :inline(
 ' {
-    cant_do_method(interp, pmc, "' ~ $_.name ~ '");
+    cant_do_method(interp, pmc, "' ~ $_<name> ~ '");
 }
 '),
                 )
@@ -85,7 +85,6 @@
     my @vtables := self.vtable_info;
     my @tmp;
     for @vtables {
-#        say("vtable " ~ $_.name ~ ' ' ~ $past<vtables>{$_.name});
         @tmp.push('Parrot_default_' ~ $_<name>); 
     }
     @res.push(join(",\n        ", @tmp));

Deleted: branches/pmc_pct/compilers/pmcc/src/vtable_info.pir
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/vtable_info.pir	Thu Jun 11 03:04:42 2009	(r39501)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,143 +0,0 @@
-# Copyright (C) 2009, Parrot Foundation.
-# $Id$
-
-=head1 C<PMC::VTableInfo>
-
-Holds information about single VTable method.
-
-=cut
-
-.namespace ['PMC';'VTableInfo']
-
-.sub '' :load :init
-    .local pmc p6meta
-
-    p6meta = new 'P6metaclass'
-
-    p6meta.'new_class'('PMC::VTableInfo', 'parent' => 'Capture')
-
-.end
-
-=item new([attr1=>val1, attr2=>val2, ...])
-
-Create a new VTable of initialized with the given
-attributes.  Returns the newly created node.
-
-=cut
-
-.sub 'new' :method
-    .param pmc adverbs :slurpy :named
-
-    .local pmc res
-    $P0 = self.'HOW'()
-    $P0 = getattribute $P0, 'parrotclass'
-    res = new $P0
-    
-    res.'init'(adverbs :flat :named)
-
-    .return (res)
-.end
-
-=item init([attr1=>val1, attr2=>val2, ... ])
-
-Initializes VTableInfo 
-
-=cut
-
-.sub 'init' :method
-    .param pmc adverbs         :slurpy :named
-
-    .local pmc iter
-
-    iter = new 'Iterator', adverbs
-  adverbs_loop:
-    unless iter goto adverbs_end
-    $S0 = shift iter
-    $P0 = iter[$S0]
-    $P1 = find_method self, $S0
-    self.$P1($P0)
-    goto adverbs_loop
-  adverbs_end:
-  end:
-    .return (self)
-.end
-
-
-=item name
-
-Get/Set name.
-
-=cut
-
-.sub 'name' :method
-    .param string name      :optional
-    .param int    has_name  :opt_flag
-    .tailcall self.'attr'('name', name, has_name)
-.end
-
-=item returns
-
-Get/Set ret_type of method.
-
-=cut
-
-.sub 'returns' :method
-    .param string type      :optional
-    .param int    has_type  :opt_flag
-    .tailcall self.'attr'('returns', type, has_type)
-.end
-
-=item parameters
-
-Get/Set "C" parameters.
-
-=cut
-
-.sub 'parameters' :method
-    .param string parameters        :optional
-    .param int    has_parameters    :opt_flag
-    .tailcall self.'attr'('parameters', parameters, has_parameters)
-.end
-
-=item is_write
-
-Get/set that vtable method updates PMC.
-
-=cut
-
-.sub 'is_write' :method
-    .param int is_write     :optional
-    .param int has_is_write :opt_flag
-    .tailcall self.'attr'('is_write', is_write, has_is_write)
-.end
-
-=item attr(STR attrname, PMC value, INT has_value)
-
-Helper method for accessors.  If C<has_value> is true then set
-the invocant's value of C<attrname> to C<value>.  Returns the
-(resulting) value of C<attrname> in the invocant.
-
-=cut
-
-.sub 'attr' :method
-    .param string attrname
-    .param pmc value
-    .param int has_value
-    if has_value goto setattr
-    value = self[attrname]
-    unless null value goto value_done
-    value = new 'Undef'
-  value_done:
-    .return (value)
-  setattr:
-    self[attrname] = value
-    .return (value)
-.end
-
-
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/pmc_pct/compilers/pmcc/src/vtable_info.pm
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/vtable_info.pm	Thu Jun 11 03:04:42 2009	(r39501)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,1748 +0,0 @@
-# $Id$
-#
-# DO NOT EDIT THIS FILE. Generated from src/vtable.pl by
-# compilers/pmc/tool/vtable_pm.pl
-#
-# In future this file will be replaced by full featured PCT parser for
-# src/vtable.tbl
-#
-
-class PMC::VTableInfo;
-
-# Ordered list of VTable methods
-our @?VTABLES := build_vtable_list();
-our %?VTABLES := build_vtable_hash();
-
-sub build_vtable_list() {
-    my @res;
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('absolute'),
-        :parameters('PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('add'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('add_attribute'),
-        :parameters('STRING* name, PMC* type'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('add_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('add_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('add_method'),
-        :parameters('STRING* method_name, PMC* sub_pmc'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('add_parent'),
-        :parameters('PMC* parent'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('add_role'),
-        :parameters('PMC* role'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('add_vtable_override'),
-        :parameters('STRING* vtable_name, PMC* sub_pmc'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('assign_pmc'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('assign_string_native'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_and'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_and_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_ands'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_ands_str'),
-        :parameters('STRING* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_lsr'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_lsr_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_not'),
-        :parameters('PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_nots'),
-        :parameters('PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_or'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_or_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_ors'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_ors_str'),
-        :parameters('STRING* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_shl'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_shl_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_shr'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_shr_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_xor'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_xor_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_xors'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('bitwise_xors_str'),
-        :parameters('STRING* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('can'),
-        :parameters('STRING* method'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('clone'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('clone_pmc'),
-        :parameters('PMC* args'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('cmp'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('cmp_num'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('cmp_pmc'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('cmp_string'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('concatenate'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('concatenate_str'),
-        :parameters('STRING* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('decrement'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('defined'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('defined_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('defined_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('defined_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('delete_keyed'),
-        :parameters('PMC* key'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('delete_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('delete_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('delprop'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('destroy'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('divide'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('divide_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('divide_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('does'),
-        :parameters('STRING* role'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('does_pmc'),
-        :parameters('PMC* role'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('elements'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('exists_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('exists_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('exists_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('find_method'),
-        :parameters('STRING* method_name'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('floor_divide'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('floor_divide_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('floor_divide_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('freeze'),
-        :parameters('visit_info* info'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_attr_keyed'),
-        :parameters('PMC* key, STRING* idx'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_attr_str'),
-        :parameters('STRING* idx'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_bignum'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('get_bool'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_class'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('get_integer'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('get_integer_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('get_integer_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('get_integer_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_iter'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_namespace'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('get_number'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('get_number_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('get_number_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('get_number_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_pmc'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_pmc_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_pmc_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('get_pmc_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void*'),
-        :name('get_pointer'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void*'),
-        :name('get_pointer_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void*'),
-        :name('get_pointer_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void*'),
-        :name('get_pointer_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('get_repr'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('get_string'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('get_string_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('get_string_keyed_int'),
-        :parameters('INTVAL key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('get_string_keyed_str'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('getprop'),
-        :parameters('STRING* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('getprops'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_absolute'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_add'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_add_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_add_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_and'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_and_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_ands'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_ands_str'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_lsr'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_lsr_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_not'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_nots'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_or'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_or_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_ors'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_ors_str'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_shl'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_shl_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_shr'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_shr_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_xor'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_xor_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_xors'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_bitwise_xors_str'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_concatenate'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_concatenate_str'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_divide'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_divide_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_divide_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_floor_divide'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_floor_divide_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_floor_divide_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_logical_not'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_modulus'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_modulus_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_modulus_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_multiply'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_multiply_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_multiply_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_neg'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_pow'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_pow_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_pow_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_repeat'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_repeat_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_subtract'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_subtract_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('i_subtract_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('increment'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('init'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('init_pmc'),
-        :parameters('PMC* initializer'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('inspect'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('inspect_str'),
-        :parameters('STRING* what'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('instantiate'),
-        :parameters('PMC* sig'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('instantiate_str'),
-        :parameters('STRING* rep, INTVAL flags'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('opcode_t*'),
-        :name('invoke'),
-        :parameters('void* next'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('is_equal'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('is_equal_num'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('is_equal_string'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('is_same'),
-        :parameters('PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('isa'),
-        :parameters('STRING* _class'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('isa_pmc'),
-        :parameters('PMC* _class'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('logical_and'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('logical_not'),
-        :parameters('PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('logical_or'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('logical_xor'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('mark'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('modulus'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('modulus_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('modulus_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('morph'),
-        :parameters('PMC* type'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('multiply'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('multiply_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('multiply_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('name'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('neg'),
-        :parameters('PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('nextkey_keyed'),
-        :parameters('PMC* key, INTVAL what'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('nextkey_keyed_int'),
-        :parameters('INTVAL key, INTVAL what'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('nextkey_keyed_str'),
-        :parameters('STRING* key, INTVAL what'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('pop_float'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('pop_integer'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('pop_pmc'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('pop_string'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('pow'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('pow_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('pow_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('push_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('push_integer'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('push_pmc'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('push_string'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('remove_attribute'),
-        :parameters('STRING* name'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('remove_method'),
-        :parameters('STRING* method_name'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('remove_parent'),
-        :parameters('PMC* parent'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('remove_role'),
-        :parameters('PMC* role'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('remove_vtable_override'),
-        :parameters('STRING* vtable_name'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('repeat'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('repeat_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_attr_keyed'),
-        :parameters('PMC* key, STRING* idx, PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_attr_str'),
-        :parameters('STRING* idx, PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_bignum_int'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_bignum_num'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_bignum_str'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_bool'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_integer_keyed'),
-        :parameters('PMC* key, INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_integer_keyed_int'),
-        :parameters('INTVAL key, INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_integer_keyed_str'),
-        :parameters('STRING* key, INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_integer_native'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_integer_same'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_number_keyed'),
-        :parameters('PMC* key, FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_number_keyed_int'),
-        :parameters('INTVAL key, FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_number_keyed_str'),
-        :parameters('STRING* key, FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_number_native'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_number_same'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pmc'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pmc_keyed'),
-        :parameters('PMC* key, PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pmc_keyed_int'),
-        :parameters('INTVAL key, PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pmc_keyed_str'),
-        :parameters('STRING* key, PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pointer'),
-        :parameters('void* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pointer_keyed'),
-        :parameters('PMC* key, void* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pointer_keyed_int'),
-        :parameters('INTVAL key, void* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_pointer_keyed_str'),
-        :parameters('STRING* key, void* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_string_keyed'),
-        :parameters('PMC* key, STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_string_keyed_int'),
-        :parameters('INTVAL key, STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_string_keyed_str'),
-        :parameters('STRING* key, STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_string_native'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('set_string_same'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('setprop'),
-        :parameters('STRING* key, PMC* value'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('share'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('share_ro'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('FLOATVAL'),
-        :name('shift_float'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('shift_integer'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('shift_pmc'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('shift_string'),
-        :parameters(''),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('slice'),
-        :parameters('PMC* key, INTVAL flag'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('splice'),
-        :parameters('PMC* value, INTVAL offset, INTVAL count'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('substr'),
-        :parameters('INTVAL offset, INTVAL length, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('STRING*'),
-        :name('substr_str'),
-        :parameters('INTVAL offset, INTVAL length'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('subtract'),
-        :parameters('PMC* value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('subtract_float'),
-        :parameters('FLOATVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('PMC*'),
-        :name('subtract_int'),
-        :parameters('INTVAL value, PMC* dest'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('thaw'),
-        :parameters('visit_info* info'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('thawfinish'),
-        :parameters('visit_info* info'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('type'),
-        :parameters(''),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('INTVAL'),
-        :name('type_keyed'),
-        :parameters('PMC* key'),
-        :is_write(0)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('unshift_float'),
-        :parameters('FLOATVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('unshift_integer'),
-        :parameters('INTVAL value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('unshift_pmc'),
-        :parameters('PMC* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('unshift_string'),
-        :parameters('STRING* value'),
-        :is_write(1)
-   ));
-
-    @res.push(PMC::VTableInfo.new(
-        :returns('void'),
-        :name('visit'),
-        :parameters('visit_info* info'),
-        :is_write(0)
-   ));
-
-
-    @res;
-}
-
-# Generate hash from list
-sub build_vtable_hash() {
-    my %res;
-    our @?VTABLES;
-    for (@?VTABLES) {
-        my $name    := $_.name;
-        %res{$name} := $_;
-    }
-    %res;
-}
-
-sub vtable_list() {
-    our @?VTABLES;
-    @?VTABLES;
-}
-
-sub vtable_hash() {
-    our %?VTABLES;
-    %?VTABLES;
-}
-
-# Local Variables:
-#   mode: perl6
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/pmc_pct/compilers/pmcc/t/04-vtable-info.t
==============================================================================
--- branches/pmc_pct/compilers/pmcc/t/04-vtable-info.t	Thu Jun 11 03:04:42 2009	(r39501)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,33 +0,0 @@
-#! ../../parrot
-
-# Test that vtables initialised properly.
-
-.sub 'main' :main
-    .include 'test_more.pir'
-    load_bytecode 'pmcc.pbc'
-
-    plan(2)
-
-    $P0 = get_hll_global ["PMC"; "VTableInfo"], 'vtable_list'
-    $P1 = $P0()
-
-    $I0 = elements $P1
-    ok($I0, "We've got some vtables in list")
-    
-    $P0 = get_hll_global ["PMC"; "VTableInfo"], 'vtable_hash'
-    $P1 = $P0()
-
-    $I0 = elements $P1
-    say $I0
-    ok($I0, "We've got some vtables in hash")
-.end
-
-
-# Don't forget to update plan!
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/pmc_pct/compilers/pmcc/t/07-default.t
==============================================================================
--- branches/pmc_pct/compilers/pmcc/t/07-default.t	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/t/07-default.t	Thu Jun 11 03:04:42 2009	(r39502)
@@ -21,7 +21,7 @@
     like(generated, "'Parrot_default_get_vtable'", "Parrot_default_get_vtable generated") 
 
     #this should be generated, even though it's not explicitly defined in default.pmc
-    like(generated, "'Parrot_default_set_number_keyed_int'", "Parrot_default_get_vtable generated") 
+    like(generated, "'Parrot_default_set_number_keyed'", "Parrot_default_set_number_keyed_int generated") 
 .end
 
 # Don't forget to update plan!

Modified: branches/pmc_pct/compilers/pmcc/t/common.pir
==============================================================================
--- branches/pmc_pct/compilers/pmcc/t/common.pir	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/compilers/pmcc/t/common.pir	Thu Jun 11 03:04:42 2009	(r39502)
@@ -30,12 +30,21 @@
     .param string source
     .param string target
 
-    .local pmc compiler, emitter, capture
+    .local pmc compiler, emitter, capture, vtdump
+    .local string vtdump_str, vtdump_filename
+
+    vtdump_filename = '../../vtable.frozen'
+    $P0 = new ['FileHandle']
+    vtdump_str = $P0.'readall'(vtdump_filename)
+    vtdump = thaw vtdump_str
+
     compiler = compreg 'PMC'
     capture = compiler.'compile'(source, 'target'=> target)
 
     emitter = new ['PMC'; 'Emitter']
     emitter.'set_filename'(name)
+    emitter.'set_vtable_info'(vtdump)
+
     .return (emitter, capture)
 .end
 

Modified: branches/pmc_pct/config/gen/makefiles/pmcc.in
==============================================================================
--- branches/pmc_pct/config/gen/makefiles/pmcc.in	Wed Jun 10 22:53:35 2009	(r39501)
+++ branches/pmc_pct/config/gen/makefiles/pmcc.in	Thu Jun 11 03:04:42 2009	(r39502)
@@ -17,7 +17,6 @@
 SOURCES := \
   pmcc.pir \
   src/nodes.pir \
-  src/vtable_info.pir \
   src/emitter/pmc.pir \
   src/emitter/gen_pmc.pir \
   src/emitter/c.pir \
@@ -27,7 +26,6 @@
   src/parser/gen_grammar.pir \
   src/parser/gen_actions.pir \
   src/gen_emitter.pir \
-  src/gen_vtable_info.pir \
   src/builtins.pir
 
 # the default target
@@ -61,10 +59,6 @@
 	$(PARROT) $(PARROT_ARGS) $(NQP) --output=src/gen_emitter.pir \
 	    --target=pir src/emitter.pm
 
-src/gen_vtable_info.pir: $(NQP) $(PCT) src/vtable_info.pm
-	$(PARROT) $(PARROT_ARGS) $(NQP) --output=src/gen_vtable_info.pir \
-	    --target=pir src/vtable_info.pm
-
 
 # This is a listing of all targets, that are meant to be called by users
 help:
@@ -95,7 +89,6 @@
 CLEANUPS := \
   pmc.pbc \
   src/gen_emitter.pir \
-  src/gen_vtable_info.pir \
   src/parser/gen_grammar.pir \
   src/parser/gen_actions.pir \
   src/emitter/gen_pmc.pir \


More information about the parrot-commits mailing list