[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