[pypy-commit] pypy ppc-jit-backend: add debug information
hager
noreply at buildbot.pypy.org
Wed Feb 15 16:47:44 CET 2012
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r52510:a60ef6f200f6
Date: 2012-02-15 07:46 -0800
http://bitbucket.org/pypy/pypy/changeset/a60ef6f200f6/
Log: add debug information
diff --git a/pypy/jit/backend/ppc/codebuilder.py b/pypy/jit/backend/ppc/codebuilder.py
--- a/pypy/jit/backend/ppc/codebuilder.py
+++ b/pypy/jit/backend/ppc/codebuilder.py
@@ -962,6 +962,11 @@
PPCAssembler.__init__(self)
self.init_block_builder()
self.r0_in_use = r0_in_use
+ self.ops_offset = {}
+
+ def mark_op(self, op):
+ pos = self.get_relative_pos()
+ self.ops_offset[op] = pos
def check(self, desc, v, *args):
desc.__get__(self)(*args)
diff --git a/pypy/jit/backend/ppc/ppc_assembler.py b/pypy/jit/backend/ppc/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppc_assembler.py
@@ -44,6 +44,7 @@
from pypy.rlib.objectmodel import we_are_translated
from pypy.rpython.lltypesystem.lloperation import llop
from pypy.jit.backend.ppc.locations import StackLocation, get_spp_offset
+from pypy.rlib.jit import AsmInfo
memcpy_fn = rffi.llexternal('memcpy', [llmemory.Address, llmemory.Address,
rffi.SIZE_T], lltype.Void,
@@ -490,6 +491,7 @@
looptoken._ppc_loop_code = start_pos
clt.frame_depth = clt.param_depth = -1
spilling_area, param_depth = self._assemble(operations, regalloc)
+ size_excluding_failure_stuff = self.mc.get_relative_pos()
clt.frame_depth = spilling_area
clt.param_depth = param_depth
@@ -517,8 +519,12 @@
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
+ ops_offset = self.mc.ops_offset
self._teardown()
+ # XXX 3rd arg may not be correct yet
+ return AsmInfo(ops_offset, real_start, size_excluding_failure_stuff)
+
def _assemble(self, operations, regalloc):
regalloc.compute_hint_frame_locations(operations)
self._walk_operations(operations, regalloc)
@@ -547,7 +553,9 @@
sp_patch_location = self._prepare_sp_patch_position()
+ startpos = self.mc.get_relative_pos()
spilling_area, param_depth = self._assemble(operations, regalloc)
+ codeendpos = self.mc.get_relative_pos()
self.write_pending_failure_recoveries()
@@ -569,8 +577,12 @@
print 'Loop', inputargs, operations
self.mc._dump_trace(rawstart, 'bridge_%s.asm' % self.cpu.total_compiled_loops)
print 'Done assembling bridge with token %r' % looptoken
+
+ ops_offset = self.mc.ops_offset
self._teardown()
+ return AsmInfo(ops_offset, startpos + rawstart, codeendpos - startpos)
+
def _patch_sp_offset(self, sp_patch_location, rawstart):
mc = PPCBuilder()
frame_depth = self.compute_frame_depth(self.current_clt.frame_depth,
More information about the pypy-commit
mailing list