[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