New Bytecodes, New Objects
summary
Argues for shrinking JVM bytecode surface by replacing type prefixes with a single V-load/V-store “any” model, prototyping array interfaces parameterized by index and element to let classic and off-heap arrays share APIs, and turning object creation into factory creation instead of new+invokespecial so reified generics and safe deserialization work naturally. Sketches heap activation records for fibers, frozen/value-based objects and larval construction for cache-friendly layouts, and experiments mapping primitive interfaces to CPU vectors (AVX/NEON) for real-world performance.
AI-written summary · about
chapters (20)
- 0:00Intro
- 3:20JVM Vision, 2014
- 4:00What's in a JVM?
- 6:08Clever JVM moves
- 8:22Reality check
- 14:02Scheme fundamental operations
- 17:23Java fundamental operations
- 17:48The Java VM bytecodes
- 25:41Types for Arrays 2.0
- 27:59Example code (from POC work)
- 29:31Simplified user model!
- 30:45Idea: Encapsulate extra-"special" invocations
- 34:04Problem: classes are not modules
- 34:41Problem: unstructured static dependencies
- 37:05Encapsulate "static" initializations?
- 39:18Problem: cache is scarce, memory is far away
- 41:31Problem: side effects are round-the-world trips
- 42:44Constraint: Coloring inside the cache lines
- 43:55Solution: Pointer-free data structures
- 49:52Keeping up with the vectors
related talks
45mMinimal Values Under the Hood
52mValue Objects in Valhalla
51mArrays 2.0 - Opportunities and Challenges
20mCache Me If You Can: Speed Up Your JVM with Project Valhalla
39mMost impacting features of newest JDKs
56mValhalla Nullness Emotion
57mJava Value Types: what is it and why are they important
42mJava, Today and Tomorrow
