Author: Maciej Fijalkowski <fij...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit