[pypy-commit] pypy jitframe-on-heap: more work
fijal
noreply at buildbot.pypy.org
Fri Feb 15 15:00:36 CET 2013
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: jitframe-on-heap
Changeset: r61263:97b326434c1a
Date: 2013-02-15 15:58 +0200
http://bitbucket.org/pypy/pypy/changeset/97b326434c1a/
Log: more work
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
@@ -1139,12 +1139,17 @@
self.mc.STR_ri(tmploc.value, r.ip.value, ofs)
def _call_assembler_load_result(self, op, result_loc):
- XXX
if op.result is not None:
# load the return value from (tmploc, 0)
kind = op.result.type
+ descr = self.cpu.getarraydescr_for_frame(kind)
if kind == FLOAT:
- t = unpack_interiorfielddescr(descrs.as_float)[0]
+ ofs = self.cpu.unpack_arraydescr(descr)
+ assert check_imm_arg(ofs)
+ assert result_loc.is_reg()
+ # we always have a register here, since we have to sync them
+ # before call_assembler
+ self.mc.VLDR(result_loc.value, xxx)
if not check_imm_arg(t):
self.mc.gen_load_int(r.ip.value, t, cond=fast_path_cond)
self.mc.ADD_rr(r.ip.value, r.r0.value, r.ip.value,
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
@@ -1101,6 +1101,7 @@
prepare_guard_call_release_gil = prepare_guard_call_may_force
def prepare_guard_call_assembler(self, op, guard_op, fcond):
+ self._prepare_call(op, save_all_regs=True)
tmploc = self.get_scratch_reg(INT, selected_reg=r.r0)
locs = self.locs_for_call_assembler(op, guard_op)
self.possibly_free_vars(guard_op.getfailargs())
More information about the pypy-commit
mailing list