[pypy-commit] pypy new-jit-log: more import issues, separated jitlog into its own module called _jitlog

plan_rich pypy.commits at gmail.com
Fri Jul 22 05:35:50 EDT 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: new-jit-log
Changeset: r85811:12396196cd6e
Date: 2016-07-22 11:35 +0200
http://bitbucket.org/pypy/pypy/changeset/12396196cd6e/

Log:	more import issues, separated jitlog into its own module called
	_jitlog

diff --git a/pypy/module/_jitlog/__init__.py b/pypy/module/_jitlog/__init__.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_jitlog/__init__.py
@@ -0,0 +1,13 @@
+from pypy.interpreter.mixedmodule import MixedModule
+from rpython.rlib.rvmprof import VMProfPlatformUnsupported
+
+class Module(MixedModule):
+    """ JitLog the new logging facility """
+    appleveldefs = {
+    }
+
+    interpleveldefs = {
+        'enable': 'interp_jitlog.enable',
+        'disable': 'interp_jitlog.disable',
+        'JitlogError': 'space.fromcache(interp_jitlog.Cache).w_JitlogError',
+    }
diff --git a/pypy/module/_jitlog/interp_jitlog.py b/pypy/module/_jitlog/interp_jitlog.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_jitlog/interp_jitlog.py
@@ -0,0 +1,28 @@
+from pypy.interpreter.error import OperationError
+from pypy.interpreter.gateway import unwrap_spec
+from pypy.interpreter.pyframe import PyFrame
+from pypy.interpreter.pycode import PyCode
+from pypy.interpreter.baseobjspace import W_Root
+from rpython.rlib.rjitlog import rjitlog
+from rpython.rlib import jit
+
+class Cache:
+    def __init__(self, space):
+        self.w_JitlogError = space.new_exception_class("_jitlog.JitlogError")
+
+def JitlogError(space, e):
+    w_JitlogError = space.fromcache(Cache).w_JitlogError
+    return OperationError(w_JitlogError, space.wrap(e.msg))
+
+ at unwrap_spec(fileno=int)
+def enable(space, fileno):
+    """ Enable PyPy's logging facility. """
+    try:
+        rjitlog.enable_jitlog(fileno)
+    except rjitlog.JitlogError, e:
+        raise JitlogError(space, e)
+
+ at jit.dont_look_inside
+def disable(space):
+    """ Disable PyPy's logging facility. """
+    rjitlog.disable_jitlog()
diff --git a/pypy/module/_jitlog/test/__init__.py b/pypy/module/_jitlog/test/__init__.py
new file mode 100644
diff --git a/pypy/module/_jitlog/test/test__jitlog.py b/pypy/module/_jitlog/test/test__jitlog.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_jitlog/test/test__jitlog.py
@@ -0,0 +1,17 @@
+
+from rpython.tool.udir import udir
+from pypy.tool.pytest.objspace import gettestobjspace
+
+class AppTestJitLog(object):
+    spaceconfig = {'usemodules': ['_jitlog']}
+
+    def setup_class(cls):
+        cls.w_tmpfilename = cls.space.wrap(str(udir.join('test__jitlog.1')))
+
+    def test_enable(self):
+        import _jitlog
+        tmpfile = open(self.tmpfilename, 'wb')
+        fileno = tmpfile.fileno()
+        _jitlog.enable(fileno)
+        _jitlog.disable()
+        # no need to clsoe tmpfile, it is done by jitlog
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
@@ -10,10 +10,9 @@
                                 debug_print)
 from rpython.rlib.rarithmetic import r_uint
 from rpython.rlib.objectmodel import specialize, compute_unique_id
-from rpython.rlib.jitlog import _log_jit_counter
 from rpython.rtyper.annlowlevel import cast_instance_to_gcref, llhelper
 from rpython.rtyper.lltypesystem import rffi, lltype
