JDK-8230816 : Consolidate classData and dynamic_nest_host into a new ClassLoadInfo data structure
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: repo-valhalla
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2019-09-10
  • Updated: 2019-11-12
  • Resolved: 2019-11-12
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
repo-valhallaFixed
Related Reports
Relates :  
Relates :  
Description
As work to support JDK-8205939: JVM support to replace Unsafe.defineAnonymousClass develops, consider adding a ClassLoadInfo structure to contain relevant information such as classData and dynamic_nest_host.  This allows for future information to be passed via ClassLoadInfo into the various parse streams and ClassFileParser::create_instance_klass without adding more and more function parameters.

Comments
Changeset: 7764761b3a98 Author: hseigel Date: 2019-11-12 20:48 +0000 URL: https://hg.openjdk.java.net/valhalla/valhalla/rev/7764761b3a98 8230816: Consolidate classData and dynamic_nest_host into a new ClassLoadInfo data structure Summary: create ClassInstanceInfo and ClassLoadInfo classes to consolidate parameter types Reviewed-by: lfoltan, mchung ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/classfile/classLoader.cpp ! src/hotspot/share/classfile/classLoaderExt.cpp ! src/hotspot/share/classfile/klassFactory.cpp ! src/hotspot/share/classfile/klassFactory.hpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/jvmtiRedefineClasses.cpp ! src/hotspot/share/prims/unsafe.cpp
12-11-2019

Comments from John on the current nestmates VM change: API cuts to wire through new data named ���dynamic_nest_host���: ClassFileParser::create_instance_klass/fill_instance_klass, KlassFactory::create_from_stream, SystemDictionary::parse_stream/resolve_from_stream. It���s time to make these cuts future-proof, by having all those APIs pass a ClassLoadInfo block whose dynamic_nest_host field defaults to NULL. That way when we have to wire classData (to replace CP patches) we don���t have to change all those API points again. Structured cable vs. many individual wires. This is the way we handled growing complexity of BSM invocation. See JDK-8218994 and the associated changes. I want to do something similar here.
16-09-2019

The flags such as hidden class, weak class, and nestmate should belong to this structure. The info is for a class creation request (`Lookup::defineClass` and `defineHiddenClass`). It seems that `ClassLoadInfo` is more proper than `ClassLoaderInfo` (not a class loader thing).
10-09-2019