Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r46208:dbcc66ffc751 Date: 2011-08-02 15:33 +0200 http://bitbucket.org/pypy/pypy/changeset/dbcc66ffc751/
Log: Minor simplification. diff --git a/pypy/jit/backend/model.py b/pypy/jit/backend/model.py --- a/pypy/jit/backend/model.py +++ b/pypy/jit/backend/model.py @@ -14,7 +14,7 @@ done_with_this_frame_int_v = -1 done_with_this_frame_ref_v = -1 done_with_this_frame_float_v = -1 - exit_frame_with_exception_v = -1 + propagate_exception_v = -1 total_compiled_loops = 0 total_compiled_bridges = 0 total_freed_loops = 0 diff --git a/pypy/jit/backend/x86/assembler.py b/pypy/jit/backend/x86/assembler.py --- a/pypy/jit/backend/x86/assembler.py +++ b/pypy/jit/backend/x86/assembler.py @@ -245,7 +245,7 @@ def _build_stack_check_slowpath(self): _, _, slowpathaddr = self.cpu.insert_stack_check() - if slowpathaddr == 0 or self.cpu.exit_frame_with_exception_v < 0: + if slowpathaddr == 0 or self.cpu.propagate_exception_v < 0: return # no stack check (for tests, or non-translated) # # make a "function" that is called immediately at the start of @@ -301,19 +301,11 @@ offset = mc.get_relative_pos() - jnz_location assert 0 < offset <= 127 mc.overwrite(jnz_location-1, chr(offset)) - # clear the exception from the global position - mc.MOV(eax, heap(self.cpu.pos_exc_value())) - mc.MOV(heap(self.cpu.pos_exception()), imm0) - mc.MOV(heap(self.cpu.pos_exc_value()), imm0) - # save the current exception instance into fail_boxes_ptr[0] - adr = self.fail_boxes_ptr.get_addr_for_num(0) - mc.MOV(heap(adr), eax) - # call the helper function to set the GC flag on the fail_boxes_ptr - # array (note that there is no exception any more here) - addr = self.cpu.get_on_leave_jitted_int(save_exception=False) + # call on_leave_jitted_save_exc() + addr = self.cpu.get_on_leave_jitted_int(save_exception=True) mc.CALL(imm(addr)) # - mc.MOV_ri(eax.value, self.cpu.exit_frame_with_exception_v) + mc.MOV_ri(eax.value, self.cpu.propagate_exception_v) # # footer -- note the ADD, which skips the return address of this # function, and will instead return to the caller's caller. Note diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py --- a/pypy/jit/metainterp/pyjitpl.py +++ b/pypy/jit/metainterp/pyjitpl.py @@ -1379,9 +1379,9 @@ num = self.cpu.get_fail_descr_number(tokens[0].finishdescr) setattr(self.cpu, 'done_with_this_frame_%s_v' % name, num) # - tokens = self.loop_tokens_exit_frame_with_exception_ref - num = self.cpu.get_fail_descr_number(tokens[0].finishdescr) - self.cpu.exit_frame_with_exception_v = num + exc_descr = compile.propagate_exception_descr + num = self.cpu.get_fail_descr_number(exc_descr) + self.cpu.propagate_exception_v = num # self.globaldata = MetaInterpGlobalData(self) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit