Reminder - meeting TODAY, Sept 27 9am PT/noon ET/ dial-in: https://oracle.zoom.us/j/5249803466 <https://oracle.zoom.us/j/5249803466>
AI: Karen send Dan H example in which a BSM can be used for both indy and condy AI: Dan Smith version of Condy JVMS changes (not an appendix AI: nestmates JVMS comments: http://cr.openjdk.java.net/~dlsmith/private-access.html Remi proposal: rename attribute to “NestHost" AI: Karen: write-up preparation relative to selection AI: Karen - ask Paul progress on VarHandles and atomicity relative to Value Types Question for EG: Doug, Charlie - does it work for you if we provide MVT as Early Access Binaries instead of part of 18.3? Attendees: Remi, Frederic, Brian, Dan H, Karen 1. JDK version numbers relative to class file versions Would be useful to find a way to document the mapping for users 2. Delivery vehicles Discussion of making MVT available via an Early Access Binary vs. part of 18.3 experimentally pros and cons: 1. late in the cycle to be adding to 18.3, specifically relative to JVMS/JCP process 2. with EA binary we can make this available sooner than 18.3, and update it more often in response to requests and prototype progress 3. EA is less cost to productize and support 4. - the risk of not being in 18.3 is that we will get fewer adopters - the hoped for benefit of an EA is that we will get more of the advanced early adopters who can give us valuable feedback and use cases 5. No 18.3 features are dependent on MVT (note: pattern matching is not dependent on MVT, and not targeted for 18.3) current goal for features: Local Variable Type Inference and Condy (not experimental) in 18.3 goal: nestmates early in the 18.9 cycle to shake it out (meeting attendees ok with delaying nestmates) 4. As an EA binary, we are ok with having a javac with MVT support behind a flag 5. Benefit of 18.3 experimental: 2nd level customer, i.e. user of Scala or JRuby could enable this with a flag - the theory is that those trying the experimental compiler would be able to download an experimental JDK binary to try it on 6. Time to get an experimental feature through JCP process - into experimental appendix with disclaimers - Brian working with JCP to reduce lag time, see JSR 383 for 18.3 7. IBM can find a way to do external binaries - both IBM and Hotspot are working on internal processes to make this happen - we will keep in contact on the target date - not expected to be exactly in sync - Hotspot expect ~ 4-6 weeks from Sept 13 3. ConstantDynamic concerns: 1. BootstrapCallInfo - i.e. lazy resolution - IBM less confident (Hotspot agree) Remi wants to continue the discussion There are ways to handle > 251 arguments with varargs, rather than requiring BSCI channeling John: one of the goals of lazy resolution is to allow only evaluating a subset of constants that may succeed 2. Question - can a condy and an indy share the same BSM? In practice yes - if the BSM specifies a java.lang.Object for the MethodType returned, then it can return a java.lang.Class for the condy and a CallSite for the invoke dynamic. The verifier does not check the BSM MethodType, deliberately. The verifier does minimal checking for BSMs deliberately, according to Remi - this provides requested flexibility for dynamic languages 3. Remi - we want condy without java.lang.invoke, and we want it to work during vm bootstrapping. 4. Nestmates 1. Question: how do we handle invokeinterface for methods in java.lang.Object? AI: Karen to email details of invocation including corner cases - relative to the specification changes 2. Lazy loading - what should reflection do? Request from last meeting to lazily load the nest top so as to not break current nested class examples that work today (e.g. someone deletes the outer class) Proposal: get list of Nestmates: model on getAnnotations - if you can’t find a nest member, skip it, do not throw an exception [ed. note: what if you can not find the nest top?] check if two types are nestmates: throw LinkageError if nest top can not be found 3. Attribute renaming: Proposal “NestHost” from last time -> tell Dan Smith 5. MVT 1. Remi: OutOfMemoryError if 15 million element array of ValueTypes If fail due to OOME, could consider falling back to allocating in the heap, this would be slower Remi: prefer OOME to not performant note: choosing to flatten is an implementation detail which could be architecture dependent, depend on atomicity requirements, etc. - no user control 2. Atomic operations Karen: request changing VarHandles to require declaration site atomicity and consistency across byte code and VarHandle access relative to non-tearing Remi - less than 64 bits no need to declare AI: Karen ask Paul to work with Doug on this Remi: please do not reuse volatile, do not use atomic - want e.g. untearable optional flattening work in progress - should be there in a couple of weeks