290 // or if the remapping has already been done by a prior call.
291 static bool remap_shared_readonly_as_readwrite() NOT_CDS_RETURN_(true);
292 static bool remapped_readwrite() {
293 CDS_ONLY(return _remapped_readwrite);
294 NOT_CDS(return false);
295 }
296
297 static bool try_link_class(InstanceKlass* ik, TRAPS);
298 static void link_and_cleanup_shared_classes(TRAPS);
299
300 #if INCLUDE_CDS
301 static ReservedSpace* reserve_shared_rs(size_t size, size_t alignment,
302 bool large, char* requested_address);
303 static void init_shared_dump_space(DumpRegion* first_space, address first_space_bottom = NULL);
304 static DumpRegion* misc_code_dump_space();
305 static DumpRegion* read_write_dump_space();
306 static DumpRegion* read_only_dump_space();
307 static void pack_dump_space(DumpRegion* current, DumpRegion* next,
308 ReservedSpace* rs);
309
310 static void rewrite_nofast_bytecodes_and_calculate_fingerprints(InstanceKlass* ik);
311 #endif
312
313 // Allocate a block of memory from the "mc", "ro", or "rw" regions.
314 static char* misc_code_space_alloc(size_t num_bytes);
315 static char* read_only_space_alloc(size_t num_bytes);
316
317 template <typename T>
318 static Array<T>* new_ro_array(int length) {
319 #if INCLUDE_CDS
320 size_t byte_size = Array<T>::byte_sizeof(length, sizeof(T));
321 Array<T>* array = (Array<T>*)read_only_space_alloc(byte_size);
322 array->initialize(length);
323 return array;
324 #else
325 return NULL;
326 #endif
327 }
328
329 template <typename T>
330 static size_t ro_array_bytesize(int length) {
|
290 // or if the remapping has already been done by a prior call.
291 static bool remap_shared_readonly_as_readwrite() NOT_CDS_RETURN_(true);
292 static bool remapped_readwrite() {
293 CDS_ONLY(return _remapped_readwrite);
294 NOT_CDS(return false);
295 }
296
297 static bool try_link_class(InstanceKlass* ik, TRAPS);
298 static void link_and_cleanup_shared_classes(TRAPS);
299
300 #if INCLUDE_CDS
301 static ReservedSpace* reserve_shared_rs(size_t size, size_t alignment,
302 bool large, char* requested_address);
303 static void init_shared_dump_space(DumpRegion* first_space, address first_space_bottom = NULL);
304 static DumpRegion* misc_code_dump_space();
305 static DumpRegion* read_write_dump_space();
306 static DumpRegion* read_only_dump_space();
307 static void pack_dump_space(DumpRegion* current, DumpRegion* next,
308 ReservedSpace* rs);
309
310 static void rewrite_nofast_bytecodes_and_calculate_fingerprints(Thread* thread, InstanceKlass* ik);
311 #endif
312
313 // Allocate a block of memory from the "mc", "ro", or "rw" regions.
314 static char* misc_code_space_alloc(size_t num_bytes);
315 static char* read_only_space_alloc(size_t num_bytes);
316
317 template <typename T>
318 static Array<T>* new_ro_array(int length) {
319 #if INCLUDE_CDS
320 size_t byte_size = Array<T>::byte_sizeof(length, sizeof(T));
321 Array<T>* array = (Array<T>*)read_only_space_alloc(byte_size);
322 array->initialize(length);
323 return array;
324 #else
325 return NULL;
326 #endif
327 }
328
329 template <typename T>
330 static size_t ro_array_bytesize(int length) {
|