Author: Richard Plangger <[email protected]>
Branch: new-jit-log
Changeset: r83218:8022b7c95b47
Date: 2016-03-21 08:59 +0100
http://bitbucket.org/pypy/pypy/changeset/8022b7c95b47/
Log: class (const) attributes moved to outer scope
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
@@ -10,6 +10,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.jit.metainterp.jitlog import MARK_TRACE_ASM
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
@@ -532,8 +533,8 @@
looptoken._x86_ops_offset = ops_offset
looptoken._ll_function_addr = rawstart
if logger:
- logger.log_trace(logger.MARK_TRACE_ASM, inputargs, operations,
- ops_offset=ops_offset, self.mc)
+ logger.log_trace(MARK_TRACE_ASM, inputargs, operations,
+ ops_offset=ops_offset, mc=self.mc)
self.fixup_target_tokens(rawstart)
self.teardown()
@@ -587,8 +588,9 @@
frame_depth = max(self.current_clt.frame_info.jfi_frame_depth,
frame_depth_no_fixed_size + JITFRAME_FIXED_SIZE)
if logger:
- logger.log_trace(logger.MARK_TRACE_ASM, inputargs, operations,
- faildescr=faildescr, ops_offset=ops_offset)
+ logger.log_trace(MARK_TRACE_ASM, inputargs, operations,
+ faildescr=faildescr, ops_offset=ops_offset,
+ mc=self.mc)
self.fixup_target_tokens(rawstart)
self.update_frame_depth(frame_depth)
self.teardown()
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
@@ -17,6 +17,7 @@
from rpython.jit.metainterp.optimize import InvalidLoop
from rpython.jit.metainterp.resume import (PENDINGFIELDSP,
ResumeDataDirectReader, AccumInfo)
+from rpython.jit.metainterp.jitlog import MARK_TRACE_OPT
from rpython.jit.metainterp.resumecode import NUMBERING
from rpython.jit.codewriter import heaptracker, longlong
@@ -480,8 +481,7 @@
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)
+ metainterp_sd.jitlog.log_trace(MARK_TRACE_OPT, inputargs, operations)
# TODO remove old
metainterp_sd.logger_ops.log_loop(inputargs, operations, -2,
'compiling', None, name, memo)
@@ -493,8 +493,8 @@
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)
+ metainterp_sd.jitlog.log_trace(MARK_TRACE_OPT, inputargs, operations,
+ faildescr=faildescr)
# TODO remove old
metainterp_sd.logger_ops.log_bridge(inputargs, operations, "compiling",
memo=memo)
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
@@ -1,42 +1,26 @@
from rpython.rlib.rvmprof.rvmprof import cintf
from rpython.jit.metainterp import resoperation as resoperations
-import struct
+from struct import pack
-class JitLogMarshall(object):
- def encode(self, op):
- str_args = [arg.repr_short(arg._repr_memo) for arg in op.getarglist()]
- descr = op.getdescr()
- line = struct.pack('<i', op.getopnum()) + ','.join(str_args)
- if descr:
- line += "|" + str(descr)
- return VMProfJitLogger.MARK_RESOP_DESCR, line
- else:
- return VMProfJitLogger.MARK_RESOP, line
+MARK_INPUT_ARGS = 0x10
+MARK_RESOP_META = 0x11
+MARK_RESOP = 0x12
+MARK_RESOP_DESCR = 0x13
+MARK_ASM_ADDR = 0x14
+MARK_ASM = 0x15
- def decode(self, data):
- opnum = struct.unpack('<i', data[:4])
- # TODO
+# 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
-class VMProfJitLogger(JitLogMarshall):
+# the machine code was patched (e.g. guard)
+MARK_ASM_PATCH = 0x19
-
- MARK_INPUT_ARGS = 0x10
- MARK_RESOP_META = 0x11
- MARK_RESOP = 0x12
- MARK_RESOP_DESCR = 0x13
- MARK_ASM_ADDR = 0x14
- MARK_ASM = 0x15
-
- # 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 machine code was patched (e.g. guard)
- MARK_ASM_PATCH = 0x19
+class VMProfJitLogger(object):
def __init__(self):
self.cintf = cintf.setup()
@@ -46,9 +30,9 @@
if self.cintf.jitlog_filter(0x0):
return
count = len(resoperations.opname)
- mark = VMProfJitLogger.MARK_RESOP_META
+ mark = MARK_RESOP_META
for opnum, opname in resoperations.opname.items():
- line = struct.pack("<h", opnum) + opname.lower()
+ line = pack("<h", opnum) + opname.lower()
self.write_marked(mark, line)
def teardown(self):
@@ -57,6 +41,16 @@
def write_marked(self, mark, line):
self.cintf.jitlog_write_marked(mark, line, len(line))
+ def encode(self, op):
+ str_args = [arg.repr_short(arg._repr_memo) for arg in op.getarglist()]
+ descr = op.getdescr()
+ line = pack('<i', op.getopnum()) + ','.join(str_args)
+ if descr:
+ line += "|" + str(descr)
+ return MARK_RESOP_DESCR, line
+ else:
+ return MARK_RESOP, line
+
def log_trace(self, tag, args, ops,
faildescr=None, ops_offset={}, mc=None):
# this is a mixture of binary and text!
@@ -72,15 +66,15 @@
# input args
str_args = [arg.repr_short(arg._repr_memo) for arg in args]
- self.write_marked(self.MARK_INPUT_ARGS, ','.join(str_args))
+ self.write_marked(MARK_INPUT_ARGS, ','.join(str_args))
# assembler address (to not duplicate it in write_code_dump)
if mc is not None:
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)
+ lendian_addrs = pack('<LL', absaddr, absaddr + rel)
+ self.write_marked(MARK_ASM_ADDR, lendian_addrs)
for i,op in enumerate(ops):
mark, line = self.encode(op)
@@ -119,6 +113,6 @@
end_offset = ops_offset[op2]
dump = mc.copy_core_dump(mc.absolute_addr(), start_offset)
- self.write_marked(self.MARK_ASM, dump)
+ self.write_marked(MARK_ASM, dump)
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.jit.metainterp.jitlog import VMProfJitLogger
+from rpython.jit.metainterp.jitlog import MARK_TRACE
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,8 +55,8 @@
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.jitlog.log_trace(MARK_TRACE, inputargs,
+ compile_data.operations)
#
metainterp_sd.logger_noopt.log_loop(inputargs,
compile_data.operations,
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit