[pypy-commit] pypy new-jit-log: added jitlog to the existing call sites of the old logger

plan_rich pypy.commits at gmail.com
Fri Mar 18 03:19:18 EDT 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: new-jit-log
Changeset: r83118:df3f2f49084a
Date: 2016-03-18 08:18 +0100
http://bitbucket.org/pypy/pypy/changeset/df3f2f49084a/

Log:	added jitlog to the existing call sites of the old logger

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
@@ -532,7 +532,7 @@
             looptoken._x86_ops_offset = ops_offset
         looptoken._ll_function_addr = rawstart
         if logger:
-            logger.log_trace(logger.MARK_ASM, inputargs, operations,
+            logger.log_trace(logger.MARK_TRACE_ASM, inputargs, operations,
                              ops_offset=ops_offset, self.mc)
 
         self.fixup_target_tokens(rawstart)
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -480,22 +480,28 @@
 
 def do_compile_loop(jd_id, unique_id, metainterp_sd, inputargs, operations,
                     looptoken, log=True, name='', memo=None):
+    mark = VMProfJitLogger.MARK_TRACE_OPT
+    metainterp_sd.jitlog.log_trace(mark, inputargs, operations)
+    # TODO remove old
     metainterp_sd.logger_ops.log_loop(inputargs, operations, -2,
                                       'compiling', None, name, memo)
     return metainterp_sd.cpu.compile_loop(inputargs,
                                           operations, looptoken,
                                           jd_id=jd_id, unique_id=unique_id,
                                           log=log, name=name,
-                                          logger=metainterp_sd.logger_ops)
+                                          logger=metainterp_sd.jitlog)
 
 def do_compile_bridge(metainterp_sd, faildescr, inputargs, operations,
                       original_loop_token, log=True, memo=None):
+    mark = VMProfJitLogger.MARK_TRACE_OPT
+    metainterp_sd.jitlog.log_trace(mark, inputargs, operations, faildescr=faildescr)
+    # TODO remove old
     metainterp_sd.logger_ops.log_bridge(inputargs, operations, "compiling",
                                         memo=memo)
     assert isinstance(faildescr, AbstractFailDescr)
     return metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
                                             original_loop_token, log=log,
-                                            logger=metainterp_sd.logger_ops)
+                                            logger=metainterp_sd.jitlog)
 
 def forget_optimization_info(lst, reset_values=False):
     for item in lst:
diff --git a/rpython/jit/metainterp/jitlog.py b/rpython/jit/metainterp/jitlog.py
--- a/rpython/jit/metainterp/jitlog.py
+++ b/rpython/jit/metainterp/jitlog.py
@@ -19,18 +19,24 @@
 
 class VMProfJitLogger(JitLogMarshall):
 
-    MARK_TRACED = 0x10
 
-    MARK_INPUT_ARGS = 0x12
+    MARK_INPUT_ARGS = 0x10
+    MARK_RESOP_META = 0x11
+    MARK_RESOP = 0x12
+    MARK_RESOP_DESCR = 0x13
+    MARK_ASM_ADDR = 0x14
+    MARK_ASM = 0x15
 
-    MARK_RESOP_META = 0x13
-    MARK_RESOP = 0x14
-    MARK_RESOP_DESCR = 0x15
-    MARK_ASM_ADDR = 0x16
-    MARK_ASM = 0x17
+    # which type of trace is logged after this
+    # the trace as it is recorded by the tracer
+    MARK_TRACE = 0x16
+    # the trace that has passed the optimizer
+    MARK_TRACE_OPT = 0x17
+    # the trace assembled to machine code (after rewritten)
+    MARK_TRACE_ASM = 0x18
 
-    # the ones as parameter to log_trace
-    MARK_TRACE_ASM = 0x18
+    # the machine code was patched (e.g. guard)
+    MARK_ASM_PATCH = 0x19
 
     def __init__(self):
         self.cintf = cintf.setup()
@@ -70,8 +76,11 @@
 
         # assembler address (to not duplicate it in write_code_dump)
         if mc is not None:
-            lendian_addr = struct.pack('<l', mc.absolute_addr())
-            self.write_marked(self.MARK_ASM_ADDR, lendian_addr)
+            absaddr = mc.absolute_addr()
+            rel = mc.get_relative_pos()
+            # packs <start addr> <end addr> as two unsigend longs
+            lendian_addrs = struct.pack('<LL', absaddr, absaddr + rel)
+            self.write_marked(self.MARK_ASM_ADDR, lendian_addrs)
 
         for i,op in enumerate(ops):
             mark, line = self.encode(op)
diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -7,6 +7,7 @@
 from rpython.jit.metainterp.optimizeopt.simplify import OptSimplify
 from rpython.jit.metainterp.optimizeopt.pure import OptPure
 from rpython.jit.metainterp.optimizeopt.earlyforce import OptEarlyForce
+from rpython.jit.metainterp.jitlog import VMProfJitLogger
 from rpython.rlib.jit import PARAMETERS, ENABLE_ALL_OPTS
 from rpython.rlib.unroll import unrolling_iterable
 from rpython.rlib.debug import debug_start, debug_stop, debug_print
@@ -54,6 +55,9 @@
     debug_start("jit-optimize")
     inputargs = compile_data.start_label.getarglist()
     try:
+        mark = VMProfJitLogger.MARK_TRACE
+        metainterp_sd.jitlog.log_trace(mark, inputargs, compile_data.operations)
+        #
         metainterp_sd.logger_noopt.log_loop(inputargs,
                                             compile_data.operations,
                                             memo=memo)


More information about the pypy-commit mailing list