[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