[pypy-commit] pypy arm-backed-float: (cfbolz, bivab) translation fixes

bivab noreply at buildbot.pypy.org
Thu May 26 14:00:23 CEST 2011


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backed-float
Changeset: r44501:54fb201aab08
Date: 2011-05-25 14:06 +0200
http://bitbucket.org/pypy/pypy/changeset/54fb201aab08/

Log:	(cfbolz, bivab) translation fixes

diff --git a/pypy/jit/backend/arm/regalloc.py b/pypy/jit/backend/arm/regalloc.py
--- a/pypy/jit/backend/arm/regalloc.py
+++ b/pypy/jit/backend/arm/regalloc.py
@@ -19,7 +19,6 @@
 from pypy.jit.backend.llsupport.descr import BaseFieldDescr, BaseArrayDescr, \
                                              BaseCallDescr, BaseSizeDescr
 from pypy.jit.backend.llsupport import symbolic
-from pypy.jit.backend.llsupport.asmmemmgr import MachineDataBlockWrapper
 from pypy.rpython.lltypesystem import lltype, rffi, rstr, llmemory
 from pypy.jit.codewriter import heaptracker
 from pypy.rlib.objectmodel import we_are_translated
@@ -68,10 +67,7 @@
     save_around_call_regs = r.all_vfp_regs
 
     def convert_to_imm(self, c):
-        datablockwrapper = MachineDataBlockWrapper(self.assembler.cpu.asmmemmgr,
-                                                    self.assembler.blocks)
-        adr = datablockwrapper.malloc_aligned(8, 8)
-        datablockwrapper.done()
+        adr = self.assembler.datablockwrapper.malloc_aligned(8, 8)
         x = c.getfloatstorage()
         rffi.cast(rffi.CArrayPtr(longlong.FLOATSTORAGE), adr)[0] = x
         return locations.ConstFloatLoc(adr)
@@ -568,6 +564,7 @@
         self.assembler.load(y, imm(y_val))
 
         offset = self.cpu.vtable_offset
+        assert offset is not None
         offset_loc, offset_box = self._ensure_value_is_boxed(ConstInt(offset), boxes)
         boxes.append(offset_box)
         arglocs = self._prepare_guard(op, [x, y, offset_loc])
@@ -825,7 +822,7 @@
             arglocs = self._prepare_args_for_new_op(op.getdescr())
             force_index = self.assembler.write_new_force_index()
             self.assembler._emit_call(force_index, self.assembler.malloc_func_addr,
-                                    arglocs, self, result=op.result)
+                                    arglocs, self, fcond, result=op.result)
             self.possibly_free_vars(arglocs)
         self.possibly_free_var(op.result)
         return []
@@ -839,7 +836,7 @@
             callargs = self._prepare_args_for_new_op(descrsize)
             force_index = self.assembler.write_new_force_index()
             self.assembler._emit_call(force_index, self.assembler.malloc_func_addr,
-                                        callargs, self, result=op.result)
+                                        callargs, self, fcond, result=op.result)
             self.possibly_free_vars(callargs)
         self.possibly_free_var(op.result)
         return [imm(classint)]
@@ -857,11 +854,11 @@
                     return []
             args = self.assembler.cpu.gc_ll_descr.args_for_new_array(
                 op.getdescr())
-            arglocs = [imm(x) for x in args]
-            arglocs.append(self.loc(box_num_elem))
-            force_index = self.write_new_force_index()
+            argboxes = [ConstInt(x) for x in args]
+            argboxes.append(box_num_elem)
+            force_index = self.assembler.write_new_force_index()
             self.assembler._emit_call(force_index, self.assembler.malloc_array_func_addr,
-                                        arglocs, self, op.result)
+                                        argboxes, self, fcond, result=op.result)
             return []
         # boehm GC
         itemsize, scale, basesize, ofs_length, _ = (
@@ -900,7 +897,7 @@
         shape = gcrootmap.get_basic_shape(False)
         for v, val in self.frame_manager.frame_bindings.items():
             if (isinstance(v, BoxPtr) and self.rm.stays_alive(v)):
-                assert isinstance(val, StackLoc)
+                assert val.is_stack()
                 gcrootmap.add_frame_offset(shape, val.position)
         for v, reg in self.rm.reg_bindings.items():
             if reg is r.r0:
@@ -917,9 +914,10 @@
     def prepare_op_newstr(self, op, fcond):
         gc_ll_descr = self.cpu.gc_ll_descr
         if gc_ll_descr.get_funcptr_for_newstr is not None:
-            loc = self.loc(op.getarg(0))
-            force_index = self.write_new_force_index()
-            self.assembler._emit_call(force_index, self.assembler.malloc_str_func_addr, [loc], self, op.result)
+            force_index = self.assembler.write_new_force_index()
+            self.assembler._emit_call(force_index,
+                    self.assembler.malloc_str_func_addr, [op.getarg(0)],
+                    self, fcond, op.result)
             return []
         # boehm GC
         ofs_items, itemsize, ofs = symbolic.get_array_token(rstr.STR,
@@ -930,10 +928,9 @@
     def prepare_op_newunicode(self, op, fcond):
         gc_ll_descr = self.cpu.gc_ll_descr
         if gc_ll_descr.get_funcptr_for_newunicode is not None:
-            loc = self.loc(op.getarg(0))
-            force_index = self.write_new_force_index()
+            force_index = self.assembler.write_new_force_index()
             self.assembler._emit_call(force_index, self.assembler.malloc_unicode_func_addr,
-                                        [loc], self, op.result)
+                                    [op.getarg(0)], self, fcond, op.result)
             return []
         # boehm GC
         ofs_items, _, ofs = symbolic.get_array_token(rstr.UNICODE,


More information about the pypy-commit mailing list