[pypy-commit] pypy optresult-unroll: port some more tests

fijal noreply at buildbot.pypy.org
Fri Aug 21 13:49:37 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79103:57470787557f
Date: 2015-08-21 13:49 +0200
http://bitbucket.org/pypy/pypy/changeset/57470787557f/

Log:	port some more tests

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
@@ -374,11 +374,11 @@
 
 
     def test_intbounds(self):
-        value1 = IntBound()
+        value1 = IntUnbounded()
         value1.make_ge(IntBound(0, 10))
         value1.make_le(IntBound(20, 30))
         info1 = NotVirtualStateInfo(self.cpu, 'i', value1)
-        info2 = NotVirtualStateInfo(self.cpu, 'i', IntBound())
+        info2 = NotVirtualStateInfo(self.cpu, 'i', IntUnbounded())
         expected = """
         [i0]
         i1 = int_ge(i0, 0)
@@ -386,39 +386,38 @@
         i2 = int_le(i0, 30)
         guard_true(i2) []
         """
-        self.guards(info1, info2, value1, expected)
-        self.check_invalid(info1, info2, BoxInt(50))
+        self.guards(info1, info2, InputArgInt(), value1, expected)
+        self.check_invalid(info1, info2, InputArgInt(50))
 
     def test_intbounds_constant(self):
-        value1 = IntOptValue(BoxInt(15))
-        value1.intbound.make_ge(IntBound(0, 10))
-        value1.intbound.make_le(IntBound(20, 30))
-        info1 = NotVirtualStateInfo(value1)
-        info2 = NotVirtualStateInfo(IntOptValue(ConstInt(10000)))
+        value1 = IntUnbounded()
+        value1.make_ge(IntBound(0, 10))
+        value1.make_le(IntBound(20, 30))
+        info1 = NotVirtualStateInfo(self.cpu, 'i', value1)
+        info2 = NotVirtualStateInfo(self.cpu, 'i', ConstIntBound(10000))
         self.check_invalid(info1, info2)
-        info1 = NotVirtualStateInfo(value1)
-        info2 = NotVirtualStateInfo(IntOptValue(ConstInt(11)))
+        info1 = NotVirtualStateInfo(self.cpu, 'i', value1)
+        info2 = NotVirtualStateInfo(self.cpu, 'i', ConstIntBound(11))
         self.check_no_guards(info1, info2)
 
     def test_known_class(self):
-        value1 = PtrOptValue(self.nodebox)
-        classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value1.make_constant_class(None, classbox)
-        info1 = NotVirtualStateInfo(value1)
-        info2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
+        classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr))
+        value1 = info.InstancePtrInfo(classbox)
+        info1 = NotVirtualStateInfo(self.cpu, 'r', value1)
+        info2 = NotVirtualStateInfo(self.cpu, 'r', None)
         expected = """
         [p0]
         guard_nonnull_class(p0, ConstClass(node_vtable)) []        
         """
-        self.guards(info1, info2, self.nodebox, expected)
-        self.check_invalid(info1, info2, BoxPtr())
+        self.guards(info1, info2, InputArgRef(self.nodeaddr), None, expected)
+        self.check_invalid(info1, info2, InputArgRef())
 
     def test_known_class_value(self):
-        value1 = PtrOptValue(self.nodebox)
-        classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value1.make_constant_class(None, classbox)
-        box = self.nodebox
-        guards = value1.make_guards(box)
+        classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr))
+        value1 = info.InstancePtrInfo(classbox)
+        box = InputArgRef()
+        guards = []
+        value1.make_guards(box, guards)
         expected = """
         [p0]
         guard_nonnull_class(p0, ConstClass(node_vtable)) []
@@ -426,10 +425,10 @@
         self.compare(guards, expected, [box])
 
     def test_known_value(self):
-        value1 = PtrOptValue(self.nodebox)
-        value1.make_constant(ConstInt(1))
-        box = self.nodebox
-        guards = value1.make_guards(box)
+        value1 = ConstIntBound(1)
+        box = InputArgInt()
+        guards = []
+        value1.make_guards(box, guards)
         expected = """
         [i0]
         guard_value(i0, 1) []
@@ -437,21 +436,20 @@
         self.compare(guards, expected, [box])
 
     def test_equal_inputargs(self):
