[svn:parrot] r39499 - branches/pmc_pct/compilers/vtdumper

cotto at svn.parrot.org cotto at svn.parrot.org
Wed Jun 10 22:42:22 UTC 2009


Author: cotto
Date: Wed Jun 10 22:42:20 2009
New Revision: 39499
URL: https://trac.parrot.org/parrot/changeset/39499

Log:
[vtdumper] freeze/thaw on Captures is broken; convert the PAST to Hash of RPAs

Modified:
   branches/pmc_pct/compilers/vtdumper/vtdumper.pir

Modified: branches/pmc_pct/compilers/vtdumper/vtdumper.pir
==============================================================================
--- branches/pmc_pct/compilers/vtdumper/vtdumper.pir	Wed Jun 10 18:36:20 2009	(r39498)
+++ branches/pmc_pct/compilers/vtdumper/vtdumper.pir	Wed Jun 10 22:42:20 2009	(r39499)
@@ -35,19 +35,7 @@
     .param pmc past
     .param pmc adverbs :slurpy :named
 
-    .local string frozen
-
-    frozen = freeze past
-    'write_file'("vtable.frozen", frozen)
-
-    exit 0
-.end
-
-
-.sub 'generate_json' :method
-    .param pmc past
-    .param pmc adverbs :slurpy :named
-
+    #spast = simplified past, i.e. converted from a Capture
     .local pmc node, spast, snode, sattrs, sargs, sarg
     .local pmc it, key
     .local int i, j, elems
@@ -55,9 +43,9 @@
     spast = new ['ResizablePMCArray']
 
     #PAST::Block doesn't support iteration or even get_integer, so this is the
-    #easiest way to get all elements
+    #easiest way to get all elements.  Also, freeze/thaw on Captures is broken.
     i = 0
-  loop_start:
+  spast_loop_start:
     node = past[i]
     i += 1
     if_null node, loop_end
@@ -78,8 +66,8 @@
     j = 0
     elems = elements $P0
 
-  args_loop_start:
-    if j == elems goto args_loop_end
+  params_loop_start:
+    if j == elems goto params_loop_end
 
     $P1 = new ['Hash']
 
@@ -92,23 +80,28 @@
     push sargs, $P1
 
     j += 1
-    goto args_loop_start
+    goto params_loop_start
 
-  args_loop_end:
+  params_loop_end:
 
     snode['parameters'] = sargs
+    $P0 = node['parameter_list']
+    snode['parameter_list'] = $P0
 
     sattrs = node['attributes']
     snode['attributes'] = sattrs
     push spast, snode
 
-    goto loop_start
+    goto spast_loop_start
 
   loop_end:
 
-    .local string json
-    json = _json(spast, 1)
-    'write_file'("vtable.json", json)
+    .local string frozen
+    frozen = freeze spast
+    'write_file'("vtable.frozen", frozen)
+
+    #$S0 = _json(spast, 1)
+    #say $S0
 
     #exit to avoid confusing HLLCompiler
     exit 0


More information about the parrot-commits mailing list