Author: Richard Plangger <r...@pasra.at> Branch: vecopt Changeset: r78680:2a58825eefba Date: 2015-07-27 12:09 +0200 http://bitbucket.org/pypy/pypy/changeset/2a58825eefba/
Log: ironed out problems indicated by buildbot (small batch) llgraph now checks for box is equal to zero (otherwise getaccum will fail) renamed FloatConstant -> NumberConstant diff --git a/pypy/module/micronumpy/compile.py b/pypy/module/micronumpy/compile.py --- a/pypy/module/micronumpy/compile.py +++ b/pypy/module/micronumpy/compile.py @@ -579,14 +579,20 @@ class NumberConstant(Node): def __init__(self, v): - assert len(v) > 0 - c = v[-1] - if c == 'f': - self.v = float(v[:-1]) - elif c == 'i': - self.v = int(v[:-1]) + if isinstance(v, int): + self.v = v + elif isinstance(v, float): + self.v = v else: - self.v = float(v) + assert isinstance(v, str) + assert len(v) > 0 + c = v[-1] + if c == 'f': + self.v = float(v[:-1]) + elif c == 'i': + self.v = int(v[:-1]) + else: + self.v = float(v) def __repr__(self): return "Const(%s)" % self.v diff --git a/pypy/module/micronumpy/test/test_compile.py b/pypy/module/micronumpy/test/test_compile.py --- a/pypy/module/micronumpy/test/test_compile.py +++ b/pypy/module/micronumpy/test/test_compile.py @@ -1,6 +1,6 @@ import py from pypy.module.micronumpy.compile import (numpy_compile, Assignment, - ArrayConstant, FloatConstant, Operator, Variable, RangeConstant, Execute, + ArrayConstant, NumberConstant, Operator, Variable, RangeConstant, Execute, FunctionCall, FakeSpace, W_NDimArray) @@ -25,30 +25,30 @@ interp = self.compile(code) assert isinstance(interp.code.statements[0].expr, ArrayConstant) st = interp.code.statements[0] - assert st.expr.items == [FloatConstant(1), FloatConstant(2), - FloatConstant(3)] + assert st.expr.items == [NumberConstant(1), NumberConstant(2), + NumberConstant(3)] def test_array_literal2(self): code = "a = [[1],[2],[3]]" interp = self.compile(code) assert isinstance(interp.code.statements[0].expr, ArrayConstant) st = interp.code.statements[0] - assert st.expr.items == [ArrayConstant([FloatConstant(1)]), - ArrayConstant([FloatConstant(2)]), - ArrayConstant([FloatConstant(3)])] + assert st.expr.items == [ArrayConstant([NumberConstant(1)]), + ArrayConstant([NumberConstant(2)]), + ArrayConstant([NumberConstant(3)])] def test_expr_1(self): code = "b = a + 1" interp = self.compile(code) assert (interp.code.statements[0].expr == - Operator(Variable("a"), "+", FloatConstant(1))) + Operator(Variable("a"), "+", NumberConstant(1))) def test_expr_2(self): code = "b = a + b - 3" interp = self.compile(code) assert (interp.code.statements[0].expr == Operator(Operator(Variable("a"), "+", Variable("b")), "-", - FloatConstant(3))) + NumberConstant(3))) def test_expr_3(self): # an equivalent of range @@ -60,13 +60,13 @@ code = "3 + a" interp = self.compile(code) assert interp.code.statements[0] == Execute( - Operator(FloatConstant(3), "+", Variable("a"))) + Operator(NumberConstant(3), "+", Variable("a"))) def test_array_access(self): code = "a -> 3" interp = self.compile(code) assert interp.code.statements[0] == Execute( - Operator(Variable("a"), "->", FloatConstant(3))) + Operator(Variable("a"), "->", NumberConstant(3))) def test_function_call(self): code = "sum(a)" @@ -81,7 +81,7 @@ """ interp = self.compile(code) assert interp.code.statements[0] == Assignment( - 'a', Operator(Variable('b'), "+", FloatConstant(3))) + 'a', Operator(Variable('b'), "+", NumberConstant(3))) class TestRunner(object): diff --git a/rpython/jit/backend/llgraph/runner.py b/rpython/jit/backend/llgraph/runner.py --- a/rpython/jit/backend/llgraph/runner.py +++ b/rpython/jit/backend/llgraph/runner.py @@ -873,7 +873,7 @@ value = self.env[box] else: value = None - if box.getaccum(): + if box and box.getaccum(): if box.getaccum().operator == '+': value = sum(value) elif box.getaccum().operator == '*': diff --git a/rpython/jit/tool/test/test_jitoutput.py b/rpython/jit/tool/test/test_jitoutput.py --- a/rpython/jit/tool/test/test_jitoutput.py +++ b/rpython/jit/tool/test/test_jitoutput.py @@ -61,6 +61,8 @@ nvirtuals: 13 nvholes: 14 nvreused: 15 +vecopt tried: 12 +vecopt success: 4 Total # of loops: 100 Total # of bridges: 300 Freed # of loops: 99 @@ -88,3 +90,5 @@ assert info.nvirtuals == 13 assert info.nvholes == 14 assert info.nvreused == 15 + assert info.vecopt_tried == 12 + assert info.vecopt_success == 4 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit