Author: Maciej Fijalkowski <fij...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit