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

Reply via email to