[pypy-svn] pypy default: get rid of some more traverse calls
cfbolz
commits-noreply at bitbucket.org
Mon Apr 4 11:46:35 CEST 2011
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r43134:0922b6a4d0f1
Date: 2011-04-01 23:30 +0200
http://bitbucket.org/pypy/pypy/changeset/0922b6a4d0f1/
Log: get rid of some more traverse calls
diff --git a/pypy/objspace/flow/test/test_objspace.py b/pypy/objspace/flow/test/test_objspace.py
--- a/pypy/objspace/flow/test/test_objspace.py
+++ b/pypy/objspace/flow/test/test_objspace.py
@@ -37,12 +37,10 @@
def all_operations(self, graph):
result = {}
- def visit(node):
- if isinstance(node, Block):
- for op in node.operations:
- result.setdefault(op.opname, 0)
- result[op.opname] += 1
- traverse(visit, graph)
+ for node in graph.iterblocks():
+ for op in node.operations:
+ result.setdefault(op.opname, 0)
+ result[op.opname] += 1
return result
@@ -246,12 +244,9 @@
x = self.codetest(self.implicitException)
simplify_graph(x)
self.show(x)
- def cannot_reach_exceptblock(link):
- if isinstance(link, Link):
- assert link.target is not x.exceptblock
- traverse(cannot_reach_exceptblock, x)
+ for link in x.iterlinks():
+ assert link.target is not x.exceptblock
-
def implicitAttributeError(x):
try:
x = getattr(x, "y")
@@ -263,10 +258,8 @@
x = self.codetest(self.implicitAttributeError)
simplify_graph(x)
self.show(x)
- def cannot_reach_exceptblock(link):
- if isinstance(link, Link):
- assert link.target is not x.exceptblock
- traverse(cannot_reach_exceptblock, x)
+ for link in x.iterlinks():
+ assert link.target is not x.exceptblock
#__________________________________________________________
def implicitException_int_and_id(x):
@@ -311,14 +304,12 @@
simplify_graph(x)
self.show(x)
found = {}
- def find_exceptions(link):
- if isinstance(link, Link):
+ for link in x.iterlinks():
if link.target is x.exceptblock:
if isinstance(link.args[0], Constant):
found[link.args[0].value] = True
else:
found[link.exitcase] = None
- traverse(find_exceptions, x)
assert found == {IndexError: True, KeyError: True, Exception: None}
def reraiseAnything(x):
@@ -332,12 +323,10 @@
simplify_graph(x)
self.show(x)
found = {}
- def find_exceptions(link):
- if isinstance(link, Link):
+ for link in x.iterlinks():
if link.target is x.exceptblock:
assert isinstance(link.args[0], Constant)
found[link.args[0].value] = True
- traverse(find_exceptions, x)
assert found == {ValueError: True, ZeroDivisionError: True, OverflowError: True}
def loop_in_bare_except_bug(lst):
@@ -521,11 +510,9 @@
def test_jump_target_specialization(self):
x = self.codetest(self.jump_target_specialization)
- def visitor(node):
- if isinstance(node, Block):
- for op in node.operations:
- assert op.opname != 'mul', "mul should have disappeared"
- traverse(visitor, x)
+ for block in x.iterblocks():
+ for op in block.operations:
+ assert op.opname != 'mul', "mul should have disappeared"
#__________________________________________________________
def highly_branching_example(a,b,c,d,e,f,g,h,i,j):
@@ -590,11 +577,9 @@
graph = self.codetest(f)
results = []
- def visit(link):
- if isinstance(link, Link):
- if link.target == graph.returnblock:
- results.extend(link.args)
- traverse(visit, graph)
+ for link in graph.iterlinks():
+ if link.target == graph.returnblock:
+ results.extend(link.args)
assert len(results) == 2
def test_unfrozen_user_class2(self):
@@ -608,11 +593,9 @@
graph = self.codetest(f)
results = []
- def visit(link):
- if isinstance(link, Link):
- if link.target == graph.returnblock:
- results.extend(link.args)
- traverse(visit, graph)
+ for link in graph.iterlinks():
+ if link.target == graph.returnblock:
+ results.extend(link.args)
assert not isinstance(results[0], Constant)
def test_frozen_user_class1(self):
@@ -631,11 +614,9 @@
graph = self.codetest(f)
results = []
- def visit(link):
- if isinstance(link, Link):
- if link.target == graph.returnblock:
- results.extend(link.args)
- traverse(visit, graph)
+ for link in graph.iterlinks():
+ if link.target == graph.returnblock:
+ results.extend(link.args)
assert len(results) == 1
def test_frozen_user_class2(self):
@@ -651,11 +632,9 @@
graph = self.codetest(f)
results = []
- def visit(link):
- if isinstance(link, Link):
- if link.target == graph.returnblock:
- results.extend(link.args)
- traverse(visit, graph)
+ for link in graph.iterlinks():
+ if link.target == graph.returnblock:
+ results.extend(link.args)
assert results == [Constant(4)]
def test_const_star_call(self):
@@ -664,14 +643,9 @@
def f():
return g(1,*(2,3))
graph = self.codetest(f)
- call_args = []
- def visit(block):
- if isinstance(block, Block):
- for op in block.operations:
- if op.opname == "call_args":
- call_args.append(op)
- traverse(visit, graph)
- assert not call_args
+ for block in graph.iterblocks():
+ for op in block.operations:
+ assert not op.opname == "call_args"
def test_catch_importerror_1(self):
def f():
@@ -998,11 +972,9 @@
simplify_graph(x)
self.show(x)
excfound = []
- def check(link):
- if isinstance(link, Link):
- if link.target is x.exceptblock:
- excfound.append(link.exitcase)
- traverse(check, x)
+ for link in x.iterlinks():
+ if link.target is x.exceptblock:
+ excfound.append(link.exitcase)
assert len(excfound) == 2
excfound.sort()
expected = [Exception, AttributeError]
@@ -1020,11 +992,9 @@
simplify_graph(x)
self.show(x)
excfound = []
- def check(link):
- if isinstance(link, Link):
- if link.target is x.exceptblock:
- excfound.append(link.exitcase)
- traverse(check, x)
+ for link in x.iterlinks():
+ if link.target is x.exceptblock:
+ excfound.append(link.exitcase)
assert len(excfound) == 2
excfound.sort()
expected = [Exception, TypeError]
diff --git a/pypy/translator/goal/query.py b/pypy/translator/goal/query.py
--- a/pypy/translator/goal/query.py
+++ b/pypy/translator/goal/query.py
@@ -30,15 +30,13 @@
def polluted_qgen(translator):
"""list functions with still real SomeObject variables"""
annotator = translator.annotator
- def visit(block):
- if isinstance(block, flowmodel.Block):
- for v in block.getvariables():
- s = annotator.binding(v, None)
- if s and s.__class__ == annmodel.SomeObject and s.knowntype != type:
- raise Found
for g in translator.graphs:
try:
- flowmodel.traverse(visit, g)
+ for block in g.iterblocks():
+ for v in block.getvariables():
+ s = annotator.binding(v, None)
+ if s and s.__class__ == annmodel.SomeObject and s.knowntype != type:
+ raise Found
except Found:
line = "%s: %s" % (g, graph_sig(translator, g))
yield line
diff --git a/pypy/translator/gensupp.py b/pypy/translator/gensupp.py
--- a/pypy/translator/gensupp.py
+++ b/pypy/translator/gensupp.py
@@ -6,15 +6,13 @@
import sys
from pypy.objspace.flow.model import Block
-from pypy.objspace.flow.model import traverse
# ordering the blocks of a graph by source position
def ordered_blocks(graph):
# collect all blocks
allblocks = []
- def visit(block):
- if isinstance(block, Block):
+ for block in graph.iterblocks():
# first we order by offset in the code string
if block.operations:
ofs = block.operations[0].offset
@@ -26,7 +24,6 @@
else:
txt = "dummy"
allblocks.append((ofs, txt, block))
- traverse(visit, graph)
allblocks.sort()
#for ofs, txt, block in allblocks:
# print ofs, txt, block
diff --git a/pypy/translator/backendopt/inline.py b/pypy/translator/backendopt/inline.py
--- a/pypy/translator/backendopt/inline.py
+++ b/pypy/translator/backendopt/inline.py
@@ -5,7 +5,7 @@
from pypy.objspace.flow.model import Variable, Constant, Block, Link
from pypy.objspace.flow.model import SpaceOperation, c_last_exception
from pypy.objspace.flow.model import FunctionGraph
-from pypy.objspace.flow.model import traverse, mkentrymap, checkgraph
+from pypy.objspace.flow.model import mkentrymap, checkgraph
from pypy.annotation import model as annmodel
from pypy.rpython.lltypesystem.lltype import Bool, Signed, typeOf, Void, Ptr
from pypy.rpython.lltypesystem.lltype import normalizeptr
diff --git a/pypy/translator/test/test_simplify.py b/pypy/translator/test/test_simplify.py
--- a/pypy/translator/test/test_simplify.py
+++ b/pypy/translator/test/test_simplify.py
@@ -3,7 +3,7 @@
from pypy.translator.backendopt.all import backend_optimizations
from pypy.translator.simplify import (get_graph, transform_dead_op_vars,
desugar_isinstance)
-from pypy.objspace.flow.model import traverse, Block, Constant, summary
+from pypy.objspace.flow.model import Block, Constant, summary
from pypy import conftest
def translate(func, argtypes, backend_optimize=True):
diff --git a/pypy/translator/backendopt/test/test_tailrecursion.py b/pypy/translator/backendopt/test/test_tailrecursion.py
--- a/pypy/translator/backendopt/test/test_tailrecursion.py
+++ b/pypy/translator/backendopt/test/test_tailrecursion.py
@@ -1,4 +1,4 @@
-from pypy.objspace.flow.model import traverse, Block, Link, Variable, Constant
+from pypy.objspace.flow.model import Block, Link, Variable, Constant
from pypy.translator.backendopt.tailrecursion import remove_tail_calls_to_self
from pypy.translator.translator import TranslationContext, graphof
from pypy.rpython.llinterp import LLInterpreter
More information about the Pypy-commit
mailing list