[pypy-svn] r69465 - in pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Fri Nov 20 14:41:54 CET 2009
Author: cfbolz
Date: Fri Nov 20 14:41:53 2009
New Revision: 69465
Modified:
pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/resume.py
pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py
Log:
(pedronis, cfbolz): fix the reader to deal with holes in the virtuals list
Modified: pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/resume.py (original)
+++ pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/resume.py Fri Nov 20 14:41:53 2009
@@ -450,11 +450,15 @@
def _prepare_virtuals(self, metainterp, virtuals):
if virtuals:
- # xxx vinfo can be none, test and fix!
- self.virtuals = [vinfo.allocate(metainterp) for vinfo in virtuals]
+ self.virtuals = [None] * len(virtuals)
for i in range(len(virtuals)):
vinfo = virtuals[i]
- vinfo.setfields(metainterp, self.virtuals[i], self._decode_box)
+ if vinfo is not None:
+ self.virtuals[i] = vinfo.allocate(metainterp)
+ for i in range(len(virtuals)):
+ vinfo = virtuals[i]
+ if vinfo is not None:
+ vinfo.setfields(metainterp, self.virtuals[i], self._decode_box)
def consume_boxes(self):
numb = self.cur_numb
Modified: pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py
==============================================================================
--- pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py (original)
+++ pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py Fri Nov 20 14:41:53 2009
@@ -112,6 +112,22 @@
lst = reader.consume_boxes()
assert lst == [b1s, b2s, b3s]
+
+def test_prepare_virtuals():
+ class FakeVinfo(object):
+ def allocate(self, metainterp):
+ return "allocated"
+ def setfields(self, metainterp, virtual, func):
+ assert virtual == "allocated"
+ class FakeStorage(object):
+ rd_virtuals = [FakeVinfo(), None]
+ rd_numb = []
+ rd_consts = []
+ class FakeMetainterp(object):
+ cpu = None
+ reader = ResumeDataReader(FakeStorage(), [], FakeMetainterp())
+ assert reader.virtuals == ["allocated", None]
+
# ____________________________________________________________
More information about the Pypy-commit
mailing list