[pypy-commit] pypy ppc-jit-backend: merge

hager noreply at buildbot.pypy.org
Tue Nov 29 10:45:43 CET 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r49947:1676cac93ae4
Date: 2011-11-29 10:35 +0100
http://bitbucket.org/pypy/pypy/changeset/1676cac93ae4/

Log:	merge

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
@@ -34,6 +34,7 @@
 from pypy.jit.backend.x86.support import values_array
 from pypy.rlib import rgc
 from pypy.rpython.annlowlevel import llhelper
+from pypy.rlib.objectmodel import we_are_translated
 
 memcpy_fn = rffi.llexternal('memcpy', [llmemory.Address, llmemory.Address,
                                        rffi.SIZE_T], lltype.Void,
@@ -187,6 +188,7 @@
             self.mc.stdu(r.SP.value, r.SP.value, -frame_depth)
             self.mc.mflr(r.r0.value)
             self.mc.std(r.r0.value, r.SP.value, frame_depth + 2 * WORD)
+            self.mc.std(r.SPP.value, r.SP.value, WORD)
 
         # compute spilling pointer (SPP)
         self.mc.addi(r.SPP.value, r.SP.value, frame_depth
@@ -266,13 +268,12 @@
                 stack_location = decode32(enc, i+1)
                 i += 4
                 if group == self.FLOAT_TYPE:
-                    value = decode64(stack, frame_depth - stack_location*WORD)
-                    self.fail_boxes_float.setitem(fail_index, value)
-                    continue
+                    assert 0, "not implemented yet"
                 else:
-                    #value = decode32(spilling_area, spilling_area - stack_location * WORD)
-                    #import pdb; pdb.set_trace()
-                    value = decode32(spilling_area, spilling_depth - stack_location * WORD)
+		    if IS_PPC_32:
+                        value = decode32(spilling_area, spilling_depth - stack_location * WORD)
+		    else:
+                        value = decode64(spilling_area, spilling_depth - stack_location * WORD)
             else: # REG_LOC
                 reg = ord(enc[i])
                 if group == self.FLOAT_TYPE:
@@ -597,7 +598,7 @@
         self._make_prologue(regalloc_head, frame_depth)
      
         direct_bootstrap_code = self.mc.currpos()
-        self.gen_direct_bootstrap_code(loophead, looptoken, inputargs, frame_depth)
+        #self.gen_direct_bootstrap_code(loophead, looptoken, inputargs, frame_depth)
 
         self.write_pending_failure_recoveries()
         loop_start = self.materialize_loop(looptoken, False)
@@ -615,6 +616,11 @@
         else:
             looptoken.ppc_code = self.gen_64_bit_func_descr(real_start)
         self.process_pending_guards(loop_start)
+        if not we_are_translated():
+            print 'Loop', inputargs, operations
+            self.mc._dump_trace(loop_start, 'loop_%s.asm' % self.cpu.total_compiled_loops)
+            print 'Done assembling loop with token %r' % looptoken
+
         self._teardown()
 
     def assemble_bridge(self, faildescr, inputargs, operations, looptoken, log):


More information about the pypy-commit mailing list