[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