Author: David Schneider <david.schnei...@picle.org> Branch: Changeset: r62908:d5fba32b813a Date: 2013-03-31 20:01 +0200 http://bitbucket.org/pypy/pypy/changeset/d5fba32b813a/
Log: some work on fixing translation on arm diff --git a/rpython/jit/backend/arm/opassembler.py b/rpython/jit/backend/arm/opassembler.py --- a/rpython/jit/backend/arm/opassembler.py +++ b/rpython/jit/backend/arm/opassembler.py @@ -299,19 +299,10 @@ is_guard_not_invalidated=True) def emit_op_jump(self, op, arglocs, regalloc, fcond): - # The backend's logic assumes that the target code is in a piece of - # assembler that was also called with the same number of arguments, - # so that the locations [ebp+8..] of the input arguments are valid - # stack locations both before and after the jump. - # target_token = op.getdescr() + assert isinstance(target_token, TargetToken) target = target_token._ll_loop_code - assert isinstance(target_token, TargetToken) assert fcond == c.AL - my_nbargs = self.current_clt._debug_nbargs - target_nbargs = target_token._arm_clt._debug_nbargs - assert my_nbargs == target_nbargs - if target_token in self.target_tokens_currently_compiling: self.mc.B_offs(target, fcond) else: @@ -576,10 +567,12 @@ def emit_op_cond_call_gc_wb(self, op, arglocs, regalloc, fcond): self._write_barrier_fastpath(self.mc, op.getdescr(), arglocs, fcond) + return fcond def emit_op_cond_call_gc_wb_array(self, op, arglocs, regalloc, fcond): self._write_barrier_fastpath(self.mc, op.getdescr(), arglocs, fcond, array=True) + return fcond def _write_barrier_fastpath(self, mc, descr, arglocs, fcond=c.AL, array=False, is_frame=False): 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 @@ -752,6 +752,7 @@ # self.frame_manager.hint_frame_locations[box] = loc def prepare_op_jump(self, op, fcond): + assert self.jump_target_descr is None descr = op.getdescr() assert isinstance(descr, TargetToken) self.jump_target_descr = descr _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit