Author: hager <sven.ha...@uni-duesseldorf.de> Branch: ppc-jit-backend Changeset: r50996:be5c3642001f Date: 2012-01-03 14:29 +0100 http://bitbucket.org/pypy/pypy/changeset/be5c3642001f/
Log: (bivab, hager): make test_memoryerror pass, factor out return code diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py --- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py +++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py @@ -278,10 +278,9 @@ with Saved_Volatiles(mc): addr = self.cpu.get_on_leave_jitted_int(save_exception=True) mc.call(addr) - #mc.alloc_scratch_reg(self.cpu.propagate_exception_v) - #mc.mr(r.RES.value, r.SCRATCH.value) - #mc.free_scratch_reg() + mc.load_imm(r.RES, self.cpu.propagate_exception_v) + self._gen_epilogue(mc) mc.prepare_insts_blocks() self.propagate_exception_path = mc.materialize(self.cpu.asmmemmgr, []) @@ -320,6 +319,14 @@ # call decoding function mc.call(addr) + # generate return and restore registers + self._gen_epilogue(mc) + + mc.prepare_insts_blocks() + return mc.materialize(self.cpu.asmmemmgr, [], + self.cpu.gc_ll_descr.gcrootmap) + + def _gen_epilogue(self, mc): # save SPP in r5 # (assume that r5 has been written to failboxes) mc.mr(r.r5.value, r.SPP.value) @@ -336,9 +343,6 @@ # generated before we know how much space the entire frame will need. mc.addi(r.SP.value, r.r5.value, self.OFFSET_SPP_TO_OLD_BACKCHAIN) # restore old SP mc.blr() - mc.prepare_insts_blocks() - return mc.materialize(self.cpu.asmmemmgr, [], - self.cpu.gc_ll_descr.gcrootmap) def _save_managed_regs(self, mc): """ store managed registers in ENCODING AREA _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit