src/share/vm/memory/metaspaceShared.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/memory/metaspaceShared.cpp
src/share/vm/memory/metaspaceShared.cpp
Print this page
*** 55,64 ****
--- 55,66 ----
bool MetaspaceShared::_link_classes_made_progress;
bool MetaspaceShared::_check_classes_made_progress;
bool MetaspaceShared::_has_error_classes;
bool MetaspaceShared::_archive_loading_failed = false;
+ address MetaspaceShared::_cds_i2i_entry_code_buffers = NULL;
+ size_t MetaspaceShared::_cds_i2i_entry_code_buffers_size = 0;
SharedMiscRegion MetaspaceShared::_mc;
SharedMiscRegion MetaspaceShared::_md;
void SharedMiscRegion::initialize(ReservedSpace rs, size_t committed_byte_size, SharedSpaceType space_type) {
_vs.initialize(rs, committed_byte_size);
*** 125,134 ****
--- 127,151 ----
soc->do_tag(--tag);
soc->do_tag(666);
}
+ address MetaspaceShared::cds_i2i_entry_code_buffers(size_t total_size) {
+ if (DumpSharedSpaces) {
+ if (_cds_i2i_entry_code_buffers == NULL) {
+ _cds_i2i_entry_code_buffers = (address)misc_code_space_alloc(total_size);
+ _cds_i2i_entry_code_buffers_size = total_size;
+ }
+ } else if (UseSharedSpaces) {
+ assert(_cds_i2i_entry_code_buffers != NULL, "must already been initialized");
+ } else {
+ return NULL;
+ }
+
+ assert(_cds_i2i_entry_code_buffers_size == total_size, "must not change");
+ return _cds_i2i_entry_code_buffers;
+ }
// CDS code for dumping shared archive.
// Global object for holding classes that have been loaded. Since this
// is run at a safepoint just before exit, this is the entire set of classes.
*** 671,680 ****
--- 688,699 ----
// Create and write the archive file that maps the shared spaces.
FileMapInfo* mapinfo = new FileMapInfo();
mapinfo->populate_header(MetaspaceShared::max_alignment());
mapinfo->set_misc_data_patching_start((char*)vtbl_list);
+ mapinfo->set_cds_i2i_entry_code_buffers(MetaspaceShared::cds_i2i_entry_code_buffers());
+ mapinfo->set_cds_i2i_entry_code_buffers_size(MetaspaceShared::cds_i2i_entry_code_buffers_size());
for (int pass=1; pass<=2; pass++) {
if (pass == 1) {
// The first pass doesn't actually write the data to disk. All it
// does is to update the fields in the mapinfo->_header.
*** 693,703 ****
SharedMiscDataSize,
false, false);
mapinfo->write_region(MetaspaceShared::mc, _mc_vs.low(),
pointer_delta(mc_top, _mc_vs.low(), sizeof(char)),
SharedMiscCodeSize,
! true, true);
mapinfo->write_string_regions(_string_regions);
}
mapinfo->close();
--- 712,722 ----
SharedMiscDataSize,
false, false);
mapinfo->write_region(MetaspaceShared::mc, _mc_vs.low(),
pointer_delta(mc_top, _mc_vs.low(), sizeof(char)),
SharedMiscCodeSize,
! false, true);
mapinfo->write_string_regions(_string_regions);
}
mapinfo->close();
*** 1045,1054 ****
--- 1064,1075 ----
// Read the miscellaneous data from the shared file, and
// serialize it out to its various destinations.
void MetaspaceShared::initialize_shared_spaces() {
FileMapInfo *mapinfo = FileMapInfo::current_info();
+ _cds_i2i_entry_code_buffers = mapinfo->cds_i2i_entry_code_buffers();
+ _cds_i2i_entry_code_buffers_size = mapinfo->cds_i2i_entry_code_buffers_size();
char* buffer = mapinfo->misc_data_patching_start();
// Skip over (reserve space for) a list of addresses of C++ vtables
// for Klass objects. They get filled in later.
src/share/vm/memory/metaspaceShared.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File