Author: Maciej Fijalkowski <[email protected]>
Branch: share-guard-info
Changeset: r79767:91e6f52d365c
Date: 2015-09-22 14:10 +0200
http://bitbucket.org/pypy/pypy/changeset/91e6f52d365c/
Log: rookie mistake on using is on integers, also fix some tests and
reenable removing guards
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
@@ -567,15 +567,13 @@
self.metainterp_sd.profiler.count(jitprof.Counters.OPT_OPS)
if op.is_guard():
assert isinstance(op, GuardResOp)
- #if self.origin_jitcode is not None:
- # if (self.origin_jitcode is op.rd_frame_info_list.jitcode and
- # self.origin_pc is op.rd_frame_info_list.pc):
- # self.origin_jitcode = None
- # self.origin_pc = 0
- # else:
- # import pdb
- # pdb.set_trace()
- # return # we optimize the guard
+ if self.origin_jitcode is not None:
+ if (self.origin_jitcode is op.rd_frame_info_list.jitcode and
+ self.origin_pc == op.rd_frame_info_list.pc):
+ self.origin_jitcode = None
+ self.origin_pc = 0
+ else:
+ return # we optimize the guard
self.metainterp_sd.profiler.count(jitprof.Counters.OPT_GUARDS)
pendingfields = self.pendingfields
self.pendingfields = None
@@ -587,10 +585,12 @@
op = self.emit_guard_operation(op, pendingfields)
elif op.can_raise():
self.exception_might_have_happened = True
- if (op.has_no_side_effect() or op.is_guard() or op.is_jit_debug() and
+ if ((op.has_no_side_effect() or op.is_guard() or op.is_jit_debug() or
+ op.is_ovf()) and
not self.is_call_pure_pure_canraise(op)):
pass
else:
+ assert self.origin_jitcode is None
self._last_guard_op = None
self._really_emitted_operation = op
self._newoperations.append(op)
diff --git a/rpython/jit/metainterp/test/test_ajit.py
b/rpython/jit/metainterp/test/test_ajit.py
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -2082,7 +2082,7 @@
assert res == 7068153
self.check_trace_count(6)
self.check_resops(guard_true=8, guard_class=2, int_mul=3,
- int_add=3, guard_false=4)
+ int_add=3, guard_false=3)
def test_dont_trace_every_iteration(self):
myjitdriver = JitDriver(greens = [], reds = ['a', 'b', 'i', 'sa'])
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit