AgentSkillsCN

tracing-compilation-events

记录每一次编译事件的时间、编译层级(T1/T2)、编译成功与否,以及导致失效的原因。借助该工具,您可以验证热点代码是否正常编译,诊断编译失败或编译中断的问题,追踪重新编译的周期,并深入理解分层编译的行为特征。它能清晰展现编译发生的时机。结合性能警告的检测功能,还能帮助您进一步探究编译失败的根本原因。

SKILL.md
--- frontmatter
name: tracing-compilation-events
description: Logs every compilation event with timing, tier (T1/T2), success/failure, and invalidation reasons. Use to verify hot code is compiling, diagnose compilation failures/bailouts, track recompilation cycles, and understand tiered compilation behavior. Shows WHEN compilation happens. Combine with detecting-performance-warnings to understand WHY compilation fails.

Tracing Compilation Events

Logs every compilation event with timing, tier levels, success/failure status, and invalidation reasons. Essential for understanding what the compiler is doing.

When to Use This Skill

  • Verify hot code is compiling
  • Diagnose compilation failures and bailouts
  • Track recompilation cycles
  • Understand tiered compilation behavior

Quick Start

bash
# Basic compilation trace
<launcher> --experimental-options \
  --engine.TraceCompilation <program>

# With timing details
<launcher> --experimental-options \
  --engine.TraceCompilation \
  --engine.TraceCompilationDetails <program>

# Combined with performance warnings (RECOMMENDED)
<launcher> --experimental-options \
  --engine.TraceCompilation \
  --compiler.TracePerformanceWarnings=all \
  <program> 2>&1 | tee compilation.log

⚠️ REQUIRED: Fermi Verification (Every Tool Invocation)

Before running:

  • Pre-calculate: Expected # of compilations (5-20 for typical benchmark)
  • Smoke test: <launcher> --experimental-options --engine.TraceCompilation -c 'print 1;' → Verify compilation events appear

After running:

  • Validate: Expected functions appear in trace? YES / NO
  • If NO: STOP - Check if functions are hot enough (increase iterations)
  • Save output: tool-outputs/trace-compilation-[benchmark].txt

Gate: All boxes checked? → Proceed to analysis

Key Options

OptionDescription
--engine.TraceCompilationBasic compilation events
--engine.TraceCompilationDetailsDetailed timing
--engine.TraceCompilationPolymorphismPolymorphic specializations
--engine.CompileOnly=<name>Filter to specific function

Understanding Output

Successful Compilation

code
[engine] opt done    root sieve  <tier1>   |Time:    45ms
[engine] opt done    root sieve  <tier2>   |Time:   234ms

Compilation Failure

code
[engine] opt failed  root sieve  |Reason: Bailout

Invalidation

code
[engine] opt deopt   root sieve  |Reason: Assumption invalidated

Event Types

EventMeaningAction
opt doneCompilation succeeded ✅Good
opt failedCompilation failed ❌Investigate reason
opt deoptInvalidated ⚠️Check for deoptimization loops
opt queuedWaiting for compilationNormal

Tier Levels

TierDescriptionExpected
tier1First-tier compilationFast, basic optimizations
tier2Full optimizationSlower, maximum optimization

Problem Patterns

Pattern 1: No Compilation Events

Symptom: Function never appears in trace Cause: Not hot enough, or compilation disabled Fix: Check thresholds, verify function is called enough

Pattern 2: Repeated Deopt Cycles

code
opt done    myFunc  <tier1>
opt deopt   myFunc
opt done    myFunc  <tier1>
opt deopt   myFunc
...repeating...

Cause: Type instability or deoptimization loop Fix: Use detecting-deoptimizations skill

Pattern 3: Compilation Bailout

code
opt failed  myFunc  |Reason: Bailout

Cause: Code too complex or unsupported pattern Fix: Use detecting-performance-warnings to find barriers

Integration with Other Skills

FindingNext Skill
No compilationsCheck thresholds
Deopt cyclesdetecting-deoptimizations
Bailoutsdetecting-performance-warnings
Still unclearanalyzing-compiler-graphs

Related Skills

  • profiling-with-cpu-sampler - Identify hot functions first
  • detecting-performance-warnings - Find barriers
  • detecting-deoptimizations - Track deoptimizations
  • tracing-inlining-decisions - Inlining behavior

Reference

bash
<launcher> --help:engine | grep -i trace