Author: Carl Friedrich Bolz <[email protected]>
Branch: guard-compatible
Changeset: r85373:574dea94736c
Date: 2016-06-24 15:46 +0200
http://bitbucket.org/pypy/pypy/changeset/574dea94736c/

Log:    some explicit tests for virtual state with guard_compatible matching

diff --git a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py 
b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
@@ -471,7 +471,6 @@
     def test_guard_compatible(self):
         from rpython.jit.metainterp.compatible import CompatibilityCondition
         value1 = info.PtrInfo()
-        ptr = "fakeptr"
         value1._compatibility_conditions = CompatibilityCondition(
                 ConstPtr(self.myptr))
         box = InputArgRef()
@@ -483,14 +482,10 @@
         """
         self.compare(guards, expected, [box])
 
-    def test_guard_compatible_with_conditions(self):
+    def make_ccond(self):
         from rpython.jit.metainterp.compatible import CompatibilityCondition
         optimizer = FakeOptimizer(self.cpu)
-        value1 = info.PtrInfo()
-        ptr = "fakeptr"
-        ccond = value1._compatibility_conditions = CompatibilityCondition(
-                ConstPtr(self.quasiptr))
-
+        ccond = CompatibilityCondition(ConstPtr(self.quasiptr))
         # regular call
         op = ResOperation(
                 rop.CALL_PURE_I, [ConstInt(123), ConstPtr(self.quasiptr)],
@@ -513,6 +508,13 @@
                 op, optimizer)
         ccond.record_condition(cond, ConstInt(5), optimizer)
 
+        return ccond
+
+    def test_info_make_guards_guard_compatible_with_conditions(self):
+        value1 = info.PtrInfo()
+        ccond = self.make_ccond()
+        value1._compatibility_conditions = ccond
+
         box = InputArgRef()
         guards = []
         value1.make_guards(box, guards, FakeOptimizer(self.cpu))
@@ -529,6 +531,29 @@
         """
         self.compare(guards, expected, [box])
 
+    def test_virtualstate_guard_compatible(self):
+        value1 = info.PtrInfo()
+        ccond1 = self.make_ccond()
+        value1._compatibility_conditions = ccond1
+        value2 = info.PtrInfo()
+        ccond2 = self.make_ccond()
+        value2._compatibility_conditions = ccond2
+
+        state1 = not_virtual(self.cpu, 'r', value1)
+        state2 = not_virtual(self.cpu, 'r', value2)
+        self.check_no_guards(state1, state2)
+
+        cond = ccond1.conditions[:]
+        ccond1.conditions = [cond[0]]
+        self.check_no_guards(state1, state2)
+
+        ccond1.conditions = [cond[1]]
+        self.check_no_guards(state1, state2)
+
+        ccond1.conditions = []
+        self.check_no_guards(state1, state2)
+
+
     def test_equal_inputargs(self):
         classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr))
         value = info.InstancePtrInfo(None, classbox)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to