diff --git a/doc/jit/yjit.md b/doc/jit/yjit.md index c55b42cbdadc2a..d91877c30e8222 100644 --- a/doc/jit/yjit.md +++ b/doc/jit/yjit.md @@ -525,7 +525,7 @@ PERF=record ruby --yjit-perf=codegen -Iharness-perf benchmarks/lobsters/benchmar # Aggregate results perf script > /tmp/perf.txt -../ruby/misc/yjit_perf.py /tmp/perf.txt +../ruby/misc/jit_perf.py /tmp/perf.txt ``` #### Building perf with Python support @@ -543,5 +543,5 @@ make make install # Aggregate results -perf script -s ../ruby/misc/yjit_perf.py +perf script -s ../ruby/misc/jit_perf.py ``` diff --git a/misc/yjit_perf.py b/misc/jit_perf.py similarity index 91% rename from misc/yjit_perf.py rename to misc/jit_perf.py index 61434e5eb4d3e3..37a63f5329e17f 100755 --- a/misc/yjit_perf.py +++ b/misc/jit_perf.py @@ -22,10 +22,11 @@ def categorize_symbol(dso, symbol): return '[sha256]' elif symbol.startswith('[JIT] gen_send'): return '[JIT send]' - elif symbol.startswith('[JIT]'): + # TODO: Stop using zjit:: as the prefix for JIT code. Rust modules and JIT code should use different namespaces. + elif symbol.startswith('[JIT]') or (symbol.startswith('zjit::') and '@') or symbol == 'zjit::ZJIT entry trampoline': return '[JIT code]' - elif '::' in symbol or symbol.startswith('yjit::') or symbol.startswith('_ZN4yjit'): - return '[YJIT compile]' + elif '::' in symbol or symbol.startswith('_ZN4yjit') or symbol.startswith('_ZN4zjit'): + return '[JIT compile]' elif symbol.startswith('rb_vm_') or symbol.startswith('vm_') or symbol in { "rb_call0", "callable_method_entry_or_negative", "invoke_block_from_c_bh", "rb_funcallv_scope", "setup_parameters_complex", "rb_yield"}: @@ -108,7 +109,7 @@ def trace_end(): row = line.split(maxsplit=6) period = row[3] # "1212775" - symbol, dso = row[6].split(" (") # "[JIT] getlocal_WC_0+0x0", "/tmp/perf-78207.map)\n" + symbol, dso = row[6].rsplit(" (", 1) # "[JIT] getlocal_WC_0+0x0", "/tmp/perf-78207.map)\n" symbol = symbol.split("+")[0] # "[JIT] getlocal_WC_0" dso = dso.split(")")[0] # "/tmp/perf-78207.map"