Author: Armin Rigo <ar...@tunes.org> Branch: stmgc-c7 Changeset: r70108:a68436ce38ec Date: 2014-03-20 11:12 +0100 http://bitbucket.org/pypy/pypy/changeset/a68436ce38ec/
Log: Revert changes to 'make_sure_does_not_move(faildescr)' diff --git a/rpython/jit/backend/arm/assembler.py b/rpython/jit/backend/arm/assembler.py --- a/rpython/jit/backend/arm/assembler.py +++ b/rpython/jit/backend/arm/assembler.py @@ -623,7 +623,7 @@ ops_offset = self.mc.ops_offset if logger is not None: - logger.log_loop(inputargs, operations, looptoken.number, "rewritten", + logger.log_loop(inputargs, operations, 0, "rewritten", name=loopname, ops_offset=ops_offset) self.teardown() diff --git a/rpython/jit/backend/arm/regalloc.py b/rpython/jit/backend/arm/regalloc.py --- a/rpython/jit/backend/arm/regalloc.py +++ b/rpython/jit/backend/arm/regalloc.py @@ -630,10 +630,10 @@ # the frame is in fp, but we have to point where in the frame is # the potential argument to FINISH descr = op.getdescr() - fail_descr = rgc.cast_instance_to_gcref(descr) + fail_descr = cast_instance_to_gcref(descr) # we know it does not move, but well - fail_descr = rgc._make_sure_does_not_move(fail_descr) - fail_descr = rgc.cast_gcref_to_int(fail_descr) + rgc._make_sure_does_not_move(fail_descr) + fail_descr = rffi.cast(lltype.Signed, fail_descr) if op.numargs() == 1: loc = self.make_sure_var_in_reg(op.getarg(0)) locs = [loc, imm(fail_descr)] diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py --- a/rpython/jit/backend/llsupport/assembler.py +++ b/rpython/jit/backend/llsupport/assembler.py @@ -182,6 +182,8 @@ break exc = guardtok.exc target = self.failure_recovery_code[exc + 2 * withfloats] + fail_descr = cast_instance_to_gcref(guardtok.faildescr) + fail_descr = rffi.cast(lltype.Signed, fail_descr) base_ofs = self.cpu.get_baseofs_of_frame_field() positions = [0] * len(guardtok.fail_locs) for i, loc in enumerate(guardtok.fail_locs): @@ -204,8 +206,6 @@ guardtok.faildescr.rd_locs = positions # we want the descr to keep alive guardtok.faildescr.rd_loop_token = self.current_clt - fail_descr = rgc.cast_instance_to_gcref(guardtok.faildescr) - fail_descr = rgc._make_sure_does_not_move(fail_descr) return fail_descr, target def call_assembler(self, op, guard_op, argloc, vloc, result_loc, tmploc): @@ -236,8 +236,9 @@ else: raise AssertionError(kind) - gcref = rgc.cast_instance_to_gcref(value) - value = rgc._make_sure_does_not_move(gcref) + gcref = cast_instance_to_gcref(value) + rgc._make_sure_does_not_move(gcref) + value = rffi.cast(lltype.Signed, gcref) je_location = self._call_assembler_check_descr(value, tmploc) # # Path A: use assembler_helper_adr diff --git a/rpython/jit/backend/llsupport/gc.py b/rpython/jit/backend/llsupport/gc.py --- a/rpython/jit/backend/llsupport/gc.py +++ b/rpython/jit/backend/llsupport/gc.py @@ -5,8 +5,7 @@ from rpython.rtyper.lltypesystem import lltype, llmemory, rffi, rclass, rstr from rpython.rtyper.lltypesystem import llgroup from rpython.rtyper.lltypesystem.lloperation import llop -from rpython.rtyper.annlowlevel import (llhelper, cast_instance_to_gcref, - cast_base_ptr_to_instance) +from rpython.rtyper.annlowlevel import llhelper, cast_instance_to_gcref from rpython.translator.tool.cbuild import ExternalCompilationInfo from rpython.jit.codewriter import heaptracker from rpython.jit.metainterp.history import ConstPtr, AbstractDescr @@ -97,17 +96,12 @@ for i in range(op.numargs()): v = op.getarg(i) if isinstance(v, ConstPtr) and bool(v.value): - v.imm_value = rgc._make_sure_does_not_move(v.value) - # XXX: fix for stm, record imm_values and unregister - # them again (below too): - gcrefs_output_list.append(v.value) - - if self.stm: - return # for descr, we do it on the fly in assembler.py + p = v.value + rgc._make_sure_does_not_move(p) + gcrefs_output_list.append(p) if op.is_guard() or op.getopnum() == rop.FINISH: # the only ops with descrs that get recorded in a trace - descr = op.getdescr() - llref = rgc.cast_instance_to_gcref(descr) + llref = cast_instance_to_gcref(op.getdescr()) rgc._make_sure_does_not_move(llref) gcrefs_output_list.append(llref) diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py --- a/rpython/jit/backend/x86/assembler.py +++ b/rpython/jit/backend/x86/assembler.py @@ -341,8 +341,8 @@ self._store_and_reset_exception(self.mc, eax) ofs = self.cpu.get_ofs_of_frame_field('jf_guard_exc') self.mc.MOV_br(ofs, eax.value) - propagate_exception_descr = rgc._make_sure_does_not_move( - rgc.cast_instance_to_gcref(self.cpu.propagate_exception_descr)) + propagate_exception_descr = rffi.cast(lltype.Signed, + cast_instance_to_gcref(self.cpu.propagate_exception_descr)) ofs = self.cpu.get_ofs_of_frame_field('jf_descr') self.mc.MOV(RawEbpLoc(ofs), imm(propagate_exception_descr)) # @@ -2298,10 +2298,10 @@ cb.emit() def _store_force_index(self, guard_op): - faildescr = rgc._make_sure_does_not_move( - rgc.cast_instance_to_gcref(guard_op.getdescr())) + faildescr = guard_op.getdescr() ofs = self.cpu.get_ofs_of_frame_field('jf_force_descr') - self.mc.MOV(raw_stack(ofs), imm(faildescr)) + self.mc.MOV(raw_stack(ofs), imm(rffi.cast(lltype.Signed, + cast_instance_to_gcref(faildescr)))) def _emit_guard_not_forced(self, guard_token): ofs = self.cpu.get_ofs_of_frame_field('jf_descr') diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py --- a/rpython/jit/backend/x86/regalloc.py +++ b/rpython/jit/backend/x86/regalloc.py @@ -369,9 +369,10 @@ # the frame is in ebp, but we have to point where in the frame is # the potential argument to FINISH descr = op.getdescr() - fail_descr = rgc.cast_instance_to_gcref(descr) + fail_descr = cast_instance_to_gcref(descr) # we know it does not move, but well - fail_descr = rgc._make_sure_does_not_move(fail_descr) + rgc._make_sure_does_not_move(fail_descr) + fail_descr = rffi.cast(lltype.Signed, fail_descr) if op.numargs() == 1: loc = self.make_sure_var_in_reg(op.getarg(0)) locs = [loc, imm(fail_descr)] _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit