Looks good. Can you send the updates to the valhalla spec experts please? We told them this was coming, and minor changes for clarification.
thanks, Karen > On Jun 19, 2018, at 12:41 AM, David Holmes <david.hol...@oracle.com> wrote: > > Discussions on the CSR request have led to further changes to the > documentation involving nests and the new nest-related method. There are no > semantic changes here just clearer explanations. > > Incremental webrev: > http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v7-incr/ > > (don't worry if you don't see a v6, it didn't really exist). > > Full webrev: > http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.full.v7/ > > Specdiffs updated in place at: > http://cr.openjdk.java.net/~dholmes/8010319-JEP181/specs/ > > Summary of changes: > > - The definition of a nest etc is moved to the class-level javadoc of > java.lang.Class, along with some other edits provided by Alex Buckley to pave > the way for future updates > - The nest-related methods are written in a more clear and consistent way > > Thanks, > David > ----- > > On 12/06/2018 3:16 PM, David Holmes wrote: >> Here is one further minor update from the CSR discussions: >> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v5-incr/src/java.base/share/classes/java/lang/Class.java.cdiff.html >> Thanks, >> David >> On 25/05/2018 3:52 PM, David Holmes wrote: >>> Here are the further minor updates so far in response to all the review >>> comments. >>> >>> Incremental corelibs webrev: >>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v3-incr/ >>> >>> Full corelibs webrev: >>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v3/ >>> >>> Change summary: >>> >>> src/java.base/share/classes/jdk/internal/reflect/Reflection.java >>> - remove inaccurate pseudo-assertion comment >>> >>> test/jdk/java/lang/reflect/Nestmates/SampleNest.java >>> - code cleanup: <> operator >>> >>> test/jdk/java/lang/reflect/Nestmates/TestReflectionAPI.java >>> - code cleanup: streamify duplicate removals >>> >>> test/jdk/java/lang/invoke/PrivateInterfaceCall.java >>> - use consistent @bug number >>> >>> Thanks, >>> David >>> >>> On 22/05/2018 8:15 PM, David Holmes wrote: >>>> Here are the updates so far in response to all the review comments. >>>> >>>> Incremental webrev: >>>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v2-incr/ >>>> >>>> >>>> Full webrev: >>>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v2/ >>>> >>>> Change summary: >>>> >>>> src/java.base/share/classes/java/lang/Class.java >>>> - getNesthost: >>>> - change "any error" -> "any linkage error" as runtime errors will >>>> propagate. [This needs ratifying by EG] >>>> - add clarification that primitive and array classes are not explicitly >>>> members of any nest and so form singleton nests >>>> - add clarification that all nestmates are in the same package >>>> - re-word @return text to exclude the "royal 'we'" >>>> - fix javadoc cross references >>>> >>>> --- >>>> >>>> Moved reflection API tests from >>>> test/hotspot/jtreg/runtime/Nestmates/reflectionAPI/ to >>>> test/jdk/java/lang/reflect/Nestmates/ >>>> >>>> --- >>>> >>>> java/lang/reflect/Nestmates/TestReflectionAPI.java >>>> >>>> Run tests twice to show that failure reasons remain the same. >>>> >>>> --- >>>> >>>> test/jdk/jdk/lambda/vm/InterfaceAccessFlagsTest.java >>>> >>>> Disable test via annotation rather than commenting out. >>>> >>>> --- >>>> >>>> src/java.base/share/classes/jdk/internal/reflect/Reflection.java >>>> >>>> - Fix indent for nestmate access check. >>>> - Remove unnecessary local variable >>>> >>>> --- >>>> >>>> src/java.base/share/classes/sun/invoke/util/VerifyAccess.java >>>> >>>> - Replace myassert with proper assert >>>> >>>> --- >>>> >>>> Thanks, >>>> David >>>> >>>> On 15/05/2018 10:52 AM, David Holmes wrote: >>>>> This review is being spread across four groups: langtools, core-libs, >>>>> hotspot and serviceability. This is the specific review thread for >>>>> core-libs - webrev: >>>>> >>>>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.corelibs.v1/ >>>>> >>>>> See below for full details - including annotated full webrev guiding the >>>>> review. >>>>> >>>>> The intent is to have JEP-181 targeted and integrated by the end of this >>>>> month. >>>>> >>>>> Thanks, >>>>> David >>>>> ----- >>>>> >>>>> The nestmates project (JEP-181) introduces new classfile attributes to >>>>> identify classes and interfaces in the same nest, so that the VM can >>>>> perform access control based on those attributes and so allow direct >>>>> private access between nestmates without requiring javac to generate >>>>> synthetic accessor methods. These access control changes also extend to >>>>> core reflection and the MethodHandle.Lookup contexts. >>>>> >>>>> Direct private calls between nestmates requires a more general calling >>>>> context than is permitted by invokespecial, and so the JVMS is updated to >>>>> allow, and javac updated to use, invokevirtual and invokeinterface for >>>>> private class and interface method calls respectively. These changed >>>>> semantics also extend to MethodHandle findXXX operations. >>>>> >>>>> At this time we are only concerned with static nest definitions, which >>>>> map to a top-level class/interface as the nest-host and all its nested >>>>> types as nest-members. >>>>> >>>>> Please see the JEP for further details. >>>>> >>>>> JEP: https://bugs.openjdk.java.net/browse/JDK-8046171 >>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8010319 >>>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8197445 >>>>> >>>>> All of the specification changes have been previously been worked out by >>>>> the Valhalla Project Expert Group, and the implementation reviewed by the >>>>> various contributors and discussed on the valhalla-dev mailing list. >>>>> >>>>> Acknowledgments and contributions: Alex Buckley, Maurizio Cimadamore, >>>>> Mandy Chung, Tobias Hartmann, Vladimir Ivanov, Karen Kinnear, Vladimir >>>>> Kozlov, John Rose, Dan Smith, Serguei Spitsyn, Kumar Srinivasan >>>>> >>>>> Master webrev of all changes: >>>>> >>>>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/webrev.full.v1/ >>>>> >>>>> Annotated master webrev index: >>>>> >>>>> http://cr.openjdk.java.net/~dholmes/8010319-JEP181/jep181-webrev.html >>>>> >>>>> Performance: this is expected to be performance neutral in a general >>>>> sense. Benchmarking and performance runs are about to start. >>>>> >>>>> Testing Discussion: >>>>> ------------------ >>>>> >>>>> The testing for nestmates can be broken into four main groups: >>>>> >>>>> - New tests specifically related to nestmates and currently in the >>>>> runtime/Nestmates directory >>>>> >>>>> - New tests to complement existing tests by adding in testcases not >>>>> previously expressible. >>>>> - For example java/lang/invoke/SpecialInterfaceCall.java tests use of >>>>> invokespecial for private interface methods and performing receiver >>>>> typechecks, so we add java/lang/invoke/PrivateInterfaceCall.java to do >>>>> similar tests for invokeinterface. >>>>> >>>>> - New JVM TI tests to verify the spec changes related to nest attributes. >>>>> >>>>> - Existing tests significantly affected by the nestmates changes, >>>>> primarily: >>>>> - runtime/SelectionResolution >>>>> >>>>> In most cases the nestmate changes makes certain invocations that >>>>> were illegal, legal (e.g. not requiring invokespecial to invoke private >>>>> interface methods; allowing access to private members via >>>>> reflection/Methodhandles that were previously not allowed). >>>>> >>>>> - Existing tests incidentally affected by the nestmate changes >>>>> >>>>> This includes tests of things utilising class >>>>> redefinition/retransformation to alter nested types but which >>>>> unintentionally alter nest relationships (which is not permitted). >>>>> >>>>> There are still a number of tests problem-listed with issues filed >>>>> against them to have them adapted to work with nestmates. Some of these >>>>> are intended to be addressed in the short-term, while some (such as the >>>>> runtime/SelectionResolution test changes) may not eventuate. >>>>> >>>>> - https://bugs.openjdk.java.net/browse/JDK-8203033 >>>>> - https://bugs.openjdk.java.net/browse/JDK-8199450 >>>>> - https://bugs.openjdk.java.net/browse/JDK-8196855 >>>>> - https://bugs.openjdk.java.net/browse/JDK-8194857 >>>>> - https://bugs.openjdk.java.net/browse/JDK-8187655 >>>>> >>>>> There is also further test work still to be completed (the JNI and JDI >>>>> invocation tests): >>>>> - https://bugs.openjdk.java.net/browse/JDK-8191117 >>>>> which will continue in parallel with the main RFR. >>>>> >>>>> Pre-integration Testing: >>>>> - General: >>>>> - Mach5: hs/jdk tier1,2 >>>>> - Mach5: hs-nightly (tiers 1 -3) >>>>> - Targetted >>>>> - nashorn (for asm changes) >>>>> - hotspot: runtime/* >>>>> serviceability/* >>>>> compiler/* >>>>> vmTestbase/* >>>>> - jdk: java/lang/invoke/* >>>>> java/lang/reflect/* >>>>> java/lang/instrument/* >>>>> java/lang/Class/* >>>>> java/lang/management/* >>>>> - langtools: tools/javac >>>>> tools/javap >>>>>