Truly Final Fields
summary
Covers making Java instance final fields truly trusted for optimization in the Zing JVM: tracking finality dependencies, emitting and later invalidating JIT code when those dependencies break, and integrating this into Falcon (an LLVM-based JIT). Describes Falcon’s callback mechanism for querying field finality, concrete optimizations enabled by treating fields as final (e.g., constant folding), and planned extensions to support effectively-final fields.
AI-written summary · about
chapters (21)
- 0:00Intro
- 3:00FINAL SEMANTICS ACCORDING TO JLS
- 4:17FINAL SEMANTICS ACCORDING TO JVM SPEC
- 5:35STATIC FINAL FIELDS
- 6:20INSTANCE FINAL FIELDS
- 7:40FINAL FIELD MODIFICATION
- 9:35IDENTIFYING FINALITY
- 10:38DEPENDENCY TRACKING
- 12:53RECORDING DEPENDENCIES
- 13:15DEPENDENCY INVALIDATION
- 14:11FALCON JIT COMPILER
- 15:27LLVM JIT COMPILER
- 16:45KEY EXTENSIONS TO LLVM
- 17:19FINAL FIELD OPTIMIZATIONS
- 19:53CONSTANT FOLDING VM CALLBACK
- 21:03CONSTANT REGION
- 26:38UNKNOWN CALL
- 33:28PERFORMANCE SUMMARY
- 34:42WHY EFFECTIVELY FINAL
- 35:37HANDLING EFFECTIVELY FINAL
- 36:35CONCLUSION
related talks
46mFrom Final to Immutable: The not-so-final word on `final`
44mFinal - In Search of Performance
06mLightning Talk: A Quick Intro to Falcon
18mFinalizers - The not so good, the bad and the ugly
44mA New Model for Java Object Initialization
44mJava at Speed: Building a Better JVM.
35mJava at Speed: Building a Better JVM
22mJava Performance Update