-        value = PtrOptValue(self.nodebox)
-        classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(None, classbox)
-        knownclass_info = NotVirtualStateInfo(value)
+        classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr))
+        value = info.InstancePtrInfo(classbox)
+        knownclass_info = NotVirtualStateInfo(self.cpu, 'r', value)
         vstate1 = VirtualState([knownclass_info, knownclass_info])
         assert vstate1.generalization_of(vstate1)
 
-        unknown_info1 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
+        unknown_info1 = NotVirtualStateInfo(self.cpu, 'r', None)
         vstate2 = VirtualState([unknown_info1, unknown_info1])
         assert vstate2.generalization_of(vstate2)
         assert not vstate1.generalization_of(vstate2)
         assert vstate2.generalization_of(vstate1)
 
-        unknown_info1 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
-        unknown_info2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
+        unknown_info1 = NotVirtualStateInfo(self.cpu, 'r', None)
+        unknown_info2 = NotVirtualStateInfo(self.cpu, 'r', None)
         vstate3 = VirtualState([unknown_info1, unknown_info2])
         assert vstate3.generalization_of(vstate2)
         assert vstate3.generalization_of(vstate1)
@@ -462,24 +460,25 @@
         [p0]
         guard_nonnull_class(p0, ConstClass(node_vtable)) []
         """
-        state = vstate1.generate_guards(vstate2, [value, value], self.cpu)
-        self.compare(state.extra_guards, expected, [self.nodebox])
+        box = InputArgRef(self.nodeaddr)
+        state = vstate1.generate_guards(vstate2, [box, box], [None, None],
+                                        self.cpu)
+        self.compare(state.extra_guards, expected, [box])
 
         with py.test.raises(VirtualStatesCantMatch):
-            vstate1.generate_guards(vstate3, [value, value],
+            vstate1.generate_guards(vstate3, [box, box], [None, None],
                                     self.cpu)
         with py.test.raises(VirtualStatesCantMatch):
-            vstate2.generate_guards(vstate3, [value, value],
+            vstate2.generate_guards(vstate3, [box, box], [None, None],
                                     self.cpu)
 
 
     def test_generate_guards_on_virtual_fields_matches_array(self):
-        innervalue1 = PtrOptValue(self.nodebox)
-        constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(None, constclassbox)
-        innerinfo1 = NotVirtualStateInfo(innervalue1)
+        classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr))
+        innervalue1 = info.InstancePtrInfo(classbox)
+        innerinfo1 = NotVirtualStateInfo(self.cpu, 'r', innervalue1)
         innerinfo1.position = 1
-        innerinfo2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
+        innerinfo2 = NotVirtualStateInfo(self.cpu, 'r', None)
         innerinfo2.position = 1
 
         descr = object()
@@ -490,14 +489,15 @@
         info2 = VArrayStateInfo(descr)
         info2.fieldstate = [innerinfo2]
 
-        value1 = VArrayValue(descr, None, 1, self.nodebox)
-        value1._items[0] = PtrOptValue(self.nodebox)
+        value1 = info.ArrayPtrInfo(vdescr=descr, size=1)
+        box = InputArgRef(self.nodeaddr)
+        value1._items[0] = box
 
         expected = """
         [p0]
         guard_nonnull_class(p0, ConstClass(node_vtable)) []
         """
-        self.guards(info1, info2, value1, expected, [self.nodebox])
+        self.guards(info1, info2, InputArgRef(), value1, expected, [box])
 
     def test_generate_guards_on_virtual_fields_matches_instance(self):
         innervalue1 = PtrOptValue(self.nodebox)
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
@@ -21,6 +21,11 @@
         self.msg = msg
         self.state = state
 
+def get_forwarded(box):
+    if not isinstance(box, Const):
+        return box.get_forwarded()
+    xxx
+
 class GenerateGuardState(object):
     def __init__(self, cpu=None, guards=None, renum=None, bad=None):
         self.cpu = cpu
@@ -206,8 +211,7 @@
             if box is not None:
                 assert isinstance(opinfo, info.ArrayPtrInfo)
                 fieldbox = opinfo._items[i]
-                xxx
-                fieldinfo = fieldbox.get_forwarded()
+                fieldinfo = get_forwarded(fieldbox)
             self.fieldstate[i].generate_guards(other.fieldstate[i],
                                             fieldbox, fieldinfo, state)
 
@@ -309,6 +313,8 @@
             self.constbox = info.getconst()
             if type == 'r':
                 self.known_class = info.get_known_class(cpu)
+            elif type == 'i':
+                self.intbound = info
         elif type == 'r':
             if info:
                 self.known_class = info.get_known_class(cpu)


More information about the pypy-commit mailing list