Author: Hakan Ardo <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit