[pypy-commit] pypy optresult-unroll: fix some tests
fijal
noreply at buildbot.pypy.org
Sun Aug 23 11:11:41 CEST 2015
Author: Maciej Fijalkowski <fijall at 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:
More information about the pypy-commit
mailing list