Interpreter-guided Differential JIT Compiler Unit Testing
summary
Interpreter-guided concolic testing uses the VM interpreter as executable semantics to auto-generate unit tests for JIT-compiled code, modeling frames/objects/classes symbolically and lowering paths to SAT-solver constraints; applied to the Pharo VM (255 bytecodes, ~340 native methods, 146 IR ops) it auto-generates 5,000 unit tests in ~5 minutes, runs them in ~10 seconds, and uncovers 500 differences traceable to 91 root causes (segfaults, missing type-predictions, behavioral bugs).
AI-written summary · about
chapters (13)
- 0:00Start
- 0:16Virtual Machine Execution Engine
- 1:29How can we automatically test VMs?
- 2:11Black Box Testing + Fuzzing
- 2:55Interpreter-Guided Automatic JIT Compiler Unit Testing
- 3:55Interpreter are Executable Semantics Pharo VM Example
- 5:28Interpreter VS Compiled Code Pharo VM Example
- 6:11Implementation View
- 7:13Concolic Meta-Interpretation Model
- 7:35Experimental Context: The Pharo VM
- 8:47Evaluation
- 9:33Analysis of Differences through Manual Inspection
- 10:07Practical and Cheap
related talks
39mRethinking Unit Testing: Automating the Generation of Java
09mDiff-based interactive compiler debugging and testing
50mCode Coverage Instrumentation
14mFinding Compiler Bugs through Cross-Language Code Generator and Differential Testing
40mCatching More Bugs with Fewer False Alarms
27mFaJITa: Verifying Optimizations on Just-In-Time Programs
46mJava, Code Coverage & Their Best Friend: Bytecode
46mCode coverage MythBusters
