Author: Maciej Fijalkowski <[email protected]>
Branch:
Changeset: r79596:b4456aa540b3
Date: 2015-09-13 10:55 +0200
http://bitbucket.org/pypy/pypy/changeset/b4456aa540b3/
Log: a test and a fix for numpy crash
diff --git a/rpython/jit/metainterp/optimizeopt/info.py
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -782,5 +782,11 @@
def __init__(self, const):
self._const = const
+ def is_constant(self):
+ return True
+
+ def getconst(self):
+ return self._const
+
def make_guards(self, op, short, optimizer):
short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -8827,5 +8827,21 @@
"""
self.optimize_loop(ops, expected)
+ def test_virtual_with_floats(self):
+ ops = """
+ [p1, i1]
+ p0 = new_with_vtable(descr=nodesize)
+ i2 = int_add(i1, 1)
+ setfield_gc(p0, 0.0000, descr=floatdescr)
+ setfield_gc(p0, i2, descr=valuedescr)
+ jump(p0, i2)
+ """
+ expected = """
+ [i1]
+ i2 = int_add(i1, 1)
+ jump(i2)
+ """
+ self.optimize_loop(ops, expected)
+
class TestLLtype(OptimizeOptTest, LLtypeMixin):
pass
diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py
b/rpython/jit/metainterp/optimizeopt/virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py
@@ -378,6 +378,10 @@
if info.upper > MAXINT / 2:
info.upper = MAXINT
self.intbound = info
+ elif type == 'f':
+ if info and info.is_constant():
+ self.level = LEVEL_CONSTANT
+ self.constbox = info.getconst()
def is_const(self):
return self.constbox is not None
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit