[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