Author: Maciej Fijalkowski <[email protected]>
Branch: resume-refactor
Changeset: r68996:b61b58c06f59
Date: 2014-01-29 18:43 +0100
http://bitbucket.org/pypy/pypy/changeset/b61b58c06f59/
Log: apparently it can be called in slightly different circumstances too
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -527,19 +527,23 @@
def jump_to_already_compiled_trace(self, jumpop):
assert jumpop.getopnum() == rop.JUMP
- leave_frame_op = self.optimizer._newoperations.pop()
- assert leave_frame_op.getopnum() == rop.LEAVE_FRAME
+ if self.optimizer._newoperations[-1].getopnum() == rop.LEAVE_FRAME:
+ leave_frame_op = self.optimizer._newoperations.pop()
+ else:
+ leave_frame_op = None
cell_token = jumpop.getdescr()
assert isinstance(cell_token, JitCellToken)
if not cell_token.target_tokens:
- self.optimizer._newoperations.append(leave_frame_op)
+ if leave_frame_op is not None:
+ self.optimizer._newoperations.append(leave_frame_op)
return False
if not self.inline_short_preamble:
assert cell_token.target_tokens[0].virtual_state is None
jumpop.setdescr(cell_token.target_tokens[0])
- self.optimizer._newoperations.append(leave_frame_op)
+ if leave_frame_op is not None:
+ self.optimizer._newoperations.append(leave_frame_op)
self.optimizer.send_extra_operation(jumpop)
return True
@@ -606,11 +610,14 @@
"jumping to preamble instead")
assert cell_token.target_tokens[0].virtual_state is None
jumpop.setdescr(cell_token.target_tokens[0])
- self.optimizer._newoperations.append(leave_frame_op)
+ if leave_frame_op is not None:
+ self.optimizer._newoperations.append(leave_frame_op)
self.optimizer.send_extra_operation(jumpop)
- self.optimizer._newoperations.append(leave_frame_op)
- newop = inliner.inline_op(target.short_preamble[-1])
- self.optimizer.send_extra_operation(newop)
+ else:
+ if leave_frame_op is not None:
+ self.optimizer._newoperations.append(leave_frame_op)
+ newop = inliner.inline_op(target.short_preamble[-1])
+ self.optimizer.send_extra_operation(newop)
return True
debug_stop('jit-log-virtualstate')
self.optimizer._newoperations.append(leave_frame_op)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit