[pypy-commit] pypy vmprof2: try to properly disable codemaps
fijal
noreply at buildbot.pypy.org
Fri Apr 24 14:05:26 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: vmprof2
Changeset: r76918:a4a719af0754
Date: 2015-04-24 14:05 +0200
http://bitbucket.org/pypy/pypy/changeset/a4a719af0754/
Log: try to properly disable codemaps
diff --git a/rpython/jit/backend/arm/assembler.py b/rpython/jit/backend/arm/assembler.py
--- a/rpython/jit/backend/arm/assembler.py
+++ b/rpython/jit/backend/arm/assembler.py
@@ -586,8 +586,8 @@
assert len(set(inputargs)) == len(inputargs)
self.setup(looptoken)
- self.codemap_builder.enter_portal_frame(jd_id, unique_id,
- self.mc.get_relative_pos())
+ #self.codemap_builder.enter_portal_frame(jd_id, unique_id,
+ # self.mc.get_relative_pos())
frame_info = self.datablockwrapper.malloc_aligned(
@@ -662,7 +662,7 @@
assert len(set(inputargs)) == len(inputargs)
self.setup(original_loop_token)
- self.codemap.inherit_code_from_position(faildescr.adr_jump_offset)
+ #self.codemap.inherit_code_from_position(faildescr.adr_jump_offset)
descr_number = compute_unique_id(faildescr)
if log:
operations = self._inject_debugging_code(faildescr, operations,
@@ -886,8 +886,8 @@
size = self.mc.get_relative_pos()
res = self.mc.materialize(self.cpu, allblocks,
self.cpu.gc_ll_descr.gcrootmap)
- self.cpu.codemap.register_codemap(
- self.codemap.get_final_bytecode(res, size))
+ #self.cpu.codemap.register_codemap(
+ # self.codemap.get_final_bytecode(res, size))
return res
def update_frame_depth(self, frame_depth):
diff --git a/rpython/jit/backend/arm/runner.py b/rpython/jit/backend/arm/runner.py
--- a/rpython/jit/backend/arm/runner.py
+++ b/rpython/jit/backend/arm/runner.py
@@ -50,7 +50,7 @@
def setup_once(self):
self.cpuinfo.arch_version = detect_arch_version()
self.cpuinfo.hf_abi = detect_hardfloat()
- self.codemap.setup()
+ #self.codemap.setup()
self.assembler.setup_once()
def finish_once(self):
diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -130,7 +130,8 @@
self.gcmap_for_finish[0] = r_uint(1)
def setup(self, looptoken):
- self.codemap_builder = CodemapBuilder()
+ if self.cpu.HAS_CODEMAP:
+ self.codemap_builder = CodemapBuilder()
self._finish_gcmap = lltype.nullptr(jitframe.GCMAP)
def set_debug(self, v):
@@ -200,13 +201,15 @@
return fail_descr, target
def enter_portal_frame(self, op):
- self.codemap_builder.enter_portal_frame(op.getarg(0).getint(),
- op.getarg(1).getint(),
- self.mc.get_relative_pos())
+ if self.cpu.HAS_CODEMAP:
+ self.codemap_builder.enter_portal_frame(op.getarg(0).getint(),
+ op.getarg(1).getint(),
+ self.mc.get_relative_pos())
def leave_portal_frame(self, op):
- self.codemap_builder.leave_portal_frame(op.getarg(0).getint(),
- self.mc.get_relative_pos())
+ if self.cpu.HAS_CODEMAP:
+ self.codemap_builder.leave_portal_frame(op.getarg(0).getint(),
+ self.mc.get_relative_pos())
def call_assembler(self, op, guard_op, argloc, vloc, result_loc, tmploc):
self._store_force_index(guard_op)
diff --git a/rpython/jit/backend/llsupport/llmodel.py b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -23,6 +23,8 @@
class AbstractLLCPU(AbstractCPU):
from rpython.jit.metainterp.typesystem import llhelper as ts
+ HAS_CODEMAP = False
+
def __init__(self, rtyper, stats, opts, translate_support_code=False,
gcdescr=None):
assert type(opts) is not bool
@@ -49,7 +51,8 @@
else:
self._setup_exception_handling_untranslated()
self.asmmemmgr = asmmemmgr.AsmMemoryManager()
- self.codemap = codemap.CodemapStorage()
+ if self.HAS_CODEMAP:
+ self.codemap = codemap.CodemapStorage()
self._setup_frame_realloc(translate_support_code)
ad = self.gc_ll_descr.getframedescrs(self).arraydescr
self.signedarraydescr = ad
@@ -80,7 +83,8 @@
pass
def finish_once(self):
- self.codemap.finish_once()
+ if self.HAS_CODEMAP:
+ self.codemap.finish_once()
def compile_loop(self, inputargs, operations, looptoken, jd_id=0,
unique_id=0, log=True, name='', logger=None):
@@ -222,7 +226,8 @@
for rawstart, rawstop in blocks:
self.gc_ll_descr.freeing_block(rawstart, rawstop)
self.asmmemmgr.free(rawstart, rawstop)
- self.codemap.free_asm_block(rawstart, rawstop)
+ if self.HAS_CODEMAP:
+ self.codemap.free_asm_block(rawstart, rawstop)
def force(self, addr_of_force_token):
frame = rffi.cast(jitframe.JITFRAMEPTR, addr_of_force_token)
diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -457,8 +457,9 @@
assert len(set(inputargs)) == len(inputargs)
self.setup(looptoken)
- self.codemap_builder.enter_portal_frame(jd_id, unique_id,
- self.mc.get_relative_pos())
+ if self.cpu.HAS_CODEMAP:
+ self.codemap_builder.enter_portal_frame(jd_id, unique_id,
+ self.mc.get_relative_pos())
frame_info = self.datablockwrapper.malloc_aligned(
jitframe.JITFRAMEINFO_SIZE, alignment=WORD)
clt.frame_info = rffi.cast(jitframe.JITFRAMEINFOPTR, frame_info)
@@ -526,8 +527,9 @@
assert len(set(inputargs)) == len(inputargs)
self.setup(original_loop_token)
- self.codemap_builder.inherit_code_from_position(
- faildescr.adr_jump_offset)
+ if self.cpu.HAS_CODEMAP:
+ self.codemap_builder.inherit_code_from_position(
+ faildescr.adr_jump_offset)
self.mc.force_frame_size(DEFAULT_FRAME_BYTES)
descr_number = compute_unique_id(faildescr)
if log:
@@ -692,8 +694,9 @@
size = self.mc.get_relative_pos()
res = self.mc.materialize(self.cpu, allblocks,
self.cpu.gc_ll_descr.gcrootmap)
- self.cpu.codemap.register_codemap(
- self.codemap_builder.get_final_bytecode(res, size))
+ if self.cpu.HAS_CODEMAP:
+ self.cpu.codemap.register_codemap(
+ self.codemap_builder.get_final_bytecode(res, size))
return res
def patch_jump_for_descr(self, faildescr, adr_new_target):
diff --git a/rpython/jit/backend/x86/runner.py b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -67,7 +67,8 @@
@rgc.no_release_gil
def setup_once(self):
self.profile_agent.startup()
- self.codemap.setup()
+ if self.HAS_CODEMAP:
+ self.codemap.setup()
self.assembler.setup_once()
@rgc.no_release_gil
@@ -158,5 +159,6 @@
CALLEE_SAVE_REGISTERS = [regloc.ebx, regloc.r12, regloc.r13, regloc.r14, regloc.r15]
IS_64_BIT = True
+ HAS_CODEMAP = True
CPU = CPU386
diff --git a/rpython/jit/backend/x86/rx86.py b/rpython/jit/backend/x86/rx86.py
--- a/rpython/jit/backend/x86/rx86.py
+++ b/rpython/jit/backend/x86/rx86.py
@@ -4,6 +4,7 @@
from rpython.rlib.unroll import unrolling_iterable
from rpython.rlib.rarithmetic import intmask
from rpython.rtyper.lltypesystem import rffi
+from rpython.jit.backend.x86.arch import IS_X86_64
BYTE_REG_FLAG = 0x20
NO_BASE_REGISTER = -1
@@ -489,9 +490,10 @@
assert self._frame_size >= self.WORD
def check_stack_size_at_ret(self):
- assert self._frame_size == self.WORD
- if not we_are_translated():
- self._frame_size = None
+ if IS_X86_64:
+ assert self._frame_size == self.WORD
+ if not we_are_translated():
+ self._frame_size = None
# ------------------------------ MOV ------------------------------
diff --git a/rpython/jit/backend/x86/test/test_assembler.py b/rpython/jit/backend/x86/test/test_assembler.py
--- a/rpython/jit/backend/x86/test/test_assembler.py
+++ b/rpython/jit/backend/x86/test/test_assembler.py
@@ -51,7 +51,8 @@
asmmemmgr_blocks = None
cpu = ACTUAL_CPU(None, None)
cpu.setup()
- cpu.codemap.setup()
+ if cpu.HAS_CODEMAP:
+ cpu.codemap.setup()
looptoken = FakeToken()
asm = cpu.assembler
asm.setup_once()
More information about the pypy-commit
mailing list