[pypy-svn] r38093 - pypy/branch/jit-virtual-world/pypy/jit/timeshifter
pedronis at codespeak.net
pedronis at codespeak.net
Wed Feb 7 19:27:31 CET 2007
Author: pedronis
Date: Wed Feb 7 19:27:28 2007
New Revision: 38093
Modified:
pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rcontainer.py
pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rtimeshift.py
Log:
make the virtualizables code use the place interface as intended, absorb is value copy operation.
Modified: pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rcontainer.py
==============================================================================
--- pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rcontainer.py (original)
+++ pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rcontainer.py Wed Feb 7 19:27:28 2007
@@ -605,8 +605,9 @@
builder = jitstate.curbuilder
place = builder.alloc_frame_place(typedesc.ptrkind)
- gv_forced = builder.genop_absorb_place(typedesc.ptrkind, place)
vrti.forced_place = place
+ forced_box = rvalue.PtrRedBox(typedesc.ptrkind)
+ memo.forced_boxes.append((forced_box, place))
vars_gv = memo.framevars_gv
varindexes = vrti.varindexes
@@ -625,9 +626,8 @@
vrtis.append(content.make_rti(jitstate, memo))
j -= 1
- self.content_boxes.append(rvalue.PtrRedBox(typedesc.ptrkind,
- gv_forced))
-
+
+ self.content_boxes.append(forced_box)
return vrti
def reshape(self, jitstate, shapemask, memo):
Modified: pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rtimeshift.py
==============================================================================
--- pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rtimeshift.py (original)
+++ pypy/branch/jit-virtual-world/pypy/jit/timeshifter/rtimeshift.py Wed Feb 7 19:27:28 2007
@@ -933,6 +933,7 @@
next
virtualizables
shape_place
+ forced_boxes
generated_oop_residual_can_raise
""".split()
@@ -1009,9 +1010,12 @@
memo.bitcount = 1
memo.frameindex = 0
memo.framevars_gv = []
+ memo.forced_boxes = forced_boxes = []
+
shape_kind = builder.rgenop.kindToken(lltype.Signed)
gv_zero = builder.rgenop.genconst(0)
self.shape_place = builder.alloc_frame_place(shape_kind, gv_zero)
+ self.forced_boxes = forced_boxes
vable_rtis = []
for virtualizable_box in virtualizables:
@@ -1041,9 +1045,16 @@
assert isinstance(content, rcontainer.VirtualizableStruct)
content.check_forced_after_residual_call(self)
shape_kind = builder.rgenop.kindToken(lltype.Signed)
+
+ for forced_box, forced_place in self.forced_boxes:
+ gv_forced = builder.genop_absorb_place(forced_box.kind, forced_place)
+ forced_box.setgenvar(gv_forced)
+ self.forced_boxes = None
+
gv_shape = builder.genop_absorb_place(shape_kind,
self.shape_place)
self.shape_place = None
+
return gv_shape
else:
return None
More information about the Pypy-commit
mailing list