[pypy-commit] pypy new-jit-log: translation issues
plan_rich
pypy.commits at gmail.com
Mon May 16 14:49:34 EDT 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: new-jit-log
Changeset: r84488:e00846c58ed8
Date: 2016-05-16 20:48 +0200
http://bitbucket.org/pypy/pypy/changeset/e00846c58ed8/
Log: translation issues
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
@@ -2,6 +2,7 @@
from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
from rpython.rlib.jit_hooks import LOOP_RUN_CONTAINER
from rpython.rlib import rgc
+from rpython.jit.metainterp.debug import LOOP_RUN_COUNTERS
from rpython.jit.backend.x86.assembler import Assembler386
from rpython.jit.backend.x86.regalloc import gpr_reg_mgr_cls, xmm_reg_mgr_cls
from rpython.jit.backend.x86.profagent import ProfileAgent
@@ -115,8 +116,8 @@
def get_all_loop_runs(self):
l = lltype.malloc(LOOP_RUN_CONTAINER,
- len(self.assembler.loop_run_counters))
- for i, ll_s in enumerate(self.assembler.loop_run_counters):
+ len(LOOP_RUN_COUNTERS))
+ for i, ll_s in enumerate(LOOP_RUN_COUNTERS):
l[i].type = ll_s.type
l[i].number = ll_s.number
l[i].counter = ll_s.i
diff --git a/rpython/rlib/jitlog.py b/rpython/rlib/jitlog.py
--- a/rpython/rlib/jitlog.py
+++ b/rpython/rlib/jitlog.py
@@ -3,7 +3,7 @@
import struct
import os
-from rpython.rlib.rvmprof.rvmprof import CINTF
+from rpython.rlib.rvmprof.rvmprof import _get_vmprof
from rpython.jit.metainterp import resoperation as resoperations
from rpython.jit.metainterp.resoperation import rop
from rpython.jit.metainterp.history import ConstInt, ConstFloat
@@ -180,7 +180,7 @@
start = 0x11
for mark, in marks:
- globals()['MARK_' + mark] = start
+ globals()['MARK_' + mark] = chr(start)
start += 1
if __name__ == "__main__":
@@ -216,22 +216,22 @@
def assemble_header():
version = JITLOG_VERSION_16BIT_LE
count = len(resoperations.opname)
- content = [version, chr(MARK_RESOP_META),
+ content = [version, MARK_RESOP_META,
encode_le_16bit(count)]
for opnum, opname in resoperations.opname.items():
content.append(encode_le_16bit(opnum))
content.append(encode_str(opname.lower()))
return ''.join(content)
-
def _log_jit_counter(struct):
- if not CINTF.jitlog_enabled():
+ cintf = _get_vmprof().cintf
+ if not cintf.jitlog_enabled():
return
le_addr = encode_le_addr(struct.number)
# not an address (but a number) but it is a machine word
le_count = encode_le_addr(struct.i)
out = le_addr + le_count
- CINTF.jitlog_write_marked(MARK_JITLOG_COUNTER, out, len(out))
+ cintf.jitlog_write_marked(MARK_JITLOG_COUNTER + out, len(out) + 1)
class VMProfJitLogger(object):
def __init__(self, cpu=None):
@@ -239,21 +239,22 @@
self.memo = {}
self.trace_id = -1
self.metainterp_sd = None
+ self.cintf = _get_vmprof().cintf
def setup_once(self):
- if CINTF.jitlog_enabled():
+ if self.cintf.jitlog_enabled():
return
- CINTF.jitlog_try_init_using_env()
- if not CINTF.jitlog_enabled():
+ self.cintf.jitlog_try_init_using_env()
+ if not self.cintf.jitlog_enabled():
return
blob = assemble_header()
- CINTF.jitlog_write_marked(MARK_JITLOG_HEADER, blob, len(blob))
+ self.cintf.jitlog_write_marked(MARK_JITLOG_HEADER + blob, len(blob) + 1)
def finish(self):
- CINTF.jitlog_teardown()
+ self.cintf.jitlog_teardown()
def start_new_trace(self, metainterp_sd, faildescr=None, entry_bridge=False):
- if not CINTF.jitlog_enabled():
+ if not self.cintf.jitlog_enabled():
return
self.metainterp_sd = metainterp_sd
self.trace_id += 1
@@ -272,14 +273,14 @@
def _write_marked(self, mark, line):
if not we_are_translated():
- assert CINTF.jitlog_enabled()
- CINTF.jitlog_write_marked(mark, line, len(line))
+ assert self.cintf.jitlog_enabled()
+ self.cintf.jitlog_write_marked(mark + line, len(line) + 1)
def log_jit_counter(self, struct):
- _log_jit_counter(CINTF, struct)
+ _log_jit_counter(self.cintf, struct)
def log_trace(self, tag, metainterp_sd, mc, memo=None):
- if not CINTF.jitlog_enabled():
+ if not self.cintf.jitlog_enabled():
return EMPTY_TRACE_LOG
assert self.metainterp_sd is not None
assert isinstance(tag, int)
@@ -288,7 +289,7 @@
return LogTrace(tag, memo, self.metainterp_sd, mc, self)
def log_patch_guard(self, descr_number, addr):
- if not CINTF.jitlog_enabled():
+ if not self.cintf.jitlog_enabled():
return
le_descr_number = encode_le_addr(descr_number)
le_addr = encode_le_addr(addr)
diff --git a/rpython/rlib/rvmprof/cintf.py b/rpython/rlib/rvmprof/cintf.py
--- a/rpython/rlib/rvmprof/cintf.py
+++ b/rpython/rlib/rvmprof/cintf.py
@@ -62,7 +62,7 @@
jitlog_try_init_using_env = rffi.llexternal("jitlog_try_init_using_env",
[], lltype.Void, compilation_info=eci)
jitlog_write_marked = rffi.llexternal("jitlog_write_marked",
- [rffi.INT, rffi.CCHARP, rffi.INT],
+ [rffi.CCHARP, rffi.INT],
lltype.Void, compilation_info=eci,
releasegil=False)
jitlog_enabled = rffi.llexternal("jitlog_enabled", [], rffi.INT,
diff --git a/rpython/rlib/rvmprof/rvmprof.py b/rpython/rlib/rvmprof/rvmprof.py
--- a/rpython/rlib/rvmprof/rvmprof.py
+++ b/rpython/rlib/rvmprof/rvmprof.py
@@ -25,8 +25,6 @@
def __str__(self):
return self.msg
-CINTF = cintf.setup()
-
class VMProf(object):
_immutable_fields_ = ['is_enabled?']
@@ -37,6 +35,7 @@
self._gather_all_code_objs = lambda: None
self._cleanup_()
self._code_unique_id = 4
+ self.cintf = cintf.setup()
def _cleanup_(self):
self.is_enabled = False
@@ -113,12 +112,12 @@
if self.is_enabled:
raise VMProfError("vmprof is already enabled")
- p_error = CINTF.vmprof_init(fileno, interval, "pypy")
+ p_error = self.cintf.vmprof_init(fileno, interval, "pypy")
if p_error:
raise VMProfError(rffi.charp2str(p_error))
self._gather_all_code_objs()
- res = CINTF.vmprof_enable()
+ res = self.cintf.vmprof_enable()
if res < 0:
raise VMProfError(os.strerror(rposix.get_saved_errno()))
self.is_enabled = True
@@ -126,16 +125,16 @@
def enable_jitlog(self, fileno):
# initialize the jit log
from rpython.rlib import jitlog as jl
- p_error = CINTF.jitlog_init(fileno)
+ p_error = self.cintf.jitlog_init(fileno)
if p_error:
raise VMProfError(rffi.charp2str(p_error))
blob = jl.assemble_header()
- CINTF.jitlog_write_marked(jl.MARK_JITLOG_HEADER, blob, len(blob))
+ self.cintf.jitlog_write_marked(jl.MARK_JITLOG_HEADER + blob, len(blob) + 1)
def disable_jitlog(self):
from rpython.jit.metainterp.debug import flush_debug_counters
flush_debug_counters()
- CINTF.jitlog_teardown()
+ self.cintf.jitlog_teardown()
def disable(self):
"""Disable vmprof.
@@ -144,7 +143,7 @@
if not self.is_enabled:
raise VMProfError("vmprof is not enabled")
self.is_enabled = False
- res = CINTF.vmprof_disable()
+ res = self.cintf.vmprof_disable()
if res < 0:
raise VMProfError(os.strerror(rposix.get_saved_errno()))
@@ -152,7 +151,7 @@
assert name.count(':') == 3 and len(name) <= MAX_FUNC_NAME, (
"the name must be 'class:func_name:func_line:filename' "
"and at most %d characters; got '%s'" % (MAX_FUNC_NAME, name))
- if CINTF.vmprof_register_virtual_function(name, uid, 500000) < 0:
+ if self.cintf.vmprof_register_virtual_function(name, uid, 500000) < 0:
raise VMProfError("vmprof buffers full! disk full or too slow")
def vmprof_execute_code(name, get_code_fn, result_class=None):
diff --git a/rpython/rlib/rvmprof/src/jitlog_main.h b/rpython/rlib/rvmprof/src/jitlog_main.h
--- a/rpython/rlib/rvmprof/src/jitlog_main.h
+++ b/rpython/rlib/rvmprof/src/jitlog_main.h
@@ -61,12 +61,9 @@
}
RPY_EXTERN
-void jitlog_write_marked(int tag, char * text, int length)
+void jitlog_write_marked(char * text, int length)
{
if (!jitlog_ready) { return; }
- char header[1];
- header[0] = tag;
- write(jitlog_fd, (const char*)&header, 1);
write(jitlog_fd, text, length);
}
diff --git a/rpython/rlib/rvmprof/src/rvmprof.h b/rpython/rlib/rvmprof/src/rvmprof.h
--- a/rpython/rlib/rvmprof/src/rvmprof.h
+++ b/rpython/rlib/rvmprof/src/rvmprof.h
@@ -12,5 +12,5 @@
RPY_EXTERN char * jitlog_init(int);
RPY_EXTERN void jitlog_try_init_using_env(void);
RPY_EXTERN int jitlog_enabled();
-RPY_EXTERN void jitlog_write_marked(int, char*, int);
+RPY_EXTERN void jitlog_write_marked(char*, int);
RPY_EXTERN void jitlog_teardown();
More information about the pypy-commit
mailing list