Author: hager <[email protected]>
Branch: ppc-jit-backend
Changeset: r49437:9b6289cbf90b
Date: 2011-11-15 18:13 +0100
http://bitbucket.org/pypy/pypy/changeset/9b6289cbf90b/
Log: Use r0 as one-element stack
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
@@ -455,6 +455,7 @@
allblocks = self.get_asmmemmgr_blocks(looptoken)
self.datablockwrapper = MachineDataBlockWrapper(self.cpu.asmmemmgr,
allblocks)
+ self.stack_in_use = False
def setup_once(self):
gc_ll_descr = self.cpu.gc_ll_descr
@@ -593,6 +594,7 @@
self.mc = None
self._regalloc = None
assert self.datablockwrapper is None
+ self.stack_in_use = False
def _walk_operations(self, operations, regalloc):
self._regalloc = regalloc
@@ -790,12 +792,12 @@
loc"""
if loc.is_stack():
- if loc.type != FLOAT:
- scratch_reg = r.r0
- else:
+ if loc.type == FLOAT:
assert 0, "not implemented yet"
- self.regalloc_mov(loc, scratch_reg)
- self.regalloc_push(scratch_reg)
+ # XXX this code has to be verified
+ assert not self.stack_in_use
+ self.regalloc_mov(loc, r.r0)
+ self.stack_in_use = True
elif loc.is_reg():
self.mc.addi(r.SP.value, r.SP.value, -WORD) # decrease stack
pointer
# push value
@@ -814,12 +816,12 @@
"""Pops the value on top of the stack to loc. Can trash the current
value of r0 when popping to a stack loc"""
if loc.is_stack():
- if loc.type != FLOAT:
- scratch_reg = r.r0
- else:
+ if loc.type == FLOAT:
assert 0, "not implemented yet"
- self.regalloc_pop(scratch_reg)
- self.regalloc_mov(scratch_reg, loc)
+ # XXX this code has to be verified
+ assert self.stack_in_use
+ self.regalloc_mov(r.r0, loc)
+ self.stack_in_use = False
elif loc.is_reg():
# pop value
if IS_PPC_32:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit