Author: Hakan Ardo <ha...@debian.org> Branch: jit-short_from_state Changeset: r44634:ea48162c9645 Date: 2011-06-02 10:16 +0200 http://bitbucket.org/pypy/pypy/changeset/ea48162c9645/
Log: Use same_constant to compare constant boxes. The test is useless as Const.__eq__ makes it pass without the fix. diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py --- a/pypy/jit/metainterp/optimizeopt/virtualstate.py +++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py @@ -227,7 +227,7 @@ bad[other] = True return False elif self.level == LEVEL_KNOWNCLASS: - if self.known_class != other.known_class: # FIXME: use issubclass? + if not self.known_class.same_constant(other.known_class): bad[self] = True bad[other] = True return False diff --git a/pypy/jit/metainterp/test/test_virtualstate.py b/pypy/jit/metainterp/test/test_virtualstate.py --- a/pypy/jit/metainterp/test/test_virtualstate.py +++ b/pypy/jit/metainterp/test/test_virtualstate.py @@ -95,6 +95,28 @@ fldtst(VStructStateInfo(42, [7]), VStructStateInfo(42, [7])) fldtst(VirtualStateInfo(ConstInt(42), [7]), VirtualStateInfo(ConstInt(42), [7])) + def test_known_class_generalization(self): + knownclass1 = OptValue(BoxPtr()) + knownclass1.make_constant_class(ConstPtr(self.someptr1), 0) + info1 = NotVirtualStateInfo(knownclass1) + info1.position = 0 + knownclass2 = OptValue(BoxPtr()) + knownclass2.make_constant_class(ConstPtr(self.someptr1), 0) + info2 = NotVirtualStateInfo(knownclass2) + info2.position = 0 + assert info1.generalization_of(info2, {}, {}) + assert info2.generalization_of(info1, {}, {}) + + knownclass3 = OptValue(BoxPtr()) + knownclass3.make_constant_class(ConstPtr(self.someptr2), 0) + info3 = NotVirtualStateInfo(knownclass3) + info3.position = 0 + assert not info1.generalization_of(info3, {}, {}) + assert not info2.generalization_of(info3, {}, {}) + assert not info3.generalization_of(info2, {}, {}) + assert not info3.generalization_of(info1, {}, {}) + + def test_circular_generalization(self): for info in (VArrayStateInfo(42), VStructStateInfo(42, [7]), VirtualStateInfo(ConstInt(42), [7])): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit