-
Enhancement
-
Resolution: Fixed
-
P4
-
20
-
b27
In anticipation of the following RFEs:
-JDK-8296263: Uniform APIs for using archived heap regions
-JDK-8296344: Remove dependency on G1 for writing the CDS archive heap
We need to clean up the APIs for calculating the addresses of CDS archive heap regions.
The current APIs have confusing names:
address FileMapInfo::start_address_as_decoded_from_archive()
address
start_address_as_decoded_with_current_oop_encoding_mode()
and the implementation is convoluted. See
https://github.com/openjdk/jdk/blob/544e31722528d12fae0eb19271f85886680801a6/src/hotspot/share/cds/filemap.cpp#L2070-L2116
The proposal is to change the above to three APIs with easy-to-understand semantics:
// The actual address of this region during dump time.
address heap_region_dumptime_address(FileMapRegion* r)
// The address where this region can be mapped into the runtime heap without
// patching any of the pointers that are embedded in this region.
address heap_region_requested_address(FileMapRegion* r)
// The address where this shared heap region is actually mapped
// at runtime.
address heap_region_mapped_address(FileMapRegion* r)
The CDSFileMapRegion structure is changed slightly to simplify the implementation of the above 3 functions.
With the above change, FileMapInfo::map_heap_regions_impl() can also be simplified significantly.
-
-
We need to clean up the APIs for calculating the addresses of CDS archive heap regions.
The current APIs have confusing names:
address FileMapInfo::start_address_as_decoded_from_archive()
address
start_address_as_decoded_with_current_oop_encoding_mode()
and the implementation is convoluted. See
https://github.com/openjdk/jdk/blob/544e31722528d12fae0eb19271f85886680801a6/src/hotspot/share/cds/filemap.cpp#L2070-L2116
The proposal is to change the above to three APIs with easy-to-understand semantics:
// The actual address of this region during dump time.
address heap_region_dumptime_address(FileMapRegion* r)
// The address where this region can be mapped into the runtime heap without
// patching any of the pointers that are embedded in this region.
address heap_region_requested_address(FileMapRegion* r)
// The address where this shared heap region is actually mapped
// at runtime.
address heap_region_mapped_address(FileMapRegion* r)
The CDSFileMapRegion structure is changed slightly to simplify the implementation of the above 3 functions.
With the above change, FileMapInfo::map_heap_regions_impl() can also be simplified significantly.
- relates to
-
JDK-8296344 Remove dependency on G1 for writing the CDS archive heap
- Resolved
-
JDK-8296155 Simplify CDS heap region address calculation
- Closed
-
JDK-8296263 Uniform APIs for mapping archived heap regions
- Closed