[pypy-svn] r68097 - in pypy/trunk/pypy/jit/metainterp: . test

pedronis at codespeak.net pedronis at codespeak.net
Thu Oct 1 14:36:28 CEST 2009


Author: pedronis
Date: Thu Oct  1 14:36:28 2009
New Revision: 68097

Modified:
   pypy/trunk/pypy/jit/metainterp/resume.py
   pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py
   pypy/trunk/pypy/jit/metainterp/test/test_resume.py
Log:
(cfbolz, pedronis) small steps, liveboxes_order is not needed if we don't mind getting reshuffling, adjust test to care less but still test enough



Modified: pypy/trunk/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/resume.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/resume.py	Thu Oct  1 14:36:28 2009
@@ -110,81 +110,6 @@
     storage.rd_virtuals = None
     return liveboxes
  
-
-## class ResumeDataBuilder(object):
-
-##     def __init__(self, _other=None):
-##         if _other is None:
-##             self.memo = {}
-##             self.liveboxes = []
-##             self.consts = []
-##             self.nums = []
-##             self.frame_infos = []
-##         else:
-##             self.memo = _other.memo.copy()
-##             self.liveboxes = _other.liveboxes[:]
-##             self.consts = _other.consts[:]
-##             self.nums = _other.nums[:]
-##             self.frame_infos = _other.frame_infos[:]
-
-##     def clone(self):
-##         return ResumeDataBuilder(self)
-        
-##     def generate_boxes(self, boxes):
-##         for box in boxes:
-##             assert box is not None
-##             if isinstance(box, Box):
-##                 try:
-##                     num = self.memo[box]
-##                 except KeyError:
-##                     num = len(self.liveboxes)
-##                     self.liveboxes.append(box)
-##                     self.memo[box] = num
-##             else:
-##                 num = -2 - len(self.consts)
-##                 self.consts.append(box)
-##             self.nums.append(num)
-##         self.nums.append(-1)
-
-##     def generate_frame_info(self, *frame_info):
-##         self.frame_infos.append(frame_info)
-
-##     def _add_level(self, frame):
-##         self.generate_frame_info(frame.jitcode, frame.pc,
-##                                     frame.exception_target)
-##         self.generate_boxes(frame.env)        
-
-##     @staticmethod
-##     def _get_fresh_parent_resumedata(framestack, n):
-##         target = framestack[n]
-##         if target.parent_resumedata is not None:
-##             return target.parent_resumedata.clone()
-##         if n == 0:
-##             parent_resumedata = ResumeDataBuilder()
-##         else:
-##             parent_resumedata = ResumeDataBuilder._get_fresh_parent_resumedata(framestack, n-1)
-##             parent_resumedata._add_level(framestack[n-1])
-##         target.parent_resumedata = parent_resumedata
-##         return parent_resumedata.clone()
-
-##     @staticmethod
-##     def make(framestack):
-##         n = len(framestack)-1
-##         top = framestack[-1]
-##         builder = ResumeDataBuilder._get_fresh_parent_resumedata(framestack, n)
-##         builder._add_level(top)
-##         return builder
-         
-##     def finish(self, storage):
-##         storage.rd_frame_infos = self.frame_infos[:]
-##         storage.rd_nums = self.nums[:]
-##         storage.rd_consts = self.consts[:]
-##         storage.rd_virtuals = None
-##         if debug:
-##             dump_storage(storage)
-##         return self.liveboxes
-
-
 VIRTUAL_FLAG = int((sys.maxint+1) // 2)
 assert not (VIRTUAL_FLAG & (VIRTUAL_FLAG-1))    # a power of two
 
@@ -196,7 +121,6 @@
         assert storage.rd_virtuals is None
         self.original_liveboxes = liveboxes
         self.liveboxes = {}
-        self.liveboxes_order = []
         self._register_boxes(liveboxes)
         self.virtuals = []
         self.vfieldboxes = []
@@ -229,7 +153,6 @@
         for box in boxes:
             if isinstance(box, Box) and box not in self.liveboxes:
                 self.liveboxes[box] = 0
-                self.liveboxes_order.append(box)
 
     def is_virtual(self, virtualbox):
         return self.liveboxes[virtualbox] >= VIRTUAL_FLAG
@@ -237,7 +160,7 @@
     def finish(self):
         storage = self.storage
         liveboxes = []
-        for box in self.liveboxes_order:
+        for box in self.liveboxes.iterkeys():
             if self.liveboxes[box] == 0:
                 self.liveboxes[box] = len(liveboxes)
                 liveboxes.append(box)

Modified: pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_optimizeopt.py	Thu Oct  1 14:36:28 2009
@@ -40,8 +40,11 @@
     fdescr.rd_snapshot = resume.Snapshot(snapshot0, [b1])
     #
     opt.store_final_boxes_in_guard(op)
-    assert op.fail_args == [b0, b1]
-    assert fdescr.rd_nums == [0, -1, 1, -1]
+    if op.fail_args == [b0, b1]:
+        assert fdescr.rd_nums == [0, -1, 1, -1]
+    else:
+        assert op.fail_args == [b1, b0]
+        assert fdescr.rd_nums == [1, -1, 0, -1]
     assert fdescr.rd_virtuals is None
     assert fdescr.rd_consts == []
     assert fdescr.rd_frame_infos == fi

Modified: pypy/trunk/pypy/jit/metainterp/test/test_resume.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_resume.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_resume.py	Thu Oct  1 14:36:28 2009
@@ -213,6 +213,13 @@
 demo55 = lltype.malloc(LLtypeMixin.NODE)
 demo55o = lltype.cast_opaque_ptr(llmemory.GCREF, demo55)
 
+def _resume_remap(liveboxes, expected, *newvalues):
+    newboxes = []
+    for box in liveboxes:
+        i = expected.index(box)
+        newboxes.append(newvalues[i])
+    assert len(newboxes) == len(expected)
+    return newboxes
 
 def test_virtual_adder_no_op():
     storage = make_demo_storage()
@@ -223,11 +230,10 @@
     assert not modifier.is_virtual(b3s)
     # done
     liveboxes = modifier.finish()
-    assert liveboxes == [b1s, b2s, b3s]
-    #
     b1t, b2t, b3t = [BoxInt(11), BoxPtr(demo55o), BoxInt(33)]
+    newboxes = _resume_remap(liveboxes, [b1s, b2s, b3s], b1t, b2t, b3t)
     metainterp = MyMetaInterp(LLtypeMixin.cpu)
-    reader = ResumeDataReader(storage, [b1t, b2t, b3t], metainterp)
+    reader = ResumeDataReader(storage, newboxes, metainterp)
     lst = reader.consume_boxes()
     assert lst == [b1t, ConstInt(1), b1t, b2t]
     lst = reader.consume_boxes()
@@ -264,17 +270,17 @@
     assert not modifier.is_virtual(b5s)
     # done
     liveboxes = modifier.finish()
-    assert liveboxes == [b1s,
-                         #b2s -- virtual
-                         b3s,
-                         #b4s -- virtual
-                         #b2s -- again, shared
-                         #b3s -- again, shared
-                         b5s]
-    #
     b1t, b3t, b5t = [BoxInt(11), BoxInt(33), BoxPtr(demo55o)]
+    newboxes = _resume_remap(liveboxes, [b1s,
+                                          #b2s -- virtual
+                                          b3s,
+                                          #b4s -- virtual
+                                          #b2s -- again, shared
+                                          #b3s -- again, shared
+                                          b5s], b1t, b3t, b5t)
+    #
     metainterp = MyMetaInterp(LLtypeMixin.cpu)
-    reader = ResumeDataReader(storage, [b1t, b3t, b5t], metainterp)
+    reader = ResumeDataReader(storage, newboxes, metainterp)
     lst = reader.consume_boxes()
     b2t = lst[-1]
     assert lst == [b1t, ConstInt(1), b1t, b2t]
@@ -325,11 +331,10 @@
         assert not modifier.is_virtual(b3s)
         # done
         liveboxes = modifier.finish()
-        assert liveboxes == [b2s, b3s]
-        #
         b2t, b3t = [BoxPtr(demo55o), BoxInt(33)]
+        newboxes = _resume_remap(liveboxes, [b2s, b3s], b2t, b3t)
         metainterp = MyMetaInterp(LLtypeMixin.cpu)
-        reader = ResumeDataReader(storage, [b2t, b3t], metainterp)
+        reader = ResumeDataReader(storage, newboxes, metainterp)
         lst = reader.consume_boxes()
         c1t = ConstInt(111)
         assert lst == [c1t, ConstInt(1), c1t, b2t]
@@ -357,14 +362,15 @@
     assert not modifier.is_virtual(b4s)
     # done
     liveboxes = modifier.finish()
-    assert liveboxes == [b1s,
-                         #b2s -- virtual
-                         b3s,
-                         b4s]
-    #
     b1t, b3t, b4t = [BoxInt(11), BoxInt(33), BoxInt(44)]
+    newboxes = _resume_remap(liveboxes, [b1s,
+                                          #b2s -- virtual
+                                          b3s,
+                                          b4s],
+                                          b1t, b3t, b4t)
+    #
     metainterp = MyMetaInterp(LLtypeMixin.cpu)
-    reader = ResumeDataReader(storage, [b1t, b3t, b4t], metainterp)
+    reader = ResumeDataReader(storage, newboxes, metainterp)
     lst = reader.consume_boxes()
     b2t = lst[-1]
     assert lst == [b1t, ConstInt(1), b1t, b2t]
@@ -406,15 +412,16 @@
     assert not modifier.is_virtual(b4s)
     # done
     liveboxes = modifier.finish()
-    assert liveboxes == [b1s,
-                         #b2s -- virtual
-                         b3s,
-                         b4s]
+    b1t, b3t, b4t = [BoxInt(11), BoxInt(33), BoxPtr()]
+    newboxes = _resume_remap(liveboxes, [b1s,
+                                          #b2s -- virtual
+                                          b3s,
+                                          b4s],
+                                         b1t, b3t, b4t)
     #
     NULL = ConstPtr.value
-    b1t, b3t, b4t = [BoxInt(11), BoxInt(33), BoxPtr()]
     metainterp = MyMetaInterp(LLtypeMixin.cpu)
-    reader = ResumeDataReader(storage, [b1t, b3t, b4t], metainterp)
+    reader = ResumeDataReader(storage, newboxes, metainterp)
     lst = reader.consume_boxes()
     b2t = lst[-1]
     assert lst == [b1t, ConstInt(1), b1t, b2t]



More information about the Pypy-commit mailing list