[svn:parrot] r47069 - in branches/gsoc_past_optimization: runtime/parrot/library/PAST runtime/parrot/library/PAST/Transformer runtime/parrot/library/PAST/Walker t/library

tcurtis at svn.parrot.org tcurtis at svn.parrot.org
Thu May 27 22:38:59 UTC 2010


Author: tcurtis
Date: Thu May 27 22:38:59 2010
New Revision: 47069
URL: https://trac.parrot.org/parrot/changeset/47069

Log:
Use P6object so NQP doesn't have to do Q:PIR { %r = new ['PAST'; 'Walker'] } or such.

Modified:
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.pir
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.pir
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.pir
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.pir
   branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.pir	Thu May 27 22:14:36 2010	(r47068)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.pir	Thu May 27 22:38:59 2010	(r47069)
@@ -3,7 +3,11 @@
 
 .sub 'onload' :anon :init :load
     load_bytecode 'PAST/Walker.pbc'
-    $P0 = subclass ['PAST';'Walker'], ['PAST'; 'Transformer']
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta, base
+    p6meta = new 'P6metaclass'
+    base = get_class ['PAST'; 'Walker']
+    p6meta.'new_class'('PAST::Transformer', 'parent'=> base)
 .end
 
 .namespace ['PAST'; 'Walker']

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.pir	Thu May 27 22:14:36 2010	(r47068)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.pir	Thu May 27 22:38:59 2010	(r47069)
@@ -4,10 +4,14 @@
 .sub 'onload' :anon :init :load
     load_bytecode 'PAST/Transformer.pbc'
     load_bytecode 'PAST/Walker/Dynamic.pbc'
-    $P1 = get_class ['PAST'; 'Walker'; 'Dynamic']
-    $P2 = get_class ['PAST'; 'Transformer']
-    $P0 = subclass $P1, ['PAST'; 'Transformer'; 'Dynamic']
-    addparent $P0, $P2
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta, walkdyn, trans
+    p6meta = new 'P6metaclass'
+    walkdyn = get_class ['PAST'; 'Walker'; 'Dynamic']
+    trans = get_class ['PAST'; 'Transformer']
+    $S0 = 'PAST::Transformer::Dynamic'
+    $P0 = p6meta.'new_class'($S0, 'parent'=> walkdyn)
+    p6meta.'addparrent'($P0, trans)
 .end
 
 .namespace ['PAST'; 'Walker']

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.pir	Thu May 27 22:14:36 2010	(r47068)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.pir	Thu May 27 22:38:59 2010	(r47069)
@@ -12,7 +12,10 @@
 =cut
 
 .sub 'onload' :anon :init :load
-    $P0 = newclass ['PAST'; 'Walker']
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta
+    p6meta = new 'P6metaclass'
+    p6meta.'new_class'('PAST::Walker')
 .end
 
 .namespace ['PAST'; 'Walker']

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.pir	Thu May 27 22:14:36 2010	(r47068)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.pir	Thu May 27 22:38:59 2010	(r47069)
@@ -3,12 +3,14 @@
 
 .sub 'onload' :anon :init :load
     load_bytecode 'PAST/Walker.pbc'
-    $P0 = subclass ['PAST'; 'Walker'], ['PAST'; 'Walker'; 'Dynamic']
-    addattribute $P0, 'block'
-    addattribute $P0, 'op'
-    addattribute $P0, 'stmts'
-    addattribute $P0, 'val'
-    addattribute $P0, 'var'
+    load_bytecode 'P6object.pbc'
+    .local pmc p6meta, base
+    .local string name, attrs
+    p6meta = new 'P6metaclass'
+    base = get_class ['PAST'; 'Walker']
+    name = 'PAST::Walker::Dynamic'
+    attrs = 'block op stmts val var'
+    p6meta.'new_class'(name, 'parent'=>base, 'attr'=>attrs)
 .end
 
 .namespace ['PAST'; 'Walker'; 'Dynamic']

Modified: branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t	Thu May 27 22:14:36 2010	(r47068)
+++ branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t	Thu May 27 22:38:59 2010	(r47069)
@@ -50,7 +50,7 @@
 }
 
 sub test_count_node_types() {
-    my $walker := Q:PIR { %r = new ['PAST'; 'Walker'; 'Dynamic']};
+    my $walker := PAST::Walker::Dynamic.new();
     
     $walker.block(walkBlock);
     $walker.op(walkOp);


More information about the parrot-commits mailing list