[pypy-commit] pypy compress-numbering: push push push
fijal
noreply at buildbot.pypy.org
Wed Nov 25 04:48:10 EST 2015
Author: fijal
Branch: compress-numbering
Changeset: r80931:184e3ab9ec43
Date: 2015-11-25 11:48 +0200
http://bitbucket.org/pypy/pypy/changeset/184e3ab9ec43/
Log: push push push
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -1115,22 +1115,17 @@
def rebuild_from_resumedata(metainterp, storage, deadframe,
virtualizable_info, greenfield_info):
- xxx
resumereader = ResumeDataBoxReader(storage, deadframe, metainterp)
boxes = resumereader.consume_vref_and_vable_boxes(virtualizable_info,
greenfield_info)
virtualizable_boxes, virtualref_boxes = boxes
- frameinfo = storage.rd_numb.prev
- while True:
- jitcode_pos, pc = unpack_uint(frameinfo.packed_jitcode_pc)
+ while not resumereader.done_reading():
+ jitcode_pos, pc = resumereader.read_jitcode_pos_pc()
jitcode = metainterp.staticdata.jitcodes[jitcode_pos]
f = metainterp.newframe(jitcode)
f.setup_resume_at_op(pc)
resumereader.consume_boxes(f.get_current_position_info(),
f.registers_i, f.registers_r, f.registers_f)
- frameinfo = frameinfo.prev
- if not frameinfo:
- break
metainterp.framestack.reverse()
return resumereader.liveboxes, virtualizable_boxes, virtualref_boxes
@@ -1162,27 +1157,28 @@
virtualizable = vinfo.unwrap_virtualizable_box(virtualizablebox)
return vinfo.load_list_of_boxes(virtualizable, self, numb)
- def consume_virtualref_boxes(self, numb, end):
+ def consume_virtualref_boxes(self, end):
# Returns a list of boxes, assumed to be all BoxPtrs.
# We leave up to the caller to call vrefinfo.continue_tracing().
assert (end & 1) == 0
return [self.decode_ref(numb.nums[i]) for i in range(end)]
def consume_vref_and_vable_boxes(self, vinfo, ginfo):
- xxxx
- numb = self.cur_numb
- self.cur_numb = numb.prev
+ first_snapshot_size = rffi.cast(lltype.Signed,
+ self.numb.first_snapshot_size)
if vinfo is not None:
- virtualizable_boxes = self.consume_virtualizable_boxes(vinfo, numb)
+ virtualizable_boxes = self.consume_virtualizable_boxes(vinfo)
+ xxxx
end = len(numb.nums) - len(virtualizable_boxes)
elif ginfo is not None:
+ xxx
index = len(numb.nums) - 1
virtualizable_boxes = [self.decode_ref(numb.nums[index])]
end = len(numb.nums) - 1
else:
virtualizable_boxes = None
- end = len(numb.nums)
- virtualref_boxes = self.consume_virtualref_boxes(numb, end)
+ end = first_snapshot_size
+ virtualref_boxes = self.consume_virtualref_boxes(end)
return virtualizable_boxes, virtualref_boxes
def allocate_with_vtable(self, descr=None):
@@ -1403,7 +1399,7 @@
prevbh = None
firstbh = None
curbh = None
- while True:
+ while not resumereader.done_reading():
curbh = blackholeinterpbuilder.acquire_interp()
if prevbh is not None:
prevbh.nextblackholeinterp = curbh
@@ -1414,8 +1410,6 @@
jitcode = jitcodes[jitcode_pos]
curbh.setposition(jitcode, pc)
resumereader.consume_one_section(curbh)
- if resumereader.done_reading():
- break
curbh.nextblackholeinterp = None
return firstbh
@@ -1467,8 +1461,12 @@
return
assert (end & 1) == 0
for i in range(0, end, 2):
- virtual = self.decode_ref(numb.nums[i])
- vref = self.decode_ref(numb.nums[i + 1])
+ virtual_item, self.cur_index = resumecode.numb_next_item(
+ self.numb, self.cur_index)
+ vref_item, self.cur_index = resumecode.numb_next_item(
+ self.numb, self.cur_index)
+ virtual = self.decode_ref(virtual_item)
+ vref = self.decode_ref(vref_item)
# For each pair, we store the virtual inside the vref.
vrefinfo.continue_tracing(vref, virtual)
More information about the pypy-commit
mailing list