[pypy-commit] pypy ppc-jit-backend: fix basic field operations
hager
noreply at buildbot.pypy.org
Thu Jan 5 01:38:48 CET 2012
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r51026:b3a8f9928a2e
Date: 2012-01-04 16:38 -0800
http://bitbucket.org/pypy/pypy/changeset/b3a8f9928a2e/
Log: fix basic field operations
diff --git a/pypy/jit/backend/ppc/ppcgen/opassembler.py b/pypy/jit/backend/ppc/ppcgen/opassembler.py
--- a/pypy/jit/backend/ppc/ppcgen/opassembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/opassembler.py
@@ -382,11 +382,10 @@
self._emit_call(force_index, adr, arglist, regalloc, op.result)
descr = op.getdescr()
#XXX Hack, Hack, Hack
- if op.result and not we_are_translated() and not isinstance(descr,
- LoopToken):
+ if op.result and not we_are_translated():
#XXX check result type
loc = regalloc.rm.call_result_location(op.result)
- size = descr.get_result_size(False)
+ size = descr.get_result_size()
signed = descr.is_result_signed()
self._ensure_result_bit_extension(loc, size, signed)
@@ -529,10 +528,8 @@
#XXX Hack, Hack, Hack
if not we_are_translated():
- descr = op.getdescr()
- size = descr.get_field_size(False)
- signed = descr.is_field_signed()
- self._ensure_result_bit_extension(res, size, signed)
+ signed = op.getdescr().is_field_signed()
+ self._ensure_result_bit_extension(res, size.value, signed)
emit_getfield_raw = emit_getfield_gc
emit_getfield_raw_pure = emit_getfield_gc
diff --git a/pypy/jit/backend/ppc/ppcgen/regalloc.py b/pypy/jit/backend/ppc/ppcgen/regalloc.py
--- a/pypy/jit/backend/ppc/ppcgen/regalloc.py
+++ b/pypy/jit/backend/ppc/ppcgen/regalloc.py
@@ -20,6 +20,9 @@
from pypy.jit.codewriter.effectinfo import EffectInfo
import pypy.jit.backend.ppc.ppcgen.register as r
from pypy.jit.codewriter import heaptracker
+from pypy.jit.backend.llsupport.descr import unpack_arraydescr
+from pypy.jit.backend.llsupport.descr import unpack_fielddescr
+from pypy.jit.backend.llsupport.descr import unpack_interiorfielddescr
# xxx hack: set a default value for TargetToken._arm_loop_code. If 0, we know
# that it is a LABEL that was not compiled yet.
@@ -565,7 +568,7 @@
def prepare_setfield_gc(self, op):
boxes = list(op.getarglist())
b0, b1 = boxes
- ofs, size, ptr = self._unpack_fielddescr(op.getdescr())
+ ofs, size, ptr = unpack_fielddescr(op.getdescr())
base_loc, base_box = self._ensure_value_is_boxed(b0, boxes)
boxes.append(base_box)
value_loc, value_box = self._ensure_value_is_boxed(b1, boxes)
@@ -583,7 +586,7 @@
def prepare_getfield_gc(self, op):
a0 = op.getarg(0)
- ofs, size, ptr = self._unpack_fielddescr(op.getdescr())
+ ofs, size, ptr = unpack_fielddescr(op.getdescr())
base_loc, base_box = self._ensure_value_is_boxed(a0)
c_ofs = ConstInt(ofs)
if _check_imm_arg(c_ofs):
More information about the pypy-commit
mailing list