JDK-8187119 : Consolidate record_shared_class_loader_type() and record_result()
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 10
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2017-09-01
  • Updated: 2019-05-22
  • Resolved: 2017-11-20
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.
JDK 10
10 b34Fixed
Related Reports
Relates :  
Description
The ClassLoader::record_shared_class_loader_type() and ClassLoaderExt::record_result() record dump time information for archived classes. The code needs to be consolidated and cleaned up.
Comments
The ClassLoader::add_package() call should be separated from ClassLoaderExt::record_result() as it complicates the code in ClassLoaderExt::record_result() unnecessary. ClassLoader::add_package() only needs to be done for system classes loaded by the boot class loader. ClassLoaderExt::record_result() are done for all classes (boot, platform, app, etc) at dump time.
25-10-2017

Currently, ClassLoaderExt::record_result() is done twice for classes loaded by the boot class loader. See following two call stacks. The extra ClassLoaderExt::record_result() should be eliminated. Call stack 1: #0 ClassLoaderExt::record_result (context=0x7ffff7fd6dd0, class_name=0x7ffff7e2e0d0, #1 0x00007ffff5a9c802 in ClassLoaderExt::Context::record_result (this=0x7ffff7fd6dd0, #2 0x00007ffff5a98eff in ClassLoader::record_shared_classpath_index_and_loader (ik=0x8c0000f70, #3 0x00007ffff61358b8 in KlassFactory::create_from_stream (stream=0x7ffff0021010, #4 0x00007ffff5a98892 in ClassLoader::load_class (name=0x7ffff7e2e0d0, search_append_only=false, #5 0x00007ffff650d515 in SystemDictionary::load_instance_class (class_name=0x7ffff7e2e0d0, #6 0x00007ffff650af39 in SystemDictionary::resolve_instance_class_or_null (name=0x7ffff7e2e0d0, class_loader=..., protection_domain=..., __the_thread__=0x7ffff001bf70) Call stack 2: #0 ClassLoaderExt::record_result (context=0x7ffff7fd7190, class_name=0x7ffff7e2e0d0, #1 0x00007ffff5a9c802 in ClassLoaderExt::Context::record_result (this=0x7ffff7fd7190, #2 0x00007ffff5a98918 in ClassLoader::load_class (name=0x7ffff7e2e0d0, search_append_only=false, #3 0x00007ffff650d515 in SystemDictionary::load_instance_class (class_name=0x7ffff7e2e0d0, #4 0x00007ffff650af39 in SystemDictionary::resolve_instance_class_or_null (name=0x7ffff7e2e0d0, #5 0x00007ffff650959b in SystemDictionary::resolve_or_null (class_name=0x7ffff7e2e0d0, #6 0x00007ffff6508ffe in SystemDictionary::resolve_or_fail (class_name=0x7ffff7e2e0d0, #7 0x00007ffff650931a in SystemDictionary::resolve_or_fail (class_name=0x7ffff7e2e0d0,
25-10-2017