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?)
