Odin: On-Demand Instrumentation with On-the-Fly Recompilation
summary
Odin implements on-demand instrumentation plus on-the-fly recompilation over compiler IR, partitioning programs into optimization-aware fragments and rebuilding only affected fragments. It compiles a temporary IR, applies probes, regenerates optimized machine code, and hot-links a new binary. Evaluation reports shaving 98% of overall recompilation time, reducing runtime instrumentation overhead to ~1% (cost-coverage collection at ~3% overhead), and being three times faster than zenkov and 17× better than doctor cough.
AI-written summary · about
chapters (17)
- 0:00Intro
- 0:15Fuzzing: Basic Idea
- 0:42Instrumentation and Fuzzing
- 1:25Overhead of Instrumentation Probes
- 1:40Missed Optimizations
- 2:34Degraded Correctness
- 3:04Limited Runtime Patching
- 3:49Summary of Approaches
- 5:40Breakdown of Compilation Const
- 6:29ODIN: System Overview
- 8:19Naïve Partition: One Function Per Fragment
- 9:28Symbol Classification
- 10:13Fragment Construction
- 10:59Scheduling Recompilation
- 12:26Evaluation: Baselines
- 12:37Evaluation (1/3): Recompilation Cost
- 12:54Evaluation (2/3): Code Quality
related talks
26mAn Analysis of Compiled Code Reusability in Dynamic Compilation
19mOptimization-Aware Compiler-Level Event Profiling
46mAhead Of Time (AOT) Internals
21mDiagnosing Compiler Performance by Comparing Optimization Decisions
23mFast and Compact: Reducing Size of AOT-Compiled Java Code Without Sacrificing Performance
47mHow an Optimizing Compiler Works
42mUnderstanding the Kotlin to Dalvik bytecode translation
23mPoseidon: Profile-Guided Numerical Rewriting at Full-Application Scale
