[svn:parrot] r47278 - branches/gsoc_past_optimization/runtime/parrot/library/PAST

tcurtis at svn.parrot.org tcurtis at svn.parrot.org
Wed Jun 2 02:41:37 UTC 2010


Author: tcurtis
Date: Wed Jun  2 02:41:37 2010
New Revision: 47278
URL: https://trac.parrot.org/parrot/changeset/47278

Log:
Switched to using a macro for class-checking.

Modified:
   branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.pir

Modified: branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.pir	Wed Jun  2 02:35:25 2010	(r47277)
+++ branches/gsoc_past_optimization/runtime/parrot/library/PAST/Pattern.pir	Wed Jun  2 02:41:37 2010	(r47278)
@@ -3,20 +3,26 @@
 # $Id$
 
 .macro accessor(attrname)
-.sub .attrname :method
-    .param pmc value
-    .param int has_value
-    if has_value goto setattr
-    value = self[.attrname]
-    unless null value goto value_done
+    .sub .attrname :method
+	.param pmc value
+	.param int has_value
+	if has_value goto setattr
+	value = self[.attrname]
+	unless null value goto value_done
 value_undef:
-    value = new 'Undef'
+	value = new 'Undef'
 value_done:
-    .return (value)
+	.return (value)
 setattr:
-    self[.attrname] = value
-    .return (value)
-.end
+	self[.attrname] = value
+	.return (value)
+    .end
+.endm
+
+.macro check_class(obj, class)
+    $P0 = get_class .class
+    $I0 = isa .obj, $P0
+    unless $I0 goto no
 .endm
 
 .sub 'onload' :anon :init :load
@@ -76,9 +82,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'Block']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'Block'])
 yes:
     .return (1)
 no:
@@ -93,9 +97,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'Op']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'Op'])
 yes:
     .return (1)
 no:
@@ -106,9 +108,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'Stmts']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'Stmts'])
 yes:
     .return (1)
 no:
@@ -121,9 +121,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'Val']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'Val'])
 yes:
     .return (1)
 no:
@@ -143,9 +141,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'Var']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'Var'])
 yes:
     .return (1)
 no:
@@ -156,9 +152,7 @@
 
 .sub 'ACCEPTS' :method
     .param pmc node
-    $P0 = get_class ['PAST'; 'VarList']
-    $I0 = isa node, $P0
-    unless $I0 goto no
+    .check_class(node, ['PAST'; 'VarList'])
 yes:
     .return (1)
 no:


More information about the parrot-commits mailing list