[svn:parrot] r47773 - in branches/gsoc_past_optimization: . config/gen/makefiles runtime/parrot/library/PAST runtime/parrot/library/PAST/Pattern runtime/parrot/library/Tree runtime/parrot/library/Tree/Pattern t/library

tcurtis at svn.parrot.org tcurtis at svn.parrot.org
Wed Jun 23 04:22:12 UTC 2010


Author: tcurtis
Date: Wed Jun 23 04:22:11 2010
New Revision: 47773
URL: https://trac.parrot.org/parrot/changeset/47773

Log:
Start moving non-PAST-specific patterns to Tree::Pattern subclasses.

Added:
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Closure.nqp
      - copied, changed from r47772, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Constant.nqp
      - copied, changed from r47772, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp
Deleted:
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp
Modified:
   branches/gsoc_past_optimization/MANIFEST
   branches/gsoc_past_optimization/MANIFEST.SKIP
   branches/gsoc_past_optimization/config/gen/makefiles/root.in
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Any.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Node.nqp
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp   (contents, props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Match.nqp   (contents, props changed)
   branches/gsoc_past_optimization/t/library/pastpattern.t

Modified: branches/gsoc_past_optimization/MANIFEST
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/MANIFEST	Wed Jun 23 04:22:11 2010	(r47773)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 01:55:58 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 03:39:43 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -1176,8 +1176,6 @@
 runtime/parrot/library/P6object.pir                         [library]
 runtime/parrot/library/PAST/Pattern.nqp                     [library]
 runtime/parrot/library/PAST/Pattern/Any.nqp                 [library]
-runtime/parrot/library/PAST/Pattern/Closure.nqp             [library]
-runtime/parrot/library/PAST/Pattern/Constant.nqp            [library]
 runtime/parrot/library/PAST/Pattern/Node.nqp                [library]
 runtime/parrot/library/PAST/Pattern/Transformer.nqp         [library]
 runtime/parrot/library/PAST/Transformer.pir                 [library]
@@ -1239,6 +1237,8 @@
 runtime/parrot/library/Test/Class.pir                       [library]
 runtime/parrot/library/Test/More.pir                        [library]
 runtime/parrot/library/Tree/Pattern.nqp                     [library]
+runtime/parrot/library/Tree/Pattern/Closure.nqp             [library]
+runtime/parrot/library/Tree/Pattern/Constant.nqp            [library]
 runtime/parrot/library/Tree/Pattern/Match.nqp               [library]
 runtime/parrot/library/URI.pir                              [library]
 runtime/parrot/library/URI/Escape.pir                       [library]

Modified: branches/gsoc_past_optimization/MANIFEST.SKIP
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.SKIP	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/MANIFEST.SKIP	Wed Jun 23 04:22:11 2010	(r47773)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 01:55:58 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 03:39:43 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -651,11 +651,15 @@
 # generated from svn:ignore of 'runtime/parrot/library/Tree/'
 ^runtime/parrot/library/Tree/.*\.pbc$
 ^runtime/parrot/library/Tree/.*\.pbc/
-^runtime/parrot/library/Tree/Tree\.pir$
-^runtime/parrot/library/Tree/Tree\.pir/
+^runtime/parrot/library/Tree/Pattern\.pir$
+^runtime/parrot/library/Tree/Pattern\.pir/
 # generated from svn:ignore of 'runtime/parrot/library/Tree/Pattern/'
 ^runtime/parrot/library/Tree/Pattern/.*\.pbc$
 ^runtime/parrot/library/Tree/Pattern/.*\.pbc/
+^runtime/parrot/library/Tree/Pattern/Closure\.pir$
+^runtime/parrot/library/Tree/Pattern/Closure\.pir/
+^runtime/parrot/library/Tree/Pattern/Constant\.pir$
+^runtime/parrot/library/Tree/Pattern/Constant\.pir/
 ^runtime/parrot/library/Tree/Pattern/Match\.pir$
 ^runtime/parrot/library/Tree/Pattern/Match\.pir/
 # generated from svn:ignore of 'runtime/parrot/library/URI/'

Modified: branches/gsoc_past_optimization/config/gen/makefiles/root.in
==============================================================================
--- branches/gsoc_past_optimization/config/gen/makefiles/root.in	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/config/gen/makefiles/root.in	Wed Jun 23 04:22:11 2010	(r47773)
@@ -284,10 +284,6 @@
     $(LIBRARY_DIR)/PAST/Pattern.pir \
     $(LIBRARY_DIR)/PAST/Pattern/Any.pbc \
     $(LIBRARY_DIR)/PAST/Pattern/Any.pir \
-    $(LIBRARY_DIR)/PAST/Pattern/Closure.pbc \
-    $(LIBRARY_DIR)/PAST/Pattern/Closure.pir \
-    $(LIBRARY_DIR)/PAST/Pattern/Constant.pbc \
-    $(LIBRARY_DIR)/PAST/Pattern/Constant.pir \
     $(LIBRARY_DIR)/PAST/Pattern/Node.pbc \
     $(LIBRARY_DIR)/PAST/Pattern/Node.pir \
     $(LIBRARY_DIR)/PAST/Pattern/Transformer.pbc \
@@ -337,6 +333,10 @@
     $(LIBRARY_DIR)/TclLibrary.pbc \
     $(LIBRARY_DIR)/Tree/Pattern.pbc \
     $(LIBRARY_DIR)/Tree/Pattern.pir \
+    $(LIBRARY_DIR)/Tree/Pattern/Closure.pbc \
+    $(LIBRARY_DIR)/Tree/Pattern/Closure.pir \
+    $(LIBRARY_DIR)/Tree/Pattern/Constant.pbc \
+    $(LIBRARY_DIR)/Tree/Pattern/Constant.pir \
     $(LIBRARY_DIR)/Tree/Pattern/Match.pbc \
     $(LIBRARY_DIR)/Tree/Pattern/Match.pir \
     $(LIBRARY_DIR)/URI.pbc \
@@ -1196,6 +1196,24 @@
 	$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern.nqp \
 	> $@
 
+$(LIBRARY_DIR)/Tree/Pattern/Closure.pbc: \
+	$(LIBRARY_DIR)/Tree/Pattern/Closure.pir
+	$(PARROT) -o $@ $(LIBRARY_DIR)/Tree/Pattern/Closure.pir
+
+$(LIBRARY_DIR)/Tree/Pattern/Closure.pir: \
+	$(LIBRARY_DIR)/Tree/Pattern/Closure.nqp $(NQP_RX)
+	$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern/Closure.nqp \
+	> $@
+
+$(LIBRARY_DIR)/Tree/Pattern/Constant.pbc: \
+	$(LIBRARY_DIR)/Tree/Pattern/Constant.pir
+	$(PARROT) -o $@ $(LIBRARY_DIR)/Tree/Pattern/Constant.pir
+
+$(LIBRARY_DIR)/Tree/Pattern/Constant.pir: \
+	$(LIBRARY_DIR)/Tree/Pattern/Constant.nqp $(NQP_RX)
+	$(NQP_RX) --target=pir $(LIBRARY_DIR)/Tree/Pattern/Constant.nqp \
+	> $@
+
 $(LIBRARY_DIR)/Tree/Pattern/Match.pbc: \
 	$(LIBRARY_DIR)/Tree/Pattern/Match.pir
 	$(PARROT) -o $@ $(LIBRARY_DIR)/Tree/Pattern/Match.pir

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -8,27 +8,6 @@
 }
 
 class PAST::Pattern is Tree::Pattern {
-    sub patternize ($value) {
-        unless (pir::can__IPS($value, 'ACCEPTS')) {
-            if (pir::isa__IPP($value, Sub)) {
-                $value := PAST::Pattern::Closure.new($value);
-            } else {
-                $value := PAST::Pattern::Constant.new($value);
-            }
-        }
-        $value;
-    }
-
-    method attr ($name, $value, $has_value) {
-        my $result;
-        if ($has_value) {
-            self{$name} := $value;
-        } else {
-            $result := self{$name};
-        }
-        $result;
-    }
-
     method transform ($past, $transform) {
         my &transSub;
         if ($transform ~~ PAST::Transformer) {
@@ -55,8 +34,6 @@
 }
 
 INIT {
-    pir::load_bytecode('PAST/Pattern/Closure.pbc');
-    pir::load_bytecode('PAST/Pattern/Constant.pbc');
     pir::load_bytecode('PAST/Pattern/Node.pbc');
 
     pir::load_bytecode('PAST/Pattern/Any.pbc');

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Any.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Any.nqp	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Any.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -11,7 +11,7 @@
         };
         my $index := 0;
         for @_ {
-            $self[$index++] := PAST::Pattern::patternize($_);
+            $self[$index++] := Tree::Pattern::patternize($_);
         }
         $self;
     }

Deleted: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp	Wed Jun 23 04:22:11 2010	(r47772)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,32 +0,0 @@
-#!./parrot-nqp
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-class PAST::Pattern::Closure is PAST::Pattern {
-
-    method new (&code) {
-        my $self := Q:PIR {
-            $P0 = self.'HOW'()
-            $P0 = getattribute $P0, 'parrotclass'
-            %r = new $P0
-        };
-        $self.code(&code);
-        $self;
-    }
-
-    method code (&code?) {
-        self.attr("code", &code, pir::defined__IP(&code));
-    }
-
-    method ACCEPTSEXACTLY ($node) {
-        Tree::Pattern::Match.new(self.code()($node),
-                                 $node);
-    }
-}
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp	Wed Jun 23 04:22:11 2010	(r47772)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,31 +0,0 @@
-#!./parrot-nqp
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-class PAST::Pattern::Constant is PAST::Pattern {
-    method new ($value) {
-        my $self := Q:PIR {
-            $P0 = self.'HOW'()
-            $P0 = getattribute $P0, 'parrotclass'
-            %r = new $P0
-        };
-        $self.value($value);
-        $self;
-    }
-
-    method value ($value?) {
-        self.attr("value", $value, pir::defined__IP($value));
-    }
-
-    method ACCEPTSEXACTLY ($node) {
-        Tree::Pattern::Match.new(pir::iseq__IPP(self.value(), $node),
-                                 $node);
-    }
-}
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Node.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Node.nqp	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Node.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -10,7 +10,7 @@
     method attr ($name, $value, $has_value) {
         my $result;
         if ($has_value) {
-            self{$name} := PAST::Pattern::patternize($value);
+            self{$name} := Tree::Pattern::patternize($value);
         } else {
             $result := self{$name};
         }
@@ -60,7 +60,7 @@
             $result.attr($_, %attrs{$_}, 1);
         }
         for @children {
-            pir::push($result, PAST::Pattern::patternize($_));
+            pir::push($result, Tree::Pattern::patternize($_));
         }
         $result;
     }

Modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -3,6 +3,27 @@
 # $Id$
 
 class Tree::Pattern is Capture {
+    sub patternize ($value) {
+        unless (pir::can__IPS($value, 'ACCEPTS')) {
+            if (pir::isa__IPP($value, Sub)) {
+                $value := Tree::Pattern::Closure.new($value);
+            } else {
+                $value := Tree::Pattern::Constant.new($value);
+            }
+        }
+        $value;
+    }
+
+    method attr ($name, $value, $has_value) {
+        my $result;
+        if ($has_value) {
+            self{$name} := $value;
+        } else {
+            $result := self{$name};
+        }
+        $result;
+    }
+
     method ACCEPTS ($node, *%opts) {
         my $global := ?%opts<g> || ?%opts<global>;
         my $pos := %opts<p> || %opts<pos>;
@@ -63,6 +84,9 @@
 
 INIT {
     pir::load_bytecode('Tree/Pattern/Match.pbc');
+
+    pir::load_bytecode('Tree/Pattern/Closure.pbc');
+    pir::load_bytecode('Tree/Pattern/Constant.pbc');
 }
 
 # Local Variables:

Copied and modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Closure.nqp (from r47772, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp)
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Closure.nqp	Wed Jun 23 03:01:54 2010	(r47772, copy source)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Closure.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -2,7 +2,7 @@
 # Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
-class PAST::Pattern::Closure is PAST::Pattern {
+class Tree::Pattern::Closure is Tree::Pattern {
 
     method new (&code) {
         my $self := Q:PIR {

Copied and modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Constant.nqp (from r47772, branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp)
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern/Constant.nqp	Wed Jun 23 03:01:54 2010	(r47772, copy source)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Constant.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -2,7 +2,7 @@
 # Copyright (C) 2010, Parrot Foundation.
 # $Id$
 
-class PAST::Pattern::Constant is PAST::Pattern {
+class Tree::Pattern::Constant is Tree::Pattern {
     method new ($value) {
         my $self := Q:PIR {
             $P0 = self.'HOW'()

Modified: branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Match.nqp
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Match.nqp	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern/Match.nqp	Wed Jun 23 04:22:11 2010	(r47773)
@@ -1,6 +1,6 @@
 #!./parrot-nqp
 # Copyright (C) 2010, Parrot Foundation.
-# $Id: Match.nqp 47631 2010-06-15 00:14:01Z tcurtis $
+# $Id$
 
 class Tree::Pattern::Match is Capture {
     has $!success;

Modified: branches/gsoc_past_optimization/t/library/pastpattern.t
==============================================================================
--- branches/gsoc_past_optimization/t/library/pastpattern.t	Wed Jun 23 03:01:54 2010	(r47772)
+++ branches/gsoc_past_optimization/t/library/pastpattern.t	Wed Jun 23 04:22:11 2010	(r47773)
@@ -652,7 +652,7 @@
 
 sub test_match_result_from_closure () {
     my $pattern := 
-      PAST::Pattern::Closure.new(sub ($_) { 
+      Tree::Pattern::Closure.new(sub ($_) { 
                                      $_ ~~ PAST::Val
                                        && $_.returns() eq 'Integer';
                                  });
@@ -675,7 +675,7 @@
 }
 
 sub test_match_result_from_constant () {
-    my $pattern := PAST::Pattern::Constant.new(5);
+    my $pattern := Tree::Pattern::Constant.new(5);
     my $node := 5;
     my $/ := $node ~~ $pattern;
     


More information about the parrot-commits mailing list