[svn:parrot] r47828 - in branches/gsoc_past_optimization: . config/gen/makefiles runtime/parrot/library/PAST runtime/parrot/library/PAST/Transformer runtime/parrot/library/PAST/Walker runtime/parrot/library/Tree runtime/parrot/library/Tree/Pattern t/library
tcurtis at svn.parrot.org
tcurtis at svn.parrot.org
Fri Jun 25 06:56:38 UTC 2010
Author: tcurtis
Date: Fri Jun 25 06:56:37 2010
New Revision: 47828
URL: https://trac.parrot.org/parrot/changeset/47828
Log:
Create Tree::Walker base class for ::Walker classes.
Added:
branches/gsoc_past_optimization/runtime/parrot/library/Tree/Walker.nqp (contents, props changed)
Modified:
branches/gsoc_past_optimization/MANIFEST
branches/gsoc_past_optimization/MANIFEST.SKIP
branches/gsoc_past_optimization/MANIFEST.generated
branches/gsoc_past_optimization/config/gen/makefiles/root.in
branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.nqp
branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.nqp
branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp
branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.nqp
branches/gsoc_past_optimization/runtime/parrot/library/Tree/ (props changed)
branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp
branches/gsoc_past_optimization/t/library/pasttransformer.t
branches/gsoc_past_optimization/t/library/pasttransformerdynamic.t
branches/gsoc_past_optimization/t/library/pastwalker.t
branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t
Modified: branches/gsoc_past_optimization/MANIFEST
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/MANIFEST Fri Jun 25 06:56:37 2010 (r47828)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Jun 24 22:30:16 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Jun 25 05:50:21 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -1241,6 +1241,7 @@
runtime/parrot/library/Tree/Pattern/Constant.nqp [library]
runtime/parrot/library/Tree/Pattern/Match.nqp [library]
runtime/parrot/library/Tree/Pattern/Transformer.nqp [library]
+runtime/parrot/library/Tree/Walker.nqp [library]
runtime/parrot/library/URI.pir [library]
runtime/parrot/library/URI/Escape.pir [library]
runtime/parrot/library/YAML/Dumper.pir [library]
Modified: branches/gsoc_past_optimization/MANIFEST.SKIP
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.SKIP Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/MANIFEST.SKIP Fri Jun 25 06:56:37 2010 (r47828)
@@ -1,6 +1,6 @@
# ex: set ro:
# $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Jun 24 22:08:19 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Jun 25 05:50:21 2010 UT
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -653,6 +653,8 @@
^runtime/parrot/library/Tree/.*\.pbc/
^runtime/parrot/library/Tree/Pattern\.pir$
^runtime/parrot/library/Tree/Pattern\.pir/
+^runtime/parrot/library/Tree/Walker\.pir$
+^runtime/parrot/library/Tree/Walker\.pir/
# generated from svn:ignore of 'runtime/parrot/library/Tree/Pattern/'
^runtime/parrot/library/Tree/Pattern/.*\.pbc$
^runtime/parrot/library/Tree/Pattern/.*\.pbc/
Modified: branches/gsoc_past_optimization/MANIFEST.generated
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.generated Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/MANIFEST.generated Fri Jun 25 06:56:37 2010 (r47828)
@@ -319,6 +319,7 @@
runtime/parrot/library/Tree/Pattern/Constant.pbc [main]
runtime/parrot/library/Tree/Pattern/Match.pbc [main]
runtime/parrot/library/Tree/Pattern/Transformer.pbc [main]
+runtime/parrot/library/Tree/Walker.pbc [main]
runtime/parrot/library/URI.pbc [main]
runtime/parrot/library/YAML/Dumper.pbc [main]
runtime/parrot/library/YAML/Dumper/Base.pmc [main]
Modified: branches/gsoc_past_optimization/config/gen/makefiles/root.in
==============================================================================
--- branches/gsoc_past_optimization/config/gen/makefiles/root.in Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/config/gen/makefiles/root.in Fri Jun 25 06:56:37 2010 (r47828)
@@ -345,6 +345,8 @@
$(LIBRARY_DIR)/Tree/Pattern/Match.pir \
$(LIBRARY_DIR)/Tree/Pattern/Transformer.pbc \
$(LIBRARY_DIR)/Tree/Pattern/Transformer.pir \
+ $(LIBRARY_DIR)/Tree/Walker.pbc \
+ $(LIBRARY_DIR)/Tree/Walker.pir \
$(LIBRARY_DIR)/URI.pbc \
$(LIBRARY_DIR)/URI/Escape.pbc \
$(LIBRARY_DIR)/uuid.pbc \
@@ -1242,6 +1244,12 @@
$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern/Transformer.nqp \
> $@
+$(LIBRARY_DIR)/Tree/Walker.pbc: $(LIBRARY_DIR)/Tree/Walker.pir
+ $(PARROT) -o $@ $(LIBRARY_DIR)/Tree/Walker.pir
+
+$(LIBRARY_DIR)/Tree/Walker.pir: $(LIBRARY_DIR)/Tree/Walker.nqp $(NQP_RX)
+ $(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Walker.nqp > $@
+
###############################################################################
#
# Other Dependencies and Build Rules:
Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.nqp Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -8,13 +8,17 @@
class PAST::Transformer is PAST::Walker { }
-module PAST::Walker {
+module Tree::Walker {
our multi sub walk (PAST::Transformer $walker, PAST::Node $node) {
my $result := $node;
replaceChildren($result, walkChildren($walker, $node));
$result;
}
+ our multi sub walk (PAST::Transformer $walker, $node) {
+ $node; # Don't touch things that we don't know what to do with.
+ }
+
our multi sub walkChildren (PAST::Transformer $walker,
PAST::Node $node) {
my @results;
Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.nqp Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Transformer/Dynamic.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -12,7 +12,7 @@
PAST::Walker::Dynamic);
}
-module PAST::Walker {
+module Tree::Walker {
our multi sub walk (PAST::Transformer::Dynamic $walker,
PAST::Block $node) {
my $result;
Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -4,32 +4,16 @@
INIT {
pir::load_bytecode('PCT.pbc');
+ pir::load_bytecode('Tree/Walker.pbc');
}
-class PAST::Walker {
+class PAST::Walker is Tree::Walker { }
+
+module Tree::Walker {
our multi sub walk (PAST::Walker $walker, PAST::Node $node) {
+ say('PAST::Walker, PAST::Node');
walkChildren($walker, $node);
}
-
- our multi sub walk (PAST::Walker $walker, $node) {
- $node;
- }
-
- our multi sub walkChildren (PAST::Walker $walker, PAST::Node $node) {
- my $index := 0;
- my $max := pir::elements__IP($node);
- while ($index < $max) {
- walk($walker, $node[$index++]);
- }
- }
-
- method walk ($node) {
- walk(self, $node);
- }
-
- method walkChildren ($node) {
- walkChildren(self, $node);
- }
}
# Local Variables:
Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.nqp Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Walker/Dynamic.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -34,7 +34,7 @@
}
}
-module PAST::Walker {
+module Tree::Walker {
our multi sub walk (PAST::Walker::Dynamic $walker, PAST::Block $node) {
my &fn := $walker.block();
if &fn {
Modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Transformer.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -43,9 +43,9 @@
}
-module PAST::Walker {
+module Tree::Walker {
our multi sub walk (Tree::Pattern::Transformer $walker,
- PAST::Node $node) {
+ Capture $node) {
my $pattern := $walker.pattern();
my $shouldTransform;
if ($pattern ~~ Tree::Pattern) {
Added: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Walker.nqp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Walker.nqp Fri Jun 25 06:56:37 2010 (r47828)
@@ -0,0 +1,33 @@
+#!./parrot-nqp
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+class Tree::Walker {
+ our multi sub walk (Tree::Walker $walker, Capture $node) {
+ walkChildren($walker, $node);
+ }
+
+ our multi sub walkChildren (Tree::Walker $walker, Capture $tree) {
+ my $index := 0;
+ my $len := pir::elements__iP($tree);
+ while ($index < $len) {
+ walk($walker, $tree[$index]);
+ $index++;
+ }
+ }
+
+ method walk ($node) {
+ walk(self, $node);
+ }
+
+ method walkChildren ($node) {
+ walkChildren(self, $node);
+ }
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Modified: branches/gsoc_past_optimization/t/library/pasttransformer.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pasttransformer.t Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/t/library/pasttransformer.t Fri Jun 25 06:56:37 2010 (r47828)
@@ -228,7 +228,7 @@
$P0 = subclass $P1, ['PAST'; 'Transformer'; 'Trim']
.end
-.namespace ['PAST'; 'Walker']
+.namespace ['Tree'; 'Walker']
.sub 'walk' :multi(['PAST'; 'Transformer'; 'Increment'], ['PAST'; 'Val'])
.param pmc walker
Modified: branches/gsoc_past_optimization/t/library/pasttransformerdynamic.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pasttransformerdynamic.t Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/t/library/pasttransformerdynamic.t Fri Jun 25 06:56:37 2010 (r47828)
@@ -76,8 +76,8 @@
my $length := pir::elements__IP($node);
if ($length <= 1) {
$result := $node;
- my $children := PAST::Walker::walkChildren($walker, $node);
- PAST::Walker::replaceChildren($result, $children);
+ my $children := Tree::Walker::walkChildren($walker, $node);
+ Tree::Walker::replaceChildren($result, $children);
}
else {
$result := null;
Modified: branches/gsoc_past_optimization/t/library/pastwalker.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pastwalker.t Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/t/library/pastwalker.t Fri Jun 25 06:56:37 2010 (r47828)
@@ -41,11 +41,14 @@
.local pmc walker, past
walker = new ['PAST';'Walker';'NodeCounter']
walker.'reset'()
+ say 'before build'
past = 'build_count_node_types_past'()
+ say 'after build'
walker.'walk'(past)
+ say 'after walk'
$P2 = getattribute walker, 'counts'
$P3 = $P2['blocks']
@@ -106,7 +109,7 @@
addattribute $P0, 'counts'
.end
-.namespace ['PAST'; 'Walker']
+.namespace ['Tree'; 'Walker']
.sub 'walk' :multi(['PAST';'Walker';'NodeCounter'], ['PAST';'Block'])
.param pmc walker
Modified: branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t Fri Jun 25 06:48:33 2010 (r47827)
+++ branches/gsoc_past_optimization/t/library/pastwalkerdynamic.t Fri Jun 25 06:56:37 2010 (r47828)
@@ -23,27 +23,27 @@
sub walkBlock ($walker, $past) {
++$blocks;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub walkOp ($walker, $past) {
++$ops;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub walkStmts ($walker, $past) {
++$stmts;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub walkVal ($walker, $past) {
++$vals;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub walkVar ($walker, $past) {
++$vars;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub walkVarList ($walker, $past) {
++$varlists;
- PAST::Walker::walkChildren($walker, $past);
+ Tree::Walker::walkChildren($walker, $past);
}
sub zeroCounts () {
More information about the parrot-commits
mailing list