Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79149:1643091d8b44 Date: 2015-08-23 11:11 +0200 http://bitbucket.org/pypy/pypy/changeset/1643091d8b44/
Log: fix some tests diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py --- a/rpython/jit/metainterp/optimizeopt/optimizer.py +++ b/rpython/jit/metainterp/optimizeopt/optimizer.py @@ -140,8 +140,8 @@ return fw return None - def get_box_replacement(self, op): - return self.optimizer.get_box_replacement(op) + def get_box_replacement(self, op, not_const=False): + return self.optimizer.get_box_replacement(op, not_const=not_const) def getlastop(self): return self.optimizer._last_emitted_op @@ -318,10 +318,10 @@ if self.get_box_replacement(op).is_constant(): return info.FloatConstInfo(self.get_box_replacement(op)) - def get_box_replacement(self, op): + def get_box_replacement(self, op, not_const=False): if op is None: return op - return op.get_box_replacement() + return op.get_box_replacement(not_const) def force_box(self, op): op = self.get_box_replacement(op) @@ -551,6 +551,9 @@ else: guard_op = self.replace_op_with(op, op.getopnum()) op = self.store_final_boxes_in_guard(guard_op, pendingfields) + # for unrolling + for farg in op.getfailargs(): + self.force_box(farg) elif op.can_raise(): self.exception_might_have_happened = True self._really_emitted_operation = op 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 @@ -182,7 +182,7 @@ return virtual_state def filter_extra_jump_args(self, label_args, jump_args): - label_args = [self.get_box_replacement(x) for x in label_args] + label_args = [self.get_box_replacement(x, True) for x in label_args] jump_args = [self.get_box_replacement(x) for x in jump_args] new_label_args = [] new_jump_args = [] diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py --- a/rpython/jit/metainterp/resoperation.py +++ b/rpython/jit/metainterp/resoperation.py @@ -33,11 +33,12 @@ llop.debug_print(lltype.Void, "setting forwarded on:", self.__class__.__name__) raise SettingForwardedOnAbstractValue() - def get_box_replacement(op): + def get_box_replacement(op, not_const=False): orig_op = op c = 0 while (op.get_forwarded() is not None and - not op.get_forwarded().is_info_class): + not op.get_forwarded().is_info_class and + (not not_const or not op.get_forwarded().is_constant())): c += 1 op = op.get_forwarded() if op is not orig_op and c > 1: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit