Valhalla EG 20191204

John Rose john.r.rose at
Wed Dec 4 18:10:55 UTC 2019

Present: John R., Tobi A., Dan H., Remi F., Fred P.
(Permission slip for Simms, who had a school meeting.)
(Brian is off working on his eclair document…)

agenda: discussion of eclairs, invoke modes (virtual vs. interface)
 ref-object vs. val-object (top types for inlines and refs)
 NOT REACHED: templates, java.lang.Class vs. “crass"

Remi: auto-unboxing is the essential feature of eclairs
 => interface can be empty, except for supertypes
Dan: enforce sealing in VM? John: just a translation strategy hack, maybe
(Fred) VMAC can't have a sealed super, since the VMAC can't be named!
migration of java.util.Optional:  auto-bridging? invokevirtual -> interface?
 Dan: what rules/restrictions?  Remi: see if it can be done with all interfaces
Dan: one CP entry needs to potentially support all invocation modes (even errors)
 lots of corner cases in state transitions of resolution and selection
 John: seems to require every methodref CP entry to support all invocation insns
 Remi: can have a list of migrated interfaces and special-case those? (Dan: ugly)
 if you have both invokeinterface and invokespecial you need three words!
John: MH-based linkage to handle invokevirtual -> invokeinterface
 John: wrap a Method* metadata pointer around a MethodHandle managed pointer?
 Dan: J9 allocates method wrappers contiguously, but maybe doable
 more bang for the buck to do autobridging!
 Dan: we had a list of use cases, still up to date?
AI: float a loose proposal
(Dan: looking at replacing with J9 MH impl Lambda Forms;
 dual impls. make it harder to do decompilation for deoptimization and debug)
refobj vs. valobj?
Remi: you only need one; Dan: hard to do generics over negative types
 can have compile-time ref-object type which erases to Object
John: java.lang.Record for inlines?
 Remi: Record should be interface, with special permisison to implement toString
default methods cannot abstract Object methods, and cannot define finals
 example: final toString method on lambda
 example: JUnit5 can write, parameter of test is a factory, factory uses lambdas,
 => printed report has stupid names for lambdas — ouch
 maybe "fat" serializable lambda should have a useful toString method? (“fatten” the interface with toString?)

More information about the valhalla-spec-observers mailing list