Author: Maciej Fijalkowski <[email protected]>
Branch:
Changeset: r70143:ca27e8ab9f84
Date: 2014-03-21 12:18 +0200
http://bitbucket.org/pypy/pypy/changeset/ca27e8ab9f84/
Log: add more debugging info for InvalidLoops
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py
b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -242,8 +242,9 @@
box = value.box
assert isinstance(box, Const)
if not box.same_constant(constbox):
- raise InvalidLoop('A GUARD_{VALUE,TRUE,FALSE} was proven to' +
- 'always fail')
+ r = self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_{VALUE,TRUE,FALSE} (%s) was proven '
+ 'to always fail' % r)
return
if emit_operation:
self.emit_operation(op)
@@ -255,7 +256,9 @@
if value.is_null():
return
elif value.is_nonnull():
- raise InvalidLoop('A GUARD_ISNULL was proven to always fail')
+ r = self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_ISNULL (%s) was proven to always fail'
+ % r)
self.emit_operation(op)
value.make_constant(self.optimizer.cpu.ts.CONST_NULL)
@@ -264,7 +267,9 @@
if value.is_nonnull():
return
elif value.is_null():
- raise InvalidLoop('A GUARD_NONNULL was proven to always fail')
+ r = self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_NONNULL (%s) was proven to always fail'
+ % r)
self.emit_operation(op)
value.make_nonnull(op)
@@ -292,7 +297,8 @@
assert previous_classbox is not None
assert expected_classbox is not None
if not previous_classbox.same_constant(expected_classbox):
- raise InvalidLoop('A GUARD_VALUE was proven to always
fail')
+ r =
self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_VALUE (%s) was proven to always
fail' % r)
op = old_guard_op.copy_and_change(rop.GUARD_VALUE,
args = [old_guard_op.getarg(0),
op.getarg(1)])
self.optimizer.replaces_guard[op] = old_guard_op
@@ -333,7 +339,9 @@
if realclassbox is not None:
if realclassbox.same_constant(expectedclassbox):
return
- raise InvalidLoop('A GUARD_CLASS was proven to always fail')
+ r = self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_CLASS (%s) was proven to always fail'
+ % r)
if value.last_guard:
# there already has been a guard_nonnull or guard_class or
# guard_nonnull_class on this value.
@@ -356,8 +364,9 @@
def optimize_GUARD_NONNULL_CLASS(self, op):
value = self.getvalue(op.getarg(0))
if value.is_null():
- raise InvalidLoop('A GUARD_NONNULL_CLASS was proven to always ' +
- 'fail')
+ r = self.optimizer.metainterp_sd.logger_ops.repr_of_resop(op)
+ raise InvalidLoop('A GUARD_NONNULL_CLASS (%s) was proven to '
+ 'always fail' % r)
self.optimize_GUARD_CLASS(op)
def optimize_CALL_LOOPINVARIANT(self, op):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit