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

Remi Forax forax at univ-mlv.fr
Tue Oct 23 20:28:21 UTC 2018


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