Valhalla EG meeting Sept 27 - and Sept 13 minutes
Karen Kinnear
karen.kinnear at oracle.com
Wed Sep 27 13:58:38 UTC 2017
Write-up on preparation relative to selection and nest mate JVMS changes. Feedback welcome.
> On Sep 27, 2017, at 9:50 AM, Karen Kinnear <karen.kinnear at oracle.com> wrote:
>
> 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 <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
>
>
>
>
More information about the valhalla-spec-observers
mailing list