Shows inlining decisions during compilation with call tree and reasons for inline/don't-inline. Use to verify critical calls are inlined, understand why inlining failed (too large, recursive, boundary), and optimize method sizes. Good inlining = better compilation. Recursive functions show 'not inlined' - expected behavior for Bytecode DSL limitation. (project)
Traces method inlining decisions during compilation to optimize performance.
/plugin marketplace add antonykamp/cc-truffle-performance-plugin/plugin install antonykamp-cc-truffle-performance-plugin@antonykamp/cc-truffle-performance-pluginThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Shows inlining decisions during compilation with call tree structure and reasons. Essential for understanding why calls aren't being optimized.
# Basic inlining trace
<launcher> --experimental-options \
--engine.TraceInlining <program>
# Combined with compilation trace (RECOMMENDED)
<launcher> --experimental-options \
--engine.TraceInlining \
--engine.TraceCompilation \
<program> 2>&1 | tee inlining.log
# Focus on specific function
<launcher> --experimental-options \
--engine.TraceInlining \
--engine.CompileOnly="*hotFunction*" \
<program>
Before running:
<launcher> --experimental-options --engine.TraceInlining -c 'print 1;' → Verify inlining decisions appearAfter running:
tool-outputs/trace-inlining-[benchmark].txtGate: All boxes checked? → Proceed to analysis
| Option | Description |
|---|---|
--engine.TraceInlining | Show inlining decisions |
--engine.TraceInliningDetails | Detailed reasoning |
--engine.CompileOnly=<name> | Filter to specific function |
[engine] Inlined: hasConflict
Reason: trivialSize
[engine] Not inlined: recursiveFunc
Reason: RecursiveInlining
[engine] Not inlined: bigFunction
Reason: budgetExhausted
| Reason | Meaning |
|---|---|
trivialSize | Small enough to inline |
forced | @Specialization forced inline |
relevant | Deemed performance-relevant |
| Reason | Meaning | Fix |
|---|---|---|
RecursiveInlining | Recursive call | Expected for recursion |
budgetExhausted | Inlining budget used | Reduce method sizes |
TooLarge | Method too big | Split method |
TruffleBoundary | Marked as boundary | Review boundary usage |
notRelevant | Not performance-critical | May be OK |
Symptom: Critical function not inlined due to budget Fix: Reduce sizes of other methods, or increase budget
Symptom: Hot call not inlined due to TruffleBoundary Fix: Remove boundary if not needed, or restructure
Symptom: Recursive function shows "RecursiveInlining" Expected: Normal for recursive algorithms (Bytecode DSL limitation)
| Finding | Next Skill |
|---|---|
| Budget issues | Refactor code, reduce sizes |
| Boundaries | Review TruffleBoundary usage |
| Still slow | profiling-with-cpu-sampler |
profiling-with-cpu-sampler - Identify hot functions firsttracing-compilation-events - Overall compilation statusdetecting-performance-warnings - Find barriersfetching-truffle-documentation - API reference<launcher> --help:engine | grep -i inlin
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.