[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