Overview
Save Big on Coursera Plus. 7,000+ courses at $160 off. Limited Time Only!
Explore the intricacies of final fields in Java and their optimization in this 37-minute talk by Anna Thomas. Dive deep into the implementation of truly final dependency tracking and invalidation in the Zing JVM, as well as the optimizations performed within the Falcon LLVM-based JIT compiler. Learn about the challenges of implementing final field optimizations, including constant folding, and understand the differences between static and instance final fields. Discover the callback mechanism in Falcon that allows querying the VM about field finality. Examine specific examples demonstrating the benefits of truly final optimizations and gain insights into planned improvements for effectively final fields. Gain a comprehensive understanding of final semantics according to JLS and JVM specs, dependency tracking, and the key extensions made to LLVM for final field optimizations.
Syllabus
Intro
FINAL SEMANTICS ACCORDING TO JLS
FINAL SEMANTICS ACCORDING TO JVM SPEC
STATIC FINAL FIELDS
INSTANCE FINAL FIELDS
FINAL FIELD MODIFICATION
IDENTIFYING FINALITY
DEPENDENCY TRACKING
RECORDING DEPENDENCIES
DEPENDENCY INVALIDATION
FALCON JIT COMPILER
LLVM JIT COMPILER
KEY EXTENSIONS TO LLVM
FINAL FIELD OPTIMIZATIONS
CONSTANT FOLDING VM CALLBACK
CONSTANT REGION
UNKNOWN CALL
PERFORMANCE SUMMARY
WHY EFFECTIVELY FINAL
HANDLING EFFECTIVELY FINAL
CONCLUSION
Taught by
Java