[pypy-svn] r63927 - pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp
fijal at codespeak.net
fijal at codespeak.net
Fri Apr 10 08:00:53 CEST 2009
Author: fijal
Date: Fri Apr 10 08:00:52 2009
New Revision: 63927
Modified:
pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
Log:
a temporary check if this is a bug I'm after...
Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py Fri Apr 10 08:00:52 2009
@@ -811,6 +811,8 @@
# ____________________________________________________________
class MetaInterp(object):
+ original_boxes = None
+
def __init__(self, staticdata):
self.staticdata = staticdata
self.cpu = staticdata.cpu
@@ -1139,12 +1141,40 @@
self._initialize_from_start(original_boxes, num_green_args-1,
*args[1:])
+ def _initialize_values_from_start(self, original_boxes, num_green_args, i,
+ *args):
+ if args:
+ if num_green_args <= 0:
+ box = original_boxes[i]
+ if isinstance(lltype.typeOf(value), lltype.Ptr):
+ if lltype.typeOf(value).TO._gckind == 'gc':
+ value = lltype.cast_opaque_ptr(llmemory.GCREF, value)
+ assert isinstance(box, BoxPtr)
+ box.value = value
+ else:
+ adr = llmemory.cast_ptr_to_adr(value)
+ value = self.cpu.cast_adr_to_int(adr)
+ assert isinstance(box, BoxInt)
+ box.value = value
+ else:
+ value = intmask(value)
+ assert isinstance(box, BoxInt)
+ box.value = value
+ self._initialize_values_from_start(original_boxes, num_green_args-1,
+ i + 1, *args[1:])
+
def initialize_state_from_start(self, *args):
self.staticdata._recompute_class_sizes()
self.create_empty_history()
num_green_args = self.staticdata.num_green_args
- original_boxes = []
- self._initialize_from_start(original_boxes, num_green_args, *args)
+ if self.original_boxes is None:
+ original_boxes = []
+ self._initialize_from_start(original_boxes, num_green_args, *args)
+ self.original_boxes = original_boxes
+ else:
+ original_boxes = self.original_boxes
+ self._initialize_values_from_start(original_boxes, num_green_args,
+ 0, *args)
# ----- make a new frame -----
self.framestack = []
f = self.newframe(self.staticdata.portal_code)
More information about the Pypy-commit
mailing list