-from rpython.rlib.rjitlog import rjitlog
+from rpython.rlib.rjitlog import rjitlog as jl
 
 DEBUG_COUNTER = lltype.Struct('DEBUG_COUNTER',
     # 'b'ridge, 'l'abel or # 'e'ntry point
@@ -347,7 +346,7 @@
 
     @specialize.argtype(1)
     def _inject_debugging_code(self, looptoken, operations, tp, number):
-        if self._debug or rjitlog.jitlog_enabled():
+        if self._debug or jl.jitlog_enabled():
             newoperations = []
             self._append_debugging_code(newoperations, tp, number, None)
             for op in operations:
@@ -413,7 +412,7 @@
             struct = self.loop_run_counters[i]
             # only log if it has been executed
             if struct.i > 0:
-                _log_jit_counter(struct)
+                jl._log_jit_counter(struct)
             # reset the counter, flush in a later point in time will
             # add up the counters!
             struct.i = 0
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
@@ -9,7 +9,7 @@
 from rpython.jit.metainterp.history import (Const, VOID, ConstInt)
 from rpython.jit.metainterp.history import AbstractFailDescr, INT, REF, FLOAT
 from rpython.jit.metainterp.compile import ResumeGuardDescr
-from rpython.rlib.jitlog import MARK_TRACE_ASM
+from rpython.rlib.rjitlog import rjitlog as jl
 from rpython.rtyper.lltypesystem import lltype, rffi, rstr, llmemory
 from rpython.rtyper.lltypesystem.lloperation import llop
 from rpython.rtyper.annlowlevel import cast_instance_to_gcref
@@ -540,7 +540,7 @@
             looptoken._x86_ops_offset = ops_offset
         looptoken._ll_function_addr = rawstart + functionpos
         if logger:
-            log = logger.log_trace(MARK_TRACE_ASM, None, self.mc)
+            log = logger.log_trace(jl.MARK_TRACE_ASM, None, self.mc)
             log.write(inputargs, operations, ops_offset=ops_offset)
 
             # legacy
@@ -612,7 +612,7 @@
         frame_depth = max(self.current_clt.frame_info.jfi_frame_depth,
                           frame_depth_no_fixed_size + JITFRAME_FIXED_SIZE)
         if logger:
-            log = logger.log_trace(MARK_TRACE_ASM, None, self.mc)
+            log = logger.log_trace(jl.MARK_TRACE_ASM, None, self.mc)
             log.write(inputargs, operations, ops_offset)
             # log that the already written bridge is stitched to a descr!
             logger.log_patch_guard(descr_number, 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
@@ -6,7 +6,7 @@
 from rpython.rlib.rarithmetic import r_uint, intmask
 from rpython.rlib import rstack
 from rpython.rlib.jit import JitDebugInfo, Counters, dont_look_inside
-from rpython.rlib.rjitlog import rjitlog
+from rpython.rlib.rjitlog import rjitlog as jl
 from rpython.conftest import option
 
 from rpython.jit.metainterp.resoperation import ResOperation, rop,\
@@ -18,7 +18,6 @@
 from rpython.jit.metainterp.optimize import InvalidLoop
 from rpython.jit.metainterp.resume import (PENDINGFIELDSP,
         ResumeDataDirectReader, AccumInfo)
-from rpython.rlib.jitlog import MARK_TRACE_OPT
 from rpython.jit.metainterp.resumecode import NUMBERING
 from rpython.jit.codewriter import heaptracker, longlong
 
@@ -489,7 +488,7 @@
     # legacy
     metainterp_sd.logger_ops.log_loop(inputargs, operations, -2,
                                       'compiling', None, name, memo)
-    _log = metainterp_sd.jitlog.log_trace(MARK_TRACE_OPT, metainterp_sd, None)
+    _log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE_OPT, metainterp_sd, None)
     _log.write(inputargs, operations)
     return metainterp_sd.cpu.compile_loop(inputargs,
                                           operations, looptoken,
@@ -502,7 +501,7 @@
     # legacy
     metainterp_sd.logger_ops.log_bridge(inputargs, operations, "compiling",
                                         memo=memo)
-    _log = metainterp_sd.jitlog.log_trace(MARK_TRACE_OPT, metainterp_sd, None)
+    _log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE_OPT, metainterp_sd, None)
     _log.write(inputargs, operations)
     assert isinstance(faildescr, AbstractFailDescr)
     return metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
@@ -545,7 +544,7 @@
     operations = get_deep_immutable_oplist(loop.operations)
     metainterp_sd.profiler.start_backend()
     debug_start("jit-backend")
-    log = have_debug_prints() or rjitlog.jitlog_enabled()
+    log = have_debug_prints() or jl.jitlog_enabled()
     try:
         loopname = jitdriver_sd.warmstate.get_location_str(greenkey)
         unique_id = jitdriver_sd.warmstate.get_unique_id(greenkey)
@@ -597,7 +596,7 @@
     operations = get_deep_immutable_oplist(operations)
     metainterp_sd.profiler.start_backend()
     debug_start("jit-backend")
-    log = have_debug_prints() or rjitlog.jitlog_enabled()
+    log = have_debug_prints() or jl.jitlog_enabled()
     try:
         asminfo = do_compile_bridge(metainterp_sd, faildescr, inputargs,
                                     operations,
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,7 +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.rlib.jitlog import MARK_TRACE
+from rpython.rlib.rjitlog import rjitlog as jl
 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
@@ -55,7 +55,7 @@
     debug_start("jit-optimize")
     try:
         # mark that a new trace has been started
-        log = metainterp_sd.jitlog.log_trace(MARK_TRACE, metainterp_sd, None)
+        log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE, metainterp_sd, None)
         log.write_trace(compile_data.trace)
         if compile_data.log_noopt:
             metainterp_sd.logger_noopt.log_loop_from_trace(compile_data.trace, memo=memo)
diff --git a/rpython/rlib/rjitlog/rjitlog.py b/rpython/rlib/rjitlog/rjitlog.py
--- a/rpython/rlib/rjitlog/rjitlog.py
+++ b/rpython/rlib/rjitlog/rjitlog.py
@@ -57,6 +57,12 @@
     def __str__(self):
         return self.msg
 
+ at register_helper(None)
+def stats_flush_trace_counts(warmrunnerdesc):
+    if not we_are_translated():
+        return # first param is None untranslated
+    warmrunnerdesc.metainterp_sd.cpu.assembler.flush_trace_counters()
+
 @jit.dont_look_inside
 def enable_jitlog(fileno):
     # initialize the jit log
@@ -64,16 +70,12 @@
     if p_error:
         raise JitlogError(rffi.charp2str(p_error))
     blob = assemble_header()
-    jitlog_write_marked(jl.MARK_JITLOG_HEADER + blob, len(blob) + 1)
+    jitlog_write_marked(MARK_JITLOG_HEADER + blob, len(blob) + 1)
 
 def disable_jitlog():
-    from rpython.rlib.jitlog import stats_flush_trace_counts
     stats_flush_trace_counts(None)
     jitlog_teardown()
 
- at register_helper(None)
-def stats_flush_trace_counts(warmrunnerdesc):
-    warmrunnerdesc.metainterp_sd.cpu.assembler.flush_trace_counters()
 
 def commonprefix(a,b):
     "Given a list of pathnames, returns the longest common leading component"
diff --git a/rpython/rlib/rjitlog/src/rjitlog.c b/rpython/rlib/rjitlog/src/rjitlog.c
--- a/rpython/rlib/rjitlog/src/rjitlog.c
+++ b/rpython/rlib/rjitlog/src/rjitlog.c
@@ -10,6 +10,11 @@
 #else
 #define RPY_EXPORTED  extern __attribute__((visibility("default")))
 #endif
+#else
+#include "common_header.h"
+#include "structdef.h"
+#include "src/threadlocal.h"
+#include "rjitlog.h"
 #endif
 
 #include <string.h>
diff --git a/rpython/rlib/rjitlog/src/rjitlog.h b/rpython/rlib/rjitlog/src/rjitlog.h
--- a/rpython/rlib/rjitlog/src/rjitlog.h
+++ b/rpython/rlib/rjitlog/src/rjitlog.h
@@ -1,15 +1,3 @@
-#define _GNU_SOURCE 1
-
-#ifdef RPYTHON_LL2CTYPES
-   /* only for testing: ll2ctypes sets RPY_EXTERN from the command-line */
-#ifndef RPY_EXTERN
-#define RPY_EXTERN RPY_EXPORTED
-#endif
-#ifdef _WIN32
-#define RPY_EXPORTED __declspec(dllexport)
-#else
-#define RPY_EXPORTED  extern __attribute__((visibility("default")))
-#endif
 
 RPY_EXTERN char * jitlog_init(int);
 RPY_EXTERN void jitlog_try_init_using_env(void);


More information about the pypy-commit mailing list