hg: valhalla/valhalla: Initial prototype of Lookup::defineClass to define a dynamic nestmate.

Mandy Chung mandy.chung at oracle.com
Tue Oct 23 21:44:43 UTC 2018


That's great.

There is a couple of known issues that Lois is working on
w.r.t. hiding a strong hidden class and classdata.  I pushed
this with a few test failures as this will make it easier
for Lois and David to continue the development.

Mandy

On 10/23/18 1:28 PM, Remi Forax wrote:
> I'm currently building that branch :)
>
> Rémi
>
> ----- Mail original -----
>> De: "mandy chung" <mandy.chung at oracle.com>
>> À: "valhalla-dev" <valhalla-dev at openjdk.java.net>
>> Envoyé: Mardi 23 Octobre 2018 22:06:27
>> Objet: hg: valhalla/valhalla: Initial prototype of Lookup::defineClass to define a dynamic nestmate.
>> Changeset: 55aafa38f559
>> Author:    mchung
>> Date:      2018-10-23 13:05 -0700
>> URL:       http://hg.openjdk.java.net/valhalla/valhalla/rev/55aafa38f559
>>
>> Initial prototype of Lookup::defineClass to define a dynamic nestmate.
>> javac is updated not to generate the bridge method for lambda.
>> Also experiment to replace the use of Unsafe VM anonmyous class
>> and constant pool patching.  Unsafe::defineAnonymousClass supports
>> the following properties:
>>
>> 1. Hidden / non-findable / unregister class
>>    The class is not registered in the system dictionary
>>    Should a non-findable class forbid any reference to this_class?
>>
>> 2. Weak class
>>    The class has a different life cycle as its defining class loader.
>>    i.e. it may be reclaimed when the class loader is alive
>>
>> 3. Access to VM annotations
>>    VM annotations are internal.
>>
>> 4. Live constants
>>    Explore the class data idea to replace the constant pool patching
>>    mechanism.
>>
>> ! make/hotspot/symbols/symbols-unix
>> ! src/hotspot/share/aot/aotCodeHeap.cpp
>> ! src/hotspot/share/aot/aotLoader.cpp
>> ! src/hotspot/share/ci/ciField.cpp
>> ! src/hotspot/share/ci/ciInstanceKlass.cpp
>> ! src/hotspot/share/ci/ciInstanceKlass.hpp
>> ! src/hotspot/share/classfile/classFileParser.cpp
>> ! src/hotspot/share/classfile/classFileParser.hpp
>> ! src/hotspot/share/classfile/classLoader.cpp
>> ! src/hotspot/share/classfile/classLoaderData.cpp
>> ! src/hotspot/share/classfile/classLoaderData.hpp
>> ! src/hotspot/share/classfile/classLoaderDataGraph.cpp
>> ! src/hotspot/share/classfile/classLoaderDataGraph.hpp
>> ! src/hotspot/share/classfile/classLoaderExt.cpp
>> ! src/hotspot/share/classfile/classLoaderHierarchyDCmd.cpp
>> ! src/hotspot/share/classfile/classLoaderStats.cpp
>> ! src/hotspot/share/classfile/defaultMethods.cpp
>> ! src/hotspot/share/classfile/javaClasses.hpp
>> ! src/hotspot/share/classfile/klassFactory.cpp
>> ! src/hotspot/share/classfile/klassFactory.hpp
>> ! src/hotspot/share/classfile/moduleEntry.hpp
>> ! src/hotspot/share/classfile/systemDictionary.cpp
>> ! src/hotspot/share/classfile/systemDictionary.hpp
>> ! src/hotspot/share/classfile/systemDictionaryShared.cpp
>> ! src/hotspot/share/include/jvm.h
>> ! src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
>> ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp
>> ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp
>> ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp
>> ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp
>> ! src/hotspot/share/memory/metaspace.cpp
>> ! src/hotspot/share/memory/metaspace.hpp
>> ! src/hotspot/share/memory/metaspace/printCLDMetaspaceInfoClosure.cpp
>> ! src/hotspot/share/memory/metaspace/spaceManager.cpp
>> ! src/hotspot/share/memory/metaspaceShared.cpp
>> ! src/hotspot/share/memory/metaspaceTracer.cpp
>> ! src/hotspot/share/oops/instanceKlass.cpp
>> ! src/hotspot/share/oops/instanceKlass.hpp
>> ! src/hotspot/share/oops/instanceMirrorKlass.inline.hpp
>> ! src/hotspot/share/prims/jvm.cpp
>> ! src/hotspot/share/prims/jvmtiRedefineClasses.cpp
>> ! src/hotspot/share/prims/methodHandles.cpp
>> ! src/hotspot/share/prims/unsafe.cpp
>> ! src/hotspot/share/runtime/reflection.cpp
>> ! src/hotspot/share/runtime/vmStructs.cpp
>> ! src/java.base/share/classes/java/lang/Class.java
>> ! src/java.base/share/classes/java/lang/ClassLoader.java
>> ! src/java.base/share/classes/java/lang/System.java
>> ! src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java
>> ! src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java
>> ! src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
>> ! src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java
>> ! src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java
>> ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java
>> ! src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java
>> ! src/java.base/share/classes/jdk/internal/misc/JavaLangAccess.java
>> ! src/java.base/share/native/libjava/ClassLoader.c
>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java
>> ! test/hotspot/gtest/memory/test_metaspace_allocation.cpp
>> + test/jdk/java/lang/invoke/defineClass/DefineClassTest.java
>> + test/jdk/java/lang/invoke/defineClass/DefineClassWithClassData.java



More information about the valhalla-dev mailing list