191 }
192
193 static void assert_mark(bool check);
194
195 // File manipulation.
196 bool initialize() NOT_CDS_RETURN_(false);
197 bool open_for_read();
198 void open_for_write();
199 void write_header();
200 void write_space(int i, Metaspace* space, bool read_only);
201 void write_region(int region, char* base, size_t size,
202 size_t capacity, bool read_only, bool allow_exec);
203 void write_string_regions(GrowableArray<MemRegion> *regions);
204 void write_bytes(const void* buffer, int count);
205 void write_bytes_aligned(const void* buffer, int count);
206 char* map_region(int i);
207 bool map_string_regions();
208 bool verify_string_regions();
209 void fixup_string_regions();
210 void unmap_region(int i);
211 void unmap_string_regions();
212 bool verify_region_checksum(int i);
213 void close();
214 bool is_open() { return _file_open; }
215 ReservedSpace reserve_shared_memory();
216
217 // JVM/TI RedefineClasses() support:
218 // Remap the shared readonly space to shared readwrite, private.
219 bool remap_shared_readonly_as_readwrite();
220
221 // Errors.
222 static void fail_stop(const char *msg, ...) ATTRIBUTE_PRINTF(1, 2);
223 static void fail_continue(const char *msg, ...) ATTRIBUTE_PRINTF(1, 2);
224
225 // Return true if given address is in the mapped shared space.
226 bool is_in_shared_space(const void* p) NOT_CDS_RETURN_(false);
227 void print_shared_spaces() NOT_CDS_RETURN;
228
229 static size_t shared_spaces_size() {
230 return align_size_up(SharedReadOnlySize + SharedReadWriteSize +
231 SharedMiscDataSize + SharedMiscCodeSize,
|
191 }
192
193 static void assert_mark(bool check);
194
195 // File manipulation.
196 bool initialize() NOT_CDS_RETURN_(false);
197 bool open_for_read();
198 void open_for_write();
199 void write_header();
200 void write_space(int i, Metaspace* space, bool read_only);
201 void write_region(int region, char* base, size_t size,
202 size_t capacity, bool read_only, bool allow_exec);
203 void write_string_regions(GrowableArray<MemRegion> *regions);
204 void write_bytes(const void* buffer, int count);
205 void write_bytes_aligned(const void* buffer, int count);
206 char* map_region(int i);
207 bool map_string_regions();
208 bool verify_string_regions();
209 void fixup_string_regions();
210 void unmap_region(int i);
211 void dealloc_string_regions();
212 bool verify_region_checksum(int i);
213 void close();
214 bool is_open() { return _file_open; }
215 ReservedSpace reserve_shared_memory();
216
217 // JVM/TI RedefineClasses() support:
218 // Remap the shared readonly space to shared readwrite, private.
219 bool remap_shared_readonly_as_readwrite();
220
221 // Errors.
222 static void fail_stop(const char *msg, ...) ATTRIBUTE_PRINTF(1, 2);
223 static void fail_continue(const char *msg, ...) ATTRIBUTE_PRINTF(1, 2);
224
225 // Return true if given address is in the mapped shared space.
226 bool is_in_shared_space(const void* p) NOT_CDS_RETURN_(false);
227 void print_shared_spaces() NOT_CDS_RETURN;
228
229 static size_t shared_spaces_size() {
230 return align_size_up(SharedReadOnlySize + SharedReadWriteSize +
231 SharedMiscDataSize + SharedMiscCodeSize,
|