Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79400:66aaa50b4f63
Date: 2015-09-03 20:14 +0200
http://bitbucket.org/pypy/pypy/changeset/66aaa50b4f63/
Log: some passing tests and one failing, so we don't forget
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -963,6 +963,9 @@
resumedescr = ResumeGuardOverflowDescr()
elif opnum == rop.GUARD_NO_OVERFLOW:
resumedescr = ResumeGuardNoOverflowDescr()
+ elif opnum in (rop.GUARD_IS_OBJECT, rop.GUARD_SUBCLASS, rop.GUARD_GC_TYPE):
+ # note - this only happens in tests
+ resumedescr = ResumeAtPositionDescr()
else:
assert False
return resumedescr
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -5833,5 +5833,47 @@
"""
self.optimize_loop(ops, expected)
+ def test_remove_guard_is_object_2(self):
+ ops = """
+ [p0]
+ i1 = getfield_gc_i(p0, descr=valuedescr)
+ guard_is_object(p0) []
+ finish(i1)
+ """
+ expected = """
+ [p0]
+ i1 = getfield_gc_i(p0, descr=valuedescr)
+ finish(i1)
+ """
+ self.optimize_loop(ops, expected)
+
+ def test_remove_guard_subclass_1(self):
+ ops = """
+ [p0]
+ i1 = getfield_gc_i(p0, descr=valuedescr)
+ guard_subclass(p0, ConstClass(node_vtable)) []
+ finish(i1)
+ """
+ expected = """
+ [p0]
+ i1 = getfield_gc_i(p0, descr=valuedescr)
+ finish(i1)
+ """
+ self.optimize_loop(ops, expected)
+
+ def test_remove_guard_subclass_2(self):
+ ops = """
+ [p0]
+ p1 = getfield_gc_i(p0, descr=otherdescr)
+ guard_subclass(p0, ConstClass(node_vtable)) []
+ finish(p1)
+ """
+ expected = """
+ [p0]
+ p1 = getfield_gc_i(p0, descr=otherdescr)
+ finish(p1)
+ """
+ self.optimize_loop(ops, expected)
+
class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin):
pass
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit