[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