Author: Armin Rigo <[email protected]>
Branch: vtune
Changeset: r83581:2ca9d92152f1
Date: 2016-04-08 10:48 +0300
http://bitbucket.org/pypy/pypy/changeset/2ca9d92152f1/
Log: very, very, very minimal vtune binding
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
@@ -164,7 +164,8 @@
self.pop_gcmap(mc) # cancel the push_gcmap(store=True) in the caller
self._pop_all_regs_from_frame(mc, [], self.cpu.supports_floats)
mc.RET()
- self._frame_realloc_slowpath = mc.materialize(self.cpu, [])
+ self._frame_realloc_slowpath = self.materialize(mc, [],
+ "frame_realloc")
def _build_cond_call_slowpath(self, supports_floats, callee_only):
""" This builds a general call slowpath, for whatever call happens to
@@ -200,7 +201,7 @@
self.pop_gcmap(mc) # cancel the push_gcmap(store=True) in the caller
self._pop_all_regs_from_frame(mc, [], supports_floats, callee_only)
mc.RET()
- return mc.materialize(self.cpu, [])
+ return self.materialize(mc, [], "cond_call")
def _build_malloc_slowpath(self, kind):
""" While arriving on slowpath, we have a gcpattern on stack 0.
@@ -287,7 +288,7 @@
mc.ADD_ri(esp.value, WORD)
mc.JMP(imm(self.propagate_exception_path))
#
- rawstart = mc.materialize(self.cpu, [])
+ rawstart = self.materialize(mc, [], "malloc")
return rawstart
def _build_propagate_exception_path(self):
@@ -308,7 +309,7 @@
self.mc.MOV(RawEbpLoc(ofs), imm(propagate_exception_descr))
#
self._call_footer()
- rawstart = self.mc.materialize(self.cpu, [])
+ rawstart = self.materialize(self.mc, [], "propagate_exception")
self.propagate_exception_path = rawstart
self.mc = None
@@ -356,7 +357,7 @@
mc.ADD_ri(esp.value, WORD)
mc.JMP(imm(self.propagate_exception_path))
#
- rawstart = mc.materialize(self.cpu, [])
+ rawstart = self.materialize(mc, [], "stack_check")
self.stack_check_slowpath = rawstart
def _build_wb_slowpath(self, withcards, withfloats=False, for_frame=False):
@@ -457,7 +458,7 @@
mc.LEA_rs(esp.value, 7 * WORD)
mc.RET()
- rawstart = mc.materialize(self.cpu, [])
+ rawstart = self.materialize(mc, [], "write_barrier")
if for_frame:
self.wb_slowpath[4] = rawstart
else:
@@ -790,13 +791,22 @@
clt.asmmemmgr_blocks = []
return clt.asmmemmgr_blocks
+ def materialize(self, mc, allblocks, funcname, gcrootmap=None):
+ from rpython.jit.backend.x86.vtune import rpy_vtune_register
+ size = mc.get_relative_pos()
+ rawstart = mc.materialize(self.cpu, allblocks, gcrootmap=gcrootmap)
+ with rffi.scoped_str2charp("rpyjit." + funcname) as p:
+ rpy_vtune_register(p, rawstart, size)
+ return rawstart
+
def materialize_loop(self, looptoken):
self.datablockwrapper.done() # finish using cpu.asmmemmgr
self.datablockwrapper = None
allblocks = self.get_asmmemmgr_blocks(looptoken)
size = self.mc.get_relative_pos()
- res = self.mc.materialize(self.cpu, allblocks,
- self.cpu.gc_ll_descr.gcrootmap)
+ res = self.materialize(self.mc, allblocks,
+ 'loop%d' % (looptoken.number,),
+ gcrootmap=self.cpu.gc_ll_descr.gcrootmap)
if self.cpu.HAS_CODEMAP:
self.cpu.codemap.register_codemap(
self.codemap_builder.get_final_bytecode(res, size))
@@ -1961,7 +1971,7 @@
# now we return from the complete frame, which starts from
# _call_header_with_stack_check(). The _call_footer below does it.
self._call_footer()
- rawstart = mc.materialize(self.cpu, [])
+ rawstart = self.materialize(mc, [], "failure_recovery")
self.failure_recovery_code[exc + 2 * withfloats] = rawstart
self.mc = None
diff --git a/rpython/jit/backend/x86/vtune.py b/rpython/jit/backend/x86/vtune.py
--- a/rpython/jit/backend/x86/vtune.py
+++ b/rpython/jit/backend/x86/vtune.py
@@ -14,7 +14,7 @@
separate_module_sources=["""
#include "/opt/intel/vtune_amplifier_xe/sdk/src/ittnotify/jitprofiling.c"
-RPY_EXTERN void rpy_vtune_register(char *funcname, Signed addr, Signed length)
+RPY_EXTERN void rpy_vtune_register(char *funcname, Signed addr, Signed size)
{
iJIT_Method_Load_V2 jmethod = {0};
@@ -25,8 +25,8 @@
jmethod.method_id = iJIT_GetNewMethodID();
jmethod.method_name = funcname;
jmethod.method_load_address = (void *)addr;
- jmethod.method_size = length;
- jmethod.module_name = "rpython_jit";
+ jmethod.method_size = size;
+ jmethod.module_name = "rpyjit";
iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V2,
(void*)&jmethod);
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